Blame view

include/acpi/actbl1.h 25.3 KB
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
1
2
  /******************************************************************************
   *
793c2388c   Bob Moore   ACPI: ACPICA 2006...
3
   * Name: actbl1.h - Additional ACPI table definitions
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
4
5
6
7
   *
   *****************************************************************************/
  
  /*
b4e104eae   Bob Moore   ACPICA: Update al...
8
   * Copyright (C) 2000 - 2011, Intel Corp.
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
   * All rights reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions, and the following disclaimer,
   *    without modification.
   * 2. Redistributions in binary form must reproduce at minimum a disclaimer
   *    substantially similar to the "NO WARRANTY" disclaimer below
   *    ("Disclaimer") and any redistribution must be conditioned upon
   *    including a substantially similar Disclaimer requirement for further
   *    binary redistribution.
   * 3. Neither the names of the above-listed copyright holders nor the names
   *    of any contributors may be used to endorse or promote products derived
   *    from this software without specific prior written permission.
   *
   * Alternatively, this software may be distributed under the terms of the
   * GNU General Public License ("GPL") version 2 as published by the Free
   * Software Foundation.
   *
   * NO WARRANTY
   * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
   * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
   * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
   * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
   * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
   * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
   * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
   * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
   * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
   * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
   * POSSIBILITY OF SUCH DAMAGES.
   */
  
  #ifndef __ACTBL1_H__
  #define __ACTBL1_H__
793c2388c   Bob Moore   ACPI: ACPICA 2006...
46
47
  /*******************************************************************************
   *
b24aad444   Bob Moore   ACPICA: Split lar...
48
   * Additional ACPI Tables (1)
793c2388c   Bob Moore   ACPI: ACPICA 2006...
49
50
51
52
   *
   * These tables are not consumed directly by the ACPICA subsystem, but are
   * included here to support device drivers and the AML disassembler.
   *
b24aad444   Bob Moore   ACPICA: Split lar...
53
54
   * The tables in this file are fully defined within the ACPI specification.
   *
793c2388c   Bob Moore   ACPI: ACPICA 2006...
55
56
57
   ******************************************************************************/
  
  /*
6e2d5ebd0   Bob Moore   ACPICA: ACPI 4: U...
58
59
60
   * Values for description table header signatures for tables defined in this
   * file. Useful because they make it more difficult to inadvertently type in
   * the wrong signature.
793c2388c   Bob Moore   ACPI: ACPICA 2006...
61
   */
970d9c9ec   Bob Moore   ACPICA: Include f...
62
  #define ACPI_SIG_BERT           "BERT"	/* Boot Error Record Table */
793c2388c   Bob Moore   ACPI: ACPICA 2006...
63
  #define ACPI_SIG_CPEP           "CPEP"	/* Corrected Platform Error Polling table */
793c2388c   Bob Moore   ACPI: ACPICA 2006...
64
  #define ACPI_SIG_ECDT           "ECDT"	/* Embedded Controller Boot Resources Table */
970d9c9ec   Bob Moore   ACPICA: Include f...
65
66
67
  #define ACPI_SIG_EINJ           "EINJ"	/* Error Injection table */
  #define ACPI_SIG_ERST           "ERST"	/* Error Record Serialization Table */
  #define ACPI_SIG_HEST           "HEST"	/* Hardware Error Source Table */
793c2388c   Bob Moore   ACPI: ACPICA 2006...
68
  #define ACPI_SIG_MADT           "APIC"	/* Multiple APIC Description Table */
6e2d5ebd0   Bob Moore   ACPICA: ACPI 4: U...
69
  #define ACPI_SIG_MSCT           "MSCT"	/* Maximum System Characteristics Table */
793c2388c   Bob Moore   ACPI: ACPICA 2006...
70
71
  #define ACPI_SIG_SBST           "SBST"	/* Smart Battery Specification Table */
  #define ACPI_SIG_SLIT           "SLIT"	/* System Locality Distance Information Table */
793c2388c   Bob Moore   ACPI: ACPICA 2006...
72
  #define ACPI_SIG_SRAT           "SRAT"	/* System Resource Affinity Table */
793c2388c   Bob Moore   ACPI: ACPICA 2006...
73

793c2388c   Bob Moore   ACPI: ACPICA 2006...
74
75
76
77
  /*
   * All tables must be byte-packed to match the ACPI specification, since
   * the tables are provided by the system BIOS.
   */
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
78
79
80
  #pragma pack(1)
  
  /*
793c2388c   Bob Moore   ACPI: ACPICA 2006...
81
82
83
   * Note about bitfields: The u8 type is used for bitfields in ACPI tables.
   * This is the only type that is even remotely portable. Anything else is not
   * portable, so do not use any other bitfield types.
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
84
   */
793c2388c   Bob Moore   ACPI: ACPICA 2006...
85

6e2d5ebd0   Bob Moore   ACPICA: ACPI 4: U...
86
87
88
89
90
91
92
  /*******************************************************************************
   *
   * Common subtable headers
   *
   ******************************************************************************/
  
  /* Generic subtable header (used in MADT, SRAT, etc.) */
f3d2e7865   Bob Moore   ACPICA: Implement...
93
94
95
96
97
  
  struct acpi_subtable_header {
  	u8 type;
  	u8 length;
  };
6e2d5ebd0   Bob Moore   ACPICA: ACPI 4: U...
98
  /* Subtable header for WHEA tables (EINJ, ERST, WDAT) */
970d9c9ec   Bob Moore   ACPICA: Include f...
99
100
101
102
103
104
105
  
  struct acpi_whea_header {
  	u8 action;
  	u8 instruction;
  	u8 flags;
  	u8 reserved;
  	struct acpi_generic_address register_region;
3fa347770   Bob Moore   ACPICA: Disassemb...
106
107
  	u64 value;		/* Value used with Read/Write register */
  	u64 mask;		/* Bitmask required for this register instruction */
970d9c9ec   Bob Moore   ACPICA: Include f...
108
  };
793c2388c   Bob Moore   ACPI: ACPICA 2006...
109
110
  /*******************************************************************************
   *
6e2d5ebd0   Bob Moore   ACPICA: ACPI 4: U...
111
112
   * BERT - Boot Error Record Table (ACPI 4.0)
   *        Version 1
970d9c9ec   Bob Moore   ACPICA: Include f...
113
114
115
116
117
118
   *
   ******************************************************************************/
  
  struct acpi_table_bert {
  	struct acpi_table_header header;	/* Common ACPI table header */
  	u32 region_length;	/* Length of the boot error region */
b595076a1   Uwe Kleine-König   tree-wide: fix co...
119
  	u64 address;		/* Physical address of the error region */
970d9c9ec   Bob Moore   ACPICA: Include f...
120
  };
6e2d5ebd0   Bob Moore   ACPICA: ACPI 4: U...
121
  /* Boot Error Region (not a subtable, pointed to by Address field above) */
3fa347770   Bob Moore   ACPICA: Disassemb...
122

970d9c9ec   Bob Moore   ACPICA: Include f...
123
  struct acpi_bert_region {
6e2d5ebd0   Bob Moore   ACPICA: ACPI 4: U...
124
125
126
127
128
  	u32 block_status;	/* Type of error information */
  	u32 raw_data_offset;	/* Offset to raw error data */
  	u32 raw_data_length;	/* Length of raw error data */
  	u32 data_length;	/* Length of generic error data */
  	u32 error_severity;	/* Severity code */
970d9c9ec   Bob Moore   ACPICA: Include f...
129
  };
6e2d5ebd0   Bob Moore   ACPICA: ACPI 4: U...
130
  /* Values for block_status flags above */
970d9c9ec   Bob Moore   ACPICA: Include f...
131
132
  
  #define ACPI_BERT_UNCORRECTABLE             (1)
6e2d5ebd0   Bob Moore   ACPICA: ACPI 4: U...
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
  #define ACPI_BERT_CORRECTABLE               (1<<1)
  #define ACPI_BERT_MULTIPLE_UNCORRECTABLE    (1<<2)
  #define ACPI_BERT_MULTIPLE_CORRECTABLE      (1<<3)
  #define ACPI_BERT_ERROR_ENTRY_COUNT         (0xFF<<4)	/* 8 bits, error count */
  
  /* Values for error_severity above */
  
  enum acpi_bert_error_severity {
  	ACPI_BERT_ERROR_CORRECTABLE = 0,
  	ACPI_BERT_ERROR_FATAL = 1,
  	ACPI_BERT_ERROR_CORRECTED = 2,
  	ACPI_BERT_ERROR_NONE = 3,
  	ACPI_BERT_ERROR_RESERVED = 4	/* 4 and greater are reserved */
  };
  
  /*
   * Note: The generic error data that follows the error_severity field above
   * uses the struct acpi_hest_generic_data defined under the HEST table below
   */
970d9c9ec   Bob Moore   ACPICA: Include f...
152
153
154
  
  /*******************************************************************************
   *
6e2d5ebd0   Bob Moore   ACPICA: ACPI 4: U...
155
156
   * CPEP - Corrected Platform Error Polling table (ACPI 4.0)
   *        Version 1
793c2388c   Bob Moore   ACPI: ACPICA 2006...
157
158
159
160
   *
   ******************************************************************************/
  
  struct acpi_table_cpep {
f3d2e7865   Bob Moore   ACPICA: Implement...
161
162
  	struct acpi_table_header header;	/* Common ACPI table header */
  	u64 reserved;
793c2388c   Bob Moore   ACPI: ACPICA 2006...
163
164
165
166
167
  };
  
  /* Subtable */
  
  struct acpi_cpep_polling {
6e2d5ebd0   Bob Moore   ACPICA: ACPI 4: U...
168
  	struct acpi_subtable_header header;
f3d2e7865   Bob Moore   ACPICA: Implement...
169
170
171
  	u8 id;			/* Processor ID */
  	u8 eid;			/* Processor EID */
  	u32 interval;		/* Polling interval (msec) */
793c2388c   Bob Moore   ACPI: ACPICA 2006...
172
173
174
175
  };
  
  /*******************************************************************************
   *
793c2388c   Bob Moore   ACPI: ACPICA 2006...
176
   * ECDT - Embedded Controller Boot Resources Table
6e2d5ebd0   Bob Moore   ACPICA: ACPI 4: U...
177
   *        Version 1
793c2388c   Bob Moore   ACPI: ACPICA 2006...
178
179
   *
   ******************************************************************************/
f3d2e7865   Bob Moore   ACPICA: Implement...
180
181
182
183
  struct acpi_table_ecdt {
  	struct acpi_table_header header;	/* Common ACPI table header */
  	struct acpi_generic_address control;	/* Address of EC command/status register */
  	struct acpi_generic_address data;	/* Address of EC data register */
793c2388c   Bob Moore   ACPI: ACPICA 2006...
184
  	u32 uid;		/* Unique ID - must be same as the EC _UID method */
f3d2e7865   Bob Moore   ACPICA: Implement...
185
186
  	u8 gpe;			/* The GPE for the EC */
  	u8 id[1];		/* Full namepath of the EC in the ACPI namespace */
793c2388c   Bob Moore   ACPI: ACPICA 2006...
187
188
189
190
  };
  
  /*******************************************************************************
   *
6e2d5ebd0   Bob Moore   ACPICA: ACPI 4: U...
191
192
   * EINJ - Error Injection Table (ACPI 4.0)
   *        Version 1
970d9c9ec   Bob Moore   ACPICA: Include f...
193
194
195
196
197
198
   *
   ******************************************************************************/
  
  struct acpi_table_einj {
  	struct acpi_table_header header;	/* Common ACPI table header */
  	u32 header_length;
6e2d5ebd0   Bob Moore   ACPICA: ACPI 4: U...
199
200
  	u8 flags;
  	u8 reserved[3];
970d9c9ec   Bob Moore   ACPICA: Include f...
201
202
203
204
205
206
207
208
  	u32 entries;
  };
  
  /* EINJ Injection Instruction Entries (actions) */
  
  struct acpi_einj_entry {
  	struct acpi_whea_header whea_header;	/* Common header for WHEA tables */
  };
6e2d5ebd0   Bob Moore   ACPICA: ACPI 4: U...
209
210
211
  /* Masks for Flags field above */
  
  #define ACPI_EINJ_PRESERVE          (1)
970d9c9ec   Bob Moore   ACPICA: Include f...
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
  /* Values for Action field above */
  
  enum acpi_einj_actions {
  	ACPI_EINJ_BEGIN_OPERATION = 0,
  	ACPI_EINJ_GET_TRIGGER_TABLE = 1,
  	ACPI_EINJ_SET_ERROR_TYPE = 2,
  	ACPI_EINJ_GET_ERROR_TYPE = 3,
  	ACPI_EINJ_END_OPERATION = 4,
  	ACPI_EINJ_EXECUTE_OPERATION = 5,
  	ACPI_EINJ_CHECK_BUSY_STATUS = 6,
  	ACPI_EINJ_GET_COMMAND_STATUS = 7,
  	ACPI_EINJ_ACTION_RESERVED = 8,	/* 8 and greater are reserved */
  	ACPI_EINJ_TRIGGER_ERROR = 0xFF	/* Except for this value */
  };
  
  /* Values for Instruction field above */
  
  enum acpi_einj_instructions {
  	ACPI_EINJ_READ_REGISTER = 0,
  	ACPI_EINJ_READ_REGISTER_VALUE = 1,
  	ACPI_EINJ_WRITE_REGISTER = 2,
  	ACPI_EINJ_WRITE_REGISTER_VALUE = 3,
  	ACPI_EINJ_NOOP = 4,
  	ACPI_EINJ_INSTRUCTION_RESERVED = 5	/* 5 and greater are reserved */
  };
3fa347770   Bob Moore   ACPICA: Disassemb...
237
238
239
240
241
242
243
244
  /* EINJ Trigger Error Action Table */
  
  struct acpi_einj_trigger {
  	u32 header_size;
  	u32 revision;
  	u32 table_size;
  	u32 entry_count;
  };
6e2d5ebd0   Bob Moore   ACPICA: ACPI 4: U...
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
  /* Command status return values */
  
  enum acpi_einj_command_status {
  	ACPI_EINJ_SUCCESS = 0,
  	ACPI_EINJ_FAILURE = 1,
  	ACPI_EINJ_INVALID_ACCESS = 2,
  	ACPI_EINJ_STATUS_RESERVED = 3	/* 3 and greater are reserved */
  };
  
  /* Error types returned from ACPI_EINJ_GET_ERROR_TYPE (bitfield) */
  
  #define ACPI_EINJ_PROCESSOR_CORRECTABLE     (1)
  #define ACPI_EINJ_PROCESSOR_UNCORRECTABLE   (1<<1)
  #define ACPI_EINJ_PROCESSOR_FATAL           (1<<2)
  #define ACPI_EINJ_MEMORY_CORRECTABLE        (1<<3)
  #define ACPI_EINJ_MEMORY_UNCORRECTABLE      (1<<4)
  #define ACPI_EINJ_MEMORY_FATAL              (1<<5)
  #define ACPI_EINJ_PCIX_CORRECTABLE          (1<<6)
  #define ACPI_EINJ_PCIX_UNCORRECTABLE        (1<<7)
  #define ACPI_EINJ_PCIX_FATAL                (1<<8)
  #define ACPI_EINJ_PLATFORM_CORRECTABLE      (1<<9)
  #define ACPI_EINJ_PLATFORM_UNCORRECTABLE    (1<<10)
  #define ACPI_EINJ_PLATFORM_FATAL            (1<<11)
970d9c9ec   Bob Moore   ACPICA: Include f...
268
269
  /*******************************************************************************
   *
6e2d5ebd0   Bob Moore   ACPICA: ACPI 4: U...
270
271
   * ERST - Error Record Serialization Table (ACPI 4.0)
   *        Version 1
970d9c9ec   Bob Moore   ACPICA: Include f...
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
   *
   ******************************************************************************/
  
  struct acpi_table_erst {
  	struct acpi_table_header header;	/* Common ACPI table header */
  	u32 header_length;
  	u32 reserved;
  	u32 entries;
  };
  
  /* ERST Serialization Entries (actions) */
  
  struct acpi_erst_entry {
  	struct acpi_whea_header whea_header;	/* Common header for WHEA tables */
  };
6e2d5ebd0   Bob Moore   ACPICA: ACPI 4: U...
287
288
289
  /* Masks for Flags field above */
  
  #define ACPI_ERST_PRESERVE          (1)
970d9c9ec   Bob Moore   ACPICA: Include f...
290
291
292
  /* Values for Action field above */
  
  enum acpi_erst_actions {
6e2d5ebd0   Bob Moore   ACPICA: ACPI 4: U...
293
294
295
296
  	ACPI_ERST_BEGIN_WRITE = 0,
  	ACPI_ERST_BEGIN_READ = 1,
  	ACPI_ERST_BEGIN_CLEAR = 2,
  	ACPI_ERST_END = 3,
970d9c9ec   Bob Moore   ACPICA: Include f...
297
298
299
300
  	ACPI_ERST_SET_RECORD_OFFSET = 4,
  	ACPI_ERST_EXECUTE_OPERATION = 5,
  	ACPI_ERST_CHECK_BUSY_STATUS = 6,
  	ACPI_ERST_GET_COMMAND_STATUS = 7,
6e2d5ebd0   Bob Moore   ACPICA: ACPI 4: U...
301
302
  	ACPI_ERST_GET_RECORD_ID = 8,
  	ACPI_ERST_SET_RECORD_ID = 9,
970d9c9ec   Bob Moore   ACPICA: Include f...
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
  	ACPI_ERST_GET_RECORD_COUNT = 10,
  	ACPI_ERST_BEGIN_DUMMY_WRIITE = 11,
  	ACPI_ERST_NOT_USED = 12,
  	ACPI_ERST_GET_ERROR_RANGE = 13,
  	ACPI_ERST_GET_ERROR_LENGTH = 14,
  	ACPI_ERST_GET_ERROR_ATTRIBUTES = 15,
  	ACPI_ERST_ACTION_RESERVED = 16	/* 16 and greater are reserved */
  };
  
  /* Values for Instruction field above */
  
  enum acpi_erst_instructions {
  	ACPI_ERST_READ_REGISTER = 0,
  	ACPI_ERST_READ_REGISTER_VALUE = 1,
  	ACPI_ERST_WRITE_REGISTER = 2,
  	ACPI_ERST_WRITE_REGISTER_VALUE = 3,
  	ACPI_ERST_NOOP = 4,
  	ACPI_ERST_LOAD_VAR1 = 5,
  	ACPI_ERST_LOAD_VAR2 = 6,
  	ACPI_ERST_STORE_VAR1 = 7,
  	ACPI_ERST_ADD = 8,
  	ACPI_ERST_SUBTRACT = 9,
  	ACPI_ERST_ADD_VALUE = 10,
  	ACPI_ERST_SUBTRACT_VALUE = 11,
  	ACPI_ERST_STALL = 12,
  	ACPI_ERST_STALL_WHILE_TRUE = 13,
  	ACPI_ERST_SKIP_NEXT_IF_TRUE = 14,
  	ACPI_ERST_GOTO = 15,
  	ACPI_ERST_SET_SRC_ADDRESS_BASE = 16,
  	ACPI_ERST_SET_DST_ADDRESS_BASE = 17,
  	ACPI_ERST_MOVE_DATA = 18,
  	ACPI_ERST_INSTRUCTION_RESERVED = 19	/* 19 and greater are reserved */
  };
6e2d5ebd0   Bob Moore   ACPICA: ACPI 4: U...
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
  /* Command status return values */
  
  enum acpi_erst_command_status {
  	ACPI_ERST_SUCESS = 0,
  	ACPI_ERST_NO_SPACE = 1,
  	ACPI_ERST_NOT_AVAILABLE = 2,
  	ACPI_ERST_FAILURE = 3,
  	ACPI_ERST_RECORD_EMPTY = 4,
  	ACPI_ERST_NOT_FOUND = 5,
  	ACPI_ERST_STATUS_RESERVED = 6	/* 6 and greater are reserved */
  };
  
  /* Error Record Serialization Information */
  
  struct acpi_erst_info {
  	u16 signature;		/* Should be "ER" */
  	u8 data[48];
  };
970d9c9ec   Bob Moore   ACPICA: Include f...
354
355
  /*******************************************************************************
   *
6e2d5ebd0   Bob Moore   ACPICA: ACPI 4: U...
356
357
   * HEST - Hardware Error Source Table (ACPI 4.0)
   *        Version 1
970d9c9ec   Bob Moore   ACPICA: Include f...
358
359
360
361
362
363
364
   *
   ******************************************************************************/
  
  struct acpi_table_hest {
  	struct acpi_table_header header;	/* Common ACPI table header */
  	u32 error_source_count;
  };
3fa347770   Bob Moore   ACPICA: Disassemb...
365
366
367
368
  /* HEST subtable header */
  
  struct acpi_hest_header {
  	u16 type;
6e2d5ebd0   Bob Moore   ACPICA: ACPI 4: U...
369
  	u16 source_id;
3fa347770   Bob Moore   ACPICA: Disassemb...
370
371
372
373
374
  };
  
  /* Values for Type field above for subtables */
  
  enum acpi_hest_types {
6e2d5ebd0   Bob Moore   ACPICA: ACPI 4: U...
375
376
377
378
379
380
  	ACPI_HEST_TYPE_IA32_CHECK = 0,
  	ACPI_HEST_TYPE_IA32_CORRECTED_CHECK = 1,
  	ACPI_HEST_TYPE_IA32_NMI = 2,
  	ACPI_HEST_TYPE_NOT_USED3 = 3,
  	ACPI_HEST_TYPE_NOT_USED4 = 4,
  	ACPI_HEST_TYPE_NOT_USED5 = 5,
3fa347770   Bob Moore   ACPICA: Disassemb...
381
382
383
  	ACPI_HEST_TYPE_AER_ROOT_PORT = 6,
  	ACPI_HEST_TYPE_AER_ENDPOINT = 7,
  	ACPI_HEST_TYPE_AER_BRIDGE = 8,
6e2d5ebd0   Bob Moore   ACPICA: ACPI 4: U...
384
  	ACPI_HEST_TYPE_GENERIC_ERROR = 9,
3fa347770   Bob Moore   ACPICA: Disassemb...
385
386
387
388
  	ACPI_HEST_TYPE_RESERVED = 10	/* 10 and greater are reserved */
  };
  
  /*
6e2d5ebd0   Bob Moore   ACPICA: ACPI 4: U...
389
   * HEST substructures contained in subtables
3fa347770   Bob Moore   ACPICA: Disassemb...
390
   */
6e2d5ebd0   Bob Moore   ACPICA: ACPI 4: U...
391
392
393
394
395
  /*
   * IA32 Error Bank(s) - Follows the struct acpi_hest_ia_machine_check and
   * struct acpi_hest_ia_corrected structures.
   */
  struct acpi_hest_ia_error_bank {
3fa347770   Bob Moore   ACPICA: Disassemb...
396
397
398
  	u8 bank_number;
  	u8 clear_status_on_init;
  	u8 status_format;
6e2d5ebd0   Bob Moore   ACPICA: ACPI 4: U...
399
  	u8 reserved;
3fa347770   Bob Moore   ACPICA: Disassemb...
400
  	u32 control_register;
6e2d5ebd0   Bob Moore   ACPICA: ACPI 4: U...
401
  	u64 control_data;
3fa347770   Bob Moore   ACPICA: Disassemb...
402
403
404
405
  	u32 status_register;
  	u32 address_register;
  	u32 misc_register;
  };
6e2d5ebd0   Bob Moore   ACPICA: ACPI 4: U...
406
  /* Common HEST sub-structure for PCI/AER structures below (6,7,8) */
3fa347770   Bob Moore   ACPICA: Disassemb...
407
408
  
  struct acpi_hest_aer_common {
6e2d5ebd0   Bob Moore   ACPICA: ACPI 4: U...
409
  	u16 reserved1;
3fa347770   Bob Moore   ACPICA: Disassemb...
410
411
  	u8 flags;
  	u8 enabled;
c276e3884   Bob Moore   ACPICA: Update de...
412
  	u32 records_to_preallocate;
3fa347770   Bob Moore   ACPICA: Disassemb...
413
414
415
416
417
  	u32 max_sections_per_record;
  	u32 bus;
  	u16 device;
  	u16 function;
  	u16 device_control;
6e2d5ebd0   Bob Moore   ACPICA: ACPI 4: U...
418
  	u16 reserved2;
c276e3884   Bob Moore   ACPICA: Update de...
419
420
421
422
  	u32 uncorrectable_mask;
  	u32 uncorrectable_severity;
  	u32 correctable_mask;
  	u32 advanced_capabilities;
3fa347770   Bob Moore   ACPICA: Disassemb...
423
  };
6e2d5ebd0   Bob Moore   ACPICA: ACPI 4: U...
424
425
426
427
  /* Masks for HEST Flags fields */
  
  #define ACPI_HEST_FIRMWARE_FIRST        (1)
  #define ACPI_HEST_GLOBAL                (1<<1)
3fa347770   Bob Moore   ACPICA: Disassemb...
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
  /* Hardware Error Notification */
  
  struct acpi_hest_notify {
  	u8 type;
  	u8 length;
  	u16 config_write_enable;
  	u32 poll_interval;
  	u32 vector;
  	u32 polling_threshold_value;
  	u32 polling_threshold_window;
  	u32 error_threshold_value;
  	u32 error_threshold_window;
  };
  
  /* Values for Notify Type field above */
  
  enum acpi_hest_notify_types {
  	ACPI_HEST_NOTIFY_POLLED = 0,
  	ACPI_HEST_NOTIFY_EXTERNAL = 1,
  	ACPI_HEST_NOTIFY_LOCAL = 2,
  	ACPI_HEST_NOTIFY_SCI = 3,
  	ACPI_HEST_NOTIFY_NMI = 4,
  	ACPI_HEST_NOTIFY_RESERVED = 5	/* 5 and greater are reserved */
  };
6e2d5ebd0   Bob Moore   ACPICA: ACPI 4: U...
452
453
454
455
456
457
458
459
  /* Values for config_write_enable bitfield above */
  
  #define ACPI_HEST_TYPE                  (1)
  #define ACPI_HEST_POLL_INTERVAL         (1<<1)
  #define ACPI_HEST_POLL_THRESHOLD_VALUE  (1<<2)
  #define ACPI_HEST_POLL_THRESHOLD_WINDOW (1<<3)
  #define ACPI_HEST_ERR_THRESHOLD_VALUE   (1<<4)
  #define ACPI_HEST_ERR_THRESHOLD_WINDOW  (1<<5)
3fa347770   Bob Moore   ACPICA: Disassemb...
460
461
  /*
   * HEST subtables
3fa347770   Bob Moore   ACPICA: Disassemb...
462
   */
6e2d5ebd0   Bob Moore   ACPICA: ACPI 4: U...
463
  /* 0: IA32 Machine Check Exception */
3fa347770   Bob Moore   ACPICA: Disassemb...
464

6e2d5ebd0   Bob Moore   ACPICA: ACPI 4: U...
465
  struct acpi_hest_ia_machine_check {
3fa347770   Bob Moore   ACPICA: Disassemb...
466
  	struct acpi_hest_header header;
6e2d5ebd0   Bob Moore   ACPICA: ACPI 4: U...
467
  	u16 reserved1;
3fa347770   Bob Moore   ACPICA: Disassemb...
468
  	u8 flags;
6e2d5ebd0   Bob Moore   ACPICA: ACPI 4: U...
469
  	u8 enabled;
c276e3884   Bob Moore   ACPICA: Update de...
470
  	u32 records_to_preallocate;
3fa347770   Bob Moore   ACPICA: Disassemb...
471
472
473
474
  	u32 max_sections_per_record;
  	u64 global_capability_data;
  	u64 global_control_data;
  	u8 num_hardware_banks;
6e2d5ebd0   Bob Moore   ACPICA: ACPI 4: U...
475
  	u8 reserved3[7];
3fa347770   Bob Moore   ACPICA: Disassemb...
476
  };
6e2d5ebd0   Bob Moore   ACPICA: ACPI 4: U...
477
  /* 1: IA32 Corrected Machine Check */
3fa347770   Bob Moore   ACPICA: Disassemb...
478

1872bbc94   Bob Moore   ACPICA: Fix typo ...
479
  struct acpi_hest_ia_corrected {
3fa347770   Bob Moore   ACPICA: Disassemb...
480
  	struct acpi_hest_header header;
6e2d5ebd0   Bob Moore   ACPICA: ACPI 4: U...
481
  	u16 reserved1;
3fa347770   Bob Moore   ACPICA: Disassemb...
482
483
  	u8 flags;
  	u8 enabled;
c276e3884   Bob Moore   ACPICA: Update de...
484
  	u32 records_to_preallocate;
3fa347770   Bob Moore   ACPICA: Disassemb...
485
486
487
  	u32 max_sections_per_record;
  	struct acpi_hest_notify notify;
  	u8 num_hardware_banks;
6e2d5ebd0   Bob Moore   ACPICA: ACPI 4: U...
488
  	u8 reserved2[3];
3fa347770   Bob Moore   ACPICA: Disassemb...
489
  };
6e2d5ebd0   Bob Moore   ACPICA: ACPI 4: U...
490
  /* 2: IA32 Non-Maskable Interrupt */
3fa347770   Bob Moore   ACPICA: Disassemb...
491

6e2d5ebd0   Bob Moore   ACPICA: ACPI 4: U...
492
  struct acpi_hest_ia_nmi {
3fa347770   Bob Moore   ACPICA: Disassemb...
493
  	struct acpi_hest_header header;
3fa347770   Bob Moore   ACPICA: Disassemb...
494
  	u32 reserved;
c276e3884   Bob Moore   ACPICA: Update de...
495
  	u32 records_to_preallocate;
3fa347770   Bob Moore   ACPICA: Disassemb...
496
497
498
  	u32 max_sections_per_record;
  	u32 max_raw_data_length;
  };
6e2d5ebd0   Bob Moore   ACPICA: ACPI 4: U...
499
  /* 3,4,5: Not used */
3fa347770   Bob Moore   ACPICA: Disassemb...
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
  
  /* 6: PCI Express Root Port AER */
  
  struct acpi_hest_aer_root {
  	struct acpi_hest_header header;
  	struct acpi_hest_aer_common aer;
  	u32 root_error_command;
  };
  
  /* 7: PCI Express AER (AER Endpoint) */
  
  struct acpi_hest_aer {
  	struct acpi_hest_header header;
  	struct acpi_hest_aer_common aer;
  };
  
  /* 8: PCI Express/PCI-X Bridge AER */
  
  struct acpi_hest_aer_bridge {
  	struct acpi_hest_header header;
  	struct acpi_hest_aer_common aer;
c276e3884   Bob Moore   ACPICA: Update de...
521
522
523
  	u32 uncorrectable_mask2;
  	u32 uncorrectable_severity2;
  	u32 advanced_capabilities2;
3fa347770   Bob Moore   ACPICA: Disassemb...
524
525
526
527
528
529
  };
  
  /* 9: Generic Hardware Error Source */
  
  struct acpi_hest_generic {
  	struct acpi_hest_header header;
3fa347770   Bob Moore   ACPICA: Disassemb...
530
  	u16 related_source_id;
6e2d5ebd0   Bob Moore   ACPICA: ACPI 4: U...
531
  	u8 reserved;
3fa347770   Bob Moore   ACPICA: Disassemb...
532
  	u8 enabled;
c276e3884   Bob Moore   ACPICA: Update de...
533
  	u32 records_to_preallocate;
3fa347770   Bob Moore   ACPICA: Disassemb...
534
535
536
537
  	u32 max_sections_per_record;
  	u32 max_raw_data_length;
  	struct acpi_generic_address error_status_address;
  	struct acpi_hest_notify notify;
6e2d5ebd0   Bob Moore   ACPICA: ACPI 4: U...
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
  	u32 error_block_length;
  };
  
  /* Generic Error Status block */
  
  struct acpi_hest_generic_status {
  	u32 block_status;
  	u32 raw_data_offset;
  	u32 raw_data_length;
  	u32 data_length;
  	u32 error_severity;
  };
  
  /* Values for block_status flags above */
  
  #define ACPI_HEST_UNCORRECTABLE             (1)
  #define ACPI_HEST_CORRECTABLE               (1<<1)
  #define ACPI_HEST_MULTIPLE_UNCORRECTABLE    (1<<2)
  #define ACPI_HEST_MULTIPLE_CORRECTABLE      (1<<3)
  #define ACPI_HEST_ERROR_ENTRY_COUNT         (0xFF<<4)	/* 8 bits, error count */
  
  /* Generic Error Data entry */
  
  struct acpi_hest_generic_data {
  	u8 section_type[16];
  	u32 error_severity;
  	u16 revision;
  	u8 validation_bits;
  	u8 flags;
  	u32 error_data_length;
  	u8 fru_id[16];
  	u8 fru_text[20];
3fa347770   Bob Moore   ACPICA: Disassemb...
570
  };
970d9c9ec   Bob Moore   ACPICA: Include f...
571
572
573
  
  /*******************************************************************************
   *
793c2388c   Bob Moore   ACPI: ACPICA 2006...
574
   * MADT - Multiple APIC Description Table
6e2d5ebd0   Bob Moore   ACPICA: ACPI 4: U...
575
   *        Version 3
793c2388c   Bob Moore   ACPI: ACPICA 2006...
576
577
   *
   ******************************************************************************/
f3d2e7865   Bob Moore   ACPICA: Implement...
578
579
580
581
  struct acpi_table_madt {
  	struct acpi_table_header header;	/* Common ACPI table header */
  	u32 address;		/* Physical address of local APIC */
  	u32 flags;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
582
  };
6e2d5ebd0   Bob Moore   ACPICA: ACPI 4: U...
583
  /* Masks for Flags field above */
793c2388c   Bob Moore   ACPI: ACPICA 2006...
584

6e2d5ebd0   Bob Moore   ACPICA: ACPI 4: U...
585
  #define ACPI_MADT_PCAT_COMPAT       (1)	/* 00: System also has dual 8259s */
793c2388c   Bob Moore   ACPI: ACPICA 2006...
586

f3d2e7865   Bob Moore   ACPICA: Implement...
587
  /* Values for PCATCompat flag */
793c2388c   Bob Moore   ACPI: ACPICA 2006...
588

f3d2e7865   Bob Moore   ACPICA: Implement...
589
590
  #define ACPI_MADT_DUAL_PIC          0
  #define ACPI_MADT_MULTIPLE_APIC     1
793c2388c   Bob Moore   ACPI: ACPICA 2006...
591

6e2d5ebd0   Bob Moore   ACPICA: ACPI 4: U...
592
  /* Values for MADT subtable type in struct acpi_subtable_header */
793c2388c   Bob Moore   ACPI: ACPICA 2006...
593

f3d2e7865   Bob Moore   ACPICA: Implement...
594
595
596
597
598
599
600
601
602
603
  enum acpi_madt_type {
  	ACPI_MADT_TYPE_LOCAL_APIC = 0,
  	ACPI_MADT_TYPE_IO_APIC = 1,
  	ACPI_MADT_TYPE_INTERRUPT_OVERRIDE = 2,
  	ACPI_MADT_TYPE_NMI_SOURCE = 3,
  	ACPI_MADT_TYPE_LOCAL_APIC_NMI = 4,
  	ACPI_MADT_TYPE_LOCAL_APIC_OVERRIDE = 5,
  	ACPI_MADT_TYPE_IO_SAPIC = 6,
  	ACPI_MADT_TYPE_LOCAL_SAPIC = 7,
  	ACPI_MADT_TYPE_INTERRUPT_SOURCE = 8,
1d7cc0304   Bob Moore   ACPICA: x2APIC su...
604
605
606
  	ACPI_MADT_TYPE_LOCAL_X2APIC = 9,
  	ACPI_MADT_TYPE_LOCAL_X2APIC_NMI = 10,
  	ACPI_MADT_TYPE_RESERVED = 11	/* 11 and greater are reserved */
f3d2e7865   Bob Moore   ACPICA: Implement...
607
  };
793c2388c   Bob Moore   ACPI: ACPICA 2006...
608

1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
609
  /*
f3d2e7865   Bob Moore   ACPICA: Implement...
610
   * MADT Sub-tables, correspond to Type in struct acpi_subtable_header
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
611
   */
793c2388c   Bob Moore   ACPI: ACPICA 2006...
612

f3d2e7865   Bob Moore   ACPICA: Implement...
613
  /* 0: Processor Local APIC */
793c2388c   Bob Moore   ACPI: ACPICA 2006...
614

f3d2e7865   Bob Moore   ACPICA: Implement...
615
616
617
618
619
620
  struct acpi_madt_local_apic {
  	struct acpi_subtable_header header;
  	u8 processor_id;	/* ACPI processor id */
  	u8 id;			/* Processor's local APIC id */
  	u32 lapic_flags;
  };
793c2388c   Bob Moore   ACPI: ACPICA 2006...
621
622
  
  /* 1: IO APIC */
f3d2e7865   Bob Moore   ACPICA: Implement...
623
624
625
  struct acpi_madt_io_apic {
  	struct acpi_subtable_header header;
  	u8 id;			/* I/O APIC ID */
793c2388c   Bob Moore   ACPI: ACPICA 2006...
626
627
  	u8 reserved;		/* Reserved - must be zero */
  	u32 address;		/* APIC physical address */
f3d2e7865   Bob Moore   ACPICA: Implement...
628
  	u32 global_irq_base;	/* Global system interrupt where INTI lines start */
793c2388c   Bob Moore   ACPI: ACPICA 2006...
629
630
631
  };
  
  /* 2: Interrupt Override */
f3d2e7865   Bob Moore   ACPICA: Implement...
632
633
634
635
636
637
638
  struct acpi_madt_interrupt_override {
  	struct acpi_subtable_header header;
  	u8 bus;			/* 0 - ISA */
  	u8 source_irq;		/* Interrupt source (IRQ) */
  	u32 global_irq;		/* Global system interrupt */
  	u16 inti_flags;
  };
793c2388c   Bob Moore   ACPI: ACPICA 2006...
639

f3d2e7865   Bob Moore   ACPICA: Implement...
640
  /* 3: NMI Source */
793c2388c   Bob Moore   ACPI: ACPICA 2006...
641

f3d2e7865   Bob Moore   ACPICA: Implement...
642
643
644
645
  struct acpi_madt_nmi_source {
  	struct acpi_subtable_header header;
  	u16 inti_flags;
  	u32 global_irq;		/* Global system interrupt */
793c2388c   Bob Moore   ACPI: ACPICA 2006...
646
647
648
  };
  
  /* 4: Local APIC NMI */
f3d2e7865   Bob Moore   ACPICA: Implement...
649
650
651
652
653
  struct acpi_madt_local_apic_nmi {
  	struct acpi_subtable_header header;
  	u8 processor_id;	/* ACPI processor id */
  	u16 inti_flags;
  	u8 lint;		/* LINTn to which NMI is connected */
793c2388c   Bob Moore   ACPI: ACPICA 2006...
654
655
656
  };
  
  /* 5: Address Override */
f3d2e7865   Bob Moore   ACPICA: Implement...
657
658
659
  struct acpi_madt_local_apic_override {
  	struct acpi_subtable_header header;
  	u16 reserved;		/* Reserved, must be zero */
793c2388c   Bob Moore   ACPI: ACPICA 2006...
660
661
662
663
  	u64 address;		/* APIC physical address */
  };
  
  /* 6: I/O Sapic */
f3d2e7865   Bob Moore   ACPICA: Implement...
664
665
666
  struct acpi_madt_io_sapic {
  	struct acpi_subtable_header header;
  	u8 id;			/* I/O SAPIC ID */
793c2388c   Bob Moore   ACPI: ACPICA 2006...
667
  	u8 reserved;		/* Reserved, must be zero */
f3d2e7865   Bob Moore   ACPICA: Implement...
668
  	u32 global_irq_base;	/* Global interrupt for SAPIC start */
793c2388c   Bob Moore   ACPI: ACPICA 2006...
669
670
671
672
  	u64 address;		/* SAPIC physical address */
  };
  
  /* 7: Local Sapic */
f3d2e7865   Bob Moore   ACPICA: Implement...
673
674
675
676
677
  struct acpi_madt_local_sapic {
  	struct acpi_subtable_header header;
  	u8 processor_id;	/* ACPI processor id */
  	u8 id;			/* SAPIC ID */
  	u8 eid;			/* SAPIC EID */
793c2388c   Bob Moore   ACPI: ACPICA 2006...
678
  	u8 reserved[3];		/* Reserved, must be zero */
f3d2e7865   Bob Moore   ACPICA: Implement...
679
680
681
  	u32 lapic_flags;
  	u32 uid;		/* Numeric UID - ACPI 3.0 */
  	char uid_string[1];	/* String UID  - ACPI 3.0 */
793c2388c   Bob Moore   ACPI: ACPICA 2006...
682
683
684
  };
  
  /* 8: Platform Interrupt Source */
f3d2e7865   Bob Moore   ACPICA: Implement...
685
686
687
688
689
690
  struct acpi_madt_interrupt_source {
  	struct acpi_subtable_header header;
  	u16 inti_flags;
  	u8 type;		/* 1=PMI, 2=INIT, 3=corrected */
  	u8 id;			/* Processor ID */
  	u8 eid;			/* Processor EID */
793c2388c   Bob Moore   ACPI: ACPICA 2006...
691
  	u8 io_sapic_vector;	/* Vector value for PMI interrupts */
f3d2e7865   Bob Moore   ACPICA: Implement...
692
  	u32 global_irq;		/* Global system interrupt */
793c2388c   Bob Moore   ACPI: ACPICA 2006...
693
694
  	u32 flags;		/* Interrupt Source Flags */
  };
6e2d5ebd0   Bob Moore   ACPICA: ACPI 4: U...
695
  /* Masks for Flags field above */
f3d2e7865   Bob Moore   ACPICA: Implement...
696
697
  
  #define ACPI_MADT_CPEI_OVERRIDE     (1)
eb2289ba1   Bob Moore   ACPICA: ACPI 4.0:...
698
  /* 9: Processor Local X2APIC (ACPI 4.0) */
1d7cc0304   Bob Moore   ACPICA: x2APIC su...
699
700
701
702
  
  struct acpi_madt_local_x2apic {
  	struct acpi_subtable_header header;
  	u16 reserved;		/* Reserved - must be zero */
786c221a3   Suresh Siddha   ACPI: update x2ap...
703
  	u32 local_apic_id;	/* Processor x2APIC ID  */
1d7cc0304   Bob Moore   ACPICA: x2APIC su...
704
  	u32 lapic_flags;
786c221a3   Suresh Siddha   ACPI: update x2ap...
705
  	u32 uid;		/* ACPI processor UID */
1d7cc0304   Bob Moore   ACPICA: x2APIC su...
706
  };
eb2289ba1   Bob Moore   ACPICA: ACPI 4.0:...
707
  /* 10: Local X2APIC NMI (ACPI 4.0) */
1d7cc0304   Bob Moore   ACPICA: x2APIC su...
708
709
710
711
  
  struct acpi_madt_local_x2apic_nmi {
  	struct acpi_subtable_header header;
  	u16 inti_flags;
786c221a3   Suresh Siddha   ACPI: update x2ap...
712
  	u32 uid;		/* ACPI processor UID */
1d7cc0304   Bob Moore   ACPICA: x2APIC su...
713
714
715
  	u8 lint;		/* LINTn to which NMI is connected */
  	u8 reserved[3];
  };
f3d2e7865   Bob Moore   ACPICA: Implement...
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
  /*
   * Common flags fields for MADT subtables
   */
  
  /* MADT Local APIC flags (lapic_flags) */
  
  #define ACPI_MADT_ENABLED           (1)	/* 00: Processor is usable if set */
  
  /* MADT MPS INTI flags (inti_flags) */
  
  #define ACPI_MADT_POLARITY_MASK     (3)	/* 00-01: Polarity of APIC I/O input signals */
  #define ACPI_MADT_TRIGGER_MASK      (3<<2)	/* 02-03: Trigger mode of APIC input signals */
  
  /* Values for MPS INTI flags */
  
  #define ACPI_MADT_POLARITY_CONFORMS       0
  #define ACPI_MADT_POLARITY_ACTIVE_HIGH    1
  #define ACPI_MADT_POLARITY_RESERVED       2
  #define ACPI_MADT_POLARITY_ACTIVE_LOW     3
  
  #define ACPI_MADT_TRIGGER_CONFORMS        (0)
  #define ACPI_MADT_TRIGGER_EDGE            (1<<2)
  #define ACPI_MADT_TRIGGER_RESERVED        (2<<2)
  #define ACPI_MADT_TRIGGER_LEVEL           (3<<2)
793c2388c   Bob Moore   ACPI: ACPICA 2006...
740
741
  /*******************************************************************************
   *
6e2d5ebd0   Bob Moore   ACPICA: ACPI 4: U...
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
   * MSCT - Maximum System Characteristics Table (ACPI 4.0)
   *        Version 1
   *
   ******************************************************************************/
  
  struct acpi_table_msct {
  	struct acpi_table_header header;	/* Common ACPI table header */
  	u32 proximity_offset;	/* Location of proximity info struct(s) */
  	u32 max_proximity_domains;	/* Max number of proximity domains */
  	u32 max_clock_domains;	/* Max number of clock domains */
  	u64 max_address;	/* Max physical address in system */
  };
  
  /* Subtable - Maximum Proximity Domain Information. Version 1 */
  
  struct acpi_msct_proximity {
  	u8 revision;
  	u8 length;
  	u32 range_start;	/* Start of domain range */
  	u32 range_end;		/* End of domain range */
  	u32 processor_capacity;
  	u64 memory_capacity;	/* In bytes */
  };
  
  /*******************************************************************************
   *
793c2388c   Bob Moore   ACPI: ACPICA 2006...
768
   * SBST - Smart Battery Specification Table
6e2d5ebd0   Bob Moore   ACPICA: ACPI 4: U...
769
   *        Version 1
793c2388c   Bob Moore   ACPI: ACPICA 2006...
770
771
   *
   ******************************************************************************/
f3d2e7865   Bob Moore   ACPICA: Implement...
772
773
774
  struct acpi_table_sbst {
  	struct acpi_table_header header;	/* Common ACPI table header */
  	u32 warning_level;
793c2388c   Bob Moore   ACPI: ACPICA 2006...
775
776
777
778
779
780
781
  	u32 low_level;
  	u32 critical_level;
  };
  
  /*******************************************************************************
   *
   * SLIT - System Locality Distance Information Table
6e2d5ebd0   Bob Moore   ACPICA: ACPI 4: U...
782
   *        Version 1
793c2388c   Bob Moore   ACPI: ACPICA 2006...
783
784
   *
   ******************************************************************************/
f3d2e7865   Bob Moore   ACPICA: Implement...
785
786
787
788
  struct acpi_table_slit {
  	struct acpi_table_header header;	/* Common ACPI table header */
  	u64 locality_count;
  	u8 entry[1];		/* Real size = localities^2 */
793c2388c   Bob Moore   ACPI: ACPICA 2006...
789
790
791
792
  };
  
  /*******************************************************************************
   *
793c2388c   Bob Moore   ACPI: ACPICA 2006...
793
   * SRAT - System Resource Affinity Table
6e2d5ebd0   Bob Moore   ACPICA: ACPI 4: U...
794
   *        Version 3
793c2388c   Bob Moore   ACPI: ACPICA 2006...
795
796
   *
   ******************************************************************************/
f3d2e7865   Bob Moore   ACPICA: Implement...
797
798
799
800
  struct acpi_table_srat {
  	struct acpi_table_header header;	/* Common ACPI table header */
  	u32 table_revision;	/* Must be value '1' */
  	u64 reserved;		/* Reserved, must be zero */
793c2388c   Bob Moore   ACPI: ACPICA 2006...
801
  };
f3d2e7865   Bob Moore   ACPICA: Implement...
802
  /* Values for subtable type in struct acpi_subtable_header */
793c2388c   Bob Moore   ACPI: ACPICA 2006...
803

f3d2e7865   Bob Moore   ACPICA: Implement...
804
805
806
  enum acpi_srat_type {
  	ACPI_SRAT_TYPE_CPU_AFFINITY = 0,
  	ACPI_SRAT_TYPE_MEMORY_AFFINITY = 1,
1d7cc0304   Bob Moore   ACPICA: x2APIC su...
807
808
  	ACPI_SRAT_TYPE_X2APIC_CPU_AFFINITY = 2,
  	ACPI_SRAT_TYPE_RESERVED = 3	/* 3 and greater are reserved */
f3d2e7865   Bob Moore   ACPICA: Implement...
809
  };
793c2388c   Bob Moore   ACPI: ACPICA 2006...
810

1d7cc0304   Bob Moore   ACPICA: x2APIC su...
811
812
813
814
815
  /*
   * SRAT Sub-tables, correspond to Type in struct acpi_subtable_header
   */
  
  /* 0: Processor Local APIC/SAPIC Affinity */
793c2388c   Bob Moore   ACPI: ACPICA 2006...
816

f3d2e7865   Bob Moore   ACPICA: Implement...
817
818
819
  struct acpi_srat_cpu_affinity {
  	struct acpi_subtable_header header;
  	u8 proximity_domain_lo;
793c2388c   Bob Moore   ACPI: ACPICA 2006...
820
  	u8 apic_id;
f3d2e7865   Bob Moore   ACPICA: Implement...
821
  	u32 flags;
793c2388c   Bob Moore   ACPI: ACPICA 2006...
822
823
  	u8 local_sapic_eid;
  	u8 proximity_domain_hi[3];
f3d2e7865   Bob Moore   ACPICA: Implement...
824
  	u32 reserved;		/* Reserved, must be zero */
793c2388c   Bob Moore   ACPI: ACPICA 2006...
825
  };
6e2d5ebd0   Bob Moore   ACPICA: ACPI 4: U...
826
827
828
  /* Flags */
  
  #define ACPI_SRAT_CPU_USE_AFFINITY  (1)	/* 00: Use affinity structure */
1d7cc0304   Bob Moore   ACPICA: x2APIC su...
829
  /* 1: Memory Affinity */
f3d2e7865   Bob Moore   ACPICA: Implement...
830
831
832
833
834
  
  struct acpi_srat_mem_affinity {
  	struct acpi_subtable_header header;
  	u32 proximity_domain;
  	u16 reserved;		/* Reserved, must be zero */
793c2388c   Bob Moore   ACPI: ACPICA 2006...
835
  	u64 base_address;
f3d2e7865   Bob Moore   ACPICA: Implement...
836
  	u64 length;
19d0cfe9d   Bob Moore   ACPICA: Update DM...
837
         u32 reserved1;
f3d2e7865   Bob Moore   ACPICA: Implement...
838
  	u32 flags;
19d0cfe9d   Bob Moore   ACPICA: Update DM...
839
         u64 reserved2;	       /* Reserved, must be zero */
f3d2e7865   Bob Moore   ACPICA: Implement...
840
841
842
  };
  
  /* Flags */
f9f4601f3   Robert Moore   ACPICA 20050708 f...
843

f3d2e7865   Bob Moore   ACPICA: Implement...
844
845
846
  #define ACPI_SRAT_MEM_ENABLED       (1)	/* 00: Use affinity structure */
  #define ACPI_SRAT_MEM_HOT_PLUGGABLE (1<<1)	/* 01: Memory region is hot pluggable */
  #define ACPI_SRAT_MEM_NON_VOLATILE  (1<<2)	/* 02: Memory region is non-volatile */
f9f4601f3   Robert Moore   ACPICA 20050708 f...
847

eb2289ba1   Bob Moore   ACPICA: ACPI 4.0:...
848
  /* 2: Processor Local X2_APIC Affinity (ACPI 4.0) */
1d7cc0304   Bob Moore   ACPICA: x2APIC su...
849
850
851
852
853
854
855
  
  struct acpi_srat_x2apic_cpu_affinity {
  	struct acpi_subtable_header header;
  	u16 reserved;		/* Reserved, must be zero */
  	u32 proximity_domain;
  	u32 apic_id;
  	u32 flags;
eb2289ba1   Bob Moore   ACPICA: ACPI 4.0:...
856
857
  	u32 clock_domain;
  	u32 reserved2;
1d7cc0304   Bob Moore   ACPICA: x2APIC su...
858
859
860
861
862
  };
  
  /* Flags for struct acpi_srat_cpu_affinity and struct acpi_srat_x2apic_cpu_affinity */
  
  #define ACPI_SRAT_CPU_ENABLED       (1)	/* 00: Use affinity structure */
793c2388c   Bob Moore   ACPI: ACPICA 2006...
863
  /* Reset to default packing */
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
864
  #pragma pack()
4be44fcd3   Len Brown   [ACPI] Lindent al...
865
  #endif				/* __ACTBL1_H__ */