Re: [PATCH v10 09/24] coresight: etm3x: allow etm3x to be built as a module
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 > > > > 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 > > Cc: Leo Yan > > Cc: Alexander Shishkin > > Cc: Randy Dunlap > > Cc: Suzuki K Poulose > > Cc: Greg Kroah-Hartman > > Cc: Russell King > > Signed-off-by: Kim Phillips > > Signed-off-by: Tingwei Zhang > > Reviewed-by: Mike Leach > > > > 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(>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
Re: [PATCH v10 09/24] coresight: etm3x: allow etm3x to be built as a module
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 > > > > > >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 > > >Cc: Leo Yan > > >Cc: Alexander Shishkin > > >Cc: Randy Dunlap > > >Cc: Suzuki K Poulose > > >Cc: Greg Kroah-Hartman > > >Cc: Russell King > > >Signed-off-by: Kim Phillips > > >Signed-off-by: Tingwei Zhang > > >Reviewed-by: Mike Leach > > > > > > >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(>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-ker...@lists.infradead.org > > http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
Re: [PATCH v10 09/24] coresight: etm3x: allow etm3x to be built as a module
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 > > > >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 > >Cc: Leo Yan > >Cc: Alexander Shishkin > >Cc: Randy Dunlap > >Cc: Suzuki K Poulose > >Cc: Greg Kroah-Hartman > >Cc: Russell King > >Signed-off-by: Kim Phillips > >Signed-off-by: Tingwei Zhang > >Reviewed-by: Mike Leach > > > >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(>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-ker...@lists.infradead.org > http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
Re: [PATCH v10 09/24] coresight: etm3x: allow etm3x to be built as a module
On 08/21/2020 04:44 AM, Tingwei Zhang wrote: From: Kim Phillips 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 Cc: Leo Yan Cc: Alexander Shishkin Cc: Randy Dunlap Cc: Suzuki K Poulose Cc: Greg Kroah-Hartman Cc: Russell King Signed-off-by: Kim Phillips Signed-off-by: Tingwei Zhang Reviewed-by: Mike Leach 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(>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
[PATCH v10 09/24] coresight: etm3x: allow etm3x to be built as a module
From: Kim Phillips 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 Cc: Leo Yan Cc: Alexander Shishkin Cc: Randy Dunlap Cc: Suzuki K Poulose Cc: Greg Kroah-Hartman Cc: Russell King Signed-off-by: Kim Phillips Signed-off-by: Tingwei Zhang Reviewed-by: Mike Leach --- drivers/hwtracing/coresight/Kconfig | 5 +++- drivers/hwtracing/coresight/Makefile | 3 +- ...resight-etm3x.c => coresight-etm3x-core.c} | 28 ++- 3 files changed, 33 insertions(+), 3 deletions(-) rename drivers/hwtracing/coresight/{coresight-etm3x.c => coresight-etm3x-core.c} (97%) 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(>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 "); +MODULE_AUTHOR("Mathieu Poirier "); +MODULE_DESCRIPTION("Arm CoreSight Program Flow Trace driver"); +MODULE_LICENSE("GPL v2"); -- The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum, a Linux Foundation Collaborative Project