From: Juergen Gross > Sent: 18 March 2022 16:56 > > On 18.03.22 16:22, David Laight wrote: > > From: Juergen Gross > >> Sent: 18 March 2022 15:10 > >> > >> The dcdbas driver is used to call SMI handlers for both, dcdbas and > >> dell-smbios-smm. Both drivers allocate a buffer for communicating > >> with the SMI handler. The physical buffer address is then passed to > >> the called SMI handler via %ebx. > >> > >> Unfortunately this doesn't work when running in Xen dom0, as the > >> physical address obtained via virt_to_phys() is only a guest physical > >> address, and not a machine physical address as needed by SMI. > > > > The physical address from virt_to_phy() is always wrong. > > That is the physical address the cpu has for the memory. > > What you want is the address the dma master interface needs to use. > > That can be different for a physical system - no need for virtualisation. > > > > On x86 they do usually match, but anything with a full iommu > > will need completely different addresses. > > Yes, thanks for reminding me of that. > > The SMI handler is running on the cpu, right? So using the DMA > address is wrong in case of an IOMMU. I really need the machine > physical address. That ought to be handled by the 'dev' parameter to dma_alloc_coherent(). David - Registered Address Lakeside, Bramley Road, Mount Farm, Milton Keynes, MK1 1PT, UK Registration No: 1397386 (Wales)