From: Corvin Köhne Date: Fri, 8 Nov 2024 12:49:04 +0000 (+0100) Subject: vfio/igd: fix calculation of graphics stolen memory X-Git-Tag: v9.2.0-rc1~9^2~1 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=66650fd0cc67e11f84521a114a7cbc8a8a5033ff;p=thirdparty%2Fqemu.git vfio/igd: fix calculation of graphics stolen memory When copying the calculation of the stolen memory size for Intels integrated graphics device of gen 9 and later from the Linux kernel [1], we missed subtracting 0xf0 from the graphics mode select value for values above 0xf0. This leads to QEMU reporting a very large size of the graphics stolen memory area. That's just a waste of memory. Additionally the guest firmware might be unable to allocate such a large buffer. [1] https://github.com/torvalds/linux/blob/7c626ce4bae1ac14f60076d00eafe71af30450ba/arch/x86/kernel/early-quirks.c#L455-L460 Signed-off-by: Corvin Köhne Reviewed-by: Philippe Mathieu-Daudé Fixes: 871922416683 ("vfio/igd: correctly calculate stolen memory size for gen 9 and later") Reviewed-by: Alex Williamson [ clg: Changed commit subject ] Signed-off-by: Cédric Le Goater --- diff --git a/hw/vfio/igd.c b/hw/vfio/igd.c index c5282827ec9..4047f4f0717 100644 --- a/hw/vfio/igd.c +++ b/hw/vfio/igd.c @@ -501,7 +501,7 @@ static int igd_get_stolen_mb(int gen, uint32_t gmch) if (gms < 0xf0) return gms * 32; else - return gms * 4 + 4; + return (gms - 0xf0) * 4 + 4; } }