qemu-ppc
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-ppc] [PATCH v8 1/4] sPAPR: Implement EEH RTAS calls


From: Gavin Shan
Subject: Re: [Qemu-ppc] [PATCH v8 1/4] sPAPR: Implement EEH RTAS calls
Date: Fri, 6 Jun 2014 10:59:56 +1000
User-agent: Mutt/1.5.21 (2010-09-15)

On Thu, Jun 05, 2014 at 02:09:14PM +0200, Alexander Graf wrote:
>
>On 05.06.14 08:53, Gavin Shan wrote:
>>The emulation for EEH RTAS requests from guest isn't covered
>>by QEMU yet and the patch implements them.
>>
>>The patch defines constants used by EEH RTAS calls and adds
>>callback sPAPRPHBClass::eeh_handler, which is going to be used
>>this way:
>>
>>1. RTAS calls are received in spapr_pci.c, sanity check is done
>>    there.
>>2. RTAS handlers handle what they can. If there is something it
>>    cannot handle and sPAPRPHBClass::eeh_handler callback is defined,
>>    it is called.
>>3. sPAPRPHBClass::eeh_handler is only implemented for VFIO now. It
>>    does ioctl() to the IOMMU container fd to complete the call. Error
>>    codes from that ioctl() are transferred back to the guest.
>>
>>This adds 6 RTAS handlers, all defined in SPAPR specification:
>>
>>1) ibm,set-eeh-option: disables/enables EEH on a device, removes PE from
>>stopped state;
>>2) ibm,get-config-addr-info2 - returns fabric configuration address (upper
>>PCI bridge or PHB if there is no bridge);
>>3) ibm,read-slot-reset-state2 - retrieve PE state;
>>4) ibm,set-slot-reset - issue PE reset;
>>5) ibm,configure-pe - configure PCI bridges in the affected PE;
>>6) ibm,slot-error-detail - retrieve EEH error log;
>>
>>All calls use fabric configuration address (a.k.a. PE address) as a target
>>address except ibm,get-config-addr-info2 and one case (enable EEH on the
>>specified PCI function) for ibm,set-eeh-option.
>>
>>Signed-off-by: Gavin Shan <address@hidden>
>>---
>>  hw/ppc/spapr_pci.c          | 248 
>> ++++++++++++++++++++++++++++++++++++++++++++
>>  include/hw/pci-host/spapr.h |   7 ++
>>  include/hw/ppc/spapr.h      |  33 ++++++
>>  3 files changed, 288 insertions(+)
>>
>>diff --git a/hw/ppc/spapr_pci.c b/hw/ppc/spapr_pci.c
>>index a9f307a..423e4ff 100644
>>--- a/hw/ppc/spapr_pci.c
>>+++ b/hw/ppc/spapr_pci.c
>>@@ -422,6 +422,241 @@ static void 
>>rtas_ibm_query_interrupt_source_number(PowerPCCPU *cpu,
>>      rtas_st(rets, 2, 1);/* 0 == level; 1 == edge */
>>  }
>>+static int rtas_finish_eeh_request(sPAPRPHBState *sphb,
>>+                                   uint32_t req, uint32_t opt,
>>+                                   target_ulong rets)
>
>The only thing I dislike about this patch is the name of this
>function. It doesn't finish the eeh request - it actually does it :).
>

Ok. I'll change it to rtas_handle_eeh_request() :-)

Thanks,
Gavin

>
>Alex
>




reply via email to

[Prev in Thread] Current Thread [Next in Thread]