Message ID | 20230803175916.3174453-10-sunilvl@ventanamicro.com (mailing list archive) |
---|---|
State | Changes Requested |
Headers | show |
Series | RISC-V: ACPI: Add external interrupt controller support | expand |
On Thu, Aug 03, 2023 at 11:29:04PM +0530, Sunil V L wrote: > Using new interface to get the CBO block size information in > RHCT, initialize the variables on ACPI platforms. ... > #include <linux/of.h> > +#include <linux/acpi.h> Can you keep it sorted (to some extent)? > +#include <asm/acpi.h> What do you need this for? > #include <asm/cacheflush.h>
On Fri, Aug 04, 2023 at 08:56:29AM +0300, Andy Shevchenko wrote: > On Thu, Aug 03, 2023 at 11:29:04PM +0530, Sunil V L wrote: > > Using new interface to get the CBO block size information in > > RHCT, initialize the variables on ACPI platforms. > > ... > > > #include <linux/of.h> > > +#include <linux/acpi.h> > > Can you keep it sorted (to some extent)? > Sure. > > +#include <asm/acpi.h> > > What do you need this for? > > > #include <asm/cacheflush.h> > When CONFIG_ACPI is disabled, this include is required to get acpi_get_cbo_block_size(). Thanks, Sunil
On Fri, Aug 04, 2023 at 02:50:34PM +0530, Sunil V L wrote: > On Fri, Aug 04, 2023 at 08:56:29AM +0300, Andy Shevchenko wrote: > > On Thu, Aug 03, 2023 at 11:29:04PM +0530, Sunil V L wrote: > > > Using new interface to get the CBO block size information in > > > RHCT, initialize the variables on ACPI platforms. ... > > > +#include <asm/acpi.h> > > > > What do you need this for? > > > > > #include <asm/cacheflush.h> > > > When CONFIG_ACPI is disabled, this include is required to get > acpi_get_cbo_block_size(). How is it useful without ACPI being enabled? If it's indeed (in which I do not believe), better to make sure you have it avaiable independently on CONFIG_ACPI. Otherwise, just put #ifdef CONFIG_ACPI around the call.
diff --git a/arch/riscv/mm/cacheflush.c b/arch/riscv/mm/cacheflush.c index fbc59b3f69f2..63bb56819b37 100644 --- a/arch/riscv/mm/cacheflush.c +++ b/arch/riscv/mm/cacheflush.c @@ -4,6 +4,8 @@ */ #include <linux/of.h> +#include <linux/acpi.h> +#include <asm/acpi.h> #include <asm/cacheflush.h> #ifdef CONFIG_SMP @@ -131,15 +133,38 @@ void __init riscv_init_cbo_blocksizes(void) unsigned long cbom_hartid, cboz_hartid; u32 cbom_block_size = 0, cboz_block_size = 0; struct device_node *node; + struct acpi_table_header *rhct; + acpi_status status; + unsigned int cpu; + + if (!acpi_disabled) { + status = acpi_get_table(ACPI_SIG_RHCT, 0, &rhct); + if (ACPI_FAILURE(status)) + return; + } - for_each_of_cpu_node(node) { - /* set block-size for cbom and/or cboz extension if available */ - cbo_get_block_size(node, "riscv,cbom-block-size", - &cbom_block_size, &cbom_hartid); - cbo_get_block_size(node, "riscv,cboz-block-size", - &cboz_block_size, &cboz_hartid); + for_each_possible_cpu(cpu) { + if (acpi_disabled) { + node = of_cpu_device_node_get(cpu); + if (!node) { + pr_warn("Unable to find cpu node\n"); + continue; + } + + /* set block-size for cbom and/or cboz extension if available */ + cbo_get_block_size(node, "riscv,cbom-block-size", + &cbom_block_size, &cbom_hartid); + cbo_get_block_size(node, "riscv,cboz-block-size", + &cboz_block_size, &cboz_hartid); + } else { + acpi_get_cbo_block_size(rhct, cpu, &cbom_block_size, + &cboz_block_size, NULL); + } } + if (!acpi_disabled && rhct) + acpi_put_table((struct acpi_table_header *)rhct); + if (cbom_block_size) riscv_cbom_block_size = cbom_block_size;
Using new interface to get the CBO block size information in RHCT, initialize the variables on ACPI platforms. Signed-off-by: Sunil V L <sunilvl@ventanamicro.com> --- arch/riscv/mm/cacheflush.c | 37 +++++++++++++++++++++++++++++++------ 1 file changed, 31 insertions(+), 6 deletions(-)