All of lore.kernel.org
 help / color / mirror / Atom feed
From: Hanjun Guo <hanjun.guo@linaro.org>
To: Boris Ostrovsky <boris.ostrovsky@oracle.com>,
	Tomasz Nowicki <tomasz.nowicki@linaro.org>,
	Bjorn Helgaas <bhelgaas@google.com>,
	Arnd Bergmann <arnd@arndb.de>,
	Catalin Marinas <catalin.marinas@arm.com>,
	Will Deacon <will.deacon@arm.com>,
	"Rafael J. Wysocki" <rjw@rjwysocki.net>
Cc: Jiang Liu <jiang.liu@linux.intel.com>,
	Liviu Dudau <Liviu.Dudau@arm.com>,
	Thomas Gleixner <tglx@linutronix.de>,
	Yijing Wang <wangyijing@huawei.com>,
	Lorenzo Pieralisi <Lorenzo.Pieralisi@arm.com>,
	Suravee Suthikulpanit <Suravee.Suthikulpanit@amd.com>,
	Mark Salter <msalter@redhat.com>,
	linux-pci@vger.kernel.org, linux-arm-kernel@lists.infradead.org,
	linux-acpi@vger.kernel.org, linux-kernel@vger.kernel.org,
	linaro-acpi@lists.linaro.org,
	Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>,
	Stefano Stabellini <Stefano.Stabellini@eu.citrix.com>
Subject: Re: [PATCH 10/11] XEN / PCI: Remove the dependence on arch x86 when PCI_MMCONFIG=y
Date: Wed, 27 May 2015 11:55:45 +0800	[thread overview]
Message-ID: <55654041.2040902@linaro.org> (raw)
In-Reply-To: <556494D9.9090007@oracle.com>

On 2015年05月26日 23:44, Boris Ostrovsky wrote:
> On 05/26/2015 10:54 AM, Tomasz Nowicki wrote:
>> On 26.05.2015 16:00, Boris Ostrovsky wrote:
>>> On 05/26/2015 09:54 AM, Boris Ostrovsky wrote:
>>>> On 05/26/2015 08:49 AM, Hanjun Guo wrote:
>>>>> In drivers/xen/pci.c, there are arch x86 dependent codes when
>>>>> CONFIG_PCI_MMCONFIG is enabled, since CONFIG_PCI_MMCONFIG
>>>>> depends on ACPI, so this will prevent XEN PCI running on other
>>>>> architectures using ACPI with PCI_MMCONFIG enabled (such as ARM64).
>>>>>
>>>>> Fortunatly, it can be sloved in a simple way. In drivers/xen/pci.c,
>>>>> the only x86 dependent code is if ((pci_probe & PCI_PROBE_MMCONF) ==
>>>>> 0),
>>>>> and it's defined in asm/pci_x86.h, the code means that
>>>>> if the PCI resource is not probed in PCI_PROBE_MMCONF way, just
>>>>> ingnore the xen mcfg init. Actually this is duplicate, because
>>>>> if PCI resource is not probed in PCI_PROBE_MMCONF way, the
>>>>> pci_mmconfig_list will be empty, and the if (list_empty())
>>>>> after it will do the same job.
>>>>>
>>>>> So just remove the arch related code and the head file, this
>>>>> will be no functional change for x86, and also makes xen/pci.c
>>>>> usable for other architectures.
>>>>>
>>>>> Signed-off-by: Hanjun Guo <hanjun.guo@linaro.org>
>>>>> CC: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
>>>>> CC: Boris Ostrovsky <boris.ostrovsky@oracle.com>
>>>>> ---
>>>>>   drivers/xen/pci.c | 6 ------
>>>>>   1 file changed, 6 deletions(-)
>>>>>
>>>>> diff --git a/drivers/xen/pci.c b/drivers/xen/pci.c
>>>>> index 6785ebb..9a8dbe3 100644
>>>>> --- a/drivers/xen/pci.c
>>>>> +++ b/drivers/xen/pci.c
>>>>> @@ -28,9 +28,6 @@
>>>>>   #include <asm/xen/hypervisor.h>
>>>>>   #include <asm/xen/hypercall.h>
>>>>>   #include "../pci/pci.h"
>>>>> -#ifdef CONFIG_PCI_MMCONFIG
>>>>> -#include <asm/pci_x86.h>
>>>>> -#endif
>>>>>
>>>>>   static bool __read_mostly pci_seg_supported = true;
>>>>>
>>>>> @@ -222,9 +219,6 @@ static int __init xen_mcfg_late(void)
>>>>>       if (!xen_initial_domain())
>>>>>           return 0;
>>>>>
>>>>> -    if ((pci_probe & PCI_PROBE_MMCONF) == 0)
>>>>> -        return 0;
>>>>> -
>>>>>       if (list_empty(&pci_mmcfg_list))
>>>>>           return 0;
>>>>>
>>>>
>>>> (+Stefano who is Xen ARM maintainer)
>>>>
>>>> This will not build on x86 since pci_mmcfg_list since, for example,
>>>> pci_mmcfg_list is declared in pci_x86.h.
>>>
>>>
>>> And now really with Stefano and with parsable first sentence, sorry:
>>>
>>>
>>> This will not build on x86 since pci_mmcfg_list, for example, is
>>> declared in pci_x86.h.
>>
>> With this patch set, not any more. Please see preceding patches.
>
>
> OK, I didn't notice this was part of a series.

Sorry, I didn't cc you all of those patches.

>
> Then if not having PCI_PROBE_MMCONF bit set is indeed equivalent to
> list_empty(&pci_mmcfg_list), is there any reason for this flag to
> (continue to) exist? (and also for pci_mmcfg_arch_init_failed.)

I think PCI_PROBE_MMCONF bit is needed for early init of pci mmconfig in
the x86 arch related code, but for xen_mcfg_late(), it's called after
acpi_init() which the mmconfig is ready for use if it's available (the
pci_mmcfg_list is empty or not), so not having PCI_PROBE_MMCONF bit set
is equivalent list_empty(&pci_mmcfg_list) is not suitable for all cases,
but I think it will be ok after mmconfig is initialized.

I think my change log is misleading and needs updating :)

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: [PATCH 10/11] XEN / PCI: Remove the dependence on arch x86 when PCI_MMCONFIG=y
Date: Wed, 27 May 2015 11:55:45 +0800	[thread overview]
Message-ID: <55654041.2040902@linaro.org> (raw)
In-Reply-To: <556494D9.9090007@oracle.com>

On 2015?05?26? 23:44, Boris Ostrovsky wrote:
> On 05/26/2015 10:54 AM, Tomasz Nowicki wrote:
>> On 26.05.2015 16:00, Boris Ostrovsky wrote:
>>> On 05/26/2015 09:54 AM, Boris Ostrovsky wrote:
>>>> On 05/26/2015 08:49 AM, Hanjun Guo wrote:
>>>>> In drivers/xen/pci.c, there are arch x86 dependent codes when
>>>>> CONFIG_PCI_MMCONFIG is enabled, since CONFIG_PCI_MMCONFIG
>>>>> depends on ACPI, so this will prevent XEN PCI running on other
>>>>> architectures using ACPI with PCI_MMCONFIG enabled (such as ARM64).
>>>>>
>>>>> Fortunatly, it can be sloved in a simple way. In drivers/xen/pci.c,
>>>>> the only x86 dependent code is if ((pci_probe & PCI_PROBE_MMCONF) ==
>>>>> 0),
>>>>> and it's defined in asm/pci_x86.h, the code means that
>>>>> if the PCI resource is not probed in PCI_PROBE_MMCONF way, just
>>>>> ingnore the xen mcfg init. Actually this is duplicate, because
>>>>> if PCI resource is not probed in PCI_PROBE_MMCONF way, the
>>>>> pci_mmconfig_list will be empty, and the if (list_empty())
>>>>> after it will do the same job.
>>>>>
>>>>> So just remove the arch related code and the head file, this
>>>>> will be no functional change for x86, and also makes xen/pci.c
>>>>> usable for other architectures.
>>>>>
>>>>> Signed-off-by: Hanjun Guo <hanjun.guo@linaro.org>
>>>>> CC: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
>>>>> CC: Boris Ostrovsky <boris.ostrovsky@oracle.com>
>>>>> ---
>>>>>   drivers/xen/pci.c | 6 ------
>>>>>   1 file changed, 6 deletions(-)
>>>>>
>>>>> diff --git a/drivers/xen/pci.c b/drivers/xen/pci.c
>>>>> index 6785ebb..9a8dbe3 100644
>>>>> --- a/drivers/xen/pci.c
>>>>> +++ b/drivers/xen/pci.c
>>>>> @@ -28,9 +28,6 @@
>>>>>   #include <asm/xen/hypervisor.h>
>>>>>   #include <asm/xen/hypercall.h>
>>>>>   #include "../pci/pci.h"
>>>>> -#ifdef CONFIG_PCI_MMCONFIG
>>>>> -#include <asm/pci_x86.h>
>>>>> -#endif
>>>>>
>>>>>   static bool __read_mostly pci_seg_supported = true;
>>>>>
>>>>> @@ -222,9 +219,6 @@ static int __init xen_mcfg_late(void)
>>>>>       if (!xen_initial_domain())
>>>>>           return 0;
>>>>>
>>>>> -    if ((pci_probe & PCI_PROBE_MMCONF) == 0)
>>>>> -        return 0;
>>>>> -
>>>>>       if (list_empty(&pci_mmcfg_list))
>>>>>           return 0;
>>>>>
>>>>
>>>> (+Stefano who is Xen ARM maintainer)
>>>>
>>>> This will not build on x86 since pci_mmcfg_list since, for example,
>>>> pci_mmcfg_list is declared in pci_x86.h.
>>>
>>>
>>> And now really with Stefano and with parsable first sentence, sorry:
>>>
>>>
>>> This will not build on x86 since pci_mmcfg_list, for example, is
>>> declared in pci_x86.h.
>>
>> With this patch set, not any more. Please see preceding patches.
>
>
> OK, I didn't notice this was part of a series.

Sorry, I didn't cc you all of those patches.

>
> Then if not having PCI_PROBE_MMCONF bit set is indeed equivalent to
> list_empty(&pci_mmcfg_list), is there any reason for this flag to
> (continue to) exist? (and also for pci_mmcfg_arch_init_failed.)

I think PCI_PROBE_MMCONF bit is needed for early init of pci mmconfig in
the x86 arch related code, but for xen_mcfg_late(), it's called after
acpi_init() which the mmconfig is ready for use if it's available (the
pci_mmcfg_list is empty or not), so not having PCI_PROBE_MMCONF bit set
is equivalent list_empty(&pci_mmcfg_list) is not suitable for all cases,
but I think it will be ok after mmconfig is initialized.

I think my change log is misleading and needs updating :)

Thanks
Hanjun

  reply	other threads:[~2015-05-27  3:55 UTC|newest]

Thread overview: 175+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-05-26 12:49 [PATCH 00/11] ARM64 PCI hostbridge init based on ACPI Hanjun Guo
2015-05-26 12:49 ` Hanjun Guo
2015-05-26 12:49 ` Hanjun Guo
2015-05-26 12:49 ` [PATCH 01/11] ARM64 / PCI: introduce struct pci_controller for ACPI Hanjun Guo
2015-05-26 12:49   ` Hanjun Guo
2015-05-26 12:49   ` Hanjun Guo
2015-05-26 16:58   ` Liviu Dudau
2015-05-26 16:58     ` Liviu Dudau
2015-05-26 16:58     ` Liviu Dudau
2015-05-26 16:58     ` Liviu Dudau
2015-05-26 17:20     ` Jiang Liu
2015-05-26 17:20       ` Jiang Liu
2015-05-26 17:20       ` Jiang Liu
2015-05-27  8:21       ` Hanjun Guo
2015-05-27  8:21         ` Hanjun Guo
2015-05-27  8:21         ` Hanjun Guo
2015-09-07  4:14         ` Ganapatrao Kulkarni
2015-09-07  4:14           ` Ganapatrao Kulkarni
2015-09-07  4:14           ` Ganapatrao Kulkarni
2015-09-07  8:45           ` Lorenzo Pieralisi
2015-09-07  8:45             ` Lorenzo Pieralisi
2015-09-07  8:45             ` Lorenzo Pieralisi
2015-09-08 13:35             ` Hanjun Guo
2015-09-08 13:35               ` Hanjun Guo
2015-09-08 13:35               ` Hanjun Guo
2015-05-27  9:47       ` Liviu Dudau
2015-05-27  9:47         ` Liviu Dudau
2015-05-27  9:47         ` Liviu Dudau
2015-05-27  9:47         ` Liviu Dudau
2015-05-27 11:29         ` Jiang Liu
2015-05-27 11:29           ` Jiang Liu
2015-05-27 11:29           ` Jiang Liu
2015-05-26 12:49 ` [PATCH 02/11] x86, pci: Clean up comment about buggy MMIO config space access for AMD Fam10h CPUs Hanjun Guo
2015-05-26 12:49   ` Hanjun Guo
2015-05-26 12:49   ` Hanjun Guo
2015-08-31 12:04   ` Tomasz Nowicki
2015-08-31 12:04     ` Tomasz Nowicki
2015-05-26 12:49 ` [PATCH 03/11] x86, pci: Abstract PCI config accessors and use AMD Fam10h workaround exclusively Hanjun Guo
2015-05-26 12:49   ` Hanjun Guo
2015-05-26 12:49   ` Hanjun Guo
2015-05-26 12:49 ` [PATCH 04/11] x86, pci: Reorder logic of pci_mmconfig_insert() function Hanjun Guo
2015-05-26 12:49   ` Hanjun Guo
2015-05-26 12:49   ` Hanjun Guo
2015-05-26 12:49 ` [PATCH 05/11] x86, pci, acpi: Move arch-agnostic MMCONFIG (aka ECAM) and ACPI code out of arch/x86/ directory Hanjun Guo
2015-05-26 12:49   ` Hanjun Guo
2015-05-26 12:49   ` Hanjun Guo
2015-05-26 17:08   ` Will Deacon
2015-05-26 17:08     ` Will Deacon
2015-05-26 17:08     ` Will Deacon
2015-05-27  8:06     ` Tomasz Nowicki
2015-05-27  8:06       ` Tomasz Nowicki
2015-05-27  8:06       ` Tomasz Nowicki
2015-06-02 13:32       ` Lorenzo Pieralisi
2015-06-02 13:32         ` Lorenzo Pieralisi
2015-06-02 13:32         ` Lorenzo Pieralisi
2015-06-04  9:28         ` Hanjun Guo
2015-06-04  9:28           ` Hanjun Guo
2015-06-04  9:28           ` Hanjun Guo
2015-06-04 10:22           ` Lorenzo Pieralisi
2015-06-04 10:22             ` Lorenzo Pieralisi
2015-06-04 10:22             ` Lorenzo Pieralisi
2015-06-04 12:28             ` Hanjun Guo
2015-06-04 12:28               ` Hanjun Guo
2015-06-04 12:28               ` Hanjun Guo
2015-06-04 12:28               ` Hanjun Guo
2015-06-08  2:57               ` Hanjun Guo
2015-06-08  2:57                 ` Hanjun Guo
2015-06-08  2:57                 ` Hanjun Guo
2015-06-08  2:57                 ` Hanjun Guo
2015-06-08 15:14                 ` Lorenzo Pieralisi
2015-06-08 15:14                   ` Lorenzo Pieralisi
2015-06-08 15:14                   ` Lorenzo Pieralisi
2015-08-31 11:01                   ` Tomasz Nowicki
2015-08-31 11:01                     ` Tomasz Nowicki
2015-08-31 11:01                     ` Tomasz Nowicki
2015-09-07  9:59                     ` Tomasz Nowicki
2015-09-07  9:59                       ` Tomasz Nowicki
2015-09-07  9:59                       ` Tomasz Nowicki
2015-09-08 15:07                       ` Lorenzo Pieralisi
2015-09-08 15:07                         ` Lorenzo Pieralisi
2015-09-08 15:07                         ` Lorenzo Pieralisi
2015-09-09 13:47                         ` Tomasz Nowicki
2015-09-09 13:47                           ` Tomasz Nowicki
2015-09-09 13:47                           ` Tomasz Nowicki
2015-09-09 13:47                           ` Tomasz Nowicki
2015-09-11 11:20                           ` Lorenzo Pieralisi
2015-09-11 11:20                             ` Lorenzo Pieralisi
2015-09-11 11:20                             ` Lorenzo Pieralisi
2015-09-11 12:35                             ` Tomasz Nowicki
2015-09-11 12:35                               ` Tomasz Nowicki
2015-09-11 12:35                               ` Tomasz Nowicki
2015-09-14  9:37                               ` Lorenzo Pieralisi
2015-09-14  9:37                                 ` Lorenzo Pieralisi
2015-09-14  9:37                                 ` Lorenzo Pieralisi
2015-09-14 11:34                                 ` Tomasz Nowicki
2015-09-14 11:34                                   ` Tomasz Nowicki
2015-09-14 11:34                                   ` Tomasz Nowicki
2015-09-14 14:55                             ` Tomasz Nowicki
2015-09-14 14:55                               ` Tomasz Nowicki
2015-09-14 14:55                               ` Tomasz Nowicki
2015-09-25 16:02                               ` Tomasz Nowicki
2015-09-25 16:02                                 ` Tomasz Nowicki
2015-09-25 16:02                                 ` Tomasz Nowicki
2015-09-25 16:19                                 ` Lorenzo Pieralisi
2015-09-25 16:19                                   ` Lorenzo Pieralisi
2015-09-25 16:19                                   ` Lorenzo Pieralisi
2015-10-15 13:22                               ` Lorenzo Pieralisi
2015-10-15 13:22                                 ` Lorenzo Pieralisi
2015-10-15 13:22                                 ` Lorenzo Pieralisi
2015-10-15 14:34                                 ` Tomasz Nowicki
2015-10-15 14:34                                   ` Tomasz Nowicki
2015-10-15 14:34                                   ` Tomasz Nowicki
2015-10-15 16:26                                   ` Marc Zyngier
2015-10-15 16:26                                     ` Marc Zyngier
2015-10-15 16:26                                     ` Marc Zyngier
2015-10-15 18:51                                     ` Tomasz Nowicki
2015-10-15 18:51                                       ` Tomasz Nowicki
2015-10-15 18:51                                       ` Tomasz Nowicki
2015-05-26 12:49 ` [PATCH 06/11] pci, acpi, mcfg: Provide generic implementation of MCFG code initialization Hanjun Guo
2015-05-26 12:49   ` Hanjun Guo
2015-05-26 12:49   ` Hanjun Guo
2015-05-26 12:49 ` [PATCH 07/11] x86, pci: mmconfig_{32, 64}.c code refactoring - remove code duplication Hanjun Guo
2015-05-26 12:49   ` Hanjun Guo
2015-05-26 12:49   ` [PATCH 07/11] x86, pci: mmconfig_{32,64}.c " Hanjun Guo
2015-05-26 12:49 ` [PATCH 08/11] x86, pci, ecam: mmconfig_64.c becomes default implementation for ECAM driver Hanjun Guo
2015-05-26 12:49   ` Hanjun Guo
2015-05-26 12:49   ` Hanjun Guo
2015-05-26 12:49 ` [PATCH 09/11] pci, acpi, mcfg: Share ACPI PCI config space accessors Hanjun Guo
2015-05-26 12:49   ` Hanjun Guo
2015-05-26 12:49   ` Hanjun Guo
2015-05-26 12:49 ` [PATCH 10/11] XEN / PCI: Remove the dependence on arch x86 when PCI_MMCONFIG=y Hanjun Guo
2015-05-26 12:49   ` Hanjun Guo
2015-05-26 12:49   ` Hanjun Guo
2015-05-26 13:54   ` Boris Ostrovsky
2015-05-26 13:54     ` Boris Ostrovsky
2015-05-26 14:00     ` Boris Ostrovsky
2015-05-26 14:00       ` Boris Ostrovsky
2015-05-26 14:54       ` Tomasz Nowicki
2015-05-26 14:54         ` Tomasz Nowicki
2015-05-26 15:44         ` Boris Ostrovsky
2015-05-26 15:44           ` Boris Ostrovsky
2015-05-27  3:55           ` Hanjun Guo [this message]
2015-05-27  3:55             ` Hanjun Guo
2015-05-26 12:49 ` [PATCH 11/11] ARM64 / PCI / ACPI: support for ACPI based PCI hostbridge init Hanjun Guo
2015-05-26 12:49   ` Hanjun Guo
2015-05-26 12:49   ` Hanjun Guo
2015-05-26 15:12   ` Tomasz Nowicki
2015-05-26 15:12     ` Tomasz Nowicki
2015-05-27  7:31     ` Hanjun Guo
2015-05-27  7:31       ` Hanjun Guo
2015-05-27  7:31       ` Hanjun Guo
2015-05-26 17:13   ` Will Deacon
2015-05-26 17:13     ` Will Deacon
2015-05-26 17:13     ` Will Deacon
2015-05-26 17:24     ` Jiang Liu
2015-05-26 17:24       ` Jiang Liu
2015-05-26 17:24       ` Jiang Liu
2015-05-27  0:30 ` [PATCH 00/11] ARM64 PCI hostbridge init based on ACPI Rafael J. Wysocki
2015-05-27  0:30   ` Rafael J. Wysocki
2015-05-27  3:57   ` Hanjun Guo
2015-05-27  3:57     ` Hanjun Guo
2015-06-08 12:05     ` Jagan Teki
2015-06-08 12:05       ` Jagan Teki
2015-06-08 12:05       ` Jagan Teki
2015-06-10  2:47       ` Hanjun Guo
2015-06-10  2:47         ` Hanjun Guo
2015-06-10  2:47         ` Hanjun Guo
2015-10-15 19:15 ` Jon Masters
2015-10-15 19:15   ` Jon Masters
2015-10-15 23:42   ` Hanjun Guo
2015-10-15 23:42     ` Hanjun Guo
2015-10-15 23:49     ` Jon Masters
2015-10-15 23:49       ` Jon Masters
2015-12-07 20:29 ` Bjorn Helgaas
2015-12-07 20:29   ` Bjorn Helgaas

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=55654041.2040902@linaro.org \
    --to=hanjun.guo@linaro.org \
    --cc=Liviu.Dudau@arm.com \
    --cc=Lorenzo.Pieralisi@arm.com \
    --cc=Stefano.Stabellini@eu.citrix.com \
    --cc=Suravee.Suthikulpanit@amd.com \
    --cc=arnd@arndb.de \
    --cc=bhelgaas@google.com \
    --cc=boris.ostrovsky@oracle.com \
    --cc=catalin.marinas@arm.com \
    --cc=jiang.liu@linux.intel.com \
    --cc=konrad.wilk@oracle.com \
    --cc=linaro-acpi@lists.linaro.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=msalter@redhat.com \
    --cc=rjw@rjwysocki.net \
    --cc=tglx@linutronix.de \
    --cc=tomasz.nowicki@linaro.org \
    --cc=wangyijing@huawei.com \
    --cc=will.deacon@arm.com \
    /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.