mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-03 15:53:54 -06:00
spapr: Remove support for NVIDIA V100 GPU with NVLink2
NVLink2 support was removed from the PPC PowerNV platform and VFIO in
Linux 5.13 with commits :
562d1e207d32 ("powerpc/powernv: remove the nvlink support")
b392a1989170 ("vfio/pci: remove vfio_pci_nvlink2")
This was 2.5 years ago. Do the same in QEMU with a revert of commit
ec132efaa8
("spapr: Support NVIDIA V100 GPU with NVLink2"). Some
adjustements are required on the NUMA part.
Cc: Alexey Kardashevskiy <aik@ozlabs.ru>
Reviewed-by: Daniel Henrique Barboza <danielhb413@gmail.com>
Acked-by: Alex Williamson <alex.williamson@redhat.com>
Signed-off-by: Cédric Le Goater <clg@redhat.com>
Message-ID: <20230918091717.149950-1-clg@kaod.org>
Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com>
This commit is contained in:
parent
527b238329
commit
44fa20c928
11 changed files with 14 additions and 708 deletions
|
@ -47,8 +47,6 @@ typedef struct SpaprPciLsi {
|
|||
uint32_t irq;
|
||||
} SpaprPciLsi;
|
||||
|
||||
typedef struct SpaprPhbPciNvGpuConfig SpaprPhbPciNvGpuConfig;
|
||||
|
||||
struct SpaprPhbState {
|
||||
PCIHostState parent_obj;
|
||||
|
||||
|
@ -90,9 +88,6 @@ struct SpaprPhbState {
|
|||
uint32_t mig_liobn;
|
||||
hwaddr mig_mem_win_addr, mig_mem_win_size;
|
||||
hwaddr mig_io_win_addr, mig_io_win_size;
|
||||
hwaddr nv2_gpa_win_addr;
|
||||
hwaddr nv2_atsd_win_addr;
|
||||
SpaprPhbPciNvGpuConfig *nvgpus;
|
||||
bool pre_5_1_assoc;
|
||||
};
|
||||
|
||||
|
@ -112,20 +107,6 @@ struct SpaprPhbState {
|
|||
|
||||
#define SPAPR_PCI_MSI_WINDOW 0x40000000000ULL
|
||||
|
||||
#define SPAPR_PCI_NV2RAM64_WIN_BASE SPAPR_PCI_LIMIT
|
||||
#define SPAPR_PCI_NV2RAM64_WIN_SIZE (2 * TiB) /* For up to 6 GPUs 256GB each */
|
||||
|
||||
/* Max number of NVLinks per GPU in any physical box */
|
||||
#define NVGPU_MAX_LINKS 3
|
||||
|
||||
/*
|
||||
* GPU RAM starts at 64TiB so huge DMA window to cover it all ends at 128TiB
|
||||
* which is enough. We do not need DMA for ATSD so we put them at 128TiB.
|
||||
*/
|
||||
#define SPAPR_PCI_NV2ATSD_WIN_BASE (128 * TiB)
|
||||
#define SPAPR_PCI_NV2ATSD_WIN_SIZE (NVGPU_MAX_NUM * NVGPU_MAX_LINKS * \
|
||||
64 * KiB)
|
||||
|
||||
int spapr_dt_phb(SpaprMachineState *spapr, SpaprPhbState *phb,
|
||||
uint32_t intc_phandle, void *fdt, int *node_offset);
|
||||
|
||||
|
@ -149,13 +130,6 @@ int spapr_phb_vfio_eeh_get_state(SpaprPhbState *sphb, int *state);
|
|||
int spapr_phb_vfio_eeh_reset(SpaprPhbState *sphb, int option);
|
||||
int spapr_phb_vfio_eeh_configure(SpaprPhbState *sphb);
|
||||
void spapr_phb_vfio_reset(DeviceState *qdev);
|
||||
void spapr_phb_nvgpu_setup(SpaprPhbState *sphb, Error **errp);
|
||||
void spapr_phb_nvgpu_free(SpaprPhbState *sphb);
|
||||
void spapr_phb_nvgpu_populate_dt(SpaprPhbState *sphb, void *fdt, int bus_off,
|
||||
Error **errp);
|
||||
void spapr_phb_nvgpu_ram_populate_dt(SpaprPhbState *sphb, void *fdt);
|
||||
void spapr_phb_nvgpu_populate_pcidev_dt(PCIDevice *dev, void *fdt, int offset,
|
||||
SpaprPhbState *sphb);
|
||||
#else
|
||||
static inline bool spapr_phb_eeh_available(SpaprPhbState *sphb)
|
||||
{
|
||||
|
@ -182,25 +156,6 @@ static inline int spapr_phb_vfio_eeh_configure(SpaprPhbState *sphb)
|
|||
static inline void spapr_phb_vfio_reset(DeviceState *qdev)
|
||||
{
|
||||
}
|
||||
static inline void spapr_phb_nvgpu_setup(SpaprPhbState *sphb, Error **errp)
|
||||
{
|
||||
}
|
||||
static inline void spapr_phb_nvgpu_free(SpaprPhbState *sphb)
|
||||
{
|
||||
}
|
||||
static inline void spapr_phb_nvgpu_populate_dt(SpaprPhbState *sphb, void *fdt,
|
||||
int bus_off, Error **errp)
|
||||
{
|
||||
}
|
||||
static inline void spapr_phb_nvgpu_ram_populate_dt(SpaprPhbState *sphb,
|
||||
void *fdt)
|
||||
{
|
||||
}
|
||||
static inline void spapr_phb_nvgpu_populate_pcidev_dt(PCIDevice *dev, void *fdt,
|
||||
int offset,
|
||||
SpaprPhbState *sphb)
|
||||
{
|
||||
}
|
||||
#endif
|
||||
|
||||
void spapr_phb_dma_reset(SpaprPhbState *sphb);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue