Received: by 2002:a25:b794:0:0:0:0:0 with SMTP id n20csp2492419ybh; Mon, 5 Aug 2019 01:55:32 -0700 (PDT) X-Google-Smtp-Source: APXvYqyW8oK/SQbjqk3ugIPsdNKL2jD0IVdyXHq3k13lyKsBASRf/zFojGN3VhRIkudYyzJPbtDa X-Received: by 2002:a17:902:a714:: with SMTP id w20mr143749582plq.127.1564995332792; Mon, 05 Aug 2019 01:55:32 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1564995332; cv=none; d=google.com; s=arc-20160816; b=U1BrHSXZzeeqkljQSuEvYU3wqSTuwOO7onfQGSS6SeBQopIMzZ8772ajx1oe1f9HC2 4y4BsMEStL5SnMgStDwp4uMhDoffFAri76ETBv3qoPlHuy9zhvsO5JgLIyUmn/X9IAkv DidK0c/GzSY6iFY3e13wcQKVqHAlaoWUwtkmtSHYU/nsn5nxNqJtvXLcAc4DCO+hIbVR LT6gMOc74JQaNf7Z036A+SQuQL2rDFldaS8I+zMl9q05/IC1Q8Xq6nj+ug4bgKvISwaB 6eTiSDIRlEYUR2rqS2KDCdt3PakvFXAbfowDd/LB2aCLx/R8PhM7RUPI8yHkqVXn4UtJ c9JA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:message-id:date:subject:cc:to:from; bh=O3XEuVkVmwzUEBq1iIutFXnDLjpLiiDpvQ0MuC1vvPI=; b=C6CrJ/TbEmnFNfyEEJGcAqHsc5sx0AlnI6ps5LwzuY1lJV0E+1DLJ4WQEFIDLPicSQ 7ZOh6V91luDZX+KWVCL7UH8mUSJFY6zLXQO8OKqXGdjgT2Cppurb07B8iFiSLYAJgW+j iO7UxhDIlAXJQc/SLE7Zt7ve22u5HbKIljgEFXZ5p8hNH+7EL3MsySwEcTzx53Pemm8V nEmuR8KEclg3pUYHIXyWe4MlI66kuAD7QnmVy8hepgYPhKbNqA9M7gtI9Pj+q/HvU9px 4tyyHWEpNL758OkKGQY9zJM7NwSWiXnRjHhEcL/pr/ecy0KBAHK6EgPhMpTMsLfUrkLH 9Qpw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=redhat.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id w22si43370345pfn.118.2019.08.05.01.55.16; Mon, 05 Aug 2019 01:55:32 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727358AbfHEIyl (ORCPT + 99 others); Mon, 5 Aug 2019 04:54:41 -0400 Received: from mx1.redhat.com ([209.132.183.28]:49472 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726880AbfHEIyl (ORCPT ); Mon, 5 Aug 2019 04:54:41 -0400 Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.phx2.redhat.com [10.5.11.22]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id EABAB30833C1; Mon, 5 Aug 2019 08:54:40 +0000 (UTC) Received: from sirius.home.kraxel.org (ovpn-116-81.ams2.redhat.com [10.36.116.81]) by smtp.corp.redhat.com (Postfix) with ESMTP id 9456A1000321; Mon, 5 Aug 2019 08:54:37 +0000 (UTC) Received: by sirius.home.kraxel.org (Postfix, from userid 1000) id 3B87511AAA; Mon, 5 Aug 2019 10:54:19 +0200 (CEST) From: Gerd Hoffmann To: dri-devel@lists.freedesktop.org Cc: Gerd Hoffmann , Dave Airlie , David Airlie , Daniel Vetter , virtualization@lists.linux-foundation.org (open list:DRM DRIVER FOR QXL VIRTUAL GPU), spice-devel@lists.freedesktop.org (open list:DRM DRIVER FOR QXL VIRTUAL GPU), linux-kernel@vger.kernel.org (open list) Subject: [PATCH] drm/qxl: get vga ioports Date: Mon, 5 Aug 2019 10:53:55 +0200 Message-Id: <20190805085355.12527-1-kraxel@redhat.com> X-Scanned-By: MIMEDefang 2.84 on 10.5.11.22 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.44]); Mon, 05 Aug 2019 08:54:41 +0000 (UTC) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org qxl has two modes: "native" (used by the drm driver) and "vga" (vga compatibility mode, typically used for boot display and firmware framebuffers). Accessing any vga ioport will switch the qxl device into vga mode. The qxl driver never does that, but other drivers accessing vga ports can trigger that too and therefore disturb qxl operation. So aquire the legacy vga ioports from vgaarb to avoid that. Reporducer: Boot kvm guest with both qxl and i915 vgpu, with qxl being first in pci scan order. Signed-off-by: Gerd Hoffmann --- drivers/gpu/drm/qxl/qxl_drv.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/qxl/qxl_drv.c b/drivers/gpu/drm/qxl/qxl_drv.c index b57a37543613..8a2e86adc423 100644 --- a/drivers/gpu/drm/qxl/qxl_drv.c +++ b/drivers/gpu/drm/qxl/qxl_drv.c @@ -87,9 +87,15 @@ qxl_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent) if (ret) goto disable_pci; + ret = vga_get_interruptible(pdev, VGA_RSRC_LEGACY_IO); + if (ret) { + DRM_ERROR("can't get legacy vga ports\n"); + goto put_vga; + } + ret = qxl_device_init(qdev, &qxl_driver, pdev); if (ret) - goto disable_pci; + goto put_vga; ret = qxl_modeset_init(qdev); if (ret) @@ -109,6 +115,8 @@ qxl_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent) qxl_modeset_fini(qdev); unload: qxl_device_fini(qdev); +put_vga: + vga_put(pdev, VGA_RSRC_LEGACY_IO); disable_pci: pci_disable_device(pdev); free_dev: @@ -126,6 +134,7 @@ qxl_pci_remove(struct pci_dev *pdev) qxl_modeset_fini(qdev); qxl_device_fini(qdev); + vga_put(pdev, VGA_RSRC_LEGACY_IO); dev->dev_private = NULL; kfree(qdev); -- 2.18.1