[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: Problems in PV dom0 on recent x86 hardware
On 12.07.2024 16:00, Andrew Cooper wrote: > On 12/07/2024 2:46 pm, Juergen Gross wrote: >> On 12.07.24 12:35, Jürgen Groß wrote: >>> On 09.07.24 15:08, Jason Andryuk wrote: >>>> After acpixtract & iasl: >>>> >>>> $ grep -ir FEEC * >>>> dsdt.dsl: OperationRegion (ECMM, SystemMemory, 0xFEEC2000, 0x0100) >>>> ssdt16.dsl: OperationRegion (SUSC, SystemMemory, 0xFEEC2100, 0x30) >>>> >>>> >>>> from the DSDT: >>>> Scope (\_SB.PCI0.LPC0.EC0) >>>> { >>>> OperationRegion (ECMM, SystemMemory, 0xFEEC2000, 0x0100) >>>> Field (ECMM, AnyAcc, Lock, Preserve) >>>> { >>>> TWBT, 2048 >>>> } >>>> >>>> Name (BTBF, Buffer (0x0100) >>>> { >>>> 0x00 // . >>>> }) >>>> Method (BTIF, 0, NotSerialized) >>>> { >>>> BTBF = TWBT /* \_SB_.PCI0.LPC0.EC0_.TWBT */ >>>> Return (BTBF) /* \_SB_.PCI0.LPC0.EC0_.BTBF */ >>>> } >>>> } >>>> >>>> From SSDT16: >>>> DefinitionBlock ("", "SSDT", 2, "LENOVO", "UsbCTabl", 0x00000001) >>>> { >>>> External (_SB_.PCI0.LPC0.EC0_, DeviceObj) >>>> >>>> Scope (\_SB) >>>> { >>>> OperationRegion (SUSC, SystemMemory, 0xFEEC2100, 0x30) >>>> Field (SUSC, ByteAcc, Lock, Preserve) >>>> { >>>> >>>> >>>> This embedded controller (?) seems to live at 0xfeec2xxx. >>> >>> What is the takeaway from that? >>> >>> Is this a firmware bug (if yes, pointers to a specification saying that >>> this is an illegal configuration would be nice), or do we need a way to >>> map this page from dom0? >> >> I've found the following in the AMD IOMMU spec [1]: >> >> Received DMA requests without PASID in the 0xFEEx_xxxx address range >> are >> treated as MSI interrupts and are processed using interrupt >> remapping rather >> than address translation. >> >> To me this sounds as if there wouldn't be a major risk letting dom0 map >> physical addresses in this area, as long as "normal" I/Os to this area >> would >> result in DMA requests with a PASID. OTOH I'm not familiar with Xen IOMMU >> handling, so I might be completely wrong. >> >> Another question would be whether a device having resources in this >> area can >> even work through an IOMMU. > > Address spaces are not fully uniform. What 0xFEEx_xxxx means/does > really does differ depending on your point of view. > > The CPU accessing 0xFEEx_xxxx literally does different things than a PCI > device accessing the same range. > > That's why nothing outside of the CPU can get at the LAPIC MMIO > registers. No amount of remapping trickery in the IOMMU pagetables are > going to change this fact. > > > Now - the problem here is that 0xFEEx_xxxx is (for legacy reasons) > "known" to be the LAPIC MMIO, which has a 4k window at the bottom and > everything else in the 2M is reserved. > > And it appears that AMD have started putting other things into that > reserved space, which are only described by AML, and not known to Xen. I wouldn't read it like that. The entire range (1M though, not 2M) is the MSI window for everything non-CPU. They merely emphasize that, imo. > Xen, generally, is very wary of mappings in and around here, because it > does need to prevent even dom0 having access to the interrupt controller > MMIO windows (I'm including IO-APICs too). > > So I expect Xen is saying "that's an interrupt MMIO window, no" without > knowing that there's actually something else in there. (But I am just > guessing.) That's what we do, yes. At some point we did relax that for the IO-APIC ranges (to permit Dom0 r/o access). If all else fails, we may need to do the same for the problems here. Jan
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |