mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-11-01 17:08:10 +00:00
page_pool: use __cacheline_group_{begin, end}_aligned()
Instead of doing __cacheline_group_begin() __aligned(), use the new __cacheline_group_{begin,end}_aligned(), so that it will take care of the group alignment itself. Also replace open-coded `4 * sizeof(long)` in two places with a definition. Signed-off-by: Alexander Lobakin <aleksander.lobakin@intel.com> Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
This commit is contained in:
parent
2cb13dec8c
commit
39daa09d34
2 changed files with 14 additions and 11 deletions
|
@ -129,6 +129,16 @@ struct page_pool_stats {
|
|||
};
|
||||
#endif
|
||||
|
||||
/* The whole frag API block must stay within one cacheline. On 32-bit systems,
|
||||
* sizeof(long) == sizeof(int), so that the block size is ``3 * sizeof(long)``.
|
||||
* On 64-bit systems, the actual size is ``2 * sizeof(long) + sizeof(int)``.
|
||||
* The closest pow-2 to both of them is ``4 * sizeof(long)``, so just use that
|
||||
* one for simplicity.
|
||||
* Having it aligned to a cacheline boundary may be excessive and doesn't bring
|
||||
* any good.
|
||||
*/
|
||||
#define PAGE_POOL_FRAG_GROUP_ALIGN (4 * sizeof(long))
|
||||
|
||||
struct page_pool {
|
||||
struct page_pool_params_fast p;
|
||||
|
||||
|
@ -142,19 +152,11 @@ struct page_pool {
|
|||
bool system:1; /* This is a global percpu pool */
|
||||
#endif
|
||||
|
||||
/* The following block must stay within one cacheline. On 32-bit
|
||||
* systems, sizeof(long) == sizeof(int), so that the block size is
|
||||
* ``3 * sizeof(long)``. On 64-bit systems, the actual size is
|
||||
* ``2 * sizeof(long) + sizeof(int)``. The closest pow-2 to both of
|
||||
* them is ``4 * sizeof(long)``, so just use that one for simplicity.
|
||||
* Having it aligned to a cacheline boundary may be excessive and
|
||||
* doesn't bring any good.
|
||||
*/
|
||||
__cacheline_group_begin(frag) __aligned(4 * sizeof(long));
|
||||
__cacheline_group_begin_aligned(frag, PAGE_POOL_FRAG_GROUP_ALIGN);
|
||||
long frag_users;
|
||||
netmem_ref frag_page;
|
||||
unsigned int frag_offset;
|
||||
__cacheline_group_end(frag);
|
||||
__cacheline_group_end_aligned(frag, PAGE_POOL_FRAG_GROUP_ALIGN);
|
||||
|
||||
struct delayed_work release_dw;
|
||||
void (*disconnect)(void *pool);
|
||||
|
|
|
@ -178,7 +178,8 @@ static void page_pool_struct_check(void)
|
|||
CACHELINE_ASSERT_GROUP_MEMBER(struct page_pool, frag, frag_users);
|
||||
CACHELINE_ASSERT_GROUP_MEMBER(struct page_pool, frag, frag_page);
|
||||
CACHELINE_ASSERT_GROUP_MEMBER(struct page_pool, frag, frag_offset);
|
||||
CACHELINE_ASSERT_GROUP_SIZE(struct page_pool, frag, 4 * sizeof(long));
|
||||
CACHELINE_ASSERT_GROUP_SIZE(struct page_pool, frag,
|
||||
PAGE_POOL_FRAG_GROUP_ALIGN);
|
||||
}
|
||||
|
||||
static int page_pool_init(struct page_pool *pool,
|
||||
|
|
Loading…
Reference in a new issue