@@ -426,6 +426,7 @@ static int check_provider_attr(struct fi_info *provider_info, struct fi_info *pr
426
426
{
427
427
/* make sure both info are the same provider and provide the same attributes */
428
428
if (0 == strcmp (provider_info -> fabric_attr -> prov_name , provider -> fabric_attr -> prov_name )
429
+ && 0 == strcmp (provider_info -> fabric_attr -> name , provider -> fabric_attr -> name )
429
430
&& !check_tx_attr (provider_info -> tx_attr , provider -> tx_attr )
430
431
&& !check_rx_attr (provider_info -> rx_attr , provider -> rx_attr )
431
432
&& !check_ep_attr (provider_info -> ep_attr , provider -> ep_attr )
@@ -631,7 +632,9 @@ struct fi_info *opal_mca_common_ofi_select_provider(struct fi_info *provider_lis
631
632
if (!check_provider_attr (provider , current_provider )) {
632
633
cpusets_match = false;
633
634
#if OPAL_OFI_PCI_DATA_AVAILABLE
634
- if (NULL != current_provider -> nic ) {
635
+ if (NULL != current_provider -> nic
636
+ && NULL != current_provider -> nic -> bus_attr
637
+ && current_provider -> nic -> bus_attr -> bus_type == FI_BUS_PCI ) {
635
638
pci = current_provider -> nic -> bus_attr -> attr .pci ;
636
639
cpusets_match = compare_cpusets (opal_hwloc_topology , pci );
637
640
}
@@ -666,7 +669,9 @@ struct fi_info *opal_mca_common_ofi_select_provider(struct fi_info *provider_lis
666
669
}
667
670
668
671
#if OPAL_OFI_PCI_DATA_AVAILABLE
669
- if (NULL != provider -> nic ) {
672
+ if (NULL != provider -> nic
673
+ && NULL != current_provider -> nic -> bus_attr
674
+ && current_provider -> nic -> bus_attr -> bus_type == FI_BUS_PCI ) {
670
675
pci = provider -> nic -> bus_attr -> attr .pci ;
671
676
cpusets_match = compare_cpusets (opal_hwloc_topology , pci );
672
677
}
0 commit comments