@@ -1396,6 +1396,29 @@ static int upi_nodeid_groupid(struct pci_dev *ubox_dev, int nodeid_loc, int idma
1396
1396
return ret ;
1397
1397
}
1398
1398
1399
+ static int topology_gidnid_map (int nodeid , u32 gidnid )
1400
+ {
1401
+ int i , die_id = -1 ;
1402
+
1403
+ /*
1404
+ * every three bits in the Node ID mapping register maps
1405
+ * to a particular node.
1406
+ */
1407
+ for (i = 0 ; i < 8 ; i ++ ) {
1408
+ if (nodeid == GIDNIDMAP (gidnid , i )) {
1409
+ if (topology_max_die_per_package () > 1 )
1410
+ die_id = i ;
1411
+ else
1412
+ die_id = topology_phys_to_logical_pkg (i );
1413
+ if (die_id < 0 )
1414
+ die_id = - ENODEV ;
1415
+ break ;
1416
+ }
1417
+ }
1418
+
1419
+ return die_id ;
1420
+ }
1421
+
1399
1422
/*
1400
1423
* build pci bus to socket mapping
1401
1424
*/
@@ -1435,22 +1458,7 @@ static int snbep_pci2phy_map_init(int devid, int nodeid_loc, int idmap_loc, bool
1435
1458
break ;
1436
1459
}
1437
1460
1438
- /*
1439
- * every three bits in the Node ID mapping register maps
1440
- * to a particular node.
1441
- */
1442
- for (i = 0 ; i < 8 ; i ++ ) {
1443
- if (nodeid == GIDNIDMAP (config , i )) {
1444
- if (topology_max_die_per_package () > 1 )
1445
- die_id = i ;
1446
- else
1447
- die_id = topology_phys_to_logical_pkg (i );
1448
- if (die_id < 0 )
1449
- die_id = - ENODEV ;
1450
- map -> pbus_to_dieid [bus ] = die_id ;
1451
- break ;
1452
- }
1453
- }
1461
+ map -> pbus_to_dieid [bus ] = topology_gidnid_map (nodeid , config );
1454
1462
raw_spin_unlock (& pci2phy_map_lock );
1455
1463
} else {
1456
1464
segment = pci_domain_nr (ubox_dev -> bus );
@@ -5596,7 +5604,7 @@ static int discover_upi_topology(struct intel_uncore_type *type, int ubox_did, i
5596
5604
struct pci_dev * ubox = NULL ;
5597
5605
struct pci_dev * dev = NULL ;
5598
5606
u32 nid , gid ;
5599
- int i , idx , lgc_pkg , ret = - EPERM ;
5607
+ int idx , lgc_pkg , ret = - EPERM ;
5600
5608
struct intel_uncore_topology * upi ;
5601
5609
unsigned int devfn ;
5602
5610
@@ -5611,27 +5619,22 @@ static int discover_upi_topology(struct intel_uncore_type *type, int ubox_did, i
5611
5619
break ;
5612
5620
}
5613
5621
5614
- for (i = 0 ; i < 8 ; i ++ ) {
5615
- if (nid != GIDNIDMAP (gid , i ))
5616
- continue ;
5617
- lgc_pkg = topology_phys_to_logical_pkg (i );
5618
- if (lgc_pkg < 0 ) {
5619
- ret = - EPERM ;
5620
- goto err ;
5621
- }
5622
- for (idx = 0 ; idx < type -> num_boxes ; idx ++ ) {
5623
- upi = & type -> topology [lgc_pkg ][idx ];
5624
- devfn = PCI_DEVFN (dev_link0 + idx , ICX_UPI_REGS_ADDR_FUNCTION );
5625
- dev = pci_get_domain_bus_and_slot (pci_domain_nr (ubox -> bus ),
5626
- ubox -> bus -> number ,
5627
- devfn );
5628
- if (dev ) {
5629
- ret = upi_fill_topology (dev , upi , idx );
5630
- if (ret )
5631
- goto err ;
5632
- }
5622
+ lgc_pkg = topology_gidnid_map (nid , gid );
5623
+ if (lgc_pkg < 0 ) {
5624
+ ret = - EPERM ;
5625
+ goto err ;
5626
+ }
5627
+ for (idx = 0 ; idx < type -> num_boxes ; idx ++ ) {
5628
+ upi = & type -> topology [lgc_pkg ][idx ];
5629
+ devfn = PCI_DEVFN (dev_link0 + idx , ICX_UPI_REGS_ADDR_FUNCTION );
5630
+ dev = pci_get_domain_bus_and_slot (pci_domain_nr (ubox -> bus ),
5631
+ ubox -> bus -> number ,
5632
+ devfn );
5633
+ if (dev ) {
5634
+ ret = upi_fill_topology (dev , upi , idx );
5635
+ if (ret )
5636
+ goto err ;
5633
5637
}
5634
- break ;
5635
5638
}
5636
5639
}
5637
5640
err :
0 commit comments