[PATCH v2] selftests: arm coresight: sysfsmode testing

2024-12-19 Thread Linu Cherian
default settings 64+0 records in 64+0 records out 67108864 bytes (67 MB, 64 MiB) copied, 0.196945 s, 341 MB/s 32+0 records in 32+0 records out 16384 bytes (16 kB, 16 KiB) copied, 0.000805288 s, 20.3 MB/s CoreSight path testing (CPU0 -> tmc_etf0): PASS Signed-off-by: Linu Cherian --- Change

Re: [PATCH] selftests: arm coresight: sysfsmode testing

2024-12-15 Thread Linu Cherian
On 2024-12-04 at 16:45:42, James Clark (james.cl...@linaro.org) wrote: > > > On 29/11/2024 8:38 am, Linu Cherian wrote: > > Add sysfs mode selftest for ARM Coresight hardware tracer. > > > > Signed-off-by: Linu Cherian > > --- > > .../drivers/

Re: [PATCH] selftests: arm coresight: sysfsmode testing

2024-12-15 Thread Linu Cherian
Hi James, On 2024-12-04 at 16:45:42, James Clark (james.cl...@linaro.org) wrote: > > > On 29/11/2024 8:38 am, Linu Cherian wrote: > > Add sysfs mode selftest for ARM Coresight hardware tracer. > > > > Signed-off-by: Linu Cherian > > --- > > .

Re: [PATCH] selftests: arm coresight: sysfsmode testing

2024-12-15 Thread Linu Cherian
Hi, On 2024-12-04 at 05:53:56, Shuah Khan (sk...@linuxfoundation.org) wrote: > On 11/29/24 01:38, Linu Cherian wrote: > > Add sysfs mode selftest for ARM Coresight hardware tracer. > > Please add details on what this test does in here. Include > the output from the test?

[PATCH] selftests: arm coresight: sysfsmode testing

2024-11-29 Thread Linu Cherian
Add sysfs mode selftest for ARM Coresight hardware tracer. Signed-off-by: Linu Cherian --- .../drivers/hwtracing/coresight/Makefile | 5 + .../hwtracing/coresight/sysfs_test_trace.sh | 144 ++ 2 files changed, 149 insertions(+) create mode 100644 tools/testing

Re: [RFC 02/11] coresight: etm-perf: Allow an event to use different sinks

2020-11-12 Thread Linu Cherian
cpumask_clear_cpu(cpu, mask); > > continue; > > @@ -284,7 +307,12 @@ static void *etm_setup_aux(struct perf_event *event, > > void **pages, > > if (!sink_ops(sink)->alloc_buffer || !sink_ops(sink)->free_buffer) > > goto err; > > > > - /* Allocate the sink buffer for this session */ > > + /* > > + * Allocate the sink buffer for this session. All the sinks > > + * where this event can be scheduled are ensured to be of the > > + * same type. Thus the same sink configuration is used by the > > + * sinks. > > + */ > > event_data->snk_config = > > sink_ops(sink)->alloc_buffer(sink, event, pages, > >nr_pages, overwrite); > > > Perf record and report worked fine with this as well, with formatting related opencsd hacks. Tested-by : Linu Cherian Thanks.

Re: [PATCH AUTOSEL 5.9 075/147] coresight: Make sysfs functional on topologies with per core sink

2020-11-01 Thread Linu Cherian
Hi, Upstream commit, commit bb1860efc817c18fce4112f25f51043e44346d1b Author: Linu Cherian Date: Wed Sep 16 13:17:34 2020 -0600 coresight: etm: perf: Sink selection using sysfs is deprecated need to go along with this, else there will be build breakage. This applies for 5.4, 5.8 and 5.9

Re: Handling active DMA during a VFIO application crash

2018-02-15 Thread Linu Cherian
Hi Alex, On Thu Feb 15, 2018 at 09:21:09AM -0700, Alex Williamson wrote: > On Thu, 15 Feb 2018 16:34:06 +0530 > Linu Cherian wrote: > > > Hi, > > > > Was exploring the implications of an application crash while DMA > > is active from a vfio PCI dev

Handling active DMA during a VFIO application crash

2018-02-15 Thread Linu Cherian
is a possibility that user pages configured for DMA can get freed to kernel before the vfio device is stopped/reset ? Thanks. -- Linu cherian

Re: [PATCH 0/2] arm64 SMMUv3 PMU driver with IORT support

2017-12-18 Thread Linu Cherian
Hi Marc, On Mon Dec 18, 2017 at 03:39:22PM +, Marc Zyngier wrote: > Thanks for putting me in the loop Robin. > > On 18/12/17 14:48, Robin Murphy wrote: > > On 10/12/17 02:35, Linu Cherian wrote: > >> Hi, > >> > >> > >> On Fri Aug 04, 2017

Re: [PATCH 0/2] arm64 SMMUv3 PMU driver with IORT support

2017-12-18 Thread Linu Cherian
Hi Robin, On Mon Dec 18, 2017 at 02:48:14PM +, Robin Murphy wrote: > On 10/12/17 02:35, Linu Cherian wrote: > >Hi, > > > > > >On Fri Aug 04, 2017 at 03:59:12PM -0400, Neil Leeder wrote: > >>This adds a driver for the SMMUv3 PMU into the perf framewor

Re: [PATCH 0/2] arm64 SMMUv3 PMU driver with IORT support

2017-12-09 Thread Linu Cherian
ies Inc. > Qualcomm Technologies, Inc. is a member of the Code Aurora Forum, > a Linux Foundation Collaborative Project. > > > ___ > linux-arm-kernel mailing list > linux-arm-ker...@lists.infradead.org > http://lists.infradead.org/mailman/listinfo/linux-arm-kernel -- Linu cherian

Re: [PATCH 2/2] perf: add arm64 smmuv3 pmu driver

2017-12-04 Thread Linu Cherian
pdev->dev, mem_resource_0); > > + > > + if (IS_ERR(mem_map_0)) { > > + dev_err(&pdev->dev, "Can't map SMMU PMU @%pa\n", > > + &mem_resource_0->start); > > + return PTR_ERR(mem_map_0); > > + } > > + > > + smmu_pmu->reg_base = mem_map_0; > > + smmu_pmu->pmu.name = > > + devm_kasprintf(&pdev->dev, GFP_KERNEL, "smmu_0_%llx", > > + (mem_resource_0->start) >> SMMU_PA_SHIFT); > > + > > + if (!smmu_pmu->pmu.name) { > > + dev_err(&pdev->dev, "Failed to create PMU name"); > > + return -EINVAL; > > + } > > + > > + ceid_64 = readq(smmu_pmu->reg_base + SMMU_PMCG_CEID0); > > + ceid[0] = ceid_64 & GENMASK(31, 0); > > It took a second look to determine that that masking does nothing... > > > + ceid[1] = ceid_64 >> 32; > > + ceid_64 = readq(smmu_pmu->reg_base + SMMU_PMCG_CEID1); > > + ceid[2] = ceid_64 & GENMASK(31, 0); > > + ceid[3] = ceid_64 >> 32; > > + bitmap_from_u32array(smmu_pmu->supported_events, SMMU_MAX_EVENT_ID, > > +ceid, SMMU_NUM_EVENTS_U32); > > ...but then the whole lot might be cleaner and simpler with a u64[2] > cast to u32* (or unioned to u32[4]) as necessary. > > > + > > + /* Determine if page 1 is present */ > > + if (readl(smmu_pmu->reg_base + SMMU_PMCG_CFGR) & > > + SMMU_PMCG_CFGR_RELOC_CTRS) { > > + mem_resource_1 = platform_get_resource(pdev, IORESOURCE_MEM, 1); > > + mem_map_1 = devm_ioremap_resource(&pdev->dev, mem_resource_1); > > + > > + if (IS_ERR(mem_map_1)) { > > + dev_err(&pdev->dev, "Can't map SMMU PMU @%pa\n", > > + &mem_resource_1->start); > > + return PTR_ERR(mem_map_1); > > + } > > + smmu_pmu->reloc_base = mem_map_1; > > + } else { > > + smmu_pmu->reloc_base = smmu_pmu->reg_base; > > + } > > + > > + irq = platform_get_irq(pdev, 0); > > + if (irq < 0) { > > + dev_err(&pdev->dev, > > + "Failed to get valid irq for smmu @%pa\n", > > + &mem_resource_0->start); > > + return irq; > > + } > > + > > + err = devm_request_irq(&pdev->dev, irq, smmu_pmu_handle_irq, > > + IRQF_NOBALANCING | IRQF_SHARED | IRQF_NO_THREAD, > > + "smmu-pmu", smmu_pmu); > > + if (err) { > > + dev_err(&pdev->dev, > > + "Unable to request IRQ%d for SMMU PMU counters\n", irq); > > + return err; > > + } > > + > > + smmu_pmu->irq = irq; > > + > > + /* Pick one CPU to be the preferred one to use */ > > + smmu_pmu->on_cpu = smp_processor_id(); > > + WARN_ON(irq_set_affinity(smmu_pmu->irq, cpumask_of(smmu_pmu->on_cpu))); > > + > > + smmu_pmu->num_counters = get_num_counters(smmu_pmu); > > + smmu_pmu->pdev = pdev; > > + smmu_pmu->counter_present_mask = GENMASK(smmu_pmu->num_counters - 1, 0); > > + reg_size = (readl(smmu_pmu->reg_base + SMMU_PMCG_CFGR) & > > + SMMU_PMCG_CFGR_SIZE_MASK) >> SMMU_PMCG_CFGR_SIZE_SHIFT; > > + smmu_pmu->reg_size_32 = (reg_size == SMMU_PMCG_CFGR_COUNTER_SIZE_32); > > + smmu_pmu->counter_mask = GENMASK_ULL(reg_size, 0); > > + > > + smmu_pmu_reset(smmu_pmu); > > + > > + err = cpuhp_state_add_instance_nocalls(cpuhp_state_num, > > + &smmu_pmu->node); > > + if (err) { > > + dev_err(&pdev->dev, "Error %d registering hotplug", err); > > + return err; > > + } > > + > > + err = perf_pmu_register(&smmu_pmu->pmu, smmu_pmu->pmu.name, -1); > > + if (err) { > > + dev_err(&pdev->dev, "Error %d registering SMMU PMU\n", err); > > + goto out_unregister; > > + } > > + > > + dev_info(&pdev->dev, "Registered SMMU PMU @ %pa using %d counters\n", > > +&mem_resource_0->start, smmu_pmu->num_counters); > > + > > + return err; > > + > > +out_unregister: > > + cpuhp_state_remove_instance_nocalls(cpuhp_state_num, &smmu_pmu->node); > > + return err; > > +} > > + > > +static int smmu_pmu_remove(struct platform_device *pdev) > > +{ > > + struct smmu_pmu *smmu_pmu = platform_get_drvdata(pdev); > > + > > + perf_pmu_unregister(&smmu_pmu->pmu); > > + cpuhp_state_remove_instance_nocalls(cpuhp_state_num, &smmu_pmu->node); > > + > > + return 0; > > +} > > + > > +static void smmu_pmu_shutdown(struct platform_device *pdev) > > +{ > > + struct smmu_pmu *smmu_pmu = platform_get_drvdata(pdev); > > + > > + smmu_pmu_disable(&smmu_pmu->pmu); > > +} > > + > > +static struct platform_driver smmu_pmu_driver = { > > + .driver = { > > + .name = "arm-smmu-pmu", > > Nit: "arm-smmu-v3-pmu" please, for consistency with the IOMMU driver > naming. There is a SMMUv2 PMU driver in the works, too ;) > > Robin. > > > + }, > > + .probe = smmu_pmu_probe, > > + .remove = smmu_pmu_remove, > > + .shutdown = smmu_pmu_shutdown, > > +}; > > + > > +static int __init arm_smmu_pmu_init(void) > > +{ > > + cpuhp_state_num = cpuhp_setup_state_multi(CPUHP_AP_ONLINE_DYN, > > + "perf/arm/smmupmu:online", > > + NULL, > > + smmu_pmu_offline_cpu); > > + if (cpuhp_state_num < 0) > > + return cpuhp_state_num; > > + > > + return platform_driver_register(&smmu_pmu_driver); > > +} > > +module_init(arm_smmu_pmu_init); > > + > > +static void __exit arm_smmu_pmu_exit(void) > > +{ > > + platform_driver_unregister(&smmu_pmu_driver); > > +} > > + > > +module_exit(arm_smmu_pmu_exit); > > +MODULE_LICENSE("GPL v2"); > > > > > ___ > linux-arm-kernel mailing list > linux-arm-ker...@lists.infradead.org > http://lists.infradead.org/mailman/listinfo/linux-arm-kernel -- Linu cherian

Re: [v4 3/4] iommu/arm-smmu-v3: Add workaround for Cavium ThunderX2 erratum #74

2017-05-09 Thread Linu Cherian
> On Tue May 09, 2017 at 02:02:58PM +0100, Robin Murphy wrote: > > On 09/05/17 12:45, Geetha sowjanya wrote: > > > From: Linu Cherian > > > > > > Cavium ThunderX2 SMMU implementation doesn't support page 1 register space > > > and PAGE0_R

Re: [v4 3/4] iommu/arm-smmu-v3: Add workaround for Cavium ThunderX2 erratum #74

2017-05-09 Thread Linu Cherian
On Tue May 09, 2017 at 02:02:58PM +0100, Robin Murphy wrote: > On 09/05/17 12:45, Geetha sowjanya wrote: > > From: Linu Cherian > > > > Cavium ThunderX2 SMMU implementation doesn't support page 1 register space > > and PAGE0_REGS_ONLY option is enabled as an er

Re: [PATCH v3 0/7] Cavium ThunderX2 SMMUv3 errata workarounds

2017-05-08 Thread Linu Cherian
On Sat May 06, 2017 at 12:22:50AM +0200, Robert Richter wrote: > On 05.05.17 17:38:04, Geetha sowjanya wrote: > > From: Linu Cherian > > > > Cavium ThunderX2 SMMUv3 implementation has two Silicon Erratas. > > 1. Errata ID #74 > >SMMU register alias Page 1 is

Re: [PATCH v3 2/7] iommu/arm-smmu-v3: Do resource size checks based on SMMU

2017-05-08 Thread Linu Cherian
On Mon May 08, 2017 at 12:09:32PM +0200, Robert Richter wrote: > On 08.05.17 15:14:37, Linu Cherian wrote: > > On Sat May 06, 2017 at 12:18:44AM +0200, Robert Richter wrote: > > > On 05.05.17 17:38:06, Geetha sowjanya wrote: > > > > From: Linu Cherian > &g

Re: [PATCH v3 2/7] iommu/arm-smmu-v3: Do resource size checks based on SMMU

2017-05-08 Thread Linu Cherian
On Sat May 06, 2017 at 12:18:44AM +0200, Robert Richter wrote: > On 05.05.17 17:38:06, Geetha sowjanya wrote: > > From: Linu Cherian > > > > With implementations supporting only page 0 register space, > > resource size can be 64k as well and hence perform size chec

Re: [PATCH v3 1/7] iommu/arm-smmu-v3: Introduce SMMU option PAGE0_REGS_ONLY for ThunderX2 errata #74

2017-05-08 Thread Linu Cherian
On Sat May 06, 2017 at 01:03:28AM +0200, Robert Richter wrote: > On 05.05.17 17:38:05, Geetha sowjanya wrote: > > From: Linu Cherian > > > > Cavium ThunderX2 SMMU implementation doesn't support page 1 register space > > and PAGE0_REGS_ONLY option will be