@@ -68,7 +68,7 @@ struct amdgpu_acpi_xcc_info {
6868struct amdgpu_acpi_dev_info {
6969 struct list_head list ;
7070 struct list_head xcc_list ;
71- uint16_t bdf ;
71+ uint32_t sbdf ;
7272 uint16_t supp_xcp_mode ;
7373 uint16_t xcp_mode ;
7474 uint16_t mem_mode ;
@@ -927,22 +927,22 @@ static acpi_status amdgpu_acpi_get_node_id(acpi_handle handle,
927927#endif
928928}
929929
930- static struct amdgpu_acpi_dev_info * amdgpu_acpi_get_dev (u16 bdf )
930+ static struct amdgpu_acpi_dev_info * amdgpu_acpi_get_dev (u32 sbdf )
931931{
932932 struct amdgpu_acpi_dev_info * acpi_dev ;
933933
934934 if (list_empty (& amdgpu_acpi_dev_list ))
935935 return NULL ;
936936
937937 list_for_each_entry (acpi_dev , & amdgpu_acpi_dev_list , list )
938- if (acpi_dev -> bdf == bdf )
938+ if (acpi_dev -> sbdf == sbdf )
939939 return acpi_dev ;
940940
941941 return NULL ;
942942}
943943
944944static int amdgpu_acpi_dev_init (struct amdgpu_acpi_dev_info * * dev_info ,
945- struct amdgpu_acpi_xcc_info * xcc_info , u16 bdf )
945+ struct amdgpu_acpi_xcc_info * xcc_info , u32 sbdf )
946946{
947947 struct amdgpu_acpi_dev_info * tmp ;
948948 union acpi_object * obj ;
@@ -955,7 +955,7 @@ static int amdgpu_acpi_dev_init(struct amdgpu_acpi_dev_info **dev_info,
955955
956956 INIT_LIST_HEAD (& tmp -> xcc_list );
957957 INIT_LIST_HEAD (& tmp -> list );
958- tmp -> bdf = bdf ;
958+ tmp -> sbdf = sbdf ;
959959
960960 obj = acpi_evaluate_dsm_typed (xcc_info -> handle , & amd_xcc_dsm_guid , 0 ,
961961 AMD_XCC_DSM_GET_SUPP_MODE , NULL ,
@@ -1007,7 +1007,7 @@ static int amdgpu_acpi_dev_init(struct amdgpu_acpi_dev_info **dev_info,
10071007
10081008 DRM_DEBUG_DRIVER (
10091009 "New dev(%x): Supported xcp mode: %x curr xcp_mode : %x mem mode : %x, tmr base: %llx tmr size: %llx " ,
1010- tmp -> bdf , tmp -> supp_xcp_mode , tmp -> xcp_mode , tmp -> mem_mode ,
1010+ tmp -> sbdf , tmp -> supp_xcp_mode , tmp -> xcp_mode , tmp -> mem_mode ,
10111011 tmp -> tmr_base , tmp -> tmr_size );
10121012 list_add_tail (& tmp -> list , & amdgpu_acpi_dev_list );
10131013 * dev_info = tmp ;
@@ -1023,7 +1023,7 @@ static int amdgpu_acpi_dev_init(struct amdgpu_acpi_dev_info **dev_info,
10231023}
10241024
10251025static int amdgpu_acpi_get_xcc_info (struct amdgpu_acpi_xcc_info * xcc_info ,
1026- u16 * bdf )
1026+ u32 * sbdf )
10271027{
10281028 union acpi_object * obj ;
10291029 acpi_status status ;
@@ -1054,8 +1054,10 @@ static int amdgpu_acpi_get_xcc_info(struct amdgpu_acpi_xcc_info *xcc_info,
10541054 xcc_info -> phy_id = (obj -> integer .value >> 32 ) & 0xFF ;
10551055 /* xcp node of this xcc [47:40] */
10561056 xcc_info -> xcp_node = (obj -> integer .value >> 40 ) & 0xFF ;
1057+ /* PF domain of this xcc [31:16] */
1058+ * sbdf = (obj -> integer .value ) & 0xFFFF0000 ;
10571059 /* PF bus/dev/fn of this xcc [63:48] */
1058- * bdf = (obj -> integer .value >> 48 ) & 0xFFFF ;
1060+ * sbdf | = (obj -> integer .value >> 48 ) & 0xFFFF ;
10591061 ACPI_FREE (obj );
10601062 obj = NULL ;
10611063
@@ -1079,7 +1081,7 @@ static int amdgpu_acpi_enumerate_xcc(void)
10791081 struct acpi_device * acpi_dev ;
10801082 char hid [ACPI_ID_LEN ];
10811083 int ret , id ;
1082- u16 bdf ;
1084+ u32 sbdf ;
10831085
10841086 INIT_LIST_HEAD (& amdgpu_acpi_dev_list );
10851087 xa_init (& numa_info_xa );
@@ -1107,16 +1109,16 @@ static int amdgpu_acpi_enumerate_xcc(void)
11071109 xcc_info -> handle = acpi_device_handle (acpi_dev );
11081110 acpi_dev_put (acpi_dev );
11091111
1110- ret = amdgpu_acpi_get_xcc_info (xcc_info , & bdf );
1112+ ret = amdgpu_acpi_get_xcc_info (xcc_info , & sbdf );
11111113 if (ret ) {
11121114 kfree (xcc_info );
11131115 continue ;
11141116 }
11151117
1116- dev_info = amdgpu_acpi_get_dev (bdf );
1118+ dev_info = amdgpu_acpi_get_dev (sbdf );
11171119
11181120 if (!dev_info )
1119- ret = amdgpu_acpi_dev_init (& dev_info , xcc_info , bdf );
1121+ ret = amdgpu_acpi_dev_init (& dev_info , xcc_info , sbdf );
11201122
11211123 if (ret == - ENOMEM )
11221124 return ret ;
@@ -1136,13 +1138,14 @@ int amdgpu_acpi_get_tmr_info(struct amdgpu_device *adev, u64 *tmr_offset,
11361138 u64 * tmr_size )
11371139{
11381140 struct amdgpu_acpi_dev_info * dev_info ;
1139- u16 bdf ;
1141+ u32 sbdf ;
11401142
11411143 if (!tmr_offset || !tmr_size )
11421144 return - EINVAL ;
11431145
1144- bdf = pci_dev_id (adev -> pdev );
1145- dev_info = amdgpu_acpi_get_dev (bdf );
1146+ sbdf = (pci_domain_nr (adev -> pdev -> bus ) << 16 );
1147+ sbdf |= pci_dev_id (adev -> pdev );
1148+ dev_info = amdgpu_acpi_get_dev (sbdf );
11461149 if (!dev_info )
11471150 return - ENOENT ;
11481151
@@ -1157,13 +1160,14 @@ int amdgpu_acpi_get_mem_info(struct amdgpu_device *adev, int xcc_id,
11571160{
11581161 struct amdgpu_acpi_dev_info * dev_info ;
11591162 struct amdgpu_acpi_xcc_info * xcc_info ;
1160- u16 bdf ;
1163+ u32 sbdf ;
11611164
11621165 if (!numa_info )
11631166 return - EINVAL ;
11641167
1165- bdf = pci_dev_id (adev -> pdev );
1166- dev_info = amdgpu_acpi_get_dev (bdf );
1168+ sbdf = (pci_domain_nr (adev -> pdev -> bus ) << 16 );
1169+ sbdf |= pci_dev_id (adev -> pdev );
1170+ dev_info = amdgpu_acpi_get_dev (sbdf );
11671171 if (!dev_info )
11681172 return - ENOENT ;
11691173
0 commit comments