proc_mgmt: bugfix for domains spawned from startd
[barrelfish] / schemas / acpimadt.sks
1 /*
2   ACPI MADT Facts
3    
4   Copyright (c) 2017, ETH Zurich.
5   All rights reserved.
6   
7   This file is distributed under the terms in the attached LICENSE file.
8   If you do not find this file, copies can be found by writing to:
9   ETH Zurich D-INFK, Universit\"atstr. 6, CH-8092 Zurich. Attn: Systems Group.
10  */
11
12 schema acpimadt "ACPI Multiple APIC Description Table (MADT)" {
13     
14     section "Introduction" {
15
16     text {
17         "The ACPI interrupt model describes all interrupts for the entire "
18         "system in a uniform interrupt model implementation. Supported  "
19         "interrupt models include the PC-AT-compatible dual 8259 interrupt "
20          "controller, for Intel processor-based systems, the Intel Advanced  "
21          "programmable Interrupt Controller (APIC) and Intel Streamlined  "
22          "Advanced Programmable Interrupt Controller (SAPIC), and, for ARM "
23          "processor-based systems, the Generic Interrupt Controller (GIC) "
24
25          "ACPI represents all interrupts as 'flat' values known as global  "
26          "system interrupts. Therefore to support APICs, SAPICs or GICs on an "
27          "ACPI-enabled system, each used interrupt input must be mapped to  the  "
28          "global system interrupt value used by ACPI. "
29         };
30     };
31
32
33     /*
34      * MADT Subtables, correspond to Type in ACPI_SUBTABLE_HEADER
35      */
36     
37     /* 0: Processor Local APIC */
38
39     namespace local "x86 Local Namespace" {
40     
41         fact apic "Processor Local APIC" {
42             uint8   ProcessorId  "ACPI processor id";
43             uint8   Id           "Processor's local APIC id";
44             uint32  LapicFlags   "Local APIC flags";
45         };
46
47         flags apicflags 32 "Local APIC Flags" {
48             0 enabled  "If zero, this processor is unusable";
49         };
50
51         /* 4: Local APIC NMI */
52
53         fact apicnmi "Local APIC NMI" {
54             uint8   ProcessorId "ACPI processor id";
55             uint16  IntiFlags   "Interrupt Flags";
56             uint8   Lint        "LINTn to which NMI is connected";
57         };
58         
59         
60         /* 5: Address Override */
61         
62         fact apicoverride "Address Override" {
63             uint16                  Reserved "Reserved";
64             uint64                  Address "APIC physical address";
65         };
66         
67     
68         /* 7: Local Sapic */
69         
70         fact sapic "Local Sapic" {
71             uint8                   ProcessorId "ACPI processor id";
72             uint8                   Id          "SAPIC ID";
73             uint8                   Eid        "SAPIC EID";
74             uint8                   Reserved "Reserved";
75             uint16                  Reserved2 "Reserved";
76             uint32                  LapicFlags "LapicFlags";
77             uint32                  Uid "Numeric UID - ACPI 3.0";
78             string                  UidString "String UID  - ACPI 3.0";
79         };
80
81     
82         /* 9: Processor Local X2APIC (ACPI 4.0) */
83
84
85         fact x2apic "Processor Local X2APIC (ACPI 4.0)" {
86             uint16                  Reserved "Reserved";
87             uint32                  LocalApicId "Processor x2APIC ID";
88             uint32                  LapicFlags "Lapic Flags";
89             uint32                  Uid "ACPI processor UID";
90         };
91         
92         
93         /* 10: Local X2APIC NMI (ACPI 4.0) */
94         
95         fact x2apicnmi "Local X2APIC NMI (ACPI 4.0)" {
96             uint16                  IntiFlags "IntFlags";
97             uint32                  Uid "ACPI processor UID";
98             uint8                   Lint "LINTn to which NMI is connected";
99         };
100         
101     };
102
103     namespace io "x86 IO Nanespace" {
104         /* 1: IO APIC */
105
106         text {"In an APIC implementation, there are one or more I/O APICs. Each I/O APIC has a series of interrupt inputs, referred to as INTIn, where the value of n is from 0 to the number of the last interrupt input on the I/O APIC"};
107         
108         fact apic "I/O APIC Structure" {
109             uint8    Id              "The I/O APIC's ID.";
110             uint8    Reserved       "Reserved. Must be zero.";
111             uint32   Address        "The 32-bit unique physical address to access this I/O APIC";
112             uint32   GlobalIrqBase "The global system interrupt number where this I/O APIC's interrupt inputs start.";        
113         };
114
115             /* 6: I/O Sapic */
116     
117         fact sapic "I/O Sapic" {
118             uint8                   Id "I/O SAPIC ID";
119             uint8                   Reserved "Reserved";
120             uint32                  GlobalIrqBase "Global interrupt for SAPIC start";
121             uint64                  Address "SAPIC physical address";
122         };
123
124     };
125     
126     namespace interrupt "Interrupt Namespace" {
127
128         /* 2: Interrupt Override */
129         
130         fact override "Interrupt Override" {
131             uint8                   Bus "0 - ISA";
132             uint8                   SourceIrq "Interrupt source (IRQ)";
133             uint32                  GlobalIrq "Global system interrupt";
134             uint16                  IntiFlags "IntiFlags";
135         };
136
137             /* 8: Platform Interrupt Source */
138         
139         fact source "Platform Interrupt Source " {
140             uint16                  IntiFlags "IntiFlags";
141             uint8                   Type         "1=PMI, 2=INIT, 3=corrected";
142             uint8                   Id           "Processor ID";
143             uint8                   Eid          "Processor EID ";
144             uint8                   IoSapicVector "Vector value for PMI interrupts";
145             uint32                  GlobalIrq "Global system interrupt";
146             uint32                  SFlags "Interrupt Source Flags";
147         };
148
149     };
150     
151     namespace nmi "NMI" {
152         /* 3: NMI Source */
153         
154         fact source "NMI Source" {
155             uint16                  IntiFlags "IntIflags";
156             uint32                  GlobalIrq "Global system interrupt";
157         };
158     };
159     
160
161     namespace generic "ARM Generic Interrupt Controllers" {
162  
163         /* 11: Generic Interrupt (ACPI 5.0 + ACPI 6.0 changes) */
164         
165         fact interrupt "Generic Interrupt (ACPI 5.0 + ACPI 6.0 changes)" {
166             uint32                  CpuInterfaceNumber "";
167             uint32                  Uid "";
168             uint32                  GICFlags "";
169             uint32                  ParkingVersion "";
170             uint32                  PerformanceInterrupt "";
171             uint64                  ParkedAddress "";
172             uint64                  BaseAddress "";
173             uint64                  GicvBaseAddress "";
174             uint64                  GichBaseAddress "";
175             uint32                  VgicInterrupt "";
176             uint64                  GicrBaseAddress "";
177             uint64                  ArmMpidr "";
178             uint8                   EfficiencyClass "";
179         };
180         
181         
182         /* 12: Generic Distributor (ACPI 5.0 + ACPI 6.0 changes) */
183         
184         fact distributor "Generic Distributor (ACPI 5.0 + ACPI 6.0 changes)" {
185             uint32                  GicId "";
186             uint64                  BaseAddress "";
187             uint32                  GlobalIrqBase "";
188             uint8                   Version "";
189         };
190         
191            
192         
193         /* 13: Generic MSI Frame (ACPI 5.1) */
194         
195         fact msiframe "Generic MSI Frame (ACPI 5.1)" {
196             uint32                  MsiFrameId "";
197             uint64                  BaseAddress "";
198             uint32                  MSIFlags "";
199             uint16                  SpiCount "";
200             uint16                  SpiBase "";
201         } ;
202         
203         /* Masks for Flags field above */
204         
205             
206         /* 14: Generic Redistributor (ACPI 5.1) */
207         
208         fact redistributor "Generic Redistributor (ACPI 5.1)" {
209             uint64                  BaseAddress "";
210             uint32                  Length "";
211         } ;
212         
213         
214         /* 15: Generic Translator (ACPI 6.0) */
215         
216         fact translator "Generic Translator (ACPI 6.0)" {
217             uint32                  TranslationId "";
218             uint64                  BaseAddress "";
219         } ;
220     
221     };
222 };