diff mbox

xen/pci: Don't build Xen pci code for ARM and ARM64

Message ID 1443447044-24985-1-git-send-email-julien.grall@citrix.com (mailing list archive)
State New, archived
Headers show

Commit Message

Julien Grall Sept. 28, 2015, 1:30 p.m. UTC
The PCI support for Xen doesn't compile on ARM/ARM64 when
CONFIG_PCI_MMCONFIG=y:

drivers/xen/pci.c:31:25: fatal error: asm/pci_x86.h: No such file or
directory
 #include <asm/pci_x86.h>

Although, Xen is not currently involved in PCI management for ARM/ARM64.
There is plan to support it, but it would require some changes in Linux
side.

For now, introduce a new config options XEN_PCI which will be turned off
for ARM platform.

Reported-by: Robert Richter <robert.richter@caviumnetworks.com>
Signed-off-by: Julien Grall <julien.grall@citrix.com>

---
Cc: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Cc: Boris Ostrovsky <boris.ostrovsky@oracle.com>
Cc: David Vrabel <david.vrabel@citrix.com>
---
 drivers/xen/Kconfig  | 6 +++++-
 drivers/xen/Makefile | 2 +-
 2 files changed, 6 insertions(+), 2 deletions(-)

Comments

Stefano Stabellini Sept. 28, 2015, 1:48 p.m. UTC | #1
On Mon, 28 Sep 2015, Julien Grall wrote:
> The PCI support for Xen doesn't compile on ARM/ARM64 when
> CONFIG_PCI_MMCONFIG=y:
> 
> drivers/xen/pci.c:31:25: fatal error: asm/pci_x86.h: No such file or
> directory
>  #include <asm/pci_x86.h>
> 
> Although, Xen is not currently involved in PCI management for ARM/ARM64.
> There is plan to support it, but it would require some changes in Linux
> side.
> 
> For now, introduce a new config options XEN_PCI which will be turned off
> for ARM platform.
> 
> Reported-by: Robert Richter <robert.richter@caviumnetworks.com>
> Signed-off-by: Julien Grall <julien.grall@citrix.com>
> 
> ---
> Cc: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
> Cc: Boris Ostrovsky <boris.ostrovsky@oracle.com>
> Cc: David Vrabel <david.vrabel@citrix.com>
> ---
>  drivers/xen/Kconfig  | 6 +++++-
>  drivers/xen/Makefile | 2 +-
>  2 files changed, 6 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/xen/Kconfig b/drivers/xen/Kconfig
> index 73708ac..6bcc8b0 100644
> --- a/drivers/xen/Kconfig
> +++ b/drivers/xen/Kconfig
> @@ -168,7 +168,7 @@ config XEN_TMEM
>  
>  config XEN_PCIDEV_BACKEND
>  	tristate "Xen PCI-device backend driver"
> -	depends on PCI && X86 && XEN
> +	depends on XEN_PCI
>  	depends on XEN_BACKEND
>  	default m
>  	help
> @@ -189,6 +189,10 @@ config XEN_PCIDEV_BACKEND
>  
>  	  If in doubt, say m.
>  
> +config XEN_PCI
> +	def_bool y
> +	depends on PCI && !ARM && !ARM64

This is confusing because x86 already has PCI_XEN, see arch/x86/Kconfig.
Just move PCI_XEN from arch/x86/Kconfig to here and disable it for ARM?


>  config XEN_SCSI_BACKEND
>  	tristate "XEN SCSI backend driver"
>  	depends on XEN && XEN_BACKEND && TARGET_CORE
> diff --git a/drivers/xen/Makefile b/drivers/xen/Makefile
> index e293bc5..c9f23b7 100644
> --- a/drivers/xen/Makefile
> +++ b/drivers/xen/Makefile
> @@ -11,7 +11,7 @@ CFLAGS_features.o			:= $(nostackp)
>  
>  CFLAGS_efi.o				+= -fshort-wchar
>  
> -dom0-$(CONFIG_PCI) += pci.o
> +dom0-$(CONFIG_XEN_PCI) += pci.o
>  dom0-$(CONFIG_USB_SUPPORT) += dbgp.o
>  dom0-$(CONFIG_XEN_ACPI) += acpi.o $(xen-pad-y)
>  xen-pad-$(CONFIG_X86) += xen-acpi-pad.o
> -- 
> 2.1.4
>
David Vrabel Sept. 28, 2015, 1:52 p.m. UTC | #2
On 28/09/15 14:30, Julien Grall wrote:
> The PCI support for Xen doesn't compile on ARM/ARM64 when
> CONFIG_PCI_MMCONFIG=y:
> 
> drivers/xen/pci.c:31:25: fatal error: asm/pci_x86.h: No such file or
> directory
>  #include <asm/pci_x86.h>
> 
> Although, Xen is not currently involved in PCI management for ARM/ARM64.
> There is plan to support it, but it would require some changes in Linux
> side.
> 
> For now, introduce a new config options XEN_PCI which will be turned off
> for ARM platform.

Since PCI_MMCONFIG isn't x86 specific and its use in drivers/xen/pci.c
is, can you fix this by changing to #ifdef CONFIG_X86?

David
Julien Grall Sept. 28, 2015, 1:59 p.m. UTC | #3
Hi David,

On 28/09/15 14:52, David Vrabel wrote:
> On 28/09/15 14:30, Julien Grall wrote:
>> The PCI support for Xen doesn't compile on ARM/ARM64 when
>> CONFIG_PCI_MMCONFIG=y:
>>
>> drivers/xen/pci.c:31:25: fatal error: asm/pci_x86.h: No such file or
>> directory
>>  #include <asm/pci_x86.h>
>>
>> Although, Xen is not currently involved in PCI management for ARM/ARM64.
>> There is plan to support it, but it would require some changes in Linux
>> side.
>>
>> For now, introduce a new config options XEN_PCI which will be turned off
>> for ARM platform.
> 
> Since PCI_MMCONFIG isn't x86 specific and its use in drivers/xen/pci.c
> is, can you fix this by changing to #ifdef CONFIG_X86?

Well, it may be possible that we need this code for ARM/ARM64.

From the origin thread [1], it wasn't clear what is the correct
solution. So I think that disabling the Xen PCI code for now is the
right solution.

Note, that it's still possible to use PCI in DOM0 on ARM64 platform
without this code.

Regards,

[1] https://lkml.org/lkml/2015/8/6/510
Julien Grall Sept. 28, 2015, 2:01 p.m. UTC | #4
On 28/09/15 14:48, Stefano Stabellini wrote:
> On Mon, 28 Sep 2015, Julien Grall wrote:
>> The PCI support for Xen doesn't compile on ARM/ARM64 when
>> CONFIG_PCI_MMCONFIG=y:
>>
>> drivers/xen/pci.c:31:25: fatal error: asm/pci_x86.h: No such file or
>> directory
>>  #include <asm/pci_x86.h>
>>
>> Although, Xen is not currently involved in PCI management for ARM/ARM64.
>> There is plan to support it, but it would require some changes in Linux
>> side.
>>
>> For now, introduce a new config options XEN_PCI which will be turned off
>> for ARM platform.
>>
>> Reported-by: Robert Richter <robert.richter@caviumnetworks.com>
>> Signed-off-by: Julien Grall <julien.grall@citrix.com>
>>
>> ---
>> Cc: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
>> Cc: Boris Ostrovsky <boris.ostrovsky@oracle.com>
>> Cc: David Vrabel <david.vrabel@citrix.com>
>> ---
>>  drivers/xen/Kconfig  | 6 +++++-
>>  drivers/xen/Makefile | 2 +-
>>  2 files changed, 6 insertions(+), 2 deletions(-)
>>
>> diff --git a/drivers/xen/Kconfig b/drivers/xen/Kconfig
>> index 73708ac..6bcc8b0 100644
>> --- a/drivers/xen/Kconfig
>> +++ b/drivers/xen/Kconfig
>> @@ -168,7 +168,7 @@ config XEN_TMEM
>>  
>>  config XEN_PCIDEV_BACKEND
>>  	tristate "Xen PCI-device backend driver"
>> -	depends on PCI && X86 && XEN
>> +	depends on XEN_PCI
>>  	depends on XEN_BACKEND
>>  	default m
>>  	help
>> @@ -189,6 +189,10 @@ config XEN_PCIDEV_BACKEND
>>  
>>  	  If in doubt, say m.
>>  
>> +config XEN_PCI
>> +	def_bool y
>> +	depends on PCI && !ARM && !ARM64
> 
> This is confusing because x86 already has PCI_XEN, see arch/x86/Kconfig.
> Just move PCI_XEN from arch/x86/Kconfig to here and disable it for ARM?

PCI_XEN enables SWIOTLB. Do we really want the same dependencies for any
architecture?

Regards,
Boris Ostrovsky Sept. 28, 2015, 2:02 p.m. UTC | #5
On 09/28/2015 09:59 AM, Julien Grall wrote:
> Hi David,
>
> On 28/09/15 14:52, David Vrabel wrote:
>> On 28/09/15 14:30, Julien Grall wrote:
>>> The PCI support for Xen doesn't compile on ARM/ARM64 when
>>> CONFIG_PCI_MMCONFIG=y:
>>>
>>> drivers/xen/pci.c:31:25: fatal error: asm/pci_x86.h: No such file or
>>> directory
>>>   #include <asm/pci_x86.h>
>>>
>>> Although, Xen is not currently involved in PCI management for ARM/ARM64.
>>> There is plan to support it, but it would require some changes in Linux
>>> side.
>>>
>>> For now, introduce a new config options XEN_PCI which will be turned off
>>> for ARM platform.
>> Since PCI_MMCONFIG isn't x86 specific and its use in drivers/xen/pci.c
>> is, can you fix this by changing to #ifdef CONFIG_X86?
> Well, it may be possible that we need this code for ARM/ARM64.
>
>  From the origin thread [1], it wasn't clear what is the correct
> solution. So I think that disabling the Xen PCI code for now is the
> right solution.
>
> Note, that it's still possible to use PCI in DOM0 on ARM64 platform
> without this code.
>
> Regards,
>
> [1] https://lkml.org/lkml/2015/8/6/510
>

Can we then implement Robert's proposals from that thread and have an 
arch function for pci_probe? It will be a nop on ARM. (I think that was 
the only problem here).

-boris
David Vrabel Sept. 28, 2015, 2:22 p.m. UTC | #6
On 28/09/15 15:02, Boris Ostrovsky wrote:
> On 09/28/2015 09:59 AM, Julien Grall wrote:
>> Hi David,
>>
>> On 28/09/15 14:52, David Vrabel wrote:
>>> On 28/09/15 14:30, Julien Grall wrote:
>>>> The PCI support for Xen doesn't compile on ARM/ARM64 when
>>>> CONFIG_PCI_MMCONFIG=y:
>>>>
>>>> drivers/xen/pci.c:31:25: fatal error: asm/pci_x86.h: No such file or
>>>> directory
>>>>   #include <asm/pci_x86.h>
>>>>
>>>> Although, Xen is not currently involved in PCI management for
>>>> ARM/ARM64.
>>>> There is plan to support it, but it would require some changes in Linux
>>>> side.
>>>>
>>>> For now, introduce a new config options XEN_PCI which will be turned
>>>> off
>>>> for ARM platform.
>>> Since PCI_MMCONFIG isn't x86 specific and its use in drivers/xen/pci.c
>>> is, can you fix this by changing to #ifdef CONFIG_X86?

This.

>> Well, it may be possible that we need this code for ARM/ARM64.
>>
>>  From the origin thread [1], it wasn't clear what is the correct
>> solution. So I think that disabling the Xen PCI code for now is the
>> right solution.
>>
>> Note, that it's still possible to use PCI in DOM0 on ARM64 platform
>> without this code.
>>
>> Regards,
>>
>> [1] https://lkml.org/lkml/2015/8/6/510
>>
> 
> Can we then implement Robert's proposals from that thread and have an
> arch function for pci_probe? It will be a nop on ARM. (I think that was
> the only problem here).

Or preferably this.

David
Julien Grall Sept. 28, 2015, 2:23 p.m. UTC | #7
On 28/09/15 15:02, Boris Ostrovsky wrote:
> On 09/28/2015 09:59 AM, Julien Grall wrote:
>> Hi David,
>>
>> On 28/09/15 14:52, David Vrabel wrote:
>>> On 28/09/15 14:30, Julien Grall wrote:
>>>> The PCI support for Xen doesn't compile on ARM/ARM64 when
>>>> CONFIG_PCI_MMCONFIG=y:
>>>>
>>>> drivers/xen/pci.c:31:25: fatal error: asm/pci_x86.h: No such file or
>>>> directory
>>>>   #include <asm/pci_x86.h>
>>>>
>>>> Although, Xen is not currently involved in PCI management for
>>>> ARM/ARM64.
>>>> There is plan to support it, but it would require some changes in Linux
>>>> side.
>>>>
>>>> For now, introduce a new config options XEN_PCI which will be turned
>>>> off
>>>> for ARM platform.
>>> Since PCI_MMCONFIG isn't x86 specific and its use in drivers/xen/pci.c
>>> is, can you fix this by changing to #ifdef CONFIG_X86?
>> Well, it may be possible that we need this code for ARM/ARM64.
>>
>>  From the origin thread [1], it wasn't clear what is the correct
>> solution. So I think that disabling the Xen PCI code for now is the
>> right solution.
>>
>> Note, that it's still possible to use PCI in DOM0 on ARM64 platform
>> without this code.
>>
>> Regards,
>>
>> [1] https://lkml.org/lkml/2015/8/6/510
>>
> 
> Can we then implement Robert's proposals from that thread and have an
> arch function for pci_probe? It will be a nop on ARM. (I think that was
> the only problem here).

Hmmmm. It looks like that the mmconfig is not yet supported upstream for
ARM64. So even with arch function for pci_probe so it won't work.

I hit the compilation issue on a 4.2 with patched applied for some
hardware enablement. Some of them if for mmconfig.

I should have check it before sending it. Sorry for the noise.

Regards,
diff mbox

Patch

diff --git a/drivers/xen/Kconfig b/drivers/xen/Kconfig
index 73708ac..6bcc8b0 100644
--- a/drivers/xen/Kconfig
+++ b/drivers/xen/Kconfig
@@ -168,7 +168,7 @@  config XEN_TMEM
 
 config XEN_PCIDEV_BACKEND
 	tristate "Xen PCI-device backend driver"
-	depends on PCI && X86 && XEN
+	depends on XEN_PCI
 	depends on XEN_BACKEND
 	default m
 	help
@@ -189,6 +189,10 @@  config XEN_PCIDEV_BACKEND
 
 	  If in doubt, say m.
 
+config XEN_PCI
+	def_bool y
+	depends on PCI && !ARM && !ARM64
+
 config XEN_SCSI_BACKEND
 	tristate "XEN SCSI backend driver"
 	depends on XEN && XEN_BACKEND && TARGET_CORE
diff --git a/drivers/xen/Makefile b/drivers/xen/Makefile
index e293bc5..c9f23b7 100644
--- a/drivers/xen/Makefile
+++ b/drivers/xen/Makefile
@@ -11,7 +11,7 @@  CFLAGS_features.o			:= $(nostackp)
 
 CFLAGS_efi.o				+= -fshort-wchar
 
-dom0-$(CONFIG_PCI) += pci.o
+dom0-$(CONFIG_XEN_PCI) += pci.o
 dom0-$(CONFIG_USB_SUPPORT) += dbgp.o
 dom0-$(CONFIG_XEN_ACPI) += acpi.o $(xen-pad-y)
 xen-pad-$(CONFIG_X86) += xen-acpi-pad.o