From: Paolo Bonzini <pbonzini@redhat.com>
To: Gleb Natapov <gleb@redhat.com>
Cc: linux-kernel@vger.kernel.org, kvm@vger.kernel.org,
mtosatti@redhat.com, jan.kiszka@siemens.com
Subject: Re: [PATCH] x86: kvm: reset the bootstrap processor when it gets an INIT
Date: Mon, 11 Mar 2013 15:28:03 +0100 [thread overview]
Message-ID: <513DE9F3.9000802@redhat.com> (raw)
In-Reply-To: <20130311135441.GN31619@redhat.com>
Il 11/03/2013 14:54, Gleb Natapov ha scritto:
>> Setting the mp_state to INIT_RECEIVED is that interface, and it already
>> works, for APs at least. This patch extends it to work for the BSP as well.
>
> It does not for AP either. If AP has vmx on mp_sate should not be set to
> INIT_RECEIVED. mp_sate is a state as you can see from its name and we
> already had a discussion on the generic device API about importance of
> separating sending commands from setting state. There is a difference
> between setting mp_state during migration and signaling INIT#.
What does migration have to do with this?
>> In the corresponding userspace patch, I don't need to touch the CPU
>> state at all. I can just signal the kernel. If I touch the CPU, I'll
>> break the nested case, no matter how it is implemented. So far, the
>> userspace did not have to worry about nested, and that's something that
>> should be kept that way.
> We are discussing two different things here. I'll try to separate them.
> 1. BSP is broken WRT #INIT
> 2. nested is broken WRT #INIT
>
> You are fixing 1 with your patches, for that I proposed much easier
> solution (at last from kernel point of view): if BSP reset it in
> userspace and make it runnable. Nested virt is still broken, but this is
> not what you are fixing.
It's not what I'm fixing, but I don't want to make the fix for nested
virt unnecessarily more complicated. Nested virt needs to know about
INIT and SIPI; redefining the meaning of INIT_RECEIVED and SIPI_RECEIVED
makes it more complicated to reflect these events to L1.
> For 2 much more involved fix is needed. Jan fixes it and it will require
> signaling INIT# from userspace by other means than mp_sate because
> signaling INIT# does not automatically means that mp_sate changes to
> INIT_RECEIVED.
In your interpretation of INIT_RECEIVED, no. In mine, yes...
>> If we move away from the INIT_RECEIVED and SIPI_RECEIVED states for
>> in-kernel APIC -> VCPU communication, then the KVM_SET_MP_STATE ioctl
>> will have to convert them to the right bits in the requests field or in
>> the APIC state. But I'm starting to see less benefit from moving away
>> from mp_state.
>>
> We are not moving away from mp_state, we are moving away from using
> mp_state for signaling
That's what I meant; sorry for the unclear abbreviation.
> because with nested virt INIT does not always
> change mp_state
Why not? It does change mp_state, it changes how you react to the
change. Which is why it's good to have the reset done in kernel space,
not in user space.
Paolo
> , not only that it can change mp_state long after signal
> is received after vmx off is done.
>
> --
> Gleb.
>
next prev parent reply other threads:[~2013-03-11 14:28 UTC|newest]
Thread overview: 39+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-03-09 6:48 [PATCH] x86: kvm: reset the bootstrap processor when it gets an INIT Paolo Bonzini
2013-03-10 11:46 ` Gleb Natapov
2013-03-10 14:53 ` Paolo Bonzini
2013-03-10 15:35 ` Gleb Natapov
2013-03-10 17:19 ` Paolo Bonzini
2013-03-10 18:10 ` Gleb Natapov
2013-03-11 10:14 ` Paolo Bonzini
2013-03-11 10:28 ` Gleb Natapov
2013-03-11 11:25 ` Paolo Bonzini
2013-03-11 11:51 ` Gleb Natapov
2013-03-11 13:31 ` Paolo Bonzini
2013-03-11 13:54 ` Gleb Natapov
2013-03-11 14:01 ` Jan Kiszka
2013-03-11 14:05 ` Gleb Natapov
2013-03-11 14:06 ` Jan Kiszka
2013-03-11 14:09 ` Gleb Natapov
2013-03-11 14:10 ` Jan Kiszka
2013-03-11 14:12 ` Gleb Natapov
2013-03-11 14:19 ` Jan Kiszka
2013-03-11 14:23 ` Paolo Bonzini
2013-03-11 15:36 ` Jan Kiszka
2013-03-11 17:23 ` Gleb Natapov
2013-03-11 17:34 ` Jan Kiszka
2013-03-11 17:38 ` Jan Kiszka
2013-03-11 17:41 ` Gleb Natapov
2013-03-11 18:05 ` Jan Kiszka
2013-03-11 18:13 ` Gleb Natapov
2013-03-11 18:27 ` Jan Kiszka
2013-03-11 18:39 ` Gleb Natapov
2013-03-11 18:47 ` Jan Kiszka
2013-03-11 18:51 ` Gleb Natapov
2013-03-11 19:01 ` Jan Kiszka
2013-03-11 19:30 ` Gleb Natapov
2013-03-12 9:25 ` Jan Kiszka
2013-03-12 11:28 ` Gleb Natapov
2013-03-11 14:28 ` Paolo Bonzini [this message]
2013-03-11 17:20 ` Gleb Natapov
2013-03-11 17:39 ` Paolo Bonzini
2013-03-11 18:04 ` Gleb Natapov
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=513DE9F3.9000802@redhat.com \
--to=pbonzini@redhat.com \
--cc=gleb@redhat.com \
--cc=jan.kiszka@siemens.com \
--cc=kvm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mtosatti@redhat.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.