> On 26 Sep 2023, at 06:33, Leo Yan <[email protected]> wrote: > > During the Linux kernel booting, an error is reported by the Xen > hypervisor: > > (XEN) arch/arm/p2m.c:2202: d0v0: Failing to acquire the MFN 0x1a02dc > > The kernel attempts to use an invalid memory frame number, which can be > converted to: 0x1a02dc << PAGE_SHIFT, resulting in 0x1_a02d_c000. > > The invalid memory frame falls into a reserved memory node, which is > defined in the device tree as below: > > reserved-memory { > #address-cells = <0x02>; > #size-cells = <0x02>; > ranges; > > ... > > ethosn_reserved { > compatible = "shared-dma-pool"; > reg = <0x01 0xa0000000 0x00 0x20000000>; > status = "disabled"; > no-map; > }; > > ... > }; > > Xen excludes all reserved memory regions from the frame management > through the dt_unreserved_regions() function. On the other hand, the > reserved memory nodes are passed to the Linux kernel. However, the Linux > kernel ignores the 'ethosn_reserved' node since its status is > "disabled". This leads to the Linux kernel to allocate pages from the > reserved memory range.
I might be wrong, but reading the specifications seems that “status” is not a property of the child nodes of /reserved-memory, so I’m not sure Xen should do something about it. If it is the case, it’s possible that the device tree is wrong in this case.
