[AMD] Attempt to decode Phoenix' UMC and IOMMU controllers

This commit is contained in:
CyrIng
2023-07-11 08:59:19 +02:00
committed by CyrIng
parent 498dc18d93
commit 2f26eb952c
4 changed files with 25 additions and 0 deletions

View File

@@ -1484,6 +1484,7 @@ typedef struct
/* Source: AMD Ryzen 9 7950X [ Zen4/Raphael ] */ /* Source: AMD Ryzen 9 7950X [ Zen4/Raphael ] */
#define DID_AMD_19H_ZEN4_RPL_NB_IOMMU 0x14d9 /* Raphael */ #define DID_AMD_19H_ZEN4_RPL_NB_IOMMU 0x14d9 /* Raphael */
#define DID_AMD_19H_ZEN4_GNA_NB_IOMMU 0x149e /* Genoa */ #define DID_AMD_19H_ZEN4_GNA_NB_IOMMU 0x149e /* Genoa */
#define DID_AMD_19H_ZEN4_PHX_NB_IOMMU 0x14e9 /* Phoenix */
/* Source: /include/linux/pci_ids.h */ /* Source: /include/linux/pci_ids.h */
#define DID_AMD_17H_ZEPPELIN_DF_UMC 0x1460 /* Zeppelin */ #define DID_AMD_17H_ZEPPELIN_DF_UMC 0x1460 /* Zeppelin */
#define DID_AMD_17H_RAVEN_DF_UMC 0x15e8 /* Raven */ #define DID_AMD_17H_RAVEN_DF_UMC 0x15e8 /* Raven */
@@ -1499,3 +1500,4 @@ typedef struct
#define DID_AMD_19H_REMBRANDT_DF_UMC 0x1679 /* Rembrandt */ #define DID_AMD_19H_REMBRANDT_DF_UMC 0x1679 /* Rembrandt */
#define DID_AMD_19H_RAPHAEL_DF_UMC 0x14e0 /* Raphael */ #define DID_AMD_19H_RAPHAEL_DF_UMC 0x14e0 /* Raphael */
#define DID_AMD_19H_GENOA_DF_UMC 0x14ad /* Genoa */ #define DID_AMD_19H_GENOA_DF_UMC 0x14ad /* Genoa */
#define DID_AMD_19H_PHOENIX_DF_UMC 0x14f0 /* Phoenix */

View File

@@ -7023,6 +7023,7 @@ void PCI_AMD(RO(SHM_STRUCT) *RO(Shm), RO(PROC) *RO(Proc), RO(CORE) *RO(Core),
case DID_AMD_19H_ZEN3_RMB_NB_IOMMU: case DID_AMD_19H_ZEN3_RMB_NB_IOMMU:
case DID_AMD_19H_ZEN4_RPL_NB_IOMMU: case DID_AMD_19H_ZEN4_RPL_NB_IOMMU:
case DID_AMD_19H_ZEN4_GNA_NB_IOMMU: case DID_AMD_19H_ZEN4_GNA_NB_IOMMU:
case DID_AMD_19H_ZEN4_PHX_NB_IOMMU:
AMD_17h_IOMMU(RO(Shm), RO(Proc)); AMD_17h_IOMMU(RO(Shm), RO(Proc));
break; break;
case DID_AMD_17H_ZEPPELIN_DF_UMC: case DID_AMD_17H_ZEPPELIN_DF_UMC:
@@ -7039,6 +7040,7 @@ void PCI_AMD(RO(SHM_STRUCT) *RO(Shm), RO(PROC) *RO(Proc), RO(CORE) *RO(Core),
case DID_AMD_19H_REMBRANDT_DF_UMC: case DID_AMD_19H_REMBRANDT_DF_UMC:
case DID_AMD_19H_RAPHAEL_DF_UMC: case DID_AMD_19H_RAPHAEL_DF_UMC:
case DID_AMD_19H_GENOA_DF_UMC: case DID_AMD_19H_GENOA_DF_UMC:
case DID_AMD_19H_PHOENIX_DF_UMC:
AMD_17h_UMC(RO(Shm), RO(Proc)); AMD_17h_UMC(RO(Shm), RO(Proc));
AMD_17h_CAP(RO(Shm), RO(Proc), RO(Core)); AMD_17h_CAP(RO(Shm), RO(Proc), RO(Core));
SET_CHIPSET(IC_ZEN); SET_CHIPSET(IC_ZEN);

View File

@@ -6843,6 +6843,18 @@ static PCI_CALLBACK AMD_DataFabric_Genoa(struct pci_dev *pdev)
(const unsigned int[]) {PCI_DEVFN(0x18, 0x0)} ); (const unsigned int[]) {PCI_DEVFN(0x18, 0x0)} );
} }
static PCI_CALLBACK AMD_DataFabric_Phoenix(struct pci_dev *pdev)
{
return AMD_17h_DataFabric( pdev,
(const unsigned int[2][2]) {
{ 0x0, 0x20},
{0x10, 0x30}
},
0x44, 0x90,
1, MC_MAX_CHA,
(const unsigned int[]) {PCI_DEVFN(0x18, 0x0)} );
}
static void CoreFreqK_ResetChip(struct pci_dev *dev) static void CoreFreqK_ResetChip(struct pci_dev *dev)
{ {
UNUSED(dev); UNUSED(dev);

View File

@@ -2109,6 +2109,7 @@ static PCI_CALLBACK AMD_DataFabric_Cezanne(struct pci_dev *pdev) ;
static PCI_CALLBACK AMD_DataFabric_Rembrandt(struct pci_dev *pdev) ; static PCI_CALLBACK AMD_DataFabric_Rembrandt(struct pci_dev *pdev) ;
static PCI_CALLBACK AMD_DataFabric_Raphael(struct pci_dev *pdev) ; static PCI_CALLBACK AMD_DataFabric_Raphael(struct pci_dev *pdev) ;
static PCI_CALLBACK AMD_DataFabric_Genoa(struct pci_dev *pdev) ; static PCI_CALLBACK AMD_DataFabric_Genoa(struct pci_dev *pdev) ;
static PCI_CALLBACK AMD_DataFabric_Phoenix(struct pci_dev *pdev) ;
static struct pci_device_id PCI_Void_ids[] = { static struct pci_device_id PCI_Void_ids[] = {
{0, } {0, }
@@ -3082,6 +3083,10 @@ static struct pci_device_id PCI_AMD_17h_ids[] = {
PCI_VDEVICE(AMD, DID_AMD_19H_ZEN4_GNA_NB_IOMMU), PCI_VDEVICE(AMD, DID_AMD_19H_ZEN4_GNA_NB_IOMMU),
.driver_data = (kernel_ulong_t) AMD_Zen_IOMMU .driver_data = (kernel_ulong_t) AMD_Zen_IOMMU
}, },
{
PCI_VDEVICE(AMD, DID_AMD_19H_ZEN4_PHX_NB_IOMMU),
.driver_data = (kernel_ulong_t) AMD_Zen_IOMMU
},
/* Source: HYGON: PCI list */ /* Source: HYGON: PCI list */
{ {
PCI_VDEVICE(HYGON, DID_AMD_17H_ZEN_PLUS_NB_IOMMU), PCI_VDEVICE(HYGON, DID_AMD_17H_ZEN_PLUS_NB_IOMMU),
@@ -3146,6 +3151,10 @@ static struct pci_device_id PCI_AMD_17h_ids[] = {
PCI_VDEVICE(AMD, DID_AMD_19H_GENOA_DF_UMC), PCI_VDEVICE(AMD, DID_AMD_19H_GENOA_DF_UMC),
.driver_data = (kernel_ulong_t) AMD_DataFabric_Genoa .driver_data = (kernel_ulong_t) AMD_DataFabric_Genoa
}, },
{
PCI_VDEVICE(AMD, DID_AMD_19H_PHOENIX_DF_UMC),
.driver_data = (kernel_ulong_t) AMD_DataFabric_Phoenix
},
{0, } {0, }
}; };