[{"id":1759823,"web_url":"http://patchwork.ozlabs.org/comment/1759823/","msgid":"<a89f597e-885d-a8bd-f6ce-452d7025cb20@hisilicon.com>","list_archive_url":null,"date":"2017-08-30T02:54:03","subject":"Re: [RFC PATCH v9 5/7] perf: cavium: Support memory controller PMU\n\tcounters","submitter":{"id":71656,"url":"http://patchwork.ozlabs.org/api/people/71656/","name":"Shaokun Zhang","email":"zhangshaokun@hisilicon.com"},"content":"Hi Jan,\n\nSome trivial things i noticed, please consider if you are glad.\n\nThanks,\nShaokun\n\nOn 2017/8/29 21:12, Jan Glauber wrote:\n> Add support for the PMU counters on Cavium SOC memory controllers.\n> \n> This patch also adds generic functions to allow supporting more\n> devices with PMU counters.\n> \n> Properties of the LMC PMU counters:\n> - not stoppable\n> - fixed purpose\n> - read-only\n> - one PCI device per memory controller\n> \n> Signed-off-by: Jan Glauber <jglauber@cavium.com>\n> ---\n>  drivers/perf/Kconfig            |   8 +\n>  drivers/perf/Makefile           |   1 +\n>  drivers/perf/cavium_pmu.c       | 445 ++++++++++++++++++++++++++++++++++++++++\n>  drivers/soc/cavium/cavium_lmc.c |   4 +\n>  include/linux/cpuhotplug.h      |   1 +\n>  include/linux/soc/cavium/lmc.h  |   3 +\n>  6 files changed, 462 insertions(+)\n>  create mode 100644 drivers/perf/cavium_pmu.c\n> \n> diff --git a/drivers/perf/Kconfig b/drivers/perf/Kconfig\n> index e5197ff..a787562 100644\n> --- a/drivers/perf/Kconfig\n> +++ b/drivers/perf/Kconfig\n> @@ -43,4 +43,12 @@ config XGENE_PMU\n>          help\n>            Say y if you want to use APM X-Gene SoC performance monitors.\n>  \n> +config CAVIUM_PMU_LMC\n> +\ttristate \"Cavium SOC memory controller PMU\"\n> +\tdepends on ARCH_THUNDER && m\n> +\tselect CAVIUM_LMC\n> +\thelp\n> +\t  Provides PMU counters for the memory controller on\n> +\t  Cavium ThunderX or OcteonTX SOCs.\n> +\n>  endmenu\n> diff --git a/drivers/perf/Makefile b/drivers/perf/Makefile\n> index 6420bd4..077a15d 100644\n> --- a/drivers/perf/Makefile\n> +++ b/drivers/perf/Makefile\n> @@ -3,3 +3,4 @@ obj-$(CONFIG_ARM_PMU_ACPI) += arm_pmu_acpi.o\n>  obj-$(CONFIG_QCOM_L2_PMU)\t+= qcom_l2_pmu.o\n>  obj-$(CONFIG_QCOM_L3_PMU) += qcom_l3_pmu.o\n>  obj-$(CONFIG_XGENE_PMU) += xgene_pmu.o\n> +obj-$(CONFIG_CAVIUM_PMU_LMC) += cavium_pmu.o\n\nKeep in alphabetic order?\n\n> diff --git a/drivers/perf/cavium_pmu.c b/drivers/perf/cavium_pmu.c\n> new file mode 100644\n> index 0000000..bcdedaa\n> --- /dev/null\n> +++ b/drivers/perf/cavium_pmu.c\n> @@ -0,0 +1,445 @@\n> +/*\n> + * Cavium ARM SOC \"uncore\" PMU counters\n> + *\n> + * This file is subject to the terms and conditions of the GNU General Public\n> + * License.  See the file \"COPYING\" in the main directory of this archive\n> + * for more details.\n> + *\n> + * Copyright Cavium, Inc. 2017\n> + * Author(s): Jan Glauber <jan.glauber@cavium.com>\n> + *\n> + */\n> +#include <linux/cpumask.h>\n> +#include <linux/cpuhotplug.h>\n> +#include <linux/io.h>\n> +#include <linux/export.h>\n\nKeep the include header files in alphabetic order too?\n\n> +#include <linux/list.h>\n> +#include <linux/module.h>\n> +#include <linux/mutex.h>\n> +#include <linux/pci.h>\n> +#include <linux/perf_event.h>\n> +#include <linux/slab.h>\n> +#include <linux/soc/cavium/lmc.h>\n> +\n> +enum cvm_pmu_type {\n> +\tCVM_PMU_LMC,\n> +};\n> +\n> +/* maximum number of parallel hardware counters for all pmu types */\n> +#define CVM_PMU_MAX_COUNTERS 64\n> +\n> +/* generic struct to cover the different pmu types */\n> +struct cvm_pmu_dev {\n> +\tstruct pmu pmu;\n> +\tconst char *pmu_name;\n\nIt seems that pmu_name is redundant since struct pmu has a name field,\nMark has mentioned it in HiSilicon uncore PMU driver, Link:\nhttps://patchwork.kernel.org/patch/9861821/\n\n> +\tbool (*event_valid)(u64);\n> +\tvoid __iomem *map;\n> +\tstruct pci_dev *pdev;\n> +\tint num_counters;\n> +\tstruct perf_event *events[CVM_PMU_MAX_COUNTERS];\n> +\tstruct list_head entry;\n> +\tstruct hlist_node cpuhp_node;\n> +\tcpumask_t active_mask;\n> +};\n> +\n> +static struct list_head cvm_pmu_lmcs;\n> +static struct list_head cvm_pmu_tlks;\n> +\n> +/*\n> + * Common Cavium PMU stuff\n> + *\n> + * Shared properties of the different PMU types:\n> + * - all counters are 64 bit long\n> + * - there are no overflow interrupts\n> + * - all devices with PMU counters appear as PCI devices\n> + *\n> + * Counter control, access and device association depends on the\n> + * PMU type.\n> + */\n> +\n> +#define to_pmu_dev(x) container_of((x), struct cvm_pmu_dev, pmu)\n> +\n> +static int cvm_pmu_event_init(struct perf_event *event)\n> +{\n> +\tstruct hw_perf_event *hwc = &event->hw;\n> +\tstruct cvm_pmu_dev *pmu_dev;\n> +\tstruct perf_event *sibling;\n> +\n> +\tif (event->attr.type != event->pmu->type)\n> +\t\treturn -ENOENT;\n> +\n> +\t/* we do not support sampling */\n> +\tif (is_sampling_event(event))\n> +\t\treturn -EINVAL;\n> +\n> +\t/* PMU counters do not support any these bits */\n> +\tif (event->attr.exclude_user\t||\n> +\t    event->attr.exclude_kernel\t||\n> +\t    event->attr.exclude_host\t||\n> +\t    event->attr.exclude_guest\t||\n> +\t    event->attr.exclude_hv\t||\n> +\t    event->attr.exclude_idle)\n> +\t\treturn -EINVAL;\n> +\n> +\tpmu_dev = to_pmu_dev(event->pmu);\n> +\tif (!pmu_dev->event_valid(event->attr.config))\n> +\t\treturn -EINVAL;\n> +\n> +\t/*\n> +\t * Forbid groups containing mixed PMUs, software events are acceptable.\n> +\t */\n> +\tif (event->group_leader->pmu != event->pmu &&\n> +\t    !is_software_event(event->group_leader))\n> +\t\treturn -EINVAL;\n> +\n> +\tlist_for_each_entry(sibling, &event->group_leader->sibling_list,\n> +\t\t\t    group_entry)\n> +\t\tif (sibling->pmu != event->pmu &&\n> +\t\t    !is_software_event(sibling))\n> +\t\t\treturn -EINVAL;\n> +\n> +\thwc->config = event->attr.config;\n> +\thwc->idx = -1;\n\nBlank line?\n\n> +\treturn 0;\n> +}\n> +\n> +static void cvm_pmu_read(struct perf_event *event)\n> +{\n> +\tstruct cvm_pmu_dev *pmu_dev = to_pmu_dev(event->pmu);\n> +\tstruct hw_perf_event *hwc = &event->hw;\n> +\tu64 prev, delta, new;\n> +\n> +again:\n> +\tprev = local64_read(&hwc->prev_count);\n> +\tnew = readq(hwc->event_base + pmu_dev->map);\n> +\n> +\tif (local64_cmpxchg(&hwc->prev_count, prev, new) != prev)\n> +\t\tgoto again;\n> +\n> +\tdelta = new - prev;\n> +\tlocal64_add(delta, &event->count);\n> +}\n> +\n> +static void cvm_pmu_start(struct perf_event *event, int flags)\n> +{\n> +\tstruct cvm_pmu_dev *pmu_dev = to_pmu_dev(event->pmu);\n> +\tstruct hw_perf_event *hwc = &event->hw;\n> +\tu64 new;\n> +\n> +\tif (WARN_ON_ONCE(!(hwc->state & PERF_HES_STOPPED)))\n> +\t\treturn;\n> +\n> +\tWARN_ON_ONCE(!(hwc->state & PERF_HES_UPTODATE));\n> +\thwc->state = 0;\n> +\n> +\t/* update prev_count always in order support unstoppable counters */\n> +\tnew = readq(hwc->event_base + pmu_dev->map);\n> +\tlocal64_set(&hwc->prev_count, new);\n> +\n> +\tperf_event_update_userpage(event);\n> +}\n> +\n> +static void cvm_pmu_stop(struct perf_event *event, int flags)\n> +{\n> +\tstruct hw_perf_event *hwc = &event->hw;\n> +\n> +\tWARN_ON_ONCE(hwc->state & PERF_HES_STOPPED);\n> +\thwc->state |= PERF_HES_STOPPED;\n> +\n> +\tif ((flags & PERF_EF_UPDATE) && !(hwc->state & PERF_HES_UPTODATE)) {\n> +\t\tcvm_pmu_read(event);\n> +\t\thwc->state |= PERF_HES_UPTODATE;\n> +\t}\n> +}\n> +\n> +static int cvm_pmu_add(struct perf_event *event, int flags, u64 config_base,\n> +\t\t       u64 event_base)\n> +{\n> +\tstruct cvm_pmu_dev *pmu_dev = to_pmu_dev(event->pmu);\n> +\tstruct hw_perf_event *hwc = &event->hw;\n> +\n> +\tif (!cmpxchg(&pmu_dev->events[hwc->config], NULL, event))\n> +\t\thwc->idx = hwc->config;\n> +\n> +\tif (hwc->idx == -1)\n> +\t\treturn -EBUSY;\n> +\n> +\thwc->config_base = config_base;\n> +\thwc->event_base = event_base;\n> +\thwc->state = PERF_HES_UPTODATE | PERF_HES_STOPPED;\n> +\n> +\tif (flags & PERF_EF_START)\n> +\t\tpmu_dev->pmu.start(event, PERF_EF_RELOAD);\n> +\n> +\treturn 0;\n> +}\n> +\n> +static void cvm_pmu_del(struct perf_event *event, int flags)\n> +{\n> +\tstruct cvm_pmu_dev *pmu_dev = to_pmu_dev(event->pmu);\n> +\tstruct hw_perf_event *hwc = &event->hw;\n> +\tint i;\n> +\n> +\tevent->pmu->stop(event, PERF_EF_UPDATE);\n> +\n> +\t/*\n> +\t * For programmable counters we need to check where we installed it.\n> +\t * To keep this function generic always test the more complicated\n> +\t * case (free running counters won't need the loop).\n> +\t */\n> +\tfor (i = 0; i < pmu_dev->num_counters; i++)\n> +\t\tif (cmpxchg(&pmu_dev->events[i], event, NULL) == event)\n> +\t\t\tbreak;\n> +\n> +\tperf_event_update_userpage(event);\n> +\thwc->idx = -1;\n> +}\n> +\n> +static ssize_t cvm_pmu_event_sysfs_show(struct device *dev,\n> +\t\t\t\t\tstruct device_attribute *attr,\n> +\t\t\t\t\tchar *page)\n> +{\n> +\tstruct perf_pmu_events_attr *pmu_attr =\n> +\t\tcontainer_of(attr, struct perf_pmu_events_attr, attr);\n> +\n> +\tif (pmu_attr->event_str)\n> +\t\treturn sprintf(page, \"%s\", pmu_attr->event_str);\n> +\n> +\treturn 0;\n> +}\n> +\n> +/*\n> + * The pmu events are independent from CPUs. Provide a cpumask\n> + * nevertheless to prevent perf from adding the event per-cpu and just\n> + * set the mask to one online CPU. Use the same cpumask for all \"uncore\"\n> + * devices.\n> + *\n> + * There is a performance penalty for accessing a device from a CPU on\n> + * another socket, but we do not care.\n> + */\n> +static int cvm_pmu_offline_cpu(unsigned int old_cpu, struct hlist_node *node)\n> +{\n> +\tstruct cvm_pmu_dev *pmu_dev;\n> +\tint new_cpu;\n\nunsigned int?\n\n> +\n> +\tpmu_dev = hlist_entry_safe(node, struct cvm_pmu_dev, cpuhp_node);\n> +\tif (!cpumask_test_and_clear_cpu(old_cpu, &pmu_dev->active_mask))\n> +\t\treturn 0;\n> +\n> +\tnew_cpu = cpumask_any_but(cpu_online_mask, old_cpu);\n> +\tif (new_cpu >= nr_cpu_ids)\n> +\t\treturn 0;\n> +\n> +\tperf_pmu_migrate_context(&pmu_dev->pmu, old_cpu, new_cpu);\n> +\tcpumask_set_cpu(new_cpu, &pmu_dev->active_mask);\n> +\n> +\treturn 0;\n> +}\n> +\n> +static ssize_t cvm_pmu_attr_show_cpumask(struct device *dev,\n> +\t\t\t\t\t struct device_attribute *attr,\n> +\t\t\t\t\t char *buf)\n> +{\n> +\tstruct pmu *pmu = dev_get_drvdata(dev);\n> +\tstruct cvm_pmu_dev *pmu_dev = container_of(pmu, struct cvm_pmu_dev, pmu);\n> +\n> +\treturn cpumap_print_to_pagebuf(true, buf, &pmu_dev->active_mask);\n> +}\n> +\n> +static DEVICE_ATTR(cpumask, S_IRUGO, cvm_pmu_attr_show_cpumask, NULL);\n> +\n> +static struct attribute *cvm_pmu_attrs[] = {\n> +\t&dev_attr_cpumask.attr,\n> +\tNULL,\n> +};\n> +\n> +static struct attribute_group cvm_pmu_attr_group = {\n> +\t.attrs = cvm_pmu_attrs,\n> +};\n> +\n> +/*\n> + * LMC (memory controller) counters:\n> + * - not stoppable, always on, read-only\n> + * - one PCI device per memory controller\n> + */\n> +#define LMC_CONFIG_OFFSET\t\t0x188\n> +#define LMC_CONFIG_RESET_BIT\t\tBIT(17)\n> +\n> +/* LMC events */\n> +#define LMC_EVENT_IFB_CNT\t\t0x1d0\n> +#define LMC_EVENT_OPS_CNT\t\t0x1d8\n> +#define LMC_EVENT_DCLK_CNT\t\t0x1e0\n> +#define LMC_EVENT_BANK_CONFLICT1\t0x360\n> +#define LMC_EVENT_BANK_CONFLICT2\t0x368\n> +\n> +#define CVM_PMU_LMC_EVENT_ATTR(_name, _id)\t\t\t\t\t\t\\\n> +\t&((struct perf_pmu_events_attr[]) {\t\t\t\t\t\t\\\n> +\t\t{\t\t\t\t\t\t\t\t\t\\\n> +\t\t\t__ATTR(_name, S_IRUGO, cvm_pmu_event_sysfs_show, NULL),\t\t\\\n> +\t\t\t_id,\t\t\t\t\t\t\t\t\\\n> +\t\t\t\"lmc_event=\" __stringify(_id),\t\t\t\t\t\\\n> +\t\t}\t\t\t\t\t\t\t\t\t\\\n> +\t})[0].attr.attr\n> +\n> +/* map counter numbers to register offsets */\n> +static int lmc_events[] = {\n\nAdd const?\n\n> +\tLMC_EVENT_IFB_CNT,\n> +\tLMC_EVENT_OPS_CNT,\n> +\tLMC_EVENT_DCLK_CNT,\n> +\tLMC_EVENT_BANK_CONFLICT1,\n> +\tLMC_EVENT_BANK_CONFLICT2,\n> +};\n> +\n> +static int cvm_pmu_lmc_add(struct perf_event *event, int flags)\n> +{\n> +\tstruct hw_perf_event *hwc = &event->hw;\n> +\n> +\treturn cvm_pmu_add(event, flags, LMC_CONFIG_OFFSET,\n> +\t\t\t   lmc_events[hwc->config]);\n> +}\n> +\n> +PMU_FORMAT_ATTR(lmc_event, \"config:0-2\");\n> +\n> +static struct attribute *cvm_pmu_lmc_format_attr[] = {\n> +\t&format_attr_lmc_event.attr,\n> +\tNULL,\n> +};\n> +\n> +static struct attribute_group cvm_pmu_lmc_format_group = {\n> +\t.name = \"format\",\n> +\t.attrs = cvm_pmu_lmc_format_attr,\n> +};\n> +\n> +static struct attribute *cvm_pmu_lmc_events_attr[] = {\n> +\tCVM_PMU_LMC_EVENT_ATTR(ifb_cnt,\t\t0),\n> +\tCVM_PMU_LMC_EVENT_ATTR(ops_cnt,\t\t1),\n> +\tCVM_PMU_LMC_EVENT_ATTR(dclk_cnt,\t2),\n> +\tCVM_PMU_LMC_EVENT_ATTR(bank_conflict1,\t3),\n> +\tCVM_PMU_LMC_EVENT_ATTR(bank_conflict2,\t4),\n> +\tNULL,\n> +};\n> +\n> +static struct attribute_group cvm_pmu_lmc_events_group = {\n> +\t.name = \"events\",\n> +\t.attrs = cvm_pmu_lmc_events_attr,\n> +};\n> +\n> +static const struct attribute_group *cvm_pmu_lmc_attr_groups[] = {\n> +\t&cvm_pmu_attr_group,\n> +\t&cvm_pmu_lmc_format_group,\n> +\t&cvm_pmu_lmc_events_group,\n> +\tNULL,\n> +};\n> +\n> +static bool cvm_pmu_lmc_event_valid(u64 config)\n> +{\n> +\treturn (config < ARRAY_SIZE(lmc_events));\n> +}\n> +\n> +int cvm_lmc_pmu_probe(struct pci_dev *pdev, const struct pci_device_id *ent)\n> +{\n> +\tstruct cvm_pmu_dev *next, *lmc;\n> +\tint nr = 0, ret = -ENOMEM;\n> +\n> +\tlmc = kzalloc(sizeof(*lmc), GFP_KERNEL);\n\nHow about use devm_kzalloc?\n\n> +\tif (!lmc)\n> +\t\treturn -ENOMEM;\n> +\n> +\tlmc->map = ioremap(pci_resource_start(pdev, 0),\n> +\t\t\t   pci_resource_len(pdev, 0));\n> +\tif (!lmc->map)\n> +\t\tgoto fail_ioremap;\n> +\n> +\tlist_for_each_entry(next, &cvm_pmu_lmcs, entry)\n> +\t\tnr++;\n> +\tlmc->pmu_name = kasprintf(GFP_KERNEL, \"lmc%d\", nr);\n\nUse devm_kasprintf, simplify fail handle and memory free?\n\n> +\tif (!lmc->pmu_name)\n> +\t\tgoto fail_kasprintf;\n> +\n> +\tlmc->pdev = pdev;\n> +\tlmc->num_counters = ARRAY_SIZE(lmc_events);\n> +\tlmc->pmu = (struct pmu) {\n> +\t\t.task_ctx_nr    = perf_invalid_context,\n> +\t\t.event_init\t= cvm_pmu_event_init,\n> +\t\t.add\t\t= cvm_pmu_lmc_add,\n> +\t\t.del\t\t= cvm_pmu_del,\n> +\t\t.start\t\t= cvm_pmu_start,\n> +\t\t.stop\t\t= cvm_pmu_stop,\n> +\t\t.read\t\t= cvm_pmu_read,\n> +\t\t.attr_groups\t= cvm_pmu_lmc_attr_groups,\n> +\t};\n> +\n> +\tcpuhp_state_add_instance_nocalls(CPUHP_AP_PERF_ARM_CVM_ONLINE,\n> +\t\t\t\t\t &lmc->cpuhp_node);\n> +\n> +\t/*\n> +\t * perf PMU is CPU dependent so pick a random CPU and migrate away\n> +\t * if it goes offline.\n> +\t */\n> +\tcpumask_set_cpu(smp_processor_id(), &lmc->active_mask);\n> +\n> +\tlist_add(&lmc->entry, &cvm_pmu_lmcs);\n> +\tlmc->event_valid = cvm_pmu_lmc_event_valid;\n> +\n> +\tret = perf_pmu_register(&lmc->pmu, lmc->pmu_name, -1);\n> +\tif (ret)\n> +\t\tgoto fail_pmu;\n> +\n> +\tdev_info(&pdev->dev, \"Enabled %s PMU with %d counters\\n\",\n> +\t\t lmc->pmu_name, lmc->num_counters);\n\nBlank line?\n\n> +\treturn 0;\n> +\n> +fail_pmu:\n> +\tkfree(lmc->pmu_name);\n> +\tcpuhp_state_remove_instance(CPUHP_AP_PERF_ARM_CVM_ONLINE,\n> +\t\t\t\t    &lmc->cpuhp_node);\n> +fail_kasprintf:\n> +\tiounmap(lmc->map);\n> +fail_ioremap:\n> +\tkfree(lmc);\n> +\treturn ret;\n> +}\n> +EXPORT_SYMBOL_GPL(cvm_lmc_pmu_probe);\n> +\n> +void cvm_lmc_pmu_remove(struct pci_dev *pdev)\n> +{\n> +\tstruct list_head *l, *tmp;\n> +\tstruct cvm_pmu_dev *lmc;\n> +\n> +\tlist_for_each_safe(l, tmp, &cvm_pmu_lmcs) {\n> +\t\tlmc = list_entry(l, struct cvm_pmu_dev, entry);\n> +\t\tif (pdev != lmc->pdev)\n> +\t\t\tcontinue;\n> +\n> +\t\tperf_pmu_unregister(&lmc->pmu);\n> +\t\tiounmap(lmc->map);\n> +\t\tcpuhp_state_remove_instance(CPUHP_AP_PERF_ARM_CVM_ONLINE,\n> +\t\t\t\t\t    &lmc->cpuhp_node);\n> +\t\tlist_del(&lmc->entry);\n> +\t\tkfree(lmc->pmu_name);\n> +\t\tkfree(lmc);\n> +\t}\n> +}\n> +EXPORT_SYMBOL_GPL(cvm_lmc_pmu_remove);\n> +\n> +static int __init cvm_pmu_init(void)\n> +{\n> +\tINIT_LIST_HEAD(&cvm_pmu_lmcs);\n> +\tINIT_LIST_HEAD(&cvm_pmu_tlks);\n> +\n> +\treturn cpuhp_setup_state_multi(CPUHP_AP_PERF_ARM_CVM_ONLINE,\n> +\t\t\t\t       \"perf/arm/cvm:online\", NULL,\n> +\t\t\t\t       cvm_pmu_offline_cpu);\n> +}\n> +\n> +static void __exit cvm_pmu_exit(void)\n> +{\n> +\tcpuhp_remove_multi_state(CPUHP_AP_PERF_ARM_CVM_ONLINE);\n> +}\n> +\n> +module_init(cvm_pmu_init);\n> +module_exit(cvm_pmu_exit);\n> +\n> +MODULE_LICENSE(\"GPL v2\");\n> +MODULE_AUTHOR(\"Cavium, Inc.\");\n> +MODULE_DESCRIPTION(\"PMU Driver for Cavium ThunderX SOC\");\n> diff --git a/drivers/soc/cavium/cavium_lmc.c b/drivers/soc/cavium/cavium_lmc.c\n> index 87248e8..d21d59c 100644\n> --- a/drivers/soc/cavium/cavium_lmc.c\n> +++ b/drivers/soc/cavium/cavium_lmc.c\n> @@ -17,6 +17,8 @@\n>  static int cvm_lmc_probe(struct pci_dev *pdev,\n>  \t\t\t const struct pci_device_id *ent)\n>  {\n> +\tif (IS_ENABLED(CONFIG_CAVIUM_PMU_LMC))\n> +\t\tcvm_lmc_pmu_probe(pdev, ent);\n>  \tif (IS_ENABLED(CONFIG_EDAC_THUNDERX))\n>  \t\tthunderx_edac_lmc_probe(pdev, ent);\n>  \treturn 0;\n> @@ -24,6 +26,8 @@ static int cvm_lmc_probe(struct pci_dev *pdev,\n>  \n>  static void cvm_lmc_remove(struct pci_dev *pdev)\n>  {\n> +\tif (IS_ENABLED(CONFIG_CAVIUM_PMU_LMC))\n> +\t\tcvm_lmc_pmu_remove(pdev);\n>  \tif (IS_ENABLED(CONFIG_EDAC_THUNDERX))\n>  \t\tthunderx_edac_lmc_remove(pdev);\n>  }\n> diff --git a/include/linux/cpuhotplug.h b/include/linux/cpuhotplug.h\n> index 82b30e6..ca84ac8 100644\n> --- a/include/linux/cpuhotplug.h\n> +++ b/include/linux/cpuhotplug.h\n> @@ -139,6 +139,7 @@ enum cpuhp_state {\n>  \tCPUHP_AP_PERF_ARM_QCOM_L3_ONLINE,\n>  \tCPUHP_AP_WORKQUEUE_ONLINE,\n>  \tCPUHP_AP_RCUTREE_ONLINE,\n> +\tCPUHP_AP_PERF_ARM_CVM_ONLINE,\n\nAlphabetic order?\n\n>  \tCPUHP_AP_ONLINE_DYN,\n>  \tCPUHP_AP_ONLINE_DYN_END\t\t= CPUHP_AP_ONLINE_DYN + 30,\n>  \tCPUHP_AP_X86_HPET_ONLINE,\n> diff --git a/include/linux/soc/cavium/lmc.h b/include/linux/soc/cavium/lmc.h\n> index 336f467..e5ad650 100644\n> --- a/include/linux/soc/cavium/lmc.h\n> +++ b/include/linux/soc/cavium/lmc.h\n> @@ -3,6 +3,9 @@\n>  \n>  #include <linux/pci.h>\n>  \n> +int cvm_lmc_pmu_probe(struct pci_dev *pdev, const struct pci_device_id *ent);\n> +void cvm_lmc_pmu_remove(struct pci_dev *pdev);\n> +\n>  int thunderx_edac_lmc_probe(struct pci_dev *pdev, const struct pci_device_id *ent);\n>  void thunderx_edac_lmc_remove(struct pci_dev *pdev);\n>  \n>","headers":{"Return-Path":"<linux-arm-kernel-bounces+incoming-imx=patchwork.ozlabs.org@lists.infradead.org>","X-Original-To":"incoming-imx@patchwork.ozlabs.org","Delivered-To":"patchwork-incoming-imx@bilbo.ozlabs.org","Authentication-Results":["ozlabs.org;\n\tspf=none (mailfrom) smtp.mailfrom=lists.infradead.org\n\t(client-ip=65.50.211.133; helo=bombadil.infradead.org;\n\tenvelope-from=linux-arm-kernel-bounces+incoming-imx=patchwork.ozlabs.org@lists.infradead.org;\n\treceiver=<UNKNOWN>)","ozlabs.org; dkim=pass (2048-bit key;\n\tunprotected) header.d=lists.infradead.org\n\theader.i=@lists.infradead.org\n\theader.b=\"h1ikJM7R\"; dkim-atps=neutral"],"Received":["from bombadil.infradead.org (bombadil.infradead.org\n\t[65.50.211.133])\n\t(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256\n\tbits)) (No client certificate requested)\n\tby ozlabs.org (Postfix) with ESMTPS id 3xhqqs4FKLz9sNc\n\tfor <incoming-imx@patchwork.ozlabs.org>;\n\tWed, 30 Aug 2017 12:55:21 +1000 (AEST)","from localhost ([127.0.0.1] helo=bombadil.infradead.org)\n\tby bombadil.infradead.org with esmtp (Exim 4.87 #1 (Red Hat Linux))\n\tid 1dmt9x-0006bL-Uu; Wed, 30 Aug 2017 02:55:17 +0000","from szxga04-in.huawei.com ([45.249.212.190])\n\tby bombadil.infradead.org with esmtps (Exim 4.87 #1 (Red Hat Linux))\n\tid 1dmt9V-0006Yu-IZ for linux-arm-kernel@lists.infradead.org;\n\tWed, 30 Aug 2017 02:54:53 +0000","from 172.30.72.59 (EHLO DGGEMS401-HUB.china.huawei.com)\n\t([172.30.72.59])\n\tby dggrg04-dlp.huawei.com (MOS 4.4.6-GA FastPath queued)\n\twith ESMTP id DGD95540; Wed, 30 Aug 2017 10:54:10 +0800 (CST)","from [127.0.0.1] (10.74.221.148) by DGGEMS401-HUB.china.huawei.com\n\t(10.3.19.201) with Microsoft SMTP Server id 14.3.301.0;\n\tWed, 30 Aug 2017 10:54:04 +0800"],"DKIM-Signature":"v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;\n\td=lists.infradead.org; s=bombadil.20170209; h=Sender:\n\tContent-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post:\n\tList-Archive:List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:Date:\n\tMessage-ID:From:References:To:Subject:Reply-To:Content-ID:Content-Description\n\t:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:\n\tList-Owner; bh=+N8tfvzOA2E/fXhGzEEkVfkPbaPdJPsKTaZ16K98AkU=;\n\tb=h1ikJM7RGYEbkR\n\thrUxvemm2mMQrIP57npbTg8nxA93geEHorCgaoSSOAfC6sjN//R20Ssg56/ubIgAOTSAW57sQKcJ7\n\tb3DGt4TIeMCISVhfCkFV/4cHYj0dx0KTFtJiGpfj/L8mikWK6OrORKhCCJ7BJjHHy1NmgQZJOFZnu\n\tLHWG8UC0YDM+Yo04h7O7v+A43qJnssAZuP97Fc9+g4W70dmT2cUp+0MmrQzehHWlCt+Vm8ZmEF1iV\n\tsDmgAqtrmRaAlEFz4DkqwFemzFP1/EUjluUCbSrjpJNjVij2SXoeZHPQ0m/I7u8QxJe1fq6rdRAPa\n\tJQF0K4vArYHcfnYS7PsQ==;","Subject":"Re: [RFC PATCH v9 5/7] perf: cavium: Support memory controller PMU\n\tcounters","To":"Jan Glauber <jglauber@cavium.com>, Mark Rutland <mark.rutland@arm.com>, \n\tWill Deacon <will.deacon@arm.com>","References":"<20170829131238.4988-1-jglauber@cavium.com>\n\t<20170829131238.4988-6-jglauber@cavium.com>","From":"Zhangshaokun <zhangshaokun@hisilicon.com>","Message-ID":"<a89f597e-885d-a8bd-f6ce-452d7025cb20@hisilicon.com>","Date":"Wed, 30 Aug 2017 10:54:03 +0800","User-Agent":"Mozilla/5.0 (Windows NT 6.1; WOW64; rv:45.0) Gecko/20100101\n\tThunderbird/45.1.1","MIME-Version":"1.0","In-Reply-To":"<20170829131238.4988-6-jglauber@cavium.com>","X-Originating-IP":"[10.74.221.148]","X-CFilter-Loop":"Reflected","X-Mirapoint-Virus-RAPID-Raw":"score=unknown(0),\n\trefid=str=0001.0A020204.59A628D3.00AE, ss=1, re=0.000, recu=0.000,\n\treip=0.000, cl=1, cld=1, fgs=0, ip=0.0.0.0,\n\tso=2014-11-16 11:51:01, dmn=2013-03-21 17:37:32","X-Mirapoint-Loop-Id":"82afcfaa51375daa7330d49dea65d1ff","X-CRM114-Version":"20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 ","X-CRM114-CacheID":"sfid-20170829_195450_388636_F86DD51E ","X-CRM114-Status":"GOOD (  29.80  )","X-Spam-Score":"-1.9 (-)","X-Spam-Report":"SpamAssassin version 3.4.1 on bombadil.infradead.org summary:\n\tContent analysis details:   (-1.9 points)\n\tpts rule name              description\n\t---- ----------------------\n\t--------------------------------------------------\n\t-0.0 SPF_PASS               SPF: sender matches SPF record\n\t-1.9 BAYES_00               BODY: Bayes spam probability is 0 to 1%\n\t[score: 0.0000]","X-BeenThere":"linux-arm-kernel@lists.infradead.org","X-Mailman-Version":"2.1.21","Precedence":"list","List-Unsubscribe":"<http://lists.infradead.org/mailman/options/linux-arm-kernel>,\n\t<mailto:linux-arm-kernel-request@lists.infradead.org?subject=unsubscribe>","List-Archive":"<http://lists.infradead.org/pipermail/linux-arm-kernel/>","List-Post":"<mailto:linux-arm-kernel@lists.infradead.org>","List-Help":"<mailto:linux-arm-kernel-request@lists.infradead.org?subject=help>","List-Subscribe":"<http://lists.infradead.org/mailman/listinfo/linux-arm-kernel>,\n\t<mailto:linux-arm-kernel-request@lists.infradead.org?subject=subscribe>","Cc":"Suzuki K Poulose <Suzuki.Poulose@arm.com>, Borislav Petkov <bp@alien8.de>,\n\tlinux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org,\n\tDavid Daney <david.daney@cavium.com>","Content-Type":"text/plain; charset=\"us-ascii\"","Content-Transfer-Encoding":"7bit","Sender":"\"linux-arm-kernel\" <linux-arm-kernel-bounces@lists.infradead.org>","Errors-To":"linux-arm-kernel-bounces+incoming-imx=patchwork.ozlabs.org@lists.infradead.org","List-Id":"linux-imx-kernel.lists.patchwork.ozlabs.org"}},{"id":1760012,"web_url":"http://patchwork.ozlabs.org/comment/1760012/","msgid":"<09997d9f-0003-0eb0-63d1-9b31e26e2229@arm.com>","list_archive_url":null,"date":"2017-08-30T10:03:00","subject":"Re: [RFC PATCH v9 5/7] perf: cavium: Support memory controller PMU\n\tcounters","submitter":{"id":65822,"url":"http://patchwork.ozlabs.org/api/people/65822/","name":"Suzuki K Poulose","email":"suzuki.poulose@arm.com"},"content":"On 29/08/17 14:12, Jan Glauber wrote:\n> Add support for the PMU counters on Cavium SOC memory controllers.\n>\n> This patch also adds generic functions to allow supporting more\n> devices with PMU counters.\n>\n> Properties of the LMC PMU counters:\n> - not stoppable\n> - fixed purpose\n> - read-only\n> - one PCI device per memory controller\n>\n> Signed-off-by: Jan Glauber <jglauber@cavium.com>\n\nJan,\n\nSome minor comments below.\n\n> +static void cvm_pmu_del(struct perf_event *event, int flags)\n> +{\n> +\tstruct cvm_pmu_dev *pmu_dev = to_pmu_dev(event->pmu);\n> +\tstruct hw_perf_event *hwc = &event->hw;\n> +\tint i;\n> +\n> +\tevent->pmu->stop(event, PERF_EF_UPDATE);\n> +\n> +\t/*\n> +\t * For programmable counters we need to check where we installed it.\n> +\t * To keep this function generic always test the more complicated\n> +\t * case (free running counters won't need the loop).\n> +\t */\n> +\tfor (i = 0; i < pmu_dev->num_counters; i++)\n> +\t\tif (cmpxchg(&pmu_dev->events[i], event, NULL) == event)\n> +\t\t\tbreak;\n\nDoes this mean, it is the only way to map any given event (for programmable counters)\nto a hardware counter ? What do we store in hwc->idx ? We have 2 additional\nstruct hw_perf_event_extra fields. We should be able to use one field to map it\nback to the counter, isn't it ?\n\n> +\n> +\tperf_event_update_userpage(event);\n> +\thwc->idx = -1;\n> +}\n> +\n\n...\n\n> +/* LMC events */\n> +#define LMC_EVENT_IFB_CNT\t\t0x1d0\n> +#define LMC_EVENT_OPS_CNT\t\t0x1d8\n> +#define LMC_EVENT_DCLK_CNT\t\t0x1e0\n> +#define LMC_EVENT_BANK_CONFLICT1\t0x360\n> +#define LMC_EVENT_BANK_CONFLICT2\t0x368\n> +\n> +#define CVM_PMU_LMC_EVENT_ATTR(_name, _id)\t\t\t\t\t\t\\\n> +\t&((struct perf_pmu_events_attr[]) {\t\t\t\t\t\t\\\n> +\t\t{\t\t\t\t\t\t\t\t\t\\\n> +\t\t\t__ATTR(_name, S_IRUGO, cvm_pmu_event_sysfs_show, NULL),\t\t\\\n> +\t\t\t_id,\t\t\t\t\t\t\t\t\\\n> +\t\t\t\"lmc_event=\" __stringify(_id),\t\t\t\t\t\\\n> +\t\t}\t\t\t\t\t\t\t\t\t\\\n> +\t})[0].attr.attr\n> +\n> +/* map counter numbers to register offsets */\n> +static int lmc_events[] = {\n> +\tLMC_EVENT_IFB_CNT,\n> +\tLMC_EVENT_OPS_CNT,\n> +\tLMC_EVENT_DCLK_CNT,\n> +\tLMC_EVENT_BANK_CONFLICT1,\n> +\tLMC_EVENT_BANK_CONFLICT2,\n> +};\n> +\n> +static int cvm_pmu_lmc_add(struct perf_event *event, int flags)\n> +{\n> +\tstruct hw_perf_event *hwc = &event->hw;\n> +\n> +\treturn cvm_pmu_add(event, flags, LMC_CONFIG_OFFSET,\n> +\t\t\t   lmc_events[hwc->config]);\n> +}\n> +\n\nIs there any reason why we can't use the LMC event code directly\nhere, avoiding the mapping altogether ?\n\n> +PMU_FORMAT_ATTR(lmc_event, \"config:0-2\");\n> +\n> +static struct attribute *cvm_pmu_lmc_format_attr[] = {\n> +\t&format_attr_lmc_event.attr,\n> +\tNULL,\n> +};\n> +\n> +static struct attribute_group cvm_pmu_lmc_format_group = {\n> +\t.name = \"format\",\n> +\t.attrs = cvm_pmu_lmc_format_attr,\n> +};\n> +\n> +static struct attribute *cvm_pmu_lmc_events_attr[] = {\n> +\tCVM_PMU_LMC_EVENT_ATTR(ifb_cnt,\t\t0),\n> +\tCVM_PMU_LMC_EVENT_ATTR(ops_cnt,\t\t1),\n> +\tCVM_PMU_LMC_EVENT_ATTR(dclk_cnt,\t2),\n> +\tCVM_PMU_LMC_EVENT_ATTR(bank_conflict1,\t3),\n> +\tCVM_PMU_LMC_EVENT_ATTR(bank_conflict2,\t4),\n> +\tNULL,\n> +};\n> +\n> +static struct attribute_group cvm_pmu_lmc_events_group = {\n> +\t.name = \"events\",\n> +\t.attrs = cvm_pmu_lmc_events_attr,\n> +};\n> +\n> +static const struct attribute_group *cvm_pmu_lmc_attr_groups[] = {\n> +\t&cvm_pmu_attr_group,\n> +\t&cvm_pmu_lmc_format_group,\n> +\t&cvm_pmu_lmc_events_group,\n> +\tNULL,\n> +};\n> +\n> +static bool cvm_pmu_lmc_event_valid(u64 config)\n> +{\n> +\treturn (config < ARRAY_SIZE(lmc_events));\n> +}\n> +\n> +int cvm_lmc_pmu_probe(struct pci_dev *pdev, const struct pci_device_id *ent)\n> +{\n> +\tstruct cvm_pmu_dev *next, *lmc;\n> +\tint nr = 0, ret = -ENOMEM;\n> +\n> +\tlmc = kzalloc(sizeof(*lmc), GFP_KERNEL);\n> +\tif (!lmc)\n> +\t\treturn -ENOMEM;\n\nAs Shaokun mentioned already, we could use devm_kzalloc() to avoid having to\ncleanup the memory explicitly upon error and during module unload.\n\n> +\n> +\tlmc->map = ioremap(pci_resource_start(pdev, 0),\n> +\t\t\t   pci_resource_len(pdev, 0));\n\nUse devm_ioremap here. See below.\n\n> +\tif (!lmc->map)\n> +\t\tgoto fail_ioremap;\n> +\n> +\tlist_for_each_entry(next, &cvm_pmu_lmcs, entry)\n> +\t\tnr++;\n> +\tlmc->pmu_name = kasprintf(GFP_KERNEL, \"lmc%d\", nr);\n\nAgain, you could remove the field and use devm_kasprintf() into a local\nvariable for using it with pmu_register. It would be automatically free'd\nupon error or device removal.\n\n> +\tif (!lmc->pmu_name)\n> +\t\tgoto fail_kasprintf;\n> +\n> +\tlmc->pdev = pdev;\n> +\tlmc->num_counters = ARRAY_SIZE(lmc_events);\n> +\tlmc->pmu = (struct pmu) {\n> +\t\t.task_ctx_nr    = perf_invalid_context,\n> +\t\t.event_init\t= cvm_pmu_event_init,\n> +\t\t.add\t\t= cvm_pmu_lmc_add,\n> +\t\t.del\t\t= cvm_pmu_del,\n> +\t\t.start\t\t= cvm_pmu_start,\n> +\t\t.stop\t\t= cvm_pmu_stop,\n> +\t\t.read\t\t= cvm_pmu_read,\n> +\t\t.attr_groups\t= cvm_pmu_lmc_attr_groups,\n> +\t};\n> +\n> +\tcpuhp_state_add_instance_nocalls(CPUHP_AP_PERF_ARM_CVM_ONLINE,\n> +\t\t\t\t\t &lmc->cpuhp_node);\n> +\n> +\t/*\n> +\t * perf PMU is CPU dependent so pick a random CPU and migrate away\n> +\t * if it goes offline.\n> +\t */\n> +\tcpumask_set_cpu(smp_processor_id(), &lmc->active_mask);\n> +\n> +\tlist_add(&lmc->entry, &cvm_pmu_lmcs);\n> +\tlmc->event_valid = cvm_pmu_lmc_event_valid;\n> +\n> +\tret = perf_pmu_register(&lmc->pmu, lmc->pmu_name, -1);\n> +\tif (ret)\n> +\t\tgoto fail_pmu;\n> +\n> +\tdev_info(&pdev->dev, \"Enabled %s PMU with %d counters\\n\",\n> +\t\t lmc->pmu_name, lmc->num_counters);\n> +\treturn 0;\n> +\n> +fail_pmu:\n> +\tkfree(lmc->pmu_name);\n> +\tcpuhp_state_remove_instance(CPUHP_AP_PERF_ARM_CVM_ONLINE,\n> +\t\t\t\t    &lmc->cpuhp_node);\n> +fail_kasprintf:\n> +\tiounmap(lmc->map);\n> +fail_ioremap:\n> +\tkfree(lmc);\n\nAs mentioned above, if you switch to devm_* versions, you could get rid of this\nkfrees and iounmap.","headers":{"Return-Path":"<linux-arm-kernel-bounces+incoming-imx=patchwork.ozlabs.org@lists.infradead.org>","X-Original-To":"incoming-imx@patchwork.ozlabs.org","Delivered-To":"patchwork-incoming-imx@bilbo.ozlabs.org","Authentication-Results":["ozlabs.org;\n\tspf=none (mailfrom) smtp.mailfrom=lists.infradead.org\n\t(client-ip=65.50.211.133; helo=bombadil.infradead.org;\n\tenvelope-from=linux-arm-kernel-bounces+incoming-imx=patchwork.ozlabs.org@lists.infradead.org;\n\treceiver=<UNKNOWN>)","ozlabs.org; dkim=pass (2048-bit key;\n\tunprotected) header.d=lists.infradead.org\n\theader.i=@lists.infradead.org\n\theader.b=\"SGyve8Ba\"; dkim-atps=neutral"],"Received":["from bombadil.infradead.org (bombadil.infradead.org\n\t[65.50.211.133])\n\t(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256\n\tbits)) (No client certificate requested)\n\tby ozlabs.org (Postfix) with ESMTPS id 3xj1Kw2KBnz9t0F\n\tfor <incoming-imx@patchwork.ozlabs.org>;\n\tWed, 30 Aug 2017 20:03:32 +1000 (AEST)","from localhost ([127.0.0.1] helo=bombadil.infradead.org)\n\tby bombadil.infradead.org with esmtp (Exim 4.87 #1 (Red Hat Linux))\n\tid 1dmzqK-0003sN-54; Wed, 30 Aug 2017 10:03:28 +0000","from foss.arm.com ([217.140.101.70])\n\tby bombadil.infradead.org with esmtp (Exim 4.87 #1 (Red Hat Linux))\n\tid 1dmzqG-0003q2-6w for linux-arm-kernel@lists.infradead.org;\n\tWed, 30 Aug 2017 10:03:25 +0000","from usa-sjc-imap-foss1.foss.arm.com (unknown [10.72.51.249])\n\tby usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 9A95D2B;\n\tWed, 30 Aug 2017 03:03:03 -0700 (PDT)","from [10.1.206.28] (e107814-lin.cambridge.arm.com [10.1.206.28])\n\tby usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id\n\t49C5C3F483; Wed, 30 Aug 2017 03:03:02 -0700 (PDT)"],"DKIM-Signature":"v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;\n\td=lists.infradead.org; s=bombadil.20170209; h=Sender:Content-Type:\n\tContent-Transfer-Encoding:Cc:List-Subscribe:List-Help:List-Post:List-Archive:\n\tList-Unsubscribe:List-Id:In-Reply-To:MIME-Version:Date:Message-ID:From:\n\tReferences:To:Subject:Reply-To:Content-ID:Content-Description:Resent-Date:\n\tResent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner;\n\tbh=Z1kG13ULAJxPzjSkLYVzZx9eg1pe/Ed/ilT9dc4eWrI=;\n\tb=SGyve8Ba38spfAyTNyI8i9YNP\n\tvZWlyzz+5x0z1u8QIK7vO1f3NPLNQqUwQJloN4HUl1YvuUoyeZ+kgkipbRPehqysgEq1XtmxxSDik\n\tMqDiEUvIYvgMU0zd6yPxNYnCOon6kTFsCESgooHIScmlSQtC3jwbknIC4XP+phSHmN/OJ0H5bisJe\n\t8YVdnnHMSYa2Nxgf0eOQJS6c6rCVcQDdVHzWfWmDk9K5tgTcN+c+nILy8TiHPufMU1YYQxmG0/10M\n\tCkfyWXry58d/Q5N3l51a27fO9zgi2J5znHXcEzZmbIfBS+4fuMPH5QHP+Csko/6AU7J+l+ICea5bN\n\t1T3feVmeg==;","Subject":"Re: [RFC PATCH v9 5/7] perf: cavium: Support memory controller PMU\n\tcounters","To":"Jan Glauber <jglauber@cavium.com>, Mark Rutland <mark.rutland@arm.com>, \n\tWill Deacon <will.deacon@arm.com>","References":"<20170829131238.4988-1-jglauber@cavium.com>\n\t<20170829131238.4988-6-jglauber@cavium.com>","From":"Suzuki K Poulose <Suzuki.Poulose@arm.com>","Message-ID":"<09997d9f-0003-0eb0-63d1-9b31e26e2229@arm.com>","Date":"Wed, 30 Aug 2017 11:03:00 +0100","User-Agent":"Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101\n\tThunderbird/45.8.0","MIME-Version":"1.0","In-Reply-To":"<20170829131238.4988-6-jglauber@cavium.com>","X-CRM114-Version":"20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 ","X-CRM114-CacheID":"sfid-20170830_030324_277482_B7E850B4 ","X-CRM114-Status":"GOOD (  22.65  )","X-Spam-Score":"-6.9 (------)","X-Spam-Report":"SpamAssassin version 3.4.1 on bombadil.infradead.org summary:\n\tContent analysis details:   (-6.9 points)\n\tpts rule name              description\n\t---- ----------------------\n\t--------------------------------------------------\n\t-5.0 RCVD_IN_DNSWL_HI RBL: Sender listed at http://www.dnswl.org/,\n\thigh trust [217.140.101.70 listed in list.dnswl.org]\n\t-0.0 SPF_PASS               SPF: sender matches SPF record\n\t-0.0 RP_MATCHES_RCVD Envelope sender domain matches handover relay\n\tdomain\n\t-1.9 BAYES_00               BODY: Bayes spam probability is 0 to 1%\n\t[score: 0.0000]","X-BeenThere":"linux-arm-kernel@lists.infradead.org","X-Mailman-Version":"2.1.21","Precedence":"list","List-Unsubscribe":"<http://lists.infradead.org/mailman/options/linux-arm-kernel>,\n\t<mailto:linux-arm-kernel-request@lists.infradead.org?subject=unsubscribe>","List-Archive":"<http://lists.infradead.org/pipermail/linux-arm-kernel/>","List-Post":"<mailto:linux-arm-kernel@lists.infradead.org>","List-Help":"<mailto:linux-arm-kernel-request@lists.infradead.org?subject=help>","List-Subscribe":"<http://lists.infradead.org/mailman/listinfo/linux-arm-kernel>,\n\t<mailto:linux-arm-kernel-request@lists.infradead.org?subject=subscribe>","Cc":"Borislav Petkov <bp@alien8.de>, linux-kernel@vger.kernel.org,\n\tlinux-arm-kernel@lists.infradead.org,\n\tDavid Daney <david.daney@cavium.com>","Content-Transfer-Encoding":"7bit","Content-Type":"text/plain; charset=\"us-ascii\"; Format=\"flowed\"","Sender":"\"linux-arm-kernel\" <linux-arm-kernel-bounces@lists.infradead.org>","Errors-To":"linux-arm-kernel-bounces+incoming-imx=patchwork.ozlabs.org@lists.infradead.org","List-Id":"linux-imx-kernel.lists.patchwork.ozlabs.org"}},{"id":1760382,"web_url":"http://patchwork.ozlabs.org/comment/1760382/","msgid":"<20170830175406.ygmathi3b5orzyqy@pd.tnic>","list_archive_url":null,"date":"2017-08-30T17:54:06","subject":"Re: [RFC PATCH v9 1/7] edac: thunderx: Remove suspend/resume support","submitter":{"id":4449,"url":"http://patchwork.ozlabs.org/api/people/4449/","name":"Borislav Petkov","email":"bp@alien8.de"},"content":"On Tue, Aug 29, 2017 at 03:12:32PM +0200, Jan Glauber wrote:\n> The memory controller on ThunderX/OcteonTX systems does not\n> support power management. Therefore remove the suspend/resume\n> callbacks.\n> \n> Signed-off-by: Jan Glauber <jglauber@cavium.com>\n> ---\n>  drivers/edac/thunderx_edac.c | 21 ---------------------\n>  1 file changed, 21 deletions(-)\n\nJust when I thought I'd pick that one up now because it is removing\nstuff:\n\ndrivers/edac/thunderx_edac.c:817:14: error: ‘thunderx_lmc_suspend’ undeclared here (not in a function)\n  .suspend  = thunderx_lmc_suspend,\n              ^~~~~~~~~~~~~~~~~~~~\ndrivers/edac/thunderx_edac.c:818:14: error: ‘thunderx_lmc_resume’ undeclared here (not in a function)\n  .resume   = thunderx_lmc_resume,\n              ^~~~~~~~~~~~~~~~~~~\nscripts/Makefile.build:308: recipe for target 'drivers/edac/thunderx_edac.o' failed\nmake[1]: *** [drivers/edac/thunderx_edac.o] Error 1\nmake[1]: *** Waiting for unfinished jobs....\nMakefile:1682: recipe for target 'drivers/edac/' failed\nmake: *** [drivers/edac/] Error 2\n\nPlease make sure you build and test every patch before submitting.\nYou're lucky I can at least build arm64 on my x86 workstation. :-)\n\nThx.","headers":{"Return-Path":"<linux-arm-kernel-bounces+incoming-imx=patchwork.ozlabs.org@lists.infradead.org>","X-Original-To":"incoming-imx@patchwork.ozlabs.org","Delivered-To":"patchwork-incoming-imx@bilbo.ozlabs.org","Authentication-Results":["ozlabs.org;\n\tspf=none (mailfrom) smtp.mailfrom=lists.infradead.org\n\t(client-ip=65.50.211.133; helo=bombadil.infradead.org;\n\tenvelope-from=linux-arm-kernel-bounces+incoming-imx=patchwork.ozlabs.org@lists.infradead.org;\n\treceiver=<UNKNOWN>)","ozlabs.org; dkim=pass (2048-bit key;\n\tunprotected) header.d=lists.infradead.org\n\theader.i=@lists.infradead.org\n\theader.b=\"VEZVOx5e\"; dkim-atps=neutral"],"Received":["from bombadil.infradead.org (bombadil.infradead.org\n\t[65.50.211.133])\n\t(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256\n\tbits)) (No client certificate requested)\n\tby ozlabs.org (Postfix) with ESMTPS id 3xjCnl58sNz9s8w\n\tfor <incoming-imx@patchwork.ozlabs.org>;\n\tThu, 31 Aug 2017 03:54:51 +1000 (AEST)","from localhost ([127.0.0.1] helo=bombadil.infradead.org)\n\tby bombadil.infradead.org with esmtp (Exim 4.87 #1 (Red Hat Linux))\n\tid 1dn7CR-0002Ci-MP; Wed, 30 Aug 2017 17:54:47 +0000","from mail.skyhub.de ([2a01:4f8:190:11c2::b:1457])\n\tby bombadil.infradead.org with esmtp (Exim 4.87 #1 (Red Hat Linux))\n\tid 1dn7CM-0002At-Se for linux-arm-kernel@lists.infradead.org;\n\tWed, 30 Aug 2017 17:54:45 +0000","from mail.skyhub.de ([127.0.0.1])\n\tby localhost (blast.alien8.de [127.0.0.1]) (amavisd-new, port 10026)\n\twith ESMTP id LP9di6bw7SXW; Wed, 30 Aug 2017 19:54:17 +0200 (CEST)","from pd.tnic (p2003008C2F67CD00240DF70709634A95.dip0.t-ipconnect.de\n\t[IPv6:2003:8c:2f67:cd00:240d:f707:963:4a95])\n\t(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256\n\tbits)) (No client certificate requested)\n\tby mail.skyhub.de (SuperMail on ZX Spectrum 128k) with ESMTPSA id\n\t6BEAA1EC03E1; Wed, 30 Aug 2017 19:54:17 +0200 (CEST)"],"DKIM-Signature":"v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;\n\td=lists.infradead.org; s=bombadil.20170209; h=Sender:\n\tContent-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post:\n\tList-Archive:List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:References:\n\tMessage-ID:Subject:To:From:Date:Reply-To:Content-ID:Content-Description:\n\tResent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:\n\tList-Owner; bh=8CWyT4ld9Jrg8Zjv79KXwJiwPUkRGIq8HP3sXZRecyk=;\n\tb=VEZVOx5eNAQcsz\n\tKhX6XtDYFVqr1I4o706oJkXB+0x5azNkcIIR+FKmXlqCMn5vGKVzZGuUSCIzNCAzn5jRd7e9gT8jA\n\tcFagsbBR49e/1Pr3RzU4VJOapa4DeqJwEGuTlT03+s34CVFTN4yoV16CXvOBR8K+yzfNNb0tuO7JJ\n\tTrYa2+Y+jJz90mwSOLJPK4irYh2Ly9d0AkE2lA1pxZGIiyKoZScK4638ujPMpOCxPd21yWtKxjpim\n\ttEm6T523dZyE9lL6uB4WHd7SrUbWgccEh2GetZrIsMEElWZOzBTydGgub+FCxQiPZRJ7ey/UuFRHD\n\tLasAGdTCmuZtYaBOHInA==;","X-Virus-Scanned":"Nedap ESD1 at mail.skyhub.de","Date":"Wed, 30 Aug 2017 19:54:06 +0200","From":"Borislav Petkov <bp@alien8.de>","To":"Jan Glauber <jglauber@cavium.com>","Subject":"Re: [RFC PATCH v9 1/7] edac: thunderx: Remove suspend/resume support","Message-ID":"<20170830175406.ygmathi3b5orzyqy@pd.tnic>","References":"<20170829131238.4988-1-jglauber@cavium.com>\n\t<20170829131238.4988-2-jglauber@cavium.com>","MIME-Version":"1.0","Content-Disposition":"inline","In-Reply-To":"<20170829131238.4988-2-jglauber@cavium.com>","User-Agent":"NeoMutt/20170113 (1.7.2)","X-CRM114-Version":"20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 ","X-CRM114-CacheID":"sfid-20170830_105443_119977_6E289477 ","X-CRM114-Status":"UNSURE (   9.58  )","X-CRM114-Notice":"Please train this message.","X-Spam-Score":"-1.9 (-)","X-Spam-Report":"SpamAssassin version 3.4.1 on bombadil.infradead.org summary:\n\tContent analysis details:   (-1.9 points)\n\tpts rule name              description\n\t---- ----------------------\n\t--------------------------------------------------\n\t-0.0 SPF_PASS               SPF: sender matches SPF record\n\t-1.9 BAYES_00               BODY: Bayes spam probability is 0 to 1%\n\t[score: 0.0000]","X-BeenThere":"linux-arm-kernel@lists.infradead.org","X-Mailman-Version":"2.1.21","Precedence":"list","List-Unsubscribe":"<http://lists.infradead.org/mailman/options/linux-arm-kernel>,\n\t<mailto:linux-arm-kernel-request@lists.infradead.org?subject=unsubscribe>","List-Archive":"<http://lists.infradead.org/pipermail/linux-arm-kernel/>","List-Post":"<mailto:linux-arm-kernel@lists.infradead.org>","List-Help":"<mailto:linux-arm-kernel-request@lists.infradead.org?subject=help>","List-Subscribe":"<http://lists.infradead.org/mailman/listinfo/linux-arm-kernel>,\n\t<mailto:linux-arm-kernel-request@lists.infradead.org?subject=subscribe>","Cc":"Mark Rutland <mark.rutland@arm.com>, David Daney <david.daney@cavium.com>,\n\tSuzuki K Poulose <Suzuki.Poulose@arm.com>,\n\tWill Deacon <will.deacon@arm.com>, \n\tlinux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org","Content-Type":"text/plain; charset=\"utf-8\"","Content-Transfer-Encoding":"base64","Sender":"\"linux-arm-kernel\" <linux-arm-kernel-bounces@lists.infradead.org>","Errors-To":"linux-arm-kernel-bounces+incoming-imx=patchwork.ozlabs.org@lists.infradead.org","List-Id":"linux-imx-kernel.lists.patchwork.ozlabs.org"}},{"id":1760793,"web_url":"http://patchwork.ozlabs.org/comment/1760793/","msgid":"<20170831084606.GA14296@hc>","list_archive_url":null,"date":"2017-08-31T08:46:06","subject":"Re: [RFC PATCH v9 1/7] edac: thunderx: Remove suspend/resume support","submitter":{"id":68474,"url":"http://patchwork.ozlabs.org/api/people/68474/","name":"Jan Glauber","email":"jan.glauber@caviumnetworks.com"},"content":"On Wed, Aug 30, 2017 at 07:54:06PM +0200, Borislav Petkov wrote:\n> On Tue, Aug 29, 2017 at 03:12:32PM +0200, Jan Glauber wrote:\n> > The memory controller on ThunderX/OcteonTX systems does not\n> > support power management. Therefore remove the suspend/resume\n> > callbacks.\n> > \n> > Signed-off-by: Jan Glauber <jglauber@cavium.com>\n> > ---\n> >  drivers/edac/thunderx_edac.c | 21 ---------------------\n> >  1 file changed, 21 deletions(-)\n> \n> Just when I thought I'd pick that one up now because it is removing\n> stuff:\n> \n> drivers/edac/thunderx_edac.c:817:14: error: ‘thunderx_lmc_suspend’ undeclared here (not in a function)\n>   .suspend  = thunderx_lmc_suspend,\n>               ^~~~~~~~~~~~~~~~~~~~\n> drivers/edac/thunderx_edac.c:818:14: error: ‘thunderx_lmc_resume’ undeclared here (not in a function)\n>   .resume   = thunderx_lmc_resume,\n>               ^~~~~~~~~~~~~~~~~~~\n> scripts/Makefile.build:308: recipe for target 'drivers/edac/thunderx_edac.o' failed\n> make[1]: *** [drivers/edac/thunderx_edac.o] Error 1\n> make[1]: *** Waiting for unfinished jobs....\n> Makefile:1682: recipe for target 'drivers/edac/' failed\n> make: *** [drivers/edac/] Error 2\n\nArgh... forgot to build test the single patches. \n\n> Please make sure you build and test every patch before submitting.\n> You're lucky I can at least build arm64 on my x86 workstation. :-)\n\nSorry for that. The whole series builds because I removed the suspend/resume\ncallbacks during the move to the soc driver.\n\n--Jan\n\n> Thx.\n> \n> -- \n> Regards/Gruss,\n>     Boris.\n> \n> Good mailing practices for 400: avoid top-posting and trim the reply.","headers":{"Return-Path":"<linux-arm-kernel-bounces+incoming-imx=patchwork.ozlabs.org@lists.infradead.org>","X-Original-To":"incoming-imx@patchwork.ozlabs.org","Delivered-To":"patchwork-incoming-imx@bilbo.ozlabs.org","Authentication-Results":["ozlabs.org;\n\tspf=none (mailfrom) smtp.mailfrom=lists.infradead.org\n\t(client-ip=65.50.211.133; helo=bombadil.infradead.org;\n\tenvelope-from=linux-arm-kernel-bounces+incoming-imx=patchwork.ozlabs.org@lists.infradead.org;\n\treceiver=<UNKNOWN>)","ozlabs.org; dkim=pass (2048-bit key;\n\tunprotected) header.d=lists.infradead.org\n\theader.i=@lists.infradead.org header.b=\"hSuEmkWf\"; \n\tdkim=fail reason=\"signature verification failed\" (2048-bit key;\n\tunprotected) header.d=infradead.org header.i=@infradead.org\n\theader.b=\"hqdqsm2U\"; \n\tdkim=fail reason=\"signature verification failed\" (1024-bit key;\n\tunprotected) header.d=CAVIUMNETWORKS.onmicrosoft.com\n\theader.i=@CAVIUMNETWORKS.onmicrosoft.com header.b=\"M5GMKnvn\"; \n\tdkim-atps=neutral","spf=none (sender IP is )\n\tsmtp.mailfrom=Jan.Glauber@cavium.com; "],"Received":["from bombadil.infradead.org (bombadil.infradead.org\n\t[65.50.211.133])\n\t(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256\n\tbits)) (No client certificate requested)\n\tby ozlabs.org (Postfix) with ESMTPS id 3xjcz129Fkz9s7G\n\tfor <incoming-imx@patchwork.ozlabs.org>;\n\tThu, 31 Aug 2017 19:49:17 +1000 (AEST)","from localhost ([127.0.0.1] helo=bombadil.infradead.org)\n\tby bombadil.infradead.org with esmtp (Exim 4.87 #1 (Red Hat Linux))\n\tid 1dnM66-0003Ji-8b; Thu, 31 Aug 2017 09:49:14 +0000","from merlin.infradead.org ([2001:8b0:10b:1231::1])\n\tby bombadil.infradead.org with esmtps (Exim 4.87 #1 (Red Hat Linux))\n\tid 1dnM64-0003JS-8J for linux-arm-kernel@bombadil.infradead.org;\n\tThu, 31 Aug 2017 09:49:12 +0000","from mail-bl2nam02on0088.outbound.protection.outlook.com\n\t([104.47.38.88] helo=NAM02-BL2-obe.outbound.protection.outlook.com)\n\tby merlin.infradead.org with esmtps (Exim 4.87 #1 (Red Hat Linux))\n\tid 1dnL7d-0005vi-6l for linux-arm-kernel@lists.infradead.org;\n\tThu, 31 Aug 2017 08:46:46 +0000","from hc (46.223.64.100) by SN2PR07MB2592.namprd07.prod.outlook.com\n\t(2603:10b6:804:7::22) with Microsoft SMTP Server (version=TLS1_2, \n\tcipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.13.10;\n\tThu, 31 Aug 2017 08:46:17 +0000"],"DKIM-Signature":["v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;\n\td=lists.infradead.org; s=bombadil.20170209; h=Sender:\n\tContent-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post:\n\tList-Archive:List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:References:\n\tMessage-ID:Subject:To:From:Date:Reply-To:Content-ID:Content-Description:\n\tResent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:\n\tList-Owner; bh=MDClocmgoqRwmalW8AXE13rUbGbVR556m7NvK9zggzU=;\n\tb=hSuEmkWfGo/J3T\n\t6LkxjDfX5nil9aTfEXoBOnimeKTybOjPptiyr+FtCK7czK4DVQY4rFVDM8fskbj81e0jeOwojhGXz\n\tuSiwPnhIEYdf+K46y7j7xNtEMToC05HRuosNPHuOHbNSgVTy2W7gOZFSO5ijF4o0dqQDyffrlHa/Q\n\ts4ChHr+dveCq6jGKN3jOf02t8Hf0EMwUDZ3xadXwn++1o3vppZEPMpfyek0aDk5R9wifYZjRl0+eh\n\te2ZnMZPTdWSczNxTFT78VTNCCzCJ6KzXm1LpQRQAunmtbsRXe9G380u/krV0Z/OmEEXpt5ukiPxLd\n\tVzuza5+VXbZjsABDoQMQ==;","v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;\n\td=infradead.org; s=merlin.20170209;\n\th=In-Reply-To:Content-Transfer-Encoding:\n\tContent-Type:MIME-Version:References:Message-ID:Subject:Cc:To:From:Date:\n\tSender:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From:\n\tResent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help:\n\tList-Unsubscribe:List-Subscribe:List-Post:List-Owner:List-Archive;\n\tbh=5WsYQMpos9FscEzTrbrq11Wb/ToZOxRujAEx5+w91FA=;\n\tb=hqdqsm2U5eYCJoLyg9ZlI92LbU\n\tKMmZzM/pR/3nkf2BkC68uR2/AiQ0E+ee+oHbuGTXKSAhiPZNj3swO2wvY5jgi1Tgo47qm2UlIeE/B\n\tOs/jUv1jNAkQt8YSIqoOFcBUAuhfHL6Y1m+vg+rZ07lHdN9Ee562cCBU9/QtKeU8XT7YFoeHJXqBT\n\t8Ep0wUMDKsk8nbPt6fsWGNssrwZ/wAWYx75pRZG2zYb7oGtHYvEVY4OOWePltiyHOSPt/7ea2DIbm\n\tMKXWJK9ZtZwTuir7Xmdq7VGM57iZL3q9/wBMTNedc93t84rCUQxnYeJKOV5yCbco2nq9tmg5xsdEG\n\tLCnqP4Tg==;","v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=CAVIUMNETWORKS.onmicrosoft.com; s=selector1-cavium-com;\n\th=From:Date:Subject:Message-ID:Content-Type:MIME-Version;\n\tbh=5WsYQMpos9FscEzTrbrq11Wb/ToZOxRujAEx5+w91FA=;\n\tb=M5GMKnvniSSgWDhxAinAbAajv9JJsmnYP2vG8jt3Uhjz1GScflBpCySwMa3AjRaHWXzjX6PCIzrc0aeOf7nAki/a6AmsIn2IKsfp/pL5LDNlzWYJak0a9v9gQRkPD9eSP1Oc1fdL9rIdxMeP0/XaPLTLKoX6StTUGeiIY+2W0uQ="],"Date":"Thu, 31 Aug 2017 10:46:06 +0200","From":"Jan Glauber <jan.glauber@caviumnetworks.com>","To":"Borislav Petkov <bp@alien8.de>","Subject":"Re: [RFC PATCH v9 1/7] edac: thunderx: Remove suspend/resume support","Message-ID":"<20170831084606.GA14296@hc>","References":"<20170829131238.4988-1-jglauber@cavium.com>\n\t<20170829131238.4988-2-jglauber@cavium.com>\n\t<20170830175406.ygmathi3b5orzyqy@pd.tnic>","MIME-Version":"1.0","Content-Disposition":"inline","In-Reply-To":"<20170830175406.ygmathi3b5orzyqy@pd.tnic>","User-Agent":"Mutt/1.5.21 (2010-09-15)","X-Originating-IP":"[46.223.64.100]","X-ClientProxiedBy":"AM3PR04CA0136.eurprd04.prod.outlook.com\n\t(2603:10a6:207::20)\n\tTo SN2PR07MB2592.namprd07.prod.outlook.com\n\t(2603:10b6:804:7::22)","X-MS-PublicTrafficType":"Email","X-MS-Office365-Filtering-Correlation-Id":"a60879e2-ac7f-498c-85ae-08d4f04cbfa1","X-Microsoft-Antispam":"UriScan:; BCL:0; PCL:0;\n\tRULEID:(300000500095)(300135000095)(300000501095)(300135300095)(22001)(300000502095)(300135100095)(2017030254152)(300000503095)(300135400095)(2017052603199)(201703131423075)(201703031133081)(201702281549075)(300000504095)(300135200095)(300000505095)(300135600095)(300000506095)(300135500095);\n\tSRVR:SN2PR07MB2592; ","X-Microsoft-Exchange-Diagnostics":["1; SN2PR07MB2592;\n\t3:Td+1aN3nzegwhN7jX52KKScfmXshduanRjHbe/4llJy7sjnRSBqZcIxhcMsGFMuerQGTg5+EwWwvNbkA8eu/LRi55dlS+WWJ/Sx+cW14MENJ3STFfOUGF831rqqp0ZqVv5JRCfwRI/fbR/PpdqqA4yfPNI4nDrBBkSfRydxk+JmIX6DjQbUYM3QjoPRCRJvXMcZkIb3kFiFRbngrsujK+CFQ+26O2ERT/rymco5yR7xHBQwhTjtgTZf4mIWEQepI;\n\t25:sdyKNMXkRUV8g/2sdWseGZMOYKDW89c4/Os42C1upncLAy/6ZygJIbUomZFYTbaAXL3loEDKoJzkX/TsIcY9O6QX6qYrrys48IQexU0Luf1x+umHNCPxGsuESOS1kokZyewX82pKL0bRaoQSXHasU+o34LvmPpLeqlkukc/jrXgw3sSszZ3+33F/LmS1+NrG0DbZN4ApDi+UN6LjM4mrBW65DeC1Y219CZqQop0kuYDV52c3cKmuwTTMtJm+dKYjtIEQQCFvQXBv/l5I1gXEso97DeWPM610IMPntTSGKFuA2Jnzj2OpQYCceQM7nxJok7Yw6M+H4tdQNVczjyAutg==;\n\t31:+YB2Zfs15/p0V1f+rELPVOMlaeMvp0+t3Jqh2pn/RBhoIf/8erevyvmEXfbOSnvL3x5T4W4R8rrkIgwqln/F0ZUQA4X326kC8GrFO05wkf1qjkFlykqFLX++3aG9rcMHHRsg9hLvNpsGFMkBf3PNOxKxBjaiwy1M/iyGq9EoEZ6udZM/nD638ysVQEGXvZ0maI+nCURpnKvGW+rmQOahjVOBlnJjNp5zeitKRt3a09s=","1; SN2PR07MB2592;\n\t20:srOzayBAEAMIj/U+eQfFQG9E0OroDXOqFoTvkLgqhccZfGYpSsnYKB81hFEneXK2pavl24aECyJEPA3Kw1krVintHasp4qmr8lTETuXODxx90gCwPPBm3c3t7Wrks1IB9kGthXcwtoQPXp7xux795IrZmbix6qPkboshLZcILkUcjT8FU2OQHcpLtinmHbnuIsTyAjJ/uzmmRIJ8ZlrVR1/3htgtkKmrXTpQI/d2dNPjdO+E454SVTablmTZgUFxFs6FHQsd/jr4LnBstPYW03O1bT/23fPM5R7ch3LxmQjOGEwPbRtaEqOTm1T5weosH+ZUEQEwiD+kqMAPM5Cf8oLmHbvqt5zytUcoN0chX/TWbCu9JdxqzYnoeiSbNfggWKBo3tk/cJrcbR6ET+UMJed4/zYuf8q/WGTAgIAe1omsjr+M8JQ+1kfz7n0LUPPNvBDsZ33WrByrhLASMZl1YrAxXFcRJeA6NZZyNJ1WszOclMIqiunGBqZs5c7o1K7XHeSBmwrSRQTA+Yh8Y5N25Cdp8zV7gubqgGC2j6EEvPpeuEHa72gvVO0kIFU+wQv2yU1fLNPXAV/KSpqY/FlkU57fM/blrbItB+ylGq40X/w=;\n\t4:OeYTcsGRraTUGbRw6Pf1MgRZN/Gk66GPPMRvjKgqdYCiSbfyIi/xmfb6XBH719OYXhaRMt3mbNQn5RThFQxk354XVMu2EP/wQDjPNfR+CyMkEkyaAH5z9FKXvpg5DXPs4doNV2rJ20+t0dMBBJssTEAcxxstKRZ9KQ3ZgXPC8xdcOpXUQ+BekhNL4uA3HRXVUKYZvpEr41JUMwbyTWJCWjOwenAhsP96vYIkw/bVr9hzmB/hBID7gyT5PgsEiz8B","=?utf-8?q?1=3BSN2PR07MB2592=3B23=3A15ND?=\n\t=?utf-8?q?3mHVXYZ493NMd2IB9TFJzliJBqzxFpYNtCjsNTRo7NpYkkfotDlfqfOz?=\n\t=?utf-8?q?JdgFgqw5nFDxp9ODXm6Dc64xAMv3v5PvfYiRjFFDwV0P23dTxmJ8LV/x?=\n\t=?utf-8?q?BS+56MkHo6m9XubBCkgUJkDHKOz/r3/Ot5uZdhnnCW3wam43/dqlH6cq?=\n\t=?utf-8?q?s4kbgMASZzHfkexp6DfnhMieGKlk5W3hHp9S+MqmP+nCD8n3Xj2JO724?=\n\t=?utf-8?q?rr39UpNPKTfPzI3NqsdhE/wtRIzBFTa3EBLR7dLpD1BN2KN6aoIbBayB?=\n\t=?utf-8?q?kiLrBKbUM8RPjC/R+ClTjMXNvAdZdISFxYR15Ws4W18Y5c9L72jp8rWX?=\n\t=?utf-8?q?3X8ZvA2lk+lbMDJcNEGfrmKxKfI4qWaC8NQzP18GRqHqcTT1PzIo73fy?=\n\t=?utf-8?q?VNqDJuAPuAjY2Du0zVniPdVY0aPih1QDGL17PQodvNr0fmGoYOVP+6D0?=\n\t=?utf-8?q?PDEBtagL9BxfvW7oBb+oINCRqQbEVKly5pdRmVoztldTbNc8Kyvy2ZAh?=\n\t=?utf-8?q?sEFhWEniO35p1NAtyTPe4giNkR4Gp0acMzw+7yQWVFIenedw823SQIKg?=\n\t=?utf-8?q?ess7Un8iv7jTpMHvdivQdP9rXHU7Q8a19Ft01TnESKOhT4JCBYclesVQ?=\n\t=?utf-8?q?5/8NWHDWqA1colH57gFoy3wiLmC6Faj2KH5SgXakXlmCKVvBt0X++RVX?=\n\t=?utf-8?q?9unQj0Q46BY4cbi0fzc5xiItJKh03iWDceYrKo9zR0kGT9wHxAhl5Tn7?=\n\t=?utf-8?q?yiMvnUny3zAoG5us5MyA8yFIR7obisB0vYqzzNTsndgQkJ21QneiunfQ?=\n\t=?utf-8?q?di5Yc2/3J4tl7937+Vbv2P5L4eF0Hdz2ZQIGY3VUvRePDe8jVdqXWhAM?=\n\t=?utf-8?q?L61hpWXbS2bWwMcsu8Qc/6IN5bov3TeSAHXWUhD68BNQvJ+9+EaFMRSC?=\n\t=?utf-8?q?9EqhUDiGciTl2LVe8KxEkcbXolN4ZxVjALfBDCwuTm9dozCQQE/dy2vr?=\n\t=?utf-8?q?oct1iBaZ9O7dplOKz9Jpt7TSWldSBQuW15aYL3Xr76qny/nbzV2/hR7u?=\n\t=?utf-8?q?cBoqS1CwdYHdYj7pbEZ8mFRbBCuSElPNCnye1iw7zzu1Z3pp7S8Iclc6?=\n\t=?utf-8?q?3HcaLdF28pSorDgQBZlAG9j0AFG+kJf6BgMx90NQqkCgyi1Bmt4shNKG?=\n\t=?utf-8?q?w4utkoo3z/xaAjE2pDyPCTADBF9siM9NS7aBGkiQBHmES1LSp/UwHzF7?=\n\t=?utf-8?q?qqfQsYBI4KZ0uxvN1ZAi+tZXzzgFaHwY2L419P+dDdJov2AW3ZCUpGV8?=\n\t=?utf-8?q?hBGsX2eZSm2HJcMy8na4eVXoRsVpN/vkPufNCgPszzATnOrLoWvj/je8?=\n\t=?utf-8?q?Li8TEVYzhA=3D=3D?=","1; SN2PR07MB2592;\n\t6:7IW9g0LWPjdgMFBBFqwreb1KHaapM+gtpgyREFzZ4AamXM6oN3LWxo/rax7jme8CGQ/X5aR+IiGOmcCMDAxnv5/T8CwrFxxebFcKW/DM28o0TgXK2bzGsTZ6KdS7C5NIGtX3mv5ccYI6+FU9mw5EfdtZmrmYKGbXoMJ5dIhCSgtsI0EUIdWw20RKHnOV4DkS2aBCmzA75GZUSYJzzOLjQukMu+zXbW9JXSDHD2EoiqW0fFeEDJ8jx3QVrKQWoNqYQ3OHqv8vjAtZfRWzQ0bzRul8WwrywbCkoVqc8sTVmVV4r9rhCa/QW+7PZwZ2Q3cX1uW3p944Jz+LZ1lKBnHkwg==;\n\t5:dbS/bEDxU0aQ1aaf6Dho7l4DTC5lvquLvEkHscD19KWHvVhNJzj0ixYuB1FchjIKwnJCB3b5U9yvatXE4U3aZciGHeMnLR4dGnbxV8vHejRh2q6XJCA1ykI2ivrY+txeRG2X+iEaCR2wzI9FCRb8NQ==;\n\t24:oGJwrckU9s1A6MGKuPo9c9NLzExEVdlkwdqLa70NM5cVc2hM6IwhaX3ZSa/PZ88BkE7qr6lYSAYKyGLyI2+cqQjHKMGn/ahC6bzGTVhNJ2M=;\n\t7:KVxaVKDpmf9PI8hDMEhTX5ELyZQw4A7dCV9z/ajvHbpKk8lJVt4881A3wA+/evWEgIDXJnh4XE/15DUiVQIJESJKnGLzEACKce5f+/DtHuvdP5pPEUP4am0Qw7qE8oKgtLAlGMKa9VAT7oMUkKItgaC8wVkOycNydmbZaMbi4xzIcuCCEL7MtoI8aKY/S9DBreIBz/z1GQBJ9DL6K8zhtxFwVnY4CHIsQK5iN9Sr4GU="],"X-MS-TrafficTypeDiagnostic":"SN2PR07MB2592:","X-Exchange-Antispam-Report-Test":"UriScan:;","X-Microsoft-Antispam-PRVS":"<SN2PR07MB2592A84E5C6DABE156B9D9B7919D0@SN2PR07MB2592.namprd07.prod.outlook.com>","X-Exchange-Antispam-Report-CFA-Test":"BCL:0; PCL:0;\n\tRULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(601004)(2401047)(5005006)(8121501046)(100000703101)(100105400095)(3002001)(10201501046)(93006095)(6041248)(20161123555025)(20161123562025)(20161123564025)(20161123560025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123558100)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095);\n\tSRVR:SN2PR07MB2592; BCL:0; PCL:0;\n\tRULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095);\n\tSRVR:SN2PR07MB2592; ","X-Forefront-PRVS":"04163EF38A","X-Forefront-Antispam-Report":"SFV:NSPM;\n\tSFS:(10009020)(6009001)(189002)(199003)(24454002)(229853002)(4326008)(6246003)(110136004)(107886003)(106356001)(6666003)(9686003)(2950100002)(42882006)(105586002)(6916009)(54906002)(55016002)(42186005)(6496005)(53936002)(5660300001)(50466002)(101416001)(33656002)(33716001)(54356999)(76176999)(50986999)(189998001)(66066001)(6116002)(47776003)(81166006)(81156014)(8676002)(2870700001)(3846002)(15650500001)(478600001)(1076002)(8936002)(2906002)(4001350100001)(97736004)(305945005)(23676002)(25786009)(83506001)(7736002)(68736007)(72206003)(18370500001)(217873001);\n\tDIR:OUT; SFP:1101; SCL:1; SRVR:SN2PR07MB2592; H:hc; FPR:; SPF:None;\n\tPTR:InfoNoRecords; MX:1; A:1; LANG:en; ","Received-SPF":"None (protection.outlook.com: cavium.com does not designate\n\tpermitted sender hosts)","SpamDiagnosticOutput":"1:99","SpamDiagnosticMetadata":"NSPM","X-OriginatorOrg":"caviumnetworks.com","X-MS-Exchange-CrossTenant-OriginalArrivalTime":"31 Aug 2017 08:46:17.4609\n\t(UTC)","X-MS-Exchange-CrossTenant-FromEntityHeader":"Hosted","X-MS-Exchange-CrossTenant-Id":"711e4ccf-2e9b-4bcf-a551-4094005b6194","X-MS-Exchange-Transport-CrossTenantHeadersStamped":"SN2PR07MB2592","X-Spam-Note":"CRM114 invocation failed","X-Spam-Score":"-1.9 (-)","X-Spam-Report":"SpamAssassin version 3.4.1 on merlin.infradead.org summary:\n\tContent analysis details:   (-1.9 points)\n\tpts rule name              description\n\t---- ----------------------\n\t--------------------------------------------------\n\t-0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at http://www.dnswl.org/,\n\tno trust [104.47.38.88 listed in list.dnswl.org]\n\t0.0 HEADER_FROM_DIFFERENT_DOMAINS From and EnvelopeFrom 2nd level\n\tmail domains are different\n\t-0.0 SPF_HELO_PASS          SPF: HELO matches SPF record\n\t-1.9 BAYES_00               BODY: Bayes spam probability is 0 to 1%\n\t[score: 0.0000]\n\t0.1 DKIM_SIGNED            Message has a DKIM or DK signature,\n\tnot necessarily valid\n\t-0.1 DKIM_VALID Message has at least one valid DKIM or DK signature\n\t-0.0 RCVD_IN_MSPIKE_H3      RBL: Good reputation (+3)\n\t[104.47.38.88 listed in wl.mailspike.net]\n\t-0.0 RCVD_IN_MSPIKE_WL      Mailspike good senders","X-BeenThere":"linux-arm-kernel@lists.infradead.org","X-Mailman-Version":"2.1.21","Precedence":"list","List-Unsubscribe":"<http://lists.infradead.org/mailman/options/linux-arm-kernel>,\n\t<mailto:linux-arm-kernel-request@lists.infradead.org?subject=unsubscribe>","List-Archive":"<http://lists.infradead.org/pipermail/linux-arm-kernel/>","List-Post":"<mailto:linux-arm-kernel@lists.infradead.org>","List-Help":"<mailto:linux-arm-kernel-request@lists.infradead.org?subject=help>","List-Subscribe":"<http://lists.infradead.org/mailman/listinfo/linux-arm-kernel>,\n\t<mailto:linux-arm-kernel-request@lists.infradead.org?subject=subscribe>","Cc":"Mark Rutland <mark.rutland@arm.com>, David Daney <david.daney@cavium.com>,\n\tSuzuki K Poulose <Suzuki.Poulose@arm.com>,\n\tWill Deacon <will.deacon@arm.com>, \n\tlinux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org","Content-Type":"text/plain; charset=\"utf-8\"","Content-Transfer-Encoding":"base64","Sender":"\"linux-arm-kernel\" <linux-arm-kernel-bounces@lists.infradead.org>","Errors-To":"linux-arm-kernel-bounces+incoming-imx=patchwork.ozlabs.org@lists.infradead.org","List-Id":"linux-imx-kernel.lists.patchwork.ozlabs.org"}},{"id":1760799,"web_url":"http://patchwork.ozlabs.org/comment/1760799/","msgid":"<20170831095746.GB15906@hc>","list_archive_url":null,"date":"2017-08-31T09:57:46","subject":"Re: [RFC PATCH v9 5/7] perf: cavium: Support memory controller PMU\n\tcounters","submitter":{"id":68474,"url":"http://patchwork.ozlabs.org/api/people/68474/","name":"Jan Glauber","email":"jan.glauber@caviumnetworks.com"},"content":"On Wed, Aug 30, 2017 at 10:54:03AM +0800, Zhangshaokun wrote:\n> Hi Jan,\n> \n> Some trivial things i noticed, please consider if you are glad.\n> \n> Thanks,\n> Shaokun\n\nHi Shaokun, thanks for the review.\n\n> On 2017/8/29 21:12, Jan Glauber wrote:\n> > Add support for the PMU counters on Cavium SOC memory controllers.\n> > \n> > This patch also adds generic functions to allow supporting more\n> > devices with PMU counters.\n> > \n> > Properties of the LMC PMU counters:\n> > - not stoppable\n> > - fixed purpose\n> > - read-only\n> > - one PCI device per memory controller\n> > \n> > Signed-off-by: Jan Glauber <jglauber@cavium.com>\n> > ---\n> >  drivers/perf/Kconfig            |   8 +\n> >  drivers/perf/Makefile           |   1 +\n> >  drivers/perf/cavium_pmu.c       | 445 ++++++++++++++++++++++++++++++++++++++++\n> >  drivers/soc/cavium/cavium_lmc.c |   4 +\n> >  include/linux/cpuhotplug.h      |   1 +\n> >  include/linux/soc/cavium/lmc.h  |   3 +\n> >  6 files changed, 462 insertions(+)\n> >  create mode 100644 drivers/perf/cavium_pmu.c\n> > \n> > diff --git a/drivers/perf/Kconfig b/drivers/perf/Kconfig\n> > index e5197ff..a787562 100644\n> > --- a/drivers/perf/Kconfig\n> > +++ b/drivers/perf/Kconfig\n> > @@ -43,4 +43,12 @@ config XGENE_PMU\n> >          help\n> >            Say y if you want to use APM X-Gene SoC performance monitors.\n> >  \n> > +config CAVIUM_PMU_LMC\n> > +\ttristate \"Cavium SOC memory controller PMU\"\n> > +\tdepends on ARCH_THUNDER && m\n> > +\tselect CAVIUM_LMC\n> > +\thelp\n> > +\t  Provides PMU counters for the memory controller on\n> > +\t  Cavium ThunderX or OcteonTX SOCs.\n> > +\n> >  endmenu\n> > diff --git a/drivers/perf/Makefile b/drivers/perf/Makefile\n> > index 6420bd4..077a15d 100644\n> > --- a/drivers/perf/Makefile\n> > +++ b/drivers/perf/Makefile\n> > @@ -3,3 +3,4 @@ obj-$(CONFIG_ARM_PMU_ACPI) += arm_pmu_acpi.o\n> >  obj-$(CONFIG_QCOM_L2_PMU)\t+= qcom_l2_pmu.o\n> >  obj-$(CONFIG_QCOM_L3_PMU) += qcom_l3_pmu.o\n> >  obj-$(CONFIG_XGENE_PMU) += xgene_pmu.o\n> > +obj-$(CONFIG_CAVIUM_PMU_LMC) += cavium_pmu.o\n> \n> Keep in alphabetic order?\n> \n\nOK.\n\n> > diff --git a/drivers/perf/cavium_pmu.c b/drivers/perf/cavium_pmu.c\n> > new file mode 100644\n> > index 0000000..bcdedaa\n> > --- /dev/null\n> > +++ b/drivers/perf/cavium_pmu.c\n> > @@ -0,0 +1,445 @@\n> > +/*\n> > + * Cavium ARM SOC \"uncore\" PMU counters\n> > + *\n> > + * This file is subject to the terms and conditions of the GNU General Public\n> > + * License.  See the file \"COPYING\" in the main directory of this archive\n> > + * for more details.\n> > + *\n> > + * Copyright Cavium, Inc. 2017\n> > + * Author(s): Jan Glauber <jan.glauber@cavium.com>\n> > + *\n> > + */\n> > +#include <linux/cpumask.h>\n> > +#include <linux/cpuhotplug.h>\n> > +#include <linux/io.h>\n> > +#include <linux/export.h>\n> \n> Keep the include header files in alphabetic order too?\n> \n> > +#include <linux/list.h>\n> > +#include <linux/module.h>\n> > +#include <linux/mutex.h>\n> > +#include <linux/pci.h>\n> > +#include <linux/perf_event.h>\n> > +#include <linux/slab.h>\n> > +#include <linux/soc/cavium/lmc.h>\n> > +\n> > +enum cvm_pmu_type {\n> > +\tCVM_PMU_LMC,\n> > +};\n> > +\n> > +/* maximum number of parallel hardware counters for all pmu types */\n> > +#define CVM_PMU_MAX_COUNTERS 64\n> > +\n> > +/* generic struct to cover the different pmu types */\n> > +struct cvm_pmu_dev {\n> > +\tstruct pmu pmu;\n> > +\tconst char *pmu_name;\n> \n> It seems that pmu_name is redundant since struct pmu has a name field,\n> Mark has mentioned it in HiSilicon uncore PMU driver, Link:\n> https://patchwork.kernel.org/patch/9861821/\n\nI don't get it. perf_pmu_register() just copies the char* from the\nargument into pmu->name. Somewhere the string must be allocated.\nThat's why I have cvm_pmu_dev->pmu_name.\n\n> > +\tbool (*event_valid)(u64);\n> > +\tvoid __iomem *map;\n> > +\tstruct pci_dev *pdev;\n> > +\tint num_counters;\n> > +\tstruct perf_event *events[CVM_PMU_MAX_COUNTERS];\n> > +\tstruct list_head entry;\n> > +\tstruct hlist_node cpuhp_node;\n> > +\tcpumask_t active_mask;\n> > +};\n> > +\n> > +static struct list_head cvm_pmu_lmcs;\n> > +static struct list_head cvm_pmu_tlks;\n> > +\n> > +/*\n> > + * Common Cavium PMU stuff\n> > + *\n> > + * Shared properties of the different PMU types:\n> > + * - all counters are 64 bit long\n> > + * - there are no overflow interrupts\n> > + * - all devices with PMU counters appear as PCI devices\n> > + *\n> > + * Counter control, access and device association depends on the\n> > + * PMU type.\n> > + */\n> > +\n> > +#define to_pmu_dev(x) container_of((x), struct cvm_pmu_dev, pmu)\n> > +\n> > +static int cvm_pmu_event_init(struct perf_event *event)\n> > +{\n> > +\tstruct hw_perf_event *hwc = &event->hw;\n> > +\tstruct cvm_pmu_dev *pmu_dev;\n> > +\tstruct perf_event *sibling;\n> > +\n> > +\tif (event->attr.type != event->pmu->type)\n> > +\t\treturn -ENOENT;\n> > +\n> > +\t/* we do not support sampling */\n> > +\tif (is_sampling_event(event))\n> > +\t\treturn -EINVAL;\n> > +\n> > +\t/* PMU counters do not support any these bits */\n> > +\tif (event->attr.exclude_user\t||\n> > +\t    event->attr.exclude_kernel\t||\n> > +\t    event->attr.exclude_host\t||\n> > +\t    event->attr.exclude_guest\t||\n> > +\t    event->attr.exclude_hv\t||\n> > +\t    event->attr.exclude_idle)\n> > +\t\treturn -EINVAL;\n> > +\n> > +\tpmu_dev = to_pmu_dev(event->pmu);\n> > +\tif (!pmu_dev->event_valid(event->attr.config))\n> > +\t\treturn -EINVAL;\n> > +\n> > +\t/*\n> > +\t * Forbid groups containing mixed PMUs, software events are acceptable.\n> > +\t */\n> > +\tif (event->group_leader->pmu != event->pmu &&\n> > +\t    !is_software_event(event->group_leader))\n> > +\t\treturn -EINVAL;\n> > +\n> > +\tlist_for_each_entry(sibling, &event->group_leader->sibling_list,\n> > +\t\t\t    group_entry)\n> > +\t\tif (sibling->pmu != event->pmu &&\n> > +\t\t    !is_software_event(sibling))\n> > +\t\t\treturn -EINVAL;\n> > +\n> > +\thwc->config = event->attr.config;\n> > +\thwc->idx = -1;\n> \n> Blank line?\n\nOK.\n\n> > +\treturn 0;\n> > +}\n> > +\n> > +static void cvm_pmu_read(struct perf_event *event)\n> > +{\n> > +\tstruct cvm_pmu_dev *pmu_dev = to_pmu_dev(event->pmu);\n> > +\tstruct hw_perf_event *hwc = &event->hw;\n> > +\tu64 prev, delta, new;\n> > +\n> > +again:\n> > +\tprev = local64_read(&hwc->prev_count);\n> > +\tnew = readq(hwc->event_base + pmu_dev->map);\n> > +\n> > +\tif (local64_cmpxchg(&hwc->prev_count, prev, new) != prev)\n> > +\t\tgoto again;\n> > +\n> > +\tdelta = new - prev;\n> > +\tlocal64_add(delta, &event->count);\n> > +}\n> > +\n> > +static void cvm_pmu_start(struct perf_event *event, int flags)\n> > +{\n> > +\tstruct cvm_pmu_dev *pmu_dev = to_pmu_dev(event->pmu);\n> > +\tstruct hw_perf_event *hwc = &event->hw;\n> > +\tu64 new;\n> > +\n> > +\tif (WARN_ON_ONCE(!(hwc->state & PERF_HES_STOPPED)))\n> > +\t\treturn;\n> > +\n> > +\tWARN_ON_ONCE(!(hwc->state & PERF_HES_UPTODATE));\n> > +\thwc->state = 0;\n> > +\n> > +\t/* update prev_count always in order support unstoppable counters */\n> > +\tnew = readq(hwc->event_base + pmu_dev->map);\n> > +\tlocal64_set(&hwc->prev_count, new);\n> > +\n> > +\tperf_event_update_userpage(event);\n> > +}\n> > +\n> > +static void cvm_pmu_stop(struct perf_event *event, int flags)\n> > +{\n> > +\tstruct hw_perf_event *hwc = &event->hw;\n> > +\n> > +\tWARN_ON_ONCE(hwc->state & PERF_HES_STOPPED);\n> > +\thwc->state |= PERF_HES_STOPPED;\n> > +\n> > +\tif ((flags & PERF_EF_UPDATE) && !(hwc->state & PERF_HES_UPTODATE)) {\n> > +\t\tcvm_pmu_read(event);\n> > +\t\thwc->state |= PERF_HES_UPTODATE;\n> > +\t}\n> > +}\n> > +\n> > +static int cvm_pmu_add(struct perf_event *event, int flags, u64 config_base,\n> > +\t\t       u64 event_base)\n> > +{\n> > +\tstruct cvm_pmu_dev *pmu_dev = to_pmu_dev(event->pmu);\n> > +\tstruct hw_perf_event *hwc = &event->hw;\n> > +\n> > +\tif (!cmpxchg(&pmu_dev->events[hwc->config], NULL, event))\n> > +\t\thwc->idx = hwc->config;\n> > +\n> > +\tif (hwc->idx == -1)\n> > +\t\treturn -EBUSY;\n> > +\n> > +\thwc->config_base = config_base;\n> > +\thwc->event_base = event_base;\n> > +\thwc->state = PERF_HES_UPTODATE | PERF_HES_STOPPED;\n> > +\n> > +\tif (flags & PERF_EF_START)\n> > +\t\tpmu_dev->pmu.start(event, PERF_EF_RELOAD);\n> > +\n> > +\treturn 0;\n> > +}\n> > +\n> > +static void cvm_pmu_del(struct perf_event *event, int flags)\n> > +{\n> > +\tstruct cvm_pmu_dev *pmu_dev = to_pmu_dev(event->pmu);\n> > +\tstruct hw_perf_event *hwc = &event->hw;\n> > +\tint i;\n> > +\n> > +\tevent->pmu->stop(event, PERF_EF_UPDATE);\n> > +\n> > +\t/*\n> > +\t * For programmable counters we need to check where we installed it.\n> > +\t * To keep this function generic always test the more complicated\n> > +\t * case (free running counters won't need the loop).\n> > +\t */\n> > +\tfor (i = 0; i < pmu_dev->num_counters; i++)\n> > +\t\tif (cmpxchg(&pmu_dev->events[i], event, NULL) == event)\n> > +\t\t\tbreak;\n> > +\n> > +\tperf_event_update_userpage(event);\n> > +\thwc->idx = -1;\n> > +}\n> > +\n> > +static ssize_t cvm_pmu_event_sysfs_show(struct device *dev,\n> > +\t\t\t\t\tstruct device_attribute *attr,\n> > +\t\t\t\t\tchar *page)\n> > +{\n> > +\tstruct perf_pmu_events_attr *pmu_attr =\n> > +\t\tcontainer_of(attr, struct perf_pmu_events_attr, attr);\n> > +\n> > +\tif (pmu_attr->event_str)\n> > +\t\treturn sprintf(page, \"%s\", pmu_attr->event_str);\n> > +\n> > +\treturn 0;\n> > +}\n> > +\n> > +/*\n> > + * The pmu events are independent from CPUs. Provide a cpumask\n> > + * nevertheless to prevent perf from adding the event per-cpu and just\n> > + * set the mask to one online CPU. Use the same cpumask for all \"uncore\"\n> > + * devices.\n> > + *\n> > + * There is a performance penalty for accessing a device from a CPU on\n> > + * another socket, but we do not care.\n> > + */\n> > +static int cvm_pmu_offline_cpu(unsigned int old_cpu, struct hlist_node *node)\n> > +{\n> > +\tstruct cvm_pmu_dev *pmu_dev;\n> > +\tint new_cpu;\n> \n> unsigned int?\n\nI don't think we gonna overflow signed int soon, or? \n\n> > +\n> > +\tpmu_dev = hlist_entry_safe(node, struct cvm_pmu_dev, cpuhp_node);\n> > +\tif (!cpumask_test_and_clear_cpu(old_cpu, &pmu_dev->active_mask))\n> > +\t\treturn 0;\n> > +\n> > +\tnew_cpu = cpumask_any_but(cpu_online_mask, old_cpu);\n> > +\tif (new_cpu >= nr_cpu_ids)\n> > +\t\treturn 0;\n> > +\n> > +\tperf_pmu_migrate_context(&pmu_dev->pmu, old_cpu, new_cpu);\n> > +\tcpumask_set_cpu(new_cpu, &pmu_dev->active_mask);\n> > +\n> > +\treturn 0;\n> > +}\n> > +\n> > +static ssize_t cvm_pmu_attr_show_cpumask(struct device *dev,\n> > +\t\t\t\t\t struct device_attribute *attr,\n> > +\t\t\t\t\t char *buf)\n> > +{\n> > +\tstruct pmu *pmu = dev_get_drvdata(dev);\n> > +\tstruct cvm_pmu_dev *pmu_dev = container_of(pmu, struct cvm_pmu_dev, pmu);\n> > +\n> > +\treturn cpumap_print_to_pagebuf(true, buf, &pmu_dev->active_mask);\n> > +}\n> > +\n> > +static DEVICE_ATTR(cpumask, S_IRUGO, cvm_pmu_attr_show_cpumask, NULL);\n> > +\n> > +static struct attribute *cvm_pmu_attrs[] = {\n> > +\t&dev_attr_cpumask.attr,\n> > +\tNULL,\n> > +};\n> > +\n> > +static struct attribute_group cvm_pmu_attr_group = {\n> > +\t.attrs = cvm_pmu_attrs,\n> > +};\n> > +\n> > +/*\n> > + * LMC (memory controller) counters:\n> > + * - not stoppable, always on, read-only\n> > + * - one PCI device per memory controller\n> > + */\n> > +#define LMC_CONFIG_OFFSET\t\t0x188\n> > +#define LMC_CONFIG_RESET_BIT\t\tBIT(17)\n> > +\n> > +/* LMC events */\n> > +#define LMC_EVENT_IFB_CNT\t\t0x1d0\n> > +#define LMC_EVENT_OPS_CNT\t\t0x1d8\n> > +#define LMC_EVENT_DCLK_CNT\t\t0x1e0\n> > +#define LMC_EVENT_BANK_CONFLICT1\t0x360\n> > +#define LMC_EVENT_BANK_CONFLICT2\t0x368\n> > +\n> > +#define CVM_PMU_LMC_EVENT_ATTR(_name, _id)\t\t\t\t\t\t\\\n> > +\t&((struct perf_pmu_events_attr[]) {\t\t\t\t\t\t\\\n> > +\t\t{\t\t\t\t\t\t\t\t\t\\\n> > +\t\t\t__ATTR(_name, S_IRUGO, cvm_pmu_event_sysfs_show, NULL),\t\t\\\n> > +\t\t\t_id,\t\t\t\t\t\t\t\t\\\n> > +\t\t\t\"lmc_event=\" __stringify(_id),\t\t\t\t\t\\\n> > +\t\t}\t\t\t\t\t\t\t\t\t\\\n> > +\t})[0].attr.attr\n> > +\n> > +/* map counter numbers to register offsets */\n> > +static int lmc_events[] = {\n> \n> Add const?\n\nYes.\n\n> > +\tLMC_EVENT_IFB_CNT,\n> > +\tLMC_EVENT_OPS_CNT,\n> > +\tLMC_EVENT_DCLK_CNT,\n> > +\tLMC_EVENT_BANK_CONFLICT1,\n> > +\tLMC_EVENT_BANK_CONFLICT2,\n> > +};\n> > +\n> > +static int cvm_pmu_lmc_add(struct perf_event *event, int flags)\n> > +{\n> > +\tstruct hw_perf_event *hwc = &event->hw;\n> > +\n> > +\treturn cvm_pmu_add(event, flags, LMC_CONFIG_OFFSET,\n> > +\t\t\t   lmc_events[hwc->config]);\n> > +}\n> > +\n> > +PMU_FORMAT_ATTR(lmc_event, \"config:0-2\");\n> > +\n> > +static struct attribute *cvm_pmu_lmc_format_attr[] = {\n> > +\t&format_attr_lmc_event.attr,\n> > +\tNULL,\n> > +};\n> > +\n> > +static struct attribute_group cvm_pmu_lmc_format_group = {\n> > +\t.name = \"format\",\n> > +\t.attrs = cvm_pmu_lmc_format_attr,\n> > +};\n> > +\n> > +static struct attribute *cvm_pmu_lmc_events_attr[] = {\n> > +\tCVM_PMU_LMC_EVENT_ATTR(ifb_cnt,\t\t0),\n> > +\tCVM_PMU_LMC_EVENT_ATTR(ops_cnt,\t\t1),\n> > +\tCVM_PMU_LMC_EVENT_ATTR(dclk_cnt,\t2),\n> > +\tCVM_PMU_LMC_EVENT_ATTR(bank_conflict1,\t3),\n> > +\tCVM_PMU_LMC_EVENT_ATTR(bank_conflict2,\t4),\n> > +\tNULL,\n> > +};\n> > +\n> > +static struct attribute_group cvm_pmu_lmc_events_group = {\n> > +\t.name = \"events\",\n> > +\t.attrs = cvm_pmu_lmc_events_attr,\n> > +};\n> > +\n> > +static const struct attribute_group *cvm_pmu_lmc_attr_groups[] = {\n> > +\t&cvm_pmu_attr_group,\n> > +\t&cvm_pmu_lmc_format_group,\n> > +\t&cvm_pmu_lmc_events_group,\n> > +\tNULL,\n> > +};\n> > +\n> > +static bool cvm_pmu_lmc_event_valid(u64 config)\n> > +{\n> > +\treturn (config < ARRAY_SIZE(lmc_events));\n> > +}\n> > +\n> > +int cvm_lmc_pmu_probe(struct pci_dev *pdev, const struct pci_device_id *ent)\n> > +{\n> > +\tstruct cvm_pmu_dev *next, *lmc;\n> > +\tint nr = 0, ret = -ENOMEM;\n> > +\n> > +\tlmc = kzalloc(sizeof(*lmc), GFP_KERNEL);\n> \n> How about use devm_kzalloc?\n\nI've not used devm_kzalloc before as I didn't have a traditional device\nprobe/remove with the previous versions. I'm not sure it would work now,\nbut I'll give it a try as devm_ is really great.\n\n> > +\tif (!lmc)\n> > +\t\treturn -ENOMEM;\n> > +\n> > +\tlmc->map = ioremap(pci_resource_start(pdev, 0),\n> > +\t\t\t   pci_resource_len(pdev, 0));\n> > +\tif (!lmc->map)\n> > +\t\tgoto fail_ioremap;\n> > +\n> > +\tlist_for_each_entry(next, &cvm_pmu_lmcs, entry)\n> > +\t\tnr++;\n> > +\tlmc->pmu_name = kasprintf(GFP_KERNEL, \"lmc%d\", nr);\n> \n> Use devm_kasprintf, simplify fail handle and memory free?\n> \n> > +\tif (!lmc->pmu_name)\n> > +\t\tgoto fail_kasprintf;\n> > +\n> > +\tlmc->pdev = pdev;\n> > +\tlmc->num_counters = ARRAY_SIZE(lmc_events);\n> > +\tlmc->pmu = (struct pmu) {\n> > +\t\t.task_ctx_nr    = perf_invalid_context,\n> > +\t\t.event_init\t= cvm_pmu_event_init,\n> > +\t\t.add\t\t= cvm_pmu_lmc_add,\n> > +\t\t.del\t\t= cvm_pmu_del,\n> > +\t\t.start\t\t= cvm_pmu_start,\n> > +\t\t.stop\t\t= cvm_pmu_stop,\n> > +\t\t.read\t\t= cvm_pmu_read,\n> > +\t\t.attr_groups\t= cvm_pmu_lmc_attr_groups,\n> > +\t};\n> > +\n> > +\tcpuhp_state_add_instance_nocalls(CPUHP_AP_PERF_ARM_CVM_ONLINE,\n> > +\t\t\t\t\t &lmc->cpuhp_node);\n> > +\n> > +\t/*\n> > +\t * perf PMU is CPU dependent so pick a random CPU and migrate away\n> > +\t * if it goes offline.\n> > +\t */\n> > +\tcpumask_set_cpu(smp_processor_id(), &lmc->active_mask);\n> > +\n> > +\tlist_add(&lmc->entry, &cvm_pmu_lmcs);\n> > +\tlmc->event_valid = cvm_pmu_lmc_event_valid;\n> > +\n> > +\tret = perf_pmu_register(&lmc->pmu, lmc->pmu_name, -1);\n> > +\tif (ret)\n> > +\t\tgoto fail_pmu;\n> > +\n> > +\tdev_info(&pdev->dev, \"Enabled %s PMU with %d counters\\n\",\n> > +\t\t lmc->pmu_name, lmc->num_counters);\n> \n> Blank line?\n\nOK\n\n> > +\treturn 0;\n> > +\n> > +fail_pmu:\n> > +\tkfree(lmc->pmu_name);\n> > +\tcpuhp_state_remove_instance(CPUHP_AP_PERF_ARM_CVM_ONLINE,\n> > +\t\t\t\t    &lmc->cpuhp_node);\n> > +fail_kasprintf:\n> > +\tiounmap(lmc->map);\n> > +fail_ioremap:\n> > +\tkfree(lmc);\n> > +\treturn ret;\n> > +}\n> > +EXPORT_SYMBOL_GPL(cvm_lmc_pmu_probe);\n> > +\n> > +void cvm_lmc_pmu_remove(struct pci_dev *pdev)\n> > +{\n> > +\tstruct list_head *l, *tmp;\n> > +\tstruct cvm_pmu_dev *lmc;\n> > +\n> > +\tlist_for_each_safe(l, tmp, &cvm_pmu_lmcs) {\n> > +\t\tlmc = list_entry(l, struct cvm_pmu_dev, entry);\n> > +\t\tif (pdev != lmc->pdev)\n> > +\t\t\tcontinue;\n> > +\n> > +\t\tperf_pmu_unregister(&lmc->pmu);\n> > +\t\tiounmap(lmc->map);\n> > +\t\tcpuhp_state_remove_instance(CPUHP_AP_PERF_ARM_CVM_ONLINE,\n> > +\t\t\t\t\t    &lmc->cpuhp_node);\n> > +\t\tlist_del(&lmc->entry);\n> > +\t\tkfree(lmc->pmu_name);\n> > +\t\tkfree(lmc);\n> > +\t}\n> > +}\n> > +EXPORT_SYMBOL_GPL(cvm_lmc_pmu_remove);\n> > +\n> > +static int __init cvm_pmu_init(void)\n> > +{\n> > +\tINIT_LIST_HEAD(&cvm_pmu_lmcs);\n> > +\tINIT_LIST_HEAD(&cvm_pmu_tlks);\n> > +\n> > +\treturn cpuhp_setup_state_multi(CPUHP_AP_PERF_ARM_CVM_ONLINE,\n> > +\t\t\t\t       \"perf/arm/cvm:online\", NULL,\n> > +\t\t\t\t       cvm_pmu_offline_cpu);\n> > +}\n> > +\n> > +static void __exit cvm_pmu_exit(void)\n> > +{\n> > +\tcpuhp_remove_multi_state(CPUHP_AP_PERF_ARM_CVM_ONLINE);\n> > +}\n> > +\n> > +module_init(cvm_pmu_init);\n> > +module_exit(cvm_pmu_exit);\n> > +\n> > +MODULE_LICENSE(\"GPL v2\");\n> > +MODULE_AUTHOR(\"Cavium, Inc.\");\n> > +MODULE_DESCRIPTION(\"PMU Driver for Cavium ThunderX SOC\");\n> > diff --git a/drivers/soc/cavium/cavium_lmc.c b/drivers/soc/cavium/cavium_lmc.c\n> > index 87248e8..d21d59c 100644\n> > --- a/drivers/soc/cavium/cavium_lmc.c\n> > +++ b/drivers/soc/cavium/cavium_lmc.c\n> > @@ -17,6 +17,8 @@\n> >  static int cvm_lmc_probe(struct pci_dev *pdev,\n> >  \t\t\t const struct pci_device_id *ent)\n> >  {\n> > +\tif (IS_ENABLED(CONFIG_CAVIUM_PMU_LMC))\n> > +\t\tcvm_lmc_pmu_probe(pdev, ent);\n> >  \tif (IS_ENABLED(CONFIG_EDAC_THUNDERX))\n> >  \t\tthunderx_edac_lmc_probe(pdev, ent);\n> >  \treturn 0;\n> > @@ -24,6 +26,8 @@ static int cvm_lmc_probe(struct pci_dev *pdev,\n> >  \n> >  static void cvm_lmc_remove(struct pci_dev *pdev)\n> >  {\n> > +\tif (IS_ENABLED(CONFIG_CAVIUM_PMU_LMC))\n> > +\t\tcvm_lmc_pmu_remove(pdev);\n> >  \tif (IS_ENABLED(CONFIG_EDAC_THUNDERX))\n> >  \t\tthunderx_edac_lmc_remove(pdev);\n> >  }\n> > diff --git a/include/linux/cpuhotplug.h b/include/linux/cpuhotplug.h\n> > index 82b30e6..ca84ac8 100644\n> > --- a/include/linux/cpuhotplug.h\n> > +++ b/include/linux/cpuhotplug.h\n> > @@ -139,6 +139,7 @@ enum cpuhp_state {\n> >  \tCPUHP_AP_PERF_ARM_QCOM_L3_ONLINE,\n> >  \tCPUHP_AP_WORKQUEUE_ONLINE,\n> >  \tCPUHP_AP_RCUTREE_ONLINE,\n> > +\tCPUHP_AP_PERF_ARM_CVM_ONLINE,\n> \n> Alphabetic order?\n\nThese don't look alphabetically ordered to me.\n\nthanks, Jan\n\n> \n> >  \tCPUHP_AP_ONLINE_DYN,\n> >  \tCPUHP_AP_ONLINE_DYN_END\t\t= CPUHP_AP_ONLINE_DYN + 30,\n> >  \tCPUHP_AP_X86_HPET_ONLINE,\n> > diff --git a/include/linux/soc/cavium/lmc.h b/include/linux/soc/cavium/lmc.h\n> > index 336f467..e5ad650 100644\n> > --- a/include/linux/soc/cavium/lmc.h\n> > +++ b/include/linux/soc/cavium/lmc.h\n> > @@ -3,6 +3,9 @@\n> >  \n> >  #include <linux/pci.h>\n> >  \n> > +int cvm_lmc_pmu_probe(struct pci_dev *pdev, const struct pci_device_id *ent);\n> > +void cvm_lmc_pmu_remove(struct pci_dev *pdev);\n> > +\n> >  int thunderx_edac_lmc_probe(struct pci_dev *pdev, const struct pci_device_id *ent);\n> >  void thunderx_edac_lmc_remove(struct pci_dev *pdev);\n> >  \n> >","headers":{"Return-Path":"<linux-arm-kernel-bounces+incoming-imx=patchwork.ozlabs.org@lists.infradead.org>","X-Original-To":"incoming-imx@patchwork.ozlabs.org","Delivered-To":"patchwork-incoming-imx@bilbo.ozlabs.org","Authentication-Results":["ozlabs.org;\n\tspf=none (mailfrom) smtp.mailfrom=lists.infradead.org\n\t(client-ip=65.50.211.133; helo=bombadil.infradead.org;\n\tenvelope-from=linux-arm-kernel-bounces+incoming-imx=patchwork.ozlabs.org@lists.infradead.org;\n\treceiver=<UNKNOWN>)","ozlabs.org; dkim=pass (2048-bit key;\n\tunprotected) header.d=lists.infradead.org\n\theader.i=@lists.infradead.org header.b=\"RQmqQJGh\"; \n\tdkim=fail reason=\"signature verification failed\" (1024-bit key;\n\tunprotected) header.d=CAVIUMNETWORKS.onmicrosoft.com\n\theader.i=@CAVIUMNETWORKS.onmicrosoft.com header.b=\"Y2P/f8AL\"; \n\tdkim-atps=neutral","spf=none (sender IP is )\n\tsmtp.mailfrom=Jan.Glauber@cavium.com; "],"Received":["from bombadil.infradead.org (bombadil.infradead.org\n\t[65.50.211.133])\n\t(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256\n\tbits)) (No client certificate requested)\n\tby ozlabs.org (Postfix) with ESMTPS id 3xjdBQ0Wcsz9sPt\n\tfor <incoming-imx@patchwork.ozlabs.org>;\n\tThu, 31 Aug 2017 19:59:10 +1000 (AEST)","from localhost ([127.0.0.1] helo=bombadil.infradead.org)\n\tby bombadil.infradead.org with esmtp (Exim 4.87 #1 (Red Hat Linux))\n\tid 1dnMFe-0001Ix-Fl; Thu, 31 Aug 2017 09:59:06 +0000","from mail-bl2nam02on0060.outbound.protection.outlook.com\n\t([104.47.38.60] helo=NAM02-BL2-obe.outbound.protection.outlook.com)\n\tby bombadil.infradead.org with esmtps (Exim 4.87 #1 (Red Hat Linux))\n\tid 1dnMF0-0000iY-Ib for linux-arm-kernel@lists.infradead.org;\n\tThu, 31 Aug 2017 09:58:49 +0000","from hc (88.67.130.225) by CO2PR07MB2583.namprd07.prod.outlook.com\n\t(10.166.201.22) with Microsoft SMTP Server (version=TLS1_2,\n\tcipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.1.1385.9;\n\tThu, 31 Aug 2017 09:57:59 +0000"],"DKIM-Signature":["v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;\n\td=lists.infradead.org; s=bombadil.20170209; h=Sender:\n\tContent-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post:\n\tList-Archive:List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:References:\n\tMessage-ID:Subject:To:From:Date:Reply-To:Content-ID:Content-Description:\n\tResent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:\n\tList-Owner; bh=h8xmp5jO8vRSv5ruEBayDGz3hIHDUnjcsZFHFj0feYU=;\n\tb=RQmqQJGh/lzt4O\n\tQ+wP7GPfm+5jMq5g11MPQ7f+INVHHw6tjn/IhZps49E5WNFYDsLwACrB5/SuUf+uHNJmFFUdvuhVF\n\tmYwGwZBHrxTOI7yoStDk00GFUrgdc+slAnKh7xpysBP13iCJjakqMpDLgzqt+up72F5yEIArplV+Y\n\tuwos60suHOde1Z1LLzvaMwLRibL7obNy2DbfbnHhOiSfbFv2wv+4MSzTzO7U6+FR7GC0AMPPn+HBU\n\tZ/MNmzazEBZkMlgJ4VnCjGdLVFUXIM40V0aj0WCKOZQ7/ZyGiikIOy/nv+VKV9YUmW5j374m9DMv+\n\t8oDYc3dnMJ75KkqCEPCw==;","v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=CAVIUMNETWORKS.onmicrosoft.com; s=selector1-cavium-com;\n\th=From:Date:Subject:Message-ID:Content-Type:MIME-Version;\n\tbh=ykoNakZeaMkRYNKz0k7v57DWpcp4NTvMxuiDbLfaWfM=;\n\tb=Y2P/f8ALId16SgMuaaw4sCVpWgd6JiQV1KQI/g/x6Kq2BpVN96xg7BIYyw8TAT3FuI2GTSFCnwhzTvaKkAUN6aMbvdC1QlkGlj0xJPdYF72YKMKoqlpD8ccPY/L02dVF9ouMpUujjrzc4cYjJi8kGVRFqXBB9oBilrBJl7G1WWU="],"Date":"Thu, 31 Aug 2017 11:57:46 +0200","From":"Jan Glauber <jan.glauber@caviumnetworks.com>","To":"Zhangshaokun <zhangshaokun@hisilicon.com>","Subject":"Re: [RFC PATCH v9 5/7] perf: cavium: Support memory controller PMU\n\tcounters","Message-ID":"<20170831095746.GB15906@hc>","References":"<20170829131238.4988-1-jglauber@cavium.com>\n\t<20170829131238.4988-6-jglauber@cavium.com>\n\t<a89f597e-885d-a8bd-f6ce-452d7025cb20@hisilicon.com>","MIME-Version":"1.0","Content-Disposition":"inline","In-Reply-To":"<a89f597e-885d-a8bd-f6ce-452d7025cb20@hisilicon.com>","User-Agent":"Mutt/1.5.21 (2010-09-15)","X-Originating-IP":"[88.67.130.225]","X-ClientProxiedBy":"HE1PR0202CA0004.eurprd02.prod.outlook.com (10.168.182.14)\n\tTo CO2PR07MB2583.namprd07.prod.outlook.com (10.166.201.22)","X-MS-PublicTrafficType":"Email","X-MS-Office365-Filtering-Correlation-Id":"e8440762-8a13-442a-51f7-08d4f056c46c","X-Microsoft-Antispam":"UriScan:; BCL:0; PCL:0;\n\tRULEID:(300000500095)(300135000095)(300000501095)(300135300095)(22001)(300000502095)(300135100095)(2017030254152)(300000503095)(300135400095)(2017052603199)(201703131423075)(201703031133081)(201702281549075)(300000504095)(300135200095)(300000505095)(300135600095)(300000506095)(300135500095);\n\tSRVR:CO2PR07MB2583; ","X-Microsoft-Exchange-Diagnostics":["1; CO2PR07MB2583;\n\t3:5AKMjuopHKfunxQORL1gPNjwGpeDFx26Dn5mkiq0sLZiydo+YHghPZ9cvUmexQ0q5XTV0mgaYLdkRnB/Ei78xcg7ARXlcxY3/5yTj7N9osOz9c8oUrKJUQmcYpOtjfwuwtu2caS+CA8IZ8hKThUVA8XIB7HdBeHXfqKurMklYigcyStLTaUM3LfHl5muRH+9DpqmmX7+8UyvrnkxlcFL9dQPSsXHHoz6LdSdPxh2z8ZQof6QbAHtcbwadjiuWvif;\n\t25:ovmIgQr1egi4oz4vq1OvNbys3lL+kGpKfZr1spnoTzmQ0L57ur/omiaM148AOCgSBP3jxxlOEE65aZtW5iPvU0JKtUF9fsq4pupY0BaHtV37WCscLLoais0KF/Xrsz58TYIqAKMNYqznHPNrv60+LzS55rXNktpnwiKdjxme5PdF9YyDYGJeq0QLpEuTA0thIyPEDRtjWr4nZz/9IgYidi7xFxZFeKHM8cnTMkEJkLr2UE5CcjYiuZ8fAEMvcVPoI8L14mCTlld0pRExFBjIUJA+In8WXWLxHqrsEEFwowV5Mvn/hNBx2nrhuUJjFtK4VfwapwUSvzEWTuycSpX7IQ==;\n\t31:iou6eBtz/gSw3SYUGCco7rrxWbodkLM3NpjrUZmYXPtEf7JgTwn7Yh3TxFSZDE0tAOO4ujSVGWuIJcKV2SVgGFRMk/KkYVyNcHczqe9gtLcFayqgWUP0twQEq+PQ7rQ7kavd93QcZueX/NLJkFKugBeN1KG0l3Vh7L7400mPWfVdFCULAA1j6yjgNBMSA1Xe6rHixMVMCt/cxumw4LPhJrXOfN6rhecxMVh7kTej3mg=","1; CO2PR07MB2583;\n\t20:cGBvE33PL9EvVI9p9kN+74OYuMlmDIn6QbIPPrE7otIjnDg+VJrbLPFpDtCbWS5veXXuhc3Gsyqs9kFzd1WKc/NSZ+fxydd9PPwhddZA9AJjORNJImi4SB04fTBlCLaFR/9J9AQ730/xFTa4an9s21zNYlnNBRnS3dnFmOSfllIeAizw2LkBulwsvZhFRS94Cdh9NSh0jrX+o2iyG+VXKk/URbEAq6i4+XukBBZNHHH2NR+5cANDJx0cyQlBTKKqudnlUX9jkbp+PAShCs6dQ7d2sjZQrjpA8AtUmnvNTfQmD4Wd4bNWsKwAJZXTDbWiZ60cCJCQdKoJkM7KqGi36Im+cB8uhEC1q5zMv9qSFph+M12DbfXcuRAy87k+6CE4d3AEc99OjEfI78JJbelfI1zkRikN14RGMEW1Yk8jB6tH5osaBL7TA1vzCHfcGk0BSkFCExb6vQPEEZzBPonBmgAtx0BtoXsUEd+C3X9yBqXMxN0X+jJJCd3g9xS4I9/qxMKQ9psnUVBR/SWkHv75+ujUYMBTX/rTuJOAWlVgnonuQ0RLI8OHLWZZ1rFJCNhEMMxIVbI9vci31gcOvYycpOX0epRRpqkejSFtpmB13Gw=;\n\t4:kqQcV79KOY6bxvFrbKVXm+Uj2vTBazy7n9AcyMunTqcKdSmflQ1Q+viXupnXISBnZkpttGQx4IhbVY/uMuC3M/90HoODb9tEtpeaIPgqtFk0H4OYXp26dGbY72gAqLEDgIa/8x2tc88B89+wZ+P+812Dw04ND0ac/oZrGY403yJXVrNEU930g7sAbEG9kiYcqchSwCwHB6gviH54DkrEwd0wsu5jFQhHsqTGdN7q/uSP+lZvG6pNAE7q/rrMXmt9Yzt8pjp0LblQ15scpNxUGpplY8U5/lCUotXkigkOU6I=","=?us-ascii?Q?1; CO2PR07MB2583;\n\t23:VXprmBvVeW5oMDA9rI4Pq384+lKXwum73k7pnce2I?=\n\tf0tXE2ranmZM9nJbgUKkIwAAuM9Tr4OytIAstIzV+kIfPfOevKHmUmoA3/eMPVS3SSYTUs+XpWsuE15TLRIKXzq+th0eyrIeMruCpP4h1ccDMxl17wIZp/1UvryCA+WoesKHl3ijdmILNbs013Rviqh4HHg2AXH5Cz5HicIlrEd/1Cg+yvuYY+yKn8JT1IkNpRYI1ocu2oBANO+XWPoDzYvfvx5m7F2LPWiJ+e+vcS0w01NgbtqzY5eHW54vCapPJatVBsVlqCDjfmFNzZyivyrlzj/Ty8A0/856NoR3YcrWJePalqillL8um0WT9/4Y9tliLEH1bXIM0BBLWI/WVQ9wG1DHcyk5YOy/6wk/oQIdnJ28JvpGmraTEXJpx4Svt1USxjEtvoPqVHZ4cOmMIMGpVbDIai9EIwqqLOMhLhAPB4bkFjMmAiNpcdFHv4l3WL68bsSS32MkMDdtYW8sQ6v2/FG42fivjYRa3rdm1rygdu/5GWXDWCG15vUkS2jf1Trrw5ywMBgsONl4d4uJJac8L3FabSHp9VFUgeapsAmV8hfu9HRND26gtKOA0qKACNi1tccqHNqWhpmkj6v+o86sQeKm1oupnSSxsohC2aFu2PEDddPSK7foA3pdLI5nLA41ElLwMfhp+AEeM4TBl5EstS3mfUMIZdIB8aoKWxBlx8TNTXQE8hv3o1PHgIcFo27KWnoJx55Fm5f8qq3kywWW74/YPYWvwVFkPJjiucK7PbxwzckMmEF2W8Ld2CUcL6RK6smX1U1U0Ap37yONY3DyW1XDGhqpRe8fe0rnt7ttiOnw1TeJrx+JDmr0Vsd7uwc4S63VXh/mj5KGT1Wt9sE3foxtrYks6Oq35BYqGZDbdp1Vg2ovzTLkGHgAYozPBvksbvOFjjWOYH104kx4/TGFufA3BtqWBPJ8bdTdmkWrt5GP/yr0C1W9dMd4xYAKazk6YFC8ylORVqqMc5MUNGpre1D/0OA8GS+eIGTkVVtapvNZU5Fz9FP5ZtIIhvFyYN7pLHIWMvzIQYfiJ6ydHdviSCeAMtIB+hEprZ62gW+pNp4O40WkillYDy0qtxxDPU6vdiyvb5Y3jdtmaWrREo5Dk2uGnlHzviB5Jf9BNXVayZVmxJShPsPRv1a2sxAs/PHcep+oEpK/tE512c3IJPJWpXcvKOVKFRQso4xfM5lT5f/gMCZLqWlQ9Cymc3HZgKh03E2okTq2AUryZWFSBm7L5KdGyBovu0+vNUHVPBmog==","1; CO2PR07MB2583;\n\t6:rLIHShY+bfkqRLDWiHnsAYIQS53tmlRDRirbJSQFFVs65E2OEWzGUe9LxpErVJZ11sEFJ//s8+LN1dV0jod3ZxH8StF9abRGWOfbTK8ji8n3eZg7veqovL6IV39qm193d7SsSlykMaC7RsemNVQQzRyZKs2yXNINIlfJ4/Ka9fCiytInGKNKa2t+XheaYI4v5paIQxlyGDqE6BLoqdh3Aqo82Vj4ugkAFy5DJx9pHUGGHvA2rtvxPIwvZHj322XHCzOWBvcIBbMdlSD44aaxKH7uWY8+yYBHaAHMKimU7IUwi8jIdxJyPqbsHP8QXNRZyTBI5TMiIbBGI6e4foxOlg==;\n\t5:ZD5sFSFL7KMmrbnezhnQx7oRDni7VVXu1u5MKOwOe9Wa8fmO3NK9nhjPW4Ixkws5Wy3+1hovCUFfT3+M0p/w+eMOvZK4hNBJ7dkS/8cxyQWxS7aeYyXFV61JVxoQZw5ODmTY2ljqp7a8PA6f6QSSVw==;\n\t24:eIpDJlB7S8NasTQBw21/yWHGJsLZJSTdWtIE8MeR4Zm7ggSQBJZxutABQuvvNkcvdNexYpfjrqi/VBrjMn54ttRqkm9pq9I80y1s/G6gLeY=;\n\t7:YgGjQaeUE+EzAdJOmzC2FlOnoD8ZzXcl248T67hF63J9jK/0hXJj/DrJW5qwhVWY+i+gzQgWPNmh747ZWbQzlWTxcX+GVLYm3DJDo6ccn+kSmAnVdirRZbk/CFumPjOtjwrsCoeC3pdLPOCkX/ouIXn6CEjkB5AGGZCseBBpSOyj6BnEI7p1OCmM/AC5oVnrXTW25EVR6RY2LA1Ms/WsrDxeksbmbHprwqVCeggJo5U="],"X-MS-TrafficTypeDiagnostic":"CO2PR07MB2583:","X-Exchange-Antispam-Report-Test":"UriScan:(209352067349851);","X-Microsoft-Antispam-PRVS":"<CO2PR07MB258383CD6AE673B5FEAE2C68919D0@CO2PR07MB2583.namprd07.prod.outlook.com>","X-Exchange-Antispam-Report-CFA-Test":"BCL:0; PCL:0;\n\tRULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(601004)(2401047)(5005006)(8121501046)(93006095)(3002001)(10201501046)(100000703101)(100105400095)(6041248)(20161123562025)(20161123560025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123558100)(20161123555025)(20161123564025)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095);\n\tSRVR:CO2PR07MB2583; BCL:0; PCL:0;\n\tRULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095);\n\tSRVR:CO2PR07MB2583; ","X-Forefront-PRVS":"04163EF38A","X-Forefront-Antispam-Report":"SFV:NSPM;\n\tSFS:(10009020)(6009001)(189002)(24454002)(51914003)(199003)(83506001)(53936002)(6246003)(6496005)(105586002)(106356001)(189998001)(110136004)(42186005)(101416001)(229853002)(54906002)(54356999)(76176999)(2906002)(50986999)(50466002)(55016002)(4001350100001)(966005)(9686003)(97736004)(6306002)(33656002)(2950100002)(6666003)(42882006)(66066001)(6916009)(53546010)(47776003)(72206003)(23726003)(1076002)(8676002)(7736002)(305945005)(478600001)(6116002)(5660300001)(33716001)(4326008)(81156014)(3846002)(68736007)(8936002)(81166006)(25786009)(18370500001)(217873001);\n\tDIR:OUT; SFP:1101; SCL:1; SRVR:CO2PR07MB2583; H:hc; FPR:; SPF:None;\n\tPTR:InfoNoRecords; MX:1; A:1; LANG:en; ","Received-SPF":"None (protection.outlook.com: cavium.com does not designate\n\tpermitted sender hosts)","SpamDiagnosticOutput":"1:99","SpamDiagnosticMetadata":"NSPM","X-OriginatorOrg":"caviumnetworks.com","X-MS-Exchange-CrossTenant-OriginalArrivalTime":"31 Aug 2017 09:57:59.3900\n\t(UTC)","X-MS-Exchange-CrossTenant-FromEntityHeader":"Hosted","X-MS-Exchange-CrossTenant-Id":"711e4ccf-2e9b-4bcf-a551-4094005b6194","X-MS-Exchange-Transport-CrossTenantHeadersStamped":"CO2PR07MB2583","X-CRM114-Version":"20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 ","X-CRM114-CacheID":"sfid-20170831_025827_525143_EC400141 ","X-CRM114-Status":"GOOD (  27.82  )","X-Spam-Score":"-1.9 (-)","X-Spam-Report":"SpamAssassin version 3.4.1 on bombadil.infradead.org summary:\n\tContent analysis details:   (-1.9 points)\n\tpts rule name              description\n\t---- ----------------------\n\t--------------------------------------------------\n\t-0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at http://www.dnswl.org/,\n\tno trust [104.47.38.60 listed in list.dnswl.org]\n\t-0.0 RCVD_IN_MSPIKE_H3      RBL: Good reputation (+3)\n\t[104.47.38.60 listed in wl.mailspike.net]\n\t0.0 HEADER_FROM_DIFFERENT_DOMAINS From and EnvelopeFrom 2nd level\n\tmail domains are different\n\t-0.0 SPF_HELO_PASS          SPF: HELO matches SPF record\n\t-1.9 BAYES_00               BODY: Bayes spam probability is 0 to 1%\n\t[score: 0.0000]\n\t-0.1 DKIM_VALID Message has at least one valid DKIM or DK signature\n\t0.1 DKIM_SIGNED            Message has a DKIM or DK signature,\n\tnot necessarily valid\n\t-0.0 RCVD_IN_MSPIKE_WL      Mailspike good senders","X-BeenThere":"linux-arm-kernel@lists.infradead.org","X-Mailman-Version":"2.1.21","Precedence":"list","List-Unsubscribe":"<http://lists.infradead.org/mailman/options/linux-arm-kernel>,\n\t<mailto:linux-arm-kernel-request@lists.infradead.org?subject=unsubscribe>","List-Archive":"<http://lists.infradead.org/pipermail/linux-arm-kernel/>","List-Post":"<mailto:linux-arm-kernel@lists.infradead.org>","List-Help":"<mailto:linux-arm-kernel-request@lists.infradead.org?subject=help>","List-Subscribe":"<http://lists.infradead.org/mailman/listinfo/linux-arm-kernel>,\n\t<mailto:linux-arm-kernel-request@lists.infradead.org?subject=subscribe>","Cc":"Mark Rutland <mark.rutland@arm.com>,\n\tSuzuki K Poulose <Suzuki.Poulose@arm.com>,\n\tDavid Daney <david.daney@cavium.com>, Will Deacon <will.deacon@arm.com>, \n\tlinux-kernel@vger.kernel.org, Borislav Petkov <bp@alien8.de>,\n\tlinux-arm-kernel@lists.infradead.org","Content-Type":"text/plain; charset=\"us-ascii\"","Content-Transfer-Encoding":"7bit","Sender":"\"linux-arm-kernel\" <linux-arm-kernel-bounces@lists.infradead.org>","Errors-To":"linux-arm-kernel-bounces+incoming-imx=patchwork.ozlabs.org@lists.infradead.org","List-Id":"linux-imx-kernel.lists.patchwork.ozlabs.org"}},{"id":1760818,"web_url":"http://patchwork.ozlabs.org/comment/1760818/","msgid":"<20170831103119.GC15031@leverpostej>","list_archive_url":null,"date":"2017-08-31T10:31:20","subject":"Re: [RFC PATCH v9 5/7] perf: cavium: Support memory controller PMU\n\tcounters","submitter":{"id":8806,"url":"http://patchwork.ozlabs.org/api/people/8806/","name":"Mark Rutland","email":"mark.rutland@arm.com"},"content":"On Thu, Aug 31, 2017 at 11:57:46AM +0200, Jan Glauber wrote:\n> On Wed, Aug 30, 2017 at 10:54:03AM +0800, Zhangshaokun wrote:\n> > On 2017/8/29 21:12, Jan Glauber wrote:\n> > > Add support for the PMU counters on Cavium SOC memory controllers.\n> > > \n> > > This patch also adds generic functions to allow supporting more\n> > > devices with PMU counters.\n\n> > > +/* generic struct to cover the different pmu types */\n> > > +struct cvm_pmu_dev {\n> > > +\tstruct pmu pmu;\n> > > +\tconst char *pmu_name;\n> > \n> > It seems that pmu_name is redundant since struct pmu has a name field,\n> > Mark has mentioned it in HiSilicon uncore PMU driver, Link:\n> > https://patchwork.kernel.org/patch/9861821/\n> \n> I don't get it. perf_pmu_register() just copies the char* from the\n> argument into pmu->name. Somewhere the string must be allocated.\n> That's why I have cvm_pmu_dev->pmu_name.\n\nI'm not sure I follow. cvm_pmu_dev->pmu_name is just a char *, so what\ndoes that have to do with allocation?\n\n... unless you mean you want to allocate this in some variant-specific\ncode prior to passing it to code which calls perf_pmu_register(), and\nyou just need a place to stash it in the mean time?\n\n> > > diff --git a/include/linux/cpuhotplug.h b/include/linux/cpuhotplug.h\n> > > index 82b30e6..ca84ac8 100644\n> > > --- a/include/linux/cpuhotplug.h\n> > > +++ b/include/linux/cpuhotplug.h\n> > > @@ -139,6 +139,7 @@ enum cpuhp_state {\n> > >  \tCPUHP_AP_PERF_ARM_QCOM_L3_ONLINE,\n> > >  \tCPUHP_AP_WORKQUEUE_ONLINE,\n> > >  \tCPUHP_AP_RCUTREE_ONLINE,\n> > > +\tCPUHP_AP_PERF_ARM_CVM_ONLINE,\n> > \n> > Alphabetic order?\n> \n> These don't look alphabetically ordered to me.\n\nSure, the full list is ordered by dependency.\n\nHowever, we've generally kept the uncore PMUs together, and within the\ngroup of system PMU CPUHP_AP_PERF_ARM_* callbacks, we've retained\nalphabetical order.\n\nDoes this PMU need workqueues and RCU up before its HP callback is\ninvoked? Or can this be moved into the group of CPUHP_AP_PERF_ARM_*\nabove CPUHP_AP_WORKQUEUE_ONLINE and CPUHP_AP_RCUTREE_ONLINE? i.e.\nbetween CPUHP_AP_PERF_ARM_CCN_ONLINE and CPUHP_AP_PERF_ARM_L2X0_ONLINE.\n\nTHanks,\nMark.","headers":{"Return-Path":"<linux-arm-kernel-bounces+incoming-imx=patchwork.ozlabs.org@lists.infradead.org>","X-Original-To":"incoming-imx@patchwork.ozlabs.org","Delivered-To":"patchwork-incoming-imx@bilbo.ozlabs.org","Authentication-Results":["ozlabs.org;\n\tspf=none (mailfrom) smtp.mailfrom=lists.infradead.org\n\t(client-ip=65.50.211.133; helo=bombadil.infradead.org;\n\tenvelope-from=linux-arm-kernel-bounces+incoming-imx=patchwork.ozlabs.org@lists.infradead.org;\n\treceiver=<UNKNOWN>)","ozlabs.org; dkim=pass (2048-bit key;\n\tunprotected) header.d=lists.infradead.org\n\theader.i=@lists.infradead.org\n\theader.b=\"nQ9DNYo5\"; dkim-atps=neutral"],"Received":["from bombadil.infradead.org (bombadil.infradead.org\n\t[65.50.211.133])\n\t(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256\n\tbits)) (No client certificate requested)\n\tby ozlabs.org (Postfix) with ESMTPS id 3xjdxY45Bjz9sPt\n\tfor <incoming-imx@patchwork.ozlabs.org>;\n\tThu, 31 Aug 2017 20:33:05 +1000 (AEST)","from localhost ([127.0.0.1] helo=bombadil.infradead.org)\n\tby bombadil.infradead.org with esmtp (Exim 4.87 #1 (Red Hat Linux))\n\tid 1dnMmU-0002IL-EA; Thu, 31 Aug 2017 10:33:02 +0000","from usa-sjc-mx-foss1.foss.arm.com ([217.140.101.70]\n\thelo=foss.arm.com)\n\tby bombadil.infradead.org with esmtp (Exim 4.87 #1 (Red Hat Linux))\n\tid 1dnMmQ-0002Gp-0i for linux-arm-kernel@lists.infradead.org;\n\tThu, 31 Aug 2017 10:32:59 +0000","from usa-sjc-imap-foss1.foss.arm.com (unknown [10.72.51.249])\n\tby usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 66B1280D;\n\tThu, 31 Aug 2017 03:32:37 -0700 (PDT)","from leverpostej (usa-sjc-imap-foss1.foss.arm.com [10.72.51.249])\n\tby usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id\n\tC5BCE3F58F; Thu, 31 Aug 2017 03:32:35 -0700 (PDT)"],"DKIM-Signature":"v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;\n\td=lists.infradead.org; s=bombadil.20170209; h=Sender:\n\tContent-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post:\n\tList-Archive:List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:References:\n\tMessage-ID:Subject:To:From:Date:Reply-To:Content-ID:Content-Description:\n\tResent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:\n\tList-Owner; bh=vSISGL1enbdOiVkLsbWGqC0ilekkcQSi2WjPUJwXvLA=;\n\tb=nQ9DNYo51NHIvi\n\t7NK8lNr7S5++DZEAPP4PJhudMMd0emFpJI4PLYJslE7NJs4kWHqm08A3gWcfS0F5L3HcmiuRaR0G3\n\tKtTz4PRbZ3lVJZFylwJ+91Y1N1R19DOHXH1xKFkUygiNMRwLkbPFgotRRQYzE1pmS7ZH6MWVZ2ZJZ\n\tABiK3ldvZj+yvWWIVzdp/vZKIpogCISpEeXfCkt+dWqE7X3bQ135Y12+w+xUwYPsdg6YpubA7tswV\n\tsGwqLhJ+gfRcdeYEKY963g5XMaXIZD7RJSCGHjC/O+sXz9dYRbFyMcIvzVECTDhvqi53KtI1W0Dow\n\tw0dNvQLtjot1ozxIuW+Q==;","Date":"Thu, 31 Aug 2017 11:31:20 +0100","From":"Mark Rutland <mark.rutland@arm.com>","To":"Jan Glauber <jan.glauber@caviumnetworks.com>","Subject":"Re: [RFC PATCH v9 5/7] perf: cavium: Support memory controller PMU\n\tcounters","Message-ID":"<20170831103119.GC15031@leverpostej>","References":"<20170829131238.4988-1-jglauber@cavium.com>\n\t<20170829131238.4988-6-jglauber@cavium.com>\n\t<a89f597e-885d-a8bd-f6ce-452d7025cb20@hisilicon.com>\n\t<20170831095746.GB15906@hc>","MIME-Version":"1.0","Content-Disposition":"inline","In-Reply-To":"<20170831095746.GB15906@hc>","User-Agent":"Mutt/1.5.21 (2010-09-15)","X-CRM114-Version":"20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 ","X-CRM114-CacheID":"sfid-20170831_033258_076176_0A55CD9B ","X-CRM114-Status":"GOOD (  19.80  )","X-Spam-Score":"-6.9 (------)","X-Spam-Report":"SpamAssassin version 3.4.1 on bombadil.infradead.org summary:\n\tContent analysis details:   (-6.9 points)\n\tpts rule name              description\n\t---- ----------------------\n\t--------------------------------------------------\n\t-5.0 RCVD_IN_DNSWL_HI RBL: Sender listed at http://www.dnswl.org/,\n\thigh trust [217.140.101.70 listed in list.dnswl.org]\n\t-0.0 SPF_PASS               SPF: sender matches SPF record\n\t-0.0 RP_MATCHES_RCVD Envelope sender domain matches handover relay\n\tdomain\n\t-1.9 BAYES_00               BODY: Bayes spam probability is 0 to 1%\n\t[score: 0.0000]","X-BeenThere":"linux-arm-kernel@lists.infradead.org","X-Mailman-Version":"2.1.21","Precedence":"list","List-Unsubscribe":"<http://lists.infradead.org/mailman/options/linux-arm-kernel>,\n\t<mailto:linux-arm-kernel-request@lists.infradead.org?subject=unsubscribe>","List-Archive":"<http://lists.infradead.org/pipermail/linux-arm-kernel/>","List-Post":"<mailto:linux-arm-kernel@lists.infradead.org>","List-Help":"<mailto:linux-arm-kernel-request@lists.infradead.org?subject=help>","List-Subscribe":"<http://lists.infradead.org/mailman/listinfo/linux-arm-kernel>,\n\t<mailto:linux-arm-kernel-request@lists.infradead.org?subject=subscribe>","Cc":"Suzuki K Poulose <Suzuki.Poulose@arm.com>,\n\tDavid Daney <david.daney@cavium.com>, Will Deacon <will.deacon@arm.com>, \n\tlinux-kernel@vger.kernel.org, Zhangshaokun <zhangshaokun@hisilicon.com>, \n\tBorislav Petkov <bp@alien8.de>, linux-arm-kernel@lists.infradead.org","Content-Type":"text/plain; charset=\"us-ascii\"","Content-Transfer-Encoding":"7bit","Sender":"\"linux-arm-kernel\" <linux-arm-kernel-bounces@lists.infradead.org>","Errors-To":"linux-arm-kernel-bounces+incoming-imx=patchwork.ozlabs.org@lists.infradead.org","List-Id":"linux-imx-kernel.lists.patchwork.ozlabs.org"}},{"id":1760836,"web_url":"http://patchwork.ozlabs.org/comment/1760836/","msgid":"<20170831111359.GC15906@hc>","list_archive_url":null,"date":"2017-08-31T11:13:59","subject":"Re: [RFC PATCH v9 5/7] perf: cavium: Support memory controller PMU\n\tcounters","submitter":{"id":68474,"url":"http://patchwork.ozlabs.org/api/people/68474/","name":"Jan Glauber","email":"jan.glauber@caviumnetworks.com"},"content":"On Thu, Aug 31, 2017 at 11:31:20AM +0100, Mark Rutland wrote:\n> On Thu, Aug 31, 2017 at 11:57:46AM +0200, Jan Glauber wrote:\n> > On Wed, Aug 30, 2017 at 10:54:03AM +0800, Zhangshaokun wrote:\n> > > On 2017/8/29 21:12, Jan Glauber wrote:\n> > > > Add support for the PMU counters on Cavium SOC memory controllers.\n> > > > \n> > > > This patch also adds generic functions to allow supporting more\n> > > > devices with PMU counters.\n> \n> > > > +/* generic struct to cover the different pmu types */\n> > > > +struct cvm_pmu_dev {\n> > > > +\tstruct pmu pmu;\n> > > > +\tconst char *pmu_name;\n> > > \n> > > It seems that pmu_name is redundant since struct pmu has a name field,\n> > > Mark has mentioned it in HiSilicon uncore PMU driver, Link:\n> > > https://patchwork.kernel.org/patch/9861821/\n> > \n> > I don't get it. perf_pmu_register() just copies the char* from the\n> > argument into pmu->name. Somewhere the string must be allocated.\n> > That's why I have cvm_pmu_dev->pmu_name.\n> \n> I'm not sure I follow. cvm_pmu_dev->pmu_name is just a char *, so what\n> does that have to do with allocation?\n\nAs you pointed out here:\nhttps://lkml.org/lkml/2017/6/2/530\nperf_pmu_register does not copy the string, so _somewhere_ the name must\nbe allocated and freed afterwards. Are you suggesting to use pmu.name\ndirectly to allocate the name there and pass\nperf_register_pmu(..., tlk->pmu.name, ...)?\n\n--Jan\n\n> ... unless you mean you want to allocate this in some variant-specific\n> code prior to passing it to code which calls perf_pmu_register(), and\n> you just need a place to stash it in the mean time?\n\n\n\n[...]\n\n> THanks,\n> Mark.","headers":{"Return-Path":"<linux-arm-kernel-bounces+incoming-imx=patchwork.ozlabs.org@lists.infradead.org>","X-Original-To":"incoming-imx@patchwork.ozlabs.org","Delivered-To":"patchwork-incoming-imx@bilbo.ozlabs.org","Authentication-Results":["ozlabs.org;\n\tspf=none (mailfrom) smtp.mailfrom=lists.infradead.org\n\t(client-ip=65.50.211.133; helo=bombadil.infradead.org;\n\tenvelope-from=linux-arm-kernel-bounces+incoming-imx=patchwork.ozlabs.org@lists.infradead.org;\n\treceiver=<UNKNOWN>)","ozlabs.org; dkim=pass (2048-bit key;\n\tunprotected) header.d=lists.infradead.org\n\theader.i=@lists.infradead.org header.b=\"J+93Qo77\"; \n\tdkim=fail reason=\"signature verification failed\" (1024-bit key;\n\tunprotected) header.d=CAVIUMNETWORKS.onmicrosoft.com\n\theader.i=@CAVIUMNETWORKS.onmicrosoft.com header.b=\"eUAh85tU\"; \n\tdkim-atps=neutral","spf=none (sender IP is )\n\tsmtp.mailfrom=Jan.Glauber@cavium.com; "],"Received":["from bombadil.infradead.org (bombadil.infradead.org\n\t[65.50.211.133])\n\t(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256\n\tbits)) (No client certificate requested)\n\tby ozlabs.org (Postfix) with ESMTPS id 3xjfsg3SpSz9sQl\n\tfor <incoming-imx@patchwork.ozlabs.org>;\n\tThu, 31 Aug 2017 21:14:47 +1000 (AEST)","from localhost ([127.0.0.1] helo=bombadil.infradead.org)\n\tby bombadil.infradead.org with esmtp (Exim 4.87 #1 (Red Hat Linux))\n\tid 1dnNQp-0005WT-SE; Thu, 31 Aug 2017 11:14:43 +0000","from mail-bn3nam01on0059.outbound.protection.outlook.com\n\t([104.47.33.59] helo=NAM01-BN3-obe.outbound.protection.outlook.com)\n\tby bombadil.infradead.org with esmtps (Exim 4.87 #1 (Red Hat Linux))\n\tid 1dnNQl-0005V5-4h for linux-arm-kernel@lists.infradead.org;\n\tThu, 31 Aug 2017 11:14:41 +0000","from hc (88.67.130.225) by SN2PR07MB2592.namprd07.prod.outlook.com\n\t(2603:10b6:804:7::22) with Microsoft SMTP Server (version=TLS1_2, \n\tcipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.13.10;\n\tThu, 31 Aug 2017 11:14:10 +0000"],"DKIM-Signature":["v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;\n\td=lists.infradead.org; s=bombadil.20170209; h=Sender:\n\tContent-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post:\n\tList-Archive:List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:References:\n\tMessage-ID:Subject:To:From:Date:Reply-To:Content-ID:Content-Description:\n\tResent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:\n\tList-Owner; bh=/jOkxuO33zA+AIzG0qsSczGhwYK9Umcw4dGlA7ZylDQ=;\n\tb=J+93Qo77vSA6aW\n\tsnR/3S72N5+gX5Hi8cm0HhNQkK1rF+kqoYYr2phqTBoELPxGffNfF+n7bN4UQM9v+EHbe+Sq3PwzC\n\tV9asOHO1SChyT8L/S9k6jMSCqX8e76u/Df8VMEd+rJnQAgeJMHFA7arACKAv8hIPZspOkWiVJYv82\n\tZC4sklAN2JgMhB6U9EoscaYt18VrurGHyldpeJt3Di0ZmZIe6TZ7hUqaRIabBv8vw6c7PfVaxaZ+b\n\tIIqCne6cAkg8nKRZiU55NjFpYr+PCbhEGrwQknJGEK/c+QfFNni/gx1Ns0AQCwNTSBr+qC+i+Gsye\n\ty2xeIAOdqxUo9hm9RPyw==;","v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=CAVIUMNETWORKS.onmicrosoft.com; s=selector1-cavium-com;\n\th=From:Date:Subject:Message-ID:Content-Type:MIME-Version;\n\tbh=LHwbtiYsqb06lYsmk1obGNCxTZX3+4S9VPHwSqSSxyo=;\n\tb=eUAh85tUKqnwI8wji8qApYfxxXpN1LRkB9iBU2PDE1wL7iIx4hTJ+On9Q8gZBrM3MaWB6/WaLHpgiEsGHik8FK+xHmsjf5q1YSpaNv4FCNJ/9ujf8BAFULGeHZarsqVk85uAB4eG3QGVkU4fH2nMPlWsTIlSQs3HX0zf38DPABg="],"Date":"Thu, 31 Aug 2017 13:13:59 +0200","From":"Jan Glauber <jan.glauber@caviumnetworks.com>","To":"Mark Rutland <mark.rutland@arm.com>","Subject":"Re: [RFC PATCH v9 5/7] perf: cavium: Support memory controller PMU\n\tcounters","Message-ID":"<20170831111359.GC15906@hc>","References":"<20170829131238.4988-1-jglauber@cavium.com>\n\t<20170829131238.4988-6-jglauber@cavium.com>\n\t<a89f597e-885d-a8bd-f6ce-452d7025cb20@hisilicon.com>\n\t<20170831095746.GB15906@hc> <20170831103119.GC15031@leverpostej>","MIME-Version":"1.0","Content-Disposition":"inline","In-Reply-To":"<20170831103119.GC15031@leverpostej>","User-Agent":"Mutt/1.5.21 (2010-09-15)","X-Originating-IP":"[88.67.130.225]","X-ClientProxiedBy":"HE1PR0102CA0050.eurprd01.prod.exchangelabs.com\n\t(2603:10a6:7:7d::27) To SN2PR07MB2592.namprd07.prod.outlook.com\n\t(2603:10b6:804:7::22)","X-MS-PublicTrafficType":"Email","X-MS-Office365-Filtering-Correlation-Id":"a1c75a79-295e-45a0-149a-08d4f0616894","X-Microsoft-Antispam":"UriScan:; BCL:0; PCL:0;\n\tRULEID:(300000500095)(300135000095)(300000501095)(300135300095)(22001)(300000502095)(300135100095)(2017030254152)(300000503095)(300135400095)(2017052603199)(201703131423075)(201703031133081)(201702281549075)(300000504095)(300135200095)(300000505095)(300135600095)(300000506095)(300135500095);\n\tSRVR:SN2PR07MB2592; ","X-Microsoft-Exchange-Diagnostics":["1; SN2PR07MB2592;\n\t3:vBEIUmUup52IvNNpIL9cLGMFthk5RGnl8xEtUFZS5zYxstm1Hv/Jo0WFekDuaAiDpOezc9PMUzLS8dnPuMsfTm48M6WCYeGIfhSZBKcirZzL0ilqX0VYLdVvAVomyxzFmeDxVlHR0YNKQXNsZxNiAqVY8NuHSmBHFPUKKqG/NTOLnM58zLA5QLRMteDzISLJ2i65yfYdnSfh4UWjnKl5CD3ngrF4aciVCW5plEGxzkD7nDmp47qw04mY/esrmWvO;\n\t25:k+HA4jk2Itreqg3Vf2YkqZdy6yx3sO6GC/sr2SUgq/uf1zKmz8Rr1egUWE59eliS3EPpOr0FhVZHr6eC2BVmKv3M5VgiY6qaB5Bx7tVJqNYBqjcbXpFJeK2ysb4s9e16PKZ+eOYrCK5y/gjdQLRipOXItWdXkQCapYkDAnOk7lxk/UId1TT10353TpFwlr/WWmPym7GqU3pbucnaK0MRvEZUa6oAGi6MaT4YbzDa7Cn2ixidSNWSYMyR8QHHyMrcqIgt7jJpF1VqYepB4W9iSZekDJVmZXhchjeX8RF+Nkkx+sVOVxXKprbTJmVCJiHdsYQC0BXtir5ujzIl0dCBOQ==;\n\t31:GdTv77F5zKRDx20yJgOsuezwVEFo4CgioTvQZ6+kjsT/iZzhFBxHS/FN4eEErhiTWn4qcIPXQky1wgrqFFcrM9ytZGMK2BYQeqOm3c7T96QSKHeej4OS/4GCJl9EDNHSUR7QLMSAM7ov2dqKdRtZW1t0ci9f+yKw7Uej4bmAyOxBQTn1nro+fHZzywCHIiskwrLcCeBPg0mX1YCvBc2uiGkXQliuZhEP6WiViA3ig6U=","1; SN2PR07MB2592;\n\t20:+t7DpN4kVr+LwmMZqWHWwv2tUJqY42+6o+kaAghaOR3+nZyfr1AHR6MnIBV5N1tWe2PpCvdPkPxcl3dvr9KfDTmIJ1k594AvnwYzPGU24SOLSfT/3QTNxtxyZCTM5x4qHYceFMgPnrsVcGViewU2kZv2anO8kuwZeFTj1kOT7synnlbWnzY/on22SmOuSg6JJQLe5pvlFOSnSwaCqOrIrW4vSwSvC5BPWxqCOxhQYSS5dhVIs0yef+OuBHTXa1tKVaDKuW+4muOBRcuRO8XWwI8YGBKsuC2qL/A4v2BYZGTr8MuxSVpvnmEbkqTVadrCEbm811SnLPkEbvWuvLtWRKCLww/DwwZ1+10CavH4hEH0j/t1yu934jkDA9/7McDbbFpcr1WOl3kpTe/M+8xABUI+G/IKQswQoNUYdOVpzm0zJihk6TO59foEwy+XWN6Xvr/pocX4jRLDuuRnVi+b36+6i5W69spAIBI+3amwCJVpLhW1kQj8pHvqTZhH9chrz3NKtYBHmgNYlh04ELUg+GRzooAr1g3kZATlrNk+qTM7LIpaHbX9BdIv444Ck67/70Z7snftoRPj3fPbv/KLQ7AXjf58LtrIv+K8s/tV/qQ=;\n\t4:dbOu8UbN7tEmwi1pJMUOmGyvcj/qt37IZDCrwPvj+83XHcpsxBp5vx/8zDe+6jULPHFkqr9IB7t92FMCm4zpYSe2NkzPVG+gS822a63dy7yxUbtRF9vd4KF/EQ0uCLXQtF/a60NqrqCmdAkehF+yUsLVGlXeeAcr5GklJTyYmk2jE8//T5nTDR+1MAUrqLtHX+DVgnU6TWwKDJZJp2MwKRFMjGqmf2MMOCGgAGRIWQbOIPa1d2zdefAdSdYkHjij","=?us-ascii?Q?1; SN2PR07MB2592;\n\t23:pvqHdKHEPMujXdUhKtDQtAKLQXYrXLydt4ui5FlO5?=\n\tKm5BFjAU4dT3ob9Hct8xOtb9CXKlIvDFE90nbJaX6haNcHskUeU3thoKmK41kTaKXimkL3Uzp+tQY0pb5/4Jwi4HtEe1/5uDS9WdGhRypWnUkHPg5t6sMYMSWcekBWecA1HsuuOaH//lc68xE/jOoD/DVrqiRBLM2ZpmJWIlQIYfUVERNu8m3Hpk63bArJo+JX7zvP1tlSbE+IcwktLq3yhh7QIqOk+5Wd7xCq32RzQ9CFHbIGzAQClUXtCUt30is42clUuxVgzpNPMeK6ACMtlgrZYWsFZv/ODEoBerlQJK3SIk9UhyqOgkFm0ohM2E1LnQWgXTXe0uOOqQBzST6f8FrwBK73TsmObWUokwZ/pMjPLWXQaHoGfhRmISCaY37tcTR14iiqjBSMe33rYRb0lZOhWFRNq6iYMOnSgKSXttCj7RfAeUZrdxr//4H5J9QPXAjXf0cgZhW82eOzuSmF9t5++UwDhS/QVeIGC7gsyWBCg3ab1kjpigkbnrGmrJ3EuRGrUElu4sN8tl2GpPbVD0aBVOBsAEeSCOTDWTvHaQMYcMpPvrDsKBE7RhtiHnxB1MHoqAEv/J+Mbe+nGW+S3R7U3c3c3GMI+rhnJ4nltCmFwoc/NUyeurQvQjL6Cyx0WT+79wQbbjCDnJMfSjMCNnTAkaGOM7/LlmuSs+N0tMSIoUi8AWQBPX8231U1/lg6KAGElWoPS7sMkRJDPoZ1bV+6Cm8CGZqmai/b+yyE+xUuuVbb/2bNHvF6kSJuupu27glcq2w8MZyBnT9NwQZR8TsmPnIK/P2Tzg56VqOD/RKmdXixGSMgrTZ0bRupN+o/BfEiJT+1ii2ECQcajPvqqI+7DftIREPm/oYIVZ7z+qKy/yclSfFl3R1c5r0oDg5nkdT3wDM+OyefcANcXLpg3//9cWahy1qlfc8Y0pHipm8AZHZyEyIo1Gi9BGHedIEfZdjIHCCsRN+NVr8JKQAiXggG4CSp50QiD6k+JlTGu4tKuae2GdQ5ngrrzl3rrOk4+3swODYXPU6OcExjwjsiVngtFNYBOetldpkDRUmbTplOdByBdfp/c2iNbEPoSxqJI9Fdk3/5Q8Y00y/07rQXnhQGYDzLESwF4wApPTv9TWpEMzYm8jE+tXk+L5LoPSY/8dHnBEruR1PZSBGcCqTm5pdIfeIfxXf9UGcuGZ5RpwePn9+zeP2RiAXxgu5WMiTFUjgvlME7DRKaIzC6SPdwfvNqo1m/SMYqAKj+5E9R21w==","1; SN2PR07MB2592;\n\t6:K+sgYmiNdpE6YNStSNmSM5682pEnjeCLpLHZGM0ZIbB5xvRW43dMumnyC2f5/7G1lc1CSyCHRjUOiWNgYWBabwDM8T6/XRLu/JCzM72jNEZ/8ycUwfAHrwKj2JSifpPUVUDRJ4MAF7RP/FyH/pCCQp+U6MB9AIyuR5tyHZJk0MYL1Hq8kU8ZJiMQnVvg+v/6CRp0hcLNrPJim04ASL5cUCgD3L2W0UI9psnNMBrcpulG2s5sMe3fq9h4PIk36H1HBIFB8qU7lFcLysFvyfQbMQtYLYyjEsvwTEcDjir5cBld7MkYSCTVRSxRI2Q0Kg8dqjPBKd+IXN4P3OpEIe3Z7A==;\n\t5:NLfQcwLIdlaYD09TGnUlH9vYZUY5eDscQxdZyJIdVgNxdW3BCPELjTQsfS+qTf76T8NjQoMKgOd2ZcQBvSBZ5tP378ipDkqyDal7D4rgh07ej+vbPUY2lhEMxunb1inERC6h1ZMTJbGlQvQC4oRZhw==;\n\t24:do6yyziLxSBDatiAgq45W5vKIJfhVBAHuC9cK8V84eY4tBCVQA0t3YHyVzg2MTB5D+DRHW/Ngnt1EyQBAcDiZRAmp63OyCjIadq0tdbDBTg=;\n\t7:j3jaRPY9p/s2Q3RQz9RmzP9sIEWAljAPPxMOAUVStwzCymXMR8dVRTdCKE7nAOzoYvTnLJH55MQI8MUwXY7MbsMKDvSLLGef8Bar83+yfPvzuzb7MGm5SfVWUMtcRRHavMPo2VyD6mUAo4WHIGtRFZ/fxzeq3pHLo596Hlsr82QaVxlHZL7LKRwdIYOCadaMg6dElecB0jGSWx+dzfvM0tz4jgp0nIk779ffrZfN69U="],"X-MS-TrafficTypeDiagnostic":"SN2PR07MB2592:","X-Exchange-Antispam-Report-Test":"UriScan:;","X-Microsoft-Antispam-PRVS":"<SN2PR07MB2592EF728C3D100B61F0C54A919D0@SN2PR07MB2592.namprd07.prod.outlook.com>","X-Exchange-Antispam-Report-CFA-Test":"BCL:0; PCL:0;\n\tRULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(601004)(2401047)(5005006)(8121501046)(93006095)(100000703101)(100105400095)(10201501046)(3002001)(6041248)(20161123558100)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123555025)(20161123560025)(20161123562025)(20161123564025)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095);\n\tSRVR:SN2PR07MB2592; BCL:0; PCL:0;\n\tRULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095);\n\tSRVR:SN2PR07MB2592; ","X-Forefront-PRVS":"04163EF38A","X-Forefront-Antispam-Report":"SFV:NSPM;\n\tSFS:(10009020)(6009001)(189002)(199003)(24454002)(81156014)(23726003)(81166006)(47776003)(8676002)(6116002)(3846002)(33716001)(66066001)(76176999)(54356999)(189998001)(50986999)(93886005)(305945005)(97736004)(7736002)(72206003)(68736007)(25786009)(83506001)(966005)(8936002)(1076002)(478600001)(4001350100001)(53546010)(2906002)(105586002)(6916009)(54906002)(55016002)(42186005)(2950100002)(42882006)(6306002)(53936002)(6496005)(110136004)(229853002)(4326008)(6246003)(6666003)(9686003)(106356001)(101416001)(33656002)(5660300001)(50466002)(18370500001)(217873001);\n\tDIR:OUT; SFP:1101; SCL:1; SRVR:SN2PR07MB2592; H:hc; FPR:; SPF:None;\n\tPTR:InfoNoRecords; MX:1; A:1; LANG:en; ","Received-SPF":"None (protection.outlook.com: cavium.com does not designate\n\tpermitted sender hosts)","SpamDiagnosticOutput":"1:99","SpamDiagnosticMetadata":"NSPM","X-OriginatorOrg":"caviumnetworks.com","X-MS-Exchange-CrossTenant-OriginalArrivalTime":"31 Aug 2017 11:14:10.2487\n\t(UTC)","X-MS-Exchange-CrossTenant-FromEntityHeader":"Hosted","X-MS-Exchange-CrossTenant-Id":"711e4ccf-2e9b-4bcf-a551-4094005b6194","X-MS-Exchange-Transport-CrossTenantHeadersStamped":"SN2PR07MB2592","X-CRM114-Version":"20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 ","X-CRM114-CacheID":"sfid-20170831_041439_359044_E5A99268 ","X-CRM114-Status":"GOOD (  20.22  )","X-Spam-Score":"-1.9 (-)","X-Spam-Report":"SpamAssassin version 3.4.1 on bombadil.infradead.org summary:\n\tContent analysis details:   (-1.9 points)\n\tpts rule name              description\n\t---- ----------------------\n\t--------------------------------------------------\n\t-0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at http://www.dnswl.org/,\n\tno trust [104.47.33.59 listed in list.dnswl.org]\n\t-0.0 RCVD_IN_MSPIKE_H4      RBL: Very Good reputation (+4)\n\t[104.47.33.59 listed in wl.mailspike.net]\n\t0.0 HEADER_FROM_DIFFERENT_DOMAINS From and EnvelopeFrom 2nd level\n\tmail domains are different\n\t-0.0 SPF_HELO_PASS          SPF: HELO matches SPF record\n\t-1.9 BAYES_00               BODY: Bayes spam probability is 0 to 1%\n\t[score: 0.0000]\n\t-0.1 DKIM_VALID Message has at least one valid DKIM or DK signature\n\t0.1 DKIM_SIGNED            Message has a DKIM or DK signature,\n\tnot necessarily valid\n\t-0.0 RCVD_IN_MSPIKE_WL      Mailspike good senders","X-BeenThere":"linux-arm-kernel@lists.infradead.org","X-Mailman-Version":"2.1.21","Precedence":"list","List-Unsubscribe":"<http://lists.infradead.org/mailman/options/linux-arm-kernel>,\n\t<mailto:linux-arm-kernel-request@lists.infradead.org?subject=unsubscribe>","List-Archive":"<http://lists.infradead.org/pipermail/linux-arm-kernel/>","List-Post":"<mailto:linux-arm-kernel@lists.infradead.org>","List-Help":"<mailto:linux-arm-kernel-request@lists.infradead.org?subject=help>","List-Subscribe":"<http://lists.infradead.org/mailman/listinfo/linux-arm-kernel>,\n\t<mailto:linux-arm-kernel-request@lists.infradead.org?subject=subscribe>","Cc":"Suzuki K Poulose <Suzuki.Poulose@arm.com>,\n\tDavid Daney <david.daney@cavium.com>, Will Deacon <will.deacon@arm.com>, \n\tlinux-kernel@vger.kernel.org, Zhangshaokun <zhangshaokun@hisilicon.com>, \n\tBorislav Petkov <bp@alien8.de>, linux-arm-kernel@lists.infradead.org","Content-Type":"text/plain; charset=\"us-ascii\"","Content-Transfer-Encoding":"7bit","Sender":"\"linux-arm-kernel\" <linux-arm-kernel-bounces@lists.infradead.org>","Errors-To":"linux-arm-kernel-bounces+incoming-imx=patchwork.ozlabs.org@lists.infradead.org","List-Id":"linux-imx-kernel.lists.patchwork.ozlabs.org"}},{"id":1760837,"web_url":"http://patchwork.ozlabs.org/comment/1760837/","msgid":"<20170831111827.GD15906@hc>","list_archive_url":null,"date":"2017-08-31T11:18:27","subject":"Re: [RFC PATCH v9 5/7] perf: cavium: Support memory controller PMU\n\tcounters","submitter":{"id":68474,"url":"http://patchwork.ozlabs.org/api/people/68474/","name":"Jan Glauber","email":"jan.glauber@caviumnetworks.com"},"content":"On Thu, Aug 31, 2017 at 11:31:20AM +0100, Mark Rutland wrote:\n> On Thu, Aug 31, 2017 at 11:57:46AM +0200, Jan Glauber wrote:\n> > On Wed, Aug 30, 2017 at 10:54:03AM +0800, Zhangshaokun wrote:\n> > > On 2017/8/29 21:12, Jan Glauber wrote:\n\n[...]\n\n> > > > diff --git a/include/linux/cpuhotplug.h b/include/linux/cpuhotplug.h\n> > > > index 82b30e6..ca84ac8 100644\n> > > > --- a/include/linux/cpuhotplug.h\n> > > > +++ b/include/linux/cpuhotplug.h\n> > > > @@ -139,6 +139,7 @@ enum cpuhp_state {\n> > > >  \tCPUHP_AP_PERF_ARM_QCOM_L3_ONLINE,\n> > > >  \tCPUHP_AP_WORKQUEUE_ONLINE,\n> > > >  \tCPUHP_AP_RCUTREE_ONLINE,\n> > > > +\tCPUHP_AP_PERF_ARM_CVM_ONLINE,\n> > > \n> > > Alphabetic order?\n> > \n> > These don't look alphabetically ordered to me.\n> \n> Sure, the full list is ordered by dependency.\n> \n> However, we've generally kept the uncore PMUs together, and within the\n> group of system PMU CPUHP_AP_PERF_ARM_* callbacks, we've retained\n> alphabetical order.\n> \n> Does this PMU need workqueues and RCU up before its HP callback is\n> invoked? Or can this be moved into the group of CPUHP_AP_PERF_ARM_*\n> above CPUHP_AP_WORKQUEUE_ONLINE and CPUHP_AP_RCUTREE_ONLINE? i.e.\n> between CPUHP_AP_PERF_ARM_CCN_ONLINE and CPUHP_AP_PERF_ARM_L2X0_ONLINE.\n\nI think I can move it inside the CPUHP_AP_PERF_ARM_* group.\n\n--Jan\n\n> THanks,\n> Mark.","headers":{"Return-Path":"<linux-arm-kernel-bounces+incoming-imx=patchwork.ozlabs.org@lists.infradead.org>","X-Original-To":"incoming-imx@patchwork.ozlabs.org","Delivered-To":"patchwork-incoming-imx@bilbo.ozlabs.org","Authentication-Results":["ozlabs.org;\n\tspf=none (mailfrom) smtp.mailfrom=lists.infradead.org\n\t(client-ip=65.50.211.133; helo=bombadil.infradead.org;\n\tenvelope-from=linux-arm-kernel-bounces+incoming-imx=patchwork.ozlabs.org@lists.infradead.org;\n\treceiver=<UNKNOWN>)","ozlabs.org; dkim=pass (2048-bit key;\n\tunprotected) header.d=lists.infradead.org\n\theader.i=@lists.infradead.org header.b=\"Uqr4L3gq\"; \n\tdkim=fail reason=\"signature verification failed\" (1024-bit key;\n\tunprotected) header.d=CAVIUMNETWORKS.onmicrosoft.com\n\theader.i=@CAVIUMNETWORKS.onmicrosoft.com header.b=\"CQa5GB/1\"; \n\tdkim-atps=neutral","spf=none (sender IP is )\n\tsmtp.mailfrom=Jan.Glauber@cavium.com; "],"Received":["from bombadil.infradead.org (bombadil.infradead.org\n\t[65.50.211.133])\n\t(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256\n\tbits)) (No client certificate requested)\n\tby ozlabs.org (Postfix) with ESMTPS id 3xjfyn52HBz9sQl\n\tfor <incoming-imx@patchwork.ozlabs.org>;\n\tThu, 31 Aug 2017 21:19:13 +1000 (AEST)","from localhost ([127.0.0.1] helo=bombadil.infradead.org)\n\tby bombadil.infradead.org with esmtp (Exim 4.87 #1 (Red Hat Linux))\n\tid 1dnNV8-0007aL-5L; Thu, 31 Aug 2017 11:19:10 +0000","from mail-sn1nam02on0614.outbound.protection.outlook.com\n\t([2a01:111:f400:fe44::614]\n\thelo=NAM02-SN1-obe.outbound.protection.outlook.com)\n\tby bombadil.infradead.org with esmtps (Exim 4.87 #1 (Red Hat Linux))\n\tid 1dnNV1-0007YW-4o for linux-arm-kernel@lists.infradead.org;\n\tThu, 31 Aug 2017 11:19:08 +0000","from hc (88.67.130.225) by BN3PR07MB2578.namprd07.prod.outlook.com\n\t(10.167.5.6) with Microsoft SMTP Server (version=TLS1_2,\n\tcipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.13.10;\n\tThu, 31 Aug 2017 11:18:38 +0000"],"DKIM-Signature":["v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;\n\td=lists.infradead.org; s=bombadil.20170209; h=Sender:\n\tContent-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post:\n\tList-Archive:List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:References:\n\tMessage-ID:Subject:To:From:Date:Reply-To:Content-ID:Content-Description:\n\tResent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:\n\tList-Owner; bh=pMlXMMU0Np5lUq+vSqB/hgogJeHKvmPfiVwR9rcNIfY=;\n\tb=Uqr4L3gqdOBrgR\n\trkLyex8aM7PwIF+sRv8BK2Qy2SEYmTnmZTXFENy8R8PCB6wb1Uj6KaI30vu5r1eMHSlUwtuKaCwGs\n\tciVFVICUbPzBCV49X0fKrwdpFZV7bJHu9o5ziiVscHRFnxMYF33AuD4ygFhQT+PELa8KbFSpYxGNd\n\tQB7HFcGdCfi/qSSyr75A42+lIem0XMmB6Cf00brtFFZyin1Y3Z0Y5YHgfeVx8ZKZp8Qy76nqXbuv5\n\tueITxbfUzcy5qpMv8Zh9rs7CfLoq6pmifwAQiabyhbJJlU0DX0rdAtXBoHMFz4UXuBmyK9NEv8hDw\n\tWLeoA0Y/Fr6V77ikfHJg==;","v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=CAVIUMNETWORKS.onmicrosoft.com; s=selector1-cavium-com;\n\th=From:Date:Subject:Message-ID:Content-Type:MIME-Version;\n\tbh=o0SPCGLKLLnI58pM3Nq4XijarIMSUuJ+05Wb0xAg7xA=;\n\tb=CQa5GB/177aq6odHfyPPo7MnJ7Hi9DCqMeA6OCAzqKXdZDQcJIl+Fhox29F2aUAKjQFk4evWMW+ybr+u28bvKpVMdndSiSXNS49QzCSQR0A04aKU8cly2amPCU5LP86CNd84yOOxLUOtoFxgybQUkSjJhb6qXFvDtUgVC6nVtpU="],"Date":"Thu, 31 Aug 2017 13:18:27 +0200","From":"Jan Glauber <jan.glauber@caviumnetworks.com>","To":"Mark Rutland <mark.rutland@arm.com>","Subject":"Re: [RFC PATCH v9 5/7] perf: cavium: Support memory controller PMU\n\tcounters","Message-ID":"<20170831111827.GD15906@hc>","References":"<20170829131238.4988-1-jglauber@cavium.com>\n\t<20170829131238.4988-6-jglauber@cavium.com>\n\t<a89f597e-885d-a8bd-f6ce-452d7025cb20@hisilicon.com>\n\t<20170831095746.GB15906@hc> <20170831103119.GC15031@leverpostej>","MIME-Version":"1.0","Content-Disposition":"inline","In-Reply-To":"<20170831103119.GC15031@leverpostej>","User-Agent":"Mutt/1.5.21 (2010-09-15)","X-Originating-IP":"[88.67.130.225]","X-ClientProxiedBy":"VI1P18901CA0013.EURP189.PROD.OUTLOOK.COM (10.173.66.151)\n\tTo BN3PR07MB2578.namprd07.prod.outlook.com (10.167.5.6)","X-MS-PublicTrafficType":"Email","X-MS-Office365-Filtering-Correlation-Id":"a57dfc10-c67d-41e9-3153-08d4f062080c","X-Microsoft-Antispam":"UriScan:; BCL:0; PCL:0;\n\tRULEID:(300000500095)(300135000095)(300000501095)(300135300095)(300000502095)(300135100095)(22001)(2017030254152)(300000503095)(300135400095)(2017052603199)(201703131423075)(201703031133081)(201702281549075)(300000504095)(300135200095)(300000505095)(300135600095)(300000506095)(300135500095);\n\tSRVR:BN3PR07MB2578; ","X-Microsoft-Exchange-Diagnostics":["1; BN3PR07MB2578;\n\t3:M1UiH3e7b75Fp4h5w//8e/b0rpn1eMmPmVwHwGN2La9ERqK5qaiLJ7JxrvRQl6Y1NzaGoIWKfLGmCSG6F+5icxRbmh06eNV8t4KMx7+aKqjEMCrkq+1AjOiOGHNBwmQOTdmrLAN8n6SwCUs1ufRPLceoMqBqxFTPqcrXPbESE+pnMUwRGazl1NRBMNNiAf0P1XJ2dqkBkHG3O3cDuuPyofAIEDBogQ0vHwA15SmiDmu2VwxKMKJx1mc/xgc54mDu;\n\t25:o+LrCGdWfotBu9aDuFVy3kP6AME8n7iUSxOpVmKdDrbzZyAZEbDaIKrE6/tpoQkAt0e2Te+R3gkKwqq6Uy3c42/94DnKtxWg/0Y87EJDcVq4MaFN0stH5YNUfvPhhGWdA1Ju2OHaupskRBAU07mvBKyT75U6gTSib9hReV9rh8KbhVKzjZqRS/bplFgYBJzGGKNBGJMIDbM8FrwvqzH42x/EKEJQGCz/1shQBnwF0PE/fvN4GBXddnq+1UOx58w93zMW8FqfjV0g3XaRq4uoXV431bsxrb1lkzQ5sB3yxM+SKXbOdRO4FzVfXhhm/0/+3MWuyzT/0ixXstvXcqUJBQ==;\n\t31:AjALZsVvtcyG3lncWqioBo7UEilxqO6XdOJ5by0+yGD3cnNsiGs+/MY4ft5HdjHKJaabJlRPKhYlUNjXq6KuQfTJb3B0ptdI4hpF5HbA3bfbypu1Nbg5P7ap+gpyACtXRxy/HWJJxsix0TeqHHT6Dy8zaH71w4nNCMdhTs8sgCH6PtZRjeH7B1u58lnAwJGaUF+XXt3QUnLeEkWan+VzrnwI5+y3sNxpTSH+LrU9hJI=","1; BN3PR07MB2578;\n\t20:4OzrsZGKCaRDD9p4+uSuFugkXH20NUBLd098nFfBVArxkvJGaX0HomO8rfniVF0Y0XpgPm59DSvPZZs2MiwM+WyNmvdOf3B46GgtQUUuNQof7p8LhwgH0sT7zILIM9ZwgMIgu8TFQdjMXzxDsYCdd2+VZBME+gNTZECSslW9rFsnhvg3qIxkJje2327EQ2MV1lPRwrPjXGD2j1yrnDe0bIRgBWY2o4Rd6zUZ1piQws0l7FQ8Yvi77VuLmnpCixJvYW3tyPPYg/IwGZvFhB10PykF1IGCM0sc4dqqgF9rseRzZgpJuMtogLz5Vrv8kLlkA79GYLbVmx/FDi9ORriwjRj7OJGLwDEVP5cPAKIAOUZqDehcgFMea1pyt/LotLBJSX+cf8rEqSxWzoV215tU8oBhtUxo1XnCc9GrlYk63V4CDU58v7XrirX/HPL4qxhB8DorFBzVIXGUoNO/Umrwy8g12rFzonZW5ZO/xT7iugcN1XFJBEPePa39+ROIfrulTMWRbtFmUda5W0VkdYbKS/CnCLIiNBGvdHkKCFU6g5NU4Dy/ozWMdP+ng2+htMAhl5jFyfNykCSnm4OVqJH6rK3nAVLPLl7WRj1eLbQAkdc=;\n\t4:LqrnQchTkHZL5CkcJVCqBkVf6Sib6Fce5DhEOO8JXxlZqH2zGJJYKXFvkMfwBGwLZmFPJeqSI0Uh9DfncSbHcWyjT/hPqSUxgRDDFhAaS3AIlTYJsbgqoO98YnGc5O4U6GQB1nfmA3S8gy0PD4YD9okd6OlW5Kyt3aU8zQFVRsSfWIO/Fc8etVDfXIwJ7vy2Tmsu0GNvS8PevsaZlYxJ4EoZlc6HGu+oKwiTZge7LJk84jtoJPyTpPo6V4RARNlCHS+kwuh41XbyfcgVslupWul0mLQkINaK9cIexy8NX5E=","=?us-ascii?Q?1; BN3PR07MB2578;\n\t23:bHkhmIrAnItUw/B5VVxO1KSxCgDWLv8vaYwgyhA3g?=\n\tqxpnV+rh7CXL26y42bV8ac7nioVZyezonLVyPaTsectULTqiSEEx/An5xx+dq25azDmz/Bs/SovtOsfTNPwJwr8YfZS14ZiE+6/bitTff8SWFyE+uh5HYT/EnieeAcynedAZ53vazY8ifgQ4OCHefQdgGGD0pN6Ou6gc7U4L0w1RSjTvL14ES0HJRzMUh3Jwn80yTw59W77nVo51wc7P3toj1a1b6lDPjZFYdI0jwljRqoYwjDIfoBssO9GZMOrO8o3V81mZgNZqulII6SO9UA6dbVLOmGV/xyd3H189ktSCPlVx37A0WMuu0BvdfqUAV+nGOTVHLwWDG+aEhu0QP5d1++MgTwoSYZBLXps0PTDoXmf6GtjQuwJsA5bqaiMcjWcwV8YfSemb21B7FGz1IOKMt+asfJ0SPp8evqf3OUP+EIEKp5bxovpBLS4W26ctVEYvT2TPbxiefFRov9irlDgnroNxz0REFAU7AMUcPMyvUAzB+Sa1WAUdATzcFajdgCouOVj88MSvPrFTmDRdS4MrsZQv/wBJJqq+j56pGO9OA6kmsN3CBBw9fjLMCI6yDfXBPQ5idWO9pOwaNbGJIlApSGcCA/PP320cP0x/rsQVmyeStl6clQ8y3DHsGGEO0dsNlQEHlu/MVIIW1o4Ci4NUiayx/Jkghf462RuVfow2MgIH0FVhbCkq/eRgpNqYp1DIaE1+waP2NOMkZ2UB3d87sEpgEBZ/ohtEScgduDrk0NtYBI1TARXnkxGhQrKoEaBx7CP/dNK8hcxu9Z/DjVjwJylmn5SRiQPcbPzUcf4ljbyojj74spCWsEJIInN965/NLZCN39bHuDCk2VGmcyvSNmKq7TyOaSSO4w6Kfsvrj7m8d2fYm8Ykju/9RhOGp3WWX/cWy80J2q5v5DmdXHB0jlctu1Fvoymxe8/mOEq0zzHxgwc0b+cuVhkvknC+f4fhNT1X7jyzFRB0d1/ZGigY1ryWwZc7Xw4GyMxpKcW1HCWH6TGkz0sfKCdRyNKZo3klhKh9QuShiF2zldtWZqqMkdJCQW9BKeIOHK0OHrjUOLh6y9pM6Ko4PG9wM/jXZxDsfm5og40QSLVzAM6S75bUdGnIeN5kB7czFC2llcRK8GlqOrDx3Y6jA3wxpzfncT6xtnWfSPtvw+AEwKXvgMQs5BQDLambMN7GzCqACIkOjU8ZUTD2pA/6bqwV2iHYwQ=","1; BN3PR07MB2578;\n\t6:t/llJAUwElxds7g/EFQUyaRMPAEP3alhQE0yDPCYkiLFr1NmgNNj1g97roski7/eqcO3Ue9FRb3rqP57Am96ex478CMOcZo7oSA0WZxyq5xFmVcn6fVfCvDQOYzZJ1Nk9F1yown0oghA6utk5gOey9X9Pq9teOZFX2M2Bczt7i5MoIIEjIVpC7+w/rcXYEcwcaiyrMAIHlC9gpjYZbSMRd5/UBEa6J1Lk/ErfhGqOJc/eMUSZwoJV4Ellwb8d7jEKCJ3oyhV2j2lUhTrSJYzVIPk91NTPN3kfhGgCLpxSWuPQBLboqizJPJ6EfbyJBltpjSjavObVsIYgRjhvcWxNw==;\n\t5:eDTB6hn2FH7SEQ+OYNcYJ93DYrAjp0bqi41bk1MJC3f2Y8Dhn5OUCSDs6b7ldCMXfwbaF0u6vrV/V9vf/JAHHOAkBBf9dwVn4+dVt/yZWrSQ2KSbaj/lzFd6zn9rz9AM6LRCE8/Ybk2GnDAW6vxneA==;\n\t24:eaxhsUwkh873yq5BYSdZ/4aBegsopUflMNlLlG8H0ag2TR5hjSxQ3Aanl6s+7yBDUwW/5wmL72+JFm/Ev7NQ+k1ZowHSkLUSCE4ujDUA4VA=;\n\t7:FxmAwqFonwPBmSmNWFES1y3/wl/QCVrrSSwyhHgQ/srejtyCW9Somt4LPJOEMQ7e8E0PhpNsuXx+25E6JoPAszLhFBT+VKxf0nmlQHkgj7EndrJk5TA/WwJQ0Kc2TniXifti8/NFMNXvOKgGElmmv3PILw7desIuAbUFvLbCW7QFuUl0JesJLhDcDmgVn9VBB8wvwepTtC+jTvUIkgNiAFcKq1dEYjxPVHoALRB/TTA="],"X-MS-TrafficTypeDiagnostic":"BN3PR07MB2578:","X-Exchange-Antispam-Report-Test":"UriScan:(17755550239193);","X-Microsoft-Antispam-PRVS":"<BN3PR07MB257859A809886FF975477293919D0@BN3PR07MB2578.namprd07.prod.outlook.com>","X-Exchange-Antispam-Report-CFA-Test":"BCL:0; PCL:0;\n\tRULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(601004)(2401047)(5005006)(8121501046)(3002001)(10201501046)(100000703101)(100105400095)(93006095)(6041248)(20161123558100)(20161123560025)(20161123555025)(20161123562025)(20161123564025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095);\n\tSRVR:BN3PR07MB2578; BCL:0; PCL:0;\n\tRULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095);\n\tSRVR:BN3PR07MB2578; ","X-Forefront-PRVS":"04163EF38A","X-Forefront-Antispam-Report":"SFV:NSPM;\n\tSFS:(10009020)(6009001)(24454002)(189002)(199003)(42186005)(50466002)(4326008)(3846002)(6116002)(5660300001)(189998001)(23726003)(33716001)(54906002)(53936002)(55016002)(1076002)(53546010)(47776003)(9686003)(106356001)(25786009)(6246003)(6496005)(478600001)(105586002)(110136004)(66066001)(8676002)(4001350100001)(68736007)(93886005)(83506001)(81166006)(81156014)(229853002)(305945005)(8936002)(97736004)(33656002)(72206003)(6666003)(101416001)(2950100002)(42882006)(7736002)(50986999)(76176999)(6916009)(54356999)(2906002)(18370500001)(217873001);\n\tDIR:OUT; SFP:1101; SCL:1; SRVR:BN3PR07MB2578; H:hc; FPR:; SPF:None;\n\tPTR:InfoNoRecords; MX:1; A:1; LANG:en; ","Received-SPF":"None (protection.outlook.com: cavium.com does not designate\n\tpermitted sender hosts)","SpamDiagnosticOutput":"1:99","SpamDiagnosticMetadata":"NSPM","X-OriginatorOrg":"caviumnetworks.com","X-MS-Exchange-CrossTenant-OriginalArrivalTime":"31 Aug 2017 11:18:38.4185\n\t(UTC)","X-MS-Exchange-CrossTenant-FromEntityHeader":"Hosted","X-MS-Exchange-CrossTenant-Id":"711e4ccf-2e9b-4bcf-a551-4094005b6194","X-MS-Exchange-Transport-CrossTenantHeadersStamped":"BN3PR07MB2578","X-CRM114-Version":"20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 ","X-CRM114-CacheID":"sfid-20170831_041903_290429_B45D1B57 ","X-CRM114-Status":"GOOD (  12.47  )","X-Spam-Score":"-1.9 (-)","X-Spam-Report":"SpamAssassin version 3.4.1 on bombadil.infradead.org summary:\n\tContent analysis details:   (-1.9 points)\n\tpts rule name              description\n\t---- ----------------------\n\t--------------------------------------------------\n\t0.0 HEADER_FROM_DIFFERENT_DOMAINS From and EnvelopeFrom 2nd level\n\tmail domains are different\n\t-0.0 SPF_HELO_PASS          SPF: HELO matches SPF record\n\t-1.9 BAYES_00               BODY: Bayes spam probability is 0 to 1%\n\t[score: 0.0000]\n\t-0.1 DKIM_VALID Message has at least one valid DKIM or DK signature\n\t0.1 DKIM_SIGNED            Message has a DKIM or DK signature,\n\tnot necessarily valid","X-BeenThere":"linux-arm-kernel@lists.infradead.org","X-Mailman-Version":"2.1.21","Precedence":"list","List-Unsubscribe":"<http://lists.infradead.org/mailman/options/linux-arm-kernel>,\n\t<mailto:linux-arm-kernel-request@lists.infradead.org?subject=unsubscribe>","List-Archive":"<http://lists.infradead.org/pipermail/linux-arm-kernel/>","List-Post":"<mailto:linux-arm-kernel@lists.infradead.org>","List-Help":"<mailto:linux-arm-kernel-request@lists.infradead.org?subject=help>","List-Subscribe":"<http://lists.infradead.org/mailman/listinfo/linux-arm-kernel>,\n\t<mailto:linux-arm-kernel-request@lists.infradead.org?subject=subscribe>","Cc":"Suzuki K Poulose <Suzuki.Poulose@arm.com>,\n\tDavid Daney <david.daney@cavium.com>, Will Deacon <will.deacon@arm.com>, \n\tlinux-kernel@vger.kernel.org, Zhangshaokun <zhangshaokun@hisilicon.com>, \n\tBorislav Petkov <bp@alien8.de>, linux-arm-kernel@lists.infradead.org","Content-Type":"text/plain; charset=\"us-ascii\"","Content-Transfer-Encoding":"7bit","Sender":"\"linux-arm-kernel\" <linux-arm-kernel-bounces@lists.infradead.org>","Errors-To":"linux-arm-kernel-bounces+incoming-imx=patchwork.ozlabs.org@lists.infradead.org","List-Id":"linux-imx-kernel.lists.patchwork.ozlabs.org"}},{"id":1760846,"web_url":"http://patchwork.ozlabs.org/comment/1760846/","msgid":"<20170831113508.GE15906@hc>","list_archive_url":null,"date":"2017-08-31T11:35:08","subject":"Re: [RFC PATCH v9 5/7] perf: cavium: Support memory controller PMU\n\tcounters","submitter":{"id":68474,"url":"http://patchwork.ozlabs.org/api/people/68474/","name":"Jan Glauber","email":"jan.glauber@caviumnetworks.com"},"content":"On Wed, Aug 30, 2017 at 11:03:00AM +0100, Suzuki K Poulose wrote:\n> On 29/08/17 14:12, Jan Glauber wrote:\n> >Add support for the PMU counters on Cavium SOC memory controllers.\n> >\n> >This patch also adds generic functions to allow supporting more\n> >devices with PMU counters.\n> >\n> >Properties of the LMC PMU counters:\n> >- not stoppable\n> >- fixed purpose\n> >- read-only\n> >- one PCI device per memory controller\n> >\n> >Signed-off-by: Jan Glauber <jglauber@cavium.com>\n> \n> Jan,\n> \n> Some minor comments below.\n> \n> >+static void cvm_pmu_del(struct perf_event *event, int flags)\n> >+{\n> >+\tstruct cvm_pmu_dev *pmu_dev = to_pmu_dev(event->pmu);\n> >+\tstruct hw_perf_event *hwc = &event->hw;\n> >+\tint i;\n> >+\n> >+\tevent->pmu->stop(event, PERF_EF_UPDATE);\n> >+\n> >+\t/*\n> >+\t * For programmable counters we need to check where we installed it.\n> >+\t * To keep this function generic always test the more complicated\n> >+\t * case (free running counters won't need the loop).\n> >+\t */\n> >+\tfor (i = 0; i < pmu_dev->num_counters; i++)\n> >+\t\tif (cmpxchg(&pmu_dev->events[i], event, NULL) == event)\n> >+\t\t\tbreak;\n> \n> Does this mean, it is the only way to map any given event (for programmable counters)\n> to a hardware counter ? What do we store in hwc->idx ? We have 2 additional\n> struct hw_perf_event_extra fields. We should be able to use one field to map it\n> back to the counter, isn't it ?\n\nHmm, I might be able to use hwc-idx directly instead of the loop, will\ncheck that.\n\n> >+\n> >+\tperf_event_update_userpage(event);\n> >+\thwc->idx = -1;\n> >+}\n> >+\n> \n> ...\n> \n> >+/* LMC events */\n> >+#define LMC_EVENT_IFB_CNT\t\t0x1d0\n> >+#define LMC_EVENT_OPS_CNT\t\t0x1d8\n> >+#define LMC_EVENT_DCLK_CNT\t\t0x1e0\n> >+#define LMC_EVENT_BANK_CONFLICT1\t0x360\n> >+#define LMC_EVENT_BANK_CONFLICT2\t0x368\n> >+\n> >+#define CVM_PMU_LMC_EVENT_ATTR(_name, _id)\t\t\t\t\t\t\\\n> >+\t&((struct perf_pmu_events_attr[]) {\t\t\t\t\t\t\\\n> >+\t\t{\t\t\t\t\t\t\t\t\t\\\n> >+\t\t\t__ATTR(_name, S_IRUGO, cvm_pmu_event_sysfs_show, NULL),\t\t\\\n> >+\t\t\t_id,\t\t\t\t\t\t\t\t\\\n> >+\t\t\t\"lmc_event=\" __stringify(_id),\t\t\t\t\t\\\n> >+\t\t}\t\t\t\t\t\t\t\t\t\\\n> >+\t})[0].attr.attr\n> >+\n> >+/* map counter numbers to register offsets */\n> >+static int lmc_events[] = {\n> >+\tLMC_EVENT_IFB_CNT,\n> >+\tLMC_EVENT_OPS_CNT,\n> >+\tLMC_EVENT_DCLK_CNT,\n> >+\tLMC_EVENT_BANK_CONFLICT1,\n> >+\tLMC_EVENT_BANK_CONFLICT2,\n> >+};\n> >+\n> >+static int cvm_pmu_lmc_add(struct perf_event *event, int flags)\n> >+{\n> >+\tstruct hw_perf_event *hwc = &event->hw;\n> >+\n> >+\treturn cvm_pmu_add(event, flags, LMC_CONFIG_OFFSET,\n> >+\t\t\t   lmc_events[hwc->config]);\n> >+}\n> >+\n> \n> Is there any reason why we can't use the LMC event code directly\n> here, avoiding the mapping altogether ?\n\nI wanted to avoid exposing the raw numbers (0x1d0 - 0x368) here.\n\nthanks,\nJan\n\n> >+PMU_FORMAT_ATTR(lmc_event, \"config:0-2\");\n> >+\n> >+static struct attribute *cvm_pmu_lmc_format_attr[] = {\n> >+\t&format_attr_lmc_event.attr,\n> >+\tNULL,\n> >+};\n> >+\n> >+static struct attribute_group cvm_pmu_lmc_format_group = {\n> >+\t.name = \"format\",\n> >+\t.attrs = cvm_pmu_lmc_format_attr,\n> >+};\n> >+\n> >+static struct attribute *cvm_pmu_lmc_events_attr[] = {\n> >+\tCVM_PMU_LMC_EVENT_ATTR(ifb_cnt,\t\t0),\n> >+\tCVM_PMU_LMC_EVENT_ATTR(ops_cnt,\t\t1),\n> >+\tCVM_PMU_LMC_EVENT_ATTR(dclk_cnt,\t2),\n> >+\tCVM_PMU_LMC_EVENT_ATTR(bank_conflict1,\t3),\n> >+\tCVM_PMU_LMC_EVENT_ATTR(bank_conflict2,\t4),\n> >+\tNULL,\n> >+};","headers":{"Return-Path":"<linux-arm-kernel-bounces+incoming-imx=patchwork.ozlabs.org@lists.infradead.org>","X-Original-To":"incoming-imx@patchwork.ozlabs.org","Delivered-To":"patchwork-incoming-imx@bilbo.ozlabs.org","Authentication-Results":["ozlabs.org;\n\tspf=none (mailfrom) smtp.mailfrom=lists.infradead.org\n\t(client-ip=65.50.211.133; helo=bombadil.infradead.org;\n\tenvelope-from=linux-arm-kernel-bounces+incoming-imx=patchwork.ozlabs.org@lists.infradead.org;\n\treceiver=<UNKNOWN>)","ozlabs.org; dkim=pass (2048-bit key;\n\tunprotected) header.d=lists.infradead.org\n\theader.i=@lists.infradead.org header.b=\"EhtdQcF2\"; \n\tdkim=fail reason=\"signature verification failed\" (1024-bit key;\n\tunprotected) header.d=CAVIUMNETWORKS.onmicrosoft.com\n\theader.i=@CAVIUMNETWORKS.onmicrosoft.com header.b=\"ikn1EU5d\"; \n\tdkim-atps=neutral","spf=none (sender IP is )\n\tsmtp.mailfrom=Jan.Glauber@cavium.com; "],"Received":["from bombadil.infradead.org (bombadil.infradead.org\n\t[65.50.211.133])\n\t(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256\n\tbits)) (No client certificate requested)\n\tby ozlabs.org (Postfix) with ESMTPS id 3xjgL04R2Xz9sQl\n\tfor <incoming-imx@patchwork.ozlabs.org>;\n\tThu, 31 Aug 2017 21:35:52 +1000 (AEST)","from localhost ([127.0.0.1] helo=bombadil.infradead.org)\n\tby bombadil.infradead.org with esmtp (Exim 4.87 #1 (Red Hat Linux))\n\tid 1dnNlF-0000Wa-B3; Thu, 31 Aug 2017 11:35:49 +0000","from mail-sn1nam01on062f.outbound.protection.outlook.com\n\t([2a01:111:f400:fe40::62f]\n\thelo=NAM01-SN1-obe.outbound.protection.outlook.com)\n\tby bombadil.infradead.org with esmtps (Exim 4.87 #1 (Red Hat Linux))\n\tid 1dnNlA-0000Jf-VY for linux-arm-kernel@lists.infradead.org;\n\tThu, 31 Aug 2017 11:35:47 +0000","from hc (88.67.130.225) by CY1PR07MB2587.namprd07.prod.outlook.com\n\t(10.167.16.137) with Microsoft SMTP Server (version=TLS1_2,\n\tcipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.13.10;\n\tThu, 31 Aug 2017 11:35:19 +0000"],"DKIM-Signature":["v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;\n\td=lists.infradead.org; s=bombadil.20170209; h=Sender:\n\tContent-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post:\n\tList-Archive:List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:References:\n\tMessage-ID:Subject:To:From:Date:Reply-To:Content-ID:Content-Description:\n\tResent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:\n\tList-Owner; bh=YDQMz8zZTwMbL4vJEb1gWbKtFP/WiGECwAd+b/i7aYI=;\n\tb=EhtdQcF2NykRu4\n\toKxiJUTnQCRoEXltcjbqLCGVBp4jLpHExvjonDlWcq9i4uGShZyhCEJdvylwnJ63qrhZoKH7xyIs1\n\tZ7RpPezOcmd0yEz26TZT5RYvn+tnBcnyLO9DC4rqM1RI8zsHPql0z7Asgdv1uN5862DbNtpDZ+naM\n\tRZhUfz56qN0sx9JFcy6bzH9ID9q2zX80/FIkEeYCmCWzSOnpkIRVBqqCrGI/Noe9QffWPEwBnXh27\n\tXMFEwKi6fxGmfhllCvNbnJAMowGpa63CxibiihKkOoHBkXD0zY6hauWnvwX0vXxfXIfwnP/RereSL\n\tQLRLzyASdmt6r8qDDWgA==;","v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=CAVIUMNETWORKS.onmicrosoft.com; s=selector1-cavium-com;\n\th=From:Date:Subject:Message-ID:Content-Type:MIME-Version;\n\tbh=0XYQZMTrkb3Bsj9vjU2xmB96202fDlObxbXTeZFwCLI=;\n\tb=ikn1EU5dOa+8phHPR4JaZ7IUFSqsSTGU0MG04qGPa9gcu+4EQLOt8PsKGYud19JlQLAd4itlyilq7HjwD3AORRQsQsDrgQ5ub46HunL4hN5pABnitredV3zfGy1/RE1W+dQvIlTiTys9ht/Jd7IZhgu28qxy8i7KP1aemllL0tc="],"Date":"Thu, 31 Aug 2017 13:35:08 +0200","From":"Jan Glauber <jan.glauber@caviumnetworks.com>","To":"Suzuki K Poulose <Suzuki.Poulose@arm.com>","Subject":"Re: [RFC PATCH v9 5/7] perf: cavium: Support memory controller PMU\n\tcounters","Message-ID":"<20170831113508.GE15906@hc>","References":"<20170829131238.4988-1-jglauber@cavium.com>\n\t<20170829131238.4988-6-jglauber@cavium.com>\n\t<09997d9f-0003-0eb0-63d1-9b31e26e2229@arm.com>","MIME-Version":"1.0","Content-Disposition":"inline","In-Reply-To":"<09997d9f-0003-0eb0-63d1-9b31e26e2229@arm.com>","User-Agent":"Mutt/1.5.21 (2010-09-15)","X-Originating-IP":"[88.67.130.225]","X-ClientProxiedBy":"VI1P189CA0024.EURP189.PROD.OUTLOOK.COM (10.165.188.37) To\n\tCY1PR07MB2587.namprd07.prod.outlook.com (10.167.16.137)","X-MS-PublicTrafficType":"Email","X-MS-Office365-Filtering-Correlation-Id":"9fd67915-2e0a-4c3d-591c-08d4f0645d20","X-Microsoft-Antispam":"UriScan:; BCL:0; PCL:0;\n\tRULEID:(300000500095)(300135000095)(300000501095)(300135300095)(300000502095)(300135100095)(22001)(2017030254152)(300000503095)(300135400095)(2017052603199)(201703131423075)(201703031133081)(201702281549075)(300000504095)(300135200095)(300000505095)(300135600095)(300000506095)(300135500095);\n\tSRVR:CY1PR07MB2587; ","X-Microsoft-Exchange-Diagnostics":["1; CY1PR07MB2587;\n\t3:i4iweamjgGOWjyTjFRUkSARMw3NjILbneytR+CCPpKNCPwzhtv9/76aPgBA5E+dfVdKB9HaDOMHPdTO95/aI5wRlDpbPhBS+khcTtusKWpp3twhxNJsxLQUm1UcWh9PNsw2QLTNExLPttRatPkhl8pqxXp5guFXy4Pwss+f61uC9dLo6wWP0Yawf/Ipg/2VQeF12JIwmrMXQ4QBAQr2sS+PLYZXSIWZk23M/gIe9HjrnpGBI1wVEGVBdXk5SJM98;\n\t25:OiKY9l3B6GHoj0KfR47qNNBUteT/6788sRnzOw5tJ/7YL2s3u7bmyQfpoxhg35cZmiD41V//BulbYbT2FCDzuSqd11OBNYj2eR7p9CeztC+iZfOvYlSB7KXoztsxANOI7NEfmcXTffA4bs57PawRSFwOxXCNqs+9beTP3qpDyRA96Lj0ATcwIZcTT3jOJ2NcP7xiaba34xm83/xiWx3QMrSKM8rt+8mPiRI8uut7ms0y7fN540RKMjssd1ibficw+nJKUoA0S3bqgXGQEtl9qfzxiltzEb/1O+lkgQAg1La4LuLx/XuynmHGtwU1tvVsiNkpLnnSEPxY5MNnu8LPAw==;\n\t31:de3KZ7Rafg622aJd0acI2HevI3PSnDFMCOUkGVp3LRK0uyf7vURX19OfMZnc6ehowGBEKd158JYC1+4oxWv1YTstjhOcHdPWjolHeQjvOb1p5lEUrIN6Ou6gPMB7uGPjEtcMhAQMoh8cAg+orNQHjpt9l5v6yir2Ji+Mydg7e/O9x7L0jc97u8kj6fNo6ACRO3wMRw9kVdajjc3ucz5GhMIw1ur1YspDflcTnW+Zf40=","1; CY1PR07MB2587;\n\t20:YTCFA5VPbZw9SGDcMayVMG9mUpofCevwv2giM345fc7956Fn3tO09XBlCftAsngjJskC5MzEeA2gVCqeCfJbZgkyxL741rCyhWEpn/AUL6MiNzGNPLpuAbvt8ixCr5crgERKFrOl7wW0YNoPrRt5jgKtmrD61h3zyncqkVrUVaZGeN9U8DN/sE+56FSJ+Z2LEqh5jmoyzYaaCwkrveemF49OwTG52PItVk+r2XKfA1GrG/HWKh9fJzQ7VQKtzXk8g1jAbAOUSemENGKI5EzKP5SH2W9G1WuSJSrhLBTOuyMMcpzXE4Mkh07gpjs8sc16rzI+DVyiousm2TWrilOVgQ8v+GKXtTwmMdZ4hvBWWpyNE88ONJI9PKjFt5BLqO/7hm62NIevExgi4PUkbe8CwSLt/CnkzwYLPaMXev7TcPaxCGZsewqfgF+mty4Blsoiq7upedbvb4nqDM1RM4TM+C8GiEgCWgUMxyictz+NVpV3iSmZ0+r8c7drq72Dno1bU+4PGnkHazhSTPj6kuCQ36tBtNGJ01O5OudnvHIG1k1XCrMc0LE5FwT3QIMv6bjMO5dFRykZpKfpn/yfI7KADWEvRUwNb/ycUpq7hxr2W9U=;\n\t4:la9MfSFOT+O3uDAnB1mQWmZW9GsqidWbwDZ38xqegGpsJHr9I8xHcOTClI6jVrCPz0UsWtRIkPg9rlTZZdOn1w6moxNQJlLYJIFCcac86a0H02kk6oDGZvXfcN77MxpK1CmpFiUnOHzSF6Ex77pOjEBhwuIo0ng12ZtMjSGiBLu9nkpZxPjK9MIeAk/0w2nDfPql4DXpomIeTFkSFEBgS8lEK79dtxfHZupwa77Wkt12bOcaX5V4loIw/NJ3vhN2","=?us-ascii?Q?1; CY1PR07MB2587;\n\t23:GJQwbioV3ijH4b+bh4Agn7mvRkjR9ExQEKD2oLhly?=\n\tdfMcsSesjEnMpRTHpKk93TBgNve/fJrlOox9IeBel98TfTir2h3N5FYHUZG/hMc5ge56nkO8HFYkOFcH1McUNfjYD5aPO46Vj83hrm3TROO9QqXNzpvB25Zz+7pt0Lz9Kf5Jj97FIykZachVUdZEqy05QcZU2w+4AdUzTEsoBwH3Ctm+2h9N/bAQuZ12hP7C05RFLe+qo7oGdKm8ZUgTV6YL3mqBNN2+tuDmX0/jvNhRYLn+OYwcpLc3Qbdxvi+SNMZ26T1Bi/6tPU0UOMu3NfwVZPFv0OFMWRFQLeIJEir4aRgtfZzzUkMNSIlOSh3jlDQftB+5FXVuZT8p96BOg6D4GLTtfMo7zHK9iR7RY+NTUtkQ7rCndquHkv0y3u+qnIu2Za3PxUJL/vFXRbGHrRTq4DUqQ7pDV/LUoUTrX3EyAYrbCJDGVanNsDn8qcsn+KZpAl/GZBuXNBP6RppkpxGC006kLSvjMx4m6bCZmSnK2zXDqHut2f2Z+zuGQHkQADvu3QwTA+/UrMiv3iLiR8FWsnqIhFGuMCaijwAvDJHSD0ZtbKTRSu6XqUo1Xtyw13O27hbntLmdJnYaLbXwvaHm2aLEZ7uzZnALkax4iKgcx6DhFgGjfqWpWseDXjaZClc4ikxtQ++81GSB3VyeuNMCggry45SOfziS6hzGOHelo8m/l57zHjeykvIdklI8mtcrL3CQ2LdLEWKoAOLjwE1NBMeQsJEgfiv3M1fns3iDgpmOp9EkRxfs2w8ye8W63OoXYwTMTMsBra1dEEnqOvDQoeKxpx+HEyhQEXpnGRyA9c07ICTr9dzqY0NOjHmhyhtuvv2dChR+H1Aq6DCmw4aX0nbsR0/wo2LsXmLZaEcBSWsX1q/1NgNMRkibdh/QSPTEmEQiThc0PFnq8U/gLTHY2OQhpVAvJ461hJLjxPRPHpOeUw2779yEzpBDdAzAQYTTx8D3Z0DLEaCFlmN07gFdw1tN59KIZBrAR//kEsVp5NSGSA9UXJIFhhaksbAIon0Nyi8R9jINj22vYQOKdjfTWVVmOJagau7GWhpAYTMh+brcjfnF2wvzWLttPftlAxmHJfEFNdUEwASQB6NeyllVLLs6SUEX+fIoAnq4G1ipj9TFE5LK7gKWE5CgMViq+ngmKcIRJH3fKYCyS8+zcA4ebaNaYyPOASWYnx8Qm5tWkuvU4lJF/uLBOyg2DPc8ac=","1; CY1PR07MB2587;\n\t6:NGIjY/nTbmqUa43YunAT78I87f7Arl3Agk5Au9W4J7CKYzt3WPSywtS3wQ2HOqK8K2t+DwaS3322g60robib8MmSuYf1FPqJqOCrPxy9G10NpXTNqlxIeaH+pneEO4rwB4l1tph1ag8KHcQV+boUgx+Nc7Z8bA0mplfL8R5f9+XZQIj3iYcNHu0FNccvbcJTOHoFepDSLqsehaYOwaXZv1j3CXYXQ3HL6WJH5HbQXBx1RXPoCeJwjIoRIuyNlXCZoVOXpLX9Ho6TYlc2PTJRDome9UnftXe1ykX/VSTsSfitGfN5E6wWKcU1vgPHiTUOnh1xg6nBWB9lXHb8m/qdGg==;\n\t5:WcGrUotZqvf1SF022hetqFlI78JcMTuV/OA1yhqrikv2JmrhSx3wqkUZ5ux++JiNT5psflGOlfropqSd/xBDQdwXsbMDGpt/4xGwv4qPTppigyuzQ6LMPQ+u434COPRvHIO/SbeDcChXnm6vZk1KJg==;\n\t24:l6rExVVvZi7STlIcV7NhJYkW4bBQOQRKFBKxUqfvaSIzOEyR2UoZs6pWdplfWZavCob4FIoodnvqOBolWQfUvmPFzFNz6Vwe6uxlteuc/t8=;\n\t7:h2IGfnK5pGnDvuamAPKxTttwRmpjV59I9E9CUbhtiICNtLTcRllQkExvXgvGkFclCyjrsZbAhgvWgyCfYVveiO+FvMllQ8ydztUeGNsTjWqh3HX3IASZvtleuWphePjkmpJhD2gZxCcdDn43IPUm9Bsk6roGae1zaTm3MUJJ9yUhW5dmIdduaVq5YQJ0oCA/Q93+UijkRtn16KR+3b3Q+bpQ30L8OVbrqA6Nezzl7p4="],"X-MS-TrafficTypeDiagnostic":"CY1PR07MB2587:","X-Exchange-Antispam-Report-Test":"UriScan:;","X-Microsoft-Antispam-PRVS":"<CY1PR07MB258717F04A17BA06C68B3701919D0@CY1PR07MB2587.namprd07.prod.outlook.com>","X-Exchange-Antispam-Report-CFA-Test":"BCL:0; PCL:0;\n\tRULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(601004)(2401047)(8121501046)(5005006)(3002001)(10201501046)(93006095)(100000703101)(100105400095)(6041248)(20161123564025)(20161123560025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123555025)(20161123562025)(20161123558100)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095);\n\tSRVR:CY1PR07MB2587; BCL:0; PCL:0;\n\tRULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095);\n\tSRVR:CY1PR07MB2587; ","X-Forefront-PRVS":"04163EF38A","X-Forefront-Antispam-Report":"SFV:NSPM;\n\tSFS:(10009020)(6009001)(189002)(199003)(24454002)(33716001)(110136004)(106356001)(229853002)(105586002)(54356999)(6666003)(9686003)(53936002)(6496005)(6916009)(54906002)(55016002)(42882006)(66066001)(81156014)(81166006)(25786009)(42186005)(101416001)(47776003)(76176999)(2950100002)(2906002)(107886003)(6246003)(33656002)(305945005)(8676002)(7736002)(50986999)(68736007)(6116002)(23726003)(53546010)(3846002)(4326008)(8936002)(189998001)(97736004)(4001350100001)(5660300001)(50466002)(83506001)(72206003)(478600001)(1076002)(18370500001)(217873001);\n\tDIR:OUT; SFP:1101; SCL:1; SRVR:CY1PR07MB2587; H:hc; FPR:; SPF:None;\n\tPTR:InfoNoRecords; MX:3; A:1; LANG:en; ","Received-SPF":"None (protection.outlook.com: cavium.com does not designate\n\tpermitted sender hosts)","SpamDiagnosticOutput":"1:99","SpamDiagnosticMetadata":"NSPM","X-OriginatorOrg":"caviumnetworks.com","X-MS-Exchange-CrossTenant-OriginalArrivalTime":"31 Aug 2017 11:35:19.7910\n\t(UTC)","X-MS-Exchange-CrossTenant-FromEntityHeader":"Hosted","X-MS-Exchange-CrossTenant-Id":"711e4ccf-2e9b-4bcf-a551-4094005b6194","X-MS-Exchange-Transport-CrossTenantHeadersStamped":"CY1PR07MB2587","X-CRM114-Version":"20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 ","X-CRM114-CacheID":"sfid-20170831_043545_184171_D47FE7FD ","X-CRM114-Status":"GOOD (  17.34  )","X-Spam-Score":"-1.9 (-)","X-Spam-Report":"SpamAssassin version 3.4.1 on bombadil.infradead.org summary:\n\tContent analysis details:   (-1.9 points)\n\tpts rule name              description\n\t---- ----------------------\n\t--------------------------------------------------\n\t0.0 HEADER_FROM_DIFFERENT_DOMAINS From and EnvelopeFrom 2nd level\n\tmail domains are different\n\t-0.0 SPF_HELO_PASS          SPF: HELO matches SPF record\n\t-1.9 BAYES_00               BODY: Bayes spam probability is 0 to 1%\n\t[score: 0.0000]\n\t-0.1 DKIM_VALID Message has at least one valid DKIM or DK signature\n\t0.1 DKIM_SIGNED            Message has a DKIM or DK signature,\n\tnot necessarily valid","X-BeenThere":"linux-arm-kernel@lists.infradead.org","X-Mailman-Version":"2.1.21","Precedence":"list","List-Unsubscribe":"<http://lists.infradead.org/mailman/options/linux-arm-kernel>,\n\t<mailto:linux-arm-kernel-request@lists.infradead.org?subject=unsubscribe>","List-Archive":"<http://lists.infradead.org/pipermail/linux-arm-kernel/>","List-Post":"<mailto:linux-arm-kernel@lists.infradead.org>","List-Help":"<mailto:linux-arm-kernel-request@lists.infradead.org?subject=help>","List-Subscribe":"<http://lists.infradead.org/mailman/listinfo/linux-arm-kernel>,\n\t<mailto:linux-arm-kernel-request@lists.infradead.org?subject=subscribe>","Cc":"Mark Rutland <mark.rutland@arm.com>, David Daney <david.daney@cavium.com>,\n\tWill Deacon <will.deacon@arm.com>, linux-kernel@vger.kernel.org,\n\tBorislav Petkov <bp@alien8.de>, linux-arm-kernel@lists.infradead.org","Content-Type":"text/plain; charset=\"us-ascii\"","Content-Transfer-Encoding":"7bit","Sender":"\"linux-arm-kernel\" <linux-arm-kernel-bounces@lists.infradead.org>","Errors-To":"linux-arm-kernel-bounces+incoming-imx=patchwork.ozlabs.org@lists.infradead.org","List-Id":"linux-imx-kernel.lists.patchwork.ozlabs.org"}},{"id":1760857,"web_url":"http://patchwork.ozlabs.org/comment/1760857/","msgid":"<20170831113803.GF15906@hc>","list_archive_url":null,"date":"2017-08-31T11:38:03","subject":"Re: [RFC PATCH v9 0/7] Cavium ARM64 uncore PMU support","submitter":{"id":68474,"url":"http://patchwork.ozlabs.org/api/people/68474/","name":"Jan Glauber","email":"jan.glauber@caviumnetworks.com"},"content":"So what about the general idea with the wrapper, does this look sane?\nAny objections to that?\n\nthanks,\nJan\n\nOn Tue, Aug 29, 2017 at 03:12:31PM +0200, Jan Glauber wrote:\n> I'm posting this as RFC following this discussion:\n> https://marc.info/?l=linux-arm-kernel&m=150099526923838&w=2\n> \n> I've implemented the wrapper for the PCI devices and put it under\n> drivers/soc/cavium which I found more appropriate than drivers/misc.\n> \n> I was not able to find a way to build the EDAC driver and the PMU driver\n> with all combinations (builtin and module) so I limited the build options\n> to module only. The problem is that the select from EDAC or PMU\n> sets the wrappers build type to whatever EDAC or PMU choose.\n> But all parts must be either built-in or modules, having the wrapper\n> builtin and calling into module code will not work. If there is a better\n> solution please let me know.\n> \n> The PMU code is the same as in v8.\n> \n> Add support for various PMU counters found on the Cavium ThunderX and\n> OcteonTx SoC.\n> \n> The PMU driver provides common \"uncore\" functions to avoid code duplication\n> and support adding more device PMUs (like L2 cache) in the future.\n> \n> Changes to v8:\n> - Wrapper for PCI devices\n> \n> Jan Glauber (7):\n>   edac: thunderx: Remove suspend/resume support\n>   edac,soc: thunderx: Add wrapper for EDAC LMC PCI device\n>   edac,soc: thunderx: Add wrapper for EDAC OCX PCI device\n>   perf: export perf_event_update_userpage()\n>   perf: cavium: Support memory controller PMU counters\n>   perf: cavium: Support transmit-link PMU counters\n>   perf: cavium: Add Documentation\n> \n>  Documentation/perf/cavium-pmu.txt |  75 +++++\n>  drivers/edac/Kconfig              |   3 +\n>  drivers/edac/thunderx_edac.c      |  92 +-----\n>  drivers/perf/Kconfig              |  15 +\n>  drivers/perf/Makefile             |   1 +\n>  drivers/perf/cavium_pmu.c         | 680 ++++++++++++++++++++++++++++++++++++++\n>  drivers/soc/Kconfig               |   1 +\n>  drivers/soc/Makefile              |   1 +\n>  drivers/soc/cavium/Kconfig        |  14 +\n>  drivers/soc/cavium/Makefile       |   2 +\n>  drivers/soc/cavium/cavium_lmc.c   |  53 +++\n>  drivers/soc/cavium/cavium_ocx.c   |  49 +++\n>  include/linux/cpuhotplug.h        |   1 +\n>  include/linux/soc/cavium/lmc.h    |  12 +\n>  include/linux/soc/cavium/ocx.h    |  12 +\n>  kernel/events/core.c              |   1 +\n>  16 files changed, 933 insertions(+), 79 deletions(-)\n>  create mode 100644 Documentation/perf/cavium-pmu.txt\n>  create mode 100644 drivers/perf/cavium_pmu.c\n>  create mode 100644 drivers/soc/cavium/Kconfig\n>  create mode 100644 drivers/soc/cavium/Makefile\n>  create mode 100644 drivers/soc/cavium/cavium_lmc.c\n>  create mode 100644 drivers/soc/cavium/cavium_ocx.c\n>  create mode 100644 include/linux/soc/cavium/lmc.h\n>  create mode 100644 include/linux/soc/cavium/ocx.h\n> \n> -- \n> 2.9.0.rc0.21.g7777322","headers":{"Return-Path":"<linux-arm-kernel-bounces+incoming-imx=patchwork.ozlabs.org@lists.infradead.org>","X-Original-To":"incoming-imx@patchwork.ozlabs.org","Delivered-To":"patchwork-incoming-imx@bilbo.ozlabs.org","Authentication-Results":["ozlabs.org;\n\tspf=none (mailfrom) smtp.mailfrom=lists.infradead.org\n\t(client-ip=65.50.211.133; helo=bombadil.infradead.org;\n\tenvelope-from=linux-arm-kernel-bounces+incoming-imx=patchwork.ozlabs.org@lists.infradead.org;\n\treceiver=<UNKNOWN>)","ozlabs.org; dkim=pass (2048-bit key;\n\tunprotected) header.d=lists.infradead.org\n\theader.i=@lists.infradead.org header.b=\"HPVkn6vC\"; \n\tdkim=fail reason=\"signature verification failed\" (1024-bit key;\n\tunprotected) header.d=CAVIUMNETWORKS.onmicrosoft.com\n\theader.i=@CAVIUMNETWORKS.onmicrosoft.com header.b=\"JjakX8+8\"; \n\tdkim-atps=neutral","spf=none (sender IP is )\n\tsmtp.mailfrom=Jan.Glauber@cavium.com; "],"Received":["from bombadil.infradead.org (bombadil.infradead.org\n\t[65.50.211.133])\n\t(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256\n\tbits)) (No client certificate requested)\n\tby ozlabs.org (Postfix) with ESMTPS id 3xjgPT5FFdz9sQl\n\tfor <incoming-imx@patchwork.ozlabs.org>;\n\tThu, 31 Aug 2017 21:38:53 +1000 (AEST)","from localhost ([127.0.0.1] helo=bombadil.infradead.org)\n\tby bombadil.infradead.org with esmtp (Exim 4.87 #1 (Red Hat Linux))\n\tid 1dnNoA-0001RF-Dy; Thu, 31 Aug 2017 11:38:50 +0000","from mail-sn1nam01on0064.outbound.protection.outlook.com\n\t([104.47.32.64] helo=NAM01-SN1-obe.outbound.protection.outlook.com)\n\tby bombadil.infradead.org with esmtps (Exim 4.87 #1 (Red Hat Linux))\n\tid 1dnNo2-0001K5-Rv for linux-arm-kernel@lists.infradead.org;\n\tThu, 31 Aug 2017 11:38:48 +0000","from hc (88.67.130.225) by CO2PR07MB2582.namprd07.prod.outlook.com\n\t(10.166.201.21) with Microsoft SMTP Server (version=TLS1_2,\n\tcipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.1.1385.9;\n\tThu, 31 Aug 2017 11:38:16 +0000"],"DKIM-Signature":["v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;\n\td=lists.infradead.org; s=bombadil.20170209; h=Sender:\n\tContent-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post:\n\tList-Archive:List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:References:\n\tMessage-ID:Subject:To:From:Date:Reply-To:Content-ID:Content-Description:\n\tResent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:\n\tList-Owner; bh=ZyTxonTjg4UhRqk0Mf6Ndas3P/orfmmItl994zwdRWA=;\n\tb=HPVkn6vCO/p8ZD\n\tmNxw68oseF8xr1NldrTbDxMsWUBGGRIcr6/ccyJQalJhO1iZwWeltNJlrtbisjjZhNbD8AdtZELXY\n\tvwJTiogQlfkzsWazKOyJByi7erOpmyWbHcqnEHIafkoYnKK+09FT/ah7VJNZxSvvzvDYDJmv2EeOP\n\tYiiLorpTTBsgnMnG2K8WjZxL7rpLtRGq5YOpmCZ3emL75nxadmzAKBmAGQDCNixFq8NDgJ88tAkAz\n\tyglzRCfi+NgiZ9fEsQ4BUrNLwdMAsMUZjXblaNixCTq4lCtUAjLPYUbvA8KI2GZ7q4lHinAF63mEY\n\tmNWHIhQkAatE17DQZ7Fg==;","v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=CAVIUMNETWORKS.onmicrosoft.com; s=selector1-cavium-com;\n\th=From:Date:Subject:Message-ID:Content-Type:MIME-Version;\n\tbh=Wnz2HfR6w+z/pNGv3r+USAkONx/MxN8VoIDWU0YSyow=;\n\tb=JjakX8+8nwKwl6hRTHVTZYSx9hyEzKognGv/kPMd4ftZ1TSATwNbLxCJsbC5Bkx8YOAWi0gtxL1yfNFHAwlySpdfWNRzGlwqdgyFnK/7YXomlTUMFLhMF5A4B4PqEAkoF82o9panvcqdYLNCVhA78u6NpymmSs+lSy5CVOfjJPU="],"Date":"Thu, 31 Aug 2017 13:38:03 +0200","From":"Jan Glauber <jan.glauber@caviumnetworks.com>","To":"Mark Rutland <mark.rutland@arm.com>, Will Deacon <will.deacon@arm.com>","Subject":"Re: [RFC PATCH v9 0/7] Cavium ARM64 uncore PMU support","Message-ID":"<20170831113803.GF15906@hc>","References":"<20170829131238.4988-1-jglauber@cavium.com>","MIME-Version":"1.0","Content-Disposition":"inline","In-Reply-To":"<20170829131238.4988-1-jglauber@cavium.com>","User-Agent":"Mutt/1.5.21 (2010-09-15)","X-Originating-IP":"[88.67.130.225]","X-ClientProxiedBy":"HE1PR09CA0068.eurprd09.prod.outlook.com (10.174.50.140) To\n\tCO2PR07MB2582.namprd07.prod.outlook.com (10.166.201.21)","X-MS-PublicTrafficType":"Email","X-MS-Office365-Filtering-Correlation-Id":"c37cca5f-85b4-4834-2fb9-08d4f064c6b7","X-Microsoft-Antispam":"UriScan:; BCL:0; PCL:0;\n\tRULEID:(300000500095)(300135000095)(300000501095)(300135300095)(22001)(300000502095)(300135100095)(2017030254152)(300000503095)(300135400095)(2017052603199)(201703131423075)(201703031133081)(201702281549075)(300000504095)(300135200095)(300000505095)(300135600095)(300000506095)(300135500095);\n\tSRVR:CO2PR07MB2582; ","X-Microsoft-Exchange-Diagnostics":["1; CO2PR07MB2582;\n\t3:Mxu9DPb0I190XNEL7stZ8JsIy12fwAFdmzBqeCvH9CH0go1EycuwaG1bvgX+mcoRmdQubjIcACm0cA7MXdZAgjV985GK2l7kpWoTJRR8EzyTtwyyZHl8j5SxEWydo7q4G/KHtYQ1MErHyklRb4d4TTTSuHah4jGb3oaAeRE3eNRhZp2jjLxXe35xQoc2EY01QYSPnO9DPGyaZ5VNwcy7j/eWpxB3QBvvnav8dUTdCk6V8nXoQkP7jDgjf3YXEgI9;\n\t25:q9Wh32bYm7OkC80jiWDCdhQAWjmGtHfKkM3ZVUuLuNBp8+505tEjnqo5pVDE4ICdL2WtjXW3jtOHmrUl7k9Oi0iH4tHjQiXoN++6iU2/eoEVgDYZvYbPxINb93FlgmunqE9JLXFwz771lzqdAxq1ajhUiWblP+pR/679MjwPT9xYJPHqPvXBkhWM7CAeSr3T2+CqoFuNlF9XP7AroRAQHHKcw74RrjdbA/rhGucryeVMIfZKoxlnufdda1p7+hfECVrL8CNuTb3Hhdj1mKe+35oomRW3cnCrUPTuet1HRxfoP8Mro6r99YK6duZLg8R9ZomWvQDueeCtFccyutxenQ==;\n\t31:nmWJKw76QkPgUGDX27qGwNB6I54wpVG9TViMSkmFQRrMDwer/IwrkuTu8SOnnIqrpgnR7Zw4khx4DJjRsy/c7aMfYI/E85im7VnB/+V1Cp7nrpQGyyerKX2dPo75loNEB82C85LuGTJYXtvkHcK6c55G6QWKHRQlMo4Zvi5no5GzVcZxQ2QW7iL2Vn3ve+nM8eR5/vLOyLuR206frerXDewwyFcwOsQ0mH9JPcqbu9E=","1; CO2PR07MB2582;\n\t20:7z3COu1r9r3VeFL9HzCxPBgBGqI+5dSx059HECKZz/wVzBoOsXazmVeEhofN8DaHV7pZczK4aJ07dC1zXugLpdE92UrdPjTy9u1F2W6zFoMKzJWTv2+2aIONf+WkUu5JjAHeZloZ73Rb/6GkZ7tLmGFdMdp9Wct6IaRJ22tnUS+yudBFdrBmRY8bwpLSSiMAIHGuQm/d77ZC0qCzK7BTOhg38T1s5NI4OGlIPoYmSxpQcqu/vs8A2IJAmGlNVlp7AIbRh5WBoLoUsARcHL1RLSxHzTrcOUiRiWCpGqxD6Y4liE6EjgGNpranpJaas2i6Sk0jDN9V0i7BX8S3yCMtydIk3SHiwW5Pk2TauHNMyyjtx1h9G5FVu2uihnWtYidSdFKqoXSVaTEfJD3wPVGElze1II89xte7ELN+t+0QEPEQe+xrDZev8YMh72E2I5QxZZoStV6V8shsZzGJ+KoUh/3LXQ3zhgszkGz7XfDTk+wlDzNrtV3EuHGQKykWexQZSJJrgSHcqGkGEeDbXsPfdIaJACK3xQ4317TbwAKGaCZIfrvJG8F486yt4+qd2lVQ79Xrk3RNh6oEqpmUv2qVtbP0Y7ly6zfbIu6ALKnXE0A=;\n\t4:RboAKtoREXkmrdi838nuyPMZcC4loK5oWqcN2z3fcj2vKNxkSOUXhRY6fqdCohI02eXXXm90zfITBdV1FJWrK/DZADg+Hd+8Kf1xd/b83Mm9KnTpWPsVXHlwkRAL37i5WTo1ZQpBzepUh+pyHU6JlR+6rPwNm1cZ94wkQc8ag+hkZpOGVqvwN2lcIhYmOUZfyGeHUdRByBjSkHRB97sO65TdFMs0cdwXPqjm/hVfCz82KGunqAM5ZXLmpdM9u4XR","=?us-ascii?Q?1; CO2PR07MB2582;\n\t23:8bvnncnYPJSZJWVyQxDMJhDGwqd2R9HqPNSk2jvMi?=\n\tW5nWxLo2bCEWMcLiNb9+iQfNXhTBlbf2GQOqfkBYHLpcBI5gFuv/EiUIQY2HIa5Gvgz8+YTpc9cYjwYPimnuNxfkZgwAGLHINe0vxh6HckKpl/pI3b/M/jQWjRwX1ER6Yf+HLAwanq+2KCQwusgmXJr3XlHb8lIEzD9NT6rC7O2S8M+5W/tu0mt9lMEfzaRxGXzZE+xQZVLep8bQQkNX7LZtE/hOLkr2s62/c68fCOtIan1ZpfOWBFfNwIFmw1VDDa+5Z2oaoCOeQ3XUCrCS+osrgu5Sv8aNEkuzjlj+SRw1vbvsbgXsJJCIJ75xXdW7KOXmN9P1gddjIEQgN2i7tPH9XMs7RqlQdW3+/XIK5jqcFBKG6550ExsNUi4hbBUPBudqtNPL6bDpwk0In4klXUvL0Zqy+dgyn3VHn77uYtbhkRrRiHhYP34bR3s+6jWMPUwLS8LD8cyx1enq/iEZz7kZgTZ57IPeqLt3U48odeEkfJ4pbESQSEQVjQg2GHq5pYLyWTsEqrfCSPOZ4Rf5QYDXbXEWUd4z1bYh53a/IbzK1gdkE7p+bT5k3Yz+QD49WM8rpPzxnMp6DUltus427XIFknXTEbTqqfTxZwfv0vebdCIimQtH5x4qixizOGovM6o27+EyqaxuD1zeDS42OfJjCJD7/ljar1ES0Hgo2csEK9mga0KHbZ40VGRBNB1Nqg6fjPdfiip1qmtOKMJr7nRfNtXRoy6UFwtAQ8XvD87QasgfoibWsC6zSiDyKgkk/LjIzIv6iwHhGmS0ePkZw9Y4AGLYLA2paYELXXJTwLrezKLmg6cJxocL8R1oxh50CtHqnvyEdzhPGO9ibw0H7g7QZYfPdtpaefeovSOh6l/pUjLXVcxkl0y8pFg8DnBmmbCzNUCIyGaJ8W/jNeZczNQt5Xc3suPMOTYJdUJTX8aj8O8X9oNO3w/ptJhOoDYTkNXWXAj1kF66uP7Wb+sz4ptq+G2sUsgKpfKxj9GCr2b06cFLhBBl7yzATEbKy1zRxgHUNd4gOKoZsJHeDDLorM4VjZ/7rBF8xNL0ujtGYaKGZK0pLJfAtARu+0DEYMSEzcyQhY1B6MzbazR9BDyvTtqhyuH9EjHWDg9rWovMmRO/GHhbzqiwACiGUcPBQHo5/KWzkNyRzLl96xxg5sRLuMgfB3XqR0mJ6fdUNbUid0XT2nS5Z5CzdVlFVYCX5hA52I=","1; CO2PR07MB2582;\n\t6:6McOxL3glFvhN/v7iutm8Gx+dQzlAjzhLwV0jIE5rzPdWwtmSdxQAULmK7iCMgAoviQJ7llI4vut0SgTxtDd1/oSMbdC2optvJgkv14vKN0abEZBq4FGDqmQIgLsCAxAFnQkyQGzF7EpEJxEUIirFh9rEBsW/CB2KipaSeXeYW6YTk17Ae4ZWjZ6C6fJCvOin6MiUGXTfCtbaZXmOPSpmbgvHgNYhn6XXS00aPzMyl2cyRRM9tP156t57weE5JqkpcOvDGDhMLj8p8WY7VVFdpM0XQq5irdRIillLG5pNnmpols3sD+PtJLcd5ObXNgOIXUYZqdvdr+XxQA8GmiZig==;\n\t5:XRml4Ro8XnPehofL86EBXzDmm8LC03o9mpjBo7tiNWlV7C5IV8QVltM5zGuuqcAxSR0FEhdShT4PAjJH83Q8t4wYwpbV8HO2lU7DqfhBULhYTe8PfIvO0yLOysaZN6GQ8EM/qvd1gl5WdFKCJy5Rtw==;\n\t24:W1/xsPEc9s5L+5JXer5+tlINZc4EIIE3LXOyizN3wBbbx/E9UTHwHEYW6dVB/3pyeJFVMR85l4TJ4tUzWYvu6I/xYlXgjTrJF2g8MgRY/Vk=;\n\t7:mI3SViLFm6rBb2FXL5LgsVxUx9eOu/vGG7R9s2Hh2Mc9mlxGspEvLLQxNxr/FKz3FM7+ze1TwYMV3U45eJwlWTSk+15/YArfwRMyA/G9JVSFFDnksKwKJK05B8pHemDEPh1KoNz08x6b8kIJlV/gjqCXhyzf0Is1CRDnKGBvYGJgAJ/A5rDJ0xK7T79gr1e6XWc6uzvBa8crMX7yf5Y2LkhVl/IzSU++3OkxRPn2SHM="],"X-MS-TrafficTypeDiagnostic":"CO2PR07MB2582:","X-Exchange-Antispam-Report-Test":"UriScan:;","X-Microsoft-Antispam-PRVS":"<CO2PR07MB25829819A4EBBFC6BE47C382919D0@CO2PR07MB2582.namprd07.prod.outlook.com>","X-Exchange-Antispam-Report-CFA-Test":"BCL:0; PCL:0;\n\tRULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(601004)(2401047)(8121501046)(5005006)(10201501046)(100000703101)(100105400095)(3002001)(93006095)(6041248)(20161123558100)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123555025)(20161123564025)(20161123562025)(20161123560025)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095);\n\tSRVR:CO2PR07MB2582; BCL:0; PCL:0;\n\tRULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095);\n\tSRVR:CO2PR07MB2582; ","X-Forefront-PRVS":"04163EF38A","X-Forefront-Antispam-Report":"SFV:NSPM;\n\tSFS:(10009020)(6009001)(189002)(24454002)(199003)(7736002)(305945005)(6496005)(2950100002)(5660300001)(83506001)(8936002)(81156014)(81166006)(229853002)(3846002)(42882006)(1076002)(4001350100001)(6116002)(66066001)(23726003)(47776003)(33656002)(97736004)(50986999)(72206003)(105586002)(189998001)(9686003)(33716001)(106356001)(6306002)(25786009)(2906002)(76176999)(54356999)(4326008)(53936002)(101416001)(50466002)(966005)(6246003)(8676002)(68736007)(107886003)(42186005)(6666003)(54906002)(55016002)(478600001)(18370500001)(217873001)(6606295002);\n\tDIR:OUT; SFP:1101; SCL:1; SRVR:CO2PR07MB2582; H:hc; FPR:; SPF:None;\n\tPTR:InfoNoRecords; MX:1; A:1; LANG:en; ","Received-SPF":"None (protection.outlook.com: cavium.com does not designate\n\tpermitted sender hosts)","SpamDiagnosticOutput":"1:99","SpamDiagnosticMetadata":"NSPM","X-OriginatorOrg":"caviumnetworks.com","X-MS-Exchange-CrossTenant-OriginalArrivalTime":"31 Aug 2017 11:38:16.3778\n\t(UTC)","X-MS-Exchange-CrossTenant-FromEntityHeader":"Hosted","X-MS-Exchange-CrossTenant-Id":"711e4ccf-2e9b-4bcf-a551-4094005b6194","X-MS-Exchange-Transport-CrossTenantHeadersStamped":"CO2PR07MB2582","X-CRM114-Version":"20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 ","X-CRM114-CacheID":"sfid-20170831_043843_024095_4CE95BD2 ","X-CRM114-Status":"GOOD (  19.25  )","X-Spam-Score":"-4.7 (----)","X-Spam-Report":"SpamAssassin version 3.4.1 on bombadil.infradead.org summary:\n\tContent analysis details:   (-4.7 points)\n\tpts rule name              description\n\t---- ----------------------\n\t--------------------------------------------------\n\t-0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at http://www.dnswl.org/,\n\tno trust [104.47.32.64 listed in list.dnswl.org]\n\t-2.8 RCVD_IN_MSPIKE_H2      RBL: Average reputation (+2)\n\t[104.47.32.64 listed in wl.mailspike.net]\n\t0.0 HEADER_FROM_DIFFERENT_DOMAINS From and EnvelopeFrom 2nd level\n\tmail domains are different\n\t-0.0 SPF_HELO_PASS          SPF: HELO matches SPF record\n\t-1.9 BAYES_00               BODY: Bayes spam probability is 0 to 1%\n\t[score: 0.0000]\n\t-0.1 DKIM_VALID Message has at least one valid DKIM or DK signature\n\t0.1 DKIM_SIGNED            Message has a DKIM or DK signature,\n\tnot necessarily valid","X-BeenThere":"linux-arm-kernel@lists.infradead.org","X-Mailman-Version":"2.1.21","Precedence":"list","List-Unsubscribe":"<http://lists.infradead.org/mailman/options/linux-arm-kernel>,\n\t<mailto:linux-arm-kernel-request@lists.infradead.org?subject=unsubscribe>","List-Archive":"<http://lists.infradead.org/pipermail/linux-arm-kernel/>","List-Post":"<mailto:linux-arm-kernel@lists.infradead.org>","List-Help":"<mailto:linux-arm-kernel-request@lists.infradead.org?subject=help>","List-Subscribe":"<http://lists.infradead.org/mailman/listinfo/linux-arm-kernel>,\n\t<mailto:linux-arm-kernel-request@lists.infradead.org?subject=subscribe>","Cc":"David Daney <david.daney@cavium.com>, Borislav Petkov <bp@alien8.de>,\n\tlinux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org,\n\tSuzuki K Poulose <Suzuki.Poulose@arm.com>","Content-Type":"text/plain; charset=\"us-ascii\"","Content-Transfer-Encoding":"7bit","Sender":"\"linux-arm-kernel\" <linux-arm-kernel-bounces@lists.infradead.org>","Errors-To":"linux-arm-kernel-bounces+incoming-imx=patchwork.ozlabs.org@lists.infradead.org","List-Id":"linux-imx-kernel.lists.patchwork.ozlabs.org"}},{"id":1760988,"web_url":"http://patchwork.ozlabs.org/comment/1760988/","msgid":"<c6d79504-dfa8-a3fe-bd2b-20ac867e2514@arm.com>","list_archive_url":null,"date":"2017-08-31T13:26:22","subject":"Re: [RFC PATCH v9 5/7] perf: cavium: Support memory controller PMU\n\tcounters","submitter":{"id":65822,"url":"http://patchwork.ozlabs.org/api/people/65822/","name":"Suzuki K Poulose","email":"suzuki.poulose@arm.com"},"content":"On 31/08/17 12:35, Jan Glauber wrote:\n> On Wed, Aug 30, 2017 at 11:03:00AM +0100, Suzuki K Poulose wrote:\n>> On 29/08/17 14:12, Jan Glauber wrote:\n>>> Add support for the PMU counters on Cavium SOC memory controllers.\n>>>\n>>> This patch also adds generic functions to allow supporting more\n>>> devices with PMU counters.\n>>>\n>>> Properties of the LMC PMU counters:\n>>> - not stoppable\n>>> - fixed purpose\n>>> - read-only\n>>> - one PCI device per memory controller\n>>>\n>>> Signed-off-by: Jan Glauber <jglauber@cavium.com>\n>>\n>> Jan,\n>>\n>> Some minor comments below.\n>>\n>>> +static void cvm_pmu_del(struct perf_event *event, int flags)\n>>> +{\n>>> +\tstruct cvm_pmu_dev *pmu_dev = to_pmu_dev(event->pmu);\n>>> +\tstruct hw_perf_event *hwc = &event->hw;\n>>> +\tint i;\n>>> +\n>>> +\tevent->pmu->stop(event, PERF_EF_UPDATE);\n>>> +\n>>> +\t/*\n>>> +\t * For programmable counters we need to check where we installed it.\n>>> +\t * To keep this function generic always test the more complicated\n>>> +\t * case (free running counters won't need the loop).\n>>> +\t */\n>>> +\tfor (i = 0; i < pmu_dev->num_counters; i++)\n>>> +\t\tif (cmpxchg(&pmu_dev->events[i], event, NULL) == event)\n>>> +\t\t\tbreak;\n>>\n>> Does this mean, it is the only way to map any given event (for programmable counters)\n>> to a hardware counter ? What do we store in hwc->idx ? We have 2 additional\n>> struct hw_perf_event_extra fields. We should be able to use one field to map it\n>> back to the counter, isn't it ?\n>\n> Hmm, I might be able to use hwc-idx directly instead of the loop, will\n> check that.\n>\n>>> +\n>>> +\tperf_event_update_userpage(event);\n>>> +\thwc->idx = -1;\n>>> +}\n>>> +\n>>\n>> ...\n>>\n>>> +/* LMC events */\n>>> +#define LMC_EVENT_IFB_CNT\t\t0x1d0\n>>> +#define LMC_EVENT_OPS_CNT\t\t0x1d8\n>>> +#define LMC_EVENT_DCLK_CNT\t\t0x1e0\n>>> +#define LMC_EVENT_BANK_CONFLICT1\t0x360\n>>> +#define LMC_EVENT_BANK_CONFLICT2\t0x368\n>>> +\n>>> +#define CVM_PMU_LMC_EVENT_ATTR(_name, _id)\t\t\t\t\t\t\\\n>>> +\t&((struct perf_pmu_events_attr[]) {\t\t\t\t\t\t\\\n>>> +\t\t{\t\t\t\t\t\t\t\t\t\\\n>>> +\t\t\t__ATTR(_name, S_IRUGO, cvm_pmu_event_sysfs_show, NULL),\t\t\\\n>>> +\t\t\t_id,\t\t\t\t\t\t\t\t\\\n>>> +\t\t\t\"lmc_event=\" __stringify(_id),\t\t\t\t\t\\\n>>> +\t\t}\t\t\t\t\t\t\t\t\t\\\n>>> +\t})[0].attr.attr\n>>> +\n>>> +/* map counter numbers to register offsets */\n>>> +static int lmc_events[] = {\n>>> +\tLMC_EVENT_IFB_CNT,\n>>> +\tLMC_EVENT_OPS_CNT,\n>>> +\tLMC_EVENT_DCLK_CNT,\n>>> +\tLMC_EVENT_BANK_CONFLICT1,\n>>> +\tLMC_EVENT_BANK_CONFLICT2,\n>>> +};\n>>> +\n>>> +static int cvm_pmu_lmc_add(struct perf_event *event, int flags)\n>>> +{\n>>> +\tstruct hw_perf_event *hwc = &event->hw;\n>>> +\n>>> +\treturn cvm_pmu_add(event, flags, LMC_CONFIG_OFFSET,\n>>> +\t\t\t   lmc_events[hwc->config]);\n>>> +}\n>>> +\n>>\n>> Is there any reason why we can't use the LMC event code directly\n>> here, avoiding the mapping altogether ?\n>\n> I wanted to avoid exposing the raw numbers (0x1d0 - 0x368) here.\n\nThats the primarily the reason why we expose the \"aliases\" in events/.\nThe other problem with adding another layer of mapping is, you are preventing\nsomeone from actually mapping the raw code used by the perf tool (which is now\na mapping index) to the real raw code used by the hardware unless they have\nthe kernel source handy. If you choose to expose the raw numbers, like *all*\nthe other PMUs, the user can map it by looking up the manual.\n\nCheers\nSuzuki","headers":{"Return-Path":"<linux-arm-kernel-bounces+incoming-imx=patchwork.ozlabs.org@lists.infradead.org>","X-Original-To":"incoming-imx@patchwork.ozlabs.org","Delivered-To":"patchwork-incoming-imx@bilbo.ozlabs.org","Authentication-Results":["ozlabs.org;\n\tspf=none (mailfrom) smtp.mailfrom=lists.infradead.org\n\t(client-ip=65.50.211.133; helo=bombadil.infradead.org;\n\tenvelope-from=linux-arm-kernel-bounces+incoming-imx=patchwork.ozlabs.org@lists.infradead.org;\n\treceiver=<UNKNOWN>)","ozlabs.org; dkim=pass (2048-bit key;\n\tunprotected) header.d=lists.infradead.org\n\theader.i=@lists.infradead.org\n\theader.b=\"Q4GBq+1b\"; dkim-atps=neutral"],"Received":["from bombadil.infradead.org (bombadil.infradead.org\n\t[65.50.211.133])\n\t(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256\n\tbits)) (No client certificate requested)\n\tby ozlabs.org (Postfix) with ESMTPS id 3xjjp43Zcrz9sPt\n\tfor <incoming-imx@patchwork.ozlabs.org>;\n\tThu, 31 Aug 2017 23:26:52 +1000 (AEST)","from localhost ([127.0.0.1] helo=bombadil.infradead.org)\n\tby bombadil.infradead.org with esmtp (Exim 4.87 #1 (Red Hat Linux))\n\tid 1dnPUf-0006F6-OH; Thu, 31 Aug 2017 13:26:49 +0000","from usa-sjc-mx-foss1.foss.arm.com ([217.140.101.70]\n\thelo=foss.arm.com)\n\tby bombadil.infradead.org with esmtp (Exim 4.87 #1 (Red Hat Linux))\n\tid 1dnPUb-0005uh-NI for linux-arm-kernel@lists.infradead.org;\n\tThu, 31 Aug 2017 13:26:47 +0000","from usa-sjc-imap-foss1.foss.arm.com (unknown [10.72.51.249])\n\tby usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 315742B;\n\tThu, 31 Aug 2017 06:26:25 -0700 (PDT)","from [10.1.206.28] (e107814-lin.cambridge.arm.com [10.1.206.28])\n\tby usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id\n\tD80DF3F540; Thu, 31 Aug 2017 06:26:23 -0700 (PDT)"],"DKIM-Signature":"v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;\n\td=lists.infradead.org; s=bombadil.20170209; h=Sender:Content-Type:\n\tContent-Transfer-Encoding:Cc:List-Subscribe:List-Help:List-Post:List-Archive:\n\tList-Unsubscribe:List-Id:In-Reply-To:MIME-Version:Date:Message-ID:From:\n\tReferences:To:Subject:Reply-To:Content-ID:Content-Description:Resent-Date:\n\tResent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner;\n\tbh=FGtP5s+7tKr2AJ2+UEXWhg6M8pivOJodxHvuiUbX7vY=;\n\tb=Q4GBq+1b7U8/kkq6MA3WQyPU5\n\tKvK9bQF1pdEhsYHNNG3+r/q2SEflK2x9v2YsdwBhT3g+iN613oxPjFCgBWJ6JjMMqSW0IbY1b3fHd\n\tkls0GmXfuJZaBIWgNOntEhlpyCBsJI8hcuWwgWx+yhJ+vreswxIbVE4o4XkZa2ljBcUsQ7uLrVSG/\n\teT4zVE51E2heuSZ9WHe17oUHskuMkVLJYZCcLNNLmPi//JB/+1FRQ963aN1t67mHjmPCaJ8/G5fld\n\tnphmLobk/sDv8/VjnIGPnwEDpVlwklju741aJZae/ANhwzqLZLQyhk+PpT7QeKEI9sworACp1Kv4T\n\t8l45PPETw==;","Subject":"Re: [RFC PATCH v9 5/7] perf: cavium: Support memory controller PMU\n\tcounters","To":"Jan Glauber <jan.glauber@caviumnetworks.com>","References":"<20170829131238.4988-1-jglauber@cavium.com>\n\t<20170829131238.4988-6-jglauber@cavium.com>\n\t<09997d9f-0003-0eb0-63d1-9b31e26e2229@arm.com>\n\t<20170831113508.GE15906@hc>","From":"Suzuki K Poulose <Suzuki.Poulose@arm.com>","Message-ID":"<c6d79504-dfa8-a3fe-bd2b-20ac867e2514@arm.com>","Date":"Thu, 31 Aug 2017 14:26:22 +0100","User-Agent":"Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101\n\tThunderbird/45.8.0","MIME-Version":"1.0","In-Reply-To":"<20170831113508.GE15906@hc>","X-CRM114-Version":"20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 ","X-CRM114-CacheID":"sfid-20170831_062645_776986_EA00948B ","X-CRM114-Status":"GOOD (  19.47  )","X-Spam-Score":"-6.9 (------)","X-Spam-Report":"SpamAssassin version 3.4.1 on bombadil.infradead.org summary:\n\tContent analysis details:   (-6.9 points)\n\tpts rule name              description\n\t---- ----------------------\n\t--------------------------------------------------\n\t-5.0 RCVD_IN_DNSWL_HI RBL: Sender listed at http://www.dnswl.org/,\n\thigh trust [217.140.101.70 listed in list.dnswl.org]\n\t-0.0 SPF_PASS               SPF: sender matches SPF record\n\t-0.0 RP_MATCHES_RCVD Envelope sender domain matches handover relay\n\tdomain\n\t-1.9 BAYES_00               BODY: Bayes spam probability is 0 to 1%\n\t[score: 0.0000]","X-BeenThere":"linux-arm-kernel@lists.infradead.org","X-Mailman-Version":"2.1.21","Precedence":"list","List-Unsubscribe":"<http://lists.infradead.org/mailman/options/linux-arm-kernel>,\n\t<mailto:linux-arm-kernel-request@lists.infradead.org?subject=unsubscribe>","List-Archive":"<http://lists.infradead.org/pipermail/linux-arm-kernel/>","List-Post":"<mailto:linux-arm-kernel@lists.infradead.org>","List-Help":"<mailto:linux-arm-kernel-request@lists.infradead.org?subject=help>","List-Subscribe":"<http://lists.infradead.org/mailman/listinfo/linux-arm-kernel>,\n\t<mailto:linux-arm-kernel-request@lists.infradead.org?subject=subscribe>","Cc":"Mark Rutland <mark.rutland@arm.com>, David Daney <david.daney@cavium.com>,\n\tWill Deacon <will.deacon@arm.com>, linux-kernel@vger.kernel.org,\n\tBorislav Petkov <bp@alien8.de>, linux-arm-kernel@lists.infradead.org","Content-Transfer-Encoding":"7bit","Content-Type":"text/plain; charset=\"us-ascii\"; Format=\"flowed\"","Sender":"\"linux-arm-kernel\" <linux-arm-kernel-bounces@lists.infradead.org>","Errors-To":"linux-arm-kernel-bounces+incoming-imx=patchwork.ozlabs.org@lists.infradead.org","List-Id":"linux-imx-kernel.lists.patchwork.ozlabs.org"}},{"id":1761118,"web_url":"http://patchwork.ozlabs.org/comment/1761118/","msgid":"<20170831152723.GA23982@hc>","list_archive_url":null,"date":"2017-08-31T15:27:23","subject":"Re: [RFC PATCH v9 5/7] perf: cavium: Support memory controller PMU\n\tcounters","submitter":{"id":68474,"url":"http://patchwork.ozlabs.org/api/people/68474/","name":"Jan Glauber","email":"jan.glauber@caviumnetworks.com"},"content":"On Thu, Aug 31, 2017 at 02:26:22PM +0100, Suzuki K Poulose wrote:\n> On 31/08/17 12:35, Jan Glauber wrote:\n> >On Wed, Aug 30, 2017 at 11:03:00AM +0100, Suzuki K Poulose wrote:\n> >>On 29/08/17 14:12, Jan Glauber wrote:\n\n[...]\n\n> >>>+/* LMC events */\n> >>>+#define LMC_EVENT_IFB_CNT\t\t0x1d0\n> >>>+#define LMC_EVENT_OPS_CNT\t\t0x1d8\n> >>>+#define LMC_EVENT_DCLK_CNT\t\t0x1e0\n> >>>+#define LMC_EVENT_BANK_CONFLICT1\t0x360\n> >>>+#define LMC_EVENT_BANK_CONFLICT2\t0x368\n> >>>+\n> >>>+#define CVM_PMU_LMC_EVENT_ATTR(_name, _id)\t\t\t\t\t\t\\\n> >>>+\t&((struct perf_pmu_events_attr[]) {\t\t\t\t\t\t\\\n> >>>+\t\t{\t\t\t\t\t\t\t\t\t\\\n> >>>+\t\t\t__ATTR(_name, S_IRUGO, cvm_pmu_event_sysfs_show, NULL),\t\t\\\n> >>>+\t\t\t_id,\t\t\t\t\t\t\t\t\\\n> >>>+\t\t\t\"lmc_event=\" __stringify(_id),\t\t\t\t\t\\\n> >>>+\t\t}\t\t\t\t\t\t\t\t\t\\\n> >>>+\t})[0].attr.attr\n> >>>+\n> >>>+/* map counter numbers to register offsets */\n> >>>+static int lmc_events[] = {\n> >>>+\tLMC_EVENT_IFB_CNT,\n> >>>+\tLMC_EVENT_OPS_CNT,\n> >>>+\tLMC_EVENT_DCLK_CNT,\n> >>>+\tLMC_EVENT_BANK_CONFLICT1,\n> >>>+\tLMC_EVENT_BANK_CONFLICT2,\n> >>>+};\n> >>>+\n> >>>+static int cvm_pmu_lmc_add(struct perf_event *event, int flags)\n> >>>+{\n> >>>+\tstruct hw_perf_event *hwc = &event->hw;\n> >>>+\n> >>>+\treturn cvm_pmu_add(event, flags, LMC_CONFIG_OFFSET,\n> >>>+\t\t\t   lmc_events[hwc->config]);\n> >>>+}\n> >>>+\n> >>\n> >>Is there any reason why we can't use the LMC event code directly\n> >>here, avoiding the mapping altogether ?\n> >\n> >I wanted to avoid exposing the raw numbers (0x1d0 - 0x368) here.\n> \n> Thats the primarily the reason why we expose the \"aliases\" in events/.\n> The other problem with adding another layer of mapping is, you are preventing\n> someone from actually mapping the raw code used by the perf tool (which is now\n> a mapping index) to the real raw code used by the hardware unless they have\n> the kernel source handy. If you choose to expose the raw numbers, like *all*\n> the other PMUs, the user can map it by looking up the manual.\n\nSo what would that do to the config bits? Currently they are:\nPMU_FORMAT_ATTR(lmc_event, \"config:0-2\");\n\nShould I have config:0-9 then? Wouldn't that be confusing as there are\nonly 5 events?\n\nAlso I need to be very careful as we need to prevent a user from\naccessing anything else then the counters. I can do that with the\nevent_valid callback though.\n\nthanks,\nJan\n\n> Cheers\n> Suzuki","headers":{"Return-Path":"<linux-arm-kernel-bounces+incoming-imx=patchwork.ozlabs.org@lists.infradead.org>","X-Original-To":"incoming-imx@patchwork.ozlabs.org","Delivered-To":"patchwork-incoming-imx@bilbo.ozlabs.org","Authentication-Results":["ozlabs.org;\n\tspf=none (mailfrom) smtp.mailfrom=lists.infradead.org\n\t(client-ip=65.50.211.133; helo=bombadil.infradead.org;\n\tenvelope-from=linux-arm-kernel-bounces+incoming-imx=patchwork.ozlabs.org@lists.infradead.org;\n\treceiver=<UNKNOWN>)","ozlabs.org; dkim=pass (2048-bit key;\n\tunprotected) header.d=lists.infradead.org\n\theader.i=@lists.infradead.org header.b=\"tb4OSvJ7\"; \n\tdkim=fail reason=\"signature verification failed\" (1024-bit key;\n\tunprotected) header.d=CAVIUMNETWORKS.onmicrosoft.com\n\theader.i=@CAVIUMNETWORKS.onmicrosoft.com header.b=\"GjHDZEFI\"; \n\tdkim-atps=neutral","spf=none (sender IP is )\n\tsmtp.mailfrom=Jan.Glauber@cavium.com; "],"Received":["from bombadil.infradead.org (bombadil.infradead.org\n\t[65.50.211.133])\n\t(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256\n\tbits)) (No client certificate requested)\n\tby ozlabs.org (Postfix) with ESMTPS id 3xjmV25jwHz9s83\n\tfor <incoming-imx@patchwork.ozlabs.org>;\n\tFri,  1 Sep 2017 01:28:10 +1000 (AEST)","from localhost ([127.0.0.1] helo=bombadil.infradead.org)\n\tby bombadil.infradead.org with esmtp (Exim 4.87 #1 (Red Hat Linux))\n\tid 1dnRO0-0002nS-93; Thu, 31 Aug 2017 15:28:04 +0000","from mail-bl2nam02on0050.outbound.protection.outlook.com\n\t([104.47.38.50] helo=NAM02-BL2-obe.outbound.protection.outlook.com)\n\tby bombadil.infradead.org with esmtps (Exim 4.87 #1 (Red Hat Linux))\n\tid 1dnRNw-0002Ud-QY for linux-arm-kernel@lists.infradead.org;\n\tThu, 31 Aug 2017 15:28:02 +0000","from hc (88.67.130.225) by SN2PR07MB2590.namprd07.prod.outlook.com\n\t(2603:10b6:804:7::20) with Microsoft SMTP Server (version=TLS1_2, \n\tcipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.13.10;\n\tThu, 31 Aug 2017 15:27:33 +0000"],"DKIM-Signature":["v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;\n\td=lists.infradead.org; s=bombadil.20170209; h=Sender:\n\tContent-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post:\n\tList-Archive:List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:References:\n\tMessage-ID:Subject:To:From:Date:Reply-To:Content-ID:Content-Description:\n\tResent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:\n\tList-Owner; bh=jj/mhz/jLeAPaSNNNfhA6pJ7hOXaFOTSSpV0tI6CUjU=;\n\tb=tb4OSvJ7kqMIH2\n\t49IRwm0v9a5O2HWLbnXwmuUb3qv7MgJ8/t8/Krb+rY4Rl3VcdNlA0prOcH2OYtZnX8aZ4FmGvKNSn\n\t8SYk33Ghe/y4xJGrRzPYyngrIMYCUaOCP9JIAsbH9xgyxHrpARfhDxiMwdLJJ61BqcuRmZvG8uviD\n\tKV/t5tofZOdrExdSBurR3e7T7qnYJ/gKeGjOKc8nvFp9IdWLhQqP7yF4HKWF5zbUF6vKlXC64M+ak\n\t7G2PdW1VB1OmCSCZqMUTb/svpVUafATu2GMlWv5/emGVg8YIf74BMC8Cbyp7Q2tuAAH6+8ssZFCbr\n\toQmM0xcacn0IIzg4A5Ew==;","v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=CAVIUMNETWORKS.onmicrosoft.com; s=selector1-cavium-com;\n\th=From:Date:Subject:Message-ID:Content-Type:MIME-Version;\n\tbh=KVLmlWoopd45Q0cBzAgtioSm7C67RYthK1NZz8+AoJk=;\n\tb=GjHDZEFIuV2OecEApwIcwBi8FgzhPKGNPsIA2aRmKyGde0HgRG+Bze40OCJco1mLftB88SkdCS/SN13wjDFOVhF+3eTvm5k/yCajdhMwLDZmWfAI3dBGN50hOg7LNybs/YLwfWbAgB2oxihulSkgj3NncMgPhyrd8F2G1GkIdGY="],"Date":"Thu, 31 Aug 2017 17:27:23 +0200","From":"Jan Glauber <jan.glauber@caviumnetworks.com>","To":"Suzuki K Poulose <Suzuki.Poulose@arm.com>","Subject":"Re: [RFC PATCH v9 5/7] perf: cavium: Support memory controller PMU\n\tcounters","Message-ID":"<20170831152723.GA23982@hc>","References":"<20170829131238.4988-1-jglauber@cavium.com>\n\t<20170829131238.4988-6-jglauber@cavium.com>\n\t<09997d9f-0003-0eb0-63d1-9b31e26e2229@arm.com>\n\t<20170831113508.GE15906@hc>\n\t<c6d79504-dfa8-a3fe-bd2b-20ac867e2514@arm.com>","MIME-Version":"1.0","Content-Disposition":"inline","In-Reply-To":"<c6d79504-dfa8-a3fe-bd2b-20ac867e2514@arm.com>","User-Agent":"Mutt/1.5.21 (2010-09-15)","X-Originating-IP":"[88.67.130.225]","X-ClientProxiedBy":"VI1PR0102CA0033.eurprd01.prod.exchangelabs.com\n\t(2603:10a6:802::46) To SN2PR07MB2590.namprd07.prod.outlook.com\n\t(2603:10b6:804:7::20)","X-MS-PublicTrafficType":"Email","X-MS-Office365-Filtering-Correlation-Id":"7ef245ce-1dcd-49b3-9577-08d4f084ce27","X-Microsoft-Antispam":"UriScan:; BCL:0; PCL:0;\n\tRULEID:(300000500095)(300135000095)(300000501095)(300135300095)(300000502095)(300135100095)(22001)(2017030254152)(300000503095)(300135400095)(2017052603199)(201703131423075)(201703031133081)(201702281549075)(300000504095)(300135200095)(300000505095)(300135600095)(300000506095)(300135500095);\n\tSRVR:SN2PR07MB2590; ","X-Microsoft-Exchange-Diagnostics":["1; SN2PR07MB2590;\n\t3:Wrsy06xpeJ/qnWID5W2b004sEC+9c7b6CxXZmIOlqHBRvY+7IB1bisWH7sgcrfNnlauQsnA+lbuKSNP2Mx/p7QN8WCjVMPYSEa0S3c0uwSZlRjwJGWb/0m2ZH78XYZ8FGSq+fmswE0HgCN7SdnpzFBOlKAzk+UEPwdS53GD3O3hh+yCW9BziQyPQFSliIF6Ues2EvtzzN9C5LAS0Um1SYQNAmAyAiUIMMxRBaHzOXDDo8hXFSVXx4iPayJObvk+c;\n\t25:EY7csQnDzQMFRmgVqnyHdUlprOKsKb9Uw/U6lXAvgw1UVDhlgVnk3tgsSMBoqTPuc3CC11gTFRDeWUCe4oU6ClljKakpmo44X2gjQXG3l67dp+rwgZ6/yOLL+4ju9ya/DJGKjVVJUkGdyx+m8Acna2zikDxA8r9EnQuC/1Y2PUOd51FF/mdiikXtBebWhtsTZLubg0spzMIt1YQ/DbHam8r7TymLOAvNG+jkRVAw7tgw+rES3bSV7kUaO4bRWr4MGgn+61BtasS7uj0sQt0j7yGLCqhq7ZNlf1ZLtGeeiHVLyVJLNiMKcHL46b9RZ1yqjYbcACqflwYDOUcV4/H18g==;\n\t31:1Hfwfir9vphiHfCOT7dCJ+2197ml+YyYp+mNhR8uhHaAxlVPsKT8wm+tvC3PtMuAsreGmqUyYtwzLI0VD7QdAJ6DhoOMGrWTwK9lZUpLJfH97/ANfvWZi5J03gEWjxqHz54suCxFhi2gDU70K5b7o2scyBiB3lOK8EA1wT3QNxVeWyA5RQKVMkxoH8S7fimE50XxyhIf2j8sZkE+0EorM3dgK+76AvI5m8dKDkSoqxM=","1; SN2PR07MB2590;\n\t20:QrwJfCxT0Dm8FWl59iJ0Ek1dcqFmuiP7hfvtLbPcvVnIQpEPEM0X2pjjWNTg/cNz+UFlcgSs1UxtJOms9/3ci7o8476nZKHH0D5SAgiYdSX9d+2TC7RfFyJZIsy9n5KWdKZdmwY/HiKQ7GvSikT6cGy/TDIQRo/PXn4MpsaJoWlrt82n1tlHr72rCgR1umUFMfQP+7z6iIbb37g76QVHuiw+esHNjE+U+yWbBu30XojaqqIGshgn7p3ExfFqTR89DtkeIEGLSR5pE9u1elfLVkz4sJymsM7uoJzlaaPsPI++GF4d/DfzJ0oAy9RRoWyoTuoKxsv3mjpeU4s/1sSaib2StWbkAzHwv262OJfdkzjo32uJ4ZAnSzsL05vBq6EmX5d+352PbC03BY8E6LNXEWoyk/+at4MjjuTm033LUFsLxt6sDVppxSrUERh6pO9vCM3QIsmtn59JM+CGQx43SG3YmgqEGTIIXyMpggFy3fUCW//f36hltdlHuQOHPompNu0QeOLH5xutfAoZf2HS5E107oLiN49kIQPX5jVV9e5KC4KAzuVidPxguLddaQsnZ/dZuLAK07DgjuMJoOrdBYDEinWERvRnGj0OKD0Hs8Q=;\n\t4:b4S+FbXMFFRnSQJ7I9WkAc7TQEjjWIQQLoUbvrSt4hGVJwFm6uoOmN3JSgn5cJpucOs5MeP8RRctAGzOY61A/AwEMk/ap8gz6z11KtWtMURbAsDUTOpa1/HYc6HPo9AKB3POE8kQ/DJ8II9+UA1+p5m+yFUB2PXOmYccNtH+qfDLjfaxHbCTiDg5hWE/IBwa8AGOgl1LlvwyYKCimCDEj5waaAuR2vVPtoaB7YqI+xUdlWKpYUUXN3SfdjiBQ35D","=?us-ascii?Q?1; SN2PR07MB2590;\n\t23:9owbLHZfzHzfJRaPBV9k84G359DKXsFLjDjKkwhxw?=\n\tcgxo9eW6dGYUBhCv32whotajMnTLxRjCz98awkWTNyJgg++cbJGkCJzVygbMvu9ZCInNvILWw5Zyhei1sxtmHxuc0ymBQM5k5OVX40CCkyvmEjqEVzBCdlOvlrCwbRkamfHZcUHkIS9hp/wfjAITbKgJcd+TSZcMjDMAX4zw8zidXkjKxiSW2XraJ7YYfzBAAi6pn5p/QSuh4XoqHfY5WvpCO1UPzGcPqz7qcuzRf3fovpewTXV9HYR4dg4c20u+/wEkpB8iL4DDrk15cmQD2nJIsbJCwgjIjQAg10ON3r53hFFSXddrfN03mabiPNhjNtOWsmbLcRNcoC+cqizcbTJYBGMnf05HouxkXpwp2m5a9bIRkcfF6dJMoO8ZseCZ9ZCxdotnd2/C4xMtE+2mPEY4pVSxxnO3DxDio0/y1q90JNAiEpWELT/PUizDZyjzYti4YNBbqSaEyJgXJYtUZAoChPevrPqCFbT12qTdaH/HMyAGgD67AyyHYHp/qhM4o6lfHlhA/23gMCGrIDN5c3NNZnDpuzM3r6XnHdVB9/FporIwwUCBsGEAIlGa38fAOt5GYNGoEBGwzj+g0qxxHpGMx1J1B+PSHz0KlDypYymBSiN08gqQly7hY4juBfp+e9n3Xbandf2shRdeKrNmcbCE41UrPbXzib+dUaoJyinBPR/3aACfDmUiqQ8Ym/OGZpWbU29U3e0med0xbd+gHv0J0oczP5FEWdlOrbHLFtUfZZYnJ7+bCi/N3Hk7Bvbbq6X2u44XVshPlwbIOwJq/Uokb2yG3fuK2fXumVxx9ILdJJW614cqm1tk07k3/7301bt5vJYyp8/1HDZkkkV4ipVFZwoBoqu0qQMn2H6bY3JDr3enk9R1a24qtypqtnUHvXpnAxZeTs5cpY0nUeDJi5s2StC5/kBCC72+kjTMGfHL6DjK0NKTkrUE1XBCfMPTM19ST05nzAbMC6zPTzV1qZfCxMCxzHDGNJdMcyGasAjfy6IV2iNN+5RpU53KHp8hAfXLD6ZqggOy8ioXW0Bmd68iRUNLo7CPfHSqQ9lOI9HBzWrKgLBqoKWvvsqUqBjX2wFLfAvAZrjnzgpD7BgxU372m0mR1aKn7jcKW1jntil3e71sFCBo9ntH+bsDFOf3xVsBD8p/8o96XmW+sZZ6taDg9VdcCyEBOd79Ovi1hgijiDHq6SOTNRQQTqOyNI6CL8qDLKKPncdmGc3bTi9hGsQ","1; SN2PR07MB2590;\n\t6:ATivO8gw48LfnMIP+kL1yXa0Y310nmjwm7crlQSUYtumOlb5SxZ/37z6WHFymBTZt0Gotf+2z1Z4cW8hNT476GfjQMggSsxeBlPnD4lrgAuuLgv7Q9nYdxITiTJ/9Z1GJUrBhf5+vOQ6CbKI/Su02KZLRNHtnUrogBYhz9+mR6NGTdZiqbf0gkTenMNZvvWmhObceUxR70znAqfu1f69aOZTCzFaFhrjWlQjzc3VW5SS8rBnTvPp2ZTWevOjxihjwgCrdOB8vgbYwffa0zH61RFCBPfpXSCsgy2Y0l9oIWt8z+8dFT8YOzBb2/IXYRX2aJOrq6dZTsZv4kki9hRq9w==;\n\t5:XyvMuEM/XK33xCnnlK74gd6W79Ww+/LoF9E9PDabo/vV6KOYr4vPkCsrSfTIgszFZ8TiUtI4dSoVnFYTVk6tZSSQL/TFMfeqhXTljVZIuYl+EHxmYSD8oAE1TW9HvLLiG5p1i3VY1kVPo8gVw045eA==;\n\t24:GFKiJAzgdXuIMT0ZAbbSYQdfk2BfMm4EcYj88Um0G8WKdR281YrY+d3JahqImu1v8AIgFV2kHvk+AVEuDEk8VtfSFnfmtB96wCMspJ7Zo5Y=;\n\t7:fJb0jH+C7WUgt0YUAi6G7opso6WjMMfv8JUf+Sp7lFGJ9XXb6hNGR1BEl8+yD3JBsiSsFhIlWaNawMiWQxl0fgZRfNxr5ZTffm7yzNv+b0bXwAlce6J9tS6v/bScch3mdPu3EFwrjUS54nPKJ1Le0Rxt1yVvEz4oqD2jlXFB8ldlmoYl7hMKC9kAaqkj8FEFcsPKcqdHXGg3fgu//U7tT30ysvo0oJQzQMS7ieD4cSk="],"X-MS-TrafficTypeDiagnostic":"SN2PR07MB2590:","X-Exchange-Antispam-Report-Test":"UriScan:;","X-Microsoft-Antispam-PRVS":"<SN2PR07MB2590114735EC5D5C30A6D91A919D0@SN2PR07MB2590.namprd07.prod.outlook.com>","X-Exchange-Antispam-Report-CFA-Test":"BCL:0; PCL:0;\n\tRULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(601004)(2401047)(5005006)(8121501046)(93006095)(10201501046)(3002001)(100000703101)(100105400095)(6041248)(20161123558100)(20161123555025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123562025)(20161123564025)(20161123560025)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095);\n\tSRVR:SN2PR07MB2590; BCL:0; PCL:0;\n\tRULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095);\n\tSRVR:SN2PR07MB2590; ","X-Forefront-PRVS":"04163EF38A","X-Forefront-Antispam-Report":"SFV:NSPM;\n\tSFS:(10009020)(6009001)(199003)(189002)(24454002)(189998001)(2906002)(5660300001)(33716001)(72206003)(83506001)(478600001)(47776003)(66066001)(25786009)(68736007)(4326008)(53546010)(4001350100001)(23726003)(1076002)(97736004)(50466002)(6116002)(53936002)(6496005)(6246003)(9686003)(6666003)(54356999)(50986999)(76176999)(8936002)(106356001)(93886005)(42186005)(305945005)(105586002)(3846002)(55016002)(107886003)(54906002)(7736002)(110136004)(33656002)(229853002)(8676002)(6916009)(2950100002)(42882006)(81166006)(81156014)(101416001)(18370500001)(217873001);\n\tDIR:OUT; SFP:1101; SCL:1; SRVR:SN2PR07MB2590; H:hc; FPR:; SPF:None;\n\tPTR:InfoNoRecords; A:1; MX:1; LANG:en; ","Received-SPF":"None (protection.outlook.com: cavium.com does not designate\n\tpermitted sender hosts)","SpamDiagnosticOutput":"1:99","SpamDiagnosticMetadata":"NSPM","X-OriginatorOrg":"caviumnetworks.com","X-MS-Exchange-CrossTenant-OriginalArrivalTime":"31 Aug 2017 15:27:33.5038\n\t(UTC)","X-MS-Exchange-CrossTenant-FromEntityHeader":"Hosted","X-MS-Exchange-CrossTenant-Id":"711e4ccf-2e9b-4bcf-a551-4094005b6194","X-MS-Exchange-Transport-CrossTenantHeadersStamped":"SN2PR07MB2590","X-CRM114-Version":"20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 ","X-CRM114-CacheID":"sfid-20170831_082801_038058_7681DDCC ","X-CRM114-Status":"GOOD (  13.85  )","X-Spam-Score":"-1.9 (-)","X-Spam-Report":"SpamAssassin version 3.4.1 on bombadil.infradead.org summary:\n\tContent analysis details:   (-1.9 points)\n\tpts rule name              description\n\t---- ----------------------\n\t--------------------------------------------------\n\t0.0 HEADER_FROM_DIFFERENT_DOMAINS From and EnvelopeFrom 2nd level\n\tmail domains are different\n\t-0.0 SPF_HELO_PASS          SPF: HELO matches SPF record\n\t-0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at http://www.dnswl.org/,\n\tno trust [104.47.38.50 listed in list.dnswl.org]\n\t-0.0 RCVD_IN_MSPIKE_H3      RBL: Good reputation (+3)\n\t[104.47.38.50 listed in wl.mailspike.net]\n\t-1.9 BAYES_00               BODY: Bayes spam probability is 0 to 1%\n\t[score: 0.0000]\n\t-0.1 DKIM_VALID Message has at least one valid DKIM or DK signature\n\t0.1 DKIM_SIGNED            Message has a DKIM or DK signature,\n\tnot necessarily valid\n\t-0.0 RCVD_IN_MSPIKE_WL      Mailspike good senders","X-BeenThere":"linux-arm-kernel@lists.infradead.org","X-Mailman-Version":"2.1.21","Precedence":"list","List-Unsubscribe":"<http://lists.infradead.org/mailman/options/linux-arm-kernel>,\n\t<mailto:linux-arm-kernel-request@lists.infradead.org?subject=unsubscribe>","List-Archive":"<http://lists.infradead.org/pipermail/linux-arm-kernel/>","List-Post":"<mailto:linux-arm-kernel@lists.infradead.org>","List-Help":"<mailto:linux-arm-kernel-request@lists.infradead.org?subject=help>","List-Subscribe":"<http://lists.infradead.org/mailman/listinfo/linux-arm-kernel>,\n\t<mailto:linux-arm-kernel-request@lists.infradead.org?subject=subscribe>","Cc":"Mark Rutland <mark.rutland@arm.com>, David Daney <david.daney@cavium.com>,\n\tWill Deacon <will.deacon@arm.com>, linux-kernel@vger.kernel.org,\n\tBorislav Petkov <bp@alien8.de>, linux-arm-kernel@lists.infradead.org","Content-Type":"text/plain; charset=\"us-ascii\"","Content-Transfer-Encoding":"7bit","Sender":"\"linux-arm-kernel\" <linux-arm-kernel-bounces@lists.infradead.org>","Errors-To":"linux-arm-kernel-bounces+incoming-imx=patchwork.ozlabs.org@lists.infradead.org","List-Id":"linux-imx-kernel.lists.patchwork.ozlabs.org"}}]