Message ID | 20200821034445.967-10-tingwei@codeaurora.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | coresight: allow to build coresight as modules | expand |
On 08/21/2020 04:44 AM, Tingwei Zhang wrote: > From: Kim Phillips <kim.phillips@arm.com> > > Allow to build coresight-etm3x as a module, for ease of development. > > - Kconfig becomes a tristate, to allow =m > - append -core to source file name to allow module to > be called coresight-etm3x by the Makefile > - add an etm_remove function, for module unload > - add a MODULE_DEVICE_TABLE for autoloading on boot > > Cc: Mathieu Poirier <mathieu.poirier@linaro.org> > Cc: Leo Yan <leo.yan@linaro.org> > Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com> > Cc: Randy Dunlap <rdunlap@infradead.org> > Cc: Suzuki K Poulose <Suzuki.Poulose@arm.com> > Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org> > Cc: Russell King <linux@armlinux.org.uk> > Signed-off-by: Kim Phillips <kim.phillips@arm.com> > Signed-off-by: Tingwei Zhang <tingwei@codeaurora.org> > Reviewed-by: Mike Leach <mike.leach@linaro.org> > diff --git a/drivers/hwtracing/coresight/coresight-etm3x.c b/drivers/hwtracing/coresight/coresight-etm3x-core.c > similarity index 97% > rename from drivers/hwtracing/coresight/coresight-etm3x.c > rename to drivers/hwtracing/coresight/coresight-etm3x-core.c > index bf22dcfd3327..ba9c86497acb 100644 > --- a/drivers/hwtracing/coresight/coresight-etm3x.c > +++ b/drivers/hwtracing/coresight/coresight-etm3x-core.c > @@ -895,6 +895,23 @@ static int etm_probe(struct amba_device *adev, const struct amba_id *id) > return ret; > } > > +static int __exit etm_remove(struct amba_device *adev) > +{ > + struct etm_drvdata *drvdata = dev_get_drvdata(&adev->dev); > + > + etm_perf_symlink(drvdata->csdev, false); > + > + if (--etm_count == 0) { > + cpuhp_remove_state_nocalls(CPUHP_AP_ARM_CORESIGHT_STARTING); > + if (hp_online) > + cpuhp_remove_state_nocalls(hp_online); > + } > + > + coresight_unregister(drvdata->csdev); > + > + return 0; > +} > + Don't we need to fix the races like we did for ETMv4 ? Suzuki
On Sun, Sep 13, 2020 at 09:17:05PM +0800, Suzuki K Poulose wrote: > On 08/21/2020 04:44 AM, Tingwei Zhang wrote: > >From: Kim Phillips <kim.phillips@arm.com> > > > >Allow to build coresight-etm3x as a module, for ease of development. > > > >- Kconfig becomes a tristate, to allow =m > >- append -core to source file name to allow module to > > be called coresight-etm3x by the Makefile > >- add an etm_remove function, for module unload > >- add a MODULE_DEVICE_TABLE for autoloading on boot > > > >Cc: Mathieu Poirier <mathieu.poirier@linaro.org> > >Cc: Leo Yan <leo.yan@linaro.org> > >Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com> > >Cc: Randy Dunlap <rdunlap@infradead.org> > >Cc: Suzuki K Poulose <Suzuki.Poulose@arm.com> > >Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org> > >Cc: Russell King <linux@armlinux.org.uk> > >Signed-off-by: Kim Phillips <kim.phillips@arm.com> > >Signed-off-by: Tingwei Zhang <tingwei@codeaurora.org> > >Reviewed-by: Mike Leach <mike.leach@linaro.org> > > > >diff --git a/drivers/hwtracing/coresight/coresight-etm3x.c > b/drivers/hwtracing/coresight/coresight-etm3x-core.c > >similarity index 97% > >rename from drivers/hwtracing/coresight/coresight-etm3x.c > >rename to drivers/hwtracing/coresight/coresight-etm3x-core.c > >index bf22dcfd3327..ba9c86497acb 100644 > >--- a/drivers/hwtracing/coresight/coresight-etm3x.c > >+++ b/drivers/hwtracing/coresight/coresight-etm3x-core.c > >@@ -895,6 +895,23 @@ static int etm_probe(struct amba_device *adev, > const struct amba_id *id) > > return ret; > > } > >+static int __exit etm_remove(struct amba_device *adev) > >+{ > >+ struct etm_drvdata *drvdata = dev_get_drvdata(&adev->dev); > >+ > >+ etm_perf_symlink(drvdata->csdev, false); > >+ > >+ if (--etm_count == 0) { > >+ > cpuhp_remove_state_nocalls(CPUHP_AP_ARM_CORESIGHT_STARTING); > >+ if (hp_online) > >+ cpuhp_remove_state_nocalls(hp_online); > >+ } > >+ > >+ coresight_unregister(drvdata->csdev); > >+ > >+ return 0; > >+} > >+ > > Don't we need to fix the races like we did for ETMv4 ? > > Suzuki > Yes, we need that. Unfortunately, I don't have ETMv3 devie to verify the change. Mathieu has been very kind to offer his help to take care of ETMv3. Thanks, Tingwei > _______________________________________________ > linux-arm-kernel mailing list > linux-arm-kernel@lists.infradead.org > http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
On Mon, Sep 14, 2020 at 10:19:28AM +0800, Tingwei Zhang wrote: > On Sun, Sep 13, 2020 at 09:17:05PM +0800, Suzuki K Poulose wrote: > > On 08/21/2020 04:44 AM, Tingwei Zhang wrote: > > >From: Kim Phillips <kim.phillips@arm.com> > > > > > >Allow to build coresight-etm3x as a module, for ease of development. > > > > > >- Kconfig becomes a tristate, to allow =m > > >- append -core to source file name to allow module to > > > be called coresight-etm3x by the Makefile > > >- add an etm_remove function, for module unload > > >- add a MODULE_DEVICE_TABLE for autoloading on boot > > > > > >Cc: Mathieu Poirier <mathieu.poirier@linaro.org> > > >Cc: Leo Yan <leo.yan@linaro.org> > > >Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com> > > >Cc: Randy Dunlap <rdunlap@infradead.org> > > >Cc: Suzuki K Poulose <Suzuki.Poulose@arm.com> > > >Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org> > > >Cc: Russell King <linux@armlinux.org.uk> > > >Signed-off-by: Kim Phillips <kim.phillips@arm.com> > > >Signed-off-by: Tingwei Zhang <tingwei@codeaurora.org> > > >Reviewed-by: Mike Leach <mike.leach@linaro.org> > > > > > > >diff --git a/drivers/hwtracing/coresight/coresight-etm3x.c > > b/drivers/hwtracing/coresight/coresight-etm3x-core.c > > >similarity index 97% > > >rename from drivers/hwtracing/coresight/coresight-etm3x.c > > >rename to drivers/hwtracing/coresight/coresight-etm3x-core.c > > >index bf22dcfd3327..ba9c86497acb 100644 > > >--- a/drivers/hwtracing/coresight/coresight-etm3x.c > > >+++ b/drivers/hwtracing/coresight/coresight-etm3x-core.c > > >@@ -895,6 +895,23 @@ static int etm_probe(struct amba_device *adev, > > const struct amba_id *id) > > > return ret; > > > } > > >+static int __exit etm_remove(struct amba_device *adev) > > >+{ > > >+ struct etm_drvdata *drvdata = dev_get_drvdata(&adev->dev); > > >+ > > >+ etm_perf_symlink(drvdata->csdev, false); > > >+ > > >+ if (--etm_count == 0) { > > >+ > > cpuhp_remove_state_nocalls(CPUHP_AP_ARM_CORESIGHT_STARTING); > > >+ if (hp_online) > > >+ cpuhp_remove_state_nocalls(hp_online); > > >+ } > > >+ > > >+ coresight_unregister(drvdata->csdev); > > >+ > > >+ return 0; > > >+} > > >+ > > > > Don't we need to fix the races like we did for ETMv4 ? > > > > Suzuki > > > Yes, we need that. Unfortunately, I don't have ETMv3 devie to verify the > change. Mathieu has been very kind to offer his help to take care of > ETMv3. Correct - I will do the testing but the implementation still has to come from you. > > Thanks, > Tingwei > > _______________________________________________ > > linux-arm-kernel mailing list > > linux-arm-kernel@lists.infradead.org > > http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
On Sun, Sep 13, 2020 at 02:17:05PM +0100, Suzuki K Poulose wrote: > On 08/21/2020 04:44 AM, Tingwei Zhang wrote: > > From: Kim Phillips <kim.phillips@arm.com> > > > > Allow to build coresight-etm3x as a module, for ease of development. > > > > - Kconfig becomes a tristate, to allow =m > > - append -core to source file name to allow module to > > be called coresight-etm3x by the Makefile > > - add an etm_remove function, for module unload > > - add a MODULE_DEVICE_TABLE for autoloading on boot > > > > Cc: Mathieu Poirier <mathieu.poirier@linaro.org> > > Cc: Leo Yan <leo.yan@linaro.org> > > Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com> > > Cc: Randy Dunlap <rdunlap@infradead.org> > > Cc: Suzuki K Poulose <Suzuki.Poulose@arm.com> > > Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org> > > Cc: Russell King <linux@armlinux.org.uk> > > Signed-off-by: Kim Phillips <kim.phillips@arm.com> > > Signed-off-by: Tingwei Zhang <tingwei@codeaurora.org> > > Reviewed-by: Mike Leach <mike.leach@linaro.org> > > > > diff --git a/drivers/hwtracing/coresight/coresight-etm3x.c b/drivers/hwtracing/coresight/coresight-etm3x-core.c > > similarity index 97% > > rename from drivers/hwtracing/coresight/coresight-etm3x.c > > rename to drivers/hwtracing/coresight/coresight-etm3x-core.c > > index bf22dcfd3327..ba9c86497acb 100644 > > --- a/drivers/hwtracing/coresight/coresight-etm3x.c > > +++ b/drivers/hwtracing/coresight/coresight-etm3x-core.c > > @@ -895,6 +895,23 @@ static int etm_probe(struct amba_device *adev, const struct amba_id *id) > > return ret; > > } > > +static int __exit etm_remove(struct amba_device *adev) > > +{ > > + struct etm_drvdata *drvdata = dev_get_drvdata(&adev->dev); > > + > > + etm_perf_symlink(drvdata->csdev, false); > > + > > + if (--etm_count == 0) { > > + cpuhp_remove_state_nocalls(CPUHP_AP_ARM_CORESIGHT_STARTING); > > + if (hp_online) > > + cpuhp_remove_state_nocalls(hp_online); > > + } > > + > > + coresight_unregister(drvdata->csdev); > > + > > + return 0; > > +} > > + > > Don't we need to fix the races like we did for ETMv4 ? This is one of the things I wanted to get back to but Suzuki beat me to it. I am now done reviewing this set. Thanks, Mathieu > > Suzuki
diff --git a/drivers/hwtracing/coresight/Kconfig b/drivers/hwtracing/coresight/Kconfig index 6433f835fc97..8fd9fd139cf3 100644 --- a/drivers/hwtracing/coresight/Kconfig +++ b/drivers/hwtracing/coresight/Kconfig @@ -65,7 +65,7 @@ config CORESIGHT_SINK_ETBV10 special enhancement or added features. config CORESIGHT_SOURCE_ETM3X - bool "CoreSight Embedded Trace Macrocell 3.x driver" + tristate "CoreSight Embedded Trace Macrocell 3.x driver" depends on !ARM64 select CORESIGHT_LINKS_AND_SINKS help @@ -74,6 +74,9 @@ config CORESIGHT_SOURCE_ETM3X This is primarily useful for instruction level tracing. Depending the ETM version data tracing may also be available. + To compile this driver as a module, choose M here: the + module will be called coresight-etm3x. + config CORESIGHT_SOURCE_ETM4X bool "CoreSight Embedded Trace Macrocell 4.x driver" depends on ARM64 diff --git a/drivers/hwtracing/coresight/Makefile b/drivers/hwtracing/coresight/Makefile index 19497d1d92bf..d619cfd0abd8 100644 --- a/drivers/hwtracing/coresight/Makefile +++ b/drivers/hwtracing/coresight/Makefile @@ -11,7 +11,8 @@ obj-$(CONFIG_CORESIGHT_SINK_TPIU) += coresight-tpiu.o obj-$(CONFIG_CORESIGHT_SINK_ETBV10) += coresight-etb10.o obj-$(CONFIG_CORESIGHT_LINKS_AND_SINKS) += coresight-funnel.o \ coresight-replicator.o -obj-$(CONFIG_CORESIGHT_SOURCE_ETM3X) += coresight-etm3x.o coresight-etm-cp14.o \ +obj-$(CONFIG_CORESIGHT_SOURCE_ETM3X) += coresight-etm3x.o +coresight-etm3x-y := coresight-etm3x-core.o coresight-etm-cp14.o \ coresight-etm3x-sysfs.o obj-$(CONFIG_CORESIGHT_SOURCE_ETM4X) += coresight-etm4x.o \ coresight-etm4x-sysfs.o diff --git a/drivers/hwtracing/coresight/coresight-etm3x.c b/drivers/hwtracing/coresight/coresight-etm3x-core.c similarity index 97% rename from drivers/hwtracing/coresight/coresight-etm3x.c rename to drivers/hwtracing/coresight/coresight-etm3x-core.c index bf22dcfd3327..ba9c86497acb 100644 --- a/drivers/hwtracing/coresight/coresight-etm3x.c +++ b/drivers/hwtracing/coresight/coresight-etm3x-core.c @@ -895,6 +895,23 @@ static int etm_probe(struct amba_device *adev, const struct amba_id *id) return ret; } +static int __exit etm_remove(struct amba_device *adev) +{ + struct etm_drvdata *drvdata = dev_get_drvdata(&adev->dev); + + etm_perf_symlink(drvdata->csdev, false); + + if (--etm_count == 0) { + cpuhp_remove_state_nocalls(CPUHP_AP_ARM_CORESIGHT_STARTING); + if (hp_online) + cpuhp_remove_state_nocalls(hp_online); + } + + coresight_unregister(drvdata->csdev); + + return 0; +} + #ifdef CONFIG_PM static int etm_runtime_suspend(struct device *dev) { @@ -937,6 +954,8 @@ static const struct amba_id etm_ids[] = { { 0, 0}, }; +MODULE_DEVICE_TABLE(amba, etm_ids); + static struct amba_driver etm_driver = { .drv = { .name = "coresight-etm3x", @@ -945,6 +964,13 @@ static struct amba_driver etm_driver = { .suppress_bind_attrs = true, }, .probe = etm_probe, + .remove = etm_remove, .id_table = etm_ids, }; -builtin_amba_driver(etm_driver); + +module_amba_driver(etm_driver); + +MODULE_AUTHOR("Pratik Patel <pratikp@codeaurora.org>"); +MODULE_AUTHOR("Mathieu Poirier <mathieu.poirier@linaro.org>"); +MODULE_DESCRIPTION("Arm CoreSight Program Flow Trace driver"); +MODULE_LICENSE("GPL v2");