From nobody Mon Nov 17 22:44:37 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1726569301; cv=none; d=zohomail.com; s=zohoarc; b=lT3W3A7qHf4zW4ZHpug8LWwIl8TfYpzAGX3Kac7YhJtVWlyz+QchhCj7vfVUZlxODliwnRJw3EivecHxwqTFbrtYKrq5A9ul02gxrDB920X3XqBa9oO4y/b7bz7l9QiQsTuJIzunP2KLeiUrmRBmyCt00eFv+ajOjwf+bNHPQGg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1726569301; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=qQu8qIBWS3JOHIdXOfrdNwNd302ozz3pkhQqDhQQF64=; b=KYKarNMH7ZavC56gRfK6NKEHGSl8ju6iTKdX5S47qz+LsP7lLLV9srr+LWBbzuboCaUSTttb7lvNZrDZu+sXaf5wjqUG+SZDu3sa9M2TbzrUUEC8VbQVLHBBBCdwO4hX3+AOSx90tvKrZfQSjmjtq8FkjQULVgrIOaUr8xe8mQY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1726569301193478.48295326746495; Tue, 17 Sep 2024 03:35:01 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1sqVWg-0006cg-1x; Tue, 17 Sep 2024 06:33:43 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1sqVVj-00066q-Uv for qemu-devel@nongnu.org; Tue, 17 Sep 2024 06:32:45 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1sqVVh-0006jx-Gn for qemu-devel@nongnu.org; Tue, 17 Sep 2024 06:32:43 -0400 Received: from mx-prod-mc-03.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-647-LBtArw95N6Ow8yOxN-FOIg-1; Tue, 17 Sep 2024 06:32:37 -0400 Received: from mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.12]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id F13B119560BD; Tue, 17 Sep 2024 10:32:36 +0000 (UTC) Received: from corto.redhat.com (unknown [10.39.193.154]) by mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id DDFE819560AA; Tue, 17 Sep 2024 10:32:34 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1726569159; 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=qQu8qIBWS3JOHIdXOfrdNwNd302ozz3pkhQqDhQQF64=; b=HfUZ43dt1Zd665x0Vu8dS2PvN6KGhn8ycN65vCzTmExBuZHXnxlnMIaBK8nuG8ANuD1LhM tc6tC6+oSVpMYNe8GxtAw8QRHz2imsf9Cq423VIkhNfBQSs0zLoQqzQbFlEnRa2gklNCDU PFQsQ6E4ChcKgxDX68CMauMgg8kyRF0= X-MC-Unique: LBtArw95N6Ow8yOxN-FOIg-1 From: =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= To: qemu-devel@nongnu.org Cc: Alex Williamson , Peter Maydell , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= Subject: [PULL 1/8] hw/vfio/pci.c: Use correct type in trace_vfio_msix_early_setup() Date: Tue, 17 Sep 2024 12:32:22 +0200 Message-ID: <20240917103229.876515-2-clg@redhat.com> In-Reply-To: <20240917103229.876515-1-clg@redhat.com> References: <20240917103229.876515-1-clg@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.0 on 10.30.177.12 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=clg@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1726569302433116600 From: Peter Maydell The tracepoint trace_vfio_msix_early_setup() uses "int" for the type of the table_bar argument, but we use this to print a uint32_t. Coverity warns that this means that we could end up treating it as a negative number. We only use this in printing the value in the tracepoint, so mishandling it as a negative number would be harmless, but it's better to use the right type in the tracepoint. Use uint64_t to match how we print the table_offset in the vfio_msix_relo() tracepoint. Resolves: Coverity CID 1547690 Signed-off-by: Peter Maydell Reviewed-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: C=C3=A9dric Le Goater --- hw/vfio/trace-events | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hw/vfio/trace-events b/hw/vfio/trace-events index 98bd4dcceadc62517a510b81ad4a2a4d8ae61b22..c475c273fd8de156c68bca3f6ea= f804c94276ff6 100644 --- a/hw/vfio/trace-events +++ b/hw/vfio/trace-events @@ -27,7 +27,7 @@ vfio_vga_read(uint64_t addr, int size, uint64_t data) " (= 0x%"PRIx64", %d) =3D 0x%" vfio_pci_read_config(const char *name, int addr, int len, int val) " (%s, = @0x%x, len=3D0x%x) 0x%x" vfio_pci_write_config(const char *name, int addr, int val, int len) " (%s,= @0x%x, 0x%x, len=3D0x%x)" vfio_msi_setup(const char *name, int pos) "%s PCI MSI CAP @0x%x" -vfio_msix_early_setup(const char *name, int pos, int table_bar, int offset= , int entries, bool noresize) "%s PCI MSI-X CAP @0x%x, BAR %d, offset 0x%x,= entries %d, noresize %d" +vfio_msix_early_setup(const char *name, int pos, int table_bar, uint64_t o= ffset, int entries, bool noresize) "%s PCI MSI-X CAP @0x%x, BAR %d, offset = 0x%"PRIx64", entries %d, noresize %d" vfio_check_pcie_flr(const char *name) "%s Supports FLR via PCIe cap" vfio_check_pm_reset(const char *name) "%s Supports PM reset" vfio_check_af_flr(const char *name) "%s Supports FLR via AF cap" --=20 2.46.0 From nobody Mon Nov 17 22:44:37 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1726569266; cv=none; d=zohomail.com; s=zohoarc; b=Tz3uW0PkYF5oYuETK4SszamD4NQCrkKCjfmZSaiFJtUMoHp8h5PsKbafLH3h7pWM2Qh57pwPQTaaa7RGQFdzh63mCCm2BFd1UpvyZrWenrJKZ6pf2OuKI5i/FbWSUKyVSVtMMjTOFQleFJ35Jl1w79+B41jV/D6YkThCD0wHGGE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1726569266; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=YxJmrVQlvQu9QUMfYcSyI+hnNGbhivvfaSAO8ZA+A3c=; b=jA9uIhEUcY0es6EGBSgnkgCeBbp1Tj3oVJ5X5KoFNiAWiJJsNqvBCzBl5AW6PSX8S3KeKRMHJxRKm5543k2oJlw5gVLoDWSLzRv9KGsN2WURZUmk3VHkmf3XBvGcuXZ/lw1P4ETlUAda+UO5MbfDxlE2PKh75b6NINv4cZF549s= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1726569266859684.6722385111672; Tue, 17 Sep 2024 03:34:26 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1sqVWo-0006rS-3l; Tue, 17 Sep 2024 06:33:50 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1sqVVl-000670-UE for qemu-devel@nongnu.org; Tue, 17 Sep 2024 06:32:47 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1sqVVi-0006kB-B1 for qemu-devel@nongnu.org; Tue, 17 Sep 2024 06:32:45 -0400 Received: from mx-prod-mc-01.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-645-z0Db3RvoM5GS81srm1lCQQ-1; Tue, 17 Sep 2024 06:32:39 -0400 Received: from mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.12]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id A117C1955D47; Tue, 17 Sep 2024 10:32:38 +0000 (UTC) Received: from corto.redhat.com (unknown [10.39.193.154]) by mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 2BD3219560B0; Tue, 17 Sep 2024 10:32:36 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1726569161; 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=YxJmrVQlvQu9QUMfYcSyI+hnNGbhivvfaSAO8ZA+A3c=; b=bbc1kX8b/964b/SKz6OlxVAbAEgs1T/uDmbTPUE2Tvbbm4OpMQchahH63iz8UUmfj9yg/Q RqGclBoNHDhmIwTA2jluZvbPt5oJFkZO167ycgxysPAIylCfnzEb9ADQg7KiOg3nNuRmb3 8oYMFNMKK0fs5tzVAnrecVtQzxsATpk= X-MC-Unique: z0Db3RvoM5GS81srm1lCQQ-1 From: =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= To: qemu-devel@nongnu.org Cc: Alex Williamson , =?UTF-8?q?Corvin=20K=C3=B6hne?= , =?UTF-8?q?Corvin=20K=C3=B6hne?= Subject: [PULL 2/8] vfio/igd: return an invalid generation for unknown devices Date: Tue, 17 Sep 2024 12:32:23 +0200 Message-ID: <20240917103229.876515-3-clg@redhat.com> In-Reply-To: <20240917103229.876515-1-clg@redhat.com> References: <20240917103229.876515-1-clg@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.0 on 10.30.177.12 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=clg@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1726569268422116600 From: Corvin K=C3=B6hne Intel changes it's specification quite often e.g. the location and size of the BDSM register has change for gen 11 devices and later. This causes our emulation to fail on those devices. So, it's impossible for us to use a suitable default value for unknown devices. Instead of returning a random generation value and hoping that everthing works fine, we should verify that different devices are working and add them to our list of known devices. Signed-off-by: Corvin K=C3=B6hne Reviewed-by: Alex Williamson --- hw/vfio/igd.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/hw/vfio/igd.c b/hw/vfio/igd.c index d320d032a7f3b19df0d055178f6fefe4bdfd8668..650a323ddaac746de780103ca85= 7256709c0e0aa 100644 --- a/hw/vfio/igd.c +++ b/hw/vfio/igd.c @@ -90,7 +90,11 @@ static int igd_gen(VFIOPCIDevice *vdev) return 8; } =20 - return 8; /* Assume newer is compatible */ + /* + * Unfortunately, Intel changes it's specification quite often. This m= akes + * it impossible to use a suitable default value for unknown devices. + */ + return -1; } =20 typedef struct VFIOIGDQuirk { --=20 2.46.0 From nobody Mon Nov 17 22:44:37 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1726569226; cv=none; d=zohomail.com; s=zohoarc; b=ANTQXLieuyVfd72wj7WJ3b2ev1yIp/NcJLiVs1C5SEI9uLSlFSpr01HIMd/bxWsab1/z0pJp7I7KNRqxrLd6Yn7cZ3E0w1wjiZjUBzUi6YNAGXR8nN5NmrJPXdt20nB0GqWl0gJ50i4XoyQGvPnWzgY/n2BZc29oaLiIOBtCRdI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1726569226; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=T3S03emqiACR4UcCYsadHUuF/xYoupzmjS6f8Wz8fGI=; b=mKOHvRfN5Yd8SkCFWO+2+Az0TCarGEcBOU6/W07LuLpklxnmIBsqcqVr25U0/FwX6uR9vszmCnN/hD0VGBwi/0P9EU88zJizLSeYe9tuWvasIJpspN0falJkR1QqqjtQxB1chWVwm+4oB+AdBHXnB/kNrJ51MPjxRl5WGfNugJg= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1726569226853763.3245654998215; Tue, 17 Sep 2024 03:33:46 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1sqVWK-0006Ef-Vv; Tue, 17 Sep 2024 06:33:22 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1sqVVl-000673-V1 for qemu-devel@nongnu.org; Tue, 17 Sep 2024 06:32:47 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1sqVVj-0006kU-Ns for qemu-devel@nongnu.org; Tue, 17 Sep 2024 06:32:45 -0400 Received: from mx-prod-mc-04.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-633-xKVJ5f8ENia4xZ-MZNMlvg-1; Tue, 17 Sep 2024 06:32:41 -0400 Received: from mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.12]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-04.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id A771A1955D59; Tue, 17 Sep 2024 10:32:40 +0000 (UTC) Received: from corto.redhat.com (unknown [10.39.193.154]) by mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 195CF19560B0; Tue, 17 Sep 2024 10:32:38 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1726569163; 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=T3S03emqiACR4UcCYsadHUuF/xYoupzmjS6f8Wz8fGI=; b=f3J109aLbxZqSTgxxtlYANm09wKIQoQE6ZNccJ6JX19R4tRzuEPkBgWwX39ZpDW3w8HhhV Nz9rqS2PO7h7MX/zbDIk1IvMKSROShSdKGVaCCRndqL2Ax5zlLgx/gHcgnu5dZp/oSFM1P N4R0WLCpQZZMIy1j8WOLiW0zeKhjxn8= X-MC-Unique: xKVJ5f8ENia4xZ-MZNMlvg-1 From: =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= To: qemu-devel@nongnu.org Cc: Alex Williamson , =?UTF-8?q?Corvin=20K=C3=B6hne?= , =?UTF-8?q?Corvin=20K=C3=B6hne?= Subject: [PULL 3/8] vfio/igd: support legacy mode for all known generations Date: Tue, 17 Sep 2024 12:32:24 +0200 Message-ID: <20240917103229.876515-4-clg@redhat.com> In-Reply-To: <20240917103229.876515-1-clg@redhat.com> References: <20240917103229.876515-1-clg@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.0 on 10.30.177.12 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=clg@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1726569228637116600 From: Corvin K=C3=B6hne We're soon going to add support for legacy mode to ElkhartLake and TigerLake devices. Those are gen 11 and 12 devices. At the moment, all devices identified by our igd_gen function do support legacy mode. This won't change when adding our new devices of gen 11 and 12. Therefore, it makes more sense to accept legacy mode for all known devices instead of maintaining a long list of known good generations. If we add a new generation to igd_gen which doesn't support legacy mode for some reason, it'll be easy to advance the check to reject legacy mode for this specific generation. Signed-off-by: Corvin K=C3=B6hne Reviewed-by: Alex Williamson --- hw/vfio/igd.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hw/vfio/igd.c b/hw/vfio/igd.c index 650a323ddaac746de780103ca857256709c0e0aa..d5e57656a8b7bb207b421977f9a= 2c76943d4a899 100644 --- a/hw/vfio/igd.c +++ b/hw/vfio/igd.c @@ -416,7 +416,7 @@ void vfio_probe_igd_bar4_quirk(VFIOPCIDevice *vdev, int= nr) * devices maintain compatibility with generation 8. */ gen =3D igd_gen(vdev); - if (gen !=3D 6 && gen !=3D 8) { + if (gen =3D=3D -1) { error_report("IGD device %s is unsupported in legacy mode, " "try SandyBridge or newer", vdev->vbasedev.name); return; --=20 2.46.0 From nobody Mon Nov 17 22:44:37 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1726569333; cv=none; d=zohomail.com; s=zohoarc; b=aFwSGsiF8k+BexP+4icn/b3VPY8uJOghgu3fNnpPu7n4rCrVc14TPxGSh0G6Is1wiLj/y30PXP3z6EFAgAAqysYfGpaY1PW1JPlmsa2SxTv8H8XL7xH0sc3NU99m/6Kl6GR8SgQGrG5VDy5rIlkhcQZ4/Zn3rxbaRixq+WiI67g= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1726569333; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=h1I319d7l3peW813h/MQKdOblm5RNBXb6q0NhABxO9g=; b=B80tLpkfkRARARfJ/vMgyNC9OUDL+udKHkkPe/NBFh3ISKfyMRfci9ZChpCEfYWDpq3aY1VUg5YfQrZpwCVCASr/DMtw0wPccB9WOz9SRzjNailjsKyzVzQRM2tgPkUyWQ+ruoj3TpdqO8iz9Fzsr3GoO2x+SvlTqo4WdQtkc6M= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 172656933387671.21733832118616; Tue, 17 Sep 2024 03:35:33 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1sqVWp-0006yX-7K; Tue, 17 Sep 2024 06:33:51 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1sqVVp-00069F-IB for qemu-devel@nongnu.org; Tue, 17 Sep 2024 06:32:51 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1sqVVn-0006lc-Ol for qemu-devel@nongnu.org; Tue, 17 Sep 2024 06:32:49 -0400 Received: from mx-prod-mc-04.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-605-QXtJmuonNFWRewJ6ikWFXg-1; Tue, 17 Sep 2024 06:32:43 -0400 Received: from mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.12]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-04.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id C5ABD1955D4A; Tue, 17 Sep 2024 10:32:42 +0000 (UTC) Received: from corto.redhat.com (unknown [10.39.193.154]) by mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 1D76D19560AA; Tue, 17 Sep 2024 10:32:40 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1726569167; 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=h1I319d7l3peW813h/MQKdOblm5RNBXb6q0NhABxO9g=; b=ZN0gy4Hjc303TQ0JL8c1nmzyaskKtDtWocJIs5nobPmcIS14GC5YXSOQZPfyMRntKt8rCF 0nim6dE3N48TW5K9Al17Owo4K1SHjWsOSCpdVidBML5J53FaeBxlPNRQgvaGOliXIl/57V 9LTdqzfmzvJ9oc5WxfpjBIXM9IykhBQ= X-MC-Unique: QXtJmuonNFWRewJ6ikWFXg-1 From: =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= To: qemu-devel@nongnu.org Cc: Alex Williamson , =?UTF-8?q?Corvin=20K=C3=B6hne?= , =?UTF-8?q?Corvin=20K=C3=B6hne?= Subject: [PULL 4/8] vfio/igd: use new BDSM register location and size for gen 11 and later Date: Tue, 17 Sep 2024 12:32:25 +0200 Message-ID: <20240917103229.876515-5-clg@redhat.com> In-Reply-To: <20240917103229.876515-1-clg@redhat.com> References: <20240917103229.876515-1-clg@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.0 on 10.30.177.12 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=clg@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1726569334525116600 From: Corvin K=C3=B6hne Intel changed the location and size of the BDSM register for gen 11 devices and later. We have to adjust our emulation for these devices to properly support them. Signed-off-by: Corvin K=C3=B6hne Reviewed-by: Alex Williamson --- hw/vfio/igd.c | 31 ++++++++++++++++++++++++------- 1 file changed, 24 insertions(+), 7 deletions(-) diff --git a/hw/vfio/igd.c b/hw/vfio/igd.c index d5e57656a8b7bb207b421977f9a2c76943d4a899..0b6533bbf7cc37c570f332636a2= 92c26326cd870 100644 --- a/hw/vfio/igd.c +++ b/hw/vfio/igd.c @@ -100,11 +100,12 @@ static int igd_gen(VFIOPCIDevice *vdev) typedef struct VFIOIGDQuirk { struct VFIOPCIDevice *vdev; uint32_t index; - uint32_t bdsm; + uint64_t bdsm; } VFIOIGDQuirk; =20 #define IGD_GMCH 0x50 /* Graphics Control Register */ #define IGD_BDSM 0x5c /* Base Data of Stolen Memory */ +#define IGD_BDSM_GEN11 0xc0 /* Base Data of Stolen Memory of gen 11 and la= ter */ =20 =20 /* @@ -313,9 +314,13 @@ static void vfio_igd_quirk_data_write(void *opaque, hw= addr addr, */ if ((igd->index % 4 =3D=3D 1) && igd->index < vfio_igd_gtt_max(vdev)) { if (gen < 8 || (igd->index % 8 =3D=3D 1)) { - uint32_t base; + uint64_t base; =20 - base =3D pci_get_long(vdev->pdev.config + IGD_BDSM); + if (gen < 11) { + base =3D pci_get_long(vdev->pdev.config + IGD_BDSM); + } else { + base =3D pci_get_quad(vdev->pdev.config + IGD_BDSM_GEN11); + } if (!base) { hw_error("vfio-igd: Guest attempted to program IGD GTT bef= ore " "BIOS reserved stolen memory. Unsupported BIOS?"= ); @@ -519,7 +524,13 @@ void vfio_probe_igd_bar4_quirk(VFIOPCIDevice *vdev, in= t nr) igd =3D quirk->data =3D g_malloc0(sizeof(*igd)); igd->vdev =3D vdev; igd->index =3D ~0; - igd->bdsm =3D vfio_pci_read_config(&vdev->pdev, IGD_BDSM, 4); + if (gen < 11) { + igd->bdsm =3D vfio_pci_read_config(&vdev->pdev, IGD_BDSM, 4); + } else { + igd->bdsm =3D vfio_pci_read_config(&vdev->pdev, IGD_BDSM_GEN11, 4); + igd->bdsm |=3D + (uint64_t)vfio_pci_read_config(&vdev->pdev, IGD_BDSM_GEN11 + 4= , 4) << 32; + } igd->bdsm &=3D ~((1 * MiB) - 1); /* 1MB aligned */ =20 memory_region_init_io(&quirk->mem[0], OBJECT(vdev), &vfio_igd_index_qu= irk, @@ -577,9 +588,15 @@ void vfio_probe_igd_bar4_quirk(VFIOPCIDevice *vdev, in= t nr) pci_set_long(vdev->emulated_config_bits + IGD_GMCH, ~0); =20 /* BDSM is read-write, emulated. The BIOS needs to be able to write i= t */ - pci_set_long(vdev->pdev.config + IGD_BDSM, 0); - pci_set_long(vdev->pdev.wmask + IGD_BDSM, ~0); - pci_set_long(vdev->emulated_config_bits + IGD_BDSM, ~0); + if (gen < 11) { + pci_set_long(vdev->pdev.config + IGD_BDSM, 0); + pci_set_long(vdev->pdev.wmask + IGD_BDSM, ~0); + pci_set_long(vdev->emulated_config_bits + IGD_BDSM, ~0); + } else { + pci_set_quad(vdev->pdev.config + IGD_BDSM_GEN11, 0); + pci_set_quad(vdev->pdev.wmask + IGD_BDSM_GEN11, ~0); + pci_set_quad(vdev->emulated_config_bits + IGD_BDSM_GEN11, ~0); + } =20 /* * This IOBAR gives us access to GTTADR, which allows us to write to --=20 2.46.0 From nobody Mon Nov 17 22:44:37 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1726569246; cv=none; d=zohomail.com; s=zohoarc; b=Ic9gT9HHV5IazEsZBSpwVw6KC9yJud0Dnvi0oM9/AQbat6jwZu2HRd+XpgsFsr7qqzTZWRUv4wiKgp3UYZsrmO9f/jQ+cO4OHmqlp5q1PeMZVGVPCCq3s5R2MTh7fJF6dee6zgE/WBAylDrkMhF0UYal31gA8WSeOgp+F9wiRIM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1726569246; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=cr/KNX13Ma/cPvi3HN0YGKqnJcU5fnq6s329bntpUAs=; b=fys6Z5NGQaE8vkPxD4XzqHmaOO5gmzac8tXZxyHOi1ci+3i8R+wkcfw39uTULwYTKJTybBSjP4yX4lucS2++qlbjRdrXgq46BxfUMrGCWjlgf+wxu7kabDXriNFEl39Yxv1Nzktg+0P1tYDOq+dqphMKswcnxOGZK+HZ7M6MyOo= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1726569246501509.7185271662538; Tue, 17 Sep 2024 03:34:06 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1sqVWo-0006u3-RN; Tue, 17 Sep 2024 06:33:51 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1sqVVp-00069E-9v for qemu-devel@nongnu.org; Tue, 17 Sep 2024 06:32:51 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1sqVVn-0006lZ-Gj for qemu-devel@nongnu.org; Tue, 17 Sep 2024 06:32:49 -0400 Received: from mx-prod-mc-04.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-192-14_JnZ7HOUmu9ol1eOcG_Q-1; Tue, 17 Sep 2024 06:32:45 -0400 Received: from mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.12]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-04.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 8D7351955D4A; Tue, 17 Sep 2024 10:32:44 +0000 (UTC) Received: from corto.redhat.com (unknown [10.39.193.154]) by mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 00F9B19560AA; Tue, 17 Sep 2024 10:32:42 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1726569166; 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=cr/KNX13Ma/cPvi3HN0YGKqnJcU5fnq6s329bntpUAs=; b=gUUm7H9hivYUuMNgtmLzp5AvgQr9VqFW+JkLIF1D2JyIQvd9X3PXp3SKrold8DjhGPspIq aE8vkpbi+CoqiXzO9/p0cf0GYWy+vOjX+OQGYqGuaZrFZORLwk97E8d2EzL3w486CvAXZ6 WbSWMbgDQUqHbJfEJhgZLxJxyitESwE= X-MC-Unique: 14_JnZ7HOUmu9ol1eOcG_Q-1 From: =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= To: qemu-devel@nongnu.org Cc: Alex Williamson , =?UTF-8?q?Corvin=20K=C3=B6hne?= , =?UTF-8?q?Corvin=20K=C3=B6hne?= Subject: [PULL 5/8] vfio/igd: add new bar0 quirk to emulate BDSM mirror Date: Tue, 17 Sep 2024 12:32:26 +0200 Message-ID: <20240917103229.876515-6-clg@redhat.com> In-Reply-To: <20240917103229.876515-1-clg@redhat.com> References: <20240917103229.876515-1-clg@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.0 on 10.30.177.12 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=clg@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1726569248391116600 From: Corvin K=C3=B6hne The BDSM register is mirrored into MMIO space at least for gen 11 and later devices. Unfortunately, the Windows driver reads the register value from MMIO space instead of PCI config space for those devices [1]. Therefore, we either have to keep a 1:1 mapping for the host and guest address or we have to emulate the MMIO register too. Using the igd in legacy mode is already hard due to it's many constraints. Keeping a 1:1 mapping may not work in all cases and makes it even harder to use. An MMIO emulation has to trap the whole MMIO page. This makes accesses to this page slower compared to using second level address translation. Nevertheless, it doesn't have any constraints and I haven't noticed any performance degradation yet making it a better solution. [1] https://github.com/projectacrn/acrn-hypervisor/blob/5c351bee0f6ae46250e= efc07f44b4a31e770f3cf/devicemodel/hw/pci/passthrough.c#L650-L653 Signed-off-by: Corvin K=C3=B6hne Reviewed-by: Alex Williamson --- hw/vfio/pci.h | 1 + hw/vfio/igd.c | 98 ++++++++++++++++++++++++++++++++++++++++++++ hw/vfio/pci-quirks.c | 1 + 3 files changed, 100 insertions(+) diff --git a/hw/vfio/pci.h b/hw/vfio/pci.h index bf67df2fbc09b3d0fd97d25dfaa5290ab33b03ea..5ad090a22976e9493c726cbb2b1= b9911abfbd8c4 100644 --- a/hw/vfio/pci.h +++ b/hw/vfio/pci.h @@ -215,6 +215,7 @@ void vfio_setup_resetfn_quirk(VFIOPCIDevice *vdev); bool vfio_add_virt_caps(VFIOPCIDevice *vdev, Error **errp); void vfio_quirk_reset(VFIOPCIDevice *vdev); VFIOQuirk *vfio_quirk_alloc(int nr_mem); +void vfio_probe_igd_bar0_quirk(VFIOPCIDevice *vdev, int nr); void vfio_probe_igd_bar4_quirk(VFIOPCIDevice *vdev, int nr); =20 extern const PropertyInfo qdev_prop_nv_gpudirect_clique; diff --git a/hw/vfio/igd.c b/hw/vfio/igd.c index 0b6533bbf7cc37c570f332636a292c26326cd870..0d68c6a45169238b274706d29d9= be11455c37f76 100644 --- a/hw/vfio/igd.c +++ b/hw/vfio/igd.c @@ -374,6 +374,104 @@ static const MemoryRegionOps vfio_igd_index_quirk =3D= { .endianness =3D DEVICE_LITTLE_ENDIAN, }; =20 +#define IGD_BDSM_MMIO_OFFSET 0x1080C0 + +static uint64_t vfio_igd_quirk_bdsm_read(void *opaque, + hwaddr addr, unsigned size) +{ + VFIOPCIDevice *vdev =3D opaque; + uint64_t offset; + + offset =3D IGD_BDSM_GEN11 + addr; + + switch (size) { + case 1: + return pci_get_byte(vdev->pdev.config + offset); + case 2: + return pci_get_word(vdev->pdev.config + offset); + case 4: + return pci_get_long(vdev->pdev.config + offset); + case 8: + return pci_get_quad(vdev->pdev.config + offset); + default: + hw_error("igd: unsupported read size, %u bytes", size); + break; + } + + return 0; +} + +static void vfio_igd_quirk_bdsm_write(void *opaque, hwaddr addr, + uint64_t data, unsigned size) +{ + VFIOPCIDevice *vdev =3D opaque; + uint64_t offset; + + offset =3D IGD_BDSM_GEN11 + addr; + + switch (size) { + case 1: + pci_set_byte(vdev->pdev.config + offset, data); + break; + case 2: + pci_set_word(vdev->pdev.config + offset, data); + break; + case 4: + pci_set_long(vdev->pdev.config + offset, data); + break; + case 8: + pci_set_quad(vdev->pdev.config + offset, data); + break; + default: + hw_error("igd: unsupported read size, %u bytes", size); + break; + } +} + +static const MemoryRegionOps vfio_igd_bdsm_quirk =3D { + .read =3D vfio_igd_quirk_bdsm_read, + .write =3D vfio_igd_quirk_bdsm_write, + .endianness =3D DEVICE_LITTLE_ENDIAN, +}; + +void vfio_probe_igd_bar0_quirk(VFIOPCIDevice *vdev, int nr) +{ + VFIOQuirk *quirk; + int gen; + + /* + * This must be an Intel VGA device at address 00:02.0 for us to even + * consider enabling legacy mode. Some driver have dependencies on the= PCI + * bus address. + */ + if (!vfio_pci_is(vdev, PCI_VENDOR_ID_INTEL, PCI_ANY_ID) || + !vfio_is_vga(vdev) || nr !=3D 0 || + &vdev->pdev !=3D pci_find_device(pci_device_root_bus(&vdev->pdev), + 0, PCI_DEVFN(0x2, 0))) { + return; + } + + /* + * Only on IGD devices of gen 11 and above, the BDSM register is mirro= red + * into MMIO space and read from MMIO space by the Windows driver. + */ + gen =3D igd_gen(vdev); + if (gen < 11) { + return; + } + + quirk =3D vfio_quirk_alloc(1); + quirk->data =3D vdev; + + memory_region_init_io(&quirk->mem[0], OBJECT(vdev), &vfio_igd_bdsm_qui= rk, + vdev, "vfio-igd-bdsm-quirk", 8); + memory_region_add_subregion_overlap(vdev->bars[0].region.mem, + IGD_BDSM_MMIO_OFFSET, &quirk->mem[= 0], + 1); + + QLIST_INSERT_HEAD(&vdev->bars[nr].quirks, quirk, next); +} + void vfio_probe_igd_bar4_quirk(VFIOPCIDevice *vdev, int nr) { g_autofree struct vfio_region_info *rom =3D NULL; diff --git a/hw/vfio/pci-quirks.c b/hw/vfio/pci-quirks.c index 39dae72497e0315eeb580dbcd5255c58bc38c8ed..d37f722cce0975631dd691b92a1= f36568718b454 100644 --- a/hw/vfio/pci-quirks.c +++ b/hw/vfio/pci-quirks.c @@ -1259,6 +1259,7 @@ void vfio_bar_quirk_setup(VFIOPCIDevice *vdev, int nr) vfio_probe_nvidia_bar0_quirk(vdev, nr); vfio_probe_rtl8168_bar2_quirk(vdev, nr); #ifdef CONFIG_VFIO_IGD + vfio_probe_igd_bar0_quirk(vdev, nr); vfio_probe_igd_bar4_quirk(vdev, nr); #endif } --=20 2.46.0 From nobody Mon Nov 17 22:44:37 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1726569307; cv=none; d=zohomail.com; s=zohoarc; b=Dsn5yYsnz3FpMcDNLSEFHJLW4T+agiD3/iDkCCCX84/KuTs0rpIE++fPLiGT1fqAkZjxUJWXO7nuawXVGNeBGYPXHvL60ngP/QHLIXnsrSKeHTvLxIOsRnudPvCD+wu0t2g5Zq0P0pxODjcVzaZFKXFvO/NcAU89Ae3m8WDpL0Y= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1726569307; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=pvMgCCSHl7wtmesWqXipgo4wqrU5BcL03zHHu5pQgKo=; b=AG66Z7NQHgdAl8y0cGXdWHkMvH7yeRox/Tcb4o2Y2u6GWI2302WWsY+I26H3TpAtI+GcWRC2SzKXQw8k7nSgV6ovfcDRohT3LcGqDzqlGTJHFsxkL3Rep1b1wmNUIQkwVEIvu1qZ0biaKZ6tkHrR3eTNU8tjTkeLfi9OKC/Z4L8= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1726569307623395.9918552880931; Tue, 17 Sep 2024 03:35:07 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1sqVX1-0007mr-Vy; Tue, 17 Sep 2024 06:34:04 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1sqVVw-0006Aq-0k for qemu-devel@nongnu.org; Tue, 17 Sep 2024 06:32:58 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1sqVVu-0006mm-EI for qemu-devel@nongnu.org; Tue, 17 Sep 2024 06:32:55 -0400 Received: from mx-prod-mc-05.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-247-DiS8cdz3MUG-uttdvEw6Pg-1; Tue, 17 Sep 2024 06:32:47 -0400 Received: from mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.12]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 788401955F79; Tue, 17 Sep 2024 10:32:46 +0000 (UTC) Received: from corto.redhat.com (unknown [10.39.193.154]) by mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id DD1EB19560AA; Tue, 17 Sep 2024 10:32:44 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1726569173; 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=pvMgCCSHl7wtmesWqXipgo4wqrU5BcL03zHHu5pQgKo=; b=My8Sf5L0Lc/R5mK6KcBJMxyLmTxfWy7tRLDJjrZTm5feRniAqEw3m/fADDNWJ53cXrzXs5 a2puzZTcSF9yOAGRY0XVQLH1z/7T/BtlRfl1dkQkYfMtAudKVhXM/OJX+EKHLVaXrWtTyL b/cS9vsWSj8GPassamnQVXvh0gHGxC4= X-MC-Unique: DiS8cdz3MUG-uttdvEw6Pg-1 From: =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= To: qemu-devel@nongnu.org Cc: Alex Williamson , =?UTF-8?q?Corvin=20K=C3=B6hne?= , =?UTF-8?q?Corvin=20K=C3=B6hne?= Subject: [PULL 6/8] vfio/igd: add ID's for ElkhartLake and TigerLake Date: Tue, 17 Sep 2024 12:32:27 +0200 Message-ID: <20240917103229.876515-7-clg@redhat.com> In-Reply-To: <20240917103229.876515-1-clg@redhat.com> References: <20240917103229.876515-1-clg@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.0 on 10.30.177.12 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=clg@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1726569308714116600 From: Corvin K=C3=B6hne ElkhartLake and TigerLake devices were tested in legacy mode with Linux and Windows VMs. Both are working properly. It's likely that other Intel GPUs of gen 11 and 12 like IceLake device are working too. However, we're only adding known good devices for now. Signed-off-by: Corvin K=C3=B6hne Reviewed-by: Alex Williamson --- hw/vfio/igd.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/hw/vfio/igd.c b/hw/vfio/igd.c index 0d68c6a45169238b274706d29d9be11455c37f76..8a41b16421b425688dd2cacd3a1= 13efbad82e91b 100644 --- a/hw/vfio/igd.c +++ b/hw/vfio/igd.c @@ -88,6 +88,12 @@ static int igd_gen(VFIOPCIDevice *vdev) case 0x2200: case 0x5900: return 8; + /* ElkhartLake */ + case 0x4500: + return 11; + /* TigerLake */ + case 0x9A00: + return 12; } =20 /* --=20 2.46.0 From nobody Mon Nov 17 22:44:37 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1726569243; cv=none; d=zohomail.com; s=zohoarc; b=dzvevKDOfdb9eauhnBfN4OuJluXS8/HUMP5ZXbhCgj9hN3oG8d77u54LHMZnA3Hez+q7dRyoc616HjxW9tHh/ateBU6T6DgIObYIIfIyMoyG0XX6wLK0dhcn9QqXHvO2kf6z5Bj8138N7++K0KKOcpJ0zj7j3M0OdGFcgW/Mhk4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1726569243; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=HE4LPiIytCKu+JhxwChIGIhq1x6MX/XG0Gp6icN+mLY=; b=oGasaTWqybYIuarsJFY6X7ZsvIeSz8jBu0Q+bH9LBMX34hV5GelIu3Y08ZPyGGJm9JZrkOan0Z/rCZK5fxIy2N2424WOvu3/BAh0zjeGpARAbb9bpAobY6R47JRV33DbKgjyry4+BpZ3BDyQh8SAAzM6B8biKaOIz6hL8S/kjxs= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1726569243220693.1626116622951; Tue, 17 Sep 2024 03:34:03 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1sqVWc-0006b1-KF; Tue, 17 Sep 2024 06:33:41 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1sqVVw-0006BA-Jd for qemu-devel@nongnu.org; Tue, 17 Sep 2024 06:33:01 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1sqVVu-0006mu-UC for qemu-devel@nongnu.org; Tue, 17 Sep 2024 06:32:56 -0400 Received: from mx-prod-mc-02.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-63-YgwbVuPPO1yMbN49vohlEg-1; Tue, 17 Sep 2024 06:32:49 -0400 Received: from mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.12]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-02.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 5C14A1955F41; Tue, 17 Sep 2024 10:32:48 +0000 (UTC) Received: from corto.redhat.com (unknown [10.39.193.154]) by mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id CA64D19560AA; Tue, 17 Sep 2024 10:32:46 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1726569174; 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=HE4LPiIytCKu+JhxwChIGIhq1x6MX/XG0Gp6icN+mLY=; b=erfBVMXKmHoEJDVt6rWFNdlCaa2I+tHM2TcyZDmfeZGSQI7gd2mkoeCMN0kv2fsp+H96/d +NI1/n1/f1GnfkZKaXDpg8h9ryCXG2KFwwJD2r2AKFQ1PXTzGuOX7suG9iOZJAJ8jnIHZc cbcTFOjFAGaqHOBT/G1eJyZbvcUCTTA= X-MC-Unique: YgwbVuPPO1yMbN49vohlEg-1 From: =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= To: qemu-devel@nongnu.org Cc: Alex Williamson , =?UTF-8?q?Corvin=20K=C3=B6hne?= , =?UTF-8?q?Corvin=20K=C3=B6hne?= Subject: [PULL 7/8] vfio/igd: don't set stolen memory size to zero Date: Tue, 17 Sep 2024 12:32:28 +0200 Message-ID: <20240917103229.876515-8-clg@redhat.com> In-Reply-To: <20240917103229.876515-1-clg@redhat.com> References: <20240917103229.876515-1-clg@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.0 on 10.30.177.12 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=clg@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1726569244286116600 From: Corvin K=C3=B6hne The stolen memory is required for the GOP (EFI) driver and the Windows driver. While the GOP driver seems to work with any stolen memory size, the Windows driver will crash if the size doesn't match the size allocated by the host BIOS. For that reason, it doesn't make sense to overwrite the stolen memory size. It's true that this wastes some VM memory. In the worst case, the stolen memory can take up more than a GB. However, that's uncommon. Additionally, it's likely that a bunch of RAM is assigned to VMs making use of GPU passthrough. Signed-off-by: Corvin K=C3=B6hne Reviewed-by: Alex Williamson --- hw/vfio/igd.c | 35 ++++++++++++++++++----------------- 1 file changed, 18 insertions(+), 17 deletions(-) diff --git a/hw/vfio/igd.c b/hw/vfio/igd.c index 8a41b16421b425688dd2cacd3a113efbad82e91b..0751c43eae04aac5152c627af64= 8319151ee1e39 100644 --- a/hw/vfio/igd.c +++ b/hw/vfio/igd.c @@ -478,6 +478,23 @@ void vfio_probe_igd_bar0_quirk(VFIOPCIDevice *vdev, in= t nr) QLIST_INSERT_HEAD(&vdev->bars[nr].quirks, quirk, next); } =20 +static int igd_get_stolen_mb(int gen, uint32_t gmch) +{ + int gms; + + if (gen < 8) { + gms =3D (gmch >> 3) & 0x1f; + } else { + gms =3D (gmch >> 8) & 0xff; + } + + if (gms > 0x10) { + error_report("Unsupported IGD GMS value 0x%x", gms); + return 0; + } + return gms * 32; +} + void vfio_probe_igd_bar4_quirk(VFIOPCIDevice *vdev, int nr) { g_autofree struct vfio_region_info *rom =3D NULL; @@ -655,23 +672,7 @@ void vfio_probe_igd_bar4_quirk(VFIOPCIDevice *vdev, in= t nr) ggms_mb =3D 1 << ggms_mb; } =20 - /* - * Assume we have no GMS memory, but allow it to be overridden by devi= ce - * option (experimental). The spec doesn't actually allow zero GMS wh= en - * when IVD (IGD VGA Disable) is clear, but the claim is that it's unu= sed, - * so let's not waste VM memory for it. - */ - gmch &=3D ~((gen < 8 ? 0x1f : 0xff) << (gen < 8 ? 3 : 8)); - - if (vdev->igd_gms) { - if (vdev->igd_gms <=3D 0x10) { - gms_mb =3D vdev->igd_gms * 32; - gmch |=3D vdev->igd_gms << (gen < 8 ? 3 : 8); - } else { - error_report("Unsupported IGD GMS value 0x%x", vdev->igd_gms); - vdev->igd_gms =3D 0; - } - } + gms_mb =3D igd_get_stolen_mb(gen, gmch); =20 /* * Request reserved memory for stolen memory via fw_cfg. VM firmware --=20 2.46.0 From nobody Mon Nov 17 22:44:37 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1726569286; cv=none; d=zohomail.com; s=zohoarc; b=NVe7XHsKIFw2G+o/EBy9+guzEn5b3ogE8zikMF/T+cVp3bVitQnyklTu82GmgvQlqqK7hPyk9ZFk8PBvCUCpwlw8ER+y7eympqqx8AHFUyX5wGbsGHF0apPnkm67FRzKuL6d5Qw4llGY0Vqoa3xyDLMKQ4aocigibFcgOST0l5M= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1726569286; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=9UUhaiQXzIvprq7xcvOrSmnVdqtyNaGsgzXjK0jOJ0E=; b=Y+SNbzTQii+ADYad73uLbo/3KIqFAONMW1Lodfw6WgtFdBq+FEib5Tn9EbFcC+6SL4q0WSVm0VXF8euh/rjwhoHnfM3ACfgXFW9AAzqp5S5vh2FcWo5ws5M29kQYhat7U++f2EwzQ6TrAaELCQerJccfyakdsEgX9Rn+xvuqQvQ= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 17265692868484.785007112186804; Tue, 17 Sep 2024 03:34:46 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1sqVXM-0000R7-9t; Tue, 17 Sep 2024 06:34:26 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1sqVVx-0006BI-B7 for qemu-devel@nongnu.org; Tue, 17 Sep 2024 06:33:01 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1sqVVv-0006mz-6K for qemu-devel@nongnu.org; Tue, 17 Sep 2024 06:32:57 -0400 Received: from mx-prod-mc-03.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-114-PLdSC4ZgOx6rnMj1CHMMEg-1; Tue, 17 Sep 2024 06:32:51 -0400 Received: from mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.12]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 20A301955F43; Tue, 17 Sep 2024 10:32:50 +0000 (UTC) Received: from corto.redhat.com (unknown [10.39.193.154]) by mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id ABE8819560AA; Tue, 17 Sep 2024 10:32:48 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1726569174; 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=9UUhaiQXzIvprq7xcvOrSmnVdqtyNaGsgzXjK0jOJ0E=; b=AbeT4852xeXvoz+LNWs7+SAegqLS5REcYnMesTBPCX0NR1FPsl+VHjaAnREns0WQL+2LHx T0mESdTNL2bg6FXPMIbuCqHqAmWKnZQsuaAdgDgGgicfKCzBviCVb/XwyhADSgbezANTdR T/yEh4qimlWAyfYjYF/TlcfiYrkGSDA= X-MC-Unique: PLdSC4ZgOx6rnMj1CHMMEg-1 From: =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= To: qemu-devel@nongnu.org Cc: Alex Williamson , =?UTF-8?q?Corvin=20K=C3=B6hne?= , =?UTF-8?q?Corvin=20K=C3=B6hne?= Subject: [PULL 8/8] vfio/igd: correctly calculate stolen memory size for gen 9 and later Date: Tue, 17 Sep 2024 12:32:29 +0200 Message-ID: <20240917103229.876515-9-clg@redhat.com> In-Reply-To: <20240917103229.876515-1-clg@redhat.com> References: <20240917103229.876515-1-clg@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.0 on 10.30.177.12 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=clg@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1726569288411116600 From: Corvin K=C3=B6hne We have to update the calculation of the stolen memory size because we've seen devices using values of 0xf0 and above for the graphics mode select field. The new calculation was taken from the linux kernel [1]. [1] https://github.com/torvalds/linux/blob/7c626ce4bae1ac14f60076d00eafe71a= f30450ba/arch/x86/kernel/early-quirks.c#L455-L460 Signed-off-by: Corvin K=C3=B6hne Reviewed-by: Alex Williamson --- hw/vfio/igd.c | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/hw/vfio/igd.c b/hw/vfio/igd.c index 0751c43eae04aac5152c627af648319151ee1e39..a95d441f68661c23eee976be5d7= 4b2da354f9498 100644 --- a/hw/vfio/igd.c +++ b/hw/vfio/igd.c @@ -488,11 +488,18 @@ static int igd_get_stolen_mb(int gen, uint32_t gmch) gms =3D (gmch >> 8) & 0xff; } =20 - if (gms > 0x10) { - error_report("Unsupported IGD GMS value 0x%x", gms); - return 0; + if (gen < 9) { + if (gms > 0x10) { + error_report("Unsupported IGD GMS value 0x%x", gms); + return 0; + } + return gms * 32; + } else { + if (gms < 0xf0) + return gms * 32; + else + return gms * 4 + 4; } - return gms * 32; } =20 void vfio_probe_igd_bar4_quirk(VFIOPCIDevice *vdev, int nr) --=20 2.46.0