From: Zach Reizner <zachr@xxxxxxxxxx> There is no reliable way of detecting actual VRAM size, which is important in the case of cirrus because cursor data is always stored in the last 16K of VRAM. Because qemu effectivaly hardcodes 4MB but reports 32MB, we hardcode 4MB in the cirrus driver to ensure the cursor works properly. initially reviewed at: https://chromium-review.googlesource.com/411344 Signed-off-by: Zach Reizner <zachr@xxxxxxxxxxxx> CC: Stéphane Marchesin <marcheu@xxxxxxxxxxxx> --- drivers/gpu/drm/cirrus/cirrus_main.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/cirrus/cirrus_main.c b/drivers/gpu/drm/cirrus/cirrus_main.c index e7fc95f63dca..c92ccb00db62 100644 --- a/drivers/gpu/drm/cirrus/cirrus_main.c +++ b/drivers/gpu/drm/cirrus/cirrus_main.c @@ -98,7 +98,12 @@ static int cirrus_vram_init(struct cirrus_device *cdev) { /* BAR 0 is VRAM */ cdev->mc.vram_base = pci_resource_start(cdev->dev->pdev, 0); - cdev->mc.vram_size = pci_resource_len(cdev->dev->pdev, 0); + + /* + * While we can use the entire PCI bar for VRAM, qemu always expects to + * find the cursor data at the 4M - 16K point. + */ + cdev->mc.vram_size = 4 * 1024 * 1024; if (!request_mem_region(cdev->mc.vram_base, cdev->mc.vram_size, "cirrusdrmfb_vram")) { -- 2.13.1 _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/dri-devel