ACPI: MRRM: Minimal parse of ACPI MRRM table
The resctrl file system code needs to know how many region tags are supported. Parse the ACPI MRRM table and save the max_mem_region value. Provide a function for resctrl to collect that value. Signed-off-by: Tony Luck <tony.luck@intel.com> Link: https://patch.msgid.link/20250505173819.419271-2-tony.luck@intel.com Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>pull/1250/head
parent
fec2686d4d
commit
b9020bdb9f
|
|
@ -38,6 +38,7 @@ config X86_64
|
||||||
select ARCH_HAS_ELFCORE_COMPAT
|
select ARCH_HAS_ELFCORE_COMPAT
|
||||||
select ZONE_DMA32
|
select ZONE_DMA32
|
||||||
select EXECMEM if DYNAMIC_FTRACE
|
select EXECMEM if DYNAMIC_FTRACE
|
||||||
|
select ACPI_MRRM if ACPI
|
||||||
|
|
||||||
config FORCE_DYNAMIC_FTRACE
|
config FORCE_DYNAMIC_FTRACE
|
||||||
def_bool y
|
def_bool y
|
||||||
|
|
|
||||||
|
|
@ -576,6 +576,9 @@ config ACPI_FFH
|
||||||
Enable this feature if you want to set up and install the FFH Address
|
Enable this feature if you want to set up and install the FFH Address
|
||||||
Space handler to handle FFH OpRegion in the firmware.
|
Space handler to handle FFH OpRegion in the firmware.
|
||||||
|
|
||||||
|
config ACPI_MRRM
|
||||||
|
bool
|
||||||
|
|
||||||
source "drivers/acpi/pmic/Kconfig"
|
source "drivers/acpi/pmic/Kconfig"
|
||||||
|
|
||||||
config ACPI_VIOT
|
config ACPI_VIOT
|
||||||
|
|
|
||||||
|
|
@ -66,6 +66,7 @@ acpi-$(CONFIG_ACPI_WATCHDOG) += acpi_watchdog.o
|
||||||
acpi-$(CONFIG_ACPI_PRMT) += prmt.o
|
acpi-$(CONFIG_ACPI_PRMT) += prmt.o
|
||||||
acpi-$(CONFIG_ACPI_PCC) += acpi_pcc.o
|
acpi-$(CONFIG_ACPI_PCC) += acpi_pcc.o
|
||||||
acpi-$(CONFIG_ACPI_FFH) += acpi_ffh.o
|
acpi-$(CONFIG_ACPI_FFH) += acpi_ffh.o
|
||||||
|
acpi-$(CONFIG_ACPI_MRRM) += acpi_mrrm.o
|
||||||
|
|
||||||
# Address translation
|
# Address translation
|
||||||
acpi-$(CONFIG_ACPI_ADXL) += acpi_adxl.o
|
acpi-$(CONFIG_ACPI_ADXL) += acpi_adxl.o
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,42 @@
|
||||||
|
// SPDX-License-Identifier: GPL-2.0
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2025, Intel Corporation.
|
||||||
|
*
|
||||||
|
* Memory Range and Region Mapping (MRRM) structure
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define pr_fmt(fmt) "acpi/mrrm: " fmt
|
||||||
|
|
||||||
|
#include <linux/acpi.h>
|
||||||
|
#include <linux/init.h>
|
||||||
|
|
||||||
|
static int max_mem_region = -ENOENT;
|
||||||
|
|
||||||
|
/* Access for use by resctrl file system */
|
||||||
|
int acpi_mrrm_max_mem_region(void)
|
||||||
|
{
|
||||||
|
return max_mem_region;
|
||||||
|
}
|
||||||
|
|
||||||
|
static __init int acpi_parse_mrrm(struct acpi_table_header *table)
|
||||||
|
{
|
||||||
|
struct acpi_table_mrrm *mrrm;
|
||||||
|
|
||||||
|
mrrm = (struct acpi_table_mrrm *)table;
|
||||||
|
if (!mrrm)
|
||||||
|
return -ENODEV;
|
||||||
|
|
||||||
|
max_mem_region = mrrm->max_mem_region;
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static __init int mrrm_init(void)
|
||||||
|
{
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
ret = acpi_table_parse(ACPI_SIG_MRRM, acpi_parse_mrrm);
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
device_initcall(mrrm_init);
|
||||||
|
|
@ -772,6 +772,10 @@ int acpi_get_local_u64_address(acpi_handle handle, u64 *addr);
|
||||||
int acpi_get_local_address(acpi_handle handle, u32 *addr);
|
int acpi_get_local_address(acpi_handle handle, u32 *addr);
|
||||||
const char *acpi_get_subsystem_id(acpi_handle handle);
|
const char *acpi_get_subsystem_id(acpi_handle handle);
|
||||||
|
|
||||||
|
#ifdef CONFIG_ACPI_MRRM
|
||||||
|
int acpi_mrrm_max_mem_region(void);
|
||||||
|
#endif
|
||||||
|
|
||||||
#else /* !CONFIG_ACPI */
|
#else /* !CONFIG_ACPI */
|
||||||
|
|
||||||
#define acpi_disabled 1
|
#define acpi_disabled 1
|
||||||
|
|
@ -1092,6 +1096,11 @@ static inline acpi_handle acpi_get_processor_handle(int cpu)
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline int acpi_mrrm_max_mem_region(void)
|
||||||
|
{
|
||||||
|
return -ENOENT;
|
||||||
|
}
|
||||||
|
|
||||||
#endif /* !CONFIG_ACPI */
|
#endif /* !CONFIG_ACPI */
|
||||||
|
|
||||||
#ifdef CONFIG_ACPI_HMAT
|
#ifdef CONFIG_ACPI_HMAT
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue