Maximilian Stein has submitted this change. ( https://gem5-review.googlesource.com/c/public/gem5/+/42825 )

Change subject: configs: Use MADT in x86 full system simulation
......................................................................

configs: Use MADT in x86 full system simulation

ACPI's MADT describes the interrupt system of a processor/system and
partially replaces the Intel MP tables. The config now simply adds the
ACPI variant, so an OS can use either Intel MP or ACPI for interrupt
configuration.

Change-Id: Ie3d293aac0925666f7661a03eab10218f04c8d0c
Signed-off-by: Maximilian Stein <m...@steiny.biz>
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/42825
Tested-by: kokoro <noreply+kok...@google.com>
Reviewed-by: Jason Lowe-Power <power...@gmail.com>
Maintainer: Jason Lowe-Power <power...@gmail.com>
---
M configs/common/FSConfig.py
1 file changed, 30 insertions(+), 0 deletions(-)

Approvals:
  Jason Lowe-Power: Looks good to me, approved; Looks good to me, approved
  kokoro: Regressions pass



diff --git a/configs/common/FSConfig.py b/configs/common/FSConfig.py
index 92f6798..e85d225 100644
--- a/configs/common/FSConfig.py
+++ b/configs/common/FSConfig.py
@@ -494,6 +494,7 @@
     # Set up the Intel MP table
     base_entries = []
     ext_entries = []
+    madt_records = []
     for i in range(numCPUs):
         bp = X86IntelMPProcessor(
                 local_apic_id = i,
@@ -501,6 +502,11 @@
                 enable = True,
                 bootstrap = (i == 0))
         base_entries.append(bp)
+        lapic = X86ACPIMadtLAPIC(
+                acpi_processor_id=i,
+                apic_id=i,
+                flags=1)
+        madt_records.append(lapic)
     io_apic = X86IntelMPIOAPIC(
             id = numCPUs,
             version = 0x11,
@@ -508,6 +514,8 @@
             address = 0xfec00000)
     self.pc.south_bridge.io_apic.apic_id = io_apic.id
     base_entries.append(io_apic)
+    madt_records.append(X86ACPIMadtIOAPIC(id=io_apic.id,
+        address=io_apic.address, int_base=0))
     # In gem5 Pc::calcPciConfigAddr(), it required "assert(bus==0)",
     # but linux kernel cannot config PCI device if it was not connected to
     # PCI bus, so we fix PCI bus id to 0, and ISA bus id to 1.
@@ -527,6 +535,13 @@
             dest_io_apic_id = io_apic.id,
             dest_io_apic_intin = 16)
     base_entries.append(pci_dev4_inta)
+    pci_dev4_inta_madt = X86ACPIMadtIntSourceOverride(
+            bus_source = pci_dev4_inta.source_bus_id,
+            irq_source = pci_dev4_inta.source_bus_irq,
+            sys_int = pci_dev4_inta.dest_io_apic_intin,
+            flags = 0
+        )
+    madt_records.append(pci_dev4_inta_madt)
     def assignISAInt(irq, apicPin):
         assign_8259_to_apic = X86IntelMPIOIntAssignment(
                 interrupt_type = 'ExtInt',
@@ -546,6 +561,14 @@
                 dest_io_apic_id = io_apic.id,
                 dest_io_apic_intin = apicPin)
         base_entries.append(assign_to_apic)
+        # acpi
+        assign_to_apic_acpi = X86ACPIMadtIntSourceOverride(
+                bus_source = 1,
+                irq_source = irq,
+                sys_int = apicPin,
+                flags = 0
+            )
+        madt_records.append(assign_to_apic_acpi)
     assignISAInt(0, 2)
     assignISAInt(1, 1)
     for i in range(3, 15):
@@ -553,6 +576,13 @@
     workload.intel_mp_table.base_entries = base_entries
     workload.intel_mp_table.ext_entries = ext_entries

+    madt = X86ACPIMadt(local_apic_address=0,
+            records=madt_records, oem_id='madt')
+    workload.acpi_description_table_pointer.rsdt.entries.append(madt)
+    workload.acpi_description_table_pointer.xsdt.entries.append(madt)
+    workload.acpi_description_table_pointer.oem_id = 'gem5'
+    workload.acpi_description_table_pointer.rsdt.oem_id='gem5'
+    workload.acpi_description_table_pointer.xsdt.oem_id='gem5'
     return self

 def makeLinuxX86System(mem_mode, numCPUs=1, mdesc=None, Ruby=False,



5 is the latest approved patch-set.
No files were changed between the latest approved patch-set and the submitted one.
--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/42825
To unsubscribe, or for help writing mail filters, visit https://gem5-review.googlesource.com/settings

Gerrit-Project: public/gem5
Gerrit-Branch: develop
Gerrit-Change-Id: Ie3d293aac0925666f7661a03eab10218f04c8d0c
Gerrit-Change-Number: 42825
Gerrit-PatchSet: 11
Gerrit-Owner: Maximilian Stein <m...@steiny.biz>
Gerrit-Reviewer: Gabe Black <gabe.bl...@gmail.com>
Gerrit-Reviewer: Jason Lowe-Power <ja...@lowepower.com>
Gerrit-Reviewer: Jason Lowe-Power <power...@gmail.com>
Gerrit-Reviewer: Maximilian Stein <m...@steiny.biz>
Gerrit-Reviewer: kokoro <noreply+kok...@google.com>
Gerrit-CC: Bobby R. Bruce <bbr...@ucdavis.edu>
Gerrit-MessageType: merged
_______________________________________________
gem5-dev mailing list -- gem5-dev@gem5.org
To unsubscribe send an email to gem5-dev-le...@gem5.org
%(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s

Reply via email to