>> UEFI Specification version 2.9 introduces the concept of memory >> acceptance: some Virtual Machine platforms, such as Intel TDX or AMD >> SEV-SNP, requiring memory to be accepted before it can be used by the >> guest. Accepting happens via a protocol specific for the Virtual >> Machine platform[1]. >> >> Before unaccepted memory is accepted by guest, any access from guest >> will result in the guest failed, as well as the kexec'ed kernel. So, >> the kexec'ed kernel will skip these pages and fill in zero data for the >> reader of vmcore. >> >> However, it introduces a problem. When exclude a page filled with zero, >> a pd_zero, which sizeof(page_desc_t) is 24 bytes, will be written into >> cd_header and this part is not compressed by design. As the unaccepted >> pages are exported as zero pages, which means ~1/170 of the capacity of >> unaccepted memory will be added into vmcore additionally. In fact, they >> should be considered as free pages and most of the time should be >> excluded. >> >> Unaccepted memory is unusable free memory, so they are not managed by >> buddy, instead, they are added to a new list zone.unaccepted_pages only >> when the order is MAX_PAGE_ORDER each time conventionally. The new >> page type, PGTY_unaccepted can be used to identify whether a page is >> unaccepted[2]. Therefore, add following changes to exclude them like >> free pages: >> >> 1. Add NUMBER(PAGE_UNACCEPTED_MAPCOUNT_VALUE) to identify a page is >> unaccepted, a kernel patch[3] to export the value of page type >> PAGE_UNACCEPTED_MAPCOUNT_VALUE since kernel 6.16. >> >> 2. Add a condition to exclude these unaccepted free pages. >> >> Dumping host kernel will not be impacted by the modification, because it >> cannot enable CONFIG_UNACCEPTED_MEMORY, so the page type >> PAGE_UNACCEPTED_MAPCOUNT_VALUE cannot be found in vmcoreinfo and skip >> the step. >> >> Here is a vmcore size statistic of a freshly booted TD VM with different >> memory sizes: >> >> VM.mem | Before After >> -------+---------------- >> 512G | ~4.9G ~2.0G >> 256G | ~2.0G ~1.1G > Kindly ping.
I apologize for keeping you waiting. This patch look likes right to me, so: Ack. Thanks,Masa