[PATCH 1/2] powerpc/powernv: reduce multi-hit of iommu_add_device()
weiyang at linux.vnet.ibm.com
Wed Apr 30 13:28:03 EST 2014
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
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
>- 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.
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.
Help you, Help me
More information about the Linuxppc-dev