From: Blue Swirl <blauwirbel@gmail.com>
To: Jan Kiszka <jan.kiszka@web.de>
Cc: qemu-devel <qemu-devel@nongnu.org>
Subject: Re: [Qemu-devel] [PATCH] target-i386: Initialize CPUState::halted in cpu_reset
Date: Wed, 27 Apr 2011 20:17:01 +0300 [thread overview]
Message-ID: <BANLkTi=oD-fVgpyE4K1Z2toqaoX85XrsOg@mail.gmail.com> (raw)
In-Reply-To: <4DB7C193.1070703@web.de>
On Wed, Apr 27, 2011 at 10:11 AM, Jan Kiszka <jan.kiszka@web.de> wrote:
> On 2011-04-26 21:59, Blue Swirl wrote:
>> On Tue, Apr 26, 2011 at 9:55 PM, Jan Kiszka <jan.kiszka@web.de> wrote:
>>> On 2011-04-26 20:00, Blue Swirl wrote:
>>>> On Tue, Apr 26, 2011 at 11:50 AM, Jan Kiszka <jan.kiszka@siemens.com> wrote:
>>>>> Instead of having an extra reset function at machine level and special
>>>>> code for processing INIT, move the initialization of halted into the
>>>>> cpu reset handler.
>>>>
>>>> Nack. A CPU is designated as a BSP at board level. CPUs do not need to
>>>> know about this at all.
>>>
>>> That's why we have cpu_is_bsp() in pc.c.
>>>
>>> Obviously, every CPU (which includes the APIC) must know if it is
>>> supposed to be BP or AP. It would be unable to enter the right state
>>> after reset otherwise (e.g. Intel SDM 9.1). cpu_is_bsp() is basically
>>> reporting the result of the MP init protocol in condensed from.
>>
>> Intel 64 and IA-32 Architectures Software Developer’s Manual vol 3A,
>> 7.5.1 says that the protocol result is stored in APIC MSR. I think we
>> should be using that instead. For example, the board could call
>> cpu_designate_bsp() to set the BSP flag in MSR. Then cpu_is_bsp()
>> would only check the MSR, which naturally belongs to the CPU/APIC
>> domain.
>
> Something like this? The original patch has to be rebased on top.
How about not deleting cpu_is_bsp() but moving it to apic.c, as a
check for the BSP flag? That would simplify the patches a bit.
> I'm still struggling how to deal with apicbase long-term. I doesn't
> belong to the APIC, but it's saved/restored there. Guess we should move
> it to the CPU's vmstate. OTOH, changing vmstates only for the sake of
> minor refactorings is also not very attractive.
CPU should be the correct place. You could wait until the vmstate is
changed anyway, or be the first.
>
> Jan
>
> ---
> hw/apic.c | 18 +++++++++++++-----
> hw/apic.h | 2 +-
> hw/pc.c | 14 +++++++-------
> target-i386/helper.c | 3 ++-
> target-i386/kvm.c | 5 +++--
> 5 files changed, 26 insertions(+), 16 deletions(-)
>
> diff --git a/hw/apic.c b/hw/apic.c
> index 9febf40..31ac6cd 100644
> --- a/hw/apic.c
> +++ b/hw/apic.c
> @@ -318,7 +318,7 @@ uint64_t cpu_get_apic_base(DeviceState *d)
>
> trace_cpu_get_apic_base(s ? (uint64_t)s->apicbase: 0);
>
> - return s ? s->apicbase : 0;
> + return s ? s->apicbase : MSR_IA32_APICBASE_BSP;
This does not look OK.
next prev parent reply other threads:[~2011-04-27 17:17 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-04-26 8:50 [Qemu-devel] [PATCH] target-i386: Initialize CPUState::halted in cpu_reset Jan Kiszka
2011-04-26 18:00 ` Blue Swirl
2011-04-26 18:55 ` Jan Kiszka
2011-04-26 19:59 ` Blue Swirl
2011-04-27 7:11 ` Jan Kiszka
2011-04-27 17:17 ` Blue Swirl [this message]
2011-04-27 17:32 ` Jan Kiszka
2011-04-27 18:29 ` Blue Swirl
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='BANLkTi=oD-fVgpyE4K1Z2toqaoX85XrsOg@mail.gmail.com' \
--to=blauwirbel@gmail.com \
--cc=jan.kiszka@web.de \
--cc=qemu-devel@nongnu.org \
/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).