[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [RFC PATCH v0 8/9] target-i386: Set apic_id during CPU
From: |
Bharata B Rao |
Subject: |
Re: [Qemu-devel] [RFC PATCH v0 8/9] target-i386: Set apic_id during CPU initfn |
Date: |
Tue, 15 Dec 2015 13:44:47 +0530 |
User-agent: |
Mutt/1.5.23 (2014-03-12) |
On Mon, Dec 14, 2015 at 03:44:06PM -0200, Eduardo Habkost wrote:
> On Thu, Dec 10, 2015 at 11:45:43AM +0530, Bharata B Rao wrote:
> > Move back the setting of apic_id to instance_init routine (x86_cpu_initfn)
> > This is needed to initialize X86 CPUs using generic cpu-package device.
>
> Could you explain where exactly apic_id will be used, to make it
> necessary to initialize it earlier?
There is a check in x86_cpu_realizefn() to see if apic_id has been
initialized properly. Hence I thought x86 target will require apic_id
to have been initialized before CPU realization and that is what
the existing code does via pc_cpus_init() and pc_new_cpu(). i.e.,
apic_id property is set before setting the realize property to true.
However...
>
> >
> > TODO: I am not fully aware of the general direction in which apic_id
> > changes in X86 have evolved and hence not sure if this is indeed aligned
> > with
> > the X86 way of doing things. This is just to help the PoC implementation
> > that I have in this patchset to convert PC CPUs initialization into
> > cpu-package device based initialization.
>
> You shouldn't initialize apic_id on initfn. APIC ID depends (and
> will depend) on different CPU properties related to topology,
> including (but not limited to) CPU index and CPU topology
> properties we may introduce in the future, so it should be done
> later (at realize time), not on initfn.
... with the current patchset, I just experimented now by moving the setting
of apic_id to x86_cpu_realizefn() and things work just fine. I was in fact
pleasantly surprised to see that I could hot add a cpu core by hot plugging
the cpu-core device on x86 too.
>
> Also, cpu_index is initialized by cpu_exec_init(), and
> cpu_exec_init() must not be called by initfn. The cpu_exec_init()
> call should (and will) be moved to realize in x86 and all other
> architectures.
Right, I have already moved cpu_exec_init() call to realizefn for PowerPC.
Regards,
Bharata.
- Re: [Qemu-devel] [RFC PATCH v0 2/9] cpu: Store CPU typename in MachineState, (continued)
- [Qemu-devel] [RFC PATCH v0 4/9] cpu: CPU socket backend, Bharata B Rao, 2015/12/10
- [Qemu-devel] [RFC PATCH v0 6/9] cpu: Introduce CPU core device, Bharata B Rao, 2015/12/10
- [Qemu-devel] [RFC PATCH v0 5/9] vl: Create CPU socket backend objects, Bharata B Rao, 2015/12/10
- [Qemu-devel] [RFC PATCH v0 3/9] cpu: Don't realize CPU from cpu_generic_init(), Bharata B Rao, 2015/12/10
- [Qemu-devel] [RFC PATCH v0 7/9] spapr: Convert boot CPUs into CPU core device initialization, Bharata B Rao, 2015/12/10
- [Qemu-devel] [RFC PATCH v0 9/9] pc: Convert boot CPUs into CPU core device initialization, Bharata B Rao, 2015/12/10
- [Qemu-devel] [RFC PATCH v0 8/9] target-i386: Set apic_id during CPU initfn, Bharata B Rao, 2015/12/10
- Re: [Qemu-devel] [RFC PATCH v0 0/9] Generic cpu-core device, Igor Mammedov, 2015/12/10