qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Aravinda Prasad <aravinda@linux.vnet.ibm.com>
To: David Gibson <david@gibson.dropbear.id.au>
Cc: aik@au1.ibm.com, benh@au1.ibm.com, qemu-ppc@nongnu.org,
	qemu-devel@nongnu.org, paulus@samba.org
Subject: Re: [Qemu-devel] [PATCH v3 0/4] target-ppc: Add FWNMI support in qemu for powerKVM guests
Date: Thu, 13 Nov 2014 11:40:53 +0530	[thread overview]
Message-ID: <54644B6D.4000703@linux.vnet.ibm.com> (raw)
In-Reply-To: <20141113035752.GI7291@voom.fritz.box>



On Thursday 13 November 2014 09:27 AM, David Gibson wrote:
> On Tue, Nov 11, 2014 at 12:45:05PM +0530, Aravinda Prasad wrote:
>>
>>
>> On Tuesday 11 November 2014 08:54 AM, David Gibson wrote:
>>> On Wed, Nov 05, 2014 at 12:42:03PM +0530, Aravinda Prasad wrote:
>>>> This series of patches add support for fwnmi in powerKVM guests.
>>>>
>>>> Currently upon machine check exception, if the address in
>>>> error belongs to guest then KVM invokes guest's NMI interrupt
>>>> vector 0x200.
>>>>
>>>> This patch series adds functionality where the guest's 0x200
>>>> interrupt vector is patched such that QEMU gets control. QEMU
>>>> then builds error log and reports the error to OS registered
>>>> machine check handlers through RTAS space.
>>>>
>>>> Apart from this, the patch series also takes care of synchronization
>>>> when multiple processors encounter machine check at or about the
>>>> same time.
>>>>
>>>> The patch set was tested by simulating a machine check error in
>>>> the guest.
>>>>
>>>> Changes in v3:
>>>>     - Incorporated review comments
>>>>     - Byte codes in patch 4/4 are now moved to
>>>>       pc-bios/spapr-rtas/spapr-rtas.S as instructions.
>>>>     - Defined the RTAS blob in-memory layout.
>>>>     - FIX: save and restore cr register in the trampoline
>>>>
>>>> Changes in v2:
>>>>     - Re-based to github.com/agraf/qemu.git  branch: ppc-next
>>>>     - Merged patches 4 and 5.
>>>>     - Incorporated other review comments
>>>
>>> So, this may not still be possible depending on whether the KVM side
>>> of this is already merged, but it occurs to me that there's a simpler
>>> way.
>>
>> The KVM part is already merged. Commit ID: 74845bc
> 
> Ok, that makes life harder, though I guess without the qemu code
> merged, no-one would be using yet, so it's not impossible to change still.
> 
>>> Rather than mucking about with having to update the hypervisor on the
>>> RTAS location, they have qemu copy the code out of RTAS, patch it and
>>> copy it back into the vector, you could instead do this:
>>
>> Though this is possible, I have coupe of comments below
>>
>>>
>>>   1. Make KVM instead of immediately delivering a 0x200 for a guest
>>> machine check, cause a special exit to qemu.
>>>
>>>   2. Have the register-nmi RTAS call store the guest side MC handler
>>> address in the spapr structure, but perform no actual guest code
>>> patching.
>>>
>>>   3. Allocate the error log buffer independently from the RTAS blob,
>>> so qemu always knows where it is.
>>
>> As per PAPR, the error log buffer should be part of RTAS blob and the
>> guest kernel explicitly checks if error log is inside RTAS blob.
>> This requires qemu to know the updated RTAS location by the OS which is
>> handled in patch 2/4.
> 
> Ugh, ok.  That's a pretty stupid interface requirement, even by PAPR
> standards, but I guess we're stuck with it.
> 
>>>   4. When qemu gets the MC exit condition, instead of going via a
>>> patched 0x200 vector, just directly set the guest register state and
>>> jump straight into the guest side MC handler.
>>
>> PAPR mentions:
>>
>> "R1–7.3.14–8: Once the OS has registered for NMI notification, the
>> platform firmware must intercept all System Reset Interrupts on all of
>> the OS’s processors."
>>
>> So do we need to go via 0x200?
> 
> I don't see why.  The hypervisor is already intercepting system resets
> and machine checks because it's a hypervisor, and from the PAPR
> guest's point of view, all it cares about is that you enter its
> registered handler with the expected information available.
> 
> I don't see that the guest cares whether you bounce via a vector in
> guest space or directly enter the guest supplied handler using
> hypervisor magic.  Patching the guest's vector actually seems a pretty
> awful hack that would only be necessary to work around limitations in
> the virtualization capabilities which I don't think we have as of POWER8.
> 

Agree.

> Btw, isn't a "System Reset Interrupt" vector 0x100, not vector 0x200?

"System Reset Interrupt" vector is 0x100. Machine Check Interrupt
is 0x200. The above "R1–7.3.14–8" extract was for System Reset. We have
one for Machine Check in R1–7.3.14–10.

> 

-- 
Regards,
Aravinda

  reply	other threads:[~2014-11-13  6:11 UTC|newest]

Thread overview: 66+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-11-05  7:12 [Qemu-devel] [PATCH v3 0/4] target-ppc: Add FWNMI support in qemu for powerKVM guests Aravinda Prasad
2014-11-05  7:12 ` [Qemu-devel] [PATCH v3 1/4] target-ppc: Extend rtas-blob Aravinda Prasad
2014-11-05  8:11   ` [Qemu-devel] [Qemu-ppc] " Alexander Graf
2014-11-05  8:46     ` Aravinda Prasad
2014-11-05  9:00       ` Alexander Graf
2014-11-05  9:07         ` Alexander Graf
2014-11-05 10:41           ` Aravinda Prasad
2014-11-05  7:12 ` [Qemu-devel] [PATCH v3 2/4] target-ppc: Register and handle HCALL to receive updated RTAS region Aravinda Prasad
2014-11-05  7:12 ` [Qemu-devel] [PATCH v3 3/4] target-ppc: Build error log Aravinda Prasad
2014-11-05  7:13 ` [Qemu-devel] [PATCH v3 4/4] target-ppc: Handle ibm, nmi-register RTAS call Aravinda Prasad
2014-11-05  8:32   ` [Qemu-devel] [Qemu-ppc] " Alexander Graf
2014-11-05 10:37     ` Aravinda Prasad
2014-11-05 11:07       ` Alexander Graf
2014-11-05 11:24         ` Aravinda Prasad
2014-11-05 11:27           ` Alexander Graf
2014-11-05 15:46     ` Tom Musta
2014-11-06 10:00       ` Aravinda Prasad
2014-11-06 10:29         ` Alexander Graf
2014-11-06 10:36           ` Aravinda Prasad
2014-11-11  3:19         ` David Gibson
2014-11-11  5:48           ` Aravinda Prasad
2014-11-11  6:11             ` David Gibson
2014-11-11  6:51               ` Aravinda Prasad
2014-11-11 11:30                 ` David Gibson
2014-11-11  3:16   ` [Qemu-devel] " David Gibson
2014-11-11  6:44     ` Aravinda Prasad
2014-11-13  3:52       ` David Gibson
2014-11-13  5:58         ` Aravinda Prasad
2014-11-13 10:32           ` David Gibson
2014-11-13 11:48             ` Aravinda Prasad
2014-11-13 12:44               ` David Gibson
2014-11-13 14:36                 ` Aravinda Prasad
2014-11-14  0:42                   ` David Gibson
2014-11-14  8:24                     ` Aravinda Prasad
2014-11-11  3:24 ` [Qemu-devel] [PATCH v3 0/4] target-ppc: Add FWNMI support in qemu for powerKVM guests David Gibson
2014-11-11  7:15   ` Aravinda Prasad
2014-11-13  3:57     ` David Gibson
2014-11-13  6:10       ` Aravinda Prasad [this message]
2014-11-19  5:48   ` Aravinda Prasad
2014-11-19 10:32     ` Alexander Graf
2014-11-19 11:44       ` David Gibson
2014-11-19 12:22         ` Alexander Graf
2014-11-19 12:42           ` [Qemu-devel] [Qemu-ppc] " Alexander Graf
2014-11-19 12:57           ` [Qemu-devel] " David Gibson
2015-04-02  4:28     ` [Qemu-devel] [Qemu-ppc] " Alexey Kardashevskiy
2015-04-02  4:46       ` David Gibson
2015-07-02  9:11         ` Alexey Kardashevskiy
2015-07-03  6:01           ` David Gibson
2015-07-08  8:28             ` Aravinda Prasad
2015-08-07  3:37               ` Sam Bobroff
2015-08-09 13:53                 ` Alexander Graf
2015-08-10  4:05                   ` Sam Bobroff
2015-09-01 11:07                     ` Aravinda Prasad
2015-09-02  6:34                       ` Sam Bobroff
2015-09-02 10:37                         ` Aravinda Prasad
2015-09-02 23:53                         ` David Gibson
2015-09-03  3:24                           ` Sam Bobroff
2015-09-03  5:05                             ` David Gibson
2015-09-03  5:18                               ` Paul Mackerras
2015-09-03  6:22                               ` Sam Bobroff
2015-09-03 18:30                                 ` Aravinda Prasad
2015-09-04  5:02                                   ` David Gibson
2015-09-04  5:01                                 ` David Gibson
2015-09-03  2:02                   ` Paul Mackerras
2015-09-03 17:49                     ` Aravinda Prasad
2015-09-01  6:21                 ` Aravinda Prasad

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=54644B6D.4000703@linux.vnet.ibm.com \
    --to=aravinda@linux.vnet.ibm.com \
    --cc=aik@au1.ibm.com \
    --cc=benh@au1.ibm.com \
    --cc=david@gibson.dropbear.id.au \
    --cc=paulus@samba.org \
    --cc=qemu-devel@nongnu.org \
    --cc=qemu-ppc@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).