hw/ppc/Kconfig: Imply VFIO_PCI

When the legacy and iommufd backends were introduced, a set of common
vfio-pci routines were exported in pci.c for both backends to use :

  vfio_pci_pre_reset
  vfio_pci_get_pci_hot_reset_info
  vfio_pci_host_match
  vfio_pci_post_reset

This introduced a build failure on PPC when --without-default-devices
is use because VFIO is always selected in ppc/Kconfig but VFIO_PCI is
not.

Use an 'imply VFIO_PCI' in ppc/Kconfig and bypass compilation of the
VFIO EEH hooks routines defined in hw/ppc/spapr_pci_vfio.c with
CONFIG_VFIO_PCI.

Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Signed-off-by: Zhenzhong Duan <zhenzhong.duan@intel.com>
Signed-off-by: Cédric Le Goater <clg@redhat.com>
This commit is contained in:
Cédric Le Goater 2023-11-21 15:03:55 +01:00
parent 98dad2b019
commit 4278df9d1d
2 changed files with 37 additions and 1 deletions

View file

@ -3,11 +3,11 @@ config PSERIES
imply PCI_DEVICES imply PCI_DEVICES
imply TEST_DEVICES imply TEST_DEVICES
imply VIRTIO_VGA imply VIRTIO_VGA
imply VFIO_PCI if LINUX # needed by spapr_pci_vfio.c
select NVDIMM select NVDIMM
select DIMM select DIMM
select PCI select PCI
select SPAPR_VSCSI select SPAPR_VSCSI
select VFIO if LINUX # needed by spapr_pci_vfio.c
select XICS select XICS
select XIVE select XIVE
select MSI_NONBROKEN select MSI_NONBROKEN

View file

@ -26,10 +26,12 @@
#include "hw/pci/pci_device.h" #include "hw/pci/pci_device.h"
#include "hw/vfio/vfio-common.h" #include "hw/vfio/vfio-common.h"
#include "qemu/error-report.h" #include "qemu/error-report.h"
#include CONFIG_DEVICES /* CONFIG_VFIO_PCI */
/* /*
* Interfaces for IBM EEH (Enhanced Error Handling) * Interfaces for IBM EEH (Enhanced Error Handling)
*/ */
#ifdef CONFIG_VFIO_PCI
static bool vfio_eeh_container_ok(VFIOContainer *container) static bool vfio_eeh_container_ok(VFIOContainer *container)
{ {
/* /*
@ -314,3 +316,37 @@ int spapr_phb_vfio_eeh_configure(SpaprPhbState *sphb)
return RTAS_OUT_SUCCESS; return RTAS_OUT_SUCCESS;
} }
#else
bool spapr_phb_eeh_available(SpaprPhbState *sphb)
{
return false;
}
void spapr_phb_vfio_reset(DeviceState *qdev)
{
}
int spapr_phb_vfio_eeh_set_option(SpaprPhbState *sphb,
unsigned int addr, int option)
{
return RTAS_OUT_NOT_SUPPORTED;
}
int spapr_phb_vfio_eeh_get_state(SpaprPhbState *sphb, int *state)
{
return RTAS_OUT_NOT_SUPPORTED;
}
int spapr_phb_vfio_eeh_reset(SpaprPhbState *sphb, int option)
{
return RTAS_OUT_NOT_SUPPORTED;
}
int spapr_phb_vfio_eeh_configure(SpaprPhbState *sphb)
{
return RTAS_OUT_NOT_SUPPORTED;
}
#endif /* CONFIG_VFIO_PCI */