diff mbox

[V1,07/11] XEN / PCI: Remove the dependence on arch x86 when PCI_MMCONFIG=y

Message ID 1445963922-22711-8-git-send-email-tn@semihalf.com (mailing list archive)
State New, archived
Delegated to: Bjorn Helgaas
Headers show

Commit Message

Tomasz Nowicki Oct. 27, 2015, 4:38 p.m. UTC
From: Hanjun Guo <hanjun.guo@linaro.org>

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(-)

Comments

Tomasz Nowicki Oct. 27, 2015, 4:47 p.m. UTC | #1
+ Stefano

On 27.10.2015 17:38, Tomasz Nowicki wrote:
> From: Hanjun Guo <hanjun.guo@linaro.org>
>
> 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;
>
>
--
To unsubscribe from this list: send the line "unsubscribe linux-pci" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Boris Ostrovsky Oct. 27, 2015, 5:25 p.m. UTC | #2
On 10/27/2015 12:47 PM, Tomasz Nowicki wrote:
> + Stefano
>
> On 27.10.2015 17:38, Tomasz Nowicki wrote:
>> From: Hanjun Guo <hanjun.guo@linaro.org>
>>
>> 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

Assuming this still compiles on x86 now that this include file is removed

Reviewed-by: Boris Ostrovsky <boris.ostrovsky@oracle.com>

>>
>>   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;
>>
>>

--
To unsubscribe from this list: send the line "unsubscribe linux-pci" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Stefano Stabellini Oct. 28, 2015, 10:49 a.m. UTC | #3
On Tue, 27 Oct 2015, Boris Ostrovsky wrote:
> On 10/27/2015 12:47 PM, Tomasz Nowicki wrote:
> > + Stefano
> > 
> > On 27.10.2015 17:38, Tomasz Nowicki wrote:
> > > From: Hanjun Guo <hanjun.guo@linaro.org>
> > > 
> > > 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
> 
> Assuming this still compiles on x86 now that this include file is removed
> 
> Reviewed-by: Boris Ostrovsky <boris.ostrovsky@oracle.com>

I think it does not:

drivers/xen/pci.c: In function ‘xen_mcfg_late’:
drivers/xen/pci.c:221:18: error: ‘pci_mmcfg_list’ undeclared (first use in this function)
drivers/xen/pci.c:221:18: note: each undeclared identifier is reported only once for each f


> > > 
> > >   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;
> > > 
> > > 
>
Tomasz Nowicki Oct. 28, 2015, 10:56 a.m. UTC | #4
On 28.10.2015 11:49, Stefano Stabellini wrote:
> On Tue, 27 Oct 2015, Boris Ostrovsky wrote:
>> On 10/27/2015 12:47 PM, Tomasz Nowicki wrote:
>>> + Stefano
>>>
>>> On 27.10.2015 17:38, Tomasz Nowicki wrote:
>>>> From: Hanjun Guo <hanjun.guo@linaro.org>
>>>>
>>>> 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
>>
>> Assuming this still compiles on x86 now that this include file is removed
>>
>> Reviewed-by: Boris Ostrovsky <boris.ostrovsky@oracle.com>
>
> I think it does not:
>
> drivers/xen/pci.c: In function ‘xen_mcfg_late’:
> drivers/xen/pci.c:221:18: error: ‘pci_mmcfg_list’ undeclared (first use in this function)
> drivers/xen/pci.c:221:18: note: each undeclared identifier is reported only once for each f

Right, we need:
+#include <linux/ecam.h>

Will fix this in next version, thanks!

Tomasz

>
>
>>>>
>>>>    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;
>>>>
>>>>
--
To unsubscribe from this list: send the line "unsubscribe linux-pci" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Hanjun Guo Oct. 28, 2015, 1:45 p.m. UTC | #5
On 10/28/2015 06:56 PM, Tomasz Nowicki wrote:
> On 28.10.2015 11:49, Stefano Stabellini wrote:
>> On Tue, 27 Oct 2015, Boris Ostrovsky wrote:
>>> On 10/27/2015 12:47 PM, Tomasz Nowicki wrote:
>>>> + Stefano
>>>>
>>>> On 27.10.2015 17:38, Tomasz Nowicki wrote:
>>>>> From: Hanjun Guo <hanjun.guo@linaro.org>
>>>>>
>>>>> 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
>>>
>>> Assuming this still compiles on x86 now that this include file is
>>> removed
>>>
>>> Reviewed-by: Boris Ostrovsky <boris.ostrovsky@oracle.com>
>>
>> I think it does not:
>>
>> drivers/xen/pci.c: In function ‘xen_mcfg_late’:
>> drivers/xen/pci.c:221:18: error: ‘pci_mmcfg_list’ undeclared (first
>> use in this function)
>> drivers/xen/pci.c:221:18: note: each undeclared identifier is reported
>> only once for each f
>
> Right, we need:
> +#include <linux/ecam.h>
>
> Will fix this in next version, thanks!

Hmm, I think we just missed the head file, but the logic
of this patch is still right.

Thanks
Hanjun
--
To unsubscribe from this list: send the line "unsubscribe linux-pci" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Boris Ostrovsky Oct. 28, 2015, 2:07 p.m. UTC | #6
On 10/28/2015 09:45 AM, Hanjun Guo wrote:
> On 10/28/2015 06:56 PM, Tomasz Nowicki wrote:
>> On 28.10.2015 11:49, Stefano Stabellini wrote:
>>> On Tue, 27 Oct 2015, Boris Ostrovsky wrote:
>>>> On 10/27/2015 12:47 PM, Tomasz Nowicki wrote:
>>>>> + Stefano
>>>>>
>>>>> On 27.10.2015 17:38, Tomasz Nowicki wrote:
>>>>>> From: Hanjun Guo <hanjun.guo@linaro.org>
>>>>>>
>>>>>> 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
>>>>
>>>> Assuming this still compiles on x86 now that this include file is
>>>> removed
>>>>
>>>> Reviewed-by: Boris Ostrovsky <boris.ostrovsky@oracle.com>
>>>
>>> I think it does not:
>>>
>>> drivers/xen/pci.c: In function ‘xen_mcfg_late’:
>>> drivers/xen/pci.c:221:18: error: ‘pci_mmcfg_list’ undeclared (first
>>> use in this function)
>>> drivers/xen/pci.c:221:18: note: each undeclared identifier is reported
>>> only once for each f
>>
>> Right, we need:
>> +#include <linux/ecam.h>
>>
>> Will fix this in next version, thanks!
>
> Hmm, I think we just missed the head file, but the logic
> of this patch is still right.
>


Yes, removing the test should be safe.

-boris

--
To unsubscribe from this list: send the line "unsubscribe linux-pci" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

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;