[PATCH 2/2] ppc/pnv: Fix PCI_EXPRESS dependency

Laurent Vivier posted 2 patches 6 years ago
Maintainers: Thomas Huth <thuth@redhat.com>, Laurent Vivier <lvivier@redhat.com>, Paolo Bonzini <pbonzini@redhat.com>, David Gibson <david@gibson.dropbear.id.au>
There is a newer version of this series
[PATCH 2/2] ppc/pnv: Fix PCI_EXPRESS dependency
Posted by Laurent Vivier 6 years ago
When PHB4 bridge has been added, the dependencies to PCIE_PORT has been
added to XIVE_SPAPR and indirectly to PSERIES.
The build of the PowerNV machine is fine while we also build the PSERIES
machine.
If we disable the PSERIES machine, the PowerNV build fails because the
PCI Express files are not built:

/usr/bin/ld: hw/ppc/pnv.o: in function `pnv_chip_power8_pic_print_info':
.../hw/ppc/pnv.c:623: undefined reference to `pnv_phb3_msi_pic_print_info'
/usr/bin/ld: hw/ppc/pnv.o: in function `pnv_chip_power9_pic_print_info':
.../hw/ppc/pnv.c:639: undefined reference to `pnv_phb4_pic_print_info'
/usr/bin/ld: ../hw/usb/hcd-ehci-pci.o: in function `usb_ehci_pci_write_config':
.../hw/usb/hcd-ehci-pci.c:129: undefined reference to `pci_default_write_config'
/usr/bin/ld: ../hw/usb/hcd-ehci-pci.o: in function `usb_ehci_pci_realize':
.../hw/usb/hcd-ehci-pci.c:68: undefined reference to `pci_allocate_irq'
/usr/bin/ld: .../hw/usb/hcd-ehci-pci.c:72: undefined reference to `pci_register_bar'
/usr/bin/ld: ../hw/usb/hcd-ehci-pci.o:(.data.rel+0x50): undefined reference to `vmstate_pci_device'

This patch fixes the problem by adding needed dependencies to POWERNV.

Fixes: 4f9924c4d4cf ("ppc/pnv: Add models for POWER9 PHB4 PCIe Host bridge")
Signed-off-by: Laurent Vivier <lvivier@redhat.com>
---
 hw/ppc/Kconfig | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/hw/ppc/Kconfig b/hw/ppc/Kconfig
index 354828bf132f..3e11d0b53e11 100644
--- a/hw/ppc/Kconfig
+++ b/hw/ppc/Kconfig
@@ -29,6 +29,10 @@ config POWERNV
     select XICS
     select XIVE
     select FDT_PPC
+    select PCI
+    select PCI_EXPRESS
+    select MSI_NONBROKEN
+    select PCIE_PORT
 
 config PPC405
     bool
@@ -135,8 +139,6 @@ config XIVE_SPAPR
     default y
     depends on PSERIES
     select XIVE
-    select PCI
-    select PCIE_PORT
 
 config XIVE_KVM
     bool
-- 
2.24.1


Re: [PATCH 2/2] ppc/pnv: Fix PCI_EXPRESS dependency
Posted by Greg Kurz 6 years ago
On Wed,  5 Feb 2020 21:41:15 +0100
Laurent Vivier <lvivier@redhat.com> wrote:

> When PHB4 bridge has been added, the dependencies to PCIE_PORT has been
> added to XIVE_SPAPR and indirectly to PSERIES.
> The build of the PowerNV machine is fine while we also build the PSERIES
> machine.
> If we disable the PSERIES machine, the PowerNV build fails because the
> PCI Express files are not built:
> 
> /usr/bin/ld: hw/ppc/pnv.o: in function `pnv_chip_power8_pic_print_info':
> .../hw/ppc/pnv.c:623: undefined reference to `pnv_phb3_msi_pic_print_info'
> /usr/bin/ld: hw/ppc/pnv.o: in function `pnv_chip_power9_pic_print_info':
> .../hw/ppc/pnv.c:639: undefined reference to `pnv_phb4_pic_print_info'
> /usr/bin/ld: ../hw/usb/hcd-ehci-pci.o: in function `usb_ehci_pci_write_config':
> .../hw/usb/hcd-ehci-pci.c:129: undefined reference to `pci_default_write_config'
> /usr/bin/ld: ../hw/usb/hcd-ehci-pci.o: in function `usb_ehci_pci_realize':
> .../hw/usb/hcd-ehci-pci.c:68: undefined reference to `pci_allocate_irq'
> /usr/bin/ld: .../hw/usb/hcd-ehci-pci.c:72: undefined reference to `pci_register_bar'
> /usr/bin/ld: ../hw/usb/hcd-ehci-pci.o:(.data.rel+0x50): undefined reference to `vmstate_pci_device'
> 
> This patch fixes the problem by adding needed dependencies to POWERNV.
> 
> Fixes: 4f9924c4d4cf ("ppc/pnv: Add models for POWER9 PHB4 PCIe Host bridge")
> Signed-off-by: Laurent Vivier <lvivier@redhat.com>
> ---
>  hw/ppc/Kconfig | 6 ++++--
>  1 file changed, 4 insertions(+), 2 deletions(-)
> 
> diff --git a/hw/ppc/Kconfig b/hw/ppc/Kconfig
> index 354828bf132f..3e11d0b53e11 100644
> --- a/hw/ppc/Kconfig
> +++ b/hw/ppc/Kconfig
> @@ -29,6 +29,10 @@ config POWERNV
>      select XICS
>      select XIVE
>      select FDT_PPC
> +    select PCI

Is it needed since PCI_EXPRESS already selects PCI in hw/pci/Kconfig ?

Apart from that:

Reviewed-by: Greg Kurz <groug@kaod.org>

> +    select PCI_EXPRESS
> +    select MSI_NONBROKEN
> +    select PCIE_PORT
>  
>  config PPC405
>      bool
> @@ -135,8 +139,6 @@ config XIVE_SPAPR
>      default y
>      depends on PSERIES
>      select XIVE
> -    select PCI
> -    select PCIE_PORT
>  
>  config XIVE_KVM
>      bool


Re: [PATCH 2/2] ppc/pnv: Fix PCI_EXPRESS dependency
Posted by Laurent Vivier 6 years ago
On 05/02/2020 22:20, Greg Kurz wrote:
> On Wed,  5 Feb 2020 21:41:15 +0100
> Laurent Vivier <lvivier@redhat.com> wrote:
> 
>> When PHB4 bridge has been added, the dependencies to PCIE_PORT has been
>> added to XIVE_SPAPR and indirectly to PSERIES.
>> The build of the PowerNV machine is fine while we also build the PSERIES
>> machine.
>> If we disable the PSERIES machine, the PowerNV build fails because the
>> PCI Express files are not built:
>>
>> /usr/bin/ld: hw/ppc/pnv.o: in function `pnv_chip_power8_pic_print_info':
>> .../hw/ppc/pnv.c:623: undefined reference to `pnv_phb3_msi_pic_print_info'
>> /usr/bin/ld: hw/ppc/pnv.o: in function `pnv_chip_power9_pic_print_info':
>> .../hw/ppc/pnv.c:639: undefined reference to `pnv_phb4_pic_print_info'
>> /usr/bin/ld: ../hw/usb/hcd-ehci-pci.o: in function `usb_ehci_pci_write_config':
>> .../hw/usb/hcd-ehci-pci.c:129: undefined reference to `pci_default_write_config'
>> /usr/bin/ld: ../hw/usb/hcd-ehci-pci.o: in function `usb_ehci_pci_realize':
>> .../hw/usb/hcd-ehci-pci.c:68: undefined reference to `pci_allocate_irq'
>> /usr/bin/ld: .../hw/usb/hcd-ehci-pci.c:72: undefined reference to `pci_register_bar'
>> /usr/bin/ld: ../hw/usb/hcd-ehci-pci.o:(.data.rel+0x50): undefined reference to `vmstate_pci_device'
>>
>> This patch fixes the problem by adding needed dependencies to POWERNV.
>>
>> Fixes: 4f9924c4d4cf ("ppc/pnv: Add models for POWER9 PHB4 PCIe Host bridge")
>> Signed-off-by: Laurent Vivier <lvivier@redhat.com>
>> ---
>>  hw/ppc/Kconfig | 6 ++++--
>>  1 file changed, 4 insertions(+), 2 deletions(-)
>>
>> diff --git a/hw/ppc/Kconfig b/hw/ppc/Kconfig
>> index 354828bf132f..3e11d0b53e11 100644
>> --- a/hw/ppc/Kconfig
>> +++ b/hw/ppc/Kconfig
>> @@ -29,6 +29,10 @@ config POWERNV
>>      select XICS
>>      select XIVE
>>      select FDT_PPC
>> +    select PCI
> 
> Is it needed since PCI_EXPRESS already selects PCI in hw/pci/Kconfig ?
> 

You are right, and PCIE_PORT is not needed too, because
PCIE_PORT is default to 'y' if PCI_DEVICES.

> Apart from that:
> 
> Reviewed-by: Greg Kurz <groug@kaod.org>
> 
>> +    select PCI_EXPRESS
>> +    select MSI_NONBROKEN
>> +    select PCIE_PORT
>>  
>>  config PPC405
>>      bool
>> @@ -135,8 +139,6 @@ config XIVE_SPAPR
>>      default y
>>      depends on PSERIES
>>      select XIVE
>> -    select PCI
>> -    select PCIE_PORT
>>  
>>  config XIVE_KVM
>>      bool
> 


Re: [PATCH 2/2] ppc/pnv: Fix PCI_EXPRESS dependency
Posted by Thomas Huth 6 years ago
On 06/02/2020 00.17, Laurent Vivier wrote:
> On 05/02/2020 22:20, Greg Kurz wrote:
>> On Wed,  5 Feb 2020 21:41:15 +0100
>> Laurent Vivier <lvivier@redhat.com> wrote:
>>
>>> When PHB4 bridge has been added, the dependencies to PCIE_PORT has been
>>> added to XIVE_SPAPR and indirectly to PSERIES.
>>> The build of the PowerNV machine is fine while we also build the PSERIES
>>> machine.
>>> If we disable the PSERIES machine, the PowerNV build fails because the
>>> PCI Express files are not built:
>>>
>>> /usr/bin/ld: hw/ppc/pnv.o: in function `pnv_chip_power8_pic_print_info':
>>> .../hw/ppc/pnv.c:623: undefined reference to `pnv_phb3_msi_pic_print_info'
>>> /usr/bin/ld: hw/ppc/pnv.o: in function `pnv_chip_power9_pic_print_info':
>>> .../hw/ppc/pnv.c:639: undefined reference to `pnv_phb4_pic_print_info'
>>> /usr/bin/ld: ../hw/usb/hcd-ehci-pci.o: in function `usb_ehci_pci_write_config':
>>> .../hw/usb/hcd-ehci-pci.c:129: undefined reference to `pci_default_write_config'
>>> /usr/bin/ld: ../hw/usb/hcd-ehci-pci.o: in function `usb_ehci_pci_realize':
>>> .../hw/usb/hcd-ehci-pci.c:68: undefined reference to `pci_allocate_irq'
>>> /usr/bin/ld: .../hw/usb/hcd-ehci-pci.c:72: undefined reference to `pci_register_bar'
>>> /usr/bin/ld: ../hw/usb/hcd-ehci-pci.o:(.data.rel+0x50): undefined reference to `vmstate_pci_device'
>>>
>>> This patch fixes the problem by adding needed dependencies to POWERNV.
>>>
>>> Fixes: 4f9924c4d4cf ("ppc/pnv: Add models for POWER9 PHB4 PCIe Host bridge")
>>> Signed-off-by: Laurent Vivier <lvivier@redhat.com>
>>> ---
>>>  hw/ppc/Kconfig | 6 ++++--
>>>  1 file changed, 4 insertions(+), 2 deletions(-)
>>>
>>> diff --git a/hw/ppc/Kconfig b/hw/ppc/Kconfig
>>> index 354828bf132f..3e11d0b53e11 100644
>>> --- a/hw/ppc/Kconfig
>>> +++ b/hw/ppc/Kconfig
>>> @@ -29,6 +29,10 @@ config POWERNV
>>>      select XICS
>>>      select XIVE
>>>      select FDT_PPC
>>> +    select PCI
>>
>> Is it needed since PCI_EXPRESS already selects PCI in hw/pci/Kconfig ?
>>
> 
> You are right, and PCIE_PORT is not needed too, because
> PCIE_PORT is default to 'y' if PCI_DEVICES.

If it's a hard requirement for linking, then it is needed here. Try to
compile after running "configure --without-default-devices" to see
whether you've got all dependencies really right.

 Thomas