On Mon, Apr 03, 2023 at 06:50:11PM +0300, Kirill A. Shutemov wrote: > On Mon, Apr 03, 2023 at 05:39:15PM +0300, Kirill A. Shutemov wrote: > > On Mon, Apr 03, 2023 at 03:39:53PM +0200, Vlastimil Babka wrote: > > > On 3/30/23 13:49, Kirill A. Shutemov wrote: > > > > For testing purposes, it is useful to fake unaccepted memory in the > > > > system. It helps to understand unaccepted memory overhead to the page > > > > allocator. > > > > > > Ack on being useful for testing, but the question is if we want to also > > > merge this patch into mainline as it is? > > > > I don't insist on getting it upstream, but it can be handy to debug > > related bugs in the future. > > > > > > The patch allows to treat memory above the specified physical memory > > > > address as unaccepted. > > > > > > > > The change only fakes unaccepted memory for page allocator. Memblock is > > > > not affected. > > > > > > > > It also assumes that arch-provided accept_memory() on already accepted > > > > memory is a nop. > > > > > > I guess to be in mainline it would have to at least gracefully handle the > > > case of accept_memory actually not being a nop, and running on a system with > > > actual unaccepted memory (probably by ignoring the parameter in such case). > > > Then also the parameter would have to be documented. > > > > As it is written now, accept_memory() is nop on system with real > > unaccepted memory if the memory is already accepted. Arch-specific code > > will check against own records to see if the memory needs accepting. If > > not, just return. > > > > And the option will not interfere with unaccepted memory declared by EFI > > memmap. It can extend it, but that's it. > > > > Looks safe to me. > > > > > Speaking of documented parameters, I found at least two that seem a more > > > generic variant of this (but I didn't look closely if that makes sense): > > > > > > efi_fake_mem= nn[KMG]@ss[KMG]:aa[,nn[KMG]@ss[KMG]:aa,..] [EFI; X86] > > > Add arbitrary attribute to specific memory range by > > > updating original EFI memory map. > > As of now, efi_fake_mem= can adjust attributes of memory. Unaccepted is > type of memory, not an attribute. I guess we can allow it override type > too. But syntax is going to be fun. efi_fake_mem applied too late. Bitmap that represents unaccepted memory for kernel created at kernel decompression stage, but efi_fake_mem= handled in main kernel. I don't think pushing efi_fake_mem to decompressor makes sesne. I would rather drom the feature altogether. -- Kiryl Shutsemau / Kirill A. Shutemov