From nobody Fri Apr 19 21:41:59 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; 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=fail(p=none dis=none) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1631630501536730.626146737519; Tue, 14 Sep 2021 07:41:41 -0700 (PDT) Received: from localhost ([::1]:57452 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mQ9cx-0007ha-Dz for importer@patchew.org; Tue, 14 Sep 2021 10:41:40 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:35706) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mQ9MJ-000621-Ch for qemu-devel@nongnu.org; Tue, 14 Sep 2021 10:24:27 -0400 Received: from mail-wm1-x330.google.com ([2a00:1450:4864:20::330]:56185) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1mQ9MG-0005KH-Mw for qemu-devel@nongnu.org; Tue, 14 Sep 2021 10:24:26 -0400 Received: by mail-wm1-x330.google.com with SMTP id g128so4994405wma.5 for ; Tue, 14 Sep 2021 07:24:23 -0700 (PDT) Received: from localhost.localdomain (cpc92880-cmbg19-2-0-cust679.5-4.cable.virginm.net. [82.27.106.168]) by smtp.gmail.com with ESMTPSA id k6sm184252wmo.37.2021.09.14.07.24.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 14 Sep 2021 07:24:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=nS823/pARC7E/cGVolQgi0MZdIiDHOIoVcnOe7Dvd/w=; b=Mdf6Lhjex71nvzRWOBSf0SW3lReizEsZX2F8iwkTC5+SEdMv7OMwaNUtaHza4o/j2F wP9OcOZDBfYyFnC8dVPF5sWsQ5SgEgCgvQ+e3pt1HEuXANbTOclXtwWc84ISM8VPaDbM oSLieAQJHpQ+RvneyWlMp9gQ7fTiHHcWfcgQgFPOPzU/gEehjSyftTyP7u3Vm14vTNnS R4hahuTmbeq9eb2CbPJnbPx0l0uxjyggsEkruAADIqmjptxvi+XTFC7pFzbBq3m5FjnF 4XN5I8ZYz/xX6cjYaeHSEmajeUfS9cuR5evcwCj4AgKONyI0uHqAGPoBLsKgirfEYptV xBKg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=nS823/pARC7E/cGVolQgi0MZdIiDHOIoVcnOe7Dvd/w=; b=2w7KKfWFVKwFh1Q0MxJEnr51fLYUs7LZMwYKZI/qWZ892KCcm8vwho9bz9mgnGUZHN dNBamtcfPZ2Gz0nKN/fsg0G9by/bcNEdJGPEJaGeTtHPYjMP/Iy754EVmtL8jGgLrDfa wHO1lV1EmywFWJ74Q+XMg+oNtn+wsO6Fq00aNKVz3H0OR1YRy7K75th9yU1eZWxs2Bxu fmdIL4aPmle62ryVN8aaGKeQbklvdyhVqgMqJcsvbOP2TiRXSGYfCFGjIjlbkkiS9OFK iDSX5IBYtdmdTefF0jN2c3v+1PsYIoHZXydEI4o2Syvfa4MpQefcJnS+x/AvEptgK4su zbmg== X-Gm-Message-State: AOAM530rx89tSK3vPpzcO04H+eq1epROUPAA3qfbQfn6nmEJawNreyiG 1sz/BbOC5VzC5EogXUCiCy2O6g== X-Google-Smtp-Source: ABdhPJyzbdz1YqhY0LFyKRM+v+u+/5yvTdUIdRcMBxA8HgpWtHkcoV9CwBMBLBoegle+/SoJcS+7Hg== X-Received: by 2002:a05:600c:2e43:: with SMTP id q3mr2512682wmf.119.1631629462040; Tue, 14 Sep 2021 07:24:22 -0700 (PDT) From: Jean-Philippe Brucker To: eric.auger@redhat.com Subject: [PATCH v3 01/10] hw/acpi: Add VIOT table Date: Tue, 14 Sep 2021 15:19:56 +0100 Message-Id: <20210914142004.2433568-2-jean-philippe@linaro.org> X-Mailer: git-send-email 2.33.0 In-Reply-To: <20210914142004.2433568-1-jean-philippe@linaro.org> References: <20210914142004.2433568-1-jean-philippe@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=2a00:1450:4864:20::330; envelope-from=jean-philippe@linaro.org; helo=mail-wm1-x330.google.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, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, 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.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: peter.maydell@linaro.org, ehabkost@redhat.com, mst@redhat.com, richard.henderson@linaro.org, qemu-devel@nongnu.org, shannon.zhaosl@gmail.com, Jean-Philippe Brucker , qemu-arm@nongnu.org, pbonzini@redhat.com, ani@anisinha.ca, imammedo@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1631630503401100001 Content-Type: text/plain; charset="utf-8" Add a function that generates a Virtual I/O Translation table (VIOT), describing the topology of paravirtual IOMMUs. The table is created when instantiating a virtio-iommu device. It contains a virtio-iommu node and PCI Range nodes for endpoints managed by the IOMMU. By default, a single node describes all PCI devices. When passing the "default_bus_bypass_iommu" machine option and "bypass_iommu" PXB option, only buses that do not bypass the IOMMU are described by PCI Range nodes. Signed-off-by: Jean-Philippe Brucker Reviewed-by: Eric Auger Tested-by: Eric Auger --- Sizes and types are hardcoded because it will now be the default style https://lore.kernel.org/qemu-devel/20210708154617.1538485-1-imammedo@redhat= .com/ --- hw/acpi/viot.h | 13 +++++ hw/acpi/viot.c | 112 ++++++++++++++++++++++++++++++++++++++++++++ hw/acpi/Kconfig | 4 ++ hw/acpi/meson.build | 1 + 4 files changed, 130 insertions(+) create mode 100644 hw/acpi/viot.h create mode 100644 hw/acpi/viot.c diff --git a/hw/acpi/viot.h b/hw/acpi/viot.h new file mode 100644 index 0000000000..4cef29a640 --- /dev/null +++ b/hw/acpi/viot.h @@ -0,0 +1,13 @@ +/* + * ACPI Virtual I/O Translation Table implementation + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ +#ifndef VIOT_H +#define VIOT_H + +void build_viot(GArray *table_data, BIOSLinker *linker, + uint16_t virtio_iommu_bdf, const char *oem_id, + const char *oem_table_id); + +#endif /* VIOT_H */ diff --git a/hw/acpi/viot.c b/hw/acpi/viot.c new file mode 100644 index 0000000000..e7f7605119 --- /dev/null +++ b/hw/acpi/viot.c @@ -0,0 +1,112 @@ +/* + * ACPI Virtual I/O Translation table implementation + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ +#include "qemu/osdep.h" +#include "hw/acpi/acpi.h" +#include "hw/acpi/aml-build.h" +#include "hw/acpi/viot.h" +#include "hw/pci/pci.h" +#include "hw/pci/pci_host.h" + +struct viot_pci_ranges { + GArray *blob; + size_t count; + uint16_t output_node; +}; + +/* Build PCI range for a given PCI host bridge */ +static int viot_host_bridges(Object *obj, void *opaque) +{ + struct viot_pci_ranges *pci_ranges =3D opaque; + GArray *blob =3D pci_ranges->blob; + + if (object_dynamic_cast(obj, TYPE_PCI_HOST_BRIDGE)) { + PCIBus *bus =3D PCI_HOST_BRIDGE(obj)->bus; + + if (bus && !pci_bus_bypass_iommu(bus)) { + int min_bus, max_bus; + + pci_bus_range(bus, &min_bus, &max_bus); + + /* Type (PCI range) */ + build_append_int_noprefix(blob, 1, 1); + /* Reserved */ + build_append_int_noprefix(blob, 0, 1); + /* Length */ + build_append_int_noprefix(blob, 24, 2); + /* Endpoint start */ + build_append_int_noprefix(blob, PCI_BUILD_BDF(min_bus, 0), 4); + /* PCI Segment start */ + build_append_int_noprefix(blob, 0, 2); + /* PCI Segment end */ + build_append_int_noprefix(blob, 0, 2); + /* PCI BDF start */ + build_append_int_noprefix(blob, PCI_BUILD_BDF(min_bus, 0), 2); + /* PCI BDF end */ + build_append_int_noprefix(blob, PCI_BUILD_BDF(max_bus, 0xff), = 2); + /* Output node */ + build_append_int_noprefix(blob, pci_ranges->output_node, 2); + /* Reserved */ + build_append_int_noprefix(blob, 0, 6); + + pci_ranges->count++; + } + } + + return 0; +} + +/* + * Generate a VIOT table with one PCI-based virtio-iommu that manages PCI + * endpoints. + */ +void build_viot(GArray *table_data, BIOSLinker *linker, + uint16_t virtio_iommu_bdf, const char *oem_id, + const char *oem_table_id) +{ + /* The virtio-iommu node follows the 48-bytes header */ + int viommu_off =3D 48; + AcpiTable table =3D { .sig =3D "VIOT", .rev =3D 0, + .oem_id =3D oem_id, .oem_table_id =3D oem_table_id= }; + struct viot_pci_ranges pci_ranges =3D { + .output_node =3D viommu_off, + .blob =3D g_array_new(false, true, 1), + }; + + /* Build the list of PCI ranges that this viommu manages */ + object_child_foreach_recursive(object_get_root(), viot_host_bridges, + &pci_ranges); + + /* ACPI table header */ + acpi_table_begin(&table, table_data); + /* Node count */ + build_append_int_noprefix(table_data, pci_ranges.count + 1, 2); + /* Node offset */ + build_append_int_noprefix(table_data, viommu_off, 2); + /* Reserved */ + build_append_int_noprefix(table_data, 0, 8); + + /* Virtio-iommu node */ + /* Type (virtio-pci IOMMU) */ + build_append_int_noprefix(table_data, 3, 1); + /* Reserved */ + build_append_int_noprefix(table_data, 0, 1); + /* Length */ + build_append_int_noprefix(table_data, 16, 2); + /* PCI Segment */ + build_append_int_noprefix(table_data, 0, 2); + /* PCI BDF number */ + build_append_int_noprefix(table_data, virtio_iommu_bdf, 2); + /* Reserved */ + build_append_int_noprefix(table_data, 0, 8); + + /* PCI ranges found above */ + g_array_append_vals(table_data, pci_ranges.blob->data, + pci_ranges.blob->len); + g_array_free(pci_ranges.blob, true); + + acpi_table_end(linker, &table); +} + diff --git a/hw/acpi/Kconfig b/hw/acpi/Kconfig index 3b5e118c54..622b0b50b7 100644 --- a/hw/acpi/Kconfig +++ b/hw/acpi/Kconfig @@ -51,6 +51,10 @@ config ACPI_VMGENID default y depends on PC =20 +config ACPI_VIOT + bool + depends on ACPI + config ACPI_HW_REDUCED bool select ACPI diff --git a/hw/acpi/meson.build b/hw/acpi/meson.build index 7d8c0eb43e..adf6347bc4 100644 --- a/hw/acpi/meson.build +++ b/hw/acpi/meson.build @@ -20,6 +20,7 @@ acpi_ss.add(when: 'CONFIG_ACPI_APEI', if_true: files('ghe= s.c'), if_false: files( acpi_ss.add(when: 'CONFIG_ACPI_PIIX4', if_true: files('piix4.c')) acpi_ss.add(when: 'CONFIG_ACPI_PCIHP', if_true: files('pcihp.c')) acpi_ss.add(when: 'CONFIG_ACPI_PCIHP', if_false: files('acpi-pci-hotplug-s= tub.c')) +acpi_ss.add(when: 'CONFIG_ACPI_VIOT', if_true: files('viot.c')) acpi_ss.add(when: 'CONFIG_ACPI_X86_ICH', if_true: files('ich9.c', 'tco.c')) acpi_ss.add(when: 'CONFIG_IPMI', if_true: files('ipmi.c'), if_false: files= ('ipmi-stub.c')) acpi_ss.add(when: 'CONFIG_PC', if_false: files('acpi-x86-stub.c')) --=20 2.33.0 From nobody Fri Apr 19 21:41:59 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; 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=fail(p=none dis=none) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1631631068937409.4002830594933; Tue, 14 Sep 2021 07:51:08 -0700 (PDT) Received: from localhost ([::1]:55716 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mQ9m7-0000vk-RC for importer@patchew.org; Tue, 14 Sep 2021 10:51:07 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:35850) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mQ9MP-00069q-MI for qemu-devel@nongnu.org; Tue, 14 Sep 2021 10:24:35 -0400 Received: from mail-wm1-x330.google.com ([2a00:1450:4864:20::330]:41950) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1mQ9MH-0005LX-Jw for qemu-devel@nongnu.org; Tue, 14 Sep 2021 10:24:33 -0400 Received: by mail-wm1-x330.google.com with SMTP id g19-20020a1c9d13000000b003075062d4daso2733733wme.0 for ; Tue, 14 Sep 2021 07:24:23 -0700 (PDT) Received: from localhost.localdomain (cpc92880-cmbg19-2-0-cust679.5-4.cable.virginm.net. [82.27.106.168]) by smtp.gmail.com with ESMTPSA id k6sm184252wmo.37.2021.09.14.07.24.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 14 Sep 2021 07:24:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=0fqwWGJNfdFrIuKBkB90SJ27CXrBjDpDxVfvD5zH9+o=; b=ikX0MxOG6IAUlITtLbcw4wbSyLIcc0o+qrwMwLPwRMKTCBMmqMDZltQ5vcTOKft6Jm +QZhudG4dvnOHpvFaM4T8k5jglDjZ4bFskzMBrk7WJzdTG7OhfWVtM1njBgDVFK8gkeN 2Gu3lfF599L8vYP1gRtPVC9NcyR5w8ln9gLPeltLQ2U0AYOGQdQCDfPlgpg6DwkfvUb9 w1icE341tuY+ZlazSxdv0JClL0EVP4L5DAwucqsNrF3GtCqdPognOOofAzHPl0QTSklq LDyShFmgbE6eENMpOvBWzqQtBM8zcgd+IwXiGbh8bZlyzKM/4i1VcoOGZzgZLv82oAQP hN9A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=0fqwWGJNfdFrIuKBkB90SJ27CXrBjDpDxVfvD5zH9+o=; b=fE6e0BtPvzOx/kSLDN2r0lyopv5LxnRAelAMmEG+VgUYN4FE5nl00/bGcdHEv9jf6d n4Gmam5v1LGerseBrmC9OrALwRlK9ByJrntnxb6bj49/bzCdkE9RN6cQS3xZPpRtRSx2 2L/lN9d+Jnw5VRs0z1v6Ia8zQZtqPLE6zba5iqN7M/tm96beSh/4j6uL8Q8cA9Zeg/UO tb16SS2l18H+ZUJMQWHU3Nh3Ck+OOZDzVgzK+YJ6CJUR3al/qb0CBM7eGPn+CS+LZKf/ p63q4z+keRGoFkkZvT8ayB7M6Rn8wvI7YO5R+FlyJqGJxsd9gsVyhmPojdYZeW7+Bicp orlQ== X-Gm-Message-State: AOAM533QTEFpnCrPVryW6fxXz2qeLU2GnfFxKURVftvNg+mUxJZKLEUB o+lrYvpVQPM1gNRsYreqPH7PU7zR30/C+w== X-Google-Smtp-Source: ABdhPJyZSbBPWs5oXa1j8xOjAgNpHh2cYCX3/48rw/cJz1igar8szFRc6Wnhxcy4wdAsjvphsp+cQw== X-Received: by 2002:a1c:9a85:: with SMTP id c127mr2507326wme.174.1631629463129; Tue, 14 Sep 2021 07:24:23 -0700 (PDT) From: Jean-Philippe Brucker To: eric.auger@redhat.com Subject: [PATCH v3 02/10] hw/arm/virt-acpi-build: Add VIOT table for virtio-iommu Date: Tue, 14 Sep 2021 15:19:57 +0100 Message-Id: <20210914142004.2433568-3-jean-philippe@linaro.org> X-Mailer: git-send-email 2.33.0 In-Reply-To: <20210914142004.2433568-1-jean-philippe@linaro.org> References: <20210914142004.2433568-1-jean-philippe@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=2a00:1450:4864:20::330; envelope-from=jean-philippe@linaro.org; helo=mail-wm1-x330.google.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, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, 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.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: peter.maydell@linaro.org, ehabkost@redhat.com, mst@redhat.com, richard.henderson@linaro.org, qemu-devel@nongnu.org, shannon.zhaosl@gmail.com, Jean-Philippe Brucker , qemu-arm@nongnu.org, pbonzini@redhat.com, ani@anisinha.ca, imammedo@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1631631070366100001 Content-Type: text/plain; charset="utf-8" When a virtio-iommu is instantiated, describe it using the ACPI VIOT table. Reviewed-by: Eric Auger Signed-off-by: Jean-Philippe Brucker --- hw/arm/virt-acpi-build.c | 7 +++++++ hw/arm/Kconfig | 1 + 2 files changed, 8 insertions(+) diff --git a/hw/arm/virt-acpi-build.c b/hw/arm/virt-acpi-build.c index ebe9d1726f..23c2e1aaf2 100644 --- a/hw/arm/virt-acpi-build.c +++ b/hw/arm/virt-acpi-build.c @@ -55,6 +55,7 @@ #include "kvm_arm.h" #include "migration/vmstate.h" #include "hw/acpi/ghes.h" +#include "hw/acpi/viot.h" =20 #define ARM_SPI_BASE 32 =20 @@ -928,6 +929,12 @@ void virt_acpi_build(VirtMachineState *vms, AcpiBuildT= ables *tables) } #endif =20 + if (vms->iommu =3D=3D VIRT_IOMMU_VIRTIO) { + acpi_add_table(table_offsets, tables_blob); + build_viot(tables_blob, tables->linker, vms->virtio_iommu_bdf, + vms->oem_id, vms->oem_table_id); + } + /* XSDT is pointed to by RSDP */ xsdt =3D tables_blob->len; build_xsdt(tables_blob, tables->linker, table_offsets, vms->oem_id, diff --git a/hw/arm/Kconfig b/hw/arm/Kconfig index 78fdd1b935..8b04a1d53a 100644 --- a/hw/arm/Kconfig +++ b/hw/arm/Kconfig @@ -27,6 +27,7 @@ config ARM_VIRT select DIMM select ACPI_HW_REDUCED select ACPI_APEI + select ACPI_VIOT =20 config CHEETAH bool --=20 2.33.0 From nobody Fri Apr 19 21:41:59 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; 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=fail(p=none dis=none) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1631630259483758.3149009473675; Tue, 14 Sep 2021 07:37:39 -0700 (PDT) Received: from localhost ([::1]:45788 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mQ9Z4-0007tF-Eb for importer@patchew.org; Tue, 14 Sep 2021 10:37:38 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:35876) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mQ9MQ-00069t-FU for qemu-devel@nongnu.org; Tue, 14 Sep 2021 10:24:35 -0400 Received: from mail-wm1-x336.google.com ([2a00:1450:4864:20::336]:43797) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1mQ9MI-0005MW-6s for qemu-devel@nongnu.org; Tue, 14 Sep 2021 10:24:34 -0400 Received: by mail-wm1-x336.google.com with SMTP id n7-20020a05600c3b8700b002f8ca941d89so2703857wms.2 for ; Tue, 14 Sep 2021 07:24:25 -0700 (PDT) Received: from localhost.localdomain (cpc92880-cmbg19-2-0-cust679.5-4.cable.virginm.net. [82.27.106.168]) by smtp.gmail.com with ESMTPSA id k6sm184252wmo.37.2021.09.14.07.24.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 14 Sep 2021 07:24:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=K3EssKNnZXrh2nHfsbAL/+KnNzJUGLWYCayXBQqtwQg=; b=GQ8uMDlmNJBTj6EJqRMyXEgopIkmn/ONEFRtC5GMlb/Lzj0gauo6TLnjhq/xa9R+8a 6rQSIqcQn3gX2LiosSJHoM33Uz8nlpM/zR8jNXdzQKbieuxYpfrt6oSX939cCLWq44vP LQx5e5Rie00rpbKGyoJlRUPA5MnI/x2jRqpwZfzkRIrtc9qt1rFhTmR0d6Dxfh3IDhPA pKKzc2s6J+vVNF1H8PSO0uRqAW/8peFROziZbDb9n8vZoFxLmGkjVrZESSvCw/tWlmxq z6BJSKAC4nKE6X8xxLZiHB7NRKhGnD8/a4DtMaU6aw8HY8XSweC7CVZ/3qzh3vcXrjU3 DLWg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=K3EssKNnZXrh2nHfsbAL/+KnNzJUGLWYCayXBQqtwQg=; b=EQJGb+mQvtVtfibvELvpIrQ0EsPn/LV7duIOtYRhIQXQFgl+mudKCJUH1dEe7pXfD3 6Q83GpnJdBMW3NqRR3XPZf/iQq+S+1oROOWkX9Pju4S0yr2DebpXrrCsj7a5SlLRiwOO MpqByZ4U5Hs6ZEibm7z+y5R1nepf45UsDWBUz5i8zsXoOboSfAukdIWL5saB6Ybv4GZT z4nq2iUrYe17FwSuCcmQB8bZJFt/t27k2TDeObXB8LdhP0pNPgyKD/PXLO6ws9v0Cn4v N+kxJA9aMN6D9DiNvWilrUkISlQqXc532qdcJDf24uZx4iW7QfPTvFwbIkBy6JbAy88h 5f3Q== X-Gm-Message-State: AOAM5328kqbGgQWrISNWcSaRATFht7R+olsINUgBYALcQu4Q1Mylpw7m trLI4jppRu6XFtpVuK9mUX1Z8A== X-Google-Smtp-Source: ABdhPJw8JENMZqwHOoa0sn07aFPUoPNbuZGE3xQlitAlgdWy1dVtK44QBhvv7tWqbhDkR6Yu2FvTXQ== X-Received: by 2002:a1c:7f89:: with SMTP id a131mr2466926wmd.31.1631629464193; Tue, 14 Sep 2021 07:24:24 -0700 (PDT) From: Jean-Philippe Brucker To: eric.auger@redhat.com Subject: [PATCH v3 03/10] hw/arm/virt: Remove device tree restriction for virtio-iommu Date: Tue, 14 Sep 2021 15:19:58 +0100 Message-Id: <20210914142004.2433568-4-jean-philippe@linaro.org> X-Mailer: git-send-email 2.33.0 In-Reply-To: <20210914142004.2433568-1-jean-philippe@linaro.org> References: <20210914142004.2433568-1-jean-philippe@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=2a00:1450:4864:20::336; envelope-from=jean-philippe@linaro.org; helo=mail-wm1-x336.google.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, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: peter.maydell@linaro.org, ehabkost@redhat.com, mst@redhat.com, richard.henderson@linaro.org, qemu-devel@nongnu.org, shannon.zhaosl@gmail.com, Jean-Philippe Brucker , qemu-arm@nongnu.org, pbonzini@redhat.com, ani@anisinha.ca, imammedo@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1631630260960100001 Content-Type: text/plain; charset="utf-8" virtio-iommu is now supported with ACPI VIOT as well as device tree. Remove the restriction that prevents from instantiating a virtio-iommu device under ACPI. Reviewed-by: Eric Auger Signed-off-by: Jean-Philippe Brucker --- hw/arm/virt.c | 10 ++-------- hw/virtio/virtio-iommu-pci.c | 7 ------- 2 files changed, 2 insertions(+), 15 deletions(-) diff --git a/hw/arm/virt.c b/hw/arm/virt.c index 73e9c6bb7c..f238766aa1 100644 --- a/hw/arm/virt.c +++ b/hw/arm/virt.c @@ -2547,16 +2547,10 @@ static HotplugHandler *virt_machine_get_hotplug_han= dler(MachineState *machine, MachineClass *mc =3D MACHINE_GET_CLASS(machine); =20 if (device_is_dynamic_sysbus(mc, dev) || - (object_dynamic_cast(OBJECT(dev), TYPE_PC_DIMM))) { + object_dynamic_cast(OBJECT(dev), TYPE_PC_DIMM) || + object_dynamic_cast(OBJECT(dev), TYPE_VIRTIO_IOMMU_PCI)) { return HOTPLUG_HANDLER(machine); } - if (object_dynamic_cast(OBJECT(dev), TYPE_VIRTIO_IOMMU_PCI)) { - VirtMachineState *vms =3D VIRT_MACHINE(machine); - - if (!vms->bootinfo.firmware_loaded || !virt_is_acpi_enabled(vms)) { - return HOTPLUG_HANDLER(machine); - } - } return NULL; } =20 diff --git a/hw/virtio/virtio-iommu-pci.c b/hw/virtio/virtio-iommu-pci.c index 770c286be7..f30eb16cbf 100644 --- a/hw/virtio/virtio-iommu-pci.c +++ b/hw/virtio/virtio-iommu-pci.c @@ -48,16 +48,9 @@ static void virtio_iommu_pci_realize(VirtIOPCIProxy *vpc= i_dev, Error **errp) VirtIOIOMMU *s =3D VIRTIO_IOMMU(vdev); =20 if (!qdev_get_machine_hotplug_handler(DEVICE(vpci_dev))) { - MachineClass *mc =3D MACHINE_GET_CLASS(qdev_get_machine()); - - error_setg(errp, - "%s machine fails to create iommu-map device tree bindi= ngs", - mc->name); error_append_hint(errp, "Check your machine implements a hotplug handler= " "for the virtio-iommu-pci device\n"); - error_append_hint(errp, "Check the guest is booted without FW or w= ith " - "-no-acpi\n"); return; } for (int i =3D 0; i < s->nb_reserved_regions; i++) { --=20 2.33.0 From nobody Fri Apr 19 21:41:59 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; 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=fail(p=none dis=none) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 163163149228055.616650134523525; Tue, 14 Sep 2021 07:58:12 -0700 (PDT) Received: from localhost ([::1]:52988 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mQ9sx-00017W-6C for importer@patchew.org; Tue, 14 Sep 2021 10:58:11 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:35920) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mQ9MS-0006Bw-5D for qemu-devel@nongnu.org; Tue, 14 Sep 2021 10:24:36 -0400 Received: from mail-wm1-x329.google.com ([2a00:1450:4864:20::329]:45727) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1mQ9MJ-0005Nr-65 for qemu-devel@nongnu.org; Tue, 14 Sep 2021 10:24:35 -0400 Received: by mail-wm1-x329.google.com with SMTP id j17-20020a05600c1c1100b002e754875260so2694216wms.4 for ; Tue, 14 Sep 2021 07:24:26 -0700 (PDT) Received: from localhost.localdomain (cpc92880-cmbg19-2-0-cust679.5-4.cable.virginm.net. [82.27.106.168]) by smtp.gmail.com with ESMTPSA id k6sm184252wmo.37.2021.09.14.07.24.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 14 Sep 2021 07:24:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=A36UF6SLZ6rtAL1T4W2mA2INEfGxveQOg5GlQyADzqg=; b=ds+QZrm0k8l6jUBnwq7IHqicrPeYluCt5ucvx08hT+feUN7pwPu6PbkcvYq79e8zSZ cUXaa730IdoRFKFVuy8bX6nWXeCDnnW5DLZ0OQar9bxGvU4sS4lZnGsivQb8PuKxB4nk GktCDrEg7OxnSRzyTae7SzZZjSFhoflGchISB7NnIVxReu+uxjn7wxedYK7HgWiO+Vii iVbY6MOkru0vYWdmUATcKNdpk4nlMKicxxtRfnkNtJAvnhS0uOW8vMsiKh+Fhb0DuuuW 00lQu1haYeImtZtVU2Z+E/SeRdqDXkine0VdZSXPMI4UAZb7Uhia/obAnLPxCv52Q200 hDCw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=A36UF6SLZ6rtAL1T4W2mA2INEfGxveQOg5GlQyADzqg=; b=FwBsA+o24EfvEU08BQDBI5FhqMrouk0TIL6urHedtgZsW8ju8hccSzQVhQpMw3UnFF uORz2NT53kYbDYypeUwf+eueYVoRiRuwNHEOt+gvEKpZkSRgFbQAe3juzth6TAwYiL7u Ii4melEkRs6VrQchSM7qrJBWHKZnFLezj8MdljmMY5trXen5XVuTZ6sMvqwe9jKj9XmV b0xXaw8ivXYo/+ny1Y7hqSYaptkEX+QVNZ/ibAPZmrx+0l+X9PMyG31SyWVhjCKx+wq9 3J4bOsIZ8N8nlQ7WgqFeu8HLjs3TZOfl16OXGMDEv+Mc4JrsbfF8hgY/uFZkXu+LDmaz YnkA== X-Gm-Message-State: AOAM530Z2vFxoXRxAfFrQJWtzIsMjXse707w6mPU6jWg8eiR3bsM6w2y f0js90j8pK6OXLfcHyiNhLPvxA== X-Google-Smtp-Source: ABdhPJxoFhbmut1SdFumG3abKSHctHBuRzVOmx0faYeQZZXquOQtkJ9arlsAZYufMNOCkdlLyxbJlw== X-Received: by 2002:a7b:c3cc:: with SMTP id t12mr2530132wmj.68.1631629465295; Tue, 14 Sep 2021 07:24:25 -0700 (PDT) From: Jean-Philippe Brucker To: eric.auger@redhat.com Subject: [PATCH v3 04/10] hw/arm/virt: Reject instantiation of multiple IOMMUs Date: Tue, 14 Sep 2021 15:19:59 +0100 Message-Id: <20210914142004.2433568-5-jean-philippe@linaro.org> X-Mailer: git-send-email 2.33.0 In-Reply-To: <20210914142004.2433568-1-jean-philippe@linaro.org> References: <20210914142004.2433568-1-jean-philippe@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=2a00:1450:4864:20::329; envelope-from=jean-philippe@linaro.org; helo=mail-wm1-x329.google.com X-Spam_score_int: -1 X-Spam_score: -0.2 X-Spam_bar: / X-Spam_report: (-0.2 / 5.0 requ) DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: peter.maydell@linaro.org, ehabkost@redhat.com, mst@redhat.com, richard.henderson@linaro.org, qemu-devel@nongnu.org, shannon.zhaosl@gmail.com, Jean-Philippe Brucker , qemu-arm@nongnu.org, pbonzini@redhat.com, ani@anisinha.ca, imammedo@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1631631493240100001 Content-Type: text/plain; charset="utf-8" We do not support instantiating multiple IOMMUs. Before adding a virtio-iommu, check that no other IOMMU is present. This will detect both "iommu=3Dsmmuv3" machine parameter and another virtio-iommu instance. Fixes: 70e89132c9 ("hw/arm/virt: Add the virtio-iommu device tree mappings") Reviewed-by: Eric Auger Signed-off-by: Jean-Philippe Brucker Tested-by: Eric Auger --- hw/arm/virt.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/hw/arm/virt.c b/hw/arm/virt.c index f238766aa1..26069f943a 100644 --- a/hw/arm/virt.c +++ b/hw/arm/virt.c @@ -2471,6 +2471,11 @@ static void virt_machine_device_plug_cb(HotplugHandl= er *hotplug_dev, if (object_dynamic_cast(OBJECT(dev), TYPE_VIRTIO_IOMMU_PCI)) { PCIDevice *pdev =3D PCI_DEVICE(dev); =20 + if (vms->iommu !=3D VIRT_IOMMU_NONE) { + error_setg(errp, "virt machine does not support multiple IOMMU= s"); + return; + } + vms->iommu =3D VIRT_IOMMU_VIRTIO; vms->virtio_iommu_bdf =3D pci_get_bdf(pdev); create_virtio_iommu_dt_bindings(vms); --=20 2.33.0 From nobody Fri Apr 19 21:41:59 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; 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=fail(p=none dis=none) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1631630297585978.3416878567353; Tue, 14 Sep 2021 07:38:17 -0700 (PDT) Received: from localhost ([::1]:47828 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mQ9Zg-0000yd-JC for importer@patchew.org; Tue, 14 Sep 2021 10:38:16 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:36000) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mQ9MU-0006F5-LS for qemu-devel@nongnu.org; Tue, 14 Sep 2021 10:24:39 -0400 Received: from mail-wm1-x32c.google.com ([2a00:1450:4864:20::32c]:38715) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1mQ9MK-0005Ot-95 for qemu-devel@nongnu.org; Tue, 14 Sep 2021 10:24:38 -0400 Received: by mail-wm1-x32c.google.com with SMTP id k5-20020a05600c1c8500b002f76c42214bso2255407wms.3 for ; Tue, 14 Sep 2021 07:24:27 -0700 (PDT) Received: from localhost.localdomain (cpc92880-cmbg19-2-0-cust679.5-4.cable.virginm.net. [82.27.106.168]) by smtp.gmail.com with ESMTPSA id k6sm184252wmo.37.2021.09.14.07.24.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 14 Sep 2021 07:24:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=1Dpxbn0fDeE2pqHdIXbZlDNr3pHTinWoeKCEcb3F1QQ=; b=H8s91u5BczSucpqTLQ1SYE9fL5U4Awdv64t52Gnx7AtDoXv3SLEg6zsTqBXDQbsJmE 7FFoEpF3lr8grbeKVJ0xzixmmGLLWzrcmZwIf2p4c6QOn3jpqFPe+sEsvnFhhchUSuTb f4nDDcl811ailZ+lLb13hEgF/VaDxPhMc1HYR3d1R7YzJkL2nx/s74whmyt6lcfoMX/+ jCEzHOmnHVvAdDaroaY/iqLttdIsgwx4wMjsRyChHSthfRHhIqKTEhHNAp7Bv6zsJzBA /Ms49VPYBv/Rjsc9cryDJojI4uZwHoN/r+cCMwIdHtuNaP2tEN7NQ3nqMKRlYzS6GPVv 1ACA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=1Dpxbn0fDeE2pqHdIXbZlDNr3pHTinWoeKCEcb3F1QQ=; b=kPqGUB0aCL1R8YqcCY8jQ02VyxuJcLN/14a6R7mIBlagFytgMkeKtarXDnKv4BWx8U y2v0V8P8V02rnWAfoei2RyQt0T61qblQ9dT9EPvD52UyOLZNJnyRR4LyuOl7iAF02gKX P8DyYyYAbYKPq4Ulf8aUVlcnJFZm+QhhYgP76Pq5SrQV+vpsvs1MDNkwEyztIV2PhAzg M685Va22rhnIsRMc7gqjvqVWdCoEkLOlEnwfTj5xrqtkCnd/JkyttRcNTwHzmwRXnCbm pQjV30h/fHG7StiuH7jkWdZGUfTiWxeVQNqjrSoRXFhrW1kGyopHf/Fm7Ajgp8G3JIiH TVow== X-Gm-Message-State: AOAM532K3iPmLMtF5zFJJkcge9wGp+iGSIwLcrEkpWrvN8g7R10p4aif x8zy2bGnb+47DvU9e+Y9JvCfwA== X-Google-Smtp-Source: ABdhPJwp0eJ9TscGNGylx+tYL3RrRVmdpnkDKE91inNjlCkKXu6Gi6QqjqogRCl014bQ0v6L+bY8fA== X-Received: by 2002:a1c:2351:: with SMTP id j78mr2538885wmj.40.1631629466390; Tue, 14 Sep 2021 07:24:26 -0700 (PDT) From: Jean-Philippe Brucker To: eric.auger@redhat.com Subject: [PATCH v3 05/10] pc: Allow instantiating a virtio-iommu device Date: Tue, 14 Sep 2021 15:20:00 +0100 Message-Id: <20210914142004.2433568-6-jean-philippe@linaro.org> X-Mailer: git-send-email 2.33.0 In-Reply-To: <20210914142004.2433568-1-jean-philippe@linaro.org> References: <20210914142004.2433568-1-jean-philippe@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=2a00:1450:4864:20::32c; envelope-from=jean-philippe@linaro.org; helo=mail-wm1-x32c.google.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, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: peter.maydell@linaro.org, ehabkost@redhat.com, mst@redhat.com, richard.henderson@linaro.org, qemu-devel@nongnu.org, shannon.zhaosl@gmail.com, Jean-Philippe Brucker , qemu-arm@nongnu.org, pbonzini@redhat.com, ani@anisinha.ca, imammedo@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1631630299407100001 Content-Type: text/plain; charset="utf-8" Allow instantiating a virtio-iommu device by adding an ACPI Virtual I/O Translation table (VIOT), which describes the relation between the virtio-iommu and the endpoints it manages. Add a hotplug handler for virtio-iommu on x86 and set the necessary reserved region property. On x86, the [0xfee00000, 0xfeefffff] DMA region is reserved for MSIs. DMA transactions to this range either trigger IRQ remapping in the IOMMU or bypasses IOMMU translation. Although virtio-iommu does not support IRQ remapping it must be informed of the reserved region so that it can forward DMA transactions targeting this region. Signed-off-by: Jean-Philippe Brucker --- include/hw/i386/pc.h | 2 ++ hw/i386/acpi-build.c | 5 +++++ hw/i386/pc.c | 28 +++++++++++++++++++++++++++- hw/i386/Kconfig | 1 + 4 files changed, 35 insertions(+), 1 deletion(-) diff --git a/include/hw/i386/pc.h b/include/hw/i386/pc.h index 82cf7b7e30..f3ba1ee4c0 100644 --- a/include/hw/i386/pc.h +++ b/include/hw/i386/pc.h @@ -45,6 +45,8 @@ typedef struct PCMachineState { bool pit_enabled; bool hpet_enabled; bool default_bus_bypass_iommu; + bool virtio_iommu; + uint16_t virtio_iommu_bdf; uint64_t max_fw_size; =20 /* ACPI Memory hotplug IO base address */ diff --git a/hw/i386/acpi-build.c b/hw/i386/acpi-build.c index 547cd4ed9d..76845026d8 100644 --- a/hw/i386/acpi-build.c +++ b/hw/i386/acpi-build.c @@ -71,6 +71,7 @@ =20 #include "hw/acpi/ipmi.h" #include "hw/acpi/hmat.h" +#include "hw/acpi/viot.h" =20 /* These are used to size the ACPI tables for -M pc-i440fx-1.7 and * -M pc-i440fx-2.0. Even if the actual amount of AML generated grows @@ -2593,6 +2594,10 @@ void acpi_build(AcpiBuildTables *tables, MachineStat= e *machine) build_dmar_q35(tables_blob, tables->linker, x86ms->oem_id, x86ms->oem_table_id); } + } else if (pcms->virtio_iommu) { + acpi_add_table(table_offsets, tables_blob); + build_viot(tables_blob, tables->linker, pcms->virtio_iommu_bdf, + x86ms->oem_id, x86ms->oem_table_id); } if (machine->nvdimms_state->is_enabled) { nvdimm_build_acpi(table_offsets, tables_blob, tables->linker, diff --git a/hw/i386/pc.c b/hw/i386/pc.c index 7e523b913c..a31e950599 100644 --- a/hw/i386/pc.c +++ b/hw/i386/pc.c @@ -83,6 +83,7 @@ #include "hw/i386/intel_iommu.h" #include "hw/net/ne2000-isa.h" #include "standard-headers/asm-x86/bootparam.h" +#include "hw/virtio/virtio-iommu.h" #include "hw/virtio/virtio-pmem-pci.h" #include "hw/virtio/virtio-mem-pci.h" #include "hw/mem/memory-device.h" @@ -798,6 +799,11 @@ void pc_machine_done(Notifier *notifier, void *data) "irqchip support."); exit(EXIT_FAILURE); } + + if (pcms->virtio_iommu && x86_iommu_get_default()) { + error_report("QEMU does not support multiple vIOMMUs for x86 yet."= ); + exit(EXIT_FAILURE); + } } =20 void pc_guest_info_init(PCMachineState *pcms) @@ -1368,6 +1374,14 @@ static void pc_machine_device_pre_plug_cb(HotplugHan= dler *hotplug_dev, } else if (object_dynamic_cast(OBJECT(dev), TYPE_VIRTIO_PMEM_PCI) || object_dynamic_cast(OBJECT(dev), TYPE_VIRTIO_MEM_PCI)) { pc_virtio_md_pci_pre_plug(hotplug_dev, dev, errp); + } else if (object_dynamic_cast(OBJECT(dev), TYPE_VIRTIO_IOMMU_PCI)) { + /* Declare the reserved MSI region */ + char *resv_prop_str =3D g_strdup_printf("0xfee00000:0xfeefffff:%d", + VIRTIO_IOMMU_RESV_MEM_T_MSI); + + qdev_prop_set_uint32(dev, "len-reserved-regions", 1); + qdev_prop_set_string(dev, "reserved-regions[0]", resv_prop_str); + g_free(resv_prop_str); } } =20 @@ -1381,6 +1395,17 @@ static void pc_machine_device_plug_cb(HotplugHandler= *hotplug_dev, } else if (object_dynamic_cast(OBJECT(dev), TYPE_VIRTIO_PMEM_PCI) || object_dynamic_cast(OBJECT(dev), TYPE_VIRTIO_MEM_PCI)) { pc_virtio_md_pci_plug(hotplug_dev, dev, errp); + } else if (object_dynamic_cast(OBJECT(dev), TYPE_VIRTIO_IOMMU_PCI)) { + PCMachineState *pcms =3D PC_MACHINE(hotplug_dev); + PCIDevice *pdev =3D PCI_DEVICE(dev); + + if (pcms->virtio_iommu) { + error_setg(errp, + "QEMU does not support multiple vIOMMUs for x86 yet= ."); + return; + } + pcms->virtio_iommu =3D true; + pcms->virtio_iommu_bdf =3D pci_get_bdf(pdev); } } =20 @@ -1422,7 +1447,8 @@ static HotplugHandler *pc_get_hotplug_handler(Machine= State *machine, if (object_dynamic_cast(OBJECT(dev), TYPE_PC_DIMM) || object_dynamic_cast(OBJECT(dev), TYPE_CPU) || object_dynamic_cast(OBJECT(dev), TYPE_VIRTIO_PMEM_PCI) || - object_dynamic_cast(OBJECT(dev), TYPE_VIRTIO_MEM_PCI)) { + object_dynamic_cast(OBJECT(dev), TYPE_VIRTIO_MEM_PCI) || + object_dynamic_cast(OBJECT(dev), TYPE_VIRTIO_IOMMU_PCI)) { return HOTPLUG_HANDLER(machine); } =20 diff --git a/hw/i386/Kconfig b/hw/i386/Kconfig index ddedcef0b2..13db05d557 100644 --- a/hw/i386/Kconfig +++ b/hw/i386/Kconfig @@ -54,6 +54,7 @@ config PC_ACPI select ACPI_X86 select ACPI_CPU_HOTPLUG select ACPI_MEMORY_HOTPLUG + select ACPI_VIOT select SMBUS_EEPROM select PFLASH_CFI01 depends on ACPI_SMBUS --=20 2.33.0 From nobody Fri Apr 19 21:41:59 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; 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=fail(p=none dis=none) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1631630519786650.455629619365; Tue, 14 Sep 2021 07:41:59 -0700 (PDT) Received: from localhost ([::1]:59030 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mQ9dG-0000Lw-ND for importer@patchew.org; Tue, 14 Sep 2021 10:41:58 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:36090) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mQ9MX-0006Fi-Dn for qemu-devel@nongnu.org; Tue, 14 Sep 2021 10:24:45 -0400 Received: from mail-wm1-x334.google.com ([2a00:1450:4864:20::334]:37458) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1mQ9MP-0005Qk-BW for qemu-devel@nongnu.org; Tue, 14 Sep 2021 10:24:41 -0400 Received: by mail-wm1-x334.google.com with SMTP id c8-20020a7bc008000000b002e6e462e95fso2268153wmb.2 for ; Tue, 14 Sep 2021 07:24:28 -0700 (PDT) Received: from localhost.localdomain (cpc92880-cmbg19-2-0-cust679.5-4.cable.virginm.net. [82.27.106.168]) by smtp.gmail.com with ESMTPSA id k6sm184252wmo.37.2021.09.14.07.24.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 14 Sep 2021 07:24:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=tUzjz0DaQh9V/E1AtSG5a0bXdcLZdXoyXVjvZ0SiJck=; b=fK0YxSDiCHrTwUEMTdSyk6J/gIKTUzJFHCKPj8JVl1isshp4DPQ1QP+jlnH7qpcMD2 IQqOxl2R4E3GV7gGjDclIbV2PzY9Bicqb2bpSK3fmZaaBwDZ95MU5BiOSU39g7KKoD+m FFxBhvGQWPcZo0KGwK3TNfJ4r8MWGkE8BoPKpsd8DcJY0P1V0uot2JPdAulze3m1TFl7 J6otwAy3GkPbMRXZZ4moNNItExSQrK95vrM59JOtNxYAOHoojddO10Z8r+4sOqJA2MaU NV5oLDUSvwPZohL9/RwVVg48PZXPDF9yeMN6Ms/xFjjS0oifzeDzB30QKjslg3LvZGkU Vz6g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=tUzjz0DaQh9V/E1AtSG5a0bXdcLZdXoyXVjvZ0SiJck=; b=uzCB25nxpySZ+VBc8hGBoN7BMtBrxIXaEj1Krqfw0W94BImTHMrhJnlfoFHT4kC1ZQ /dz3FPBz2p9rvWlkGJVzjZhvO2wrmWK6Rva/Fbm2rCKSEETmSKlGTWQ17yhggy0F7Rst 2IniyldjedzWX7rlFsSnHu+JsoWI21dHG6MptcHznkvOXXXcO6FSJXLtAJbjVw+En18X vtPmUIgWlCmxnFt1UvY70TSrZuhzW8S0FFQ+mZgtN9aHLj1f+IWmdfN8F2qRpfGluheh 9lGfuOpBm2XCkVOu4UR8i/3hMAqpDEemXwj8cMvnKr1a3707SZQ8XTB6jAc4wbKhgSAD 6Fug== X-Gm-Message-State: AOAM531FRYr+InP8uElb8G+FseighWVPNudr2e9FD2g/Ld6WIfwoYqXP XpfhUtiQwdgujBvJ99rPCBH+eA== X-Google-Smtp-Source: ABdhPJyx3TZEc/nQYW9X8iTzhxot4otGKCDhUbjDAhFp1Xo5P2o19JIZcTUZT0sRxq0pDK3vqcDoew== X-Received: by 2002:a1c:a942:: with SMTP id s63mr2489571wme.45.1631629467420; Tue, 14 Sep 2021 07:24:27 -0700 (PDT) From: Jean-Philippe Brucker To: eric.auger@redhat.com Subject: [PATCH v3 06/10] tests/acpi: allow updates of VIOT expected data files Date: Tue, 14 Sep 2021 15:20:01 +0100 Message-Id: <20210914142004.2433568-7-jean-philippe@linaro.org> X-Mailer: git-send-email 2.33.0 In-Reply-To: <20210914142004.2433568-1-jean-philippe@linaro.org> References: <20210914142004.2433568-1-jean-philippe@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=2a00:1450:4864:20::334; envelope-from=jean-philippe@linaro.org; helo=mail-wm1-x334.google.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, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: peter.maydell@linaro.org, ehabkost@redhat.com, mst@redhat.com, richard.henderson@linaro.org, qemu-devel@nongnu.org, shannon.zhaosl@gmail.com, Jean-Philippe Brucker , qemu-arm@nongnu.org, pbonzini@redhat.com, ani@anisinha.ca, imammedo@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1631630520297100003 Content-Type: text/plain; charset="utf-8" Create empty data files and allow updates for the upcoming VIOT tests. Signed-off-by: Jean-Philippe Brucker --- tests/qtest/bios-tables-test-allowed-diff.h | 3 +++ tests/data/acpi/q35/DSDT.viot | 0 tests/data/acpi/q35/VIOT.viot | 0 tests/data/acpi/virt/VIOT | 0 4 files changed, 3 insertions(+) create mode 100644 tests/data/acpi/q35/DSDT.viot create mode 100644 tests/data/acpi/q35/VIOT.viot create mode 100644 tests/data/acpi/virt/VIOT diff --git a/tests/qtest/bios-tables-test-allowed-diff.h b/tests/qtest/bios= -tables-test-allowed-diff.h index dfb8523c8b..29b5b1eabc 100644 --- a/tests/qtest/bios-tables-test-allowed-diff.h +++ b/tests/qtest/bios-tables-test-allowed-diff.h @@ -1 +1,4 @@ /* List of comma-separated changed AML files to ignore */ +"tests/data/acpi/virt/VIOT", +"tests/data/acpi/q35/DSDT.viot", +"tests/data/acpi/q35/VIOT.viot", diff --git a/tests/data/acpi/q35/DSDT.viot b/tests/data/acpi/q35/DSDT.viot new file mode 100644 index 0000000000..e69de29bb2 diff --git a/tests/data/acpi/q35/VIOT.viot b/tests/data/acpi/q35/VIOT.viot new file mode 100644 index 0000000000..e69de29bb2 diff --git a/tests/data/acpi/virt/VIOT b/tests/data/acpi/virt/VIOT new file mode 100644 index 0000000000..e69de29bb2 --=20 2.33.0 From nobody Fri Apr 19 21:41:59 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; 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=fail(p=none dis=none) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1631631812089414.2673043137431; Tue, 14 Sep 2021 08:03:32 -0700 (PDT) Received: from localhost ([::1]:36380 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mQ9y6-0000hh-My for importer@patchew.org; Tue, 14 Sep 2021 11:03:30 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:36068) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mQ9MW-0006Fe-PX for qemu-devel@nongnu.org; Tue, 14 Sep 2021 10:24:45 -0400 Received: from mail-wm1-x32d.google.com ([2a00:1450:4864:20::32d]:42825) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1mQ9MP-0005Ri-BS for qemu-devel@nongnu.org; Tue, 14 Sep 2021 10:24:40 -0400 Received: by mail-wm1-x32d.google.com with SMTP id u19-20020a7bc053000000b002f8d045b2caso2706290wmc.1 for ; Tue, 14 Sep 2021 07:24:29 -0700 (PDT) Received: from localhost.localdomain (cpc92880-cmbg19-2-0-cust679.5-4.cable.virginm.net. [82.27.106.168]) by smtp.gmail.com with ESMTPSA id k6sm184252wmo.37.2021.09.14.07.24.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 14 Sep 2021 07:24:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=3D6Y3PvRWCDvWbbifCcyvKIH074CbOWIFebtpK8KpRk=; b=wHr8Bc/xfufFLw8hn6VUZNdbS2j4KdCkE9Nmy6YtCnuWrPpIdid1/7QYAFo/eV1MMM 6nHglWfTlQnzP0PUU0pAvRTECKHwpZjcdFoLNNR5dHUOAXaltaD1h8JeXd/7OWOaNa0U rC+VGI1vUk4SL2t1naba0qh6QNvE99Csa41CjhnF1i1ZNLh4he79EAG4tDQ8zL15w1Je DCiJFUl4II6iHot7PbZEkhgvGWWgyGlhBlFU7TnjtKBOjYiQEHGlFBmKZDO7NYN2QZXt WiNTUUE73OlIh03zS4s+U7nZo3DM5PY66c4BW+FRu3ULU8biC64fFuKeJUDnN7gLcPrb HMbg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=3D6Y3PvRWCDvWbbifCcyvKIH074CbOWIFebtpK8KpRk=; b=lWoNs+bnXuqLvSC1lSt9Xsf+sCJD1tGS0JnNB6jNe926lne1o8o9eu5qND8uqIrkOj 6PxYk4e/kw8EujfsKOzgQATH+kDuzIiZyQkr6SfwzJDiT0s5QI6q/s/PDvgAMW4lgC6O zA/xw6BW+r054EMYYPvqkZyQ+44ZG2FAt7RPN+gOv93DK1iMd73/luBTjtP/5ea3kFlW V6p3ncEu/qQxtcIrfG4XQJ3Yh/jmbPqJkWT1BLzQyxmNDgs0BP5uULa7mQCMD1dq0Qai ICJlZz7m+kTeSNf56JdntLOrHASMRAW7JbnOIWLvexTIcY2Gpw/gDhdQSgUeYrnxn2Qp g1qw== X-Gm-Message-State: AOAM5332O7j1Bsyshr+48bFeWSTstdph+F7qtiACo0qjTAZ+nZHjwZeQ yyH5NBp3s5OGrlMQym+uz4jjjg== X-Google-Smtp-Source: ABdhPJyBlpSFt6T92TRgSuVAMBbcTwjZGGpL8ah9c31hPUdxK5xQz9BnGxnaZoxqXsvDUf8VEQ+1NQ== X-Received: by 2002:a05:600c:4f13:: with SMTP id l19mr2532533wmq.39.1631629468447; Tue, 14 Sep 2021 07:24:28 -0700 (PDT) From: Jean-Philippe Brucker To: eric.auger@redhat.com Subject: [PATCH v3 07/10] tests/acpi: add test cases for VIOT Date: Tue, 14 Sep 2021 15:20:02 +0100 Message-Id: <20210914142004.2433568-8-jean-philippe@linaro.org> X-Mailer: git-send-email 2.33.0 In-Reply-To: <20210914142004.2433568-1-jean-philippe@linaro.org> References: <20210914142004.2433568-1-jean-philippe@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=2a00:1450:4864:20::32d; envelope-from=jean-philippe@linaro.org; helo=mail-wm1-x32d.google.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, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, 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.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: peter.maydell@linaro.org, ehabkost@redhat.com, mst@redhat.com, richard.henderson@linaro.org, qemu-devel@nongnu.org, shannon.zhaosl@gmail.com, Jean-Philippe Brucker , qemu-arm@nongnu.org, pbonzini@redhat.com, ani@anisinha.ca, imammedo@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1631631864988100001 Content-Type: text/plain; charset="utf-8" Add two test cases for VIOT, one on the q35 machine and the other on virt. To test complex topologies the q35 test has two PCIe buses that bypass the IOMMU (and are therefore not described by VIOT), and two buses that are translated by virtio-iommu. Signed-off-by: Jean-Philippe Brucker --- tests/qtest/bios-tables-test.c | 39 ++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/tests/qtest/bios-tables-test.c b/tests/qtest/bios-tables-test.c index 4f11d03055..f8bfe2f247 100644 --- a/tests/qtest/bios-tables-test.c +++ b/tests/qtest/bios-tables-test.c @@ -1403,6 +1403,43 @@ static void test_acpi_virt_tcg(void) free_test_data(&data); } =20 +static void test_acpi_q35_viot(void) +{ + test_data data =3D { + .machine =3D MACHINE_Q35, + .variant =3D ".viot", + .blkdev =3D "virtio-blk,bus=3Dpcie.0", + }; + + /* + * To keep things interesting, two buses bypass the IOMMU. + * VIOT should only describes the other two buses. + */ + test_acpi_one("-machine default_bus_bypass_iommu=3Don " + "-device virtio-iommu " + "-device pxb-pcie,bus_nr=3D0x10,id=3Dpcie.100,bus=3Dpcie= .0 " + "-device pxb-pcie,bus_nr=3D0x20,id=3Dpcie.200,bus=3Dpcie= .0,bypass_iommu=3Don " + "-device pxb-pcie,bus_nr=3D0x30,id=3Dpcie.300,bus=3Dpcie= .0", + &data); + free_test_data(&data); +} + +static void test_acpi_virt_viot(void) +{ + test_data data =3D { + .machine =3D "virt", + .uefi_fl1 =3D "pc-bios/edk2-aarch64-code.fd", + .uefi_fl2 =3D "pc-bios/edk2-arm-vars.fd", + .cd =3D "tests/data/uefi-boot-images/bios-tables-test.aarch64.iso.= qcow2", + .ram_start =3D 0x40000000ULL, + .scan_len =3D 128ULL * 1024 * 1024, + }; + + test_acpi_one("-cpu cortex-a57 " + "-device virtio-iommu", &data); + free_test_data(&data); +} + static void test_oem_fields(test_data *data) { int i; @@ -1567,12 +1604,14 @@ int main(int argc, char *argv[]) if (strcmp(arch, "x86_64") =3D=3D 0) { qtest_add_func("acpi/microvm/pcie", test_acpi_microvm_pcie_tcg= ); } + qtest_add_func("acpi/q35/viot", test_acpi_q35_viot); } else if (strcmp(arch, "aarch64") =3D=3D 0) { qtest_add_func("acpi/virt", test_acpi_virt_tcg); qtest_add_func("acpi/virt/numamem", test_acpi_virt_tcg_numamem); qtest_add_func("acpi/virt/memhp", test_acpi_virt_tcg_memhp); qtest_add_func("acpi/virt/pxb", test_acpi_virt_tcg_pxb); qtest_add_func("acpi/virt/oem-fields", test_acpi_oem_fields_virt); + qtest_add_func("acpi/virt/viot", test_acpi_virt_viot); } ret =3D g_test_run(); boot_sector_cleanup(disk); --=20 2.33.0 From nobody Fri Apr 19 21:41:59 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; 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=fail(p=none dis=none) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1631630861836671.08560517621; Tue, 14 Sep 2021 07:47:41 -0700 (PDT) Received: from localhost ([::1]:48714 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mQ9im-0004Hw-OU for importer@patchew.org; Tue, 14 Sep 2021 10:47:40 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:36064) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mQ9MW-0006Fd-Ms for qemu-devel@nongnu.org; Tue, 14 Sep 2021 10:24:45 -0400 Received: from mail-wr1-x42a.google.com ([2a00:1450:4864:20::42a]:34351) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1mQ9MP-0005Sf-Bi for qemu-devel@nongnu.org; Tue, 14 Sep 2021 10:24:40 -0400 Received: by mail-wr1-x42a.google.com with SMTP id m9so20580157wrb.1 for ; Tue, 14 Sep 2021 07:24:30 -0700 (PDT) Received: from localhost.localdomain (cpc92880-cmbg19-2-0-cust679.5-4.cable.virginm.net. [82.27.106.168]) by smtp.gmail.com with ESMTPSA id k6sm184252wmo.37.2021.09.14.07.24.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 14 Sep 2021 07:24:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=LXRO/fMo8Qw/FWNF0Yyw4kfLM8T681YtQWZQBpSYMfI=; b=FcrIK37uUm4KIYpc7QpeNcnzXcdOujY9YJ1V0t1q30dpOZBRN+VKE4HlRcoto0Pz26 K5TBk81lWT6CzthL6Yan4kOnr2O7AAsyiwQHzKBDQ+0SkL5s997QUJOEViYOiIhbp/LQ zYMORnsm227uXGa1dC6UQv2Ro2EQ8Sva6DqBlfs/r9y6nnwt1d1FzNUXr5+BVOftERDd +zN0ZF0rQBcv3bqixHoGmqmOK5vircvKSLYsn932Fj3DLBI39SRGW9L9njxTZPFioQRY S9U172Jt8Rc+6ujqRyCjCKct9Nayavmx4YSF5h1p19QcSNPhuhWPPwIfeR9zajIkgUGT F12g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=LXRO/fMo8Qw/FWNF0Yyw4kfLM8T681YtQWZQBpSYMfI=; b=EAXILB+cCGfzcDe/RKltcTQhuSrGcPsWYReVQRCstWkb9xbvZ/QF7DNax/zjM+wZ3Q B51HNrypsnvL2OOGvcSJCya9fB5IZP5V9X+GSn25I5NkID8ySd1q4hyueIsZj3M7Jju/ 9BfAlmKn2PQ/eytN7pmL4q9v8286HjK1bZAYR1pNpznPF63bWY4eJ+6F0julqdbyvm/5 n1cfSHpqS0HWswp3alapsxjLG8ytrhXUOU29+w0Tr0o2bI3dvTUcgF6Mj1JckP3gym36 ZE9NJ1vZRre3z8fJfiyvZ8XrP8+05Ib2NAzqoasvdzfSWvbTzS1vJzFdoPBF/VMtaIdm OoFg== X-Gm-Message-State: AOAM533cgSeT3NFVGWzII1vBp86CUhIgODA5/+LQNxoTEQEHbqc+TtzM fIdQ23PJKd5WD0JuttIXTJ+xiw== X-Google-Smtp-Source: ABdhPJzDWJ/cZ14N6HEUgdVP3iaGbMAmcGyVhP4jFmE0ZvJxsnNzTthahxaz55EGD8/V2HOULnnfOQ== X-Received: by 2002:a5d:54cf:: with SMTP id x15mr19760414wrv.27.1631629469533; Tue, 14 Sep 2021 07:24:29 -0700 (PDT) From: Jean-Philippe Brucker To: eric.auger@redhat.com Subject: [PATCH v3 08/10] tests/acpi: add expected VIOT blob for virt machine Date: Tue, 14 Sep 2021 15:20:03 +0100 Message-Id: <20210914142004.2433568-9-jean-philippe@linaro.org> X-Mailer: git-send-email 2.33.0 In-Reply-To: <20210914142004.2433568-1-jean-philippe@linaro.org> References: <20210914142004.2433568-1-jean-philippe@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=2a00:1450:4864:20::42a; envelope-from=jean-philippe@linaro.org; helo=mail-wr1-x42a.google.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, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, 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.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: peter.maydell@linaro.org, ehabkost@redhat.com, mst@redhat.com, richard.henderson@linaro.org, qemu-devel@nongnu.org, shannon.zhaosl@gmail.com, Jean-Philippe Brucker , qemu-arm@nongnu.org, pbonzini@redhat.com, ani@anisinha.ca, imammedo@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1631630862375100001 Content-Type: text/plain; charset="utf-8" The VIOT blob contains the following: [000h 0000 4] Signature : "VIOT" [Virtual I/O Trans= lation Table] [004h 0004 4] Table Length : 00000058 [008h 0008 1] Revision : 00 [009h 0009 1] Checksum : 66 [00Ah 0010 6] Oem ID : "BOCHS " [010h 0016 8] Oem Table ID : "BXPC " [018h 0024 4] Oem Revision : 00000001 [01Ch 0028 4] Asl Compiler ID : "BXPC" [020h 0032 4] Asl Compiler Revision : 00000001 [024h 0036 2] Node count : 0002 [026h 0038 2] Node offset : 0030 [028h 0040 8] Reserved : 0000000000000000 [030h 0048 1] Type : 03 [VirtIO-PCI IOMMU] [031h 0049 1] Reserved : 00 [032h 0050 2] Length : 0010 [034h 0052 2] PCI Segment : 0000 [036h 0054 2] PCI BDF number : 0008 [038h 0056 8] Reserved : 0000000000000000 [040h 0064 1] Type : 01 [PCI Range] [041h 0065 1] Reserved : 00 [042h 0066 2] Length : 0018 [044h 0068 4] Endpoint start : 00000000 [048h 0072 2] PCI Segment start : 0000 [04Ah 0074 2] PCI Segment end : 0000 [04Ch 0076 2] PCI BDF start : 0000 [04Eh 0078 2] PCI BDF end : 00FF [050h 0080 2] Output node : 0030 [052h 0082 6] Reserved : 000000000000 Signed-off-by: Jean-Philippe Brucker --- tests/qtest/bios-tables-test-allowed-diff.h | 1 - tests/data/acpi/virt/VIOT | Bin 0 -> 88 bytes 2 files changed, 1 deletion(-) diff --git a/tests/qtest/bios-tables-test-allowed-diff.h b/tests/qtest/bios= -tables-test-allowed-diff.h index 29b5b1eabc..fa213e4738 100644 --- a/tests/qtest/bios-tables-test-allowed-diff.h +++ b/tests/qtest/bios-tables-test-allowed-diff.h @@ -1,4 +1,3 @@ /* List of comma-separated changed AML files to ignore */ -"tests/data/acpi/virt/VIOT", "tests/data/acpi/q35/DSDT.viot", "tests/data/acpi/q35/VIOT.viot", diff --git a/tests/data/acpi/virt/VIOT b/tests/data/acpi/virt/VIOT index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..921f40d88c28ba2171a4d664e11= 9914335309e7d 100644 GIT binary patch literal 88 zcmWIZ^bd((0D?3pe`k+i1*eDrX9XZ&1PX!JAexE60Hgv8m>C3sGzXN&z`)2L0cSHX I{D-Rq0Q5fy0RR91 literal 0 HcmV?d00001 --=20 2.33.0 From nobody Fri Apr 19 21:41:59 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; 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=fail(p=none dis=none) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1631630645306344.4951606293239; Tue, 14 Sep 2021 07:44:05 -0700 (PDT) Received: from localhost ([::1]:39210 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mQ9fI-00067V-8r for importer@patchew.org; Tue, 14 Sep 2021 10:44:04 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:36160) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mQ9Mb-0006HG-27 for qemu-devel@nongnu.org; Tue, 14 Sep 2021 10:24:45 -0400 Received: from mail-wm1-x335.google.com ([2a00:1450:4864:20::335]:44859) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1mQ9MP-0005Sv-DI for qemu-devel@nongnu.org; Tue, 14 Sep 2021 10:24:42 -0400 Received: by mail-wm1-x335.google.com with SMTP id l7-20020a1c2507000000b002e6be5d86b3so2696383wml.3 for ; Tue, 14 Sep 2021 07:24:31 -0700 (PDT) Received: from localhost.localdomain (cpc92880-cmbg19-2-0-cust679.5-4.cable.virginm.net. [82.27.106.168]) by smtp.gmail.com with ESMTPSA id k6sm184252wmo.37.2021.09.14.07.24.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 14 Sep 2021 07:24:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=wKfJjTFn5vxla8NE6T/sxv12ovVS50vMdtG+woUrZAU=; b=oEMPbWZx6dlrcCMtEsEXw/61KeMil2j6OgmuGqXws4wJngU6rJZ5Gos8/0UXrBl4vb 5+IyMgoAXckKl6yh1B8qWssYSPs2Y4N+g9cAizJ+CKQMZh2olCZlfDY8h92ys7QheteV cYJy8o7ZJEDy4eh3Udv0D/wC/OPUo3vFD7zWxtY7YR1aWk4+G8zzVxRmASyk+fr03jGe zkMQTV8D5UBly4zxTL+LwQzJjFZW2nmu2hzfLqRn4PhEDllsAYrRnW5HS7k1TeoOCpf+ 4JvF0Mp9jmJJ3LUjOwc9uiFVEtNwO6DMfSF4NyLBLUNbGdX89hgx+QRz0qaQbgAOTk8r CObw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=wKfJjTFn5vxla8NE6T/sxv12ovVS50vMdtG+woUrZAU=; b=11BG8+Ukhjq4/Q55RRf1OBc+4yO7fHOGN7M5/THT0wxPqJMtiHRqrqyUiyX4+BnRs3 Dnu9QfQ6ADEIvWAfAkBnRUZzrxLMvPpV0fKUj0z6VWPFjCAF7JGSBsxC8aoye228iqOh 8BMd7UBlcLw74qWEsU/Y1FdNv0t6RLoA3n514PE7oas9ZSsJ9IA7Kj0UlJJA6pVmYu9I R5f42I6D18qvcS7+Gezg3T0zjvI3FP6kVgm6deEzJUcT7AqxEnbBnxP5l3ntMpNPzxlX hUtMJ2PUTEApRVM4gB7mDFspaDPMuMyf2Sw/W7LpjmQ44Oqa5aEoK7NC6CX52Lf75l38 SpAw== X-Gm-Message-State: AOAM532TEKaz7RIxm98jUXJ7PPjSo+IF0y4cVUPDsn/gvkVpj8EbORJm 60aYHH2tMIZceETYVWInVmWFBA== X-Google-Smtp-Source: ABdhPJyWWz+BQx5ak80JVYsf5MZhD8G1pl+g/G9zJqNvwX479WX6IeRv9xYXsZTOyg9lJWP2+RbgSg== X-Received: by 2002:a05:600c:2e43:: with SMTP id q3mr2513571wmf.119.1631629470720; Tue, 14 Sep 2021 07:24:30 -0700 (PDT) From: Jean-Philippe Brucker To: eric.auger@redhat.com Subject: [PATCH v3 09/10] tests/acpi: add expected DSDT blob for VIOT test on q35 Date: Tue, 14 Sep 2021 15:20:04 +0100 Message-Id: <20210914142004.2433568-10-jean-philippe@linaro.org> X-Mailer: git-send-email 2.33.0 In-Reply-To: <20210914142004.2433568-1-jean-philippe@linaro.org> References: <20210914142004.2433568-1-jean-philippe@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=2a00:1450:4864:20::335; envelope-from=jean-philippe@linaro.org; helo=mail-wm1-x335.google.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, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, 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.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: peter.maydell@linaro.org, ehabkost@redhat.com, mst@redhat.com, richard.henderson@linaro.org, qemu-devel@nongnu.org, shannon.zhaosl@gmail.com, Jean-Philippe Brucker , qemu-arm@nongnu.org, pbonzini@redhat.com, ani@anisinha.ca, imammedo@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1631630645979100003 Content-Type: text/plain; charset="utf-8" The VIOT test instantiates two virtio devices and PCIe expander bridges, so the DSDT has additional blocks: + Scope (\_SB) + { + Device (PC30) + { + Name (_UID, 0x30) // _UID: Unique ID + Name (_BBN, 0x30) // _BBN: BIOS Bus Number + Name (_HID, EisaId ("PNP0A08") /* PCI Express Bus */) // _HID= : Hardware ID + Name (_CID, EisaId ("PNP0A03") /* PCI Bus */) // _CID: Compat= ible ID + Method (_OSC, 4, NotSerialized) // _OSC: Operating System Cap= abilities + { + CreateDWordField (Arg3, Zero, CDW1) + If ((Arg0 =3D=3D ToUUID ("33db4d5b-1ff7-401c-9657-7441c03d= d766") /* PCI Host Bridge Device */)) + { + CreateDWordField (Arg3, 0x04, CDW2) + CreateDWordField (Arg3, 0x08, CDW3) + Local0 =3D CDW3 /* \_SB_.PC30._OSC.CDW3 */ + Local0 &=3D 0x1F + If ((Arg1 !=3D One)) + { + CDW1 |=3D 0x08 + } + + If ((CDW3 !=3D Local0)) + { + CDW1 |=3D 0x10 + } + + CDW3 =3D Local0 + } + Else + { + CDW1 |=3D 0x04 + } + + Return (Arg3) + } + + Method (_PRT, 0, NotSerialized) // _PRT: PCI Routing Table + { + Local0 =3D Package (0x80){} + Local1 =3D Zero + While ((Local1 < 0x80)) + { + Local2 =3D (Local1 >> 0x02) + Local3 =3D ((Local1 + Local2) & 0x03) + If ((Local3 =3D=3D Zero)) + { + Local4 =3D Package (0x04) + { + Zero, + Zero, + LNKD, + Zero + } + } + + If ((Local3 =3D=3D One)) + { + Local4 =3D Package (0x04) + { + Zero, + Zero, + LNKA, + Zero + } + } + + If ((Local3 =3D=3D 0x02)) + { + Local4 =3D Package (0x04) + { + Zero, + Zero, + LNKB, + Zero + } + } + + If ((Local3 =3D=3D 0x03)) + { + Local4 =3D Package (0x04) + { + Zero, + Zero, + LNKC, + Zero + } + } + + Local4 [Zero] =3D ((Local2 << 0x10) | 0xFFFF) + Local4 [One] =3D (Local1 & 0x03) + Local0 [Local1] =3D Local4 + Local1++ + } + + Return (Local0) + } + + Name (_CRS, ResourceTemplate () // _CRS: Current Resource Set= tings + { + WordBusNumber (ResourceProducer, MinFixed, MaxFixed, PosDe= code, + 0x0000, // Granularity + 0x0030, // Range Minimum + 0x0030, // Range Maximum + 0x0000, // Translation Offset + 0x0001, // Length + ,, ) + }) + } + } + + Scope (\_SB) + { + Device (PC20) + { + Name (_UID, 0x20) // _UID: Unique ID + Name (_BBN, 0x20) // _BBN: BIOS Bus Number + Name (_HID, EisaId ("PNP0A08") /* PCI Express Bus */) // _HID= : Hardware ID + Name (_CID, EisaId ("PNP0A03") /* PCI Bus */) // _CID: Compat= ible ID + Method (_OSC, 4, NotSerialized) // _OSC: Operating System Cap= abilities + { + CreateDWordField (Arg3, Zero, CDW1) + If ((Arg0 =3D=3D ToUUID ("33db4d5b-1ff7-401c-9657-7441c03d= d766") /* PCI Host Bridge Device */)) + { + CreateDWordField (Arg3, 0x04, CDW2) + CreateDWordField (Arg3, 0x08, CDW3) + Local0 =3D CDW3 /* \_SB_.PC20._OSC.CDW3 */ + Local0 &=3D 0x1F + If ((Arg1 !=3D One)) + { + CDW1 |=3D 0x08 + } + + If ((CDW3 !=3D Local0)) + { + CDW1 |=3D 0x10 + } + + CDW3 =3D Local0 + } + Else + { + CDW1 |=3D 0x04 + } + + Return (Arg3) + } + + Method (_PRT, 0, NotSerialized) // _PRT: PCI Routing Table + { + Local0 =3D Package (0x80){} + Local1 =3D Zero + While ((Local1 < 0x80)) + { + Local2 =3D (Local1 >> 0x02) + Local3 =3D ((Local1 + Local2) & 0x03) + If ((Local3 =3D=3D Zero)) + { + Local4 =3D Package (0x04) + { + Zero, + Zero, + LNKD, + Zero + } + } + + If ((Local3 =3D=3D One)) + { + Local4 =3D Package (0x04) + { + Zero, + Zero, + LNKA, + Zero + } + } + + If ((Local3 =3D=3D 0x02)) + { + Local4 =3D Package (0x04) + { + Zero, + Zero, + LNKB, + Zero + } + } + + If ((Local3 =3D=3D 0x03)) + { + Local4 =3D Package (0x04) + { + Zero, + Zero, + LNKC, + Zero + } + } + + Local4 [Zero] =3D ((Local2 << 0x10) | 0xFFFF) + Local4 [One] =3D (Local1 & 0x03) + Local0 [Local1] =3D Local4 + Local1++ + } + + Return (Local0) + } + + Name (_CRS, ResourceTemplate () // _CRS: Current Resource Set= tings + { + WordBusNumber (ResourceProducer, MinFixed, MaxFixed, PosDe= code, + 0x0000, // Granularity + 0x0020, // Range Minimum + 0x0020, // Range Maximum + 0x0000, // Translation Offset + 0x0001, // Length + ,, ) + }) + } + } + + Scope (\_SB) + { + Device (PC10) + { + Name (_UID, 0x10) // _UID: Unique ID + Name (_BBN, 0x10) // _BBN: BIOS Bus Number + Name (_HID, EisaId ("PNP0A08") /* PCI Express Bus */) // _HID= : Hardware ID + Name (_CID, EisaId ("PNP0A03") /* PCI Bus */) // _CID: Compat= ible ID + Method (_OSC, 4, NotSerialized) // _OSC: Operating System Cap= abilities + { + CreateDWordField (Arg3, Zero, CDW1) + If ((Arg0 =3D=3D ToUUID ("33db4d5b-1ff7-401c-9657-7441c03d= d766") /* PCI Host Bridge Device */)) + { + CreateDWordField (Arg3, 0x04, CDW2) + CreateDWordField (Arg3, 0x08, CDW3) + Local0 =3D CDW3 /* \_SB_.PC10._OSC.CDW3 */ + Local0 &=3D 0x1F + If ((Arg1 !=3D One)) + { + CDW1 |=3D 0x08 + } + + If ((CDW3 !=3D Local0)) + { + CDW1 |=3D 0x10 + } + + CDW3 =3D Local0 + } + Else + { + CDW1 |=3D 0x04 + } + + Return (Arg3) + } + + Method (_PRT, 0, NotSerialized) // _PRT: PCI Routing Table + { + Local0 =3D Package (0x80){} + Local1 =3D Zero + While ((Local1 < 0x80)) + { + Local2 =3D (Local1 >> 0x02) + Local3 =3D ((Local1 + Local2) & 0x03) + If ((Local3 =3D=3D Zero)) + { + Local4 =3D Package (0x04) + { + Zero, + Zero, + LNKD, + Zero + } + } + + If ((Local3 =3D=3D One)) + { + Local4 =3D Package (0x04) + { + Zero, + Zero, + LNKA, + Zero + } + } + + If ((Local3 =3D=3D 0x02)) + { + Local4 =3D Package (0x04) + { + Zero, + Zero, + LNKB, + Zero + } + } + + If ((Local3 =3D=3D 0x03)) + { + Local4 =3D Package (0x04) + { + Zero, + Zero, + LNKC, + Zero + } + } + + Local4 [Zero] =3D ((Local2 << 0x10) | 0xFFFF) + Local4 [One] =3D (Local1 & 0x03) + Local0 [Local1] =3D Local4 + Local1++ + } + + Return (Local0) + } + + Name (_CRS, ResourceTemplate () // _CRS: Current Resource Set= tings + { + WordBusNumber (ResourceProducer, MinFixed, MaxFixed, PosDe= code, + 0x0000, // Granularity + 0x0010, // Range Minimum + 0x0010, // Range Maximum + 0x0000, // Translation Offset + 0x0001, // Length + ,, ) + }) + } + } + Scope (\_SB.PCI0) { Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings { WordBusNumber (ResourceProducer, MinFixed, MaxFixed, PosDecode, 0x0000, // Granularity 0x0000, // Range Minimum - 0x00FF, // Range Maximum + 0x000F, // Range Maximum 0x0000, // Translation Offset - 0x0100, // Length + 0x0010, // Length ,, ) [...] + Device (S10) + { + Name (_ADR, 0x00020000) // _ADR: Address + } + + Device (S18) + { + Name (_ADR, 0x00030000) // _ADR: Address + } + + Device (S20) + { + Name (_ADR, 0x00040000) // _ADR: Address + } + + Device (S28) + { + Name (_ADR, 0x00050000) // _ADR: Address + } + + Device (S30) + { + Name (_ADR, 0x00060000) // _ADR: Address + } + Method (PCNT, 0, NotSerialized) { } } } } Signed-off-by: Jean-Philippe Brucker --- tests/qtest/bios-tables-test-allowed-diff.h | 1 - tests/data/acpi/q35/DSDT.viot | Bin 0 -> 9415 bytes 2 files changed, 1 deletion(-) diff --git a/tests/qtest/bios-tables-test-allowed-diff.h b/tests/qtest/bios= -tables-test-allowed-diff.h index fa213e4738..27ab8d3ba8 100644 --- a/tests/qtest/bios-tables-test-allowed-diff.h +++ b/tests/qtest/bios-tables-test-allowed-diff.h @@ -1,3 +1,2 @@ /* List of comma-separated changed AML files to ignore */ -"tests/data/acpi/q35/DSDT.viot", "tests/data/acpi/q35/VIOT.viot", diff --git a/tests/data/acpi/q35/DSDT.viot b/tests/data/acpi/q35/DSDT.viot index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..8308c1e4ea7751a7389fcf7b91e= da15168bf1460 100644 GIT binary patch literal 9415 zcmeHNO>7&-8J*>ymdlm2q$taOi3lg@UxI{^^4As(Lhe!|Es>%~Do#KHTuMqSJ1MeA zVjzxTKvsan@u6tKI_QxO6ri{E)N2DYKvAFv9||-;Pd)UKYf;3fsPCKEk!DB=3Dh)%sk z0(SSCeQ&;bvpf5Sv+K3I_Fo=3Dl%y^=3D>=3D2lv{;>!&;hd+ZcM#r>wsPwavh?=3D)fsWbz8-5 zXV0}7ZZ&UqD^<@f+_y}#>x!eO*)4cYW_CBK9?Pyybk|yL?9OY<^)4+8>hbVr_pIaEreB9@! zMVUiq0-s9m*`kQ5TG)TBv-iB$EV#UllZ|>K@8%cKF1OiA&s*m|m}AVQ&Y{0Q92^|{ zNgOigI&*5KP+2l7jZ#~xG@y-Cb#^O_c8%GL-Tx-VVx3zK#WOFJ>RztV^t!q1v)xv^ zzyd1q11jph>syXLus`bitna4|4))n#>Z5*-{ibKLfBiSU&-Sfp(YCZT^?s7ta{n6^ zV+^hN-jmcC>hI3p*=3DnoM zra5iRmJOfz%rMHvHrvMjLIl}5dym%EHV#?SGaAdZ;uolgI(v(&jrM}9J0`BTpgl6C+HJV4wvqb6woF_a3S9KvMh+V<*V%2AE@Bk?&9-piQWUtweCZ-i6zjF7k@~x! zQQ#Kq8?{`c>b;!n7{yh0g=3DHUWxTTAc&Lb2Z90WUr2(BAf7}e4FJ{9k??BfM+#-XUL zfHr=3DJ^|M~0;k9a0gVk_o+<)$`|870=3DZtbJFuWD!h?A8LR>-AsygGc&T+2Bn7iWR{K zxXJG$8@KHN+fPT0TeM;K<_5FjnPp9%K7Gvr%=3DIS=3DR1iZv;COIlp?v zpqs^Uzv2VA(QG#|D{t*)QZd|}Y_+~pV&d4q@iNQURBlBOlw}Y_P+^(L7}|l6ByeFw zEC8p(InD!AhQvhu92?E=3DN@!Ft0p(1D#FSYu zt^}6X6XQ$?jR~e~JVI4xT+I@6lYw5}7OsxzbM%xF3@x=3Dw_u&KXVTjHYu&*NITonbmY=3DHJw>qCqh-{tfq5T z(>bf_M5yXKrRhAS=3D{%+DM5yY-OagbGd=3DAZNI_Gqq2vwb@HJzt5ou_r32vwbDII|Ew z3D0n5F?`sa5lr_eB&HW)&uYxG8uP5qM5r>)Y0PsP^PJ8^s4~xM%<~%ayv{_ZG9S{I z4{6MYbS6TT`7mcnmwA{oN5GARsH;J76jj99XL29gTsp@AZl(qNzhD-BeEl7R~7p@AYqYovh+ zY#32a)j$RG&_EHQMH~wQ71%HeHF78!sDR2))d>R?)p8~bRDqI#B9yL328vMXgnf}L@|f}LawZul zLa7r5DzKah16818paRO7WS|J8P8g`bawZH^fs%m=3DC})y^B9uB|paRR8Fi-_b1}dPO zNd}5g>V$y`EN8+%6(|{~fN~}oC_Az;Y%GRDqI# z3Mglifg+STVW0xbnJ`cVN(L&RoJj_XQ0jz%3M^;BKouw%sDN@N87M-j69y``0?L_Wpa`W-7$_peKoO}1icmFBgo=3DSGOc{}QpBH6cOpa^B(l7S+`QqkEiER+rGKL4@0 zPd`ZSC1_XZ-1^B=3DQTmlis~WW4VKkcS1vu_{kv1-EJdnNLqysSgt@$yb7|vpZB~#j&jhH+HOPMn`Bw6H70v z6PP0uE;S@_o;cg7iZ-yr^Rxh&Cd>v??nt;|6vgxi@ZLynl zZ0+)rX}p_^zJd~-7vj3B;LY;*0)ygDd|0)-Wy8q9h2S*)0c+R z$4-#Gq@*wL^rfNnrDM{U!t~3->EkCzzpSKR=3DINJ*(k~yAemP8E9!{S)LHe?izRc5? zhtijiNnZ}rSBBG1oFIKgNnhdVD?{lk$E2?yeT*Ju!|5H7UOqf9t-x>>>$iGYHo=3DEH zb~LWT>V}80mDa1nTw|mUUq-4EWn-%wxvx*@)nQUIQk^IpTiwWgI;U5Mna)Uc zqD-&OId`<4y*J&e74fPCuT|_Q*8H8d7sT6%igo#D#lO)kwd7rDVQ|8mCf&wHuJXp) z!Ryz4k$dyix8At+=3DGLokv5w(3R#(Eib<(oR#+UY&wqavcAD%=3D@=3DU>{E-MRGx3JNUe zHcEBFt=3D3zH+pN80U;#W&n`MJVUAN|8kv&7msM{*7<^cB!?HtyctM#fGFe=3D1dzjT@F zL4!miCkt+)n$IufsTtzMQ9PS=3D+sm&+23CKEz3=3DAp`77B<0;~6hWap8~PsQY`4H8NM zX!(7(7|8MV>GH&Pecb8T~cH`kKxTB~gz)6L`WmXZ3=3DdBK%2eG^!b;ZlNL z9WF#Sk8NG&z31tk#`wn{h6nCzbD!>RjDT99olaRM!)gP~L$gzOY1&Sa7`AieYW5rk zPq|U*mhy`%9Pu=3De=3D$>-cVswfR{BTU=3DpJmw}1G~VeBM#pPiZ@nDLBp-{mTCy+;_PMd za4F0-+$B79@EozQD;Ddt8-3mTe|^Q9eK84ZYO^2{+2y09K5@5a?FR4mtO(l-ZoJvs z#P18XHE{Y{042qHACGNQfpJ(+KtZ~{Wkn84ieX9gu*AiPym@`oau~fIyS>d=3DaHEI1 zZ*Lnc*uL%4;Mn)Y6kyiM+@53+EUK_P{^_dX9i`T_i(%L1MAu^XUDuwlYvDCxyLKV$ zT1Rv(cHedF3A@%|G^6ErZEaRqH-AgaKc2Xlvi>Mja7XY@LJD|Vin$V%E0ZMgB|}P#XFf^FC2|Ra zfBJAS)~Ga^<0?TXjhS$b*7b$`g>9V1GvSAqk-oLm%_L$5+K%I=3DyBRZPMezKh=3Dovag zN}Qh_U53uylgpP}F%h0zFV!~SD~p82*Bxq$owyUHX`SO*{GslwB Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 163163061670456.411280367099494; Tue, 14 Sep 2021 07:43:36 -0700 (PDT) Received: from localhost ([::1]:37778 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mQ9ep-00059h-Ic for importer@patchew.org; Tue, 14 Sep 2021 10:43:35 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:36172) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mQ9Mb-0006He-Ko for qemu-devel@nongnu.org; Tue, 14 Sep 2021 10:24:45 -0400 Received: from mail-wm1-x333.google.com ([2a00:1450:4864:20::333]:41954) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1mQ9MQ-0005T2-3m for qemu-devel@nongnu.org; Tue, 14 Sep 2021 10:24:45 -0400 Received: by mail-wm1-x333.google.com with SMTP id g19-20020a1c9d13000000b003075062d4daso2734161wme.0 for ; Tue, 14 Sep 2021 07:24:33 -0700 (PDT) Received: from localhost.localdomain (cpc92880-cmbg19-2-0-cust679.5-4.cable.virginm.net. [82.27.106.168]) by smtp.gmail.com with ESMTPSA id k6sm184252wmo.37.2021.09.14.07.24.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 14 Sep 2021 07:24:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=f5XrvFDDkZUqLBW2jEoK6VwyJ0imWYKMpETpzgPB57g=; b=lNTA91agW+sX0Fk9Gfzir23NsmKvSnYl2JyYVcbA8pK+OhlBqlFKlG0igQLr8DIh2Z vi92CD8xg8rWHc9yUETTZow84894F/ol26wPsq8nKjWLnWeg+a6mYJH0S0xT0oLQQhyG 7kugnDNpuy4LpMf6XLd/zG5adCexR7ZCAfRsDq+20MarPHLjMJvf8ZB3ViR5kvTCLZPZ eUaYGJxZ4t/EjWsxUYqWz8sH8o/TASR2tVi+4Lq89Dx3d6CXq6PmQwZeyJ9ZtLlZ8eNS DHrjgGFVKqBI0qnMEsqg1XDPa9+S0/heGBs65HVkX6qt7HSAjwqw9ZfkUJywXCDtAsC/ flVA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=f5XrvFDDkZUqLBW2jEoK6VwyJ0imWYKMpETpzgPB57g=; b=OUPlFmcrBQM0kUQHjVpGFQjN/jBWesYyp1akH9aLKfZVh5MGZDmWMSJ3AMgTXZ4SIs 3WbqFJdSf4IYKqI93udcvvprUFaWE4A54I3tDxPapntjPC2N/LUV82+kyfZrvq/LTxpM yBgaC39jyoybCqZaBUfk69biGAPiMeRZhW0FIpy+Q0Xm1aRhI1WBxR1n3tSTFrPDfwQ/ 3kY6RVfqRoLlf9sxYe20nTfrdPUVTE50MkwtSyherVpjfMb5JNdGgPPUkhZLa163BuLj ItDM6T5JzHUJ7mhHL3QnDZmEWlejUKyXbeoyVqC5gRU7Et4/Kg5GwFmD2iOaV9zABqTS H25A== X-Gm-Message-State: AOAM533wMBbtqmNe4lMeGce/b/baa9XFc+Ak82vmgIv+ybjcjTTjoQoP +VZRSuMv2HPhneYHcjdNCCpjvg== X-Google-Smtp-Source: ABdhPJwlBBkPLdk99KypeO6Zf6He5n2D/lTs/Y8a0rHUC1b8Nw06UV8Vhuv9uKpD7cs8VSpHBajsNg== X-Received: by 2002:a1c:a78d:: with SMTP id q135mr2571767wme.36.1631629471748; Tue, 14 Sep 2021 07:24:31 -0700 (PDT) From: Jean-Philippe Brucker To: eric.auger@redhat.com Subject: [PATCH v3 10/10] tests/acpi: add expected VIOT blob for q35 machine Date: Tue, 14 Sep 2021 15:20:05 +0100 Message-Id: <20210914142004.2433568-11-jean-philippe@linaro.org> X-Mailer: git-send-email 2.33.0 In-Reply-To: <20210914142004.2433568-1-jean-philippe@linaro.org> References: <20210914142004.2433568-1-jean-philippe@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=2a00:1450:4864:20::333; envelope-from=jean-philippe@linaro.org; helo=mail-wm1-x333.google.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, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: peter.maydell@linaro.org, ehabkost@redhat.com, mst@redhat.com, richard.henderson@linaro.org, qemu-devel@nongnu.org, shannon.zhaosl@gmail.com, Jean-Philippe Brucker , qemu-arm@nongnu.org, pbonzini@redhat.com, ani@anisinha.ca, imammedo@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1631630617532100007 Content-Type: text/plain; charset="utf-8" The VIOT table generated for the q35 test is: [000h 0000 4] Signature : "VIOT" [Virtual I/O Trans= lation Table] [004h 0004 4] Table Length : 00000070 [008h 0008 1] Revision : 00 [009h 0009 1] Checksum : 3D [00Ah 0010 6] Oem ID : "BOCHS " [010h 0016 8] Oem Table ID : "BXPC " [018h 0024 4] Oem Revision : 00000001 [01Ch 0028 4] Asl Compiler ID : "BXPC" [020h 0032 4] Asl Compiler Revision : 00000001 [024h 0036 2] Node count : 0003 [026h 0038 2] Node offset : 0030 [028h 0040 8] Reserved : 0000000000000000 [030h 0048 1] Type : 03 [VirtIO-PCI IOMMU] [031h 0049 1] Reserved : 00 [032h 0050 2] Length : 0010 [034h 0052 2] PCI Segment : 0000 [036h 0054 2] PCI BDF number : 0010 [038h 0056 8] Reserved : 0000000000000000 [040h 0064 1] Type : 01 [PCI Range] [041h 0065 1] Reserved : 00 [042h 0066 2] Length : 0018 [044h 0068 4] Endpoint start : 00001000 [048h 0072 2] PCI Segment start : 0000 [04Ah 0074 2] PCI Segment end : 0000 [04Ch 0076 2] PCI BDF start : 1000 [04Eh 0078 2] PCI BDF end : 10FF [050h 0080 2] Output node : 0030 [052h 0082 6] Reserved : 000000000000 [058h 0088 1] Type : 01 [PCI Range] [059h 0089 1] Reserved : 00 [05Ah 0090 2] Length : 0018 [05Ch 0092 4] Endpoint start : 00003000 [060h 0096 2] PCI Segment start : 0000 [062h 0098 2] PCI Segment end : 0000 [064h 0100 2] PCI BDF start : 3000 [066h 0102 2] PCI BDF end : 30FF [068h 0104 2] Output node : 0030 [06Ah 0106 6] Reserved : 000000000000 Signed-off-by: Jean-Philippe Brucker --- tests/qtest/bios-tables-test-allowed-diff.h | 1 - tests/data/acpi/q35/VIOT.viot | Bin 0 -> 112 bytes 2 files changed, 1 deletion(-) diff --git a/tests/qtest/bios-tables-test-allowed-diff.h b/tests/qtest/bios= -tables-test-allowed-diff.h index 27ab8d3ba8..dfb8523c8b 100644 --- a/tests/qtest/bios-tables-test-allowed-diff.h +++ b/tests/qtest/bios-tables-test-allowed-diff.h @@ -1,2 +1 @@ /* List of comma-separated changed AML files to ignore */ -"tests/data/acpi/q35/VIOT.viot", diff --git a/tests/data/acpi/q35/VIOT.viot b/tests/data/acpi/q35/VIOT.viot index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..275c78fbe8e93190321d957c91c= 3f17551f865d4 100644 GIT binary patch literal 112 zcmWIZ^baXu00LVle`k+i1*eDrX9XZ&1PX!JAex!M0Hgv8m>C3sGzdcgBZCBjEAU?c OrV=3Da;;~4xmfH48g0SW;C literal 0 HcmV?d00001 --=20 2.33.0