On Tue, 2025-04-29 at 00:09 +0800, Tomita Moeko wrote: > CAUTION: External Email!! > ASLS register represents the base address of OpRegion, and it is > programmed with HPA. In IGD passthrough scenario, it needs to be > reprogrammed with GPA by guest firmware. To prevent guest accessing > wrong memory range, ASLS should always be emulated and cleared. > > In GVT-g scenario, emulating ASLS is unnecessary as access is handled > by kvmgt backend [1]. > > [1]: > https://nospamproxywebp.beckhoff.com/enQsig/link?id=BAgAAABJA62ZTEhCO9AAAABrY_qcw0M6GbfmA-k7rdTnC1V9Xvjw6ICEYmTbOt6IWZMsfh2X-PfG-_1bXLcfyp_Hlcdbset-kq2osW-E9lPT94hoZN2NjovxXaqp2dueSyklxM-bP7ox1AHZkQJVv5lgR-iU3PuZeJMms5zmOuYd9fmL0ePbCC-bv9lN8VEaMAQWUFVb0pGt2t9WWfuMxqO6p0pmItn7Qhonu9rHCbBSelFWN9wby1aKHKufBkSBgBiuN2lSz9nZ8WTeKQ8ifh8cfOhPiAsVRWSeVpNeuoyV0 > > > Signed-off-by: Tomita Moeko <tomitamo...@gmail.com> > --- > hw/vfio/igd.c | 14 +++++++++----- > 1 file changed, 9 insertions(+), 5 deletions(-) > > diff --git a/hw/vfio/igd.c b/hw/vfio/igd.c > index cecc3245b7..ae19456457 100644 > --- a/hw/vfio/igd.c > +++ b/hw/vfio/igd.c > @@ -182,10 +182,6 @@ static bool vfio_pci_igd_opregion_init(VFIOPCIDevice > *vdev, > > trace_vfio_pci_igd_opregion_enabled(vdev- > >https://nospamproxywebp.beckhoff.com/enQsig/link?id=BAgAAABJA62ZTEhCO2wAAADrv > lj4V-SebC4SGxyCHAuiWIj2uPV-Sufmo150PAYs9nDhYSQLRd1- > LAyUjMsdhaDDdO6n0SKd9uzKZMhYr5A8uAV__w527iEN3jptdWlJNyitq2eScjUl3HLAVTzheEDnkr > yTDojPqVjnFFk1 ); > > - pci_set_long(vdev->pdev.config + IGD_ASLS, 0); > - pci_set_long(vdev->pdev.wmask + IGD_ASLS, ~0); > - pci_set_long(vdev->emulated_config_bits + IGD_ASLS, ~0); > - > return true; > } > > @@ -583,7 +579,15 @@ static bool vfio_pci_igd_config_quirk(VFIOPCIDevice > *vdev, Error **errp) > if ((vdev->features & VFIO_FEATURE_ENABLE_IGD_LPC) && > !vfio_pci_igd_setup_lpc_bridge(vdev, errp)) { > goto error; > - } > + } > + > + /* > + * ASLS (OpRegion address) is read-only, emulated > + * It contains HPA, guest firmware need to reprogram it with GPA. > + */ > + pci_set_long(vdev->pdev.config + IGD_ASLS, 0); > + pci_set_long(vdev->pdev.wmask + IGD_ASLS, ~0); > + pci_set_long(vdev->emulated_config_bits + IGD_ASLS, ~0); > > /* > * Allow user to override dsm size using x-igd-gms option, in multiples > of
Reviewed-by: Corvin Köhne <c.koe...@beckhoff.com> -- Kind regards, Corvin
signature.asc
Description: This is a digitally signed message part