Re: [PATCH v8 1/4] perf/amlogic: Add support for Amlogic meson G12 SoC DDR PMU driver

From: Neil Armstrong
Date: Tue Sep 27 2022 - 05:29:02 EST


Hi Will, Mark,

On 16/09/2022 04:03, Jiucheng Xu wrote:
This patch adds support Amlogic meson G12 series SoC
DDR bandwidth PMU driver framework and interfaces.

The PMU not only can monitor the total DDR bandwidth,
but also the bandwidth which is from individual IP module.

Example usage:

$ perf stat -a -e meson_ddr_bw/total_rw_bytes/ -I 1000 sleep 10

- or -

$ perf stat -a -e \
meson_ddr_bw/total_rw_bytes/,\
meson_ddr_bw/chan_1_rw_bytes,arm=1/ -I 1000 \
sleep 10

g12 SoC support 4 channels to monitor DDR bandwidth
simultaneously. Each channel can monitor up to 4 IP modules
simultaneously.

For Instance, If you want to get the sum of DDR bandwidth
from CPU, GPU, USB3.0 and VDEC. You can use the following
command parameters to display.

$ perf stat -a -e \
meson_ddr_bw/chan_2_rw_bytes,arm=1,gpu=1,usb3_0=1,nna=1/ -I 1000 \
sleep 10

Other events are supported, and advertised via perf list.

Signed-off-by: Jiucheng Xu <jiucheng.xu@xxxxxxxxxxx>
---
Changes v7 -> v8:
- Add linux-amlogic@xxxxxxxxxxxxxxxxxxx maillist for MAINTAINERS
- Change driver name from "amlogic,g12-ddr-pmu" to "meson-g12-ddr-pmu"

Changes v6 -> v7:
- Drop the Reported-by tag

Changes v5 -> v6:
- Add const for driver data

Changes v4 -> v5:
- Remove error message
- Use smp_processor_id() instead of raw_smp_processor_id()
- Remove EXPORT_SYMBOL()
- Use variant specific driver data for compatible
- Use module_platform_driver for modules_init/exit
- Change location of driver structures from .h to .c

Changes v3 -> v4:
- No change

Changes v2 -> v3:
- Fix sh GCC 12.1.0 compiling warning
- Rename prefix aml to meson for files and code

Changes v1 -> v2:
- Remove inline to let GCC make the decisions
- Remove spinlock
- Remove ddr_cnt_accumulate()
- Remove the message which only indicate a bug
- Remove all dev_warn() message
- Use hweight64() helper instead of whole loop
- Remove setting of hwc
- Use for_each_set_bit() helper for bit loop
- Use sysfs_emit() in sysfs show
- Remove checking for bugs
- Replace irq_set_affinity_hint() to irq_set_affinity()
- Remove #ifdef CONFIG_OF
- Use devm_platform_ioremap_resource() instead of
platform_get_resource()&ioremap()
- Use platform_get_irq() instead of platform_get_resource()&ioremap()
- Replace IRQF_SHARED to IRQF_NOBALANCING
- Remove meaningless log like "init ok"
- Use compatible instead of creating new property to distinguish
different platform.
- Use the is_visible callback to avoid exposing unsupported fmt_attr
- Use module_platform_driver_probe() instead of module_init/exit

<snip>

Gentle ping, it seems all previous review comments were addressed, could you do another review round on this v8 ?

Thanks,
Neil