On Sat, Aug 13, 2022 at 09:03:13AM -0700, Andy Lutomirski wrote: > > > On Tue, Aug 9, 2022, at 4:38 AM, Kirill A. Shutemov wrote: > > On Tue, Jul 26, 2022 at 01:17:13PM -0700, Andy Lutomirski wrote: > >> > >> > >> On Tue, Jun 14, 2022, at 5:02 AM, Kirill A. Shutemov wrote: > >> > load_unaligned_zeropad() can lead to unwanted loads across page boundaries. > >> > The unwanted loads are typically harmless. But, they might be made to > >> > totally unrelated or even unmapped memory. load_unaligned_zeropad() > >> > relies on exception fixup (#PF, #GP and now #VE) to recover from these > >> > unwanted loads. > >> > > >> > But, this approach does not work for unaccepted memory. For TDX, a load > >> > from unaccepted memory will not lead to a recoverable exception within > >> > the guest. The guest will exit to the VMM where the only recourse is to > >> > terminate the guest. > >> > >> Why is unaccepted memory marked present in the direct map in the first place? > >> > >> Having kernel code assume that every valid address is followed by > >> several bytes of memory that may be read without side effects other than > >> #PF also seems like a mistake, but I probably won’t win that fight. But > >> sticking guard pages in front of definitely-not-logically present pages > >> seems silly to me. Let’s just not map it. > > > > It would mean no 1G pages in direct mapping for TDX as we accept 2M a > > time. As of now, we don't have a way to recover direct mapping from fragmentation. So once we split 1G to 2M it stays this way. > >> (What if MMIO memory is mapped next to regular memory? Doing random > >> unaligned reads that cross into MMIO seems unwise.) > > > > MMIO is shared, not unaccpted private. We already handle the situation. > > See 1e7769653b06 ("x86/tdx: Handle load_unaligned_zeropad() page-cross to > > a shared page"). > > > > I don’t mean in a confidential guest — I mean generally. This whole > model of “overrun the buffer — no big deal” is just fragile. If you want to remove load_unaligned_zeropad(), I would not object. It can make life easier. I presumed that optimization it brings has measuarable benefit (otherwise, why bother). -- Kiryl Shutsemau / Kirill A. Shutemov