[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH 7/8] vfio/igd: emulate BDSM in mmio bar0 for gen 6-10 devices
From: |
Tomita Moeko |
Subject: |
Re: [PATCH 7/8] vfio/igd: emulate BDSM in mmio bar0 for gen 6-10 devices |
Date: |
Tue, 3 Dec 2024 01:48:59 +0800 |
User-agent: |
Mozilla Thunderbird |
On 12/2/24 17:44, Corvin Köhne wrote:
> 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 <tomitamoeko@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.
Yes, I linked the i915 patch in commit message.
>> 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);
>> }
>
- [PATCH 0/8] vfio/igd: Enable legacy mode on more devices, Tomita Moeko, 2024/12/01
- [PATCH 7/8] vfio/igd: emulate BDSM in mmio bar0 for gen 6-10 devices, Tomita Moeko, 2024/12/01
- [PATCH 8/8] vfio/igd: add x-igd-gms option back to set DSM region size for guest, Tomita Moeko, 2024/12/01
- [PATCH 6/8] vfio/igd: emulate GGC register in mmio bar0, Tomita Moeko, 2024/12/01
- [PATCH 3/8] vfio/igd: remove unsupported device ids, Tomita Moeko, 2024/12/01
- [PATCH 4/8] vfio/igd: align generation with i915 kernel driver, Tomita Moeko, 2024/12/01