Re: [RFC PATCH 09/16] PCI: Associate .get_msi_ctrl() with pci_host_bridge

Lorenzo Pieralisi
2014-11-17T15:03:48Z

On Mon, Nov 17, 2014 at 10:21:43AM +0000, Yijing Wang wrote:
> From: Yijing Wang <wangyijing0307@gmail.com>
>
> Signed-off-by: Yijing Wang <wangyijing@huawei.com>
> ---
> drivers/pci/host-bridge.c | 1 +
> include/linux/pci.h | 2 ++
> 2 files changed, 3 insertions(+), 0 deletions(-)
>
> diff --git a/drivers/pci/host-bridge.c b/drivers/pci/host-bridge.c
> index 49b6c21..872cae1 100644
> --- a/drivers/pci/host-bridge.c
> +++ b/drivers/pci/host-bridge.c
> @@ -58,6 +58,7 @@ struct pci_host_bridge *pci_create_host_bridge(
> host->dev.parent = parent;
> INIT_LIST_HEAD(&host->windows);
> host->dev.release = pci_release_host_bridge_dev;
> + host->get_msi_ctrl = info->get_msi_ctrl;
>
> /* this is hack, just for build, will be removed later*/
> b = kzalloc(sizeof(*b), GFP_KERNEL);
> diff --git a/include/linux/pci.h b/include/linux/pci.h
> index a51f5f5..af1ee86 100644
> --- a/include/linux/pci.h
> +++ b/include/linux/pci.h
> @@ -408,6 +408,7 @@ struct pci_host_bridge {
> int domain;
> void *sysdata;
> struct pci_ops *ops;
> + struct msi_controller *(*get_msi_ctrl)(struct pci_dev *pdev);
> void (*release_fn)(struct pci_host_bridge *);
> void *release_data;
> };
> @@ -416,6 +417,7 @@ struct pci_host_info {
> u8 res_type;
> void *arg;
> struct list_head *resources; /*just for build, will clean up later */
> + struct msi_controller *(*get_msi_ctrl)(struct pci_dev *pdev);
> int (*init_res)(struct pci_host_bridge *host,
> struct pci_host_info *info);
> };

Where would you use the get_msi_ctrl pointer then ? Wasn't it better
to wait for this patchset to take shape before adding more churn to
the ARM (and other archs) pci_sys_data structure and consequently add
another pcibios call to achieve what the get_msi_ctrl pointer is there to
achieve (ie making msi_controller retrieval arch independent ?)

I just do not see what the pci_sys_data intermediate step buys you if
we consider the approach taken in this patch as the proper solution.

Thanks,
Lorenzo