Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1640195
| From | Madhavan Srinivasan <maddy@linux.vnet.ibm.com> |
|---|---|
| Newsgroups | linux.kernel |
| Subject | Re: [PATCH v8 02/10] powerpc/powernv: Autoload IMC device driver module |
| Date | 2017-05-12 06:40 +0200 |
| Message-ID | <tGawV-7Br-3@gated-at.bofh.it> (permalink) |
| References | <tDpVv-4CY-1@gated-at.bofh.it> <tDpVx-4CY-39@gated-at.bofh.it> <tFR1g-3sb-17@gated-at.bofh.it> |
| Organization | linux.* mail to news gateway |
On Thursday 11 May 2017 01:19 PM, Stewart Smith wrote:
> Anju T Sudhakar <anju@linux.vnet.ibm.com> writes:
>> This patch does three things :
>> - Enables "opal.c" to create a platform device for the IMC interface
>> according to the appropriate compatibility string.
>> - Find the reserved-memory region details from the system device tree
>> and get the base address of HOMER (Reserved memory) region address for each chip.
>> - We also get the Nest PMU counter data offsets (in the HOMER region)
>> and their sizes. The offsets for the counters' data are fixed and
>> won't change from chip to chip.
>>
>> The device tree parsing logic is separated from the PMU creation
>> functions (which is done in subsequent patches).
>>
>> Patch also adds a CONFIG_HV_PERF_IMC_CTRS for the IMC driver.
>>
>> Signed-off-by: Anju T Sudhakar <anju@linux.vnet.ibm.com>
>> Signed-off-by: Hemant Kumar <hemant@linux.vnet.ibm.com>
>> Signed-off-by: Madhavan Srinivasan <maddy@linux.vnet.ibm.com>
>> ---
>> arch/powerpc/platforms/powernv/Kconfig | 10 +++
>> arch/powerpc/platforms/powernv/Makefile | 1 +
>> arch/powerpc/platforms/powernv/opal-imc.c | 140 ++++++++++++++++++++++++++++++
>> arch/powerpc/platforms/powernv/opal.c | 18 ++++
>> 4 files changed, 169 insertions(+)
>> create mode 100644 arch/powerpc/platforms/powernv/opal-imc.c
>>
>> diff --git a/arch/powerpc/platforms/powernv/Kconfig b/arch/powerpc/platforms/powernv/Kconfig
>> index 3a07e4d..1b90a98 100644
>> --- a/arch/powerpc/platforms/powernv/Kconfig
>> +++ b/arch/powerpc/platforms/powernv/Kconfig
>> @@ -27,3 +27,13 @@ config OPAL_PRD
>> help
>> This enables the opal-prd driver, a facility to run processor
>> recovery diagnostics on OpenPower machines
>> +
>> +config HV_PERF_IMC_CTRS
>> + bool "Hypervisor supplied In Memory Collection PMU events (Nest & Core)"
>> + default y
>> + depends on PERF_EVENTS && PPC_POWERNV
>> + help
>> + Enable access to hypervisor supplied in-memory collection counters
>> + in perf. IMC counters are available from Power9 systems.
>> +
>> + If unsure, select Y.
>> diff --git a/arch/powerpc/platforms/powernv/Makefile b/arch/powerpc/platforms/powernv/Makefile
>> index b5d98cb..715e531 100644
>> --- a/arch/powerpc/platforms/powernv/Makefile
>> +++ b/arch/powerpc/platforms/powernv/Makefile
>> @@ -12,3 +12,4 @@ obj-$(CONFIG_PPC_SCOM) += opal-xscom.o
>> obj-$(CONFIG_MEMORY_FAILURE) += opal-memory-errors.o
>> obj-$(CONFIG_TRACEPOINTS) += opal-tracepoints.o
>> obj-$(CONFIG_OPAL_PRD) += opal-prd.o
>> +obj-$(CONFIG_HV_PERF_IMC_CTRS) += opal-imc.o
>> diff --git a/arch/powerpc/platforms/powernv/opal-imc.c b/arch/powerpc/platforms/powernv/opal-imc.c
>> new file mode 100644
>> index 0000000..3a87000
>> --- /dev/null
>> +++ b/arch/powerpc/platforms/powernv/opal-imc.c
>> @@ -0,0 +1,140 @@
>> +/*
>> + * OPAL IMC interface detection driver
>> + * Supported on POWERNV platform
>> + *
>> + * Copyright (C) 2017 Madhavan Srinivasan, IBM Corporation.
>> + * (C) 2017 Anju T Sudhakar, IBM Corporation.
>> + * (C) 2017 Hemant K Shaw, IBM Corporation.
>> + *
>> + * This program is free software; you can redistribute it and/or modify
>> + * it under the terms of the GNU General Public License version 2 as
>> + * published by the Free Software Foundation.
>> + *
>> + * This program is distributed in the hope that it will be useful,
>> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
>> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
>> + * GNU General Public License for more details.
>> + */
>> +#include <linux/kernel.h>
>> +#include <linux/module.h>
>> +#include <linux/platform_device.h>
>> +#include <linux/miscdevice.h>
>> +#include <linux/fs.h>
>> +#include <linux/of.h>
>> +#include <linux/of_address.h>
>> +#include <linux/of_platform.h>
>> +#include <linux/poll.h>
>> +#include <linux/mm.h>
>> +#include <linux/slab.h>
>> +#include <linux/crash_dump.h>
>> +#include <asm/opal.h>
>> +#include <asm/io.h>
>> +#include <asm/uaccess.h>
>> +#include <asm/cputable.h>
>> +#include <asm/imc-pmu.h>
>> +
>> +struct perchip_nest_info nest_perchip_info[IMC_MAX_CHIPS];
>> +
>> +/*
>> + * imc_pmu_setup : Setup the IMC PMUs (children of "parent").
>> + */
>> +static void __init imc_pmu_setup(struct device_node *parent)
>> +{
>> + if (!parent)
>> + return;
>> +}
>> +
>> +static int opal_imc_counters_probe(struct platform_device *pdev)
>> +{
>> + struct device_node *imc_dev, *dn, *rm_node = NULL;
>> + struct perchip_nest_info *pcni;
>> + u32 pages, nest_offset, nest_size, chip_id;
>> + int i = 0;
>> + const __be32 *addrp;
>> + u64 reg_addr, reg_size;
>> +
>> + if (!pdev || !pdev->dev.of_node)
>> + return -ENODEV;
>> +
>> + /*
>> + * Check whether this is kdump kernel. If yes, just return.
>> + */
>> + if (is_kdump_kernel())
>> + return -ENODEV;
>> +
>> + imc_dev = pdev->dev.of_node;
>> +
>> + /*
>> + * Nest counter data are saved in a reserved memory called HOMER.
>> + * "imc-nest-offset" identifies the counter data location within HOMER.
>> + * size : size of the entire nest-counters region
>> + */
>> + if (of_property_read_u32(imc_dev, "imc-nest-offset", &nest_offset))
>> + goto err;
>> +
>> + if (of_property_read_u32(imc_dev, "imc-nest-size", &nest_size))
>> + goto err;
>> +
>> + /* Sanity check */
>> + if ((nest_size/PAGE_SIZE) > IMC_NEST_MAX_PAGES)
>> + goto err;
>> +
>> + /* Find the "HOMER region" for each chip */
>> + rm_node = of_find_node_by_path("/reserved-memory");
>> + if (!rm_node)
>> + goto err;
>> +
>> + /*
>> + * We need to look for the "ibm,homer-image" node in the
>> + * "/reserved-memory" node.
>> + */
>> + for (dn = of_find_node_by_name(rm_node, "ibm,homer-image"); dn;
>> + dn = of_find_node_by_name(dn, "ibm,homer-image")) {
>> +
>> + /* Get the chip id to which the above homer region belongs to */
>> + if (of_property_read_u32(dn, "ibm,chip-id", &chip_id))
>> + goto err;
> So, I was thinking on this (and should probably comment on the firmware
> side as well).
>
> I'd prefer an OPAL interface where instead of looking up where
> ibm,homer-image is, we provide the kernel with a base address and then
> have offsets into it.
>
> That way, we don't tie the kernel code to counters that are only in the
> HOMER region.
Yes. This make sense. Adding something like this to IMC node
will be fine?
chip@<id> {
base_addr = < addr >;
ibm,chip-id = < id>;
};
Maddy
>
>
Back to linux.kernel | Previous | Next — Previous in thread | Find similar | Unroll thread
[PATCH v8 00/10] IMC Instrumentation Support Anju T Sudhakar <anju@linux.vnet.ibm.com> - 2017-05-04 16:30 +0200
[PATCH v8 07/10] powerpc/perf: PMU functions for Core IMC and hotplugging Anju T Sudhakar <anju@linux.vnet.ibm.com> - 2017-05-04 16:30 +0200
Re: [PATCH v8 07/10] powerpc/perf: PMU functions for Core IMC and hotplugging Stewart Smith <stewart@linux.vnet.ibm.com> - 2017-05-17 10:00 +0200
[PATCH v8 10/10] powerpc/perf: Thread imc cpuhotplug support Anju T Sudhakar <anju@linux.vnet.ibm.com> - 2017-05-04 16:30 +0200
[PATCH v8 05/10] powerpc/perf: IMC pmu cpumask and cpuhotplug support Anju T Sudhakar <anju@linux.vnet.ibm.com> - 2017-05-04 16:30 +0200
Re: [PATCH v8 05/10] powerpc/perf: IMC pmu cpumask and cpuhotplug support Daniel Axtens <dja@axtens.net> - 2017-05-08 16:20 +0200
Re: [PATCH v8 05/10] powerpc/perf: IMC pmu cpumask and cpuhotplug support Madhavan Srinivasan <maddy@linux.vnet.ibm.com> - 2017-05-09 08:20 +0200
Re: [PATCH v8 05/10] powerpc/perf: IMC pmu cpumask and cpuhotplug support Stewart Smith <stewart@linux.vnet.ibm.com> - 2017-05-12 04:20 +0200
Re: [PATCH v8 05/10] powerpc/perf: IMC pmu cpumask and cpuhotplug support Michael Ellerman <mpe@ellerman.id.au> - 2017-05-12 05:40 +0200
Re: [PATCH v8 05/10] powerpc/perf: IMC pmu cpumask and cpuhotplug support Madhavan Srinivasan <maddy@linux.vnet.ibm.com> - 2017-05-12 06:00 +0200
Re: [PATCH v8 05/10] powerpc/perf: IMC pmu cpumask and cpuhotplug support Madhavan Srinivasan <maddy@linux.vnet.ibm.com> - 2017-05-12 05:50 +0200
Re: [PATCH v8 05/10] powerpc/perf: IMC pmu cpumask and cpuhotplug support Anju T Sudhakar <anju@linux.vnet.ibm.com> - 2017-05-09 13:00 +0200
Re: [PATCH v8 05/10] powerpc/perf: IMC pmu cpumask and cpuhotplug support Thomas Gleixner <tglx@linutronix.de> - 2017-05-10 14:20 +0200
Re: [PATCH v8 05/10] powerpc/perf: IMC pmu cpumask and cpuhotplug support Stephen Rothwell <sfr@canb.auug.org.au> - 2017-05-11 01:50 +0200
Re: [PATCH v8 05/10] powerpc/perf: IMC pmu cpumask and cpuhotplug support Thomas Gleixner <tglx@linutronix.de> - 2017-05-11 10:50 +0200
Re: [PATCH v8 05/10] powerpc/perf: IMC pmu cpumask and cpuhotplug support Madhavan Srinivasan <maddy@linux.vnet.ibm.com> - 2017-05-15 12:20 +0200
Re: [PATCH v8 05/10] powerpc/perf: IMC pmu cpumask and cpuhotplug support Thomas Gleixner <tglx@linutronix.de> - 2017-05-15 13:10 +0200
[PATCH v8 06/10] powerpc/powernv: Core IMC events detection Anju T Sudhakar <anju@linux.vnet.ibm.com> - 2017-05-04 16:30 +0200
[PATCH v8 08/10] powerpc/powernv: Thread IMC events detection Anju T Sudhakar <anju@linux.vnet.ibm.com> - 2017-05-04 16:30 +0200
[PATCH v8 01/10] powerpc/powernv: Data structure and macros definitions for IMC Anju T Sudhakar <anju@linux.vnet.ibm.com> - 2017-05-04 16:30 +0200
[PATCH v8 09/10] powerpc/perf: Thread IMC PMU functions Anju T Sudhakar <anju@linux.vnet.ibm.com> - 2017-05-04 16:30 +0200
[PATCH v8 04/10] powerpc/perf: Add generic IMC pmu groupand event functions Anju T Sudhakar <anju@linux.vnet.ibm.com> - 2017-05-04 16:30 +0200
[PATCH v8 03/10] powerpc/powernv: Detect supported IMC units and its events Anju T Sudhakar <anju@linux.vnet.ibm.com> - 2017-05-04 16:30 +0200
[PATCH v8 02/10] powerpc/powernv: Autoload IMC device driver module Anju T Sudhakar <anju@linux.vnet.ibm.com> - 2017-05-04 16:30 +0200
Re: [PATCH v8 02/10] powerpc/powernv: Autoload IMC device driver module Stewart Smith <stewart@linux.vnet.ibm.com> - 2017-05-11 09:50 +0200
Re: [PATCH v8 02/10] powerpc/powernv: Autoload IMC device driver module Madhavan Srinivasan <maddy@linux.vnet.ibm.com> - 2017-05-12 06:40 +0200
csiph-web