All of lore.kernel.org
 help / color / mirror / Atom feed
From: Hanjun Guo <hanjun.guo@linaro.org>
To: Jiang Liu <jiang.liu@linux.intel.com>,
	"Rafael J . Wysocki" <rjw@rjwysocki.net>,
	Bjorn Helgaas <bhelgaas@google.com>,
	Marc Zyngier <marc.zyngier@arm.com>,
	Yijing Wang <wangyijing@huawei.com>, Len Brown <lenb@kernel.org>
Cc: Lv Zheng <lv.zheng@intel.com>,
	LKML <linux-kernel@vger.kernel.org>,
	linux-pci@vger.kernel.org, linux-acpi@vger.kernel.org,
	"x86 @ kernel . org" <x86@kernel.org>,
	linux-arm-kernel@lists.infradead.org
Subject: Re: [RFC v2 5/7] PCI/ACPI: Consolidate common PCI host bridge code into ACPI core
Date: Wed, 13 May 2015 17:29:11 +0800	[thread overview]
Message-ID: <55531967.70507@linaro.org> (raw)
In-Reply-To: <1430793970-11159-6-git-send-email-jiang.liu@linux.intel.com>

Hi Jiang,

On 2015年05月05日 10:46, Jiang Liu wrote:
> Introduce common interface acpi_pci_root_create() and related data
> structures to create PCI root bus for ACPI PCI host bridges. It will
> be used to kill duplicated arch specific code for IA64 and x86. It may
> also help ARM64 in future.
>
[...]
> diff --git a/include/linux/pci-acpi.h b/include/linux/pci-acpi.h
> index a965efa52152..a292ee33d74b 100644
> --- a/include/linux/pci-acpi.h
> +++ b/include/linux/pci-acpi.h
> @@ -52,6 +52,30 @@ static inline acpi_handle acpi_pci_get_bridge_handle(struct pci_bus *pbus)
>   	return ACPI_HANDLE(dev);
>   }
>
> +struct acpi_pci_root;
> +struct acpi_pci_root_ops;
> +
> +struct acpi_pci_root_info_common {
> +	struct pci_controller		controller;

There is another problem that this patch will lead to
compile error on ARM64 since ARM64 has basic ACPI support
in 4.1.

struct pci_controller		controller is not available
on ARM64, that's the reason why compile errors happens on ARM64.

How about move struct pci_controller to this head file?

because all the related file you changed in this patch set
are only compiled when CONFI_ACPI=y, so for x86,

struct pci_controller {
#ifdef CONFIG_ACPI
         struct acpi_device *companion;  /* ACPI companion device */
#endif
#ifdef CONFIG_X86_64
         void            *iommu;         /* IOMMU private data */
#endif
         int             segment;        /* PCI domain */
         int             node;           /* NUMA node */
};

I'm sure #ifdef CONFIG_ACPI .. #endif can be removed
with no harm, and for *iommu, we can remove the #ifdef CONFIG_X86_64
with introducing little more memory on x86_32, after
that, the struct pci_controller is almost the same as ia64:

struct pci_controller {
         struct acpi_device *companion;
         void *iommu;
         int segment;
         int node;               /* nearest node with memory or 
NUMA_NO_NODE for global allocation */

         void *platform_data;
};

except void *platform_data;

On ARM64, the structure is almost the same, so how about
introduce

struct pci_controller {
         struct acpi_device *companion;  /* ACPI companion device */
         void            *iommu;         /* IOMMU private data */
         int             segment;        /* PCI domain */
         int             node;           /* NUMA node */
#ifdef CONFIG_IA64	
	void *platform_data;
#endif
};

in this file, then can be used for all architectures?

Thanks
Hanjun

WARNING: multiple messages have this Message-ID (diff)
From: hanjun.guo@linaro.org (Hanjun Guo)
To: linux-arm-kernel@lists.infradead.org
Subject: [RFC v2 5/7] PCI/ACPI: Consolidate common PCI host bridge code into ACPI core
Date: Wed, 13 May 2015 17:29:11 +0800	[thread overview]
Message-ID: <55531967.70507@linaro.org> (raw)
In-Reply-To: <1430793970-11159-6-git-send-email-jiang.liu@linux.intel.com>

Hi Jiang,

On 2015?05?05? 10:46, Jiang Liu wrote:
> Introduce common interface acpi_pci_root_create() and related data
> structures to create PCI root bus for ACPI PCI host bridges. It will
> be used to kill duplicated arch specific code for IA64 and x86. It may
> also help ARM64 in future.
>
[...]
> diff --git a/include/linux/pci-acpi.h b/include/linux/pci-acpi.h
> index a965efa52152..a292ee33d74b 100644
> --- a/include/linux/pci-acpi.h
> +++ b/include/linux/pci-acpi.h
> @@ -52,6 +52,30 @@ static inline acpi_handle acpi_pci_get_bridge_handle(struct pci_bus *pbus)
>   	return ACPI_HANDLE(dev);
>   }
>
> +struct acpi_pci_root;
> +struct acpi_pci_root_ops;
> +
> +struct acpi_pci_root_info_common {
> +	struct pci_controller		controller;

There is another problem that this patch will lead to
compile error on ARM64 since ARM64 has basic ACPI support
in 4.1.

struct pci_controller		controller is not available
on ARM64, that's the reason why compile errors happens on ARM64.

How about move struct pci_controller to this head file?

because all the related file you changed in this patch set
are only compiled when CONFI_ACPI=y, so for x86,

struct pci_controller {
#ifdef CONFIG_ACPI
         struct acpi_device *companion;  /* ACPI companion device */
#endif
#ifdef CONFIG_X86_64
         void            *iommu;         /* IOMMU private data */
#endif
         int             segment;        /* PCI domain */
         int             node;           /* NUMA node */
};

I'm sure #ifdef CONFIG_ACPI .. #endif can be removed
with no harm, and for *iommu, we can remove the #ifdef CONFIG_X86_64
with introducing little more memory on x86_32, after
that, the struct pci_controller is almost the same as ia64:

struct pci_controller {
         struct acpi_device *companion;
         void *iommu;
         int segment;
         int node;               /* nearest node with memory or 
NUMA_NO_NODE for global allocation */

         void *platform_data;
};

except void *platform_data;

On ARM64, the structure is almost the same, so how about
introduce

struct pci_controller {
         struct acpi_device *companion;  /* ACPI companion device */
         void            *iommu;         /* IOMMU private data */
         int             segment;        /* PCI domain */
         int             node;           /* NUMA node */
#ifdef CONFIG_IA64	
	void *platform_data;
#endif
};

in this file, then can be used for all architectures?

Thanks
Hanjun

  parent reply	other threads:[~2015-05-13  9:29 UTC|newest]

Thread overview: 51+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-05-05  2:46 [RFC v2 0/7] Consolidate ACPI PCI root common code into ACPI core Jiang Liu
2015-05-05  2:46 ` Jiang Liu
2015-05-05  2:46 ` [RFC v2 1/7] ACPI/PCI: Enhance ACPI core to support sparse IO space Jiang Liu
2015-05-05  2:46   ` Jiang Liu
2015-05-11 13:01   ` Hanjun Guo
2015-05-11 13:01     ` Hanjun Guo
2015-05-11 13:01     ` Hanjun Guo
2015-05-05  2:46 ` [RFC v2 2/7] ia64/PCI/ACPI: Use common ACPI resource parsing interface for host bridge Jiang Liu
2015-05-05  2:46   ` Jiang Liu
2015-05-05  2:46   ` Jiang Liu
2015-05-11 13:04   ` Hanjun Guo
2015-05-11 13:04     ` Hanjun Guo
2015-05-11 13:04     ` Hanjun Guo
2015-05-05  2:46 ` [RFC v2 3/7] ia64/PCI: Use common struct resource_entry to replace struct iospace_resource Jiang Liu
2015-05-05  2:46   ` Jiang Liu
2015-05-05  2:46   ` Jiang Liu
2015-05-05  2:46   ` Jiang Liu
2015-05-05  2:46 ` [RFC v2 4/7] x86/PCI: Rename struct pci_sysdata as struct pci_controller Jiang Liu
2015-05-05  2:46   ` Jiang Liu
2015-05-05  2:46 ` [RFC v2 5/7] PCI/ACPI: Consolidate common PCI host bridge code into ACPI core Jiang Liu
2015-05-05  2:46   ` Jiang Liu
2015-05-11 13:36   ` Hanjun Guo
2015-05-11 13:36     ` Hanjun Guo
2015-05-11 13:36     ` Hanjun Guo
2015-05-13  5:36     ` Jiang Liu
2015-05-13  5:36       ` Jiang Liu
2015-05-13  5:36       ` Jiang Liu
2015-05-13  9:29   ` Hanjun Guo [this message]
2015-05-13  9:29     ` Hanjun Guo
2015-05-13 12:24     ` Jiang Liu
2015-05-13 12:24       ` Jiang Liu
2015-05-13 13:25       ` Hanjun Guo
2015-05-13 13:25         ` Hanjun Guo
2015-05-14  1:09         ` Jiang Liu
2015-05-14  1:09           ` Jiang Liu
2015-05-14  4:05           ` Hanjun Guo
2015-05-14  4:05             ` Hanjun Guo
2015-05-14  4:42             ` Jiang Liu
2015-05-14  4:42               ` Jiang Liu
2015-05-14  4:42               ` Jiang Liu
2015-05-05  2:46 ` [RFC v2 6/7] x86/PCI/ACPI: Use common interface to support PCI host bridge Jiang Liu
2015-05-05  2:46   ` Jiang Liu
2015-05-12 12:19   ` Hanjun Guo
2015-05-12 12:19     ` Hanjun Guo
2015-05-13  5:38     ` Jiang Liu
2015-05-13  5:38       ` Jiang Liu
2015-05-05  2:46 ` [RFC v2 7/7] ia64/PCI/ACPI: " Jiang Liu
2015-05-05  2:46   ` Jiang Liu
2015-05-05  2:46   ` Jiang Liu
2015-05-05  3:10 ` [RFC v2 0/7] Consolidate ACPI PCI root common code into ACPI core Hanjun Guo
2015-05-05  3:10   ` Hanjun Guo

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=55531967.70507@linaro.org \
    --to=hanjun.guo@linaro.org \
    --cc=bhelgaas@google.com \
    --cc=jiang.liu@linux.intel.com \
    --cc=lenb@kernel.org \
    --cc=linux-acpi@vger.kernel.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pci@vger.kernel.org \
    --cc=lv.zheng@intel.com \
    --cc=marc.zyngier@arm.com \
    --cc=rjw@rjwysocki.net \
    --cc=wangyijing@huawei.com \
    --cc=x86@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.