Re: [RFC 2/4] PCI: generic: Add support for ARM64 and MSI(x)
From: Suravee Suthikulanit <suravee.suthikulpanit@amd.com>
Date: 2015-01-02 18:18:29
Also in:
linux-arm-kernel, linux-pci, lkml
On 1/2/2015 5:55 AM, Lorenzo Pieralisi wrote:
Hi Suravee, On Mon, Dec 29, 2014 at 07:32:44PM +0000, Suravee Suthikulpanit wrote:quoted
quoted
Hi, I am not sure if this thread is still alive. I'm trying to see what I can do to help clean up/convert to make the PCI GHC also works for arm64 w/ zero or minimal ifdefs. Please let me know if someone is already working on this. I noticed that Lorenzo's patches has already been in 3.19-rc1, and in Bjorn's pci/domain branch. Otherwise, I'll try to continue the work based on the sample patch from Arnd here.If I am not mistaken, the only bit missing to remove pci_sys_data (and so having a generic host controller driver that works on ARM32/64) is generic MSI management.
Lorenzo,
Do you mean to remove pci_sys_data from pci-host-generic.c or removing
it completely? I assume the former case.
So, looking at the current code in the pci-host-generic.c, my
understanding is that the:
*gen_pci = pci_bus->sysdata->private_data
will be changed to:
*gen_pci = pci_bus->sysdata
Then, we can simply just call pci_scan_root_bus() directly since we no
longer need to declare hw_pci for calling pci_common_init_dev().
I know for certain Marc is working on it, and the solution is WIP, I think we should prevent adding more churn to pci_sys_data, since I managed to remove most of the dependencies (domain, mem_offset).
Thanks for cleaning up the domain and mem_offset. I saw Marc's irq/msi_domain patch series (http://git.kernel.org/cgit/linux/kernel/git/maz/arm-platforms.git/log/?h=irq/msi_domain). My understanding is that deals with associating the newly introduced msi_domain to each device, which replaces the need for pci_bus->msi and hw_pci->msi_ctrl when configure with CONFIG_PCI_MSI_IRQ_DOMAIN (not sure if this would be the plan for all arm32). For ARM32, if not define CONFIG_PCI_MSI_IRQ_DOMAIN, it would still fall back to using the [pci_sys_data|hw_pci]->msi_ctrl. However, I noticed that the hw_pci->msi_controller is not even used for the pci-host-generic. So, this should not be blocking the work to free pci-host-generic from pci_sys_data and hw_pci, as the MSI stuff can go in separately. Am I missing something?
So to sum it up, to have a generic host controller driver for ARM32/64 we just need to work out how to handle the MSI data, patches will be on the lists shortly to handle that, please review. Thanks, Lorenzo
Thanks for the update and the summary. I'll help review/test the MSI patch once posted. Thanks, Suravee