* Re: [Qemu-devel] [PATCH RFC 6/6] target-i386: make cpus childs of /machine
[not found] <72a3d008-2d67-47e8-b5f2-927ff5cf2166@zmail16.collab.prod.int.phx2.redhat.com>
@ 2012-05-09 23:15 ` Andreas Färber
2012-05-10 6:57 ` Paolo Bonzini
2012-05-21 14:50 ` Igor Mammedov
0 siblings, 2 replies; 6+ messages in thread
From: Andreas Färber @ 2012-05-09 23:15 UTC (permalink / raw)
To: Igor Mammedov; +Cc: jan kiszka, aliguori, qemu-devel, Paolo Bonzini
Am 17.04.2012 12:28, schrieb Igor Mammedov:
> ----- Original Message -----
>> From: "Andreas Färber" <afaerber@suse.de>
>> To: "Paolo Bonzini" <pbonzini@redhat.com>, "Igor Mammedov" <imammedo@redhat.com>
>> Cc: qemu-devel@nongnu.org, aliguori@us.ibm.com, "jan kiszka" <jan.kiszka@siemens.com>
>> Sent: Tuesday, April 17, 2012 10:46:14 AM
>> Subject: Re: [PATCH RFC 6/6] target-i386: make cpus childs of /machine
>>
>> Am 17.04.2012 09:19, schrieb Paolo Bonzini:
>>> Il 17/04/2012 01:37, Igor Mammedov ha scritto:
>>>> From: Igor Mammedov <niallain@gmail.com>
>>>>
>>>> Signed-off-by: Igor Mammedov <niallain@gmail.com>
>>>> ---
>>>> target-i386/helper.c | 4 ++++
>>>> 1 files changed, 4 insertions(+), 0 deletions(-)
>>>>
>>>> diff --git a/target-i386/helper.c b/target-i386/helper.c
>>>> index de7637c..1996b97 100644
>>>> --- a/target-i386/helper.c
>>>> +++ b/target-i386/helper.c
>>>> @@ -1134,6 +1134,7 @@ CPUX86State *cpu_x86_init(const char
>>>> *cpu_model)
>>>> X86CPU *cpu;
>>>> CPUX86State *env;
>>>> Error *errp = NULL;
>>>> + char cpuname[8];
>>>>
>>>> cpu = X86_CPU(object_new(TYPE_X86_CPU));
>>>> env = &cpu->env;
>>>> @@ -1146,6 +1147,9 @@ CPUX86State *cpu_x86_init(const char
>>>> *cpu_model)
>>>> }
>>>> }
>>>>
>>>> + snprintf(cpuname, sizeof(cpuname), "cpu%d",
>>>> env->cpuid_apic_id);
>>>> + object_property_add_child(container_get("/machine"), cpuname,
>>>> OBJECT(cpu), NULL);
>>>> +
>>>> object_property_set_bool(OBJECT(cpu), true, "realized",
>>>> &errp);
>>>> if (errp) {
>>>> object_delete(OBJECT(cpu));
>>>
>>> I think the right name would be /machine/cpu[%d]/cpu. The local
>>> APIC
>>> for example should reside under /machine/cpu[%d]/apic.
>>
>> Depends on how we model the CPU, I was kinda waiting for feedback on
>> that.
>>
>> I would prefer /machine/cpu[%d], with the APIC being a child
>> .../apic,
>> if possible. That however depends on how the device'ification of the
>> CPU
> Ok, I'll change /machine/cpu%d to /machine/cpu[%d].
Note that I needed a similar patch recently in my quest to move fields
from CPU_COMMON into CPUState:
https://github.com/afaerber/qemu-cpu/commits/qom-cpu (WIP)
current state:
https://github.com/afaerber/qemu-cpu/commit/1318ad13cda52e694caea5cc72293c5879db3f9f
I chose to do it in pc.c instead because for other architectures the
placement will be a machine-specific decision.
I've used cpu_index, but it seems cpuid_apic_id is assigned only once,
from cpu_index, so it should be identical. What's the difference?
Comparing our code I see that I do an unnecessary NUL termination after
snprintf(), whereas your buffer should probably be 9 chars to account
for a maximum of 255 CPUs (3 letters, 2 square brackets, 3 digits, NUL).
In particular I needed /machine/cpu[n] to pass the X86CPU to the APIC in
a sensible way - next commit on that branch, currently:
https://github.com/afaerber/qemu-cpu/commit/1134efc143aa1629f8961ef058416e1acfa50f8e
Regards,
Andreas
--
SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg, Germany
GF: Jeff Hawn, Jennifer Guild, Felix Imendörffer; HRB 16746 AG Nürnberg
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [Qemu-devel] [PATCH RFC 6/6] target-i386: make cpus childs of /machine
2012-05-09 23:15 ` [Qemu-devel] [PATCH RFC 6/6] target-i386: make cpus childs of /machine Andreas Färber
@ 2012-05-10 6:57 ` Paolo Bonzini
2012-05-10 9:51 ` Andreas Färber
2012-05-21 14:50 ` Igor Mammedov
1 sibling, 1 reply; 6+ messages in thread
From: Paolo Bonzini @ 2012-05-10 6:57 UTC (permalink / raw)
To: Andreas Färber; +Cc: Igor Mammedov, aliguori, qemu-devel, jan kiszka
Il 10/05/2012 01:15, Andreas Färber ha scritto:
> In particular I needed /machine/cpu[n] to pass the X86CPU to the APIC in
> a sensible way - next commit on that branch, currently:
> https://github.com/afaerber/qemu-cpu/commit/1134efc143aa1629f8961ef058416e1acfa50f8e
Yay, thanks for doing that!
Paolo
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [Qemu-devel] [PATCH RFC 6/6] target-i386: make cpus childs of /machine
2012-05-10 6:57 ` Paolo Bonzini
@ 2012-05-10 9:51 ` Andreas Färber
2012-05-10 10:00 ` Paolo Bonzini
0 siblings, 1 reply; 6+ messages in thread
From: Andreas Färber @ 2012-05-10 9:51 UTC (permalink / raw)
To: Paolo Bonzini; +Cc: Igor Mammedov, aliguori, qemu-devel
Am 10.05.2012 08:57, schrieb Paolo Bonzini:
> Il 10/05/2012 01:15, Andreas Färber ha scritto:
>> In particular I needed /machine/cpu[n] to pass the X86CPU to the APIC in
>> a sensible way - next commit on that branch, currently:
>> https://github.com/afaerber/qemu-cpu/commit/1134efc143aa1629f8961ef058416e1acfa50f8e
>
> Yay, thanks for doing that!
Thought you'd like it. ;) It's the only one related to CPU(Arch)State
though, so some more work left for you to do after my series!
Andreas
--
SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg, Germany
GF: Jeff Hawn, Jennifer Guild, Felix Imendörffer; HRB 16746 AG Nürnberg
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [Qemu-devel] [PATCH RFC 6/6] target-i386: make cpus childs of /machine
2012-05-10 9:51 ` Andreas Färber
@ 2012-05-10 10:00 ` Paolo Bonzini
0 siblings, 0 replies; 6+ messages in thread
From: Paolo Bonzini @ 2012-05-10 10:00 UTC (permalink / raw)
To: Andreas Färber; +Cc: Igor Mammedov, aliguori, qemu-devel
Il 10/05/2012 11:51, Andreas Färber ha scritto:
>>> >> In particular I needed /machine/cpu[n] to pass the X86CPU to the APIC in
>>> >> a sensible way - next commit on that branch, currently:
>>> >> https://github.com/afaerber/qemu-cpu/commit/1134efc143aa1629f8961ef058416e1acfa50f8e
>> >
>> > Yay, thanks for doing that!
> Thought you'd like it. ;) It's the only one related to CPU(Arch)State
> though, so some more work left for you to do after my series!
There's also one in CRIS I think. :)
Paolo
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [Qemu-devel] [PATCH RFC 6/6] target-i386: make cpus childs of /machine
2012-05-09 23:15 ` [Qemu-devel] [PATCH RFC 6/6] target-i386: make cpus childs of /machine Andreas Färber
2012-05-10 6:57 ` Paolo Bonzini
@ 2012-05-21 14:50 ` Igor Mammedov
2012-05-21 15:01 ` Jan Kiszka
1 sibling, 1 reply; 6+ messages in thread
From: Igor Mammedov @ 2012-05-21 14:50 UTC (permalink / raw)
To: Andreas Färber; +Cc: jan kiszka, aliguori, qemu-devel, Paolo Bonzini
On 05/10/2012 01:15 AM, Andreas Färber wrote:
> Am 17.04.2012 12:28, schrieb Igor Mammedov:
>> ----- Original Message -----
>>> From: "Andreas Färber"<afaerber@suse.de>
...
>>>> I think the right name would be /machine/cpu[%d]/cpu. The local
>>>> APIC
>>>> for example should reside under /machine/cpu[%d]/apic.
>>>
>>> Depends on how we model the CPU, I was kinda waiting for feedback on
>>> that.
>>>
>>> I would prefer /machine/cpu[%d], with the APIC being a child
>>> .../apic,
>>> if possible. That however depends on how the device'ification of the
>>> CPU
>> Ok, I'll change /machine/cpu%d to /machine/cpu[%d].
>
> Note that I needed a similar patch recently in my quest to move fields
> from CPU_COMMON into CPUState:
> https://github.com/afaerber/qemu-cpu/commits/qom-cpu (WIP)
>
> current state:
> https://github.com/afaerber/qemu-cpu/commit/1318ad13cda52e694caea5cc72293c5879db3f9f
>
> I chose to do it in pc.c instead because for other architectures the
> placement will be a machine-specific decision.
I'm trying to re-base your commit on top of this series and doing it at board level
might be a problem if you think about doing hotplug in generalized way:
1. create new obj instance for cpu
2. set properties 'might include setting apic with its creation'
3. realize obj instance
would it better to split name and cpu creation into 2 stages:
- at board level: create links for all possible cpus
- in target-XXX/cpu.c:XXX_cpu_initfn set appropriate link to itself (1)
and than any property that might need canonical path could be set in general way (2)?
Of cause this scheme is screwed up by the fact that there isn't canonical
path for links (cpu[xxx]). Any thoughts how to deal with it?
- Can we use object_property_add_child at runtime to add new cpu to /machine, instead of link?
> I've used cpu_index, but it seems cpuid_apic_id is assigned only once,
> from cpu_index, so it should be identical. What's the difference?
Once Jan voiced that user visible cpu id, should be apic_id in context of cpu hotplug
(i.e. when doing: device_add xxx_cpu,id=12345,...)
"Jan, please correct me if I've got you wrong."
So QOM tree probably should reflect this id and not cpu_index.
However cpu_index and apic_id are the same now and bios assumes it as well.
What are possible benefits of using cpuid_apic_id != cpu_index for qemu?
--
-----
Igor
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [Qemu-devel] [PATCH RFC 6/6] target-i386: make cpus childs of /machine
2012-05-21 14:50 ` Igor Mammedov
@ 2012-05-21 15:01 ` Jan Kiszka
0 siblings, 0 replies; 6+ messages in thread
From: Jan Kiszka @ 2012-05-21 15:01 UTC (permalink / raw)
To: Igor Mammedov
Cc: Paolo Bonzini, aliguori@us.ibm.com, Andreas Färber,
qemu-devel@nongnu.org
On 2012-05-21 11:50, Igor Mammedov wrote:
>> I've used cpu_index, but it seems cpuid_apic_id is assigned only once,
>> from cpu_index, so it should be identical. What's the difference?
> Once Jan voiced that user visible cpu id, should be apic_id in context of cpu hotplug
> (i.e. when doing: device_add xxx_cpu,id=12345,...)
> "Jan, please correct me if I've got you wrong."
> So QOM tree probably should reflect this id and not cpu_index.
>
> However cpu_index and apic_id are the same now and bios assumes it as well.
> What are possible benefits of using cpuid_apic_id != cpu_index for qemu?
>From my POV, cpu_index could become equal to the physical APIC ID. As
long as we can set it freely (provided it remains unique) and
non-continuously, we don't need separate indexes.
Jan
--
Siemens AG, Corporate Technology, CT T DE IT 1
Corporate Competence Center Embedded Linux
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2012-05-21 15:01 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <72a3d008-2d67-47e8-b5f2-927ff5cf2166@zmail16.collab.prod.int.phx2.redhat.com>
2012-05-09 23:15 ` [Qemu-devel] [PATCH RFC 6/6] target-i386: make cpus childs of /machine Andreas Färber
2012-05-10 6:57 ` Paolo Bonzini
2012-05-10 9:51 ` Andreas Färber
2012-05-10 10:00 ` Paolo Bonzini
2012-05-21 14:50 ` Igor Mammedov
2012-05-21 15:01 ` Jan Kiszka
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).