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

Attachment: signature.asc
Description: This is a digitally signed message part

Reply via email to