On Tue, Jun 21, 2022 at 9:20 PM Sudeep Holla <sudeep.holla@xxxxxxx> wrote: > > There is need to use the cache sharing information quite early during > the boot before the secondary cores are up and running. The permanent > memory map for all the ACPI tables(via acpi_permanent_mmap) is turned > on in acpi_early_init() which is quite late for the above requirement. > > As a result there is possibility that the ACPI PPTT gets mapped to > different virtual addresses. In such scenarios, using virtual address as > fw_token before the acpi_permanent_mmap is enabled results in different > fw_token for the same cache entity and hence wrong cache sharing > information will be deduced based on the same. > > Instead of using virtual address, just use the table offset as the > unique firmware token for the caches. The same offset is used as > ACPI identifiers if the firmware has not set a valid one for other > entries in the ACPI PPTT. > > Cc: linux-acpi@xxxxxxxxxxxxxxx > Signed-off-by: Sudeep Holla <sudeep.holla@xxxxxxx> > --- > drivers/acpi/pptt.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > Hi Rafael, > > If you are happy with this change, can you provide Ack, so that it can be > merged together with other changes ? No objections: Acked-by: Rafael J. Wysocki <rafael@xxxxxxxxxx> > diff --git a/drivers/acpi/pptt.c b/drivers/acpi/pptt.c > index 701f61c01359..763f021d45e6 100644 > --- a/drivers/acpi/pptt.c > +++ b/drivers/acpi/pptt.c > @@ -437,7 +437,8 @@ static void cache_setup_acpi_cpu(struct acpi_table_header *table, > pr_debug("found = %p %p\n", found_cache, cpu_node); > if (found_cache) > update_cache_properties(this_leaf, found_cache, > - cpu_node, table->revision); > + ACPI_TO_POINTER(ACPI_PTR_DIFF(cpu_node, table)), > + table->revision); > > index++; > } > -- > 2.36.1 >