[PATCH makedumpfile] Add confidential VM unaccepted free pages support on Linux 6.16 and later

Zhiquan Li zhiquan1.li at intel.com
Mon Jun 30 08:21:02 PDT 2025



On 2025/6/30 18:15, YAMAZAKI MASAMITSU(山崎 真光) wrote:
>>> 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

No worries, Masa. Thanks for your time to review it.

As a hero feature, TDX introduces ton of concepts, which brings a heavy
burden to the maintainers, but to keep the commit message concisely, I
have to only put the most important key points into it.  And then
clarify the details for any questions.

Fortunately this problem has only been found to impact makedumpfile till
now ;-)

Best Regards,
Zhiquan



More information about the kexec mailing list