qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Zhao Liu <zhao1.liu@linux.intel.com>
To: "wangyanan (Y)" <wangyanan55@huawei.com>
Cc: qemu-devel@nongnu.org, "Zhenyu Wang" <zhenyu.z.wang@intel.com>,
	"Dapeng Mi" <dapeng1.mi@intel.com>,
	"Zhuocheng Ding" <zhuocheng.ding@intel.com>,
	"Robert Hoo" <robert.hu@linux.intel.com>,
	"Sean Christopherson" <seanjc@google.com>,
	"Like Xu" <like.xu.linux@gmail.com>,
	"Zhao Liu" <zhao1.liu@intel.com>,
	"Eduardo Habkost" <eduardo@habkost.net>,
	"Marcel Apfelbaum" <marcel.apfelbaum@gmail.com>,
	"Philippe Mathieu-Daudé" <philmd@linaro.org>,
	"Michael S . Tsirkin" <mst@redhat.com>,
	"Richard Henderson" <richard.henderson@linaro.org>,
	"Paolo Bonzini" <pbonzini@redhat.com>,
	"Eric Blake" <eblake@redhat.com>,
	"Markus Armbruster" <armbru@redhat.com>
Subject: Re: [RFC 41/52] machine: Introduce core_type() hook
Date: Fri, 17 Feb 2023 11:26:53 +0800	[thread overview]
Message-ID: <Y+7z/Y4LEmrLGSpC@liuzhao-OptiPlex-7080> (raw)
In-Reply-To: <9fe2480d-d3e0-3cda-6bed-0132d1bdd1a0@huawei.com>

On Thu, Feb 16, 2023 at 08:15:23PM +0800, wangyanan (Y) wrote:
> Date: Thu, 16 Feb 2023 20:15:23 +0800
> From: "wangyanan (Y)" <wangyanan55@huawei.com>
> Subject: Re: [RFC 41/52] machine: Introduce core_type() hook
> 
> Hi Zhao,
> 
> 在 2023/2/13 17:50, Zhao Liu 写道:
> > From: Zhao Liu <zhao1.liu@intel.com>
> > 
> > Since supported core types are architecture specific, we need this hook
> > to allow archs define its own parsing or validation method.
> > 
> > As the example, add the x86 core_type() which will be used in "-hybrid"
> > parameter parsing.
> > 
> > Signed-off-by: Zhao Liu <zhao1.liu@intel.com>
> > ---
> >   hw/core/machine-topo.c | 14 ++++++++++++++
> >   hw/core/machine.c      |  1 +
> >   hw/i386/x86.c          | 15 +++++++++++++++
> >   include/hw/boards.h    |  7 +++++++
> >   4 files changed, 37 insertions(+)
> > 
> > diff --git a/hw/core/machine-topo.c b/hw/core/machine-topo.c
> > index 12c05510c1b5..f9ab08a1252e 100644
> > --- a/hw/core/machine-topo.c
> > +++ b/hw/core/machine-topo.c
> > @@ -352,3 +352,17 @@ void machine_parse_smp_config(MachineState *ms,
> >           return;
> >       }
> >   }
> > +
> > +/*
> > + * machine_parse_hybrid_core_type: the default hook to parse hybrid core
> > + *                                 type corresponding to the coretype
> > + *                                 string option.
> > + */
> > +int machine_parse_hybrid_core_type(MachineState *ms, const char *coretype)
> > +{
> > +    if (strcmp(coretype, "") == 0 || strcmp(coretype, "none") == 0) {
> > +        return 0;
> > +    }
> > +
> > +    return -1;
> > +}
> Is it possible that coretype can be NULL?
> What would *coretype be if the users don't explicitly specify coretype
> in the command line?

At present, the coretype field cannot be omitted, which requires other code
changes to support omission (if omission is required in the future, there
should be an arch-specific method to supplement the default coretype at the
same time).

> > diff --git a/hw/core/machine.c b/hw/core/machine.c
> > index fad990f49b03..acc32b3be5f6 100644
> > --- a/hw/core/machine.c
> > +++ b/hw/core/machine.c
> > @@ -926,6 +926,7 @@ static void machine_class_init(ObjectClass *oc, void *data)
> >        * On Linux, each node's border has to be 8MB aligned
> >        */
> >       mc->numa_mem_align_shift = 23;
> > +    mc->core_type = machine_parse_hybrid_core_type;
> >       object_class_property_add_str(oc, "kernel",
> >           machine_get_kernel, machine_set_kernel);
> > diff --git a/hw/i386/x86.c b/hw/i386/x86.c
> > index f381fdc43180..f58a90359170 100644
> > --- a/hw/i386/x86.c
> > +++ b/hw/i386/x86.c
> > @@ -1569,6 +1569,20 @@ static void machine_set_sgx_epc(Object *obj, Visitor *v, const char *name,
> >       qapi_free_SgxEPCList(list);
> >   }
> > +static int x86_parse_hybrid_core_type(MachineState *ms, const char *coretype)
> > +{
> > +    X86HybridCoreType type;
> > +
> > +    if (strcmp(coretype, "atom") == 0) {
> > +        type = INTEL_ATOM_TYPE;
> > +    } else if (strcmp(coretype, "core") == 0) {
> > +        type = INTEL_CORE_TYPE;
> > +    } else {
> > +        type = INVALID_HYBRID_TYPE;
> > +    }
> What about:
> INTEL_CORE_TYPE_ATOM
> INTEL_CORE_TYPE_CORE
> X86_CORE_TYPE_UNKNOWN ?
> just a suggestion.

It looks better! Thanks.

> 
> Thanks,
> Yanan
> > +    return type;
> > +}
> > +
> >   static void x86_machine_initfn(Object *obj)
> >   {
> >       X86MachineState *x86ms = X86_MACHINE(obj);
> > @@ -1596,6 +1610,7 @@ static void x86_machine_class_init(ObjectClass *oc, void *data)
> >       x86mc->save_tsc_khz = true;
> >       x86mc->fwcfg_dma_enabled = true;
> >       nc->nmi_monitor_handler = x86_nmi;
> > +    mc->core_type = x86_parse_hybrid_core_type;
> >       object_class_property_add(oc, X86_MACHINE_SMM, "OnOffAuto",
> >           x86_machine_get_smm, x86_machine_set_smm,
> > diff --git a/include/hw/boards.h b/include/hw/boards.h
> > index 9364c90d5f1a..34ec035b5c9f 100644
> > --- a/include/hw/boards.h
> > +++ b/include/hw/boards.h
> > @@ -36,6 +36,7 @@ void machine_set_cpu_numa_node(MachineState *machine,
> >                                  Error **errp);
> >   void machine_parse_smp_config(MachineState *ms,
> >                                 const SMPConfiguration *config, Error **errp);
> > +int machine_parse_hybrid_core_type(MachineState *ms, const char *coretype);
> >   /**
> >    * machine_class_allow_dynamic_sysbus_dev: Add type to list of valid devices
> > @@ -199,6 +200,11 @@ typedef struct {
> >    *    Return the type of KVM corresponding to the kvm-type string option or
> >    *    computed based on other criteria such as the host kernel capabilities.
> >    *    kvm-type may be NULL if it is not needed.
> > + * @core_type:
> > + *    Return the type of hybrid cores corresponding to the coretype string
> > + *    option. The default hook only accept "none" or "" since the most generic
> > + *    core topology should not specify any specific core type. Each arch can
> > + *    define its own core_type() hook to override the default one.
> >    * @numa_mem_supported:
> >    *    true if '--numa node.mem' option is supported and false otherwise
> >    * @hotplug_allowed:
> > @@ -237,6 +243,7 @@ struct MachineClass {
> >       void (*reset)(MachineState *state, ShutdownCause reason);
> >       void (*wakeup)(MachineState *state);
> >       int (*kvm_type)(MachineState *machine, const char *arg);
> > +    int (*core_type)(MachineState *state, const char *type);
> >       BlockInterfaceType block_default_type;
> >       int units_per_default_bus;
> 


  reply	other threads:[~2023-02-17  3:19 UTC|newest]

Thread overview: 113+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-02-13  9:49 [RFC 00/52] Introduce hybrid CPU topology Zhao Liu
2023-02-13  9:49 ` [RFC 01/52] hw/smbios: Fix smbios_smp_sockets caculation Zhao Liu
2023-02-13  9:49 ` [RFC 02/52] hw/smbios: Fix thread count in type4 Zhao Liu
2023-02-13  9:49 ` [RFC 03/52] hw/smbios: Fix core " Zhao Liu
2023-02-13  9:49 ` [RFC 04/52] i386/WHPX: Fix error message when fail to set ProcessorCount Zhao Liu
2023-02-13 13:41   ` Daniel P. Berrangé
2023-02-15  2:29     ` Zhao Liu
2023-02-13  9:49 ` [RFC 05/52] hw/core/machine: Rename machine-smp.c to machine-topo.c Zhao Liu
2023-02-13 12:52   ` wangyanan (Y) via
2023-02-14  8:50     ` Zhao Liu
2023-02-13  9:49 ` [RFC 06/52] hw/cpu: Introduce hybrid CPU topology Zhao Liu
2023-02-13 13:10   ` Philippe Mathieu-Daudé
2023-02-14  9:30     ` Zhao Liu
2023-02-14  9:27       ` Philippe Mathieu-Daudé
2023-02-15  3:15         ` Zhao Liu
2023-02-13 13:18   ` wangyanan (Y) via
2023-02-14 10:16     ` Zhao Liu
2023-02-14 11:23       ` wangyanan (Y) via
2023-02-15  3:22         ` Zhao Liu
2023-02-13  9:49 ` [RFC 07/52] hw/core/machine: Add the new topology support in MachineState Zhao Liu
2023-02-13  9:49 ` [RFC 08/52] machine: Add helpers to get cpu topology info from MachineState.topo Zhao Liu
2023-02-14  1:12   ` Mi, Dapeng1
2023-02-15  2:31     ` Zhao Liu
2023-02-16  8:38   ` wangyanan (Y) via
2023-02-17  3:07     ` Zhao Liu
2023-02-17  7:41       ` wangyanan (Y) via
2023-02-17  9:07         ` Zhao Liu
2023-02-13  9:49 ` [RFC 09/52] hw/machine: Introduce core type for hybrid topology Zhao Liu
2023-02-13 13:13   ` Philippe Mathieu-Daudé
2023-02-14  9:41     ` Zhao Liu
2023-02-14  1:14   ` Mi, Dapeng1
2023-02-15  2:40     ` Zhao Liu
2023-02-13  9:49 ` [RFC 10/52] machine: Replace MachineState.topo.smp access with topology helpers Zhao Liu
2023-02-13  9:49 ` [RFC 11/52] accel/kvm: Add hybrid info when check cpu num Zhao Liu
2023-02-13  9:49 ` [RFC 12/52] hw/acpi: Replace MachineState.smp access with topology helpers Zhao Liu
2023-02-16  9:31   ` wangyanan (Y) via
2023-02-17  3:14     ` Zhao Liu
2023-02-17  7:54       ` wangyanan (Y) via
2023-02-13  9:49 ` [RFC 13/52] cpu/core: Use generic topology helper for "help" to set nr_threads Zhao Liu
2023-02-13  9:49 ` [RFC 14/52] hw/smbios: Use generic topology name and helper Zhao Liu
2023-02-13  9:49 ` [RFC 15/52] migration/postcopy-ram: " Zhao Liu
2023-02-13 10:07   ` Juan Quintela
2023-02-14  8:12     ` Zhao Liu
2023-02-13 10:16   ` Juan Quintela
2023-02-14  8:16     ` Zhao Liu
2023-02-13  9:49 ` [RFC 16/52] plugins: " Zhao Liu
2023-02-13  9:50 ` [RFC 17/52] softmmu/cpus: Use generic topology helper in vcpus initialization Zhao Liu
2023-02-13  9:50 ` [RFC 18/52] general: Replace MachineState.smp access with topology helpers Zhao Liu
2023-02-13  9:50 ` [RFC 19/52] i386: " Zhao Liu
2023-02-13  9:50 ` [RFC 20/52] s390x: " Zhao Liu
2023-02-16 13:38   ` Thomas Huth
2023-02-17  3:38     ` Zhao Liu
2023-02-13  9:50 ` [RFC 21/52] ppc: " Zhao Liu
2023-02-13  9:50 ` [RFC 22/52] riscv: " Zhao Liu
2023-02-14  2:17   ` Mi, Dapeng1
2023-02-15  2:57     ` Zhao Liu
2023-03-01 23:43       ` Palmer Dabbelt
2023-02-13  9:50 ` [RFC 23/52] arm: " Zhao Liu
2023-02-16 10:46   ` wangyanan (Y) via
2023-02-17  3:21     ` Zhao Liu
2023-02-13  9:50 ` [RFC 24/52] loongarch: " Zhao Liu
2023-02-13  9:50 ` [RFC 25/52] mips: " Zhao Liu
2023-02-14  3:40   ` Mi, Dapeng1
2023-02-15  3:08     ` Zhao Liu
2023-02-13  9:50 ` [RFC 26/52] hw: Replace MachineState.smp access with topology helpers for all remaining archs Zhao Liu
2023-02-13  9:50 ` [RFC 27/52] test/test-smp-parse: Check fields of MachineState.topo.smp Zhao Liu
2023-02-13  9:50 ` [RFC 28/52] hw/core/machine: Remove support of MachineState.smp Zhao Liu
2023-02-13  9:50 ` [RFC 29/52] hw/core/cpu: Introduce TopologyState in CPUState Zhao Liu
2023-02-13  9:50 ` [RFC 30/52] i386: Drop nr_dies and nr_modules CPUX86State Zhao Liu
2023-02-13 13:22   ` Philippe Mathieu-Daudé
2023-02-13  9:50 ` [RFC 31/52] i386/cpu: Use CPUState.topo to replace X86CPUTopoInfo to get topology info Zhao Liu
2023-02-13  9:50 ` [RFC 32/52] i386: Rename X86CPUTopoInfo and its members to reflect relationship with APIC ID Zhao Liu
2023-02-13 13:25   ` Philippe Mathieu-Daudé
2023-02-13  9:50 ` [RFC 33/52] i386: Rename init_topo_info() to init_apic_topo_info() Zhao Liu
2023-02-13 13:27   ` Philippe Mathieu-Daudé
2023-02-14 10:20     ` Zhao Liu
2023-02-13  9:50 ` [RFC 34/52] i386: Rename variable topo_info to apicid_topo Zhao Liu
2023-02-13 13:28   ` Philippe Mathieu-Daudé
2023-02-14 10:18     ` Zhao Liu
2023-02-13  9:50 ` [RFC 35/52] i386: Support APIC ID topology for hybrid CPU topology Zhao Liu
2023-02-13  9:50 ` [RFC 36/52] i386: Use init_apicid_topo_info() to initialize APIC ID topology for system emulator Zhao Liu
2023-02-13  9:50 ` [RFC 37/52] i386: Update X86CPUTopoIDs generating rule for hybrid topology Zhao Liu
2023-02-13  9:50 ` [RFC 38/52] i386: Introduce hybrid_core_type to CPUX86State Zhao Liu
2023-02-13  9:50 ` [RFC 39/52] i386/cpu: Add Intel hybrid related CPUID support Zhao Liu
2023-02-13  9:50 ` [RFC 40/52] qapi: Introduce hybrid options Zhao Liu
2023-02-13  9:50 ` [RFC 41/52] machine: Introduce core_type() hook Zhao Liu
2023-02-13 13:33   ` Philippe Mathieu-Daudé
2023-02-14 14:33     ` Zhao Liu
2023-02-13 13:35   ` Philippe Mathieu-Daudé
2023-02-14 14:51     ` Zhao Liu
2023-02-16 12:15   ` wangyanan (Y) via
2023-02-17  3:26     ` Zhao Liu [this message]
2023-02-17  7:51       ` wangyanan (Y) via
2023-02-13  9:50 ` [RFC 42/52] hw/machine: Add hybrid_supported in generic topo properties Zhao Liu
2023-02-14  1:46   ` wangyanan (Y) via
2023-02-15  2:53     ` Zhao Liu
2023-02-16 12:28       ` wangyanan (Y) via
2023-02-17  3:28         ` Zhao Liu
2023-02-13  9:50 ` [RFC 43/52] hw/machine: Rename MachineClass.smp_props to MachineClass.topo_props Zhao Liu
2023-02-13  9:50 ` [RFC 44/52] machine: Add "-hybrid" parsing rule Zhao Liu
2023-02-13  9:50 ` [RFC 45/52] hw/machine: Add hybrid cpu topology validation Zhao Liu
2023-02-13  9:50 ` [RFC 46/52] hw/machine: build core level hybrid topology form HybridCorePack Zhao Liu
2023-02-13  9:50 ` [RFC 47/52] hw/machine: Use opts_visitor to parse hybrid topo Zhao Liu
2023-02-13  9:50 ` [RFC 48/52] machine: Support "-hybrid" command Zhao Liu
2023-02-13  9:50 ` [RFC 49/52] i386/pc: Support hybrid cpu topology Zhao Liu
2023-02-13  9:50 ` [RFC 50/52] qemu-options: Add the document of hybrid command Zhao Liu
2023-02-13  9:50 ` [RFC 51/52] qapi: Expose CPU topology info in query_cpus_fast Zhao Liu
2023-02-13  9:50 ` [RFC 52/52] i386: Support cpu_index_to_core_type() for x86 Zhao Liu
2023-02-13 10:14 ` [RFC 00/52] Introduce hybrid CPU topology Alex Bennée
2023-02-14  8:48   ` Zhao Liu
2023-02-13 13:38 ` Daniel P. Berrangé
2023-02-14 17:14   ` Zhao Liu
2023-08-04 13:43   ` Zhao Liu

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=Y+7z/Y4LEmrLGSpC@liuzhao-OptiPlex-7080 \
    --to=zhao1.liu@linux.intel.com \
    --cc=armbru@redhat.com \
    --cc=dapeng1.mi@intel.com \
    --cc=eblake@redhat.com \
    --cc=eduardo@habkost.net \
    --cc=like.xu.linux@gmail.com \
    --cc=marcel.apfelbaum@gmail.com \
    --cc=mst@redhat.com \
    --cc=pbonzini@redhat.com \
    --cc=philmd@linaro.org \
    --cc=qemu-devel@nongnu.org \
    --cc=richard.henderson@linaro.org \
    --cc=robert.hu@linux.intel.com \
    --cc=seanjc@google.com \
    --cc=wangyanan55@huawei.com \
    --cc=zhao1.liu@intel.com \
    --cc=zhenyu.z.wang@intel.com \
    --cc=zhuocheng.ding@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).