[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v8 1/4] sPAPR: Implement EEH RTAS calls
From: |
Gavin Shan |
Subject: |
Re: [Qemu-devel] [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
>
- [Qemu-devel] [PATCH v8 0/4] EEH Support for VFIO PCI Device, Gavin Shan, 2014/06/05
- [Qemu-devel] [PATCH v8 3/4] VFIO: Introduce helper vfio_pci_container_ioctl(), Gavin Shan, 2014/06/05
- [Qemu-devel] [PATCH v8 4/4] sPAPR: Implement sPAPRPHBClass::eeh_handler, Gavin Shan, 2014/06/05
- [Qemu-devel] [PATCH v8 1/4] sPAPR: Implement EEH RTAS calls, Gavin Shan, 2014/06/05
- [Qemu-devel] [PATCH v8 2/4] headers: Update kernel header, Gavin Shan, 2014/06/05
- Re: [Qemu-devel] [PATCH v8 0/4] EEH Support for VFIO PCI Device, Alexander Graf, 2014/06/05