Received: by 2002:a25:4158:0:0:0:0:0 with SMTP id o85csp2954808yba; Mon, 6 May 2019 14:30:11 -0700 (PDT) X-Google-Smtp-Source: APXvYqw03YyaRZEZwpuIiL3nKKnSUAO8oRb3sa3g5cFHKTXBzruucl2EYtqPW4oOvek6Q7EAc0X+ X-Received: by 2002:a62:6a81:: with SMTP id f123mr37206829pfc.40.1557178211079; Mon, 06 May 2019 14:30:11 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1557178211; cv=none; d=google.com; s=arc-20160816; b=ZRm9s4xpSKhChE4xancWXA+dAiDEQbG4C0NDrX9+MAkhjD0hA6ysnbJ5V4PtrEKuhz bM4/QMQekw5J61aaAKdyXUrzdiR5gmjEZYxrYch2NSTk9i+4Cj/zovEOoBAPbWf23Sil pM2LVENYFgIi/MrphKdeNN40uYtKrzjg5XFPuLOsw264jUiKPJVaNxQLzKjskjfzw80t fvmYXiYPjMbyD9dFIpgieIfSzDMrcLep6QnocIDNv2MTU6/t+f/+eD4T4mxhJvUXzNQC HBx9ZKgICr8QqVIqVDHxf5nOrR0LqBwKDiAWFzmNX5huOiaVSFulTvDdubJJsCGrbRBh lUVA== 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=QL5NI4sANkqplQKQaKex2DCfk85abvoyJhmqwgV9MtOzpDt6gf7f6fYYrTNhQ85DF3 DOgsBxdCMEZ4GckEmqEgn/hc8FSpwixpC6F1YAt9XSt+5QZb1gGPK7ldmHsPE/Tt7P55 e54BDPx4KYV9UFrrkGVe/Eh0fQFD9JS/zELT/8ladTX6AFvjDdVw7AmuL5tAuF9WLdNZ 0UFMqmOBsykzagYAT5u3bDFCHYoj/ugsZR4wIPCXMGUwoC/KAE1KiIF4GM0qX/Zrk77H 6P/ISSyLG4a2JOM9heUYRbfB0BYGyRrRMIzsHZ16hTbxRGAETVU7KtYKpHHXinKHFS// E75w== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@gmail.com header.s=20161025 header.b=ozFQSbOZ; 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 131si16307694pfa.14.2019.05.06.14.29.55; Mon, 06 May 2019 14:30:11 -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=ozFQSbOZ; 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 S1727010AbfEFV0r (ORCPT + 99 others); Mon, 6 May 2019 17:26:47 -0400 Received: from mail-it1-f195.google.com ([209.85.166.195]:52506 "EHLO mail-it1-f195.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726989AbfEFV0q (ORCPT ); Mon, 6 May 2019 17:26:46 -0400 Received: by mail-it1-f195.google.com with SMTP id q65so21434307itg.2 for ; Mon, 06 May 2019 14:26:45 -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=ozFQSbOZOyhObe/no7EhClYnzFZzOsCbgo4msZ+u1fLhicbN21oM6AcTsExK91rdfm +fd2ZYhdfc1ENDRemCuw90t6iFB2kxr/M4UEI/n50xyxxONR5P1en9MSoLwTBqo6UTJM iFF6tNPbknYhDiFetefa0H6devKafP72nRFJgEYqIXHEDkYSEQ1cR2B/4B3nncGSDCEE /W9jvzmMy6tczOttS/cQo3oQxb7DXtFxVY3uH1dFwVZZrvX4dnlo1Sb3xRySj7tJ5fz8 J86Jcy7BD6NS5kds6a7j7+KKKQU6kwsq6V0BmY0ibj+rLOaBKxXOJ5tGEU8QSJmVT8Hq 88Zg== 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=PKFb8c13aUCh91M6GrBSbSrCO5ba2FTGLH5UovrJlTIlQqWvtlF+9Xt/haE7rkrzAJ Kk1uybinx/Ogif/nd+wuvZ7XW0Q74P/Uy85nzS2OtEmwlDIEw3smW9bxZj3h3TTXiigG 6HU8Toc5p9QAhQxQ4FaVNVz+UDZMYxugaGX0a3z7bxAMufCCP0q4jN278fxo7ao0wK1H RZn3UC78sAYAw3kg+nG3QUvq+zCFhJYk69ux4r9VjOn8qaE4Q+nDMu6hFmGBLNlTtNUw MLPgx95QzI/PKNrrcakL+33lHC0EZgcPmnr8ndbvXuHg+9k9rWtESK50aZ6+2d2zbccq ZpxA== X-Gm-Message-State: APjAAAVTjc5mw4IV/UXGLhiYQcgyGBAzqWaIc7QDEWKiIKFcxq+zmkCl 63uwiTG2XrmppppQEMXYJEM= X-Received: by 2002:a24:4161:: with SMTP id x94mr19479400ita.83.1557178005568; Mon, 06 May 2019 14:26:45 -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 v25sm4268009ioh.81.2019.05.06.14.26.44 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 06 May 2019 14:26:44 -0700 (PDT) From: Len Brown To: x86@kernel.org Cc: linux-kernel@vger.kernel.org, Kan Liang , Peter Zijlstra , Len Brown Subject: [PATCH 16/22] perf/x86/intel/uncore: Support multi-die/package Date: Mon, 6 May 2019 17:26:11 -0400 Message-Id: <1d7c4d47cfca91c11b0e078d86a8f7f7da6d862a.1557177585.git.len.brown@intel.com> X-Mailer: git-send-email 2.18.0-rc0 In-Reply-To: <6f53f0e494d743c79e18f6e3a98085711e6ddd0c.1557177585.git.len.brown@intel.com> References: <6f53f0e494d743c79e18f6e3a98085711e6ddd0c.1557177585.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