Message ID | 20241205105535.30498-4-tomitamoeko@gmail.com (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | vfio/igd: Enable legacy mode on more devices | expand |
On Thu, 5 Dec 2024 18:55:28 +0800 Tomita Moeko <tomitamoeko@gmail.com> wrote: > On gen 8 and later devices, the GTT stolen memory size when GGMS equals > 0 is 0 (no preallocated memory) rather than 1MB [1]. > > [1] 3.1.13, 5th Generation Intel Core Processor Family Datasheet Vol. 2 > https://www.intel.com/content/www/us/en/content-details/330835 > > Reported-By: Alex Williamson <alex.williamson@redhat.com> > Signed-off-by: Tomita Moeko <tomitamoeko@gmail.com> > --- > hw/vfio/igd.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) This should come before the preceding patch in the series so that we're not making a fix dependent on other code churn. This makes it easier to backport to stable branches. Also we should include the tag: Fixes: c4c45e943e51 ("vfio/pci: Intel graphics legacy mode assignment") Otherwise the series looks good now. Thanks, Alex > diff --git a/hw/vfio/igd.c b/hw/vfio/igd.c > index 18d179bc83..09bd4e5383 100644 > --- a/hw/vfio/igd.c > +++ b/hw/vfio/igd.c > @@ -259,7 +259,7 @@ static int vfio_igd_gtt_max(VFIOPCIDevice *vdev) > > gmch = vfio_pci_read_config(&vdev->pdev, IGD_GMCH, sizeof(gmch)); > ggms = (gmch >> (gen < 8 ? 8 : 6)) & 0x3; > - if (gen >= 8) { > + if (gen >= 8 && ggms != 0) { > ggms = 1 << ggms; > } > > @@ -669,7 +669,7 @@ void vfio_probe_igd_bar4_quirk(VFIOPCIDevice *vdev, int nr) > > /* Determine the size of stolen memory needed for GTT */ > ggms_mb = (gmch >> (gen < 8 ? 8 : 6)) & 0x3; > - if (gen >= 8) { > + if (gen >= 8 && ggms_mb != 0) { > ggms_mb = 1 << ggms_mb; > } >
diff --git a/hw/vfio/igd.c b/hw/vfio/igd.c index 18d179bc83..09bd4e5383 100644 --- a/hw/vfio/igd.c +++ b/hw/vfio/igd.c @@ -259,7 +259,7 @@ static int vfio_igd_gtt_max(VFIOPCIDevice *vdev) gmch = vfio_pci_read_config(&vdev->pdev, IGD_GMCH, sizeof(gmch)); ggms = (gmch >> (gen < 8 ? 8 : 6)) & 0x3; - if (gen >= 8) { + if (gen >= 8 && ggms != 0) { ggms = 1 << ggms; } @@ -669,7 +669,7 @@ void vfio_probe_igd_bar4_quirk(VFIOPCIDevice *vdev, int nr) /* Determine the size of stolen memory needed for GTT */ ggms_mb = (gmch >> (gen < 8 ? 8 : 6)) & 0x3; - if (gen >= 8) { + if (gen >= 8 && ggms_mb != 0) { ggms_mb = 1 << ggms_mb; }
On gen 8 and later devices, the GTT stolen memory size when GGMS equals 0 is 0 (no preallocated memory) rather than 1MB [1]. [1] 3.1.13, 5th Generation Intel Core Processor Family Datasheet Vol. 2 https://www.intel.com/content/www/us/en/content-details/330835 Reported-By: Alex Williamson <alex.williamson@redhat.com> Signed-off-by: Tomita Moeko <tomitamoeko@gmail.com> --- hw/vfio/igd.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)