Commit 7cb18007 authored by Gavin Shan's avatar Gavin Shan Committed by Alexander Graf
Browse files

sPAPR: Don't enable EEH on emulated PCI devices



There might have emulated PCI devices, together with VFIO PCI
devices under one PHB. The EEH capability shouldn't enabled
on emulated PCI devices.

The patch returns error when enabling EEH capability on emulated
PCI devices by RTAS call "ibm,set-eeh-option".

Signed-off-by: default avatarGavin Shan <gwshan@linux.vnet.ibm.com>
Signed-off-by: default avatarDavid Gibson <david@gibson.dropbear.id.au>
Signed-off-by: default avatarAlexander Graf <agraf@suse.de>
parent e275934d
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -429,6 +429,7 @@ static void rtas_ibm_set_eeh_option(PowerPCCPU *cpu,
{
    sPAPRPHBState *sphb;
    sPAPRPHBClass *spc;
    PCIDevice *pdev;
    uint32_t addr, option;
    uint64_t buid;
    int ret;
@@ -446,6 +447,12 @@ static void rtas_ibm_set_eeh_option(PowerPCCPU *cpu,
        goto param_error_exit;
    }

    pdev = pci_find_device(PCI_HOST_BRIDGE(sphb)->bus,
                           (addr >> 16) & 0xFF, (addr >> 8) & 0xFF);
    if (!pdev || !object_dynamic_cast(OBJECT(pdev), "vfio-pci")) {
        goto param_error_exit;
    }

    spc = SPAPR_PCI_HOST_BRIDGE_GET_CLASS(sphb);
    if (!spc->eeh_set_option) {
        goto param_error_exit;