Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1438021 > unrolled thread

[PATCH v7 0/4] perf: Add APM X-Gene SoC Performance Monitoring Unit driver

Started byTai Nguyen <ttnguyen@apm.com>
First post2016-07-07 02:20 +0200
Last post2016-07-11 20:20 +0200
Articles 4 — 3 participants

Back to article view | Back to linux.kernel


Contents

  [PATCH v7 0/4] perf: Add APM X-Gene SoC Performance Monitoring Unit driver Tai Nguyen <ttnguyen@apm.com> - 2016-07-07 02:20 +0200
    [PATCH v7 4/4] arm64: dts: apm: Add APM X-Gene SoC PMU DTS entries Tai Nguyen <ttnguyen@apm.com> - 2016-07-07 02:20 +0200
    Re: [PATCH v7 3/4] perf: xgene: Add APM X-Gene SoC Performance  Monitoring Unit driver Paul Gortmaker <paul.gortmaker@windriver.com> - 2016-07-10 02:10 +0200
      Re: [PATCH v7 3/4] perf: xgene: Add APM X-Gene SoC Performance  Monitoring Unit driver Tai Tri Nguyen <ttnguyen@apm.com> - 2016-07-11 20:20 +0200

#1438021 — [PATCH v7 0/4] perf: Add APM X-Gene SoC Performance Monitoring Unit driver

FromTai Nguyen <ttnguyen@apm.com>
Date2016-07-07 02:20 +0200
Subject[PATCH v7 0/4] perf: Add APM X-Gene SoC Performance Monitoring Unit driver
Message-ID<rS5cR-7Pk-3@gated-at.bofh.it>
In addition to the X-Gene ARM CPU performance monitoring unit (PMU), there
are PMU for the SoC system devices such as L3 cache(s), I/O bridge(s),
memory controller bridges and memory. These PMU devices are loosely
architected to follow the same model as the PMU for ARM cores.

Signed-off-by: Tai Nguyen <ttnguyen@apm.com>
---

v7:
 * Remove const from the definition of xgene_pmu_cpumask_attrs
 * Validate the event group as a whole, disallow creating groups containing
   mixed PMUs
 * Implement pmu::pmu_enable() and pmu::pmu_disable() to let the perf core
   starts and stops the counters properly
 * Using list_for_each_entry() instead of list_for_each_entry_safe() to iterate
   over the list of pmu sub-devices
 * Fix resource leak issue in case of registering perf devices fails
 * Pass on returned error if acpi_walk_namespace() fails
 * Remove unused xgene_pmu_data::data
 * Move enable interrupt after probing pmu sub-devices

v6:
 * Add IRQF_NOBALANCING and IRQF_NO_THREAD flags to the PMU overflow interrupt
   Exclude the interrupt from irq balancing and prevent the context from being
   threaded

v5:
 * Remove hw_perf_event::extra_reg field use
   Change GET_CNTR to use hw_perf_event::idx
   Change GET_AGENTID/GET_AGEN1ID to use hw_perf_event::config_base
 * Use compound literal structure defines for format and event attribute groups
   to statically define them at compile time
 * Bitwise invert the meaning of agent mask in config1 field.
 * Fix update pmu_counter_event pointer before starting event
 * Add reset of pmu_dev->pmu_counter_event to NULL in xgene_perf_del
 * Use exactly half of max period to fix the overflow counter issue and account
   for the possiblity of extreme interrupt latency
 * Use spin lock instead of interrupt masking in overflow interrupt handler
 * Remove unnecessary update of hw_perf_event::period_left

v4:
 * Alphabetically sorting header files
 * Remove dynamic allocation for PMU format and event attribute groups
   Create shared constant attribute groups per each class
 * Remove perf_sample_data as this perf driver doesn't support sampling
 * Consistently use the PCP_PMU_V{1,2} defines
 * Set affinity to make sure the overflow interrupt is handled by the
   same assigned CPU

v3:
 * Remove index property use in PMU device sub nodes

v2:
 * Use bitmask for event asignned counter mask pmu_dev->cntr_assign_mask
 * Remove unnecessary spinlocks in perf add/del operations
 * Remove unnecessary condition checks
 * Enforce CPU assignment to one CPU for perf operarations
 * Set the task_ctx_nr to perf_invalid_context for perf driver
 * Remove irrelevant pt_rregs
 * Change perf sysfs attributes to be fixed instead of dynamic
 * Fix checking for an ACPI companion device instead of EFI enable
 * Add documentation for config/config1 fields format and perf tool example

---

Tai Nguyen (4):
  MAINTAINERS: Add entry for APM X-Gene SoC PMU driver
  Documentation: Add documentation for APM X-Gene SoC PMU DTS binding
  perf: xgene: Add APM X-Gene SoC Performance Monitoring Unit driver
  arm64: dts: apm: Add APM X-Gene SoC PMU DTS entries

 .../devicetree/bindings/perf/apm-xgene-pmu.txt     |  112 ++
 Documentation/perf/xgene-pmu.txt                   |   48 +
 MAINTAINERS                                        |    8 +
 arch/arm64/boot/dts/apm/apm-storm.dtsi             |   58 +
 drivers/perf/Kconfig                               |    7 +
 drivers/perf/Makefile                              |    1 +
 drivers/perf/xgene_pmu.c                           | 1398 ++++++++++++++++++++
 7 files changed, 1632 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/perf/apm-xgene-pmu.txt
 create mode 100644 Documentation/perf/xgene-pmu.txt
 create mode 100644 drivers/perf/xgene_pmu.c

-- 
1.9.1

[toc] | [next] | [standalone]


#1438022 — [PATCH v7 4/4] arm64: dts: apm: Add APM X-Gene SoC PMU DTS entries

FromTai Nguyen <ttnguyen@apm.com>
Date2016-07-07 02:20 +0200
Subject[PATCH v7 4/4] arm64: dts: apm: Add APM X-Gene SoC PMU DTS entries
Message-ID<rS5cR-7Pk-13@gated-at.bofh.it>
In reply to#1438021
Signed-off-by: Tai Nguyen <ttnguyen@apm.com>
---
 arch/arm64/boot/dts/apm/apm-storm.dtsi | 58 ++++++++++++++++++++++++++++++++++
 1 file changed, 58 insertions(+)

diff --git a/arch/arm64/boot/dts/apm/apm-storm.dtsi b/arch/arm64/boot/dts/apm/apm-storm.dtsi
index fe30f76..62806e0 100644
--- a/arch/arm64/boot/dts/apm/apm-storm.dtsi
+++ b/arch/arm64/boot/dts/apm/apm-storm.dtsi
@@ -566,6 +566,64 @@
 			};
 		};
 
+		pmu: pmu@78810000 {
+			compatible = "apm,xgene-pmu-v2";
+			#address-cells = <2>;
+			#size-cells = <2>;
+			ranges;
+			regmap-csw = <&csw>;
+			regmap-mcba = <&mcba>;
+			regmap-mcbb = <&mcbb>;
+			reg = <0x0 0x78810000 0x0 0x1000>;
+			interrupts = <0x0 0x22 0x4>;
+
+			pmul3c@7e610000 {
+				compatible = "apm,xgene-pmu-l3c";
+				reg = <0x0 0x7e610000 0x0 0x1000>;
+			};
+
+			pmuiob@7e940000 {
+				compatible = "apm,xgene-pmu-iob";
+				reg = <0x0 0x7e940000 0x0 0x1000>;
+			};
+
+			pmucmcb@7e710000 {
+				compatible = "apm,xgene-pmu-mcb";
+				reg = <0x0 0x7e710000 0x0 0x1000>;
+				enable-bit-index = <0>;
+			};
+
+			pmucmcb@7e730000 {
+				compatible = "apm,xgene-pmu-mcb";
+				reg = <0x0 0x7e730000 0x0 0x1000>;
+				enable-bit-index = <1>;
+			};
+
+			pmucmc@7e810000 {
+				compatible = "apm,xgene-pmu-mc";
+				reg = <0x0 0x7e810000 0x0 0x1000>;
+				enable-bit-index = <0>;
+			};
+
+			pmucmc@7e850000 {
+				compatible = "apm,xgene-pmu-mc";
+				reg = <0x0 0x7e850000 0x0 0x1000>;
+				enable-bit-index = <1>;
+			};
+
+			pmucmc@7e890000 {
+				compatible = "apm,xgene-pmu-mc";
+				reg = <0x0 0x7e890000 0x0 0x1000>;
+				enable-bit-index = <2>;
+			};
+
+			pmucmc@7e8d0000 {
+				compatible = "apm,xgene-pmu-mc";
+				reg = <0x0 0x7e8d0000 0x0 0x1000>;
+				enable-bit-index = <3>;
+			};
+		};
+
 		pcie0: pcie@1f2b0000 {
 			status = "disabled";
 			device_type = "pci";
-- 
1.9.1

[toc] | [prev] | [next] | [standalone]


#1439999 — Re: [PATCH v7 3/4] perf: xgene: Add APM X-Gene SoC Performance Monitoring Unit driver

FromPaul Gortmaker <paul.gortmaker@windriver.com>
Date2016-07-10 02:10 +0200
SubjectRe: [PATCH v7 3/4] perf: xgene: Add APM X-Gene SoC Performance Monitoring Unit driver
Message-ID<rTatP-1sv-9@gated-at.bofh.it>
In reply to#1438021
On Wed, Jul 6, 2016 at 8:07 PM, Tai Nguyen <ttnguyen@apm.com> wrote:
> Signed-off-by: Tai Nguyen <ttnguyen@apm.com>
> ---
>  Documentation/perf/xgene-pmu.txt |   48 ++
>  drivers/perf/Kconfig             |    7 +
>  drivers/perf/Makefile            |    1 +
>  drivers/perf/xgene_pmu.c         | 1398 ++++++++++++++++++++++++++++++++++++++
>  4 files changed, 1454 insertions(+)
>  create mode 100644 Documentation/perf/xgene-pmu.txt
>  create mode 100644 drivers/perf/xgene_pmu.c
>

[...]

> diff --git a/drivers/perf/Kconfig b/drivers/perf/Kconfig
> index 04e2653..4d5c5f9 100644
> --- a/drivers/perf/Kconfig
> +++ b/drivers/perf/Kconfig
> @@ -12,4 +12,11 @@ config ARM_PMU
>           Say y if you want to use CPU performance monitors on ARM-based
>           systems.
>
> +config XGENE_PMU
> +        depends on PERF_EVENTS && ARCH_XGENE
> +        bool "APM X-Gene SoC PMU"

If the driver is bool, then please avoid using module.h and anything from
within it.  They are either no-ops when built in, or there are non-modular
equivalents available, so it is entirely avoidable, and makes for smaller
and better code.

> +        default n
> +        help
> +          Say y if you want to use APM X-Gene SoC performance monitors.
> +
>  endmenu
> diff --git a/drivers/perf/Makefile b/drivers/perf/Makefile
> index acd2397..b116e98 100644
> --- a/drivers/perf/Makefile
> +++ b/drivers/perf/Makefile
> @@ -1 +1,2 @@
>  obj-$(CONFIG_ARM_PMU) += arm_pmu.o
> +obj-$(CONFIG_XGENE_PMU) += xgene_pmu.o

[...]
                    ver = {
> +               .name           = "xgene-pmu",
> +               .of_match_table = xgene_pmu_of_match,
> +               .acpi_match_table = ACPI_PTR(xgene_pmu_acpi_match),
> +       },
> +};
> +
> +module_platform_driver(xgene_pmu_driver);

builtin_platform_driver

> +
> +MODULE_DESCRIPTION("APM X-Gene SoC PMU driver");
> +MODULE_AUTHOR("Hoan Tran <hotran@apm.com>");
> +MODULE_AUTHOR("Tai Nguyen <ttnguyen@apm.com>");
> +MODULE_LICENSE("GPL");

As long as this information is at the top of the file, then these can
go away too -- just like MODULE_DEVICE_TABLE they are no-op.

Paul.

[toc] | [prev] | [next] | [standalone]


#1440804 — Re: [PATCH v7 3/4] perf: xgene: Add APM X-Gene SoC Performance Monitoring Unit driver

FromTai Tri Nguyen <ttnguyen@apm.com>
Date2016-07-11 20:20 +0200
SubjectRe: [PATCH v7 3/4] perf: xgene: Add APM X-Gene SoC Performance Monitoring Unit driver
Message-ID<rTNYe-2cE-19@gated-at.bofh.it>
In reply to#1439999
Hi Paul,

Thanks for your comments.

On Sat, Jul 9, 2016 at 5:00 PM, Paul Gortmaker
<paul.gortmaker@windriver.com> wrote:
> On Wed, Jul 6, 2016 at 8:07 PM, Tai Nguyen <ttnguyen@apm.com> wrote:
>> Signed-off-by: Tai Nguyen <ttnguyen@apm.com>
>> ---
>>  Documentation/perf/xgene-pmu.txt |   48 ++
>>  drivers/perf/Kconfig             |    7 +
>>  drivers/perf/Makefile            |    1 +
>>  drivers/perf/xgene_pmu.c         | 1398 ++++++++++++++++++++++++++++++++++++++
>>  4 files changed, 1454 insertions(+)
>>  create mode 100644 Documentation/perf/xgene-pmu.txt
>>  create mode 100644 drivers/perf/xgene_pmu.c
>>
>
> [...]
>
>> diff --git a/drivers/perf/Kconfig b/drivers/perf/Kconfig
>> index 04e2653..4d5c5f9 100644
>> --- a/drivers/perf/Kconfig
>> +++ b/drivers/perf/Kconfig
>> @@ -12,4 +12,11 @@ config ARM_PMU
>>           Say y if you want to use CPU performance monitors on ARM-based
>>           systems.
>>
>> +config XGENE_PMU
>> +        depends on PERF_EVENTS && ARCH_XGENE
>> +        bool "APM X-Gene SoC PMU"
>
> If the driver is bool, then please avoid using module.h and anything from
> within it.  They are either no-ops when built in, or there are non-modular
> equivalents available, so it is entirely avoidable, and makes for smaller
> and better code.
>

Okay, I'll remove the module.h

>> +        default n
>> +        help
>> +          Say y if you want to use APM X-Gene SoC performance monitors.
>> +
>>  endmenu
>> diff --git a/drivers/perf/Makefile b/drivers/perf/Makefile
>> index acd2397..b116e98 100644
>> --- a/drivers/perf/Makefile
>> +++ b/drivers/perf/Makefile
>> @@ -1 +1,2 @@
>>  obj-$(CONFIG_ARM_PMU) += arm_pmu.o
>> +obj-$(CONFIG_XGENE_PMU) += xgene_pmu.o
>
> [...]
>                     ver = {
>> +               .name           = "xgene-pmu",
>> +               .of_match_table = xgene_pmu_of_match,
>> +               .acpi_match_table = ACPI_PTR(xgene_pmu_acpi_match),
>> +       },
>> +};
>> +
>> +module_platform_driver(xgene_pmu_driver);
>
> builtin_platform_driver
>

Okay, I'll change it.

>> +
>> +MODULE_DESCRIPTION("APM X-Gene SoC PMU driver");
>> +MODULE_AUTHOR("Hoan Tran <hotran@apm.com>");
>> +MODULE_AUTHOR("Tai Nguyen <ttnguyen@apm.com>");
>> +MODULE_LICENSE("GPL");
>
> As long as this information is at the top of the file, then these can
> go away too -- just like MODULE_DEVICE_TABLE they are no-op.
>

Will get rid of them.

Regards,
-- 
Tai

[toc] | [prev] | [standalone]


Back to top | Article view | linux.kernel


csiph-web