On Thu, Jan 18, 2018 at 9:26 AM, Luck, Tony <tony.l...@intel.com> wrote: >> Both are real page. But why do you expect pages to be 64-byte alinged? >> Both are aligned to 64-bit as they suppose to be IIUC. > > On a 64-bit kernel sizeof struct page == 64 (after much work by people to > trim out excess stuff). So I thought we made sure to align the base address > of blocks of "struct page" so that every one neatly fits into one cache line.
The bug happens on 32-bit, and a 'struct page' is not 64-byte aligned there at all. See my other email about the explanation of why "page1 - page2" doesn't work when they aren't mutually aligned to the actual size of the 'struct page'. Linus