mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-08-27 11:19:37 +00:00
Merge "ACPICA: Add CXL 3.0 structures..." into for-6.2/cxl-xor
Pick up:
f350c68e3c
("ACPICA: Add CXL 3.0 structures (CXIMS & RDPAS) to the CEDT table")
...to build the new XOR interleave math support for the CXL Fixed Memory
Window Structures.
This commit is contained in:
commit
7db0aa8cc0
14 changed files with 279 additions and 22 deletions
|
@ -142,6 +142,9 @@ static acpi_status acpi_ev_fixed_event_initialize(void)
|
||||||
status =
|
status =
|
||||||
acpi_write_bit_register(acpi_gbl_fixed_event_info
|
acpi_write_bit_register(acpi_gbl_fixed_event_info
|
||||||
[i].enable_register_id,
|
[i].enable_register_id,
|
||||||
|
(i ==
|
||||||
|
ACPI_EVENT_PCIE_WAKE) ?
|
||||||
|
ACPI_ENABLE_EVENT :
|
||||||
ACPI_DISABLE_EVENT);
|
ACPI_DISABLE_EVENT);
|
||||||
if (ACPI_FAILURE(status)) {
|
if (ACPI_FAILURE(status)) {
|
||||||
return (status);
|
return (status);
|
||||||
|
@ -185,6 +188,11 @@ u32 acpi_ev_fixed_event_detect(void)
|
||||||
return (int_status);
|
return (int_status);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (fixed_enable & ACPI_BITMASK_PCIEXP_WAKE_DISABLE)
|
||||||
|
fixed_enable &= ~ACPI_BITMASK_PCIEXP_WAKE_DISABLE;
|
||||||
|
else
|
||||||
|
fixed_enable |= ACPI_BITMASK_PCIEXP_WAKE_DISABLE;
|
||||||
|
|
||||||
ACPI_DEBUG_PRINT((ACPI_DB_INTERRUPTS,
|
ACPI_DEBUG_PRINT((ACPI_DB_INTERRUPTS,
|
||||||
"Fixed Event Block: Enable %08X Status %08X\n",
|
"Fixed Event Block: Enable %08X Status %08X\n",
|
||||||
fixed_enable, fixed_status));
|
fixed_enable, fixed_status));
|
||||||
|
@ -250,6 +258,9 @@ static u32 acpi_ev_fixed_event_dispatch(u32 event)
|
||||||
if (!acpi_gbl_fixed_event_handlers[event].handler) {
|
if (!acpi_gbl_fixed_event_handlers[event].handler) {
|
||||||
(void)acpi_write_bit_register(acpi_gbl_fixed_event_info[event].
|
(void)acpi_write_bit_register(acpi_gbl_fixed_event_info[event].
|
||||||
enable_register_id,
|
enable_register_id,
|
||||||
|
(event ==
|
||||||
|
ACPI_EVENT_PCIE_WAKE) ?
|
||||||
|
ACPI_ENABLE_EVENT :
|
||||||
ACPI_DISABLE_EVENT);
|
ACPI_DISABLE_EVENT);
|
||||||
|
|
||||||
ACPI_ERROR((AE_INFO,
|
ACPI_ERROR((AE_INFO,
|
||||||
|
|
|
@ -172,6 +172,15 @@ acpi_ev_address_space_dispatch(union acpi_operand_object *region_obj,
|
||||||
ctx->subspace_id = (u8)region_obj->region.address;
|
ctx->subspace_id = (u8)region_obj->region.address;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (region_obj->region.space_id ==
|
||||||
|
ACPI_ADR_SPACE_FIXED_HARDWARE) {
|
||||||
|
struct acpi_ffh_info *ctx =
|
||||||
|
handler_desc->address_space.context;
|
||||||
|
|
||||||
|
ctx->length = region_obj->region.length;
|
||||||
|
ctx->offset = region_obj->region.address;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* We must exit the interpreter because the region setup will
|
* We must exit the interpreter because the region setup will
|
||||||
* potentially execute control methods (for example, the _REG method
|
* potentially execute control methods (for example, the _REG method
|
||||||
|
|
|
@ -295,8 +295,8 @@ acpi_ex_load_op(union acpi_operand_object *obj_desc,
|
||||||
target));
|
target));
|
||||||
}
|
}
|
||||||
if (target->common.type != ACPI_TYPE_INTEGER) {
|
if (target->common.type != ACPI_TYPE_INTEGER) {
|
||||||
ACPI_EXCEPTION((AE_INFO, AE_TYPE,
|
ACPI_ERROR((AE_INFO, "Type not integer: %X",
|
||||||
"Type not integer: %X\n", target->common.type));
|
target->common.type));
|
||||||
return_ACPI_STATUS(AE_AML_OPERAND_TYPE);
|
return_ACPI_STATUS(AE_AML_OPERAND_TYPE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -141,7 +141,9 @@ acpi_ex_read_data_from_field(struct acpi_walk_state *walk_state,
|
||||||
|| obj_desc->field.region_obj->region.space_id ==
|
|| obj_desc->field.region_obj->region.space_id ==
|
||||||
ACPI_ADR_SPACE_IPMI
|
ACPI_ADR_SPACE_IPMI
|
||||||
|| obj_desc->field.region_obj->region.space_id ==
|
|| obj_desc->field.region_obj->region.space_id ==
|
||||||
ACPI_ADR_SPACE_PLATFORM_RT)) {
|
ACPI_ADR_SPACE_PLATFORM_RT
|
||||||
|
|| obj_desc->field.region_obj->region.space_id ==
|
||||||
|
ACPI_ADR_SPACE_FIXED_HARDWARE)) {
|
||||||
|
|
||||||
/* SMBus, GSBus, IPMI serial */
|
/* SMBus, GSBus, IPMI serial */
|
||||||
|
|
||||||
|
@ -305,7 +307,9 @@ acpi_ex_write_data_to_field(union acpi_operand_object *source_desc,
|
||||||
|| obj_desc->field.region_obj->region.space_id ==
|
|| obj_desc->field.region_obj->region.space_id ==
|
||||||
ACPI_ADR_SPACE_IPMI
|
ACPI_ADR_SPACE_IPMI
|
||||||
|| obj_desc->field.region_obj->region.space_id ==
|
|| obj_desc->field.region_obj->region.space_id ==
|
||||||
ACPI_ADR_SPACE_PLATFORM_RT)) {
|
ACPI_ADR_SPACE_PLATFORM_RT
|
||||||
|
|| obj_desc->field.region_obj->region.space_id ==
|
||||||
|
ACPI_ADR_SPACE_FIXED_HARDWARE)) {
|
||||||
|
|
||||||
/* SMBus, GSBus, IPMI serial */
|
/* SMBus, GSBus, IPMI serial */
|
||||||
|
|
||||||
|
|
|
@ -323,6 +323,12 @@ acpi_ex_write_serial_bus(union acpi_operand_object *source_desc,
|
||||||
function = ACPI_WRITE;
|
function = ACPI_WRITE;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case ACPI_ADR_SPACE_FIXED_HARDWARE:
|
||||||
|
|
||||||
|
buffer_length = ACPI_FFH_INPUT_BUFFER_SIZE;
|
||||||
|
function = ACPI_WRITE;
|
||||||
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
return_ACPI_STATUS(AE_AML_INVALID_SPACE_ID);
|
return_ACPI_STATUS(AE_AML_INVALID_SPACE_ID);
|
||||||
}
|
}
|
||||||
|
|
|
@ -311,6 +311,20 @@ acpi_status acpi_hw_legacy_wake(u8 sleep_state)
|
||||||
[ACPI_EVENT_SLEEP_BUTTON].
|
[ACPI_EVENT_SLEEP_BUTTON].
|
||||||
status_register_id, ACPI_CLEAR_STATUS);
|
status_register_id, ACPI_CLEAR_STATUS);
|
||||||
|
|
||||||
|
/* Enable pcie wake event if support */
|
||||||
|
if ((acpi_gbl_FADT.flags & ACPI_FADT_PCI_EXPRESS_WAKE)) {
|
||||||
|
(void)
|
||||||
|
acpi_write_bit_register(acpi_gbl_fixed_event_info
|
||||||
|
[ACPI_EVENT_PCIE_WAKE].
|
||||||
|
enable_register_id,
|
||||||
|
ACPI_DISABLE_EVENT);
|
||||||
|
(void)
|
||||||
|
acpi_write_bit_register(acpi_gbl_fixed_event_info
|
||||||
|
[ACPI_EVENT_PCIE_WAKE].
|
||||||
|
status_register_id,
|
||||||
|
ACPI_CLEAR_STATUS);
|
||||||
|
}
|
||||||
|
|
||||||
acpi_hw_execute_sleep_method(METHOD_PATHNAME__SST, ACPI_SST_WORKING);
|
acpi_hw_execute_sleep_method(METHOD_PATHNAME__SST, ACPI_SST_WORKING);
|
||||||
return_ACPI_STATUS(status);
|
return_ACPI_STATUS(status);
|
||||||
}
|
}
|
||||||
|
|
|
@ -114,6 +114,7 @@ acpi_find_root_pointer(acpi_physical_address *table_address)
|
||||||
u8 *table_ptr;
|
u8 *table_ptr;
|
||||||
u8 *mem_rover;
|
u8 *mem_rover;
|
||||||
u32 physical_address;
|
u32 physical_address;
|
||||||
|
u32 ebda_window_size;
|
||||||
|
|
||||||
ACPI_FUNCTION_TRACE(acpi_find_root_pointer);
|
ACPI_FUNCTION_TRACE(acpi_find_root_pointer);
|
||||||
|
|
||||||
|
@ -139,26 +140,37 @@ acpi_find_root_pointer(acpi_physical_address *table_address)
|
||||||
|
|
||||||
/* EBDA present? */
|
/* EBDA present? */
|
||||||
|
|
||||||
if (physical_address > 0x400) {
|
/*
|
||||||
|
* Check that the EBDA pointer from memory is sane and does not point
|
||||||
|
* above valid low memory
|
||||||
|
*/
|
||||||
|
if (physical_address > 0x400 && physical_address < 0xA0000) {
|
||||||
/*
|
/*
|
||||||
* 1b) Search EBDA paragraphs (EBDA is required to be a
|
* Calculate the scan window size
|
||||||
* minimum of 1K length)
|
* The EBDA is not guaranteed to be larger than a ki_b and in case
|
||||||
|
* that it is smaller, the scanning function would leave the low
|
||||||
|
* memory and continue to the VGA range.
|
||||||
|
*/
|
||||||
|
ebda_window_size = ACPI_MIN(ACPI_EBDA_WINDOW_SIZE,
|
||||||
|
0xA0000 - physical_address);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 1b) Search EBDA paragraphs
|
||||||
*/
|
*/
|
||||||
table_ptr = acpi_os_map_memory((acpi_physical_address)
|
table_ptr = acpi_os_map_memory((acpi_physical_address)
|
||||||
physical_address,
|
physical_address,
|
||||||
ACPI_EBDA_WINDOW_SIZE);
|
ebda_window_size);
|
||||||
if (!table_ptr) {
|
if (!table_ptr) {
|
||||||
ACPI_ERROR((AE_INFO,
|
ACPI_ERROR((AE_INFO,
|
||||||
"Could not map memory at 0x%8.8X for length %u",
|
"Could not map memory at 0x%8.8X for length %u",
|
||||||
physical_address, ACPI_EBDA_WINDOW_SIZE));
|
physical_address, ebda_window_size));
|
||||||
|
|
||||||
return_ACPI_STATUS(AE_NO_MEMORY);
|
return_ACPI_STATUS(AE_NO_MEMORY);
|
||||||
}
|
}
|
||||||
|
|
||||||
mem_rover =
|
mem_rover =
|
||||||
acpi_tb_scan_memory_for_rsdp(table_ptr,
|
acpi_tb_scan_memory_for_rsdp(table_ptr, ebda_window_size);
|
||||||
ACPI_EBDA_WINDOW_SIZE);
|
acpi_os_unmap_memory(table_ptr, ebda_window_size);
|
||||||
acpi_os_unmap_memory(table_ptr, ACPI_EBDA_WINDOW_SIZE);
|
|
||||||
|
|
||||||
if (mem_rover) {
|
if (mem_rover) {
|
||||||
|
|
||||||
|
|
|
@ -186,6 +186,10 @@ struct acpi_fixed_event_info acpi_gbl_fixed_event_info[ACPI_NUM_FIXED_EVENTS] =
|
||||||
ACPI_BITREG_RT_CLOCK_ENABLE,
|
ACPI_BITREG_RT_CLOCK_ENABLE,
|
||||||
ACPI_BITMASK_RT_CLOCK_STATUS,
|
ACPI_BITMASK_RT_CLOCK_STATUS,
|
||||||
ACPI_BITMASK_RT_CLOCK_ENABLE},
|
ACPI_BITMASK_RT_CLOCK_ENABLE},
|
||||||
|
/* ACPI_EVENT_PCIE_WAKE */ {ACPI_BITREG_PCIEXP_WAKE_STATUS,
|
||||||
|
ACPI_BITREG_PCIEXP_WAKE_DISABLE,
|
||||||
|
ACPI_BITMASK_PCIEXP_WAKE_STATUS,
|
||||||
|
ACPI_BITMASK_PCIEXP_WAKE_DISABLE},
|
||||||
};
|
};
|
||||||
#endif /* !ACPI_REDUCED_HARDWARE */
|
#endif /* !ACPI_REDUCED_HARDWARE */
|
||||||
|
|
||||||
|
|
|
@ -145,7 +145,7 @@ void acpi_ut_repair_name(char *name)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
ACPI_COPY_NAMESEG(&original_name, name);
|
ACPI_COPY_NAMESEG(&original_name, &name[0]);
|
||||||
|
|
||||||
/* Check each character in the name */
|
/* Check each character in the name */
|
||||||
|
|
||||||
|
@ -156,10 +156,10 @@ void acpi_ut_repair_name(char *name)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Replace a bad character with something printable, yet technically
|
* Replace a bad character with something printable, yet technically
|
||||||
* still invalid. This prevents any collisions with existing "good"
|
* "odd". This prevents any collisions with existing "good"
|
||||||
* names in the namespace.
|
* names in the namespace.
|
||||||
*/
|
*/
|
||||||
name[i] = '*';
|
name[i] = '_';
|
||||||
found_bad_char = TRUE;
|
found_bad_char = TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -169,8 +169,8 @@ void acpi_ut_repair_name(char *name)
|
||||||
|
|
||||||
if (!acpi_gbl_enable_interpreter_slack) {
|
if (!acpi_gbl_enable_interpreter_slack) {
|
||||||
ACPI_WARNING((AE_INFO,
|
ACPI_WARNING((AE_INFO,
|
||||||
"Invalid character(s) in name (0x%.8X), repaired: [%4.4s]",
|
"Invalid character(s) in name (0x%.8X) %p, repaired: [%4.4s]",
|
||||||
original_name, name));
|
original_name, name, &name[0]));
|
||||||
} else {
|
} else {
|
||||||
ACPI_DEBUG_PRINT((ACPI_DB_INFO,
|
ACPI_DEBUG_PRINT((ACPI_DB_INFO,
|
||||||
"Invalid character(s) in name (0x%.8X), repaired: [%4.4s]",
|
"Invalid character(s) in name (0x%.8X), repaired: [%4.4s]",
|
||||||
|
|
|
@ -190,6 +190,8 @@
|
||||||
|
|
||||||
#define ACPI_PRM_INPUT_BUFFER_SIZE 26
|
#define ACPI_PRM_INPUT_BUFFER_SIZE 26
|
||||||
|
|
||||||
|
#define ACPI_FFH_INPUT_BUFFER_SIZE 256
|
||||||
|
|
||||||
/* _sx_d and _sx_w control methods */
|
/* _sx_d and _sx_w control methods */
|
||||||
|
|
||||||
#define ACPI_NUM_sx_d_METHODS 4
|
#define ACPI_NUM_sx_d_METHODS 4
|
||||||
|
|
|
@ -329,7 +329,9 @@ struct acpi_cedt_header {
|
||||||
enum acpi_cedt_type {
|
enum acpi_cedt_type {
|
||||||
ACPI_CEDT_TYPE_CHBS = 0,
|
ACPI_CEDT_TYPE_CHBS = 0,
|
||||||
ACPI_CEDT_TYPE_CFMWS = 1,
|
ACPI_CEDT_TYPE_CFMWS = 1,
|
||||||
ACPI_CEDT_TYPE_RESERVED = 2,
|
ACPI_CEDT_TYPE_CXIMS = 2,
|
||||||
|
ACPI_CEDT_TYPE_RDPAS = 3,
|
||||||
|
ACPI_CEDT_TYPE_RESERVED = 4,
|
||||||
};
|
};
|
||||||
|
|
||||||
/* Values for version field above */
|
/* Values for version field above */
|
||||||
|
@ -380,6 +382,7 @@ struct acpi_cedt_cfmws_target_element {
|
||||||
/* Values for Interleave Arithmetic field above */
|
/* Values for Interleave Arithmetic field above */
|
||||||
|
|
||||||
#define ACPI_CEDT_CFMWS_ARITHMETIC_MODULO (0)
|
#define ACPI_CEDT_CFMWS_ARITHMETIC_MODULO (0)
|
||||||
|
#define ACPI_CEDT_CFMWS_ARITHMETIC_XOR (1)
|
||||||
|
|
||||||
/* Values for Restrictions field above */
|
/* Values for Restrictions field above */
|
||||||
|
|
||||||
|
@ -389,6 +392,36 @@ struct acpi_cedt_cfmws_target_element {
|
||||||
#define ACPI_CEDT_CFMWS_RESTRICT_PMEM (1<<3)
|
#define ACPI_CEDT_CFMWS_RESTRICT_PMEM (1<<3)
|
||||||
#define ACPI_CEDT_CFMWS_RESTRICT_FIXED (1<<4)
|
#define ACPI_CEDT_CFMWS_RESTRICT_FIXED (1<<4)
|
||||||
|
|
||||||
|
/* 2: CXL XOR Interleave Math Structure */
|
||||||
|
|
||||||
|
struct acpi_cedt_cxims {
|
||||||
|
struct acpi_cedt_header header;
|
||||||
|
u16 reserved1;
|
||||||
|
u8 hbig;
|
||||||
|
u8 nr_xormaps;
|
||||||
|
u64 xormap_list[];
|
||||||
|
};
|
||||||
|
|
||||||
|
/* 3: CXL RCEC Downstream Port Association Structure */
|
||||||
|
|
||||||
|
struct acpi_cedt_rdpas {
|
||||||
|
struct acpi_cedt_header header;
|
||||||
|
u8 reserved1;
|
||||||
|
u16 length;
|
||||||
|
u16 segment;
|
||||||
|
u16 bdf;
|
||||||
|
u8 protocol;
|
||||||
|
u64 address;
|
||||||
|
};
|
||||||
|
|
||||||
|
/* Masks for bdf field above */
|
||||||
|
#define ACPI_CEDT_RDPAS_BUS_MASK 0xff00
|
||||||
|
#define ACPI_CEDT_RDPAS_DEVICE_MASK 0x00f8
|
||||||
|
#define ACPI_CEDT_RDPAS_FUNCTION_MASK 0x0007
|
||||||
|
|
||||||
|
#define ACPI_CEDT_RDPAS_PROTOCOL_IO (0)
|
||||||
|
#define ACPI_CEDT_RDPAS_PROTOCOL_CACHEMEM (1)
|
||||||
|
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
*
|
*
|
||||||
* CPEP - Corrected Platform Error Polling table (ACPI 4.0)
|
* CPEP - Corrected Platform Error Polling table (ACPI 4.0)
|
||||||
|
|
|
@ -27,6 +27,7 @@
|
||||||
#define ACPI_SIG_AGDI "AGDI" /* Arm Generic Diagnostic Dump and Reset Device Interface */
|
#define ACPI_SIG_AGDI "AGDI" /* Arm Generic Diagnostic Dump and Reset Device Interface */
|
||||||
#define ACPI_SIG_APMT "APMT" /* Arm Performance Monitoring Unit table */
|
#define ACPI_SIG_APMT "APMT" /* Arm Performance Monitoring Unit table */
|
||||||
#define ACPI_SIG_BDAT "BDAT" /* BIOS Data ACPI Table */
|
#define ACPI_SIG_BDAT "BDAT" /* BIOS Data ACPI Table */
|
||||||
|
#define ACPI_SIG_CCEL "CCEL" /* CC Event Log Table */
|
||||||
#define ACPI_SIG_IORT "IORT" /* IO Remapping Table */
|
#define ACPI_SIG_IORT "IORT" /* IO Remapping Table */
|
||||||
#define ACPI_SIG_IVRS "IVRS" /* I/O Virtualization Reporting Structure */
|
#define ACPI_SIG_IVRS "IVRS" /* I/O Virtualization Reporting Structure */
|
||||||
#define ACPI_SIG_LPIT "LPIT" /* Low Power Idle Table */
|
#define ACPI_SIG_LPIT "LPIT" /* Low Power Idle Table */
|
||||||
|
@ -352,6 +353,23 @@ struct acpi_table_bdat {
|
||||||
struct acpi_generic_address gas;
|
struct acpi_generic_address gas;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/*******************************************************************************
|
||||||
|
*
|
||||||
|
* CCEL - CC-Event Log
|
||||||
|
* From: "Guest-Host-Communication Interface (GHCI) for Intel
|
||||||
|
* Trust Domain Extensions (Intel TDX)". Feb 2022
|
||||||
|
*
|
||||||
|
******************************************************************************/
|
||||||
|
|
||||||
|
struct acpi_table_ccel {
|
||||||
|
struct acpi_table_header header; /* Common ACPI table header */
|
||||||
|
u8 CCtype;
|
||||||
|
u8 Ccsub_type;
|
||||||
|
u16 reserved;
|
||||||
|
u64 log_area_minimum_length;
|
||||||
|
u64 log_area_start_address;
|
||||||
|
};
|
||||||
|
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
*
|
*
|
||||||
* IORT - IO Remapping Table
|
* IORT - IO Remapping Table
|
||||||
|
@ -865,7 +883,14 @@ enum acpi_madt_type {
|
||||||
ACPI_MADT_TYPE_GENERIC_REDISTRIBUTOR = 14,
|
ACPI_MADT_TYPE_GENERIC_REDISTRIBUTOR = 14,
|
||||||
ACPI_MADT_TYPE_GENERIC_TRANSLATOR = 15,
|
ACPI_MADT_TYPE_GENERIC_TRANSLATOR = 15,
|
||||||
ACPI_MADT_TYPE_MULTIPROC_WAKEUP = 16,
|
ACPI_MADT_TYPE_MULTIPROC_WAKEUP = 16,
|
||||||
ACPI_MADT_TYPE_RESERVED = 17, /* 17 to 0x7F are reserved */
|
ACPI_MADT_TYPE_CORE_PIC = 17,
|
||||||
|
ACPI_MADT_TYPE_LIO_PIC = 18,
|
||||||
|
ACPI_MADT_TYPE_HT_PIC = 19,
|
||||||
|
ACPI_MADT_TYPE_EIO_PIC = 20,
|
||||||
|
ACPI_MADT_TYPE_MSI_PIC = 21,
|
||||||
|
ACPI_MADT_TYPE_BIO_PIC = 22,
|
||||||
|
ACPI_MADT_TYPE_LPC_PIC = 23,
|
||||||
|
ACPI_MADT_TYPE_RESERVED = 24, /* 24 to 0x7F are reserved */
|
||||||
ACPI_MADT_TYPE_OEM_RESERVED = 0x80 /* 0x80 to 0xFF are reserved for OEM use */
|
ACPI_MADT_TYPE_OEM_RESERVED = 0x80 /* 0x80 to 0xFF are reserved for OEM use */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -1096,7 +1121,135 @@ struct acpi_madt_multiproc_wakeup_mailbox {
|
||||||
|
|
||||||
#define ACPI_MP_WAKE_COMMAND_WAKEUP 1
|
#define ACPI_MP_WAKE_COMMAND_WAKEUP 1
|
||||||
|
|
||||||
/* 17: OEM data */
|
/* 17: CPU Core Interrupt Controller (ACPI 6.5) */
|
||||||
|
|
||||||
|
struct acpi_madt_core_pic {
|
||||||
|
struct acpi_subtable_header header;
|
||||||
|
u8 version;
|
||||||
|
u32 processor_id;
|
||||||
|
u32 core_id;
|
||||||
|
u32 flags;
|
||||||
|
};
|
||||||
|
|
||||||
|
/* Values for Version field above */
|
||||||
|
|
||||||
|
enum acpi_madt_core_pic_version {
|
||||||
|
ACPI_MADT_CORE_PIC_VERSION_NONE = 0,
|
||||||
|
ACPI_MADT_CORE_PIC_VERSION_V1 = 1,
|
||||||
|
ACPI_MADT_CORE_PIC_VERSION_RESERVED = 2 /* 2 and greater are reserved */
|
||||||
|
};
|
||||||
|
|
||||||
|
/* 18: Legacy I/O Interrupt Controller (ACPI 6.5) */
|
||||||
|
|
||||||
|
struct acpi_madt_lio_pic {
|
||||||
|
struct acpi_subtable_header header;
|
||||||
|
u8 version;
|
||||||
|
u64 address;
|
||||||
|
u16 size;
|
||||||
|
u8 cascade[2];
|
||||||
|
u32 cascade_map[2];
|
||||||
|
};
|
||||||
|
|
||||||
|
/* Values for Version field above */
|
||||||
|
|
||||||
|
enum acpi_madt_lio_pic_version {
|
||||||
|
ACPI_MADT_LIO_PIC_VERSION_NONE = 0,
|
||||||
|
ACPI_MADT_LIO_PIC_VERSION_V1 = 1,
|
||||||
|
ACPI_MADT_LIO_PIC_VERSION_RESERVED = 2 /* 2 and greater are reserved */
|
||||||
|
};
|
||||||
|
|
||||||
|
/* 19: HT Interrupt Controller (ACPI 6.5) */
|
||||||
|
|
||||||
|
struct acpi_madt_ht_pic {
|
||||||
|
struct acpi_subtable_header header;
|
||||||
|
u8 version;
|
||||||
|
u64 address;
|
||||||
|
u16 size;
|
||||||
|
u8 cascade[8];
|
||||||
|
};
|
||||||
|
|
||||||
|
/* Values for Version field above */
|
||||||
|
|
||||||
|
enum acpi_madt_ht_pic_version {
|
||||||
|
ACPI_MADT_HT_PIC_VERSION_NONE = 0,
|
||||||
|
ACPI_MADT_HT_PIC_VERSION_V1 = 1,
|
||||||
|
ACPI_MADT_HT_PIC_VERSION_RESERVED = 2 /* 2 and greater are reserved */
|
||||||
|
};
|
||||||
|
|
||||||
|
/* 20: Extend I/O Interrupt Controller (ACPI 6.5) */
|
||||||
|
|
||||||
|
struct acpi_madt_eio_pic {
|
||||||
|
struct acpi_subtable_header header;
|
||||||
|
u8 version;
|
||||||
|
u8 cascade;
|
||||||
|
u8 node;
|
||||||
|
u64 node_map;
|
||||||
|
};
|
||||||
|
|
||||||
|
/* Values for Version field above */
|
||||||
|
|
||||||
|
enum acpi_madt_eio_pic_version {
|
||||||
|
ACPI_MADT_EIO_PIC_VERSION_NONE = 0,
|
||||||
|
ACPI_MADT_EIO_PIC_VERSION_V1 = 1,
|
||||||
|
ACPI_MADT_EIO_PIC_VERSION_RESERVED = 2 /* 2 and greater are reserved */
|
||||||
|
};
|
||||||
|
|
||||||
|
/* 21: MSI Interrupt Controller (ACPI 6.5) */
|
||||||
|
|
||||||
|
struct acpi_madt_msi_pic {
|
||||||
|
struct acpi_subtable_header header;
|
||||||
|
u8 version;
|
||||||
|
u64 msg_address;
|
||||||
|
u32 start;
|
||||||
|
u32 count;
|
||||||
|
};
|
||||||
|
|
||||||
|
/* Values for Version field above */
|
||||||
|
|
||||||
|
enum acpi_madt_msi_pic_version {
|
||||||
|
ACPI_MADT_MSI_PIC_VERSION_NONE = 0,
|
||||||
|
ACPI_MADT_MSI_PIC_VERSION_V1 = 1,
|
||||||
|
ACPI_MADT_MSI_PIC_VERSION_RESERVED = 2 /* 2 and greater are reserved */
|
||||||
|
};
|
||||||
|
|
||||||
|
/* 22: Bridge I/O Interrupt Controller (ACPI 6.5) */
|
||||||
|
|
||||||
|
struct acpi_madt_bio_pic {
|
||||||
|
struct acpi_subtable_header header;
|
||||||
|
u8 version;
|
||||||
|
u64 address;
|
||||||
|
u16 size;
|
||||||
|
u16 id;
|
||||||
|
u16 gsi_base;
|
||||||
|
};
|
||||||
|
|
||||||
|
/* Values for Version field above */
|
||||||
|
|
||||||
|
enum acpi_madt_bio_pic_version {
|
||||||
|
ACPI_MADT_BIO_PIC_VERSION_NONE = 0,
|
||||||
|
ACPI_MADT_BIO_PIC_VERSION_V1 = 1,
|
||||||
|
ACPI_MADT_BIO_PIC_VERSION_RESERVED = 2 /* 2 and greater are reserved */
|
||||||
|
};
|
||||||
|
|
||||||
|
/* 23: LPC Interrupt Controller (ACPI 6.5) */
|
||||||
|
|
||||||
|
struct acpi_madt_lpc_pic {
|
||||||
|
struct acpi_subtable_header header;
|
||||||
|
u8 version;
|
||||||
|
u64 address;
|
||||||
|
u16 size;
|
||||||
|
u8 cascade;
|
||||||
|
};
|
||||||
|
|
||||||
|
/* Values for Version field above */
|
||||||
|
|
||||||
|
enum acpi_madt_lpc_pic_version {
|
||||||
|
ACPI_MADT_LPC_PIC_VERSION_NONE = 0,
|
||||||
|
ACPI_MADT_LPC_PIC_VERSION_V1 = 1,
|
||||||
|
ACPI_MADT_LPC_PIC_VERSION_RESERVED = 2 /* 2 and greater are reserved */
|
||||||
|
};
|
||||||
|
|
||||||
|
/* 80: OEM data */
|
||||||
|
|
||||||
struct acpi_madt_oem_data {
|
struct acpi_madt_oem_data {
|
||||||
u8 oem_data[0];
|
u8 oem_data[0];
|
||||||
|
|
|
@ -723,7 +723,8 @@ typedef u32 acpi_event_type;
|
||||||
#define ACPI_EVENT_POWER_BUTTON 2
|
#define ACPI_EVENT_POWER_BUTTON 2
|
||||||
#define ACPI_EVENT_SLEEP_BUTTON 3
|
#define ACPI_EVENT_SLEEP_BUTTON 3
|
||||||
#define ACPI_EVENT_RTC 4
|
#define ACPI_EVENT_RTC 4
|
||||||
#define ACPI_EVENT_MAX 4
|
#define ACPI_EVENT_PCIE_WAKE 5
|
||||||
|
#define ACPI_EVENT_MAX 5
|
||||||
#define ACPI_NUM_FIXED_EVENTS ACPI_EVENT_MAX + 1
|
#define ACPI_NUM_FIXED_EVENTS ACPI_EVENT_MAX + 1
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -1115,6 +1116,13 @@ struct acpi_pcc_info {
|
||||||
u8 *internal_buffer;
|
u8 *internal_buffer;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/* Special Context data for FFH Opregion (ACPI 6.5) */
|
||||||
|
|
||||||
|
struct acpi_ffh_info {
|
||||||
|
u64 offset;
|
||||||
|
u64 length;
|
||||||
|
};
|
||||||
|
|
||||||
typedef
|
typedef
|
||||||
acpi_status (*acpi_adr_space_setup) (acpi_handle region_handle,
|
acpi_status (*acpi_adr_space_setup) (acpi_handle region_handle,
|
||||||
u32 function,
|
u32 function,
|
||||||
|
|
|
@ -69,5 +69,6 @@
|
||||||
#define UUID_HIERARCHICAL_DATA_EXTENSION "dbb8e3e6-5886-4ba6-8795-1319f52a966b"
|
#define UUID_HIERARCHICAL_DATA_EXTENSION "dbb8e3e6-5886-4ba6-8795-1319f52a966b"
|
||||||
#define UUID_CORESIGHT_GRAPH "3ecbc8b6-1d0e-4fb3-8107-e627f805c6cd"
|
#define UUID_CORESIGHT_GRAPH "3ecbc8b6-1d0e-4fb3-8107-e627f805c6cd"
|
||||||
#define UUID_USB4_CAPABILITIES "23a0d13a-26ab-486c-9c5f-0ffa525a575a"
|
#define UUID_USB4_CAPABILITIES "23a0d13a-26ab-486c-9c5f-0ffa525a575a"
|
||||||
|
#define UUID_1ST_FUNCTION_ID "893f00a6-660c-494e-bcfd-3043f4fb67c0"
|
||||||
|
#define UUID_2ND_FUNCTION_ID "107ededd-d381-4fd7-8da9-08e9a6c79644"
|
||||||
#endif /* __ACUUID_H__ */
|
#endif /* __ACUUID_H__ */
|
||||||
|
|
Loading…
Reference in a new issue