On Sun, Jan 21, 2024 at 01:29:20PM +0100, Borislav Petkov wrote: > On Sat, Dec 30, 2023 at 10:19:52AM -0600, Michael Roth wrote: > > + /* Change the page state before accessing it */ > > + if (snp_reclaim_pages(__pa(data), 1, true)) { > > + snp_leak_pages(__pa(data) >> PAGE_SHIFT, 1); > > + return -EFAULT; > > + } > > This looks weird and it doesn't explain why this needs to happen. > SNP_PLATFORM_STATUS text doesn't explain either. > > So, what's up? I've adding some clarifying comment in v2, but the page that firmware writes needs to first be switched to the Firmware-owned state, and after successful completion it will be put in Reclaim state. But it's possible a failure might occur before that transition is made by firmware, maybe the command fails somewhere in the callstack before it even reaches firmware. If that happens the page might still be in firmware-owned state, and need to go through snp_reclaim_pages()/SNP_PAGE_RECLAIM before it can be switched back to Default state. Rather than trying to special-case all these possibilities, it's simpler to just always use snp_reclaim_pages(), which will handle both Reclaim and Firmware-owned pages. However, snp_reclaim_pages() will already leak the page when necessary, so I've dropped that bit. -Mike > > -- > Regards/Gruss, > Boris. > > https://people.kernel.org/tglx/notes-about-netiquette