Thread (22 messages) 22 messages, 7 authors, 2021-06-15

Re: Arm64 crash while reading memory sysfs

From: Mike Rapoport <hidden>
Date: 2021-05-26 17:25:24
Also in: linux-mm, lkml

On Wed, May 26, 2021 at 02:04:26PM +0100, Catalin Marinas wrote:
On Wed, May 26, 2021 at 12:09:14PM +0000, Qian Cai (QUIC) wrote:
quoted
[    0.000000] Early memory node ranges
[    0.000000]   node   0: [mem 0x0000000090000000-0x0000000091ffffff]
Maybe de-selecting HOLES_IN_ZONE is not correct for arm64 in all
circumstances. In a configuration with 64K pages, MAX_ORDER is 14,
MAX_ORDER_NR_PAGES is 8192, so a 2^29 address range. However, the above
range starts on 2^28 boundary.

SECTION_SIZE_BITS is 29 in this configuration but the corresponding
mem_map[] in the first half of the first section is probably not marked
as reserved as we'd do for NOMAP.
We do initialize (or at least we should) the first of the first section in
page_alloc::init_unavailable_range() so the range [0x8000000 - 0x9000000]
will have struct pages marked as reserved.

I think it should be fine to de-select HOLES_IN_ZONE as long as MAX_ORDER
chunk does not exceed a section because we do have memory map there in such
case and HOLES_IN_ZONE along with pfn_valid_within() protected against
access to non-existing memory map entries.

We still have an issue with memory map initialization, and probably I've
missed something in decoupling of "do we have memory there" from
pfn_valid().

-- 
Sincerely yours,
Mike.

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help