All of lore.kernel.org
 help / color / mirror / Atom feed
From: Baolin Wang <baolin.wang@linux.alibaba.com>
To: Shuai Xue <xueshuai@linux.alibaba.com>,
	helgaas@kernel.org, yangyicong@huawei.com, will@kernel.org,
	Jonathan.Cameron@huawei.com
Cc: linux-arm-kernel@lists.infradead.org,
	linux-kernel@vger.kernel.org, linux-pci@vger.kernel.org,
	rdunlap@infradead.org, robin.murphy@arm.com,
	mark.rutland@arm.com, zhuo.song@linux.alibaba.com
Subject: Re: [PATCH v2 2/3] drivers/perf: add DesignWare PCIe PMU driver
Date: Tue, 18 Apr 2023 09:51:02 +0800	[thread overview]
Message-ID: <e2397b81-ec19-25e4-ee47-29da29984f9c@linux.alibaba.com> (raw)
In-Reply-To: <ca46be9a-77f2-80ee-62e8-a3ce3eb02097@linux.alibaba.com>



On 4/17/2023 9:16 AM, Shuai Xue wrote:

[snip]

>>> +
>>> +static void dwc_pcie_pmu_event_update(struct perf_event *event)
>>> +{
>>> +    u64 counter;
>>> +    struct dwc_pcie_pmu *pcie_pmu = to_dwc_pcie_pmu(event->pmu);
>>> +    struct dwc_pcie_rp_info *rp_info = pmu_to_pcie_info(event->pmu);
>>> +    struct pci_dev *pdev = rp_info->pdev;
>>> +    u16 ras_des = rp_info->ras_des;
>>> +    struct hw_perf_event *hwc = &event->hw;
>>> +    enum dwc_pcie_event_type type = DWC_PCIE_EVENT_TYPE(event);
>>> +    u64 delta, prev, now;
>>> +
>>> +    do {
>>> +        prev = local64_read(&hwc->prev_count);
>>> +
>>> +        if (type == DWC_PCIE_LANE_EVENT)
>>> +            dwc_pcie_pmu_read_event_counter(pdev, ras_des, &counter);
>>> +        else if (type == DWC_PCIE_TIME_BASE_EVENT)
>>> +            dwc_pcie_pmu_read_base_time_counter(pdev, ras_des,
>>> +                                &counter);
>>> +        else
>>> +            dev_err(pcie_pmu->dev, "invalid event type: 0x%x\n", type);
>>> +
>>> +        now = counter;
>>> +    } while (local64_cmpxchg(&hwc->prev_count, prev, now) != prev);
>>> +
>>> +    delta = now - prev;
>>
>> This can be overflow? better to add a mask to avoid possible overflow.
> 
> I think it can not. This Root Complex supports up to PCIe Gen5 (32 GT/s)
> and one root port support up to x16 lanes, with peek bandwidth 64 GB/s.
> On Yitian 710, one root port is x4 lane with peak bandwidth 16 GB/s.
> The counter is 64 bit width with 16 bytes unit.
> 
> 	2^64*16/(64*10^9)/60/60/24/365 = 146 years
> 
> For x16 root port, it will not overflow within 146 yeasr and for yitian 710,
> it will never overflow in my life too.

However the lane event counter is 32bit, so still a maximum counter mask 
is preferable.

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

WARNING: multiple messages have this Message-ID (diff)
From: Baolin Wang <baolin.wang@linux.alibaba.com>
To: Shuai Xue <xueshuai@linux.alibaba.com>,
	helgaas@kernel.org, yangyicong@huawei.com, will@kernel.org,
	Jonathan.Cameron@huawei.com
Cc: linux-arm-kernel@lists.infradead.org,
	linux-kernel@vger.kernel.org, linux-pci@vger.kernel.org,
	rdunlap@infradead.org, robin.murphy@arm.com,
	mark.rutland@arm.com, zhuo.song@linux.alibaba.com
Subject: Re: [PATCH v2 2/3] drivers/perf: add DesignWare PCIe PMU driver
Date: Tue, 18 Apr 2023 09:51:02 +0800	[thread overview]
Message-ID: <e2397b81-ec19-25e4-ee47-29da29984f9c@linux.alibaba.com> (raw)
In-Reply-To: <ca46be9a-77f2-80ee-62e8-a3ce3eb02097@linux.alibaba.com>



On 4/17/2023 9:16 AM, Shuai Xue wrote:

[snip]

>>> +
>>> +static void dwc_pcie_pmu_event_update(struct perf_event *event)
>>> +{
>>> +    u64 counter;
>>> +    struct dwc_pcie_pmu *pcie_pmu = to_dwc_pcie_pmu(event->pmu);
>>> +    struct dwc_pcie_rp_info *rp_info = pmu_to_pcie_info(event->pmu);
>>> +    struct pci_dev *pdev = rp_info->pdev;
>>> +    u16 ras_des = rp_info->ras_des;
>>> +    struct hw_perf_event *hwc = &event->hw;
>>> +    enum dwc_pcie_event_type type = DWC_PCIE_EVENT_TYPE(event);
>>> +    u64 delta, prev, now;
>>> +
>>> +    do {
>>> +        prev = local64_read(&hwc->prev_count);
>>> +
>>> +        if (type == DWC_PCIE_LANE_EVENT)
>>> +            dwc_pcie_pmu_read_event_counter(pdev, ras_des, &counter);
>>> +        else if (type == DWC_PCIE_TIME_BASE_EVENT)
>>> +            dwc_pcie_pmu_read_base_time_counter(pdev, ras_des,
>>> +                                &counter);
>>> +        else
>>> +            dev_err(pcie_pmu->dev, "invalid event type: 0x%x\n", type);
>>> +
>>> +        now = counter;
>>> +    } while (local64_cmpxchg(&hwc->prev_count, prev, now) != prev);
>>> +
>>> +    delta = now - prev;
>>
>> This can be overflow? better to add a mask to avoid possible overflow.
> 
> I think it can not. This Root Complex supports up to PCIe Gen5 (32 GT/s)
> and one root port support up to x16 lanes, with peek bandwidth 64 GB/s.
> On Yitian 710, one root port is x4 lane with peak bandwidth 16 GB/s.
> The counter is 64 bit width with 16 bytes unit.
> 
> 	2^64*16/(64*10^9)/60/60/24/365 = 146 years
> 
> For x16 root port, it will not overflow within 146 yeasr and for yitian 710,
> it will never overflow in my life too.

However the lane event counter is 32bit, so still a maximum counter mask 
is preferable.

  reply	other threads:[~2023-04-18  1:52 UTC|newest]

Thread overview: 158+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-09-17 12:10 [PATCH v1 0/3] drivers/perf: add Synopsys DesignWare PCIe PMU driver support Shuai Xue
2022-09-17 12:10 ` Shuai Xue
2022-09-17 12:10 ` [PATCH v1 1/3] docs: perf: Add description for Synopsys DesignWare PCIe PMU driver Shuai Xue
2022-09-17 12:10   ` Shuai Xue
2022-09-22 13:25   ` Will Deacon
2022-09-22 13:25     ` Will Deacon
2022-09-23 13:51     ` Shuai Xue
2022-09-23 13:51       ` Shuai Xue
2022-11-07 15:28       ` Will Deacon
2022-11-07 15:28         ` Will Deacon
2022-09-23  1:27   ` Yicong Yang
2022-09-23  1:27     ` Yicong Yang
2022-09-23 14:47     ` Shuai Xue
2022-09-23 14:47       ` Shuai Xue
2022-09-17 12:10 ` [PATCH v1 2/3] drivers/perf: add " Shuai Xue
2022-09-17 12:10   ` Shuai Xue
2022-09-22 15:58   ` Jonathan Cameron
2022-09-22 15:58     ` Jonathan Cameron
2022-09-22 17:32     ` Bjorn Helgaas
2022-09-22 17:32       ` Bjorn Helgaas
2022-09-23  3:35       ` Yicong Yang
2022-09-23  3:35         ` Yicong Yang
2022-09-23 10:56         ` Jonathan Cameron
2022-09-23 10:56           ` Jonathan Cameron
2022-09-23 13:45     ` Shuai Xue
2022-09-23 13:45       ` Shuai Xue
2022-09-23 15:54       ` Jonathan Cameron
2022-09-23 15:54         ` Jonathan Cameron
2022-09-26 13:31         ` Shuai Xue
2022-09-26 13:31           ` Shuai Xue
2022-09-26 14:32           ` Robin Murphy
2022-09-26 14:32             ` Robin Murphy
2022-09-26 17:18           ` Bjorn Helgaas
2022-09-26 17:18             ` Bjorn Helgaas
2022-09-27  5:13             ` Shuai Xue
2022-09-27  5:13               ` Shuai Xue
2022-09-27 10:04               ` Jonathan Cameron
2022-09-27 10:04                 ` Jonathan Cameron
2022-09-27 10:14                 ` Robin Murphy
2022-09-27 10:14                   ` Robin Murphy
2022-09-27 12:49                   ` Shuai Xue
2022-09-27 12:49                     ` Shuai Xue
2022-09-27 13:39                     ` Jonathan Cameron
2022-09-27 13:39                       ` Jonathan Cameron
2022-09-27 12:29                 ` Shuai Xue
2022-09-27 12:29                   ` Shuai Xue
2022-09-27 10:03             ` Jonathan Cameron
2022-09-27 10:03               ` Jonathan Cameron
2022-09-22 17:36   ` Bjorn Helgaas
2022-09-22 17:36     ` Bjorn Helgaas
2022-09-23 14:46     ` Shuai Xue
2022-09-23 14:46       ` Shuai Xue
2022-09-23 18:51       ` Bjorn Helgaas
2022-09-23 18:51         ` Bjorn Helgaas
2022-09-27  6:01         ` Shuai Xue
2022-09-27  6:01           ` Shuai Xue
2022-09-23  3:30   ` Yicong Yang
2022-09-23  3:30     ` Yicong Yang
2022-09-23 15:43     ` Shuai Xue
2022-09-23 15:43       ` Shuai Xue
2022-09-24  8:00       ` Yicong Yang
2022-09-24  8:00         ` Yicong Yang
2022-09-26 11:39         ` Shuai Xue
2022-09-26 11:39           ` Shuai Xue
2022-09-17 12:10 ` [PATCH v1 3/3] MAINTAINERS: add maintainers for " Shuai Xue
2022-09-17 12:10   ` Shuai Xue
2023-04-10  3:16 ` [PATCH v2 0/3] drivers/perf: add Synopsys DesignWare PCIe PMU driver support Shuai Xue
2023-04-10  3:16   ` Shuai Xue
2023-04-10  3:17 ` [PATCH v2 1/3] docs: perf: Add description for Synopsys DesignWare PCIe PMU driver Shuai Xue
2023-04-10  3:17   ` Shuai Xue
2023-04-10  3:17 ` [PATCH v2 2/3] drivers/perf: add " Shuai Xue
2023-04-10  3:17   ` Shuai Xue
2023-04-10  7:25   ` kernel test robot
2023-04-10  7:25     ` kernel test robot
2023-04-11  3:17   ` Baolin Wang
2023-04-11  3:17     ` Baolin Wang
2023-04-17  1:16     ` Shuai Xue
2023-04-17  1:16       ` Shuai Xue
2023-04-18  1:51       ` Baolin Wang [this message]
2023-04-18  1:51         ` Baolin Wang
2023-04-19  1:39         ` Shuai Xue
2023-04-19  1:39           ` Shuai Xue
2023-04-10  3:17 ` [PATCH v2 3/3] MAINTAINERS: add maintainers for " Shuai Xue
2023-04-10  3:17   ` Shuai Xue
2023-04-17  6:17 ` [PATCH v3 0/3] drivers/perf: add Synopsys DesignWare PCIe PMU driver support Shuai Xue
2023-04-17  6:17   ` Shuai Xue
2023-04-17  6:17 ` [PATCH v3 1/3] docs: perf: Add description for Synopsys DesignWare PCIe PMU driver Shuai Xue
2023-04-17  6:17   ` Shuai Xue
2023-05-16 14:32   ` Jonathan Cameron
2023-05-16 14:32     ` Jonathan Cameron
2023-05-17  1:27     ` Shuai Xue
2023-05-17  1:27       ` Shuai Xue
2023-04-17  6:17 ` [PATCH v3 2/3] drivers/perf: add " Shuai Xue
2023-04-17  6:17   ` Shuai Xue
2023-04-18 23:30   ` Robin Murphy
2023-04-18 23:30     ` Robin Murphy
2023-04-27  6:33     ` Shuai Xue
2023-04-27  6:33       ` Shuai Xue
2023-05-09  2:02       ` Shuai Xue
2023-05-16 15:03       ` Jonathan Cameron
2023-05-16 15:03         ` Jonathan Cameron
2023-05-16 19:17         ` Bjorn Helgaas
2023-05-16 19:17           ` Bjorn Helgaas
2023-05-17  9:54           ` Jonathan Cameron
2023-05-17  9:54             ` Jonathan Cameron
2023-05-17 16:27             ` Bjorn Helgaas
2023-05-17 16:27               ` Bjorn Helgaas
2023-05-19 10:08               ` Shuai Xue
2023-05-19 10:08                 ` Shuai Xue
2023-04-17  6:17 ` [PATCH v3 3/3] MAINTAINERS: add maintainers for " Shuai Xue
2023-04-17  6:17   ` Shuai Xue
2023-05-16 13:01 ` [PATCH v4 0/4] drivers/perf: add Synopsys DesignWare PCIe PMU driver support Shuai Xue
2023-05-16 13:01   ` Shuai Xue
2023-05-16 13:01 ` [PATCH v4 1/4] docs: perf: Add description for Synopsys DesignWare PCIe PMU driver Shuai Xue
2023-05-16 13:01   ` Shuai Xue
2023-05-16 13:01 ` [PATCH v4 2/4] PCI: move Alibaba Vendor ID linux/pci_ids.h Shuai Xue
2023-05-16 13:01   ` Shuai Xue
2023-05-16 13:01 ` [PATCH v4 3/4] drivers/perf: add DesignWare PCIe PMU driver Shuai Xue
2023-05-16 13:01   ` Shuai Xue
2023-05-16 19:19   ` Bjorn Helgaas
2023-05-16 19:19     ` Bjorn Helgaas
2023-05-17  2:35     ` Shuai Xue
2023-05-17  2:35       ` Shuai Xue
2023-05-16 23:21   ` kernel test robot
2023-05-17  3:37     ` Shuai Xue
2023-05-17  3:37       ` Shuai Xue
2023-05-16 13:01 ` [PATCH v4 4/4] MAINTAINERS: add maintainers for " Shuai Xue
2023-05-16 13:01   ` Shuai Xue
2023-05-22  3:54 ` [PATCH v5 0/4] drivers/perf: add Synopsys DesignWare PCIe PMU driver support Shuai Xue
2023-05-22  3:54   ` Shuai Xue
2023-05-22 14:28   ` Jonathan Cameron
2023-05-22 14:28     ` Jonathan Cameron
2023-05-23  2:57     ` Shuai Xue
2023-05-23  2:57       ` Shuai Xue
2023-05-22  3:54 ` [PATCH v5 1/4] docs: perf: Add description for Synopsys DesignWare PCIe PMU driver Shuai Xue
2023-05-22  3:54   ` Shuai Xue
2023-05-29  3:45   ` Baolin Wang
2023-05-29  3:45     ` Baolin Wang
2023-05-29  6:31     ` Shuai Xue
2023-05-29  6:31       ` Shuai Xue
2023-05-22  3:54 ` [PATCH v5 2/4] PCI: move Alibaba Vendor ID linux/pci_ids.h Shuai Xue
2023-05-22  3:54   ` Shuai Xue
2023-05-22 16:04   ` Bjorn Helgaas
2023-05-22 16:04     ` Bjorn Helgaas
2023-05-23  3:22     ` Shuai Xue
2023-05-23  3:22       ` Shuai Xue
2023-05-23 11:54       ` Bjorn Helgaas
2023-05-23 11:54         ` Bjorn Helgaas
2023-05-23 12:49         ` Shuai Xue
2023-05-23 12:49           ` Shuai Xue
2023-05-22  3:54 ` [PATCH v5 3/4] drivers/perf: add DesignWare PCIe PMU driver Shuai Xue
2023-05-22  3:54   ` Shuai Xue
2023-05-29  6:13   ` Baolin Wang
2023-05-29  6:13     ` Baolin Wang
2023-05-29  6:33     ` Shuai Xue
2023-05-29  6:33       ` Shuai Xue
2023-05-22  3:54 ` [PATCH v5 4/4] MAINTAINERS: add maintainers for " Shuai Xue
2023-05-22  3:54   ` Shuai Xue

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=e2397b81-ec19-25e4-ee47-29da29984f9c@linux.alibaba.com \
    --to=baolin.wang@linux.alibaba.com \
    --cc=Jonathan.Cameron@huawei.com \
    --cc=helgaas@kernel.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pci@vger.kernel.org \
    --cc=mark.rutland@arm.com \
    --cc=rdunlap@infradead.org \
    --cc=robin.murphy@arm.com \
    --cc=will@kernel.org \
    --cc=xueshuai@linux.alibaba.com \
    --cc=yangyicong@huawei.com \
    --cc=zhuo.song@linux.alibaba.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.