Received: by 2002:a25:4158:0:0:0:0:0 with SMTP id o85csp5540789yba; Mon, 13 May 2019 12:41:33 -0700 (PDT) X-Google-Smtp-Source: APXvYqx7yNLz0t/z4PyhcbXOtcnQCUiJMlGJpiIYUsOkVQgSX3BFiG5pOs7DZw+184Aa9p0XHfKx X-Received: by 2002:a63:903:: with SMTP id 3mr21182491pgj.400.1557776493012; Mon, 13 May 2019 12:41:33 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1557776493; cv=none; d=google.com; s=arc-20160816; b=BEBgMOzj6Zr6d/fE28SwlhtBLS7oQoIv6G/xcz2qAg1TEo1U4uqsvsKueyWPftQFDC G/ekmFyNRbYybYtKEmBR8vu/Z/fyfqBW+0gkZjaaouqbfp4fmow4LhmiFyONy8quFeca lZ3MsZmB0xSKtR3F34WI1ZKWKrSFgBjpeXpXF9fomT0GUSJrdaZ9R5JDpEuM+RxEFHvd VIcSrb0jiYCfKgHaJM1aLIYJtTR32vPaZQwwP7YKgp6Re2+Lc5pMKpH3bR5mHsy0YriR JFbzPoQJlIVulEEBwJYgnCEI0HKWArGQXJsQ3sxKEB0YdbacCfjml/ogH5BmXYzv1rHh pMkw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:organization:reply-to:references :in-reply-to:message-id:date:subject:cc:to:from:dkim-signature; bh=7onjtnZN84JjUK7oZ2w8AiF0xA4BlJXGVsYJW0jGEsg=; b=q14p0HpmPVPtQepK8ht+ZFYC8CcfxBBAZ+mn6r20+JBJ30AXvQZPB2C6EsakGX6S2Y mJGh9Obb8m0tCZ7j6lLDcL/0cirOn/Lkm8cVYhBKSgO6CUql+PEUFh3q5U0h3WoB9SQo e1YHx/IOwdbruaG4qovGntl9A+z4zaVVAT5oimv0s8nZy721az1FmvJja8sg8xPvPf2R BxT7x4e/fKtaqfTD8aAhO7UhkMDnFHQsVuTiNUa+Y5EhHlut39vWpQGK1qrBvSw20063 L34YEBBE+HZgkdr/f6oiIaF1HkNlVCP1/LU4YPUGA1ZeHqHsH5LKoDILbnq3/UJs9cNx qsTg== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@gmail.com header.s=20161025 header.b=sljGFZlz; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id q4si16702738plr.376.2019.05.13.12.41.16; Mon, 13 May 2019 12:41:32 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=fail header.i=@gmail.com header.s=20161025 header.b=sljGFZlz; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1732145AbfEMR7k (ORCPT + 99 others); Mon, 13 May 2019 13:59:40 -0400 Received: from mail-pg1-f193.google.com ([209.85.215.193]:33833 "EHLO mail-pg1-f193.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1732109AbfEMR7f (ORCPT ); Mon, 13 May 2019 13:59:35 -0400 Received: by mail-pg1-f193.google.com with SMTP id c13so7164661pgt.1 for ; Mon, 13 May 2019 10:59:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :reply-to:organization; bh=7onjtnZN84JjUK7oZ2w8AiF0xA4BlJXGVsYJW0jGEsg=; b=sljGFZlzvzkHMzjG0bIdBztKLD10LnLZSOR95WDG2rjXL7JrDrOntkB7YgTBUhVDxy yVM9VCEz8LEuBpbC8PGrFdF1Aa58qBOIC+gQTe9ezcPAABOMSfj0yqZjMx6v5M3iZ5bu jU9WVxkavJD7t1POi7ysVmGa9h0ycdElyBGYWmp7l1sTTWx6hjVi9lgQ3fb0r77gABqm bb8mQeOm9bzBKNYnw9iLbd0mZjOheNHerjc9L3OsbRZ8yYF858DtuX6giq2Rp4ZDcE1E yOqePkEzVFhlAp8WWyDDpyuMXZbiBWFOHrKN2NCEYHrV6jR4LPlNaX1n4Xxn+F6nCAvJ IP4w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:reply-to:organization; bh=7onjtnZN84JjUK7oZ2w8AiF0xA4BlJXGVsYJW0jGEsg=; b=pM+7cXeJAcs9cX+IXLwzrh6BTzX/8I4Ylvrxpom2fzaCsXm3VwfGQtgwA2QpPfFC0T nHzR+FwtfrNwaG6Avi4SiPulggHZtj5/ulOcu5ESZ8v5Kr4bMMPyig/d6WhmRPh1vyhK Xh6Z4oKxxO3fKrBij+S6B+KGt3SXYZKG/kBBeNO9plrkG3NVghzVYIUvYRdVvbBzxB51 VdwaYsjjUXHEXiRYZxf+iEq48fenrsGhpOReKmc6SzxVBmeWfSODTngaRS6fJq3ac8UZ L5KgOWrAZbPtDddKd4+3cvmL6XoSjMCiRWD/F4sQQdiONj797WcXhBbMymS6QoKbaB0f YpoA== X-Gm-Message-State: APjAAAXIIKyF9fFo+eaL0XGBeujWa32Uzd07tE9uXGszj1NZMZclR0vV mltRULLtFrhZ0CpF6dgHuiU= X-Received: by 2002:aa7:83d4:: with SMTP id j20mr13870791pfn.90.1557770374579; Mon, 13 May 2019 10:59:34 -0700 (PDT) Received: from localhost.localdomain ([96.79.124.202]) by smtp.gmail.com with ESMTPSA id s12sm9536266pfd.152.2019.05.13.10.59.33 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 13 May 2019 10:59:33 -0700 (PDT) From: Len Brown To: x86@kernel.org Cc: linux-kernel@vger.kernel.org, Kan Liang , Peter Zijlstra , Len Brown Subject: [PATCH 13/19] perf/x86/intel/uncore: Support multi-die/package Date: Mon, 13 May 2019 13:58:57 -0400 Message-Id: X-Mailer: git-send-email 2.18.0-rc0 In-Reply-To: <7b23d2d26d717b8e14ba137c94b70943f1ae4b5c.1557769318.git.len.brown@intel.com> References: <7b23d2d26d717b8e14ba137c94b70943f1ae4b5c.1557769318.git.len.brown@intel.com> Reply-To: Len Brown Organization: Intel Open Source Technology Center Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Kan Liang Uncore becomes die-scope on Xeon Cascade Lake-AP. Uncore driver needs to support die-scope uncore units. Use topology_logical_die_id() to replace topology_logical_package_id(). For previous platforms which doesn't have multi-die, topology_logical_die_id() is identical as topology_logical_package_id(). In pci_probe/remove, the group id reads from PCI BUS is logical die id for multi-die systems. Use topology_die_cpumask() to replace topology_core_cpumask(). For previous platforms which doesn't have multi-die, topology_die_cpumask() is identical as topology_core_cpumask(). There is no functional change for previous platforms. Signed-off-by: Kan Liang Cc: Peter Zijlstra Signed-off-by: Len Brown --- arch/x86/events/intel/uncore.c | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/arch/x86/events/intel/uncore.c b/arch/x86/events/intel/uncore.c index fc40a1473058..aeb5eae83750 100644 --- a/arch/x86/events/intel/uncore.c +++ b/arch/x86/events/intel/uncore.c @@ -100,7 +100,7 @@ ssize_t uncore_event_show(struct kobject *kobj, struct intel_uncore_box *uncore_pmu_to_box(struct intel_uncore_pmu *pmu, int cpu) { - unsigned int pkgid = topology_logical_package_id(cpu); + unsigned int pkgid = topology_logical_die_id(cpu); /* * The unsigned check also catches the '-1' return value for non @@ -942,7 +942,8 @@ static int uncore_pci_probe(struct pci_dev *pdev, const struct pci_device_id *id if (phys_id < 0) return -ENODEV; - pkg = topology_phys_to_logical_pkg(phys_id); + pkg = (topology_max_die_per_package() > 1) ? phys_id : + topology_phys_to_logical_pkg(phys_id); if (pkg < 0) return -EINVAL; @@ -1033,7 +1034,8 @@ static void uncore_pci_remove(struct pci_dev *pdev) box = pci_get_drvdata(pdev); if (!box) { - pkg = topology_phys_to_logical_pkg(phys_id); + pkg = (topology_max_die_per_package() > 1) ? phys_id : + topology_phys_to_logical_pkg(phys_id); for (i = 0; i < UNCORE_EXTRA_PCI_DEV_MAX; i++) { if (uncore_extra_pci_dev[pkg].dev[i] == pdev) { uncore_extra_pci_dev[pkg].dev[i] = NULL; @@ -1110,7 +1112,7 @@ static void uncore_change_type_ctx(struct intel_uncore_type *type, int old_cpu, struct intel_uncore_box *box; int i, pkg; - pkg = topology_logical_package_id(old_cpu < 0 ? new_cpu : old_cpu); + pkg = topology_logical_die_id(old_cpu < 0 ? new_cpu : old_cpu); for (i = 0; i < type->num_boxes; i++, pmu++) { box = pmu->boxes[pkg]; if (!box) @@ -1151,7 +1153,7 @@ static int uncore_event_cpu_offline(unsigned int cpu) if (!cpumask_test_and_clear_cpu(cpu, &uncore_cpu_mask)) goto unref; /* Find a new cpu to collect uncore events */ - target = cpumask_any_but(topology_core_cpumask(cpu), cpu); + target = cpumask_any_but(topology_die_cpumask(cpu), cpu); /* Migrate uncore events to the new target */ if (target < nr_cpu_ids) @@ -1164,7 +1166,7 @@ static int uncore_event_cpu_offline(unsigned int cpu) unref: /* Clear the references */ - pkg = topology_logical_package_id(cpu); + pkg = topology_logical_die_id(cpu); for (; *types; types++) { type = *types; pmu = type->pmus; @@ -1223,7 +1225,7 @@ static int uncore_event_cpu_online(unsigned int cpu) struct intel_uncore_box *box; int i, ret, pkg, target; - pkg = topology_logical_package_id(cpu); + pkg = topology_logical_die_id(cpu); ret = allocate_boxes(types, pkg, cpu); if (ret) return ret; @@ -1242,7 +1244,7 @@ static int uncore_event_cpu_online(unsigned int cpu) * Check if there is an online cpu in the package * which collects uncore events already. */ - target = cpumask_any_and(&uncore_cpu_mask, topology_core_cpumask(cpu)); + target = cpumask_any_and(&uncore_cpu_mask, topology_die_cpumask(cpu)); if (target < nr_cpu_ids) return 0; @@ -1417,7 +1419,7 @@ static int __init intel_uncore_init(void) if (boot_cpu_has(X86_FEATURE_HYPERVISOR)) return -ENODEV; - max_packages = topology_max_packages(); + max_packages = topology_max_packages() * topology_max_die_per_package(); uncore_init = (struct intel_uncore_init_fun *)id->driver_data; if (uncore_init->pci_init) { -- 2.18.0-rc0