Received: by 2002:a25:1506:0:0:0:0:0 with SMTP id 6csp6300339ybv; Wed, 12 Feb 2020 09:33:05 -0800 (PST) X-Google-Smtp-Source: APXvYqxgwl4ZyOYUABJ6MqeqD1GstoTp+lORzGteNJJL5ad60Hk5Qh2dfEyDWMmn4Xe12J80Be9E X-Received: by 2002:a54:4117:: with SMTP id l23mr117509oic.140.1581528785521; Wed, 12 Feb 2020 09:33:05 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1581528785; cv=none; d=google.com; s=arc-20160816; b=pCQKrMZhs0kDzuw0dt+w/NvIlRGJI2fG9MxtxLCb3O1oa+6P41wQ2uWWxpUs/Vhuek d81XYar6FJT5Q56o6KTiYfu1x8TE9cdKINfvUB9psM8C1c0WzS8YQWqQYt02JqioF6C9 IdbMssp3GvZKzPftkzkkBTaHiG0MV4bs5APjvI0vhrzXArA1QF8GouK+79mLdGLp+Enp UChkHxzAgOpkQ6qZ6m2lODXZq7xvdUsD2kj/16NZLFM5bVjTdERcoWbgH/ZHgRqGP795 70azXDr/ACPysQG29IP7pj0Eez1eZBYfoBMIc+hyAXS7WUElTzQEMj9xPZCk+rfITTCl rhKQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-language :content-transfer-encoding:in-reply-to:mime-version:user-agent:date :message-id:from:references:cc:to:subject; bh=N55OzdY3FuZk4Owmpp5azhXmq36BmQuI1yCU8tskChg=; b=NESffQROx9Jg3SMFnqvvhdtQQvTBlf1EF2xjFkiXzeBwdLksNoUUdak1xIv3hfmF43 Yg0qICQCh3uaWzQ0Wm2BJR3jAaSx0fwaLd3GFEquwXbH2q5j+R1Cmp11/Bb+msjAuA1i 6lay+0MGjeI4hTnw3A7LNGWJRNrkCnj4frbHrOkfezoJYyYAI8LXZrxw4EmZu95rOe59 EzGCviuno8pX6RJNAelE7vFJ7MsQOIPO6MFOBwzX4BBvVyLCZsXIp7IWTqulJ3uy/jJz 6J/fyt5q+iucZ34pSlMOk7t0u+IwyIoFMIgqFphE6BtkVzwPmnV6n7+LlLfnV1NUn7wU O9Hg== ARC-Authentication-Results: i=1; mx.google.com; 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=intel.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id r26si562139otc.163.2020.02.12.09.32.52; Wed, 12 Feb 2020 09:33:05 -0800 (PST) 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; 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=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728595AbgBLRbM (ORCPT + 99 others); Wed, 12 Feb 2020 12:31:12 -0500 Received: from mga03.intel.com ([134.134.136.65]:13379 "EHLO mga03.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726982AbgBLRbM (ORCPT ); Wed, 12 Feb 2020 12:31:12 -0500 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga002.fm.intel.com ([10.253.24.26]) by orsmga103.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 12 Feb 2020 09:31:11 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.70,433,1574150400"; d="scan'208";a="266748103" Received: from linux.intel.com ([10.54.29.200]) by fmsmga002.fm.intel.com with ESMTP; 12 Feb 2020 09:31:09 -0800 Received: from [10.125.249.51] (rsudarik-mobl.ccr.corp.intel.com [10.125.249.51]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by linux.intel.com (Postfix) with ESMTPS id 588665803DA; Wed, 12 Feb 2020 09:31:06 -0800 (PST) Subject: =?UTF-8?Q?Re=3a_=5bPATCH_v5_3/3=5d_perf_x86=3a_Exposing_an_Uncore_u?= =?UTF-8?Q?nit_to_PMON_for_Intel_Xeon=c2=ae_server_platform?= To: Greg KH , "Liang, Kan" Cc: Andi Kleen , peterz@infradead.org, mingo@redhat.com, acme@kernel.org, mark.rutland@arm.com, alexander.shishkin@linux.intel.com, jolsa@redhat.com, namhyung@kernel.org, linux-kernel@vger.kernel.org, eranian@google.com, bgregg@netflix.com, alexander.antonov@intel.com References: <20200211161549.19828-1-roman.sudarikov@linux.intel.com> <20200211161549.19828-4-roman.sudarikov@linux.intel.com> <20200211171544.GA1933705@kroah.com> <20200211184200.GA302770@tassilo.jf.intel.com> <20200211185759.GA1941673@kroah.com> <25dca8dd-c52d-676d-ffe4-90f3a6ddc915@linux.intel.com> <20200211201427.GA1975593@kroah.com> From: "Sudarikov, Roman" Message-ID: <7a697574-aa76-3eda-d504-1ec72bcb6353@linux.intel.com> Date: Wed, 12 Feb 2020 20:31:02 +0300 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:68.0) Gecko/20100101 Thunderbird/68.4.2 MIME-Version: 1.0 In-Reply-To: <20200211201427.GA1975593@kroah.com> Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit Content-Language: en-US Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 11.02.2020 23:14, Greg KH wrote: > On Tue, Feb 11, 2020 at 02:59:21PM -0500, Liang, Kan wrote: >> >> On 2/11/2020 1:57 PM, Greg KH wrote: >>> On Tue, Feb 11, 2020 at 10:42:00AM -0800, Andi Kleen wrote: >>>> On Tue, Feb 11, 2020 at 09:15:44AM -0800, Greg KH wrote: >>>>> On Tue, Feb 11, 2020 at 07:15:49PM +0300, roman.sudarikov@linux.intel.com wrote: >>>>>> +static ssize_t skx_iio_mapping_show(struct device *dev, >>>>>> + struct device_attribute *attr, char *buf) >>>>>> +{ >>>>>> + struct pmu *pmu = dev_get_drvdata(dev); >>>>>> + struct intel_uncore_pmu *uncore_pmu = >>>>>> + container_of(pmu, struct intel_uncore_pmu, pmu); >>>>>> + >>>>>> + struct dev_ext_attribute *ea = >>>>>> + container_of(attr, struct dev_ext_attribute, attr); >>>>>> + long die = (long)ea->var; >>>>>> + >>>>>> + return sprintf(buf, "0000:%02x\n", skx_iio_stack(uncore_pmu, die)); >>>>> If "0000:" is always the "prefix" of the output of this file, why have >>>>> it at all as you always know it is there? >> >> I think Roman only test with BIOS configured as single-segment. So he >> hard-code the segment# here. >> >> I'm not sure if Roman can do some test with multiple-segment BIOS. If not, I >> think we should at least print a warning here. >> >>>>> What is ever going to cause that to change? >>>> I think it's just to make it a complete PCI address. >>> Is that what this really is? If so, it's not a "complete" pci address, >>> is it? If it is, use the real pci address please. >> I think we don't need a complete PCI address here. The attr is to disclose >> the mapping information between die and PCI BUS. Segment:BUS should be good >> enough. > "good enough" for today, but note that you can not change the format of > the data in the file in the future, you would have to create a new file. > So I suggest at least try to future-proof it as much as possible if you > _know_ this could change. > > Just use the full pci address, there's no reason not to, otherwise it's > just confusing. > > thanks, > > greg k-h Hi Greg, Yes, the "Segment:Bus" pair is enough to distinguish between different Root ports. Please see the changes below which are to address all previous comments. Thanks, Roman diff --git a/arch/x86/events/intel/uncore_snbep.c b/arch/x86/events/intel/uncore_snbep.c index 96fca1ac22a4..f805fbdbbe81 100644 --- a/arch/x86/events/intel/uncore_snbep.c +++ b/arch/x86/events/intel/uncore_snbep.c @@ -3616,15 +3616,22 @@ skx_iio_mapping_visible(struct kobject *kobj, struct attribute *attr, int die)  static ssize_t skx_iio_mapping_show(struct device *dev,                  struct device_attribute *attr, char *buf)  { +    struct pci_bus *bus = NULL;      struct pmu *pmu = dev_get_drvdata(dev);      struct intel_uncore_pmu *uncore_pmu =          container_of(pmu, struct intel_uncore_pmu, pmu); +    int pmu_idx = uncore_pmu->pmu_idx;      struct dev_ext_attribute *ea =          container_of(attr, struct dev_ext_attribute, attr);      long die = (long)ea->var; -    return sprintf(buf, "0000:%02x\n", skx_iio_stack(uncore_pmu, die)); +    do { +        bus = pci_find_next_bus(bus); +    } while (pmu_idx--); + +    return sprintf(buf, "%04x:%02x\n", pci_domain_nr(bus), +                       skx_iio_stack(uncore_pmu, die));  }  static int skx_msr_cpu_bus_read(int cpu, u64 *topology) @@ -3691,10 +3698,7 @@ static int skx_iio_get_topology(struct intel_uncore_type *type)      return 0;  } -static struct attribute *uncore_empry_attr; -  static struct attribute_group skx_iio_mapping_group = { -    .attrs        = &uncore_empry_attr,      .is_visible    = skx_iio_mapping_visible,  }; @@ -3729,7 +3733,8 @@ static int skx_iio_set_mapping(struct intel_uncore_type *type)          return -ENOMEM;      }      for (die = 0; die < uncore_max_dies(); die++) { -        sprintf(buf, "node%ld", die); +        sprintf(buf, "die%ld", die); +        sysfs_attr_init(&eas[die].attr.attr);          eas[die].attr.attr.name = kstrdup(buf, GFP_KERNEL);          if (!eas[die].attr.attr.name) {              ret = -ENOMEM; @@ -3752,6 +3757,7 @@ static int skx_iio_set_mapping(struct intel_uncore_type *type)      kfree(eas);      kfree(attrs);      kfree(type->topology); +    type->attr_update = NULL;      return ret;  }