From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D085B157472 for ; Fri, 24 Jan 2025 15:58:43 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=170.10.129.124 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1737734325; cv=none; b=eo+yaIJDfsElA8WJpmCE2c6Qssr/8uBvn8MQKIVWc75j8llwKlHGBX7OpUHc/jM1uEpiz0djRJ6Fwzc8Af8d3opwkDYkSWr+6NeISgJTTIZ23a6iwIM5QY2bRZfH34lNyK7inUm/NzjKyX/ZynafEnrF8DE09F0DowF2TcPvQmE= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1737734325; c=relaxed/simple; bh=faMqG8W7sDvWfdUjhDJE24ZbccPcmL0uqWNgDGDoIsI=; h=Date:From:To:Cc:Subject:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=i6pXn6bSrVJb5RgLZnmuAmDknkv3IDBJlYLD/JbayFjQLBH5TlovxZihSO/1hvsYhS5lMWJ4frTAuEjZcDz/DMBO7b2g3MsAPsYOiTlhAv/DGrqLymNKo9mUp5TILRKBdKUkcdH+IBfnOu7Mdu8/rT9VAsVzQaK+sRbeoxc50rQ= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=redhat.com; spf=pass smtp.mailfrom=redhat.com; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b=ZXwQSLln; arc=none smtp.client-ip=170.10.129.124 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=redhat.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=redhat.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b="ZXwQSLln" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1737734322; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=Q2i4/gk73/TMO7i3h7AhXDPAHWPVRvzPe+eifTfFqaA=; b=ZXwQSLlnxDh3ZJKoLXhXsxdsMceAMNDWw9hWI536d/oekXnLoegeslwMLphIlSArZ+5pAO HIZlPMkXEtgUFNTtvKZVDa/WfJbLdogP10OPZz46ZnI2genX4TyUbrqW22Q8bWM8mUzz6A hvnZ9maPIpuK1rjluhI51xc14W4UCjo= Received: from mail-il1-f199.google.com (mail-il1-f199.google.com [209.85.166.199]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-539-pOidmTnANPmLw-GHDalVZA-1; Fri, 24 Jan 2025 10:58:41 -0500 X-MC-Unique: pOidmTnANPmLw-GHDalVZA-1 X-Mimecast-MFC-AGG-ID: pOidmTnANPmLw-GHDalVZA Received: by mail-il1-f199.google.com with SMTP id e9e14a558f8ab-3ce46f7d554so341155ab.1 for ; Fri, 24 Jan 2025 07:58:40 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1737734300; x=1738339100; h=content-transfer-encoding:mime-version:organization:references :in-reply-to:message-id:subject:cc:to:from:date:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=Q2i4/gk73/TMO7i3h7AhXDPAHWPVRvzPe+eifTfFqaA=; b=uYN404CxRhfZXerpya8ebURZwHSDRDgSRhgg2T0A9LYti7oqg1aMrfg4dDXQ/8klOM 95T45OVZ59sXkCJ5NIoZAizaUQjr5lctvgz96wNTFLkn0FD+XHLiCFj1P6DNg32NqWwe mNemzLydKm7ykTvZHX3+bWbVHe69rUXIQ5uJGkkMaCwmlmcfPE2g9dx6JSgMrRdHWCba pksQDt5kgg53X0gUDkE80Zal+2hzLs1VT26wkrVmYJn2cTFby3FyDnxLtuQH/hpNoQQD t6JdDE0TP/S4OL3K0SdTT7K2t8wK8PQ/9XO5hRf9WD/X91Ewt0qZH9uLuHs3F6mMYOSx ODYQ== X-Forwarded-Encrypted: i=1; AJvYcCXQwtoKdGWTmEx1wnGXgTY3CE2LbTC9DyXC5ytZc1St8BRYmKdsDnnoxKYuPM/jc1W/s3YwZsnfDAj4sro=@vger.kernel.org X-Gm-Message-State: AOJu0Yw24DY2ToISofE3uEC7tzwUeVe3GCBl1TcfLZ3gHGYlPyCYYHFG AAoFmQ80VI/S0Gpp1CDKahkXpDygUAxax9z0QfEw/SonSx0NjphUzTkKuyzkt7IDK51l1U5QzZT N9BCdumE9Cwmz4rKXax/zATZnvRWSK/c1Ms6v8msUSmSSlXD/on4kygi/C5ZgfA== X-Gm-Gg: ASbGncuMbLTZp6v9EbQ7EnDncxYr5ltgxWMnS7M6eO81QWhz1+TArIUXmFBmaZj/vK/ y8BVOB1n3S5nV2exQz7MfqCs6DJ7uGyezKMrj9vIgG8MzSIopnq89vOdV+7+G02Kc5ZmTR9biaI qKRbEPEV2bNgMDZJwe0DXerIxK6C59o5ldxaso4rkz966Gx0VR6G3M4qGKrTrgTQG/Lh3G+wDh8 AbNED6Jj/gGpXNzQ3XyC7NrBEtsmCPZUI1W6XRCorS42oSmYjpULboNNeFaLtd85Yo5afIQNg== X-Received: by 2002:a05:6e02:1a62:b0:3ce:8036:9ccd with SMTP id e9e14a558f8ab-3cf744dbd3emr82582305ab.7.1737734300590; Fri, 24 Jan 2025 07:58:20 -0800 (PST) X-Google-Smtp-Source: AGHT+IHLgyT7swcZSmurx7XeuIxpVgyjL9z7o6UTWRZZr1Mw+SED2N463RL5QyO+/1j9DxcAQ9L5cw== X-Received: by 2002:a05:6e02:1a62:b0:3ce:8036:9ccd with SMTP id e9e14a558f8ab-3cf744dbd3emr82582285ab.7.1737734300253; Fri, 24 Jan 2025 07:58:20 -0800 (PST) Received: from redhat.com ([38.15.36.11]) by smtp.gmail.com with ESMTPSA id e9e14a558f8ab-3cfc740f5dcsm7206405ab.3.2025.01.24.07.58.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 24 Jan 2025 07:58:19 -0800 (PST) Date: Fri, 24 Jan 2025 08:58:18 -0700 From: Alex Williamson To: Tomita Moeko Cc: kvm@vger.kernel.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH v3] vfio/pci: match IGD devices in display controller class Message-ID: <20250124085818.32930104.alex.williamson@redhat.com> In-Reply-To: <20250123163416.7653-1-tomitamoeko@gmail.com> References: <20250123163416.7653-1-tomitamoeko@gmail.com> Organization: Red Hat Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit On Fri, 24 Jan 2025 00:34:15 +0800 Tomita Moeko wrote: > IGD device can either expose as a VGA controller or display controller > depending on whether it is configured as the primary display device in > BIOS. In both cases, the OpRegion may be present. A new helper function > vfio_pci_is_intel_display() is introduced to check if the device might > be an IGD device. > > Signed-off-by: Tomita Moeko > --- > Changelog: > v3: > * Removed BDF condition as Intel discrete GPUs does not have OpRegion > * Added a helper function to match all possible devices with base class > * Renamed from "vfio/pci: update igd matching conditions" > Link: https://lore.kernel.org/lkml/20241230161054.3674-2-tomitamoeko@gmail.com/ > > v2: > Fix misuse of pci_get_domain_bus_and_slot(), now only compares bdf > without touching device reference count. > Link: https://lore.kernel.org/all/20241229155140.7434-1-tomitamoeko@gmail.com/ > > drivers/vfio/pci/vfio_pci.c | 4 +--- > drivers/vfio/pci/vfio_pci_igd.c | 6 ++++++ > drivers/vfio/pci/vfio_pci_priv.h | 6 ++++++ > 3 files changed, 13 insertions(+), 3 deletions(-) > > diff --git a/drivers/vfio/pci/vfio_pci.c b/drivers/vfio/pci/vfio_pci.c > index e727941f589d..5f169496376a 100644 > --- a/drivers/vfio/pci/vfio_pci.c > +++ b/drivers/vfio/pci/vfio_pci.c > @@ -111,9 +111,7 @@ static int vfio_pci_open_device(struct vfio_device *core_vdev) > if (ret) > return ret; > > - if (vfio_pci_is_vga(pdev) && > - pdev->vendor == PCI_VENDOR_ID_INTEL && > - IS_ENABLED(CONFIG_VFIO_PCI_IGD)) { > + if (vfio_pci_is_intel_display(pdev)) { I'd slightly prefer to keep: if (vfio_pci_is_intel_display(pdev) && IS_ENABLED(CONFIG_VFIO_PCI_IGD)) { as otherwise the helper function isn't entirely honest in the implied test. Not a huge deal though, so Reviewed-by: Alex Williamson > ret = vfio_pci_igd_init(vdev); > if (ret && ret != -ENODEV) { > pci_warn(pdev, "Failed to setup Intel IGD regions\n"); > diff --git a/drivers/vfio/pci/vfio_pci_igd.c b/drivers/vfio/pci/vfio_pci_igd.c > index dd70e2431bd7..ef490a4545f4 100644 > --- a/drivers/vfio/pci/vfio_pci_igd.c > +++ b/drivers/vfio/pci/vfio_pci_igd.c > @@ -435,6 +435,12 @@ static int vfio_pci_igd_cfg_init(struct vfio_pci_core_device *vdev) > return 0; > } > > +bool vfio_pci_is_intel_display(struct pci_dev *pdev) > +{ > + return (pdev->vendor == PCI_VENDOR_ID_INTEL) && > + ((pdev->class >> 16) == PCI_BASE_CLASS_DISPLAY); > +} > + > int vfio_pci_igd_init(struct vfio_pci_core_device *vdev) > { > int ret; > diff --git a/drivers/vfio/pci/vfio_pci_priv.h b/drivers/vfio/pci/vfio_pci_priv.h > index 5e4fa69aee16..a9972eacb293 100644 > --- a/drivers/vfio/pci/vfio_pci_priv.h > +++ b/drivers/vfio/pci/vfio_pci_priv.h > @@ -67,8 +67,14 @@ void vfio_pci_memory_unlock_and_restore(struct vfio_pci_core_device *vdev, > u16 cmd); > > #ifdef CONFIG_VFIO_PCI_IGD > +bool vfio_pci_is_intel_display(struct pci_dev *pdev); > int vfio_pci_igd_init(struct vfio_pci_core_device *vdev); > #else > +static inline bool vfio_pci_is_intel_display(struct pci_dev *pdev) > +{ > + return false; > +} > + > static inline int vfio_pci_igd_init(struct vfio_pci_core_device *vdev) > { > return -ENODEV;