From: Zhao Liu <zhao1.liu@intel.com>
To: Markus Armbruster <armbru@redhat.com>
Cc: "Daniel P . Berrangé" <berrange@redhat.com>,
"Eduardo Habkost" <eduardo@habkost.net>,
"Marcel Apfelbaum" <marcel.apfelbaum@gmail.com>,
"Philippe Mathieu-Daudé" <philmd@linaro.org>,
"Yanan Wang" <wangyanan55@huawei.com>,
"Michael S . Tsirkin" <mst@redhat.com>,
"Paolo Bonzini" <pbonzini@redhat.com>,
"Richard Henderson" <richard.henderson@linaro.org>,
"Eric Blake" <eblake@redhat.com>,
"Marcelo Tosatti" <mtosatti@redhat.com>,
"Alex Bennée" <alex.bennee@linaro.org>,
"Peter Maydell" <peter.maydell@linaro.org>,
"Jonathan Cameron" <Jonathan.Cameron@huawei.com>,
"Sia Jee Heng" <jeeheng.sia@starfivetech.com>,
qemu-devel@nongnu.org, kvm@vger.kernel.org,
qemu-riscv@nongnu.org, qemu-arm@nongnu.org,
"Zhenyu Wang" <zhenyu.z.wang@intel.com>,
"Dapeng Mi" <dapeng1.mi@linux.intel.com>,
"Yongwei Ma" <yongwei.ma@intel.com>
Subject: Re: [PATCH 8/8] qemu-options: Add the description of smp-cache object
Date: Wed, 24 Jul 2024 22:21:10 +0800 [thread overview]
Message-ID: <ZqEN1kZaQcuY4UPG@intel.com> (raw)
In-Reply-To: <87bk2nnev2.fsf@pond.sub.org>
Hi Markus and Daniel,
I have the questions about the -object per cache implementation:
On Wed, Jul 24, 2024 at 02:39:29PM +0200, Markus Armbruster wrote:
> Date: Wed, 24 Jul 2024 14:39:29 +0200
> From: Markus Armbruster <armbru@redhat.com>
> Subject: Re: [PATCH 8/8] qemu-options: Add the description of smp-cache
> object
>
> Zhao Liu <zhao1.liu@intel.com> writes:
>
> > Hi Markus,
> >
> > On Mon, Jul 22, 2024 at 03:37:43PM +0200, Markus Armbruster wrote:
> >> Date: Mon, 22 Jul 2024 15:37:43 +0200
> >> From: Markus Armbruster <armbru@redhat.com>
> >> Subject: Re: [PATCH 8/8] qemu-options: Add the description of smp-cache
> >> object
> >>
> >> Zhao Liu <zhao1.liu@intel.com> writes:
> >>
> >> > Signed-off-by: Zhao Liu <zhao1.liu@intel.com>
> >>
> >> This patch is just documentation. The code got added in some previous
> >> patch. Would it make sense to squash this patch into that previous
> >> patch?
> >
> > OK, I'll merge them.
> >
> >> > ---
> >> > Changes since RFC v2:
> >> > * Rewrote the document of smp-cache object.
> >> >
> >> > Changes since RFC v1:
> >> > * Use "*_cache=topo_level" as -smp example as the original "level"
> >> > term for a cache has a totally different meaning. (Jonathan)
> >> > ---
> >> > qemu-options.hx | 58 +++++++++++++++++++++++++++++++++++++++++++++++++
> >> > 1 file changed, 58 insertions(+)
> >> >
> >> > diff --git a/qemu-options.hx b/qemu-options.hx
> >> > index 8ca7f34ef0c8..4b84f4508a6e 100644
> >> > --- a/qemu-options.hx
> >> > +++ b/qemu-options.hx
> >> > @@ -159,6 +159,15 @@ SRST
> >> > ::
> >> >
> >> > -machine cxl-fmw.0.targets.0=cxl.0,cxl-fmw.0.targets.1=cxl.1,cxl-fmw.0.size=128G,cxl-fmw.0.interleave-granularity=512
> >> > +
> >> > + ``smp-cache='id'``
> >> > + Allows to configure cache property (now only the cache topology level).
> >> > +
> >> > + For example:
> >> > + ::
> >> > +
> >> > + -object '{"qom-type":"smp-cache","id":"cache","caches":[{"name":"l1d","topo":"core"},{"name":"l1i","topo":"core"},{"name":"l2","topo":"module"},{"name":"l3","topo":"die"}]}'
> >> > + -machine smp-cache=cache
> >> > ERST
> >> >
> >> > DEF("M", HAS_ARG, QEMU_OPTION_M,
> >> > @@ -5871,6 +5880,55 @@ SRST
> >> > ::
> >> >
> >> > (qemu) qom-set /objects/iothread1 poll-max-ns 100000
> >> > +
> >> > + ``-object '{"qom-type":"smp-cache","id":id,"caches":[{"name":cache_name,"topo":cache_topo}]}'``
> >> > + Create an smp-cache object that configures machine's cache
> >> > + property. Currently, cache property only include cache topology
> >> > + level.
> >> > +
> >> > + This option must be written in JSON format to support JSON list.
> >>
> >> Why?
> >
> > I'm not familiar with this, so I hope you could educate me if I'm wrong.
> >
> > All I know so far is for -object that defining a list can only be done in
> > JSON format and not with a numeric index like a keyval based option, like:
> >
> > -object smp-cache,id=cache0,caches.0.name=l1i,caches.0.topo=core: Parameter 'caches' is missing
> >
> > the above doesn't work.
> >
> > Is there any other way to specify a list in command line?
>
> The command line is a big, sprawling mess :)
>
> -object supports either a JSON or a QemuOpts argument. *Not* keyval!
>
> Both QemuOpts and keyval parse something like KEY=VALUE,... Keyval
> supports arrays and objects via dotted keys. QemuOpts doesn't natively
> support arrays and objects, but its users can hack around that
> limitation in various ways. -object doesn't. So you're right, it's
> JSON or bust here.
>
> However, if we used one object per cache instead, we could get something
> like
>
> -object smp-cache,name=l1d,...
> -object smp-cache,name=l1u,...
> -object smp-cache,name=l2,...
> ...
Current, I use -object to create a smp_cache object, and link it to
MachineState by -machine,smp-cache=obj_id.
Then for the objects per cache, how could I link them to machine?
Is it possible that I create something static in smp_cache.c and expose
all the cache information to machine through some interface?
Additionally, I would like to consider for the long term heterogeneous
cache, as asked before in [1], does the object per cache conflict with
the cache device I'm considering? Considering cache device is further
because I want to create CPU/cache topology via -device and build a
topology tree.
[1]: https://lore.kernel.org/qemu-devel/Zl88DYwLE3ScDF5F@intel.com/
I think this is becoming a nightmare I can't get around. Naming is
difficult, and sorting out interface design I think is also a difficult
task.
If you feel that there is indeed a conflict, then I'm also willing
to fall back to -smp again and do it based on keyval's list, as originally
suggested by Daniel. Sorry for the repetition on thoughts/design, I hope
that discussion with you I can make sense of the current and subsequent
paths without getting out of hand!
Best Regards,
Zhao
next prev parent reply other threads:[~2024-07-24 14:05 UTC|newest]
Thread overview: 48+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-07-04 3:15 [PATCH 0/8] Introduce SMP Cache Topology Zhao Liu
2024-07-04 3:15 ` [PATCH 1/8] hw/core: Make CPU topology enumeration arch-agnostic Zhao Liu
2024-07-22 11:56 ` Markus Armbruster
2024-07-22 12:25 ` Jonathan Cameron
2024-07-22 13:24 ` Markus Armbruster
2024-07-22 14:01 ` Zhao Liu
2024-07-23 10:14 ` Markus Armbruster
2024-07-23 14:40 ` Zhao Liu
2024-07-04 3:15 ` [PATCH 2/8] qapi/qom: Introduce smp-cache object Zhao Liu
2024-07-09 10:13 ` Zhao Liu
2024-07-22 12:38 ` Jonathan Cameron
2024-07-22 13:33 ` Markus Armbruster
2024-07-22 14:30 ` Zhao Liu
2024-07-24 11:35 ` Markus Armbruster
2024-07-24 12:47 ` Daniel P. Berrangé
2024-07-24 14:03 ` Zhao Liu
2024-07-24 15:10 ` Zhao Liu
2024-07-24 14:55 ` Zhao Liu
2024-07-25 8:51 ` Markus Armbruster
2024-07-25 10:50 ` Jonathan Cameron
2024-07-25 10:59 ` Jonathan Cameron via
2024-07-25 10:59 ` Jonathan Cameron via
2024-07-25 10:59 ` Jonathan Cameron
2024-07-25 11:58 ` Zhao Liu
2024-07-25 11:56 ` Zhao Liu
2024-07-04 3:15 ` [PATCH 3/8] hw/core: Add smp cache topology for machine Zhao Liu
2024-07-22 12:39 ` Jonathan Cameron
2024-07-04 3:15 ` [PATCH 4/8] hw/core: Check smp cache topology support " Zhao Liu
2024-07-22 12:47 ` Jonathan Cameron
2024-07-04 3:16 ` [PATCH 5/8] i386/cpu: Support thread and module level cache topology Zhao Liu
2024-07-04 3:16 ` [PATCH 6/8] i386/cpu: Update cache topology with machine's configuration Zhao Liu
2024-07-04 3:16 ` [PATCH 7/8] i386/pc: Support cache topology in -machine for PC machine Zhao Liu
2024-07-04 3:16 ` [PATCH 8/8] qemu-options: Add the description of smp-cache object Zhao Liu
2024-07-22 13:37 ` Markus Armbruster
2024-07-22 14:42 ` Zhao Liu
2024-07-24 12:39 ` Markus Armbruster
2024-07-24 14:21 ` Zhao Liu [this message]
2024-07-25 9:07 ` Markus Armbruster
2024-08-01 9:37 ` Zhao Liu
2024-08-01 11:28 ` Markus Armbruster
2024-08-02 7:58 ` Zhao Liu
2024-08-07 10:00 ` Zhao Liu
2024-08-09 12:24 ` Markus Armbruster
2024-08-12 9:24 ` Zhao Liu
2024-08-14 12:12 ` Jonathan Cameron
2024-07-22 7:33 ` [PATCH 0/8] Introduce SMP Cache Topology Zhao Liu
2024-07-22 7:49 ` Michael S. Tsirkin
2024-07-22 12:54 ` Jonathan Cameron
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=ZqEN1kZaQcuY4UPG@intel.com \
--to=zhao1.liu@intel.com \
--cc=Jonathan.Cameron@huawei.com \
--cc=alex.bennee@linaro.org \
--cc=armbru@redhat.com \
--cc=berrange@redhat.com \
--cc=dapeng1.mi@linux.intel.com \
--cc=eblake@redhat.com \
--cc=eduardo@habkost.net \
--cc=jeeheng.sia@starfivetech.com \
--cc=kvm@vger.kernel.org \
--cc=marcel.apfelbaum@gmail.com \
--cc=mst@redhat.com \
--cc=mtosatti@redhat.com \
--cc=pbonzini@redhat.com \
--cc=peter.maydell@linaro.org \
--cc=philmd@linaro.org \
--cc=qemu-arm@nongnu.org \
--cc=qemu-devel@nongnu.org \
--cc=qemu-riscv@nongnu.org \
--cc=richard.henderson@linaro.org \
--cc=wangyanan55@huawei.com \
--cc=yongwei.ma@intel.com \
--cc=zhenyu.z.wang@intel.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.