From nobody Wed Nov 5 08:16:25 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=gmail.com Return-Path: Received: from lists.gnu.org (208.118.235.17 [208.118.235.17]) by mx.zohomail.com with SMTPS id 1533177916454658.8013951967241; Wed, 1 Aug 2018 19:45:16 -0700 (PDT) Received: from localhost ([::1]:43652 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fl3bw-0002Ld-4h for importer@patchew.org; Wed, 01 Aug 2018 22:45:08 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:44452) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fl3a0-0001Hz-F8 for qemu-devel@nongnu.org; Wed, 01 Aug 2018 22:43:13 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fl3Zz-0007H9-Ex for qemu-devel@nongnu.org; Wed, 01 Aug 2018 22:43:08 -0400 Received: from mail-wm0-x243.google.com ([2a00:1450:400c:c09::243]:36800) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1fl3Zz-0007GE-3X for qemu-devel@nongnu.org; Wed, 01 Aug 2018 22:43:07 -0400 Received: by mail-wm0-x243.google.com with SMTP id w24-v6so729411wmc.1 for ; Wed, 01 Aug 2018 19:43:06 -0700 (PDT) Received: from bloodymary.ipads-lab.se.sjtu.edu.cn ([46.243.138.172]) by smtp.gmail.com with ESMTPSA id t2-v6sm389721wrv.63.2018.08.01.19.43.03 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Wed, 01 Aug 2018 19:43:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=/AFYzpF2rAx3KiDjtp6G3M0LNLRh4U9xKbzJ5UGCwwc=; b=CHZ7PD8XnkptJrqvDZC7nxZ/mL4SiMGOkCUOihLVrx3V7MHFPCO5RcsIOck8uYLX1P xXOHEwe20Sw1T4Iz575Qw/yhFcgDdV0KNowCfcnGu0s5snwIwbyPUREvnjcjHiau9RJh Gj6XaungIAH9jWNUB+zuKt6mVXj+2p64rRv1k/smipThFPTDQJcTxpben9KxATdqtJZO 4mg8AdoQo2eTLjgqCReHHmt5BXGfi9m1BlDhwLmaGRJ3DV6WRmuBwM4sTOkCFcFEyK/7 rGZabBiuLQkUq+uWHjSIXwDZ1555bXElahn8nZxSt7JynHXXxk6B3W9N1SDtmyxKPOqy d8aQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=/AFYzpF2rAx3KiDjtp6G3M0LNLRh4U9xKbzJ5UGCwwc=; b=aOS9z0DQKCXpdJ+dY9/Gl85CSzJgHdxBMQ1Jh2DitYIzSdIVZ7j024kUJX5DxqM6I6 b+ILo3vIytCRuGRijpI5LpaKzrodGLag6h71DhCspuVL7n12L9kvmzu3jymaRrxZ7Jyk pFEDawC9AyOEso+qgp40DhX2/q+iHmxYYvGJ3dPz5wOoBzMBL6BHsz9QtVMDaDjEhup6 zNxAsJri/2zpJhCP8HLZdxGuwjUO4ksZ4y7etH3mXu+XKW8ItKQnu7gZmgdsdzWN0mqz kf7j2Giub91CS1ljXSp8VBs7ZkPqmPvcwA2ciQK+6K7Q8y3qESIQkujTVPZ0Vszq/k3k fnwg== X-Gm-Message-State: AOUpUlEGBlONkmXZ8L3WGrgeI3fO6xn4FeTzCvSuBd74ZLOBednyU3Bs b9+uFNI7n9pW/AawsWjm+QLYvAhgunY= X-Google-Smtp-Source: AAOMgpdmSwwieJn9C4VSXNkA8/w5SyWIzs+K0MT7ufbJU95mYnjoX/FuKytatylHr1S9cD8c8j3ROg== X-Received: by 2002:a1c:e041:: with SMTP id x62-v6mr483908wmg.155.1533177785969; Wed, 01 Aug 2018 19:43:05 -0700 (PDT) From: Zihan Yang To: qemu-devel@nongnu.org Date: Thu, 2 Aug 2018 10:42:20 +0800 Message-Id: <1533177743-20894-4-git-send-email-whois.zihan.yang@gmail.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1533177743-20894-1-git-send-email-whois.zihan.yang@gmail.com> References: <1533177743-20894-1-git-send-email-whois.zihan.yang@gmail.com> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:400c:c09::243 Subject: [Qemu-devel] [RFC v3 3/6] i386/acpi-build: describe new pci domain in AML X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Zihan Yang Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Describe new pci segments of host bridges in AML as new pci devices, with _SEG and _BBN to let them be in DSDT Signed-off-by: Zihan Yang --- hw/i386/acpi-build.c | 78 +++++++++++++++++++++++++++++++++++-------------= ---- 1 file changed, 53 insertions(+), 25 deletions(-) diff --git a/hw/i386/acpi-build.c b/hw/i386/acpi-build.c index 30bd0d5..4b6ef78 100644 --- a/hw/i386/acpi-build.c +++ b/hw/i386/acpi-build.c @@ -1832,6 +1832,7 @@ build_dsdt(GArray *table_data, BIOSLinker *linker, aml_append(dev, aml_name_decl("_UID", aml_int(1))); aml_append(dev, build_q35_osc_method()); aml_append(sb_scope, dev); + aml_append(dsdt, sb_scope); =20 build_hpet_aml(dsdt); @@ -1875,6 +1876,7 @@ build_dsdt(GArray *table_data, BIOSLinker *linker, =20 crs_range_set_init(&crs_range_set); bus =3D PC_MACHINE(machine)->bus; + i =3D 1; // PCI0 is q35 host, pxb starts from 1 if (bus) { QLIST_FOREACH(bus, &bus->child, sibling) { uint8_t bus_num =3D pci_bus_num(bus); @@ -1890,10 +1892,9 @@ build_dsdt(GArray *table_data, BIOSLinker *linker, } =20 scope =3D aml_scope("\\_SB"); - dev =3D aml_device("PC%.02X", bus_num); + dev =3D aml_device("PCI%d", i++); aml_append(dev, aml_name_decl("_UID", aml_int(bus_num))); aml_append(dev, aml_name_decl("_HID", aml_eisaid("PNP0A03"))); - aml_append(dev, aml_name_decl("_BBN", aml_int(bus_num))); if (pci_bus_is_express(bus)) { aml_append(dev, build_q35_osc_method()); } @@ -2125,36 +2126,63 @@ build_dsdt(GArray *table_data, BIOSLinker *linker, sb_scope =3D aml_scope("\\_SB"); { Object *pci_host; + QObject *o; PCIBus *bus =3D NULL; + uint32_t domain_nr; + uint8_t bus_nr; + int index =3D 0; =20 pci_host =3D acpi_get_i386_pci_host(); - if (pci_host) { + while (pci_host) { + Object *obj =3D object_property_get_link(pci_host, + PROP_PXB_PCIE_DEV, NULL); + if (!obj) { + /* we are in q35 host */ + obj =3D pci_host; + } + o =3D object_property_get_qobject(obj, PROP_PXB_PCIE_DOMAIN_NR= , NULL); + assert(o); + domain_nr =3D qnum_get_uint(qobject_to(QNum, o)); + qobject_unref(o); + + o =3D object_property_get_qobject(pci_host, "bus_nr", NULL); + if (!o) { + /* we are in q35 host */ + bus_nr =3D 0; + } else { + bus_nr =3D qnum_get_uint(qobject_to(QNum, o)); + qobject_unref(o); + } + bus =3D PCI_HOST_BRIDGE(pci_host)->bus; - } + if (bus) { + Aml *scope =3D aml_scope("PCI%d", index); + aml_append(scope, aml_name_decl("_SEG", aml_int(domain_nr)= )); + aml_append(scope, aml_name_decl("_BBN", aml_int(bus_nr))); + /* Scan all PCI buses. Generate tables to support hotplug.= */ + build_append_pci_bus_devices(scope, bus, pm->pcihp_bridge_= en); =20 - if (bus) { - Aml *scope =3D aml_scope("PCI0"); - /* Scan all PCI buses. Generate tables to support hotplug. */ - build_append_pci_bus_devices(scope, bus, pm->pcihp_bridge_en); + /* Only add TPM once */ + if (index++ =3D=3D 0 && TPM_IS_TIS(tpm_find())) { + dev =3D aml_device("ISA.TPM"); + aml_append(dev, aml_name_decl("_HID", aml_eisaid("PNP0= C31"))); + aml_append(dev, aml_name_decl("_STA", aml_int(0xF))); + crs =3D aml_resource_template(); + aml_append(crs, aml_memory32_fixed(TPM_TIS_ADDR_BASE, + TPM_TIS_ADDR_SIZE, AML_READ_WRITE)); + /* + FIXME: TPM_TIS_IRQ=3D5 conflicts with PNP0C0F irqs, + Rewrite to take IRQ from TPM device model and + fix default IRQ value there to use some unused IRQ + */ + /* aml_append(crs, aml_irq_no_flags(TPM_TIS_IRQ)); */ + aml_append(dev, aml_name_decl("_CRS", crs)); + aml_append(scope, dev); + } =20 - if (TPM_IS_TIS(tpm_find())) { - dev =3D aml_device("ISA.TPM"); - aml_append(dev, aml_name_decl("_HID", aml_eisaid("PNP0C31"= ))); - aml_append(dev, aml_name_decl("_STA", aml_int(0xF))); - crs =3D aml_resource_template(); - aml_append(crs, aml_memory32_fixed(TPM_TIS_ADDR_BASE, - TPM_TIS_ADDR_SIZE, AML_READ_WRITE)); - /* - FIXME: TPM_TIS_IRQ=3D5 conflicts with PNP0C0F irqs, - Rewrite to take IRQ from TPM device model and - fix default IRQ value there to use some unused IRQ - */ - /* aml_append(crs, aml_irq_no_flags(TPM_TIS_IRQ)); */ - aml_append(dev, aml_name_decl("_CRS", crs)); - aml_append(scope, dev); + aml_append(sb_scope, scope); } - - aml_append(sb_scope, scope); + pci_host =3D OBJECT(QTAILQ_NEXT(PCI_HOST_BRIDGE(pci_host), nex= t)); } } =20 --=20 2.7.4