All of lore.kernel.org
 help / color / mirror / Atom feed
From: Mike Leach <mike.leach@linaro.org>
To: Mathieu Poirier <mathieu.poirier@linaro.org>
Cc: Coresight ML <coresight@lists.linaro.org>,
	 linux-arm-kernel <linux-arm-kernel@lists.infradead.org>,
	 "Suzuki K. Poulose" <suzuki.poulose@arm.com>,
	Leo Yan <leo.yan@linaro.org>
Subject: Re: [RFC PATCH 3/8] coresight: syscfg: Example CoreSight configuration loadable module
Date: Tue, 18 May 2021 17:38:21 +0100	[thread overview]
Message-ID: <CAJ9a7ViVxeZDrg=xH9o_gAG5Boj=m52MQm1aa3odo18jSysJTw@mail.gmail.com> (raw)
In-Reply-To: <20210518155213.GB776252@xps15>

Hi Mathieu,

On Tue, 18 May 2021 at 16:52, Mathieu Poirier
<mathieu.poirier@linaro.org> wrote:
>
> Good day Mike,
>
> On Wed, May 12, 2021 at 10:17:47PM +0100, Mike Leach wrote:
> > An example of creating a loadable module to add CoreSight configurations
> > into a system.
> >
> > In the Kernel samples/coresight directory.
> >
> > Signed-off-by: Mike Leach <mike.leach@linaro.org>
> > ---
> >  MAINTAINERS                              |  1 +
> >  samples/Kconfig                          |  9 +++
> >  samples/Makefile                         |  1 +
> >  samples/coresight/Makefile               |  4 ++
> >  samples/coresight/coresight-cfg-sample.c | 73 ++++++++++++++++++++++++
> >  5 files changed, 88 insertions(+)
> >  create mode 100644 samples/coresight/Makefile
> >  create mode 100644 samples/coresight/coresight-cfg-sample.c
> >
> > diff --git a/MAINTAINERS b/MAINTAINERS
> > index bd7aff0c120f..9ff5f5e7dd06 100644
> > --- a/MAINTAINERS
> > +++ b/MAINTAINERS
> > @@ -1789,6 +1789,7 @@ F:      Documentation/trace/coresight/*
> >  F:   drivers/hwtracing/coresight/*
> >  F:   include/dt-bindings/arm/coresight-cti-dt.h
> >  F:   include/linux/coresight*
> > +F:   samples/coresight/*
> >  F:   tools/perf/arch/arm/util/auxtrace.c
> >  F:   tools/perf/arch/arm/util/cs-etm.c
> >  F:   tools/perf/arch/arm/util/cs-etm.h
> > diff --git a/samples/Kconfig b/samples/Kconfig
> > index b5a1a7aa7e23..0cd618e15571 100644
> > --- a/samples/Kconfig
> > +++ b/samples/Kconfig
> > @@ -223,4 +223,13 @@ config SAMPLE_WATCH_QUEUE
> >         Build example userspace program to use the new mount_notify(),
> >         sb_notify() syscalls and the KEYCTL_WATCH_KEY keyctl() function.
> >
> > +config SAMPLE_CORESIGHT_SYSCFG
> > +     tristate "Build example loadable module for CoreSight config"
> > +     depends on CORESIGHT && m
> > +     help
> > +       Build an example loadable module that adds new CoreSight features
> > +       and configuration using the CoreSight system configuration API.
> > +       This demonstrates how a user may create their own CoreSight
> > +       configurations and easily load them into the system at runtime.
> > +
> >  endif # SAMPLES
> > diff --git a/samples/Makefile b/samples/Makefile
> > index 087e0988ccc5..6c96297001a8 100644
> > --- a/samples/Makefile
> > +++ b/samples/Makefile
> > @@ -30,3 +30,4 @@ obj-$(CONFIG_SAMPLE_INTEL_MEI)              += mei/
> >  subdir-$(CONFIG_SAMPLE_WATCHDOG)     += watchdog
> >  subdir-$(CONFIG_SAMPLE_WATCH_QUEUE)  += watch_queue
> >  obj-$(CONFIG_DEBUG_KMEMLEAK_TEST)    += kmemleak/
> > +obj-$(CONFIG_SAMPLE_CORESIGHT_SYSCFG)        += coresight/
> > diff --git a/samples/coresight/Makefile b/samples/coresight/Makefile
> > new file mode 100644
> > index 000000000000..09126aabf43d
> > --- /dev/null
> > +++ b/samples/coresight/Makefile
> > @@ -0,0 +1,4 @@
> > +# SPDX-License-Identifier: GPL-2.0-only
> > +
> > +obj-$(CONFIG_SAMPLE_CORESIGHT_SYSCFG) += coresight-cfg-sample.o
> > +ccflags-y += -I$(src)/../../drivers/hwtracing/coresight
>
> On my side this really doesn't work and it's baffling.  I double checked the
> path that gets generated with V=1 and it is correct.  I ended up replacing
> $(src) with $(srctree), which gave me a full path rather than a relative path,
> to get things going.  Please see if that works on your side.
>
> I looked at other Makefiles and $(srctree) is predominant.  As such I suggest to
> go with that to avoid further headaches.
>

If I substitute $(srctree) instead of $(src) I get the header file as not found.
Paths generated...
using $(src) : -Isamples/coresight/../../drivers/hwtracing/coresight
using $(srctree):  -I./../../drivers/hwtracing/coresight

However if I drop some of the relative path to make the line
ccflags-y += -I$(srctree)/drivers/hwtracing/coresight

then $srctree does work. Can you confirm that is what you did on your system?
If so we can go with that.

>
> > diff --git a/samples/coresight/coresight-cfg-sample.c b/samples/coresight/coresight-cfg-sample.c
> > new file mode 100644
> > index 000000000000..865c188fae34
> > --- /dev/null
> > +++ b/samples/coresight/coresight-cfg-sample.c
> > @@ -0,0 +1,73 @@
> > +// SPDX-License-Identifier: GPL-2.0
> > +/*
> > + * Copyright(C) 2020 Linaro Limited. All rights reserved.
> > + * Author: Mike Leach <mike.leach@linaro.org>
> > + */
> > +
> > +#include "coresight-config.h"
> > +#include "coresight-syscfg.h"
> > +
> > +/* create an alternate autofdo configuration */
> > +
> > +/* we will provide 4 sets of preset parameter values */
> > +#define AFDO2_NR_PRESETS     4
> > +/* the total number of parameters in used features - strobing has 2 */
> > +#define AFDO2_NR_PARAM_SUM   2
> > +
> > +static const char *afdo2_ref_names[] = {
> > +     "strobing",
> > +};
> > +
> > +/*
> > + * set of presets leaves strobing window constant while varying period to allow
> > + * experimentation with mark / space ratios for various workloads
> > + */
> > +static u64 afdo2_presets[AFDO2_NR_PRESETS][AFDO2_NR_PARAM_SUM] = {
> > +     { 1000, 100 },
> > +     { 1000, 1000 },
> > +     { 1000, 5000 },
> > +     { 1000, 10000 },
> > +};
> > +
> > +struct cscfg_config_desc afdo2 = {
> > +     .name = "autofdo2",
> > +     .description = "Setup ETMs with strobing for autofdo\n"
> > +     "Supplied presets allow experimentation with mark-space ratio for various loads\n",
> > +     .nr_feat_refs = ARRAY_SIZE(afdo2_ref_names),
> > +     .feat_ref_names = afdo2_ref_names,
> > +     .nr_presets = AFDO2_NR_PRESETS,
> > +     .nr_total_params = AFDO2_NR_PARAM_SUM,
> > +     .presets = &afdo2_presets[0][0],
> > +};
> > +
> > +static struct cscfg_feature_desc *sample_feats[] = {
> > +     0
>
> NULL
>
> > +};
> > +
> > +static struct cscfg_config_desc *sample_cfgs[] = {
> > +     &afdo2,
> > +     0
>
> NULL
>
> The end result is the same but it is a matter of time before it gets flagged by
> a bot.
>

Agreed - I'll fix the Nulls

Thanks

Mike

> With the above:
>
> Reviewed-by: Mathieu Poirier <mathieu.poirier@linaro.org>
>
> > +};
> > +
> > +static struct cscfg_load_owner_info mod_owner = {
> > +     .type = CSCFG_OWNER_MODULE,
> > +     .owner_handle = THIS_MODULE,
> > +};
> > +
> > +/* module init and exit - just load and unload configs */
> > +static int __init cscfg_sample_init(void)
> > +{
> > +     return cscfg_load_config_sets(sample_cfgs, sample_feats, &mod_owner);
> > +}
> > +
> > +static void __exit cscfg_sample_exit(void)
> > +{
> > +     cscfg_unload_config_sets(&mod_owner);
> > +}
> > +
> > +module_init(cscfg_sample_init);
> > +module_exit(cscfg_sample_exit);
> > +
> > +MODULE_LICENSE("GPL v2");
> > +MODULE_AUTHOR("Mike Leach <mike.leach@linaro.org>");
> > +MODULE_DESCRIPTION("CoreSight Syscfg Example");
> > --
> > 2.17.1
> >



-- 
Mike Leach
Principal Engineer, ARM Ltd.
Manchester Design Centre. UK

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

  reply	other threads:[~2021-05-18 16:40 UTC|newest]

Thread overview: 30+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-05-12 21:17 [RFC PATCH 0/8] coresight: syscfg: dynamic load, resource management Mike Leach
2021-05-12 21:17 ` [RFC PATCH 1/8] coresight: syscfg: Update API to allow dynamic load and unload Mike Leach
2021-05-17 17:15   ` Mathieu Poirier
2021-05-17 17:27     ` Mathieu Poirier
2021-05-19 13:28       ` Mike Leach
2021-05-12 21:17 ` [RFC PATCH 2/8] coresight: syscfg: Update load API for config loadable modules Mike Leach
2021-05-17 17:38   ` Mathieu Poirier
2021-05-12 21:17 ` [RFC PATCH 3/8] coresight: syscfg: Example CoreSight configuration loadable module Mike Leach
2021-05-18 15:52   ` Mathieu Poirier
2021-05-18 16:38     ` Mike Leach [this message]
2021-05-18 21:15       ` Mathieu Poirier
2021-05-12 21:17 ` [RFC PATCH 4/8] coresight: configfs: Allow configfs to activate configuration Mike Leach
2021-05-18 19:36   ` Mathieu Poirier
2021-05-19  9:47     ` Mike Leach
2021-05-12 21:17 ` [RFC PATCH 5/8] coresight: syscfg: Add API to check and validate device resources Mike Leach
2021-05-21 17:56   ` Mathieu Poirier
2021-07-08 16:30     ` Mike Leach
2021-05-12 21:17 ` [RFC PATCH 6/8] coresight: etm4x: syscfg: Add resource management to etm4x Mike Leach
2021-05-26 17:51   ` Mathieu Poirier
2021-05-27 17:41   ` Mathieu Poirier
2021-05-28 16:17   ` Mathieu Poirier
2021-07-09  9:32     ` Mike Leach
2021-05-12 21:17 ` [RFC PATCH 7/8] coresight: etm4x: Update perf event resource handling Mike Leach
2021-05-12 21:17 ` [RFC PATCH 8/8] coresight: etm4x: Update configuration example Mike Leach
2021-05-13 15:56 ` [RFC PATCH 0/8] coresight: syscfg: dynamic load, resource management Mathieu Poirier
2021-05-13 16:53   ` Mike Leach
2021-05-14  1:35     ` Leo Yan
2021-05-18 18:31 ` Suzuki K Poulose
2021-05-19  9:43   ` Mike Leach
2021-05-19 15:37     ` Mathieu Poirier

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='CAJ9a7ViVxeZDrg=xH9o_gAG5Boj=m52MQm1aa3odo18jSysJTw@mail.gmail.com' \
    --to=mike.leach@linaro.org \
    --cc=coresight@lists.linaro.org \
    --cc=leo.yan@linaro.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=mathieu.poirier@linaro.org \
    --cc=suzuki.poulose@arm.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.