On Mon, 2024-12-02 at 00:09 +0800, Tomita Moeko wrote:
> CAUTION: External Email!!
> A recent commit in i915 driver [1] claims the BDSM register at 0x1080c0
> of mmio bar0 has been there since gen 6. Mirror this register to the 32
> bit BDSM register at 0x5c in pci config space for gen6-10 devices.
> 
> [1]
> https://nospamproxywebp.beckhoff.com/enQsig/link?id=BAgAAAAi96BdMcJV7rkAAABy4L3Y-n1H4M5Erk3toZdMOmhFmc4HUpjw_YG-G4-GcwmVdS8wC_pUyKH6p7x9_O-6Hprvyv9mbbWh_j2w5E6zLArS3crC1154aEYTRFcrIBLPMIoEAv9iTERXE2XB0E260O3pkmmo1UJOMUhb_fI5OUT3-68jnkq4QwTNgbnwmbVRnL2AyAM1pjuZqoqP6GP9y5e6OgocW-BJp0QtHO3eP9NbqTufifAAMfKlU7ekAZLWfPzejtqwaw2
>  
> 
> Signed-off-by: Tomita Moeko <tomitamo...@gmail.com>
> ---
>  hw/vfio/igd.c | 26 ++++++++++++++++++--------
>  1 file changed, 18 insertions(+), 8 deletions(-)
> 
> diff --git a/hw/vfio/igd.c b/hw/vfio/igd.c
> index 07700dce30..3fd822241d 100644
> --- a/hw/vfio/igd.c
> +++ b/hw/vfio/igd.c
> @@ -482,7 +482,8 @@ static const MemoryRegionOps vfio_igd_quirk_mirror_##name 
> = {           \
>  };
>  
>  VFIO_IGD_QUIRK_MIRROR_REG(IGD_GMCH, ggc)
> -VFIO_IGD_QUIRK_MIRROR_REG(IGD_BDSM_GEN11, bdsm)
> +VFIO_IGD_QUIRK_MIRROR_REG(IGD_BDSM, bdsm)
> +VFIO_IGD_QUIRK_MIRROR_REG(IGD_BDSM_GEN11, bdsm64)
>  
>  void vfio_probe_igd_bar0_quirk(VFIOPCIDevice *vdev, int nr)
>  {
> @@ -506,7 +507,7 @@ void vfio_probe_igd_bar0_quirk(VFIOPCIDevice *vdev, int 
> nr)
>       * into MMIO space and read from MMIO space by the Windows driver.
>       */
>      gen = igd_gen(vdev);
> -    if (gen < 11) {
> +    if (gen < 6) {

This also causes the GGC register to be mirrored for gen 6 and later. Is this 
intended? If so, you
should mention it in the commit message as well.

>          return;
>      }
>  
> @@ -520,12 +521,21 @@ void vfio_probe_igd_bar0_quirk(VFIOPCIDevice *vdev, int 
> nr)
>                                          IGD_GGC_MMIO_OFFSET, &quirk->mem[0],
>                                          1);
>  
> -    memory_region_init_io(&quirk->mem[1], OBJECT(vdev),
> -                          &vfio_igd_quirk_mirror_bdsm, vdev,
> -                          "vfio-igd-bdsm-quirk", 8);
> -    memory_region_add_subregion_overlap(vdev->bars[0].region.mem,
> -                                        IGD_BDSM_MMIO_OFFSET, &quirk->mem[1],
> -                                        1);
> +    if (gen < 11) {
> +        memory_region_init_io(&quirk->mem[1], OBJECT(vdev),
> +                              &vfio_igd_quirk_mirror_bdsm, vdev,
> +                              "vfio-igd-bdsm-quirk", 4);
> +        memory_region_add_subregion_overlap(vdev->bars[0].region.mem,
> +                                            IGD_BDSM_MMIO_OFFSET,
> +                                            &quirk->mem[1], 1);
> +    } else {
> +        memory_region_init_io(&quirk->mem[1], OBJECT(vdev),
> +                              &vfio_igd_quirk_mirror_bdsm64, vdev,
> +                              "vfio-igd-bdsm-quirk", 8);
> +        memory_region_add_subregion_overlap(vdev->bars[0].region.mem,
> +                                            IGD_BDSM_MMIO_OFFSET,
> +                                            &quirk->mem[1], 1);
> +    }
>  
>      QLIST_INSERT_HEAD(&vdev->bars[nr].quirks, quirk, next);
>  }

-- 
Kind regards,
Corvin
disable-disclaimer-BADE



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

Reply via email to