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

Lorenzo Pieralisi lorenzo.pieralisi at arm.com
Mon Nov 17 07:03:38 PST 2014


On Mon, Nov 17, 2014 at 10:21:43AM +0000, Yijing Wang wrote:
> From: Yijing Wang <wangyijing0307 at gmail.com>
> 
> Signed-off-by: Yijing Wang <wangyijing at 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




More information about the linux-arm-kernel mailing list