On Thu, Feb 13, 2014 at 12:10 AM, Jingoo Han jg1.han@samsung.com wrote:
On Thursday, February 06, 2014 7:18 PM, Liviu Dudau wrote:
On Wed, Feb 05, 2014 at 10:26:27PM +0000, Tanmay Inamdar wrote:
Hello Liviu,
I did not get the first email of this particular patch on any of subscribed mailing lists (don't know why), hence replying here.
Strange, it shows in the MARC and GMANE archive for linux-pci, probably a hickup on your receiving side?
+struct pci_host_bridge * +pci_host_bridge_of_init(struct device *parent, int busno, struct pci_ops *ops,
- void *host_data, struct list_head *resources)
+{
- struct pci_bus *root_bus;
- struct pci_host_bridge *bridge;
- /* first parse the host bridge bus ranges */
- if (pci_host_bridge_of_get_ranges(parent->of_node, resources))
- return NULL;
- /* then create the root bus */
- root_bus = pci_create_root_bus(parent, busno, ops, host_data, resources);
- if (!root_bus)
- return NULL;
- bridge = to_pci_host_bridge(root_bus->bridge);
- return bridge;
+}
You are keeping the domain_nr inside pci_host_bridge structure. In above API, domain_nr is required in 'pci_find_bus' function called from 'pci_create_root_bus'. Since the bridge is allocated after creating root bus, 'pci_find_bus' always gets domain_nr as 0. This will cause problem for scanning multiple domains.
Good catch. I was switching between creating a pci_controller in arch/arm64 and adding the needed bits in pci_host_bridge. After internal review I've decided to add the domain_nr to pci_host_bridge, but forgot to update the code everywhere.
Hi Liviu Dudau,
One more thing, I am reviewing and compiling your patch. Would you consider adding 'struct pci_sys_data' and 'struct hw_pci'?
Currently, 4 PCIe Host drivers (pci-mvebu.c, pci-tegra.c, pci-rcar-gen2.c, pcie-designware.c) are using 'struct pci_sys_data' and 'struct hw_pci' in their drivers. Without this, it makes build errors.
In arm32, 'struct pci_sys_data' and 'struct hw_pci' is defined in "arch/arm/include/asm/mach/pci.h".
Tanmay Inamdar, Your 'APM X-Gene PCIe' patch also needs 'struct pci_sys_data' and 'struct hw_pci'. With Liviu Dudau's patch, it will make build errors. Would you check this?
X-Gene PCIe host driver is dependent on arm64 PCI patch. My previous approach was based on 32bit arm PCI support. With Liviu's approach, I will have to make changes in host driver to get rid of hw_pci and pci_sys_data which are no longer required.
IMO it should not cause build errors for PCI host drivers dependent on architectures other than arm64. Can you post the error?
Thank you.
Best regards, Jingoo Han
Thanks for reviewing this, will fix in v2.
Do you find porting to the new API straight forward?