On Wed, Apr 30, 2014 at 10:28:12AM +1000, Gavin Shan wrote: > >It seems that we have 2 problems here: > >- For non-SRIOV case, pcibios_setup_device() is called for towice. That > seems incorrect. We could simply remove pcibios_setup_bus_devices() > from pcibios_fixup_bus().
I have thought about this solution before, but I guess this would have some side effect on other platforms. Well, just did a test by removing this line in pcibios_fixup_bus(), the result is: 1. system up, thanks god. 2. no one invoke the pcibios_setup_device() at bootup time. The reason for no one invoke the pcibios_setup_device() is: in pcibios_add_device() it will check whether the bus is added before calling pcibios_setup_device(). And at this time, the bus is not added. Still wierd, why the system could be up. But one thing for sure is, no one invoke the pcibios_setup_device() at bootup stage. So this solution may not work. > >- It's too early to register IOMMU group/device in pnv_pci_ioda_dma_dev_setup() > because the sysfs entries of the PCI device aren't finalized yet. So we could > remove all logic we have in pnv_pci_ioda_dma_dev_setup() and just purely rely > on "tce_iommu_bus_notifier". This would be another solution. One concern: If we want to do like this, we need to retrieve the pe information and get the tce32_table base in tce_iommu_bus_notifier. Hmm... looks a little not that nice. > >By the way, I never tried EEH on SRIOV PF/VFs. However, I never hit similar >issue in non-SRIOV cases. I have test this case on a PF with no VF enabled. I just make the mlx4_pci_err_detected() return PCI_ERS_RESULT_NONE and do nothing. So this will force the eeh to do a hotplug recovery. You could have a try on your machine too. > >Thanks, >Gavin -- Richard Yang Help you, Help me _______________________________________________ Linuxppc-dev mailing list Linuxppc-dev@lists.ozlabs.org https://lists.ozlabs.org/listinfo/linuxppc-dev