Re: linux-next: Tree for May 13 (mm/page_alloc.c, <linux/mm.h>: sizeof(struct page))

From: Matthew Wilcox
Date: Thu May 13 2021 - 17:28:21 EST


On Thu, May 13, 2021 at 10:29:49AM -0700, Randy Dunlap wrote:
> On 5/12/21 10:44 PM, Stephen Rothwell wrote:
> > Hi all,
> >
> > Changes since 20210512:
> >
>
> on x86_64:
>
> In function ‘__mm_zero_struct_page.isra.75’,
> inlined from ‘__init_single_page.isra.76’ at ../mm/page_alloc.c:1494:2:
> ./../include/linux/compiler_types.h:328:38: error: call to ‘__compiletime_assert_162’ declared with attribute error: BUILD_BUG_ON failed: sizeof(struct page) > 80

Hmm.

struct {
long unsigned int _pt_pad_1; /* 8 8 */
pgtable_t pmd_huge_pte; /* 16 8 */
long unsigned int _pt_pad_2; /* 24 8 */
union {
struct mm_struct * pt_mm; /* 32 8 */
atomic_t pt_frag_refcount; /* 32 4 */
}; /* 32 8 */
spinlock_t ptl; /* 40 72 */
}; /* 8 104 */

#if ALLOC_SPLIT_PTLOCKS
spinlock_t *ptl;
#else
spinlock_t ptl;
#endif

something has disabled ALLOC_SPLIT_PTLOCKS when it ought to be enabled.

#if USE_SPLIT_PTE_PTLOCKS
#define ALLOC_SPLIT_PTLOCKS (SPINLOCK_SIZE > BITS_PER_LONG/8)
#else
#define ALLOC_SPLIT_PTLOCKS 0
#endif

Oh. This is Anshuman's fault.

commit 9b8a39056e2472592a5e5897987387f43038b8ba
Author: Anshuman Khandual <anshuman.khandual@xxxxxxx>
Date: Tue May 11 15:06:01 2021 +1000

mm/thp: make ALLOC_SPLIT_PTLOCKS dependent on USE_SPLIT_PTE_PTLOCKS