qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Igor Mammedov <imammedo@redhat.com>
To: qemu-devel@nongnu.org
Subject: [Qemu-devel] [PATCH v2 32/51] pc: acpi: pci: move link devices into SSDT
Date: Mon, 28 Dec 2015 18:02:39 +0100	[thread overview]
Message-ID: <1451322178-261185-32-git-send-email-imammedo@redhat.com> (raw)
In-Reply-To: <1451321851-260744-1-git-send-email-imammedo@redhat.com>

Signed-off-by: Igor Mammedov <imammedo@redhat.com>
---
 hw/i386/acpi-build.c  | 77 +++++++++++++++++++++++++++++++++++++++++++++++++++
 hw/i386/acpi-dsdt.dsl | 49 ++++----------------------------
 2 files changed, 82 insertions(+), 44 deletions(-)

diff --git a/hw/i386/acpi-build.c b/hw/i386/acpi-build.c
index a28963f..891a29c 100644
--- a/hw/i386/acpi-build.c
+++ b/hw/i386/acpi-build.c
@@ -1427,9 +1427,49 @@ static void build_dbg_aml(Aml *table)
     aml_append(table, scope);
 }
 
+static Aml *build_link_dev(const char *name, uint8_t uid, Aml *reg)
+{
+    Aml *dev;
+    Aml *crs;
+    Aml *method;
+    uint32_t irqs[] = {5, 10, 11};
+
+    dev = aml_device("%s", name);
+    aml_append(dev, aml_name_decl("_HID", aml_eisaid("PNP0C0F")));
+    aml_append(dev, aml_name_decl("_UID", aml_int(uid)));
+
+    crs = aml_resource_template();
+    aml_append(crs, aml_interrupt(AML_CONSUMER, AML_LEVEL, AML_ACTIVE_HIGH,
+                                  AML_SHARED, irqs, ARRAY_SIZE(irqs)));
+    aml_append(dev, aml_name_decl("_PRS", crs));
+
+    method = aml_method("_STA", 0, AML_NOTSERIALIZED);
+    aml_append(method, aml_return(aml_call1("IQST", reg)));
+    aml_append(dev, method);
+
+    method = aml_method("_DIS", 0, AML_NOTSERIALIZED);
+    aml_append(method, aml_or(reg, aml_int(0x80), reg));
+    aml_append(dev, method);
+
+    method = aml_method("_CRS", 0, AML_NOTSERIALIZED);
+    aml_append(method, aml_return(aml_call1("IQCR", reg)));
+    aml_append(dev, method);
+
+    method = aml_method("_SRS", 1, AML_NOTSERIALIZED);
+    aml_append(method, aml_create_dword_field(aml_arg(0), aml_int(5), "PRRI"));
+    aml_append(method, aml_store(aml_name("PRRI"), reg));
+    aml_append(dev, method);
+
+    return dev;
+ }
+
 static void build_piix4_pci0_int(Aml *table)
 {
+    Aml *dev;
+    Aml *crs;
     Aml *field;
+    Aml *method;
+    uint32_t irqs;
     Aml *sb_scope = aml_scope("_SB");
 
     field = aml_field("PCI0.ISA.P40C", AML_BYTE_ACC, AML_NOLOCK, AML_PRESERVE);
@@ -1439,6 +1479,43 @@ static void build_piix4_pci0_int(Aml *table)
     aml_append(field, aml_named_field("PRQ3", 8));
     aml_append(sb_scope, field);
 
+    aml_append(sb_scope, build_link_dev("LNKA", 0, aml_name("PRQ0")));
+    aml_append(sb_scope, build_link_dev("LNKB", 1, aml_name("PRQ1")));
+    aml_append(sb_scope, build_link_dev("LNKC", 2, aml_name("PRQ2")));
+    aml_append(sb_scope, build_link_dev("LNKD", 3, aml_name("PRQ3")));
+
+    dev = aml_device("LNKS");
+    {
+        aml_append(dev, aml_name_decl("_HID", aml_eisaid("PNP0C0F")));
+        aml_append(dev, aml_name_decl("_UID", aml_int(4)));
+
+        crs = aml_resource_template();
+        irqs = 9;
+        aml_append(crs, aml_interrupt(AML_CONSUMER, AML_LEVEL,
+                                      AML_ACTIVE_HIGH, AML_SHARED,
+                                      &irqs, 1));
+        aml_append(dev, aml_name_decl("_PRS", crs));
+
+        /* The SCI cannot be disabled and is always attached to GSI 9,
+         * so these are no-ops.  We only need this link to override the
+         * polarity to active high and match the content of the MADT.
+         */
+        method = aml_method("_STA", 0, AML_NOTSERIALIZED);
+        aml_append(method, aml_return(aml_int(0x0b)));
+        aml_append(dev, method);
+
+        method = aml_method("_DIS", 0, AML_NOTSERIALIZED);
+        aml_append(dev, method);
+
+        method = aml_method("_CRS", 0, AML_NOTSERIALIZED);
+        aml_append(method, aml_return(aml_name("_PRS")));
+        aml_append(dev, method);
+
+        method = aml_method("_SRS", 1, AML_NOTSERIALIZED);
+        aml_append(dev, method);
+    }
+    aml_append(sb_scope, dev);
+
     aml_append(table, sb_scope);
 }
 
diff --git a/hw/i386/acpi-dsdt.dsl b/hw/i386/acpi-dsdt.dsl
index c9b2725..b74cffd 100644
--- a/hw/i386/acpi-dsdt.dsl
+++ b/hw/i386/acpi-dsdt.dsl
@@ -152,49 +152,10 @@ DefinitionBlock (
             Return (PRR0)
         }
 
-#define define_link(link, uid, reg)                             \
-        Device(link) {                                          \
-            Name(_HID, EISAID("PNP0C0F"))                       \
-            Name(_UID, uid)                                     \
-            Name(_PRS, ResourceTemplate() {                     \
-                Interrupt(, Level, ActiveHigh, Shared) {        \
-                    5, 10, 11                                   \
-                }                                               \
-            })                                                  \
-            Method(_STA, 0, NotSerialized) {                    \
-                Return (IQST(reg))                              \
-            }                                                   \
-            Method(_DIS, 0, NotSerialized) {                    \
-                Or(reg, 0x80, reg)                              \
-            }                                                   \
-            Method(_CRS, 0, NotSerialized) {                    \
-                Return (IQCR(reg))                              \
-            }                                                   \
-            Method(_SRS, 1, NotSerialized) {                    \
-                CreateDWordField(Arg0, 0x05, PRRI)              \
-                Store(PRRI, reg)                                \
-            }                                                   \
-        }
-
-        define_link(LNKA, 0, PRQ0)
-        define_link(LNKB, 1, PRQ1)
-        define_link(LNKC, 2, PRQ2)
-        define_link(LNKD, 3, PRQ3)
-
-        Device(LNKS) {
-            Name(_HID, EISAID("PNP0C0F"))
-            Name(_UID, 4)
-            Name(_PRS, ResourceTemplate() {
-                Interrupt(, Level, ActiveHigh, Shared) { 9 }
-            })
-
-            // The SCI cannot be disabled and is always attached to GSI 9,
-            // so these are no-ops.  We only need this link to override the
-            // polarity to active high and match the content of the MADT.
-            Method(_STA, 0, NotSerialized) { Return (0x0b) }
-            Method(_DIS, 0, NotSerialized) { }
-            Method(_CRS, 0, NotSerialized) { Return (_PRS) }
-            Method(_SRS, 1, NotSerialized) { }
-        }
+        External(LNKA, DeviceObj)
+        External(LNKB, DeviceObj)
+        External(LNKC, DeviceObj)
+        External(LNKD, DeviceObj)
+        External(LNKS, DeviceObj)
     }
 }
-- 
1.8.3.1

  parent reply	other threads:[~2015-12-28 17:03 UTC|newest]

Thread overview: 52+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-12-28 16:57 [Qemu-devel] [PATCH v2 00/51] pc: acpi: convert DSDT to AML API and drop ASL templates support Igor Mammedov
2015-12-28 17:02 ` [Qemu-devel] [PATCH v2 01/51] tests: acpi: print ASL diff in verbose mode Igor Mammedov
2015-12-28 17:02 ` [Qemu-devel] [PATCH v2 02/51] pc: acpi: memhp: prepare context in SSDT for moving memhp DSDT code Igor Mammedov
2015-12-28 17:02 ` [Qemu-devel] [PATCH v2 03/51] pc: acpi: memhp: move MHPD._STA method into SSDT Igor Mammedov
2015-12-28 17:02 ` [Qemu-devel] [PATCH v2 04/51] pc: acpi: memhp: move MHPD.MLCK mutex " Igor Mammedov
2015-12-28 17:02 ` [Qemu-devel] [PATCH v2 05/51] pc: acpi: memhp: move MHPD.MSCN method " Igor Mammedov
2015-12-28 17:02 ` [Qemu-devel] [PATCH v2 06/51] pc: acpi: memhp: move MHPD.MRST " Igor Mammedov
2015-12-28 17:02 ` [Qemu-devel] [PATCH v2 07/51] pc: acpi: memhp: move MHPD.MPXM " Igor Mammedov
2015-12-28 17:02 ` [Qemu-devel] [PATCH v2 08/51] pc: acpi: memhp: move MHPD.MOST " Igor Mammedov
2015-12-28 17:02 ` [Qemu-devel] [PATCH v2 09/51] pc: acpi: memhp: move MHPD.MEJ0 " Igor Mammedov
2015-12-28 17:02 ` [Qemu-devel] [PATCH v2 10/51] pc: acpi: memhp: move MHPD.MCRS " Igor Mammedov
2015-12-28 17:02 ` [Qemu-devel] [PATCH v2 11/51] pc: acpi: memhp: move MHPD Device " Igor Mammedov
2015-12-28 17:02 ` [Qemu-devel] [PATCH v2 12/51] pc: acpi: factor out memhp code from build_ssdt() into separate function Igor Mammedov
2015-12-28 17:02 ` [Qemu-devel] [PATCH v2 13/51] pc: acpi: memhp: move \_GPE._E03 into SSDT Igor Mammedov
2015-12-28 17:02 ` [Qemu-devel] [PATCH v2 14/51] pc: acpi: memhp: drop not needed stringify(MEMORY_foo) usage Igor Mammedov
2015-12-28 17:02 ` [Qemu-devel] [PATCH v2 15/51] pc: acpi: drop unused CPU_STATUS_LEN from DSDT Igor Mammedov
2015-12-28 17:02 ` [Qemu-devel] [PATCH v2 16/51] pc: acpi: cpuhp: move CPEJ() method to SSDT Igor Mammedov
2015-12-28 17:02 ` [Qemu-devel] [PATCH v2 17/51] pc: acpi: cpuhp: move CPMA() method into SSDT Igor Mammedov
2015-12-28 17:02 ` [Qemu-devel] [PATCH v2 18/51] pc: acpi: cpuhp: move CPST() " Igor Mammedov
2015-12-28 17:02 ` [Qemu-devel] [PATCH v2 19/51] pc: acpi: cpuhp: move PRSC() " Igor Mammedov
2015-12-28 17:02 ` [Qemu-devel] [PATCH v2 20/51] pc: acpi: cpuhp: move \_GPE._E02() " Igor Mammedov
2015-12-28 17:02 ` [Qemu-devel] [PATCH v2 21/51] pc: acpi: factor out cpu hotplug code from build_ssdt() into separate function Igor Mammedov
2015-12-28 17:02 ` [Qemu-devel] [PATCH v2 22/51] pc: acpi: move HPET from DSDT to SSDT Igor Mammedov
2015-12-28 17:02 ` [Qemu-devel] [PATCH v2 23/51] pc: acpi: move DBUG() " Igor Mammedov
2015-12-28 17:02 ` [Qemu-devel] [PATCH v2 24/51] pc: acpi: move RTC device " Igor Mammedov
2015-12-28 17:02 ` [Qemu-devel] [PATCH v2 25/51] pc: acpi: move KBD " Igor Mammedov
2015-12-28 17:02 ` [Qemu-devel] [PATCH v2 26/51] pc: acpi: move MOU " Igor Mammedov
2015-12-28 17:02 ` [Qemu-devel] [PATCH v2 27/51] pc: acpi: move FDC0 " Igor Mammedov
2015-12-28 17:02 ` [Qemu-devel] [PATCH v2 28/51] pc: acpi: move LPT " Igor Mammedov
2015-12-28 17:02 ` [Qemu-devel] [PATCH v2 29/51] pc: acpi: move COM devices " Igor Mammedov
2015-12-28 17:02 ` [Qemu-devel] [PATCH v2 30/51] pc: acpi: move PIIX4 isa-bridge and pm devices into SSDT Igor Mammedov
2015-12-28 17:02 ` [Qemu-devel] [PATCH v2 31/51] pc: acpi: move remaining GPE handlers " Igor Mammedov
2015-12-28 17:02 ` Igor Mammedov [this message]
2015-12-28 17:02 ` [Qemu-devel] [PATCH v2 33/51] pc: acpi: piix4: move IQCR() " Igor Mammedov
2015-12-28 17:02 ` [Qemu-devel] [PATCH v2 34/51] pc: acpi: piix4: move IQST() " Igor Mammedov
2015-12-28 17:02 ` [Qemu-devel] [PATCH v2 35/51] pc: acpi: piix4: move PCI0._PRT() " Igor Mammedov
2015-12-28 17:02 ` [Qemu-devel] [PATCH v2 36/51] pc: acpi: piix4: move remaining PCI hotplug bits " Igor Mammedov
2015-12-28 17:02 ` [Qemu-devel] [PATCH v2 37/51] pc: acpi: piix4: acpi move PCI0 device to SSDT Igor Mammedov
2015-12-28 17:02 ` [Qemu-devel] [PATCH v2 38/51] pc: acpi: q35: move GSI links " Igor Mammedov
2015-12-28 17:02 ` [Qemu-devel] [PATCH v2 39/51] pc: acpi: q35: move link devices " Igor Mammedov
2015-12-28 17:02 ` [Qemu-devel] [PATCH v2 40/51] pc: acpi: q35: move IQCR() into SSDT Igor Mammedov
2015-12-28 17:02 ` [Qemu-devel] [PATCH v2 41/51] pc: acpi: q35: move IQST() " Igor Mammedov
2015-12-28 17:02 ` [Qemu-devel] [PATCH v2 42/51] pc: acpi: q35: move ISA bridge " Igor Mammedov
2015-12-28 17:02 ` [Qemu-devel] [PATCH v2 43/51] pc: acpi: q35: move _PRT() " Igor Mammedov
2015-12-28 17:02 ` [Qemu-devel] [PATCH v2 44/51] pc: acpi: q35: move PRTA routing table " Igor Mammedov
2015-12-28 17:02 ` [Qemu-devel] [PATCH v2 45/51] pc: acpi: q35: move PRTP " Igor Mammedov
2015-12-28 17:02 ` [Qemu-devel] [PATCH v2 46/51] pc: acpi: q35: move _PIC() method " Igor Mammedov
2015-12-28 17:02 ` [Qemu-devel] [PATCH v2 47/51] pc: acpi: q35: move PCI0._OSC() " Igor Mammedov
2015-12-28 17:02 ` [Qemu-devel] [PATCH v2 48/51] pc: acpi: q35: move PCI0 device definition " Igor Mammedov
2015-12-28 17:02 ` [Qemu-devel] [PATCH v2 49/51] pc: acpi: q35: PCST, PCSB opregions and PCIB field " Igor Mammedov
2015-12-28 17:02 ` [Qemu-devel] [PATCH v2 50/51] pc: acpi: switch to AML API composed DSDT Igor Mammedov
2015-12-28 17:02 ` [Qemu-devel] [PATCH v2 51/51] pc: acpi: remove unused ASL templates and related blobs/utils Igor Mammedov

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1451322178-261185-32-git-send-email-imammedo@redhat.com \
    --to=imammedo@redhat.com \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).