From patchwork Thu Nov 9 21:03:02 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jeremy Linton X-Patchwork-Id: 118479 Delivered-To: patch@linaro.org Received: by 10.80.225.132 with SMTP id k4csp1393462edl; Thu, 9 Nov 2017 13:03:28 -0800 (PST) X-Google-Smtp-Source: ABhQp+RuuiWRHFixINykCm+44+ai0zy78e38obenQnbzGIo4X/c4E7U465rG0el0FgmvuY6NqnqJ X-Received: by 10.159.235.142 with SMTP id f14mr1657228plr.450.1510261408823; Thu, 09 Nov 2017 13:03:28 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1510261408; cv=none; d=google.com; s=arc-20160816; b=olUK8ENkCFdcgrFXePERaoQSYvBNWk/M4dnSdGdgHZk009S7fJH0+RUWec7MMYKL+3 oSQnUgUa+r8Tp8m+nmoTIAO+PVmcI9eoIIcg1FMcuxchEcNuxkG/4TAhNUZ/tacnez9+ aMWnWkgDbxdLS+ZI6WwZXIPz2LPSC8oT+IURGMt1th38usbxOVKIL6d1fk3NPgBsZ37o q6560hq1uE1keoUWnM/pXVYoyjB2U/S6Sal5QNarOVOn9W2s8bEG0unnjCxGOg2VX9gC Wnc0Z7caU7w5aY3QUi2XMEBfVZx0YQAecTiDgVRhcMvrxje6mEPGRMtkMpWRVrwOKXYx GJhA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:message-id:date:subject:cc:to:from :arc-authentication-results; bh=yTd74A+HZgT5Dg4HHmnGRB1OFhl35QwcG7CFyIzQGP4=; b=lMMoyPMFPy2bs/H0N4xLEVGEI2mLaJqmnG0MBQVsg/+JNhTf4Isa7m0//dQfv8DrRO Df66qbp3cxZsKCXD2l8ko/yXQqRx6nRYMm9mbcBTLJMj3d3Vgo3zsMU2gCQYCZGtreQh Rjvd1zPkljlwn8mEM/YQ64PosUNFbzo8mpNyUSQ5HH7luCmVGkRFrnISjr4w/ztTV078 FXBBnDb/Nf4FGlBqbdzGp3rvFGURxyHyiBIuRT93lfbKQEENLjJ+6DNPc1u61yzaD8la j5e9Rkz8egGgglYMv7e7IAA1R0/8Q8kY1UgP8EH80wBYe+a4PU679MnKBjvzzQbPXFEQ HMCA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-acpi-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-acpi-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id y11si7034820pgr.323.2017.11.09.13.03.28; Thu, 09 Nov 2017 13:03:28 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-acpi-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-acpi-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-acpi-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754407AbdKIVD1 (ORCPT + 7 others); Thu, 9 Nov 2017 16:03:27 -0500 Received: from foss.arm.com ([217.140.101.70]:51564 "EHLO foss.arm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754031AbdKIVD0 (ORCPT ); Thu, 9 Nov 2017 16:03:26 -0500 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.72.51.249]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id C4C621529; Thu, 9 Nov 2017 13:03:25 -0800 (PST) Received: from beelzebub.austin.arm.com (beelzebub.austin.arm.com [10.118.12.119]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id BF8683F3DF; Thu, 9 Nov 2017 13:03:24 -0800 (PST) From: Jeremy Linton To: linux-acpi@vger.kernel.org Cc: linux-arm-kernel@lists.infradead.org, sudeep.holla@arm.com, hanjun.guo@linaro.org, lorenzo.pieralisi@arm.com, rjw@rjwysocki.net, will.deacon@arm.com, catalin.marinas@arm.com, gregkh@linuxfoundation.org, viresh.kumar@linaro.org, mark.rutland@arm.com, linux-kernel@vger.kernel.org, linux-pm@vger.kernel.org, jhugo@codeaurora.org, wangxiongfeng2@huawei.com, Jonathan.Zhang@cavium.com, ahs3@redhat.com, Jayachandran.Nair@cavium.com, austinwc@codeaurora.org, lenb@kernel.org, robert.moore@intel.com, lv.zheng@intel.com, devel@acpica.org, Jeremy Linton Subject: [PATCH v4 0/9] Support PPTT for ARM64 Date: Thu, 9 Nov 2017 15:03:02 -0600 Message-Id: <20171109210311.25655-1-jeremy.linton@arm.com> X-Mailer: git-send-email 2.13.5 Sender: linux-acpi-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-acpi@vger.kernel.org ACPI 6.2 adds the Processor Properties Topology Table (PPTT), which is used to describe the processor and cache topology. Ideally it is used to extend/override information provided by the hardware, but right now ARM64 is entirely dependent on firmware provided tables. This patch parses the table for the cache topology and CPU topology. New in the v4 we rename the topology cluster_id to physical_id to match the kernel macro using it, and as its unlikley to actually map to a cluster on an ACPI system. When we enable ACPI/PPTT for arm64 we map the physical_id to the PPTT node flagged as the physical package by the firmware. This results in topologies that match what the remainder of the system expects. For example on juno: [root@mammon-juno-rh topology]# lstopo-no-graphics Package L#0 L2 L#0 (1024KB) L1d L#0 (32KB) + L1i L#0 (32KB) + Core L#0 + PU L#0 (P#0) L1d L#1 (32KB) + L1i L#1 (32KB) + Core L#1 + PU L#1 (P#1) L1d L#2 (32KB) + L1i L#2 (32KB) + Core L#2 + PU L#2 (P#2) L1d L#3 (32KB) + L1i L#3 (32KB) + Core L#3 + PU L#3 (P#3) L2 L#1 (2048KB) L1d L#4 (32KB) + L1i L#4 (48KB) + Core L#4 + PU L#4 (P#4) L1d L#5 (32KB) + L1i L#5 (48KB) + Core L#5 + PU L#5 (P#5) HostBridge L#0 PCIBridge PCIBridge PCIBridge PCI 1095:3132 Block(Disk) L#0 "sda" PCIBridge PCI 1002:68f9 GPU L#1 "renderD128" GPU L#2 "card0" GPU L#3 "controlD64" PCIBridge PCI 11ab:4380 Net L#4 "enp8s0" Git tree at: http://linux-arm.org/git?p=linux-jlinton.git branch: pptt_v4 v3->v4: Suppress the "Found duplicate cache level/type..." message if the duplicate cache entry is actually a duplicate node. This allows cases like L1I and L1D nodes that point at the same L2 node to be accepted without the warning. Remove cluster/physical split code. Add a patch to rename cluster_id so that its clear the topology may not be referring to a cluster. Add additional ACPICA patch for the PPTT cache properties. This matches an outstanding ACPICA pull that should be merged in the near future. Replace a number of (struct*)((u8*)ptr+offset) constructs with ACPI_ADD_PTR Split out the topology parsing into an additional patch. Tweak the cpu topology code to terminate on either a level, or a flag. Add an additional function which retrives the physical package id for a given cpu. Various other comments/tweaks. v2->v3: Remove valid bit check on leaf nodes. Now simply being a leaf node is sufficient to verify the processor id against the ACPI processor ids (gotten from MADT). Use the acpi processor for the "level 0" Id. This makes the /sys visible core/thread ids more human readable if the firmware uses small consecutive values for processor ids. Added PPTT to the list of injectable ACPI tables. Fix bug which kept the code from using the processor node as intended in v2, caused by misuse of git rebase/fixup. v1->v2: The parser keys off the acpi_pptt_processor node to determine unique cache's rather than the acpi_pptt_cache referenced by the processor node. This allows PPTT tables which "share" cache nodes across cpu nodes despite not being a shared cache. Normalize the socket, cluster and thread mapping so that they match linux's traditional mapping for the physical id, and thread id. Adding explicit scheduler knowledge of clusters (rather than just their cache sharing attributes) is a subject for a future patch. Jeremy Linton (9): ACPICA: Add additional PPTT flags for cache properties ACPI/PPTT: Add Processor Properties Topology Table parsing arm64/acpi: Create arch specific cpu to acpi id helper ACPI: Enable PPTT support on ARM64 drivers: base: cacheinfo: arm64: Add support for ACPI based firmware tables ACPI/PPTT: Add topology parsing code arm64: Topology, rename cluster_id arm64: topology: Enable ACPI/PPTT based CPU topology. ACPI: Add PPTT to injectable table list arch/arm64/Kconfig | 1 + arch/arm64/include/asm/acpi.h | 4 + arch/arm64/include/asm/topology.h | 4 +- arch/arm64/kernel/cacheinfo.c | 23 +- arch/arm64/kernel/topology.c | 74 ++++- drivers/acpi/Kconfig | 3 + drivers/acpi/Makefile | 1 + drivers/acpi/pptt.c | 570 ++++++++++++++++++++++++++++++++++++++ drivers/acpi/tables.c | 3 +- drivers/base/cacheinfo.c | 17 +- include/acpi/actbl1.h | 14 + include/linux/cacheinfo.h | 11 +- include/linux/topology.h | 2 + 13 files changed, 697 insertions(+), 30 deletions(-) create mode 100644 drivers/acpi/pptt.c -- 2.13.5 -- To unsubscribe from this list: send the line "unsubscribe linux-acpi" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html