On Thu, 2017-01-26 at 13:52 -0800, Andrew Morton wrote: > On Thu, 26 Jan 2017 14:44:15 -0700 Toshi Kani <toshi.kani@xxxxxxx> > wrote: > > > Reading a sysfs memoryN/valid_zones file leads to the following > > oops when the first page of a range is not backed by struct page. > > show_valid_zones() assumes that 'start_pfn' is always valid for > > page_zone(). > > > > BUG: unable to handle kernel paging request at ffffea017a000000 > > IP: show_valid_zones+0x6f/0x160 > > > > Since test_pages_in_a_zone() already checks holes, extend this > > function to return 'valid_start' and 'valid_end' for a given range. > > show_valid_zones() then proceeds with the valid range. > > This doesn't apply to current mainline due to changes in > zone_can_shift(). Please redo and resend. Sorry, I will rebase to the -mm tree and resend the patches. > Please also update the changelog to provide sufficient information > for others to decide which kernel(s) need the fix. In particular: > under what circumstances will it occur? On real machines which real > people own? Yes, this issue happens on real x86 machines with 64GiB or more memory. On such systems, the memory block size is bumped up to 2GiB. [1] Here is an example system. 0x3240000000 is only aligned by 1GiB and its memory block starts from 0x3200000000, which is not backed by struct page. BIOS-e820: [mem 0x0000003240000000-0x000000603fffffff] usable I will add the descriptions to the patch. [1] http://lkml.iu.edu/hypermail/linux/kernel/1411.0/02287.html Thanks, -Toshi ��.n������g����a����&ޖ)���)��h���&������梷�����Ǟ�m������)������^�����������v���O��zf������