mirror of
https://github.com/torvalds/linux.git
synced 2024-11-26 06:02:05 +00:00
RISC-V: cacheflush: Initialize CBO variables on ACPI systems
Initialize the CBO variables on ACPI based systems using information in RHCT. Signed-off-by: Sunil V L <sunilvl@ventanamicro.com> Reviewed-by: Andrew Jones <ajones@ventanamicro.com> Reviewed-by: Samuel Holland <samuel.holland@sifive.com> Link: https://lore.kernel.org/r/20231018124007.1306159-5-sunilvl@ventanamicro.com Signed-off-by: Palmer Dabbelt <palmer@rivosinc.com>
This commit is contained in:
parent
9ca8756419
commit
2960f371f1
@ -3,7 +3,9 @@
|
||||
* Copyright (C) 2017 SiFive
|
||||
*/
|
||||
|
||||
#include <linux/acpi.h>
|
||||
#include <linux/of.h>
|
||||
#include <asm/acpi.h>
|
||||
#include <asm/cacheflush.h>
|
||||
|
||||
#ifdef CONFIG_SMP
|
||||
@ -124,13 +126,24 @@ 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;
|
||||
|
||||
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);
|
||||
if (acpi_disabled) {
|
||||
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);
|
||||
}
|
||||
} else {
|
||||
status = acpi_get_table(ACPI_SIG_RHCT, 0, &rhct);
|
||||
if (ACPI_FAILURE(status))
|
||||
return;
|
||||
|
||||
acpi_get_cbo_block_size(rhct, &cbom_block_size, &cboz_block_size, NULL);
|
||||
acpi_put_table((struct acpi_table_header *)rhct);
|
||||
}
|
||||
|
||||
if (cbom_block_size)
|
||||
|
Loading…
Reference in New Issue
Block a user