Merge branches 'acpica' and 'acpi-scan'
* acpica: ACPI / osl: Remove deprecated acpi_get_table_with_size()/early_acpi_os_unmap_memory() ACPI / osl: Remove acpi_get_table_with_size()/early_acpi_os_unmap_memory() users ACPICA: Tables: Allow FADT to be customized with virtual address ACPICA: Tables: Back port acpi_get_table_with_size() and early_acpi_os_unmap_memory() from Linux kernel * acpi-scan: ACPI: do not warn if _BQC does not exist
This commit is contained in:
commit
c8e008e2a6
@ -29,7 +29,7 @@
|
|||||||
|
|
||||||
/* Basic configuration for ACPI */
|
/* Basic configuration for ACPI */
|
||||||
#ifdef CONFIG_ACPI
|
#ifdef CONFIG_ACPI
|
||||||
/* ACPI table mapping after acpi_gbl_permanent_mmap is set */
|
/* ACPI table mapping after acpi_permanent_mmap is set */
|
||||||
static inline void __iomem *acpi_os_ioremap(acpi_physical_address phys,
|
static inline void __iomem *acpi_os_ioremap(acpi_physical_address phys,
|
||||||
acpi_size size)
|
acpi_size size)
|
||||||
{
|
{
|
||||||
|
@ -132,14 +132,13 @@ static int __init acpi_fadt_sanity_check(void)
|
|||||||
struct acpi_table_header *table;
|
struct acpi_table_header *table;
|
||||||
struct acpi_table_fadt *fadt;
|
struct acpi_table_fadt *fadt;
|
||||||
acpi_status status;
|
acpi_status status;
|
||||||
acpi_size tbl_size;
|
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* FADT is required on arm64; retrieve it to check its presence
|
* FADT is required on arm64; retrieve it to check its presence
|
||||||
* and carry out revision and ACPI HW reduced compliancy tests
|
* and carry out revision and ACPI HW reduced compliancy tests
|
||||||
*/
|
*/
|
||||||
status = acpi_get_table_with_size(ACPI_SIG_FADT, 0, &table, &tbl_size);
|
status = acpi_get_table(ACPI_SIG_FADT, 0, &table);
|
||||||
if (ACPI_FAILURE(status)) {
|
if (ACPI_FAILURE(status)) {
|
||||||
const char *msg = acpi_format_exception(status);
|
const char *msg = acpi_format_exception(status);
|
||||||
|
|
||||||
@ -170,10 +169,10 @@ static int __init acpi_fadt_sanity_check(void)
|
|||||||
|
|
||||||
out:
|
out:
|
||||||
/*
|
/*
|
||||||
* acpi_get_table_with_size() creates FADT table mapping that
|
* acpi_get_table() creates FADT table mapping that
|
||||||
* should be released after parsing and before resuming boot
|
* should be released after parsing and before resuming boot
|
||||||
*/
|
*/
|
||||||
early_acpi_os_unmap_memory(table, tbl_size);
|
acpi_put_table(table);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -166,6 +166,12 @@ acpi_tb_install_table_with_override(struct acpi_table_desc *new_table_desc,
|
|||||||
|
|
||||||
acpi_status acpi_tb_parse_root_table(acpi_physical_address rsdp_address);
|
acpi_status acpi_tb_parse_root_table(acpi_physical_address rsdp_address);
|
||||||
|
|
||||||
|
acpi_status
|
||||||
|
acpi_tb_get_table(struct acpi_table_desc *table_desc,
|
||||||
|
struct acpi_table_header **out_table);
|
||||||
|
|
||||||
|
void acpi_tb_put_table(struct acpi_table_desc *table_desc);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* tbxfload
|
* tbxfload
|
||||||
*/
|
*/
|
||||||
|
@ -311,6 +311,8 @@ void acpi_tb_parse_fadt(void)
|
|||||||
{
|
{
|
||||||
u32 length;
|
u32 length;
|
||||||
struct acpi_table_header *table;
|
struct acpi_table_header *table;
|
||||||
|
struct acpi_table_desc *fadt_desc;
|
||||||
|
acpi_status status;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* The FADT has multiple versions with different lengths,
|
* The FADT has multiple versions with different lengths,
|
||||||
@ -319,14 +321,12 @@ void acpi_tb_parse_fadt(void)
|
|||||||
* Get a local copy of the FADT and convert it to a common format
|
* Get a local copy of the FADT and convert it to a common format
|
||||||
* Map entire FADT, assumed to be smaller than one page.
|
* Map entire FADT, assumed to be smaller than one page.
|
||||||
*/
|
*/
|
||||||
length = acpi_gbl_root_table_list.tables[acpi_gbl_fadt_index].length;
|
fadt_desc = &acpi_gbl_root_table_list.tables[acpi_gbl_fadt_index];
|
||||||
|
status = acpi_tb_get_table(fadt_desc, &table);
|
||||||
table =
|
if (ACPI_FAILURE(status)) {
|
||||||
acpi_os_map_memory(acpi_gbl_root_table_list.
|
|
||||||
tables[acpi_gbl_fadt_index].address, length);
|
|
||||||
if (!table) {
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
length = fadt_desc->length;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Validate the FADT checksum before we copy the table. Ignore
|
* Validate the FADT checksum before we copy the table. Ignore
|
||||||
@ -340,7 +340,7 @@ void acpi_tb_parse_fadt(void)
|
|||||||
|
|
||||||
/* All done with the real FADT, unmap it */
|
/* All done with the real FADT, unmap it */
|
||||||
|
|
||||||
acpi_os_unmap_memory(table, length);
|
acpi_tb_put_table(fadt_desc);
|
||||||
|
|
||||||
/* Obtain the DSDT and FACS tables via their addresses within the FADT */
|
/* Obtain the DSDT and FACS tables via their addresses within the FADT */
|
||||||
|
|
||||||
|
@ -381,3 +381,88 @@ next_table:
|
|||||||
acpi_os_unmap_memory(table, length);
|
acpi_os_unmap_memory(table, length);
|
||||||
return_ACPI_STATUS(AE_OK);
|
return_ACPI_STATUS(AE_OK);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*******************************************************************************
|
||||||
|
*
|
||||||
|
* FUNCTION: acpi_tb_get_table
|
||||||
|
*
|
||||||
|
* PARAMETERS: table_desc - Table descriptor
|
||||||
|
* out_table - Where the pointer to the table is returned
|
||||||
|
*
|
||||||
|
* RETURN: Status and pointer to the requested table
|
||||||
|
*
|
||||||
|
* DESCRIPTION: Increase a reference to a table descriptor and return the
|
||||||
|
* validated table pointer.
|
||||||
|
* If the table descriptor is an entry of the root table list,
|
||||||
|
* this API must be invoked with ACPI_MTX_TABLES acquired.
|
||||||
|
*
|
||||||
|
******************************************************************************/
|
||||||
|
|
||||||
|
acpi_status
|
||||||
|
acpi_tb_get_table(struct acpi_table_desc *table_desc,
|
||||||
|
struct acpi_table_header **out_table)
|
||||||
|
{
|
||||||
|
acpi_status status;
|
||||||
|
|
||||||
|
ACPI_FUNCTION_TRACE(acpi_tb_get_table);
|
||||||
|
|
||||||
|
if (table_desc->validation_count == 0) {
|
||||||
|
|
||||||
|
/* Table need to be "VALIDATED" */
|
||||||
|
|
||||||
|
status = acpi_tb_validate_table(table_desc);
|
||||||
|
if (ACPI_FAILURE(status)) {
|
||||||
|
return_ACPI_STATUS(status);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
table_desc->validation_count++;
|
||||||
|
if (table_desc->validation_count == 0) {
|
||||||
|
ACPI_ERROR((AE_INFO,
|
||||||
|
"Table %p, Validation count is zero after increment\n",
|
||||||
|
table_desc));
|
||||||
|
table_desc->validation_count--;
|
||||||
|
return_ACPI_STATUS(AE_LIMIT);
|
||||||
|
}
|
||||||
|
|
||||||
|
*out_table = table_desc->pointer;
|
||||||
|
return_ACPI_STATUS(AE_OK);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*******************************************************************************
|
||||||
|
*
|
||||||
|
* FUNCTION: acpi_tb_put_table
|
||||||
|
*
|
||||||
|
* PARAMETERS: table_desc - Table descriptor
|
||||||
|
*
|
||||||
|
* RETURN: None
|
||||||
|
*
|
||||||
|
* DESCRIPTION: Decrease a reference to a table descriptor and release the
|
||||||
|
* validated table pointer if no references.
|
||||||
|
* If the table descriptor is an entry of the root table list,
|
||||||
|
* this API must be invoked with ACPI_MTX_TABLES acquired.
|
||||||
|
*
|
||||||
|
******************************************************************************/
|
||||||
|
|
||||||
|
void acpi_tb_put_table(struct acpi_table_desc *table_desc)
|
||||||
|
{
|
||||||
|
|
||||||
|
ACPI_FUNCTION_TRACE(acpi_tb_put_table);
|
||||||
|
|
||||||
|
if (table_desc->validation_count == 0) {
|
||||||
|
ACPI_WARNING((AE_INFO,
|
||||||
|
"Table %p, Validation count is zero before decrement\n",
|
||||||
|
table_desc));
|
||||||
|
return_VOID;
|
||||||
|
}
|
||||||
|
table_desc->validation_count--;
|
||||||
|
|
||||||
|
if (table_desc->validation_count == 0) {
|
||||||
|
|
||||||
|
/* Table need to be "INVALIDATED" */
|
||||||
|
|
||||||
|
acpi_tb_invalidate_table(table_desc);
|
||||||
|
}
|
||||||
|
|
||||||
|
return_VOID;
|
||||||
|
}
|
||||||
|
@ -282,7 +282,7 @@ ACPI_EXPORT_SYMBOL(acpi_get_table_header)
|
|||||||
|
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
*
|
*
|
||||||
* FUNCTION: acpi_get_table_with_size
|
* FUNCTION: acpi_get_table
|
||||||
*
|
*
|
||||||
* PARAMETERS: signature - ACPI signature of needed table
|
* PARAMETERS: signature - ACPI signature of needed table
|
||||||
* instance - Which instance (for SSDTs)
|
* instance - Which instance (for SSDTs)
|
||||||
@ -292,16 +292,21 @@ ACPI_EXPORT_SYMBOL(acpi_get_table_header)
|
|||||||
*
|
*
|
||||||
* DESCRIPTION: Finds and verifies an ACPI table. Table must be in the
|
* DESCRIPTION: Finds and verifies an ACPI table. Table must be in the
|
||||||
* RSDT/XSDT.
|
* RSDT/XSDT.
|
||||||
|
* Note that an early stage acpi_get_table() call must be paired
|
||||||
|
* with an early stage acpi_put_table() call. otherwise the table
|
||||||
|
* pointer mapped by the early stage mapping implementation may be
|
||||||
|
* erroneously unmapped by the late stage unmapping implementation
|
||||||
|
* in an acpi_put_table() invoked during the late stage.
|
||||||
*
|
*
|
||||||
******************************************************************************/
|
******************************************************************************/
|
||||||
acpi_status
|
acpi_status
|
||||||
acpi_get_table_with_size(char *signature,
|
acpi_get_table(char *signature,
|
||||||
u32 instance, struct acpi_table_header **out_table,
|
u32 instance, struct acpi_table_header ** out_table)
|
||||||
acpi_size *tbl_size)
|
|
||||||
{
|
{
|
||||||
u32 i;
|
u32 i;
|
||||||
u32 j;
|
u32 j;
|
||||||
acpi_status status;
|
acpi_status status = AE_NOT_FOUND;
|
||||||
|
struct acpi_table_desc *table_desc;
|
||||||
|
|
||||||
/* Parameter validation */
|
/* Parameter validation */
|
||||||
|
|
||||||
@ -309,13 +314,22 @@ acpi_get_table_with_size(char *signature,
|
|||||||
return (AE_BAD_PARAMETER);
|
return (AE_BAD_PARAMETER);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Note that the following line is required by some OSPMs, they only
|
||||||
|
* check if the returned table is NULL instead of the returned status
|
||||||
|
* to determined if this function is succeeded.
|
||||||
|
*/
|
||||||
|
*out_table = NULL;
|
||||||
|
|
||||||
|
(void)acpi_ut_acquire_mutex(ACPI_MTX_TABLES);
|
||||||
|
|
||||||
/* Walk the root table list */
|
/* Walk the root table list */
|
||||||
|
|
||||||
for (i = 0, j = 0; i < acpi_gbl_root_table_list.current_table_count;
|
for (i = 0, j = 0; i < acpi_gbl_root_table_list.current_table_count;
|
||||||
i++) {
|
i++) {
|
||||||
if (!ACPI_COMPARE_NAME
|
table_desc = &acpi_gbl_root_table_list.tables[i];
|
||||||
(&(acpi_gbl_root_table_list.tables[i].signature),
|
|
||||||
signature)) {
|
if (!ACPI_COMPARE_NAME(&table_desc->signature, signature)) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -323,43 +337,65 @@ acpi_get_table_with_size(char *signature,
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
status =
|
status = acpi_tb_get_table(table_desc, out_table);
|
||||||
acpi_tb_validate_table(&acpi_gbl_root_table_list.tables[i]);
|
break;
|
||||||
if (ACPI_SUCCESS(status)) {
|
|
||||||
*out_table = acpi_gbl_root_table_list.tables[i].pointer;
|
|
||||||
*tbl_size = acpi_gbl_root_table_list.tables[i].length;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!acpi_gbl_permanent_mmap) {
|
|
||||||
acpi_gbl_root_table_list.tables[i].pointer = NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
return (status);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return (AE_NOT_FOUND);
|
(void)acpi_ut_release_mutex(ACPI_MTX_TABLES);
|
||||||
}
|
return (status);
|
||||||
|
|
||||||
ACPI_EXPORT_SYMBOL(acpi_get_table_with_size)
|
|
||||||
|
|
||||||
acpi_status
|
|
||||||
acpi_get_table(char *signature,
|
|
||||||
u32 instance, struct acpi_table_header **out_table)
|
|
||||||
{
|
|
||||||
acpi_size tbl_size;
|
|
||||||
|
|
||||||
return acpi_get_table_with_size(signature,
|
|
||||||
instance, out_table, &tbl_size);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ACPI_EXPORT_SYMBOL(acpi_get_table)
|
ACPI_EXPORT_SYMBOL(acpi_get_table)
|
||||||
|
|
||||||
|
/*******************************************************************************
|
||||||
|
*
|
||||||
|
* FUNCTION: acpi_put_table
|
||||||
|
*
|
||||||
|
* PARAMETERS: table - The pointer to the table
|
||||||
|
*
|
||||||
|
* RETURN: None
|
||||||
|
*
|
||||||
|
* DESCRIPTION: Release a table returned by acpi_get_table() and its clones.
|
||||||
|
* Note that it is not safe if this function was invoked after an
|
||||||
|
* uninstallation happened to the original table descriptor.
|
||||||
|
* Currently there is no OSPMs' requirement to handle such
|
||||||
|
* situations.
|
||||||
|
*
|
||||||
|
******************************************************************************/
|
||||||
|
void acpi_put_table(struct acpi_table_header *table)
|
||||||
|
{
|
||||||
|
u32 i;
|
||||||
|
struct acpi_table_desc *table_desc;
|
||||||
|
|
||||||
|
ACPI_FUNCTION_TRACE(acpi_put_table);
|
||||||
|
|
||||||
|
(void)acpi_ut_acquire_mutex(ACPI_MTX_TABLES);
|
||||||
|
|
||||||
|
/* Walk the root table list */
|
||||||
|
|
||||||
|
for (i = 0; i < acpi_gbl_root_table_list.current_table_count; i++) {
|
||||||
|
table_desc = &acpi_gbl_root_table_list.tables[i];
|
||||||
|
|
||||||
|
if (table_desc->pointer != table) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
acpi_tb_put_table(table_desc);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
(void)acpi_ut_release_mutex(ACPI_MTX_TABLES);
|
||||||
|
return_VOID;
|
||||||
|
}
|
||||||
|
|
||||||
|
ACPI_EXPORT_SYMBOL(acpi_put_table)
|
||||||
|
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
*
|
*
|
||||||
* FUNCTION: acpi_get_table_by_index
|
* FUNCTION: acpi_get_table_by_index
|
||||||
*
|
*
|
||||||
* PARAMETERS: table_index - Table index
|
* PARAMETERS: table_index - Table index
|
||||||
* table - Where the pointer to the table is returned
|
* out_table - Where the pointer to the table is returned
|
||||||
*
|
*
|
||||||
* RETURN: Status and pointer to the requested table
|
* RETURN: Status and pointer to the requested table
|
||||||
*
|
*
|
||||||
@ -368,7 +404,7 @@ ACPI_EXPORT_SYMBOL(acpi_get_table)
|
|||||||
*
|
*
|
||||||
******************************************************************************/
|
******************************************************************************/
|
||||||
acpi_status
|
acpi_status
|
||||||
acpi_get_table_by_index(u32 table_index, struct acpi_table_header **table)
|
acpi_get_table_by_index(u32 table_index, struct acpi_table_header **out_table)
|
||||||
{
|
{
|
||||||
acpi_status status;
|
acpi_status status;
|
||||||
|
|
||||||
@ -376,35 +412,33 @@ acpi_get_table_by_index(u32 table_index, struct acpi_table_header **table)
|
|||||||
|
|
||||||
/* Parameter validation */
|
/* Parameter validation */
|
||||||
|
|
||||||
if (!table) {
|
if (!out_table) {
|
||||||
return_ACPI_STATUS(AE_BAD_PARAMETER);
|
return_ACPI_STATUS(AE_BAD_PARAMETER);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Note that the following line is required by some OSPMs, they only
|
||||||
|
* check if the returned table is NULL instead of the returned status
|
||||||
|
* to determined if this function is succeeded.
|
||||||
|
*/
|
||||||
|
*out_table = NULL;
|
||||||
|
|
||||||
(void)acpi_ut_acquire_mutex(ACPI_MTX_TABLES);
|
(void)acpi_ut_acquire_mutex(ACPI_MTX_TABLES);
|
||||||
|
|
||||||
/* Validate index */
|
/* Validate index */
|
||||||
|
|
||||||
if (table_index >= acpi_gbl_root_table_list.current_table_count) {
|
if (table_index >= acpi_gbl_root_table_list.current_table_count) {
|
||||||
(void)acpi_ut_release_mutex(ACPI_MTX_TABLES);
|
status = AE_BAD_PARAMETER;
|
||||||
return_ACPI_STATUS(AE_BAD_PARAMETER);
|
goto unlock_and_exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!acpi_gbl_root_table_list.tables[table_index].pointer) {
|
status =
|
||||||
|
acpi_tb_get_table(&acpi_gbl_root_table_list.tables[table_index],
|
||||||
|
out_table);
|
||||||
|
|
||||||
/* Table is not mapped, map it */
|
unlock_and_exit:
|
||||||
|
|
||||||
status =
|
|
||||||
acpi_tb_validate_table(&acpi_gbl_root_table_list.
|
|
||||||
tables[table_index]);
|
|
||||||
if (ACPI_FAILURE(status)) {
|
|
||||||
(void)acpi_ut_release_mutex(ACPI_MTX_TABLES);
|
|
||||||
return_ACPI_STATUS(status);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
*table = acpi_gbl_root_table_list.tables[table_index].pointer;
|
|
||||||
(void)acpi_ut_release_mutex(ACPI_MTX_TABLES);
|
(void)acpi_ut_release_mutex(ACPI_MTX_TABLES);
|
||||||
return_ACPI_STATUS(AE_OK);
|
return_ACPI_STATUS(status);
|
||||||
}
|
}
|
||||||
|
|
||||||
ACPI_EXPORT_SYMBOL(acpi_get_table_by_index)
|
ACPI_EXPORT_SYMBOL(acpi_get_table_by_index)
|
||||||
|
@ -974,7 +974,7 @@ void __init acpi_early_init(void)
|
|||||||
if (!acpi_strict)
|
if (!acpi_strict)
|
||||||
acpi_gbl_enable_interpreter_slack = TRUE;
|
acpi_gbl_enable_interpreter_slack = TRUE;
|
||||||
|
|
||||||
acpi_gbl_permanent_mmap = 1;
|
acpi_permanent_mmap = true;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* If the machine falls into the DMI check table,
|
* If the machine falls into the DMI check table,
|
||||||
|
@ -2806,12 +2806,13 @@ static int acpi_nfit_add(struct acpi_device *adev)
|
|||||||
acpi_size sz;
|
acpi_size sz;
|
||||||
int rc = 0;
|
int rc = 0;
|
||||||
|
|
||||||
status = acpi_get_table_with_size(ACPI_SIG_NFIT, 0, &tbl, &sz);
|
status = acpi_get_table(ACPI_SIG_NFIT, 0, &tbl);
|
||||||
if (ACPI_FAILURE(status)) {
|
if (ACPI_FAILURE(status)) {
|
||||||
/* This is ok, we could have an nvdimm hotplugged later */
|
/* This is ok, we could have an nvdimm hotplugged later */
|
||||||
dev_dbg(dev, "failed to find NFIT at startup\n");
|
dev_dbg(dev, "failed to find NFIT at startup\n");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
sz = tbl->length;
|
||||||
|
|
||||||
acpi_desc = devm_kzalloc(dev, sizeof(*acpi_desc), GFP_KERNEL);
|
acpi_desc = devm_kzalloc(dev, sizeof(*acpi_desc), GFP_KERNEL);
|
||||||
if (!acpi_desc)
|
if (!acpi_desc)
|
||||||
|
@ -76,6 +76,7 @@ static struct workqueue_struct *kacpi_notify_wq;
|
|||||||
static struct workqueue_struct *kacpi_hotplug_wq;
|
static struct workqueue_struct *kacpi_hotplug_wq;
|
||||||
static bool acpi_os_initialized;
|
static bool acpi_os_initialized;
|
||||||
unsigned int acpi_sci_irq = INVALID_ACPI_IRQ;
|
unsigned int acpi_sci_irq = INVALID_ACPI_IRQ;
|
||||||
|
bool acpi_permanent_mmap = false;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* This list of permanent mappings is for memory that may be accessed from
|
* This list of permanent mappings is for memory that may be accessed from
|
||||||
@ -306,7 +307,7 @@ static void acpi_unmap(acpi_physical_address pg_off, void __iomem *vaddr)
|
|||||||
* virtual address). If not found, map it, add it to that list and return a
|
* virtual address). If not found, map it, add it to that list and return a
|
||||||
* pointer to it.
|
* pointer to it.
|
||||||
*
|
*
|
||||||
* During early init (when acpi_gbl_permanent_mmap has not been set yet) this
|
* During early init (when acpi_permanent_mmap has not been set yet) this
|
||||||
* routine simply calls __acpi_map_table() to get the job done.
|
* routine simply calls __acpi_map_table() to get the job done.
|
||||||
*/
|
*/
|
||||||
void __iomem *__ref
|
void __iomem *__ref
|
||||||
@ -322,7 +323,7 @@ acpi_os_map_iomem(acpi_physical_address phys, acpi_size size)
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!acpi_gbl_permanent_mmap)
|
if (!acpi_permanent_mmap)
|
||||||
return __acpi_map_table((unsigned long)phys, size);
|
return __acpi_map_table((unsigned long)phys, size);
|
||||||
|
|
||||||
mutex_lock(&acpi_ioremap_lock);
|
mutex_lock(&acpi_ioremap_lock);
|
||||||
@ -392,7 +393,7 @@ static void acpi_os_map_cleanup(struct acpi_ioremap *map)
|
|||||||
* mappings, drop a reference to it and unmap it if there are no more active
|
* mappings, drop a reference to it and unmap it if there are no more active
|
||||||
* references to it.
|
* references to it.
|
||||||
*
|
*
|
||||||
* During early init (when acpi_gbl_permanent_mmap has not been set yet) this
|
* During early init (when acpi_permanent_mmap has not been set yet) this
|
||||||
* routine simply calls __acpi_unmap_table() to get the job done. Since
|
* routine simply calls __acpi_unmap_table() to get the job done. Since
|
||||||
* __acpi_unmap_table() is an __init function, the __ref annotation is needed
|
* __acpi_unmap_table() is an __init function, the __ref annotation is needed
|
||||||
* here.
|
* here.
|
||||||
@ -401,7 +402,7 @@ void __ref acpi_os_unmap_iomem(void __iomem *virt, acpi_size size)
|
|||||||
{
|
{
|
||||||
struct acpi_ioremap *map;
|
struct acpi_ioremap *map;
|
||||||
|
|
||||||
if (!acpi_gbl_permanent_mmap) {
|
if (!acpi_permanent_mmap) {
|
||||||
__acpi_unmap_table(virt, size);
|
__acpi_unmap_table(virt, size);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -426,12 +427,6 @@ void __ref acpi_os_unmap_memory(void *virt, acpi_size size)
|
|||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(acpi_os_unmap_memory);
|
EXPORT_SYMBOL_GPL(acpi_os_unmap_memory);
|
||||||
|
|
||||||
void __init early_acpi_os_unmap_memory(void __iomem *virt, acpi_size size)
|
|
||||||
{
|
|
||||||
if (!acpi_gbl_permanent_mmap)
|
|
||||||
__acpi_unmap_table(virt, size);
|
|
||||||
}
|
|
||||||
|
|
||||||
int acpi_os_map_generic_address(struct acpi_generic_address *gas)
|
int acpi_os_map_generic_address(struct acpi_generic_address *gas)
|
||||||
{
|
{
|
||||||
u64 addr;
|
u64 addr;
|
||||||
|
@ -154,18 +154,16 @@ static phys_cpuid_t map_madt_entry(struct acpi_table_madt *madt,
|
|||||||
phys_cpuid_t __init acpi_map_madt_entry(u32 acpi_id)
|
phys_cpuid_t __init acpi_map_madt_entry(u32 acpi_id)
|
||||||
{
|
{
|
||||||
struct acpi_table_madt *madt = NULL;
|
struct acpi_table_madt *madt = NULL;
|
||||||
acpi_size tbl_size;
|
|
||||||
phys_cpuid_t rv;
|
phys_cpuid_t rv;
|
||||||
|
|
||||||
acpi_get_table_with_size(ACPI_SIG_MADT, 0,
|
acpi_get_table(ACPI_SIG_MADT, 0,
|
||||||
(struct acpi_table_header **)&madt,
|
(struct acpi_table_header **)&madt);
|
||||||
&tbl_size);
|
|
||||||
if (!madt)
|
if (!madt)
|
||||||
return PHYS_CPUID_INVALID;
|
return PHYS_CPUID_INVALID;
|
||||||
|
|
||||||
rv = map_madt_entry(madt, 1, acpi_id, true);
|
rv = map_madt_entry(madt, 1, acpi_id, true);
|
||||||
|
|
||||||
early_acpi_os_unmap_memory(madt, tbl_size);
|
acpi_put_table((struct acpi_table_header *)madt);
|
||||||
|
|
||||||
return rv;
|
return rv;
|
||||||
}
|
}
|
||||||
|
@ -1119,9 +1119,6 @@ acpi_backlight_cap_match(acpi_handle handle, u32 level, void *context,
|
|||||||
ACPI_DEBUG_PRINT((ACPI_DB_INFO, "Found generic backlight "
|
ACPI_DEBUG_PRINT((ACPI_DB_INFO, "Found generic backlight "
|
||||||
"support\n"));
|
"support\n"));
|
||||||
*cap |= ACPI_VIDEO_BACKLIGHT;
|
*cap |= ACPI_VIDEO_BACKLIGHT;
|
||||||
if (!acpi_has_method(handle, "_BQC"))
|
|
||||||
printk(KERN_WARNING FW_BUG PREFIX "No _BQC method, "
|
|
||||||
"cannot determine initial brightness\n");
|
|
||||||
/* We have backlight support, no need to scan further */
|
/* We have backlight support, no need to scan further */
|
||||||
return AE_CTRL_TERMINATE;
|
return AE_CTRL_TERMINATE;
|
||||||
}
|
}
|
||||||
|
@ -33,7 +33,6 @@ int __init parse_spcr(bool earlycon)
|
|||||||
{
|
{
|
||||||
static char opts[64];
|
static char opts[64];
|
||||||
struct acpi_table_spcr *table;
|
struct acpi_table_spcr *table;
|
||||||
acpi_size table_size;
|
|
||||||
acpi_status status;
|
acpi_status status;
|
||||||
char *uart;
|
char *uart;
|
||||||
char *iotype;
|
char *iotype;
|
||||||
@ -43,9 +42,8 @@ int __init parse_spcr(bool earlycon)
|
|||||||
if (acpi_disabled)
|
if (acpi_disabled)
|
||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
|
|
||||||
status = acpi_get_table_with_size(ACPI_SIG_SPCR, 0,
|
status = acpi_get_table(ACPI_SIG_SPCR, 0,
|
||||||
(struct acpi_table_header **)&table,
|
(struct acpi_table_header **)&table);
|
||||||
&table_size);
|
|
||||||
|
|
||||||
if (ACPI_FAILURE(status))
|
if (ACPI_FAILURE(status))
|
||||||
return -ENOENT;
|
return -ENOENT;
|
||||||
@ -106,6 +104,6 @@ int __init parse_spcr(bool earlycon)
|
|||||||
err = add_preferred_console(uart, 0, opts + strlen(uart) + 1);
|
err = add_preferred_console(uart, 0, opts + strlen(uart) + 1);
|
||||||
|
|
||||||
done:
|
done:
|
||||||
early_acpi_os_unmap_memory((void __iomem *)table, table_size);
|
acpi_put_table((struct acpi_table_header *)table);
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
@ -333,7 +333,6 @@ acpi_table_parse_entries_array(char *id,
|
|||||||
unsigned int max_entries)
|
unsigned int max_entries)
|
||||||
{
|
{
|
||||||
struct acpi_table_header *table_header = NULL;
|
struct acpi_table_header *table_header = NULL;
|
||||||
acpi_size tbl_size;
|
|
||||||
int count;
|
int count;
|
||||||
u32 instance = 0;
|
u32 instance = 0;
|
||||||
|
|
||||||
@ -346,7 +345,7 @@ acpi_table_parse_entries_array(char *id,
|
|||||||
if (!strncmp(id, ACPI_SIG_MADT, 4))
|
if (!strncmp(id, ACPI_SIG_MADT, 4))
|
||||||
instance = acpi_apic_instance;
|
instance = acpi_apic_instance;
|
||||||
|
|
||||||
acpi_get_table_with_size(id, instance, &table_header, &tbl_size);
|
acpi_get_table(id, instance, &table_header);
|
||||||
if (!table_header) {
|
if (!table_header) {
|
||||||
pr_warn("%4.4s not present\n", id);
|
pr_warn("%4.4s not present\n", id);
|
||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
@ -355,7 +354,7 @@ acpi_table_parse_entries_array(char *id,
|
|||||||
count = acpi_parse_entries_array(id, table_size, table_header,
|
count = acpi_parse_entries_array(id, table_size, table_header,
|
||||||
proc, proc_num, max_entries);
|
proc, proc_num, max_entries);
|
||||||
|
|
||||||
early_acpi_os_unmap_memory((char *)table_header, tbl_size);
|
acpi_put_table(table_header);
|
||||||
return count;
|
return count;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -397,7 +396,6 @@ acpi_table_parse_madt(enum acpi_madt_type id,
|
|||||||
int __init acpi_table_parse(char *id, acpi_tbl_table_handler handler)
|
int __init acpi_table_parse(char *id, acpi_tbl_table_handler handler)
|
||||||
{
|
{
|
||||||
struct acpi_table_header *table = NULL;
|
struct acpi_table_header *table = NULL;
|
||||||
acpi_size tbl_size;
|
|
||||||
|
|
||||||
if (acpi_disabled)
|
if (acpi_disabled)
|
||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
@ -406,13 +404,13 @@ int __init acpi_table_parse(char *id, acpi_tbl_table_handler handler)
|
|||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
||||||
if (strncmp(id, ACPI_SIG_MADT, 4) == 0)
|
if (strncmp(id, ACPI_SIG_MADT, 4) == 0)
|
||||||
acpi_get_table_with_size(id, acpi_apic_instance, &table, &tbl_size);
|
acpi_get_table(id, acpi_apic_instance, &table);
|
||||||
else
|
else
|
||||||
acpi_get_table_with_size(id, 0, &table, &tbl_size);
|
acpi_get_table(id, 0, &table);
|
||||||
|
|
||||||
if (table) {
|
if (table) {
|
||||||
handler(table);
|
handler(table);
|
||||||
early_acpi_os_unmap_memory(table, tbl_size);
|
acpi_put_table(table);
|
||||||
return 0;
|
return 0;
|
||||||
} else
|
} else
|
||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
@ -426,16 +424,15 @@ int __init acpi_table_parse(char *id, acpi_tbl_table_handler handler)
|
|||||||
static void __init check_multiple_madt(void)
|
static void __init check_multiple_madt(void)
|
||||||
{
|
{
|
||||||
struct acpi_table_header *table = NULL;
|
struct acpi_table_header *table = NULL;
|
||||||
acpi_size tbl_size;
|
|
||||||
|
|
||||||
acpi_get_table_with_size(ACPI_SIG_MADT, 2, &table, &tbl_size);
|
acpi_get_table(ACPI_SIG_MADT, 2, &table);
|
||||||
if (table) {
|
if (table) {
|
||||||
pr_warn("BIOS bug: multiple APIC/MADT found, using %d\n",
|
pr_warn("BIOS bug: multiple APIC/MADT found, using %d\n",
|
||||||
acpi_apic_instance);
|
acpi_apic_instance);
|
||||||
pr_warn("If \"acpi_apic_instance=%d\" works better, "
|
pr_warn("If \"acpi_apic_instance=%d\" works better, "
|
||||||
"notify linux-acpi@vger.kernel.org\n",
|
"notify linux-acpi@vger.kernel.org\n",
|
||||||
acpi_apic_instance ? 0 : 2);
|
acpi_apic_instance ? 0 : 2);
|
||||||
early_acpi_os_unmap_memory(table, tbl_size);
|
acpi_put_table(table);
|
||||||
|
|
||||||
} else
|
} else
|
||||||
acpi_apic_instance = 0;
|
acpi_apic_instance = 0;
|
||||||
|
@ -305,8 +305,9 @@ static bool amdgpu_acpi_vfct_bios(struct amdgpu_device *adev)
|
|||||||
GOP_VBIOS_CONTENT *vbios;
|
GOP_VBIOS_CONTENT *vbios;
|
||||||
VFCT_IMAGE_HEADER *vhdr;
|
VFCT_IMAGE_HEADER *vhdr;
|
||||||
|
|
||||||
if (!ACPI_SUCCESS(acpi_get_table_with_size("VFCT", 1, &hdr, &tbl_size)))
|
if (!ACPI_SUCCESS(acpi_get_table("VFCT", 1, &hdr)))
|
||||||
return false;
|
return false;
|
||||||
|
tbl_size = hdr->length;
|
||||||
if (tbl_size < sizeof(UEFI_ACPI_VFCT)) {
|
if (tbl_size < sizeof(UEFI_ACPI_VFCT)) {
|
||||||
DRM_ERROR("ACPI VFCT table present but broken (too short #1)\n");
|
DRM_ERROR("ACPI VFCT table present but broken (too short #1)\n");
|
||||||
goto out_unmap;
|
goto out_unmap;
|
||||||
|
@ -603,8 +603,9 @@ static bool radeon_acpi_vfct_bios(struct radeon_device *rdev)
|
|||||||
GOP_VBIOS_CONTENT *vbios;
|
GOP_VBIOS_CONTENT *vbios;
|
||||||
VFCT_IMAGE_HEADER *vhdr;
|
VFCT_IMAGE_HEADER *vhdr;
|
||||||
|
|
||||||
if (!ACPI_SUCCESS(acpi_get_table_with_size("VFCT", 1, &hdr, &tbl_size)))
|
if (!ACPI_SUCCESS(acpi_get_table("VFCT", 1, &hdr)))
|
||||||
return false;
|
return false;
|
||||||
|
tbl_size = hdr->length;
|
||||||
if (tbl_size < sizeof(UEFI_ACPI_VFCT)) {
|
if (tbl_size < sizeof(UEFI_ACPI_VFCT)) {
|
||||||
DRM_ERROR("ACPI VFCT table present but broken (too short #1)\n");
|
DRM_ERROR("ACPI VFCT table present but broken (too short #1)\n");
|
||||||
goto out_unmap;
|
goto out_unmap;
|
||||||
|
@ -2207,14 +2207,13 @@ static void __init free_dma_resources(void)
|
|||||||
static int __init early_amd_iommu_init(void)
|
static int __init early_amd_iommu_init(void)
|
||||||
{
|
{
|
||||||
struct acpi_table_header *ivrs_base;
|
struct acpi_table_header *ivrs_base;
|
||||||
acpi_size ivrs_size;
|
|
||||||
acpi_status status;
|
acpi_status status;
|
||||||
int i, remap_cache_sz, ret = 0;
|
int i, remap_cache_sz, ret = 0;
|
||||||
|
|
||||||
if (!amd_iommu_detected)
|
if (!amd_iommu_detected)
|
||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
|
|
||||||
status = acpi_get_table_with_size("IVRS", 0, &ivrs_base, &ivrs_size);
|
status = acpi_get_table("IVRS", 0, &ivrs_base);
|
||||||
if (status == AE_NOT_FOUND)
|
if (status == AE_NOT_FOUND)
|
||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
else if (ACPI_FAILURE(status)) {
|
else if (ACPI_FAILURE(status)) {
|
||||||
@ -2334,7 +2333,7 @@ static int __init early_amd_iommu_init(void)
|
|||||||
|
|
||||||
out:
|
out:
|
||||||
/* Don't leak any ACPI memory */
|
/* Don't leak any ACPI memory */
|
||||||
early_acpi_os_unmap_memory((char __iomem *)ivrs_base, ivrs_size);
|
acpi_put_table(ivrs_base);
|
||||||
ivrs_base = NULL;
|
ivrs_base = NULL;
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
@ -2358,10 +2357,9 @@ out:
|
|||||||
static bool detect_ivrs(void)
|
static bool detect_ivrs(void)
|
||||||
{
|
{
|
||||||
struct acpi_table_header *ivrs_base;
|
struct acpi_table_header *ivrs_base;
|
||||||
acpi_size ivrs_size;
|
|
||||||
acpi_status status;
|
acpi_status status;
|
||||||
|
|
||||||
status = acpi_get_table_with_size("IVRS", 0, &ivrs_base, &ivrs_size);
|
status = acpi_get_table("IVRS", 0, &ivrs_base);
|
||||||
if (status == AE_NOT_FOUND)
|
if (status == AE_NOT_FOUND)
|
||||||
return false;
|
return false;
|
||||||
else if (ACPI_FAILURE(status)) {
|
else if (ACPI_FAILURE(status)) {
|
||||||
@ -2370,7 +2368,7 @@ static bool detect_ivrs(void)
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
early_acpi_os_unmap_memory((char __iomem *)ivrs_base, ivrs_size);
|
acpi_put_table(ivrs_base);
|
||||||
|
|
||||||
/* Make sure ACS will be enabled during PCI probe */
|
/* Make sure ACS will be enabled during PCI probe */
|
||||||
pci_request_acs();
|
pci_request_acs();
|
||||||
|
@ -68,7 +68,6 @@ DECLARE_RWSEM(dmar_global_lock);
|
|||||||
LIST_HEAD(dmar_drhd_units);
|
LIST_HEAD(dmar_drhd_units);
|
||||||
|
|
||||||
struct acpi_table_header * __initdata dmar_tbl;
|
struct acpi_table_header * __initdata dmar_tbl;
|
||||||
static acpi_size dmar_tbl_size;
|
|
||||||
static int dmar_dev_scope_status = 1;
|
static int dmar_dev_scope_status = 1;
|
||||||
static unsigned long dmar_seq_ids[BITS_TO_LONGS(DMAR_UNITS_SUPPORTED)];
|
static unsigned long dmar_seq_ids[BITS_TO_LONGS(DMAR_UNITS_SUPPORTED)];
|
||||||
|
|
||||||
@ -543,9 +542,7 @@ static int __init dmar_table_detect(void)
|
|||||||
acpi_status status = AE_OK;
|
acpi_status status = AE_OK;
|
||||||
|
|
||||||
/* if we could find DMAR table, then there are DMAR devices */
|
/* if we could find DMAR table, then there are DMAR devices */
|
||||||
status = acpi_get_table_with_size(ACPI_SIG_DMAR, 0,
|
status = acpi_get_table(ACPI_SIG_DMAR, 0, &dmar_tbl);
|
||||||
(struct acpi_table_header **)&dmar_tbl,
|
|
||||||
&dmar_tbl_size);
|
|
||||||
|
|
||||||
if (ACPI_SUCCESS(status) && !dmar_tbl) {
|
if (ACPI_SUCCESS(status) && !dmar_tbl) {
|
||||||
pr_warn("Unable to map DMAR\n");
|
pr_warn("Unable to map DMAR\n");
|
||||||
@ -906,7 +903,7 @@ int __init detect_intel_iommu(void)
|
|||||||
x86_init.iommu.iommu_init = intel_iommu_init;
|
x86_init.iommu.iommu_init = intel_iommu_init;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
early_acpi_os_unmap_memory((void __iomem *)dmar_tbl, dmar_tbl_size);
|
acpi_put_table(dmar_tbl);
|
||||||
dmar_tbl = NULL;
|
dmar_tbl = NULL;
|
||||||
up_write(&dmar_global_lock);
|
up_write(&dmar_global_lock);
|
||||||
|
|
||||||
|
@ -447,7 +447,6 @@ static int pcc_parse_subspace_irq(int id,
|
|||||||
*/
|
*/
|
||||||
static int __init acpi_pcc_probe(void)
|
static int __init acpi_pcc_probe(void)
|
||||||
{
|
{
|
||||||
acpi_size pcct_tbl_header_size;
|
|
||||||
struct acpi_table_header *pcct_tbl;
|
struct acpi_table_header *pcct_tbl;
|
||||||
struct acpi_subtable_header *pcct_entry;
|
struct acpi_subtable_header *pcct_entry;
|
||||||
struct acpi_table_pcct *acpi_pcct_tbl;
|
struct acpi_table_pcct *acpi_pcct_tbl;
|
||||||
@ -456,9 +455,7 @@ static int __init acpi_pcc_probe(void)
|
|||||||
acpi_status status = AE_OK;
|
acpi_status status = AE_OK;
|
||||||
|
|
||||||
/* Search for PCCT */
|
/* Search for PCCT */
|
||||||
status = acpi_get_table_with_size(ACPI_SIG_PCCT, 0,
|
status = acpi_get_table(ACPI_SIG_PCCT, 0, &pcct_tbl);
|
||||||
&pcct_tbl,
|
|
||||||
&pcct_tbl_header_size);
|
|
||||||
|
|
||||||
if (ACPI_FAILURE(status) || !pcct_tbl) {
|
if (ACPI_FAILURE(status) || !pcct_tbl) {
|
||||||
pr_warn("PCCT header not found.\n");
|
pr_warn("PCCT header not found.\n");
|
||||||
|
@ -13,6 +13,8 @@ static inline void __iomem *acpi_os_ioremap(acpi_physical_address phys,
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
extern bool acpi_permanent_mmap;
|
||||||
|
|
||||||
void __iomem *__ref
|
void __iomem *__ref
|
||||||
acpi_os_map_iomem(acpi_physical_address phys, acpi_size size);
|
acpi_os_map_iomem(acpi_physical_address phys, acpi_size size);
|
||||||
void __ref acpi_os_unmap_iomem(void __iomem *virt, acpi_size size);
|
void __ref acpi_os_unmap_iomem(void __iomem *virt, acpi_size size);
|
||||||
|
@ -513,10 +513,12 @@ ACPI_EXTERNAL_RETURN_STATUS(acpi_status
|
|||||||
acpi_get_table(acpi_string signature, u32 instance,
|
acpi_get_table(acpi_string signature, u32 instance,
|
||||||
struct acpi_table_header
|
struct acpi_table_header
|
||||||
**out_table))
|
**out_table))
|
||||||
|
ACPI_EXTERNAL_RETURN_VOID(void acpi_put_table(struct acpi_table_header *table))
|
||||||
|
|
||||||
ACPI_EXTERNAL_RETURN_STATUS(acpi_status
|
ACPI_EXTERNAL_RETURN_STATUS(acpi_status
|
||||||
acpi_get_table_by_index(u32 table_index,
|
acpi_get_table_by_index(u32 table_index,
|
||||||
struct acpi_table_header
|
struct acpi_table_header
|
||||||
**out_table))
|
**out_table))
|
||||||
ACPI_EXTERNAL_RETURN_STATUS(acpi_status
|
ACPI_EXTERNAL_RETURN_STATUS(acpi_status
|
||||||
acpi_install_table_handler(acpi_table_handler
|
acpi_install_table_handler(acpi_table_handler
|
||||||
handler, void *context))
|
handler, void *context))
|
||||||
@ -965,15 +967,6 @@ void acpi_terminate_debugger(void);
|
|||||||
/*
|
/*
|
||||||
* Divergences
|
* Divergences
|
||||||
*/
|
*/
|
||||||
ACPI_GLOBAL(u8, acpi_gbl_permanent_mmap);
|
|
||||||
|
|
||||||
ACPI_EXTERNAL_RETURN_STATUS(acpi_status
|
|
||||||
acpi_get_table_with_size(acpi_string signature,
|
|
||||||
u32 instance,
|
|
||||||
struct acpi_table_header
|
|
||||||
**out_table,
|
|
||||||
acpi_size *tbl_size))
|
|
||||||
|
|
||||||
ACPI_EXTERNAL_RETURN_STATUS(acpi_status
|
ACPI_EXTERNAL_RETURN_STATUS(acpi_status
|
||||||
acpi_get_data_full(acpi_handle object,
|
acpi_get_data_full(acpi_handle object,
|
||||||
acpi_object_handler handler,
|
acpi_object_handler handler,
|
||||||
|
@ -371,6 +371,7 @@ struct acpi_table_desc {
|
|||||||
union acpi_name_union signature;
|
union acpi_name_union signature;
|
||||||
acpi_owner_id owner_id;
|
acpi_owner_id owner_id;
|
||||||
u8 flags;
|
u8 flags;
|
||||||
|
u16 validation_count;
|
||||||
};
|
};
|
||||||
|
|
||||||
/* Masks for Flags field above */
|
/* Masks for Flags field above */
|
||||||
|
@ -142,7 +142,6 @@ static inline void acpi_os_terminate_command_signals(void)
|
|||||||
/*
|
/*
|
||||||
* OSL interfaces added by Linux
|
* OSL interfaces added by Linux
|
||||||
*/
|
*/
|
||||||
void early_acpi_os_unmap_memory(void __iomem * virt, acpi_size size);
|
|
||||||
|
|
||||||
#endif /* __KERNEL__ */
|
#endif /* __KERNEL__ */
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user