Commit Graph

18 Commits

Author SHA1 Message Date
Mark Langsdorf e14feab825 ACPICA: executer/exsystem: Fix some typo mistakes
JIRA: https://issues.redhat.com/browse/RHEL-54149
Conflicts:
	drivers/acpi/acpica/exsystem.c - the
ACPI_WARNING in acpi_ex_system_do_sleep() doesn't
exist in RHEL-9, so the change to it was dropped.

commit 3d6c6552f1c1b174e1bc27102f55942ec94f144d
Author: Selvarasu Ganesan <selvarasu.ganesan@arm.com>
Date: Wed, 13 Apr 2022 20:24:58 +0000

ACPICA commit 441747f1dcff770d692acbfd4d85b2cfaabdb38a

Link: https://github.com/acpica/acpica/commit/441747f1
Signed-off-by: Selvarasu Ganesan <selvarasu.ganesan@arm.com>
Signed-off-by: Bob Moore <robert.moore@intel.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Signed-off-by: Mark Langsdorf <mlangsdo@redhat.com>
2024-08-22 11:21:30 -04:00
Radu Rendec c4d9858765 ACPI: PPTT: Fix to avoid sleep in the atomic context when PPTT is absent
Bugzilla: https://bugzilla.redhat.com/2180619

commit 91d7b60a65d9f71230ea09b86d2058a884a3c2af
Author: Sudeep Holla <sudeep.holla@arm.com>
Date:   Wed Mar 8 11:26:32 2023 +0000

    ACPI: PPTT: Fix to avoid sleep in the atomic context when PPTT is absent

    Commit 0c80f9e165f8 ("ACPI: PPTT: Leave the table mapped for the runtime usage")
    enabled to map PPTT once on the first invocation of acpi_get_pptt() and
    never unmapped the same allowing it to be used at runtime with out the
    hassle of mapping and unmapping the table. This was needed to fetch LLC
    information from the PPTT in the cpuhotplug path which is executed in
    the atomic context as the acpi_get_table() might sleep waiting for a
    mutex.

    However it missed to handle the case when there is no PPTT on the system
    which results in acpi_get_pptt() being called from all the secondary
    CPUs attempting to fetch the LLC information in the atomic context
    without knowing the absence of PPTT resulting in the splat like below:

     | BUG: sleeping function called from invalid context at kernel/locking/semaphore.c:164
     | in_atomic(): 1, irqs_disabled(): 1, non_block: 0, pid: 0, name: swapper/1
     | preempt_count: 1, expected: 0
     | RCU nest depth: 0, expected: 0
     | no locks held by swapper/1/0.
     | irq event stamp: 0
     | hardirqs last  enabled at (0): 0x0
     | hardirqs last disabled at (0): copy_process+0x61c/0x1b40
     | softirqs last  enabled at (0): copy_process+0x61c/0x1b40
     | softirqs last disabled at (0): 0x0
     | CPU: 1 PID: 0 Comm: swapper/1 Not tainted 6.3.0-rc1 #1
     | Call trace:
     |  dump_backtrace+0xac/0x138
     |  show_stack+0x30/0x48
     |  dump_stack_lvl+0x60/0xb0
     |  dump_stack+0x18/0x28
     |  __might_resched+0x160/0x270
     |  __might_sleep+0x58/0xb0
     |  down_timeout+0x34/0x98
     |  acpi_os_wait_semaphore+0x7c/0xc0
     |  acpi_ut_acquire_mutex+0x58/0x108
     |  acpi_get_table+0x40/0xe8
     |  acpi_get_pptt+0x48/0xa0
     |  acpi_get_cache_info+0x38/0x140
     |  init_cache_level+0xf4/0x118
     |  detect_cache_attributes+0x2e4/0x640
     |  update_siblings_masks+0x3c/0x330
     |  store_cpu_topology+0x88/0xf0
     |  secondary_start_kernel+0xd0/0x168
     |  __secondary_switched+0xb8/0xc0

    Update acpi_get_pptt() to consider the fact that PPTT is once checked and
    is not available on the system and return NULL avoiding any attempts to
    fetch PPTT and thereby avoiding any possible sleep waiting for a mutex
    in the atomic context.

    Fixes: 0c80f9e165f8 ("ACPI: PPTT: Leave the table mapped for the runtime usage")
    Reported-by: Aishwarya TCV <aishwarya.tcv@arm.com>
    Signed-off-by: Sudeep Holla <sudeep.holla@arm.com>
    Tested-by: Pierre Gondois <pierre.gondois@arm.com>
    Cc: 6.0+ <stable@vger.kernel.org> # 6.0+
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>

Signed-off-by: Radu Rendec <rrendec@redhat.com>
2023-05-02 16:57:28 -04:00
Radu Rendec 15dc57c994 ACPI: PPTT: Update acpi_find_last_cache_level() to acpi_get_cache_info()
Bugzilla: https://bugzilla.redhat.com/2180619

commit bd500361a937c03a3da57178287ce543c8f3681b
Author: Pierre Gondois <pierre.gondois@arm.com>
Date:   Wed Jan 4 19:30:28 2023 +0100

    ACPI: PPTT: Update acpi_find_last_cache_level() to acpi_get_cache_info()

    acpi_find_last_cache_level() allows to find the last level of cache
    for a given CPU. The function is only called on arm64 ACPI based
    platforms to check for cache information that would be missing in
    the CLIDR_EL1 register.
    To allow populating (struct cpu_cacheinfo).num_leaves by only parsing
    a PPTT, update acpi_find_last_cache_level() to get the 'split_levels',
    i.e. the number of cache levels being split in data/instruction
    caches.

    It is assumed that there will not be data/instruction caches above a
    unified cache.
    If a split level consist of one data cache and no instruction cache
    (or opposite), then the missing cache will still be populated
    by default with minimal cache information, and maximal cpumask
    (all non-existing caches have the same fw_token).

    Suggested-by: Jeremy Linton <jeremy.linton@arm.com>
    Signed-off-by: Pierre Gondois <pierre.gondois@arm.com>
    Reviewed-by: Jeremy Linton <jeremy.linton@arm.com>
    Acked-by: Rafael J. Wysocki  <rafael.j.wysocki@intel.com>
    Acked-by: Palmer Dabbelt <palmer@rivosinc.com>
    Link: https://lore.kernel.org/r/20230104183033.755668-6-pierre.gondois@arm.com
    Signed-off-by: Sudeep Holla <sudeep.holla@arm.com>

Signed-off-by: Radu Rendec <rrendec@redhat.com>
2023-05-02 16:57:28 -04:00
Radu Rendec b73a554da4 ACPI: PPTT: Remove acpi_find_cache_levels()
Bugzilla: https://bugzilla.redhat.com/2180619

commit fa4d566a605bc4cf32d69f16ef8cf9696635f75a
Author: Pierre Gondois <pierre.gondois@arm.com>
Date:   Wed Jan 4 19:30:27 2023 +0100

    ACPI: PPTT: Remove acpi_find_cache_levels()

    acpi_find_cache_levels() is used at a single place and is short
    enough to be merged into the calling function. The removal allows
    an easier renaming of the calling function in the next patch.

    Also reorder the local variables in the 'reversed Christmas tree'
    order.

    Signed-off-by: Pierre Gondois <pierre.gondois@arm.com>
    Reviewed-by: Jeremy Linton <jeremy.linton@arm.com>
    Acked-by: Rafael J. Wysocki  <rafael.j.wysocki@intel.com>
    Acked-by: Palmer Dabbelt <palmer@rivosinc.com>
    Link: https://lore.kernel.org/r/20230104183033.755668-5-pierre.gondois@arm.com
    Signed-off-by: Sudeep Holla <sudeep.holla@arm.com>

Signed-off-by: Radu Rendec <rrendec@redhat.com>
2023-05-02 16:57:27 -04:00
Mark Langsdorf b282176206 ACPI: PPTT: Leave the table mapped for the runtime usage
Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2122317

commit 0c80f9e165f8f9cca743d7b6cbdb54362da297e0
Author: Sudeep Holla <sudeep.holla@arm.com>
Date: Wed, 20 Jul 2022 13:55:39 +0100

Currently, everytime an information needs to be fetched from the PPTT,
the table is mapped via acpi_get_table() and unmapped after the use via
acpi_put_table() which is fine. However we do this at runtime especially
when the CPU is hotplugged out and plugged in back since we re-populate
the cache topology and other information.

However, with the support to fetch LLC information from the PPTT in the
cpuhotplug path which is executed in the atomic context, it is preferred
to avoid mapping and unmapping of the PPTT for every single use as the
acpi_get_table() might sleep waiting for a mutex.

In order to avoid the same, the table is needs to just mapped once on
the boot CPU and is never unmapped allowing it to be used at runtime
with out the hassle of mapping and unmapping the table.

Reported-by: Guenter Roeck <linux@roeck-us.net>
Cc: Rafael J. Wysocki <rafael@kernel.org>
Signed-off-by: Sudeep Holla <sudeep.holla@arm.com>

--

Hi Rafael,

Sorry to bother you again on this PPTT changes. Guenter reported an issue
with lockdep enabled in -next that include my cacheinfo/arch_topology changes
to utilise LLC from PPTT in the CPU hotplug path.

Please ack the change once you are happy so that I can get it merged with
other fixes via Greg's tree.

Regards,
Sudeep

Acked-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Link: https://lore.kernel.org/r/20220720-arch_topo_fixes-v3-2-43d696288e84@arm.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Mark Langsdorf <mlangsdo@redhat.com>
2022-11-01 11:04:33 -04:00
Mark Langsdorf cd762e09fe ACPI: PPTT: Use table offset as fw_token instead of virtual address
Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2122317

commit 0d4c331af4d169de26186170010c7b7acd49f266
Author: Sudeep Holla <sudeep.holla@arm.com>
Date: Mon, 4 Jul 2022 11:15:45 +0100

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.

Link: https://lore.kernel.org/r/20220704101605.1318280-2-sudeep.holla@arm.com
Cc: linux-acpi@vger.kernel.org
Tested-by: Ionela Voinescu <ionela.voinescu@arm.com>
Tested-by: Conor Dooley <conor.dooley@microchip.com>
Acked-by: Rafael J. Wysocki <rafael@kernel.org>
Signed-off-by: Sudeep Holla <sudeep.holla@arm.com>
Signed-off-by: Mark Langsdorf <mlangsdo@redhat.com>
2022-11-01 11:04:07 -04:00
Phil Auld 3c5fded7c2 topology: Represent clusters of CPUs within a die
Bugzilla: http://bugzilla.redhat.com/2020279

commit c5e22feffdd736cb02b98b0f5b375c8ebc858dd4
Author: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Date:   Fri Sep 24 20:51:02 2021 +1200

    topology: Represent clusters of CPUs within a die

    Both ACPI and DT provide the ability to describe additional layers of
    topology between that of individual cores and higher level constructs
    such as the level at which the last level cache is shared.
    In ACPI this can be represented in PPTT as a Processor Hierarchy
    Node Structure [1] that is the parent of the CPU cores and in turn
    has a parent Processor Hierarchy Nodes Structure representing
    a higher level of topology.

    For example Kunpeng 920 has 6 or 8 clusters in each NUMA node, and each
    cluster has 4 cpus. All clusters share L3 cache data, but each cluster
    has local L3 tag. On the other hand, each clusters will share some
    internal system bus.

    +-----------------------------------+                          +---------+
    |  +------+    +------+             +--------------------------+         |
    |  | CPU0 |    | cpu1 |             |    +-----------+         |         |
    |  +------+    +------+             |    |           |         |         |
    |                                   +----+    L3     |         |         |
    |  +------+    +------+   cluster   |    |    tag    |         |         |
    |  | CPU2 |    | CPU3 |             |    |           |         |         |
    |  +------+    +------+             |    +-----------+         |         |
    |                                   |                          |         |
    +-----------------------------------+                          |         |
    +-----------------------------------+                          |         |
    |  +------+    +------+             +--------------------------+         |
    |  |      |    |      |             |    +-----------+         |         |
    |  +------+    +------+             |    |           |         |         |
    |                                   |    |    L3     |         |         |
    |  +------+    +------+             +----+    tag    |         |         |
    |  |      |    |      |             |    |           |         |         |
    |  +------+    +------+             |    +-----------+         |         |
    |                                   |                          |         |
    +-----------------------------------+                          |   L3    |
                                                                   |   data  |
    +-----------------------------------+                          |         |
    |  +------+    +------+             |    +-----------+         |         |
    |  |      |    |      |             |    |           |         |         |
    |  +------+    +------+             +----+    L3     |         |         |
    |                                   |    |    tag    |         |         |
    |  +------+    +------+             |    |           |         |         |
    |  |      |    |      |             |    +-----------+         |         |
    |  +------+    +------+             +--------------------------+         |
    +-----------------------------------|                          |         |
    +-----------------------------------|                          |         |
    |  +------+    +------+             +--------------------------+         |
    |  |      |    |      |             |    +-----------+         |         |
    |  +------+    +------+             |    |           |         |         |
    |                                   +----+    L3     |         |         |
    |  +------+    +------+             |    |    tag    |         |         |
    |  |      |    |      |             |    |           |         |         |
    |  +------+    +------+             |    +-----------+         |         |
    |                                   |                          |         |
    +-----------------------------------+                          |         |
    +-----------------------------------+                          |         |
    |  +------+    +------+             +--------------------------+         |
    |  |      |    |      |             |   +-----------+          |         |
    |  +------+    +------+             |   |           |          |         |
    |                                   |   |    L3     |          |         |
    |  +------+    +------+             +---+    tag    |          |         |
    |  |      |    |      |             |   |           |          |         |
    |  +------+    +------+             |   +-----------+          |         |
    |                                   |                          |         |
    +-----------------------------------+                          |         |
    +-----------------------------------+                          |         |
    |  +------+    +------+             +--------------------------+         |
    |  |      |    |      |             |  +-----------+           |         |
    |  +------+    +------+             |  |           |           |         |
    |                                   |  |    L3     |           |         |
    |  +------+    +------+             +--+    tag    |           |         |
    |  |      |    |      |             |  |           |           |         |
    |  +------+    +------+             |  +-----------+           |         |
    |                                   |                          +---------+
    +-----------------------------------+

    That means spreading tasks among clusters will bring more bandwidth
    while packing tasks within one cluster will lead to smaller cache
    synchronization latency. So both kernel and userspace will have
    a chance to leverage this topology to deploy tasks accordingly to
    achieve either smaller cache latency within one cluster or an even
    distribution of load among clusters for higher throughput.

    This patch exposes cluster topology to both kernel and userspace.
    Libraried like hwloc will know cluster by cluster_cpus and related
    sysfs attributes. PoC of HWLOC support at [2].

    Note this patch only handle the ACPI case.

    Special consideration is needed for SMT processors, where it is
    necessary to move 2 levels up the hierarchy from the leaf nodes
    (thus skipping the processor core level).

    Note that arm64 / ACPI does not provide any means of identifying
    a die level in the topology but that may be unrelate to the cluster
    level.

    [1] ACPI Specification 6.3 - section 5.2.29.1 processor hierarchy node
        structure (Type 0)
    [2] https://github.com/hisilicon/hwloc/tree/linux-cluster

    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Tian Tao <tiantao6@hisilicon.com>
    Signed-off-by: Barry Song <song.bao.hua@hisilicon.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Link: https://lore.kernel.org/r/20210924085104.44806-2-21cnbao@gmail.com

Signed-off-by: Phil Auld <pauld@redhat.com>
2021-12-13 16:07:48 -05:00
James Morse 7ca1a8014d ACPI: tables: PPTT: Populate cache-id if provided by firmware
ACPI 6.4 adds a 'cache id' to the PPTT Cache Type Structure.

Copy this property across into the cacheinfo leaf when it was
provided by firmware.

This value gets exposed to userspace as:
/sys/devices/system/cpu/cpu*/cache/index*/id.

See the "Cache IDs" section of Documentation/x86/resctrl.rst.

Co-authored-by: Joey Gouly <joey.gouly@arm.com>
Signed-off-by: James Morse <james.morse@arm.com>
Signed-off-by: Joey Gouly <joey.gouly@arm.com>
[ rjw: Subject and changelog edits ]
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
2021-06-07 15:55:02 +02:00
Tian Tao 643956e61c ACPI: PPTT: Consistently use unsigned int as parameter type
The fourth parameter 'level' of function 'acpi_find_cache_level()' is
a signed interger, but its caller 'acpi_find_cache_node()' passes that
parameter an unsigned interger.

Make the paramter type inconsistency go away.

Signed-off-by: Tian Tao <tiantao6@huawei.com>
Signed-off-by: Xiongfeng Wang <wangxiongfeng2@huawei.com>
[ rjw: Subject/changelog ]
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
2020-01-07 11:46:36 +01:00
Jeremy Linton bbd1b70639 ACPI/PPTT: Add support for ACPI 6.3 thread flag
ACPI 6.3 adds a flag to the CPU node to indicate whether
the given PE is a thread. Add a function to return that
information for a given linux logical CPU.

Signed-off-by: Jeremy Linton <jeremy.linton@arm.com>
Reviewed-by: Sudeep Holla <sudeep.holla@arm.com>
Reviewed-by: Robert Richter <rrichter@marvell.com>
Acked-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Signed-off-by: Will Deacon <will@kernel.org>
2019-08-12 12:59:15 +01:00
Jeremy Linton 56855a99f3 ACPI/PPTT: Add function to return ACPI 6.3 Identical tokens
ACPI 6.3 adds a flag to indicate that child nodes are all
identical cores. This is useful to authoritatively determine
if a set of (possibly offline) cores are identical or not.

Since the flag doesn't give us a unique id we can generate
one and use it to create bitmaps of sibling nodes, or simply
in a loop to determine if a subset of cores are identical.

Acked-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Tested-by: Hanjun Guo <hanjun.guo@linaro.org>
Reviewed-by: Sudeep Holla <sudeep.holla@arm.com>
Signed-off-by: Jeremy Linton <jeremy.linton@arm.com>
Signed-off-by: Will Deacon <will@kernel.org>
2019-06-27 16:53:18 +01:00
Jeremy Linton ed2b664fcc ACPI/PPTT: Modify node flag detection to find last IDENTICAL
The ACPI specification implies that the IDENTICAL flag should be
set on all non leaf nodes where the children are identical.
This means that we need to be searching for the last node with
the identical flag set rather than the first one.

Since this flag is also dependent on the table revision, we
need to add a bit of extra code to verify the table revision,
and the next node's state in the traversal. Since we want to
avoid function pointers here, lets just special case
the IDENTICAL flag.

Acked-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Tested-by: Hanjun Guo <hanjun.guo@linaro.org>
Reviewed-by: Sudeep Holla <sudeep.holla@arm.com>
Signed-off-by: Jeremy Linton <jeremy.linton@arm.com>
Signed-off-by: Will Deacon <will@kernel.org>
2019-06-27 16:52:13 +01:00
Bjorn Helgaas 603fadf336 ACPI: Fix comment typos
Fix some misspellings in comments.  No functional change intended.

Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
2019-03-26 22:33:43 +01:00
Jeremy Linton 4909e6df21 ACPI: tables: Simplify PPTT leaf node detection
ACPI 6.3 bumps the PPTT table revision and adds a LEAF_NODE flag.

This allows us to avoid a second pass through the table to assure
that the node in question is a leaf.

Signed-off-by: Jeremy Linton <jeremy.linton@arm.com>
Reviewed-by: Sudeep Holla <sudeep.holla@arm.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
2019-03-11 12:14:57 +01:00
John Garry 6cafe700b0 ACPI/PPTT: Add acpi_pptt_warn_missing() to consolidate logs
For a system using ACPI-based FW without a PPTT, we may get many warnings
about the lack of a PPTT, as shown:

root@(none)$ dmesg | grep -i pptt
[    0.010125] ACPI PPTT: No PPTT table found, cpu topology may be inaccurate
[    7.138339] ACPI PPTT: No PPTT table found, cache topology may be inaccurate
[    7.145368] ACPI PPTT: No PPTT table found, cache topology may be inaccurate

These logs are generated with pr_warn_once(), so the intention was for a
single log, but the logs overlap, so consolidate them.

Signed-off-by: John Garry <john.garry@huawei.com>
Reviewed-by: Jeremy Linton <jeremy.linton@arm.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
2019-02-07 23:16:08 +01:00
Jeffrey Hugo 59bbff3775 ACPI/PPTT: Handle architecturally unknown cache types
The type of a cache might not be specified by architectural mechanisms (ie
system registers), but its type might be specified in the PPTT.  In this
case, we should populate the type of the cache, rather than leave it
undefined.

This fixes the issue where the cacheinfo driver will not populate sysfs
for such caches, resulting in the information missing from utilities like
lstopo and lscpu, thus degrading the user experience.

Fixes: 2bd00bcd73 (ACPI/PPTT: Add Processor Properties Topology Table parsing)
Reported-by: Vijaya Kumar K <vkilari@codeaurora.org>
Signed-off-by: Jeffrey Hugo <jhugo@codeaurora.org>
Reviewed-by: Sudeep Holla <sudeep.holla@arm.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
2018-10-04 23:02:17 +02:00
Sudeep Holla 30998033f6 ACPI / PPTT: use ACPI ID whenever ACPI_PPTT_ACPI_PROCESSOR_ID_VALID is set
Currently, we use the ACPI processor ID only for the leaf/processor nodes
as the specification states it must match the value of the ACPI processor
ID field in the processor’s entry in the MADT.

However, if a PPTT structure represents a processors group, it
matches a processor container UID in the namespace and the
ACPI_PPTT_ACPI_PROCESSOR_ID_VALID flag indicates whether the
ACPI processor ID is valid.

Let's use UID whenever ACPI_PPTT_ACPI_PROCESSOR_ID_VALID is set to be
consistent instead of using table offset as it's currently done for
non-leaf nodes.

Fixes: 2bd00bcd73 (ACPI/PPTT: Add Processor Properties Topology Table parsing)
Signed-off-by: Sudeep Holla <sudeep.holla@arm.com>
Acked-by: Jeremy Linton <jeremy.linton@arm.com>
[ rjw: Changelog (minor) ]
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
2018-07-02 22:56:38 +02:00
Jeremy Linton 2bd00bcd73 ACPI/PPTT: Add Processor Properties Topology Table parsing
ACPI 6.2 adds a new table, which describes how processing units
are related to each other in tree like fashion. Caches are
also sprinkled throughout the tree and describe the properties
of the caches in relation to other caches and processing units.

Add the code to parse the cache hierarchy and report the total
number of levels of cache for a given core using
acpi_find_last_cache_level() as well as fill out the individual
cores cache information with cache_setup_acpi() once the
cpu_cacheinfo structure has been populated by the arch specific
code.

An additional patch later in the set adds the ability to report
peers in the topology using find_acpi_cpu_topology()
to report a unique ID for each processing unit at a given level
in the tree. These unique id's can then be used to match related
processing units which exist as threads, within a given
package, etc.

Tested-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Tested-by: Vijaya Kumar K <vkilari@codeaurora.org>
Tested-by: Xiongfeng Wang <wangxiongfeng2@huawei.com>
Tested-by: Tomasz Nowicki <Tomasz.Nowicki@cavium.com>
Acked-by: Sudeep Holla <sudeep.holla@arm.com>
Acked-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Acked-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Signed-off-by: Jeremy Linton <jeremy.linton@arm.com>
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
2018-05-17 17:28:09 +01:00