-
jbkkinda...
-
jbkat least for the intel iommu
-
jbkit caches the iommu_t responsible for a device in the device's dev_info_t, but the first time, it does traverse up the tree to find the 'domain' the device is in
-
jbkwhich is usually it's own, but then also traverses the tree up to find the iommu_t responsible for the device the first time (then caches it)
-
richloweapparently, I had the ddi and the rootnex bit swapped in my mind.
-
richloweI mean the way rootnex_dma* call into iommulib* in that way they do
-
jbkone of the other things I need to put up is we do traverse too far looking for the top most device in a domain
-
jbkand blow right by the root complex
-
jbkand go all the way to the root nexus
-
jbkthough right now my fix looks at the device binding name and terminates the walk if it's 'pciex_root_complex'
-
jbkbut I don't know if there's a better way to handle that
-
sommerfeldjbk: some sort of attribute on the device indicating that it's a root complex?
-
jbkthat's waht I was wondering, but the only thing I found was create_pcie_root_bus() (in the somewhat confusingly named pcie_nvidia.c)
-
jbkwhich just sets device_type and compatible
-
sommerfeldjbk: that's for an nvidia PCIe chipset, IIRC
-
sommerfeld
-
jbkit appears to get called from pci_boot.c
-
richloweyeah, it gets a funny name on x86
-
richlowenpe was originally named as if for nForce PCI-e
-
richlowebut is now the "nexus for..." PCI-e
-
jbkahh..
-
richlowethe "nvidia" in the name is vestigial
-
richlowepcie_get_rc_dip is probably the best way I know to find an RC in your ancestry to terminate a search
-
richlowe(it checks the bus private data)
-
Reinhilde:o
-
jbkhrm... looks like redmine is having issues again...
5 hours ago