Received: by 2002:a25:4158:0:0:0:0:0 with SMTP id o85csp5723359yba; Tue, 30 Apr 2019 21:26:32 -0700 (PDT) X-Google-Smtp-Source: APXvYqxyAs8O3MXTlF+fbR3p+WB1QHAFzaJ3HfunJSjmBhpsjKB6A5WblRbOX3Ie5pU4hBZlg0vS X-Received: by 2002:a17:902:505:: with SMTP id 5mr62002243plf.323.1556684792217; Tue, 30 Apr 2019 21:26:32 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1556684792; cv=none; d=google.com; s=arc-20160816; b=MiSz6kDiko7xo2ItkSTVTswrNYQSqrtLnrNY7ijLd9mEwCkPpnVEEpIiqltQUoCIn+ A1BzEzTzatTrtwU/lb1pHFLLSb3FmDGi3lobAekF4roxhjBJNms+BmlmoDnZkgJ4f9mz YD9WZxJgXxurKKb6WqDcg/Mq2lj29MRojcxGMWwXgo26ZDMbX0ZJJjNHhj5J3Ho2Pptv HmKcbU+DZYvwQGAzxFpvl/R74ENXzsr/G42ofLaWWTwFJ00U4ZGQ3CqdtvZfrhA2dNF1 wP5VElxnSN30qMm0GsxhoAXoidcqqJY7QEMfTXGE/oFF8lGq1LqhUnmlc4Trr75IKlfg fPDw== 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=xc8GKgAhN2BvbVtHbXIFXp3HIXwPjdL/8iP1wX8Tn7g=; b=JdCcTdz3oFq+MxgejDu9snscBFmvMBmGeY/1xk0MzLitx3769lC/kLBxmiW+YpIMvF OnB4eDfAMAdo+8juwpLSz10L/fUD2GfItyTzasDwQIfM3JEXTNhJaw1kkuiMHkNl5bPt 6aWhR+W06s256klUFzIREcYvIny4CEzU6kDRFEdBZ7JE+2g/88YsjCSpKOFThfHjJrUR YVOFoS8Xsx2ft1mbIEGFqkbwDOz6WnbMI86aE0kX1HX+RtsL/K9pumv9D2yEn3vS7XUQ shqRFrtW1V3Cj6LHv63TnjicduX1apTCrBK9C4sjf1hQZ5xjktzIfHHDC5WhibVccVEj 765w== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@gmail.com header.s=20161025 header.b=lIGiB1hL; 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 l17si28861565pgh.381.2019.04.30.21.26.17; Tue, 30 Apr 2019 21:26: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=lIGiB1hL; 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 S1726413AbfEAEZH (ORCPT + 99 others); Wed, 1 May 2019 00:25:07 -0400 Received: from mail-it1-f196.google.com ([209.85.166.196]:56273 "EHLO mail-it1-f196.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726363AbfEAEYy (ORCPT ); Wed, 1 May 2019 00:24:54 -0400 Received: by mail-it1-f196.google.com with SMTP id w130so8318453itc.5 for ; Tue, 30 Apr 2019 21:24:53 -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=xc8GKgAhN2BvbVtHbXIFXp3HIXwPjdL/8iP1wX8Tn7g=; b=lIGiB1hLj14msoeVT2HH49rWjeaTzMQAwvndzajq3qg/KbyYmv3vYAsaBuG70s2OM1 0sX/aOCnYWsQTSncrr9igcBAjYEeDZDzwgJiOWqGPhoFU8mtZ57uwfH2SZq+eRaggcNh 047/DGA7h7MEbNy9pLZYRnG9xxWk1IAIzir1e2blCcaZLs3Ir8kvIQpp/L578yDJeUw7 Vlvw890FG4TGG6GJGlYR8XK1+/nYuKSG3jkLckv/R2bkqlfYveic5pu1TdmEAZ+K8wON qpC0VNvWM+XxyRKIhoNIPBR9rxRMOdumVTA8s6PXJDovASdMvCi1CqnbJ+3SINwPFa18 Xbng== 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=xc8GKgAhN2BvbVtHbXIFXp3HIXwPjdL/8iP1wX8Tn7g=; b=tS8sOVumQj/hnVQb8V3nDl2wZa3S5nEEuW9NcNQ5t+890XUP/SU+VOM4LVwVJ1Gv1k BVDVCZlBVQQJ1cldjPidiYk/eU5/CDlBm0uaA3sIovsl1v4nOUgZMThH5uI2UjHIaH0P 2eFPqTd1ZYMqYxZaWm5Tr0JC32WmwlfMKXXfx5GINJDQNdTOW9a/zfw2xYthRwMUYL3t aj7TE7Xl1/cUz/oo5sNhVLF3UMeOq7oODZ3Z9DMTSQVd03QJtxkjJe7d61CW/mmO7U62 4tXjYvND1UzAhq+C6N/eRw27dVo5m1V3gCch+Q3n1KQkMdiYTZih8Kj0J5H/rFcetxNg YVlw== X-Gm-Message-State: APjAAAV697k/N23wZ/30GXdsgurAMyP+7bQNohZcNXEnBmwgyBEE6RI8 oEE60v/S18KEV1NoMPBzJk2nWPbk X-Received: by 2002:a24:22ca:: with SMTP id o193mr6420446ito.131.1556684693256; Tue, 30 Apr 2019 21:24:53 -0700 (PDT) Received: from nuc8.lan (h69-131-112-51.cntcnh.dsl.dynamic.tds.net. [69.131.112.51]) by smtp.gmail.com with ESMTPSA id b8sm2569728itb.20.2019.04.30.21.24.52 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 30 Apr 2019 21:24:52 -0700 (PDT) From: Len Brown To: x86@kernel.org Cc: linux-kernel@vger.kernel.org, Kan Liang , Peter Zijlstra , Len Brown Subject: [PATCH 16/18] perf/x86/intel/uncore: Support multi-die/package Date: Wed, 1 May 2019 00:24:25 -0400 Message-Id: <1b0511cf9dee43cf756b53267189972c940bc044.1556657368.git.len.brown@intel.com> X-Mailer: git-send-email 2.18.0-rc0 In-Reply-To: <6f53f0e494d743c79e18f6e3a98085711e6ddd0c.1556657368.git.len.brown@intel.com> References: <6f53f0e494d743c79e18f6e3a98085711e6ddd0c.1556657368.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 9fe64c01a2e5..a6461ff85a32 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; @@ -1411,7 +1413,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