lkml.org 
[lkml]   [2020]   [Oct]   [7]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[tip: x86/platform] x86/platform/uv: Update node present counting
    The following commit has been merged into the x86/platform branch of tip:

    Commit-ID: d6922effe4f3d5c643c8c05d51a572d6db4c9cb3
    Gitweb: https://git.kernel.org/tip/d6922effe4f3d5c643c8c05d51a572d6db4c9cb3
    Author: Mike Travis <mike.travis@hpe.com>
    AuthorDate: Mon, 05 Oct 2020 15:39:26 -05:00
    Committer: Borislav Petkov <bp@suse.de>
    CommitterDate: Wed, 07 Oct 2020 09:08:35 +02:00

    x86/platform/uv: Update node present counting

    The changes in the UV5 arch shrunk the NODE PRESENT table to just 2x64
    entries (128 total) so are in to 64 bit MMRs instead of a depth of 64
    bits in an array. Adjust references when counting up the nodes present.

    Signed-off-by: Mike Travis <mike.travis@hpe.com>
    Signed-off-by: Borislav Petkov <bp@suse.de>
    Reviewed-by: Dimitri Sivanich <dimitri.sivanich@hpe.com>
    Reviewed-by: Steve Wahl <steve.wahl@hpe.com>
    Link: https://lkml.kernel.org/r/20201005203929.148656-11-mike.travis@hpe.com
    ---
    arch/x86/kernel/apic/x2apic_uv_x.c | 26 +++++++++++++++++++-------
    1 file changed, 19 insertions(+), 7 deletions(-)

    diff --git a/arch/x86/kernel/apic/x2apic_uv_x.c b/arch/x86/kernel/apic/x2apic_uv_x.c
    index 64a1c59..9b44f45 100644
    --- a/arch/x86/kernel/apic/x2apic_uv_x.c
    +++ b/arch/x86/kernel/apic/x2apic_uv_x.c
    @@ -1436,20 +1436,32 @@ static int __init decode_uv_systab(void)
    /* Set up physical blade translations from UVH_NODE_PRESENT_TABLE */
    static __init void boot_init_possible_blades(struct uv_hub_info_s *hub_info)
    {
    + unsigned long np;
    int i, uv_pb = 0;

    - pr_info("UV: NODE_PRESENT_DEPTH = %d\n", UVH_NODE_PRESENT_TABLE_DEPTH);
    - for (i = 0; i < UVH_NODE_PRESENT_TABLE_DEPTH; i++) {
    - unsigned long np;
    -
    - np = uv_read_local_mmr(UVH_NODE_PRESENT_TABLE + i * 8);
    - if (np)
    + if (UVH_NODE_PRESENT_TABLE) {
    + pr_info("UV: NODE_PRESENT_DEPTH = %d\n",
    + UVH_NODE_PRESENT_TABLE_DEPTH);
    + for (i = 0; i < UVH_NODE_PRESENT_TABLE_DEPTH; i++) {
    + np = uv_read_local_mmr(UVH_NODE_PRESENT_TABLE + i * 8);
    pr_info("UV: NODE_PRESENT(%d) = 0x%016lx\n", i, np);
    -
    + uv_pb += hweight64(np);
    + }
    + }
    + if (UVH_NODE_PRESENT_0) {
    + np = uv_read_local_mmr(UVH_NODE_PRESENT_0);
    + pr_info("UV: NODE_PRESENT_0 = 0x%016lx\n", np);
    + uv_pb += hweight64(np);
    + }
    + if (UVH_NODE_PRESENT_1) {
    + np = uv_read_local_mmr(UVH_NODE_PRESENT_1);
    + pr_info("UV: NODE_PRESENT_1 = 0x%016lx\n", np);
    uv_pb += hweight64(np);
    }
    if (uv_possible_blades != uv_pb)
    uv_possible_blades = uv_pb;
    +
    + pr_info("UV: number nodes/possible blades %d\n", uv_pb);
    }

    static void __init build_socket_tables(void)
    \
     
     \ /
      Last update: 2020-10-07 09:13    [W:3.635 / U:1.584 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site