diff mbox series

[v2,09/12] hw/pci-host/Kconfig: Add missing dependency MV64361 -> I8259

Message ID 20210515173716.358295-10-philmd@redhat.com
State New
Headers show
Series hw: Various Kconfig fixes | expand

Commit Message

Philippe Mathieu-Daudé May 15, 2021, 5:37 p.m. UTC
From: Philippe Mathieu-Daudé <f4bug@amsat.org>

Looking at the MV64340 model source, there is a dependency on the
8259 interrupt controller:

  523     case MV64340_PCI_1_INTERRUPT_ACKNOWLEDGE_VIRTUAL_REG:
  524         /* FIXME: Should this be sent via the PCI bus somehow? */
  525         if (s->gpp_int_level && (s->gpp_value & BIT(31))) {
  526             ret = pic_read_irq(isa_pic);
  527         }
  528         break;

Add it to Kconfig to avoid the following build failure:

  /usr/bin/ld: libcommon.fa.p/hw_pci-host_mv64361.c.o: in function `mv64361_read':
  hw/pci-host/mv64361.c:526: undefined reference to `isa_pic'
  /usr/bin/ld: hw/pci-host/mv64361.c:526: undefined reference to `pic_read_irq'

Fixes: dcdf98a9015 ("hw/pci-host: Add emulation of Marvell MV64361 PPC system controller")
Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
---
 hw/pci-host/Kconfig | 1 +
 1 file changed, 1 insertion(+)

Comments

BALATON Zoltan May 15, 2021, 7:46 p.m. UTC | #1
On Sat, 15 May 2021, Philippe Mathieu-Daudé wrote:
> From: Philippe Mathieu-Daudé <f4bug@amsat.org>
>
> Looking at the MV64340 model source, there is a dependency on the
> 8259 interrupt controller:
>
>  523     case MV64340_PCI_1_INTERRUPT_ACKNOWLEDGE_VIRTUAL_REG:
>  524         /* FIXME: Should this be sent via the PCI bus somehow? */
>  525         if (s->gpp_int_level && (s->gpp_value & BIT(31))) {
>  526             ret = pic_read_irq(isa_pic);
>  527         }
>  528         break;
>
> Add it to Kconfig to avoid the following build failure:
>
>  /usr/bin/ld: libcommon.fa.p/hw_pci-host_mv64361.c.o: in function `mv64361_read':
>  hw/pci-host/mv64361.c:526: undefined reference to `isa_pic'
>  /usr/bin/ld: hw/pci-host/mv64361.c:526: undefined reference to `pic_read_irq'
>
> Fixes: dcdf98a9015 ("hw/pci-host: Add emulation of Marvell MV64361 PPC system controller")
> Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>

Reviewed-by: BALATON Zoltan <balaton@eik.bme.hu>

Correct, this is a dependency that I've missed, although pegasos2 probably 
has it already and nothing else is using this chip but it's more correct 
to list it explicitely.

> ---
> hw/pci-host/Kconfig | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/hw/pci-host/Kconfig b/hw/pci-host/Kconfig
> index 79c20bf28bb..9dc0d761815 100644
> --- a/hw/pci-host/Kconfig
> +++ b/hw/pci-host/Kconfig
> @@ -76,3 +76,4 @@ config SH_PCI
> config MV64361
>     bool
>     select PCI
> +    select I8259
>
Bin Meng May 17, 2021, 2:49 a.m. UTC | #2
On Sun, May 16, 2021 at 1:52 AM Philippe Mathieu-Daudé
<philmd@redhat.com> wrote:
>
> From: Philippe Mathieu-Daudé <f4bug@amsat.org>
>
> Looking at the MV64340 model source, there is a dependency on the
> 8259 interrupt controller:
>
>   523     case MV64340_PCI_1_INTERRUPT_ACKNOWLEDGE_VIRTUAL_REG:
>   524         /* FIXME: Should this be sent via the PCI bus somehow? */
>   525         if (s->gpp_int_level && (s->gpp_value & BIT(31))) {
>   526             ret = pic_read_irq(isa_pic);
>   527         }
>   528         break;
>
> Add it to Kconfig to avoid the following build failure:
>
>   /usr/bin/ld: libcommon.fa.p/hw_pci-host_mv64361.c.o: in function `mv64361_read':
>   hw/pci-host/mv64361.c:526: undefined reference to `isa_pic'
>   /usr/bin/ld: hw/pci-host/mv64361.c:526: undefined reference to `pic_read_irq'
>
> Fixes: dcdf98a9015 ("hw/pci-host: Add emulation of Marvell MV64361 PPC system controller")
> Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
> ---
>  hw/pci-host/Kconfig | 1 +
>  1 file changed, 1 insertion(+)
>

Reviewed-by: Bin Meng <bmeng.cn@gmail.com>

There are some more codes that contain isa_pic. Maybe worth an additional check.

./hw/i386/x86.c:573:    intno = pic_read_irq(isa_pic);
./hw/intc/i8259.c:58:DeviceState *isa_pic;
./hw/intc/i8259.c:429:    isa_pic = dev;
./hw/intc/apic.c:387:    } else if (!apic_accept_pic_intr(dev) ||
!pic_get_output(isa_pic)) {
./hw/intc/apic.c:562:    if (!apic_accept_pic_intr(dev) ||
!pic_get_output(isa_pic)) {
./hw/intc/apic.c:615:        return isa_pic != NULL;
./hw/intc/ioapic.c:78:        info->vector = pic_read_irq(isa_pic);
./hw/hppa/pci.c:67:    return pic_read_irq(isa_pic);
./hw/mips/gt64xxx_pci.c:777:        val = pic_read_irq(isa_pic);
./hw/alpha/pci.c:70:    return pic_read_irq(isa_pic);
./hw/pci-host/mv64361.c:526:            ret = pic_read_irq(isa_pic);
./hw/pci-host/prep.c:121:    return pic_read_irq(isa_pic);
./include/hw/intc/i8259.h:6:extern DeviceState *isa_pic;

Regards,
Bin
David Gibson May 17, 2021, 3:13 a.m. UTC | #3
On Sat, May 15, 2021 at 07:37:13PM +0200, Philippe Mathieu-Daudé wrote:
> From: Philippe Mathieu-Daudé <f4bug@amsat.org>
> 
> Looking at the MV64340 model source, there is a dependency on the
> 8259 interrupt controller:
> 
>   523     case MV64340_PCI_1_INTERRUPT_ACKNOWLEDGE_VIRTUAL_REG:
>   524         /* FIXME: Should this be sent via the PCI bus somehow? */
>   525         if (s->gpp_int_level && (s->gpp_value & BIT(31))) {
>   526             ret = pic_read_irq(isa_pic);
>   527         }
>   528         break;
> 
> Add it to Kconfig to avoid the following build failure:
> 
>   /usr/bin/ld: libcommon.fa.p/hw_pci-host_mv64361.c.o: in function `mv64361_read':
>   hw/pci-host/mv64361.c:526: undefined reference to `isa_pic'
>   /usr/bin/ld: hw/pci-host/mv64361.c:526: undefined reference to `pic_read_irq'
> 
> Fixes: dcdf98a9015 ("hw/pci-host: Add emulation of Marvell MV64361 PPC system controller")
> Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>

Acked-by: David Gibson <david@gibson.dropbear.id.au>

> ---
>  hw/pci-host/Kconfig | 1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/hw/pci-host/Kconfig b/hw/pci-host/Kconfig
> index 79c20bf28bb..9dc0d761815 100644
> --- a/hw/pci-host/Kconfig
> +++ b/hw/pci-host/Kconfig
> @@ -76,3 +76,4 @@ config SH_PCI
>  config MV64361
>      bool
>      select PCI
> +    select I8259
Philippe Mathieu-Daudé May 17, 2021, 5:10 a.m. UTC | #4
On 5/17/21 4:49 AM, Bin Meng wrote:
> On Sun, May 16, 2021 at 1:52 AM Philippe Mathieu-Daudé
> <philmd@redhat.com> wrote:
>>
>> From: Philippe Mathieu-Daudé <f4bug@amsat.org>
>>
>> Looking at the MV64340 model source, there is a dependency on the
>> 8259 interrupt controller:
>>
>>   523     case MV64340_PCI_1_INTERRUPT_ACKNOWLEDGE_VIRTUAL_REG:
>>   524         /* FIXME: Should this be sent via the PCI bus somehow? */
>>   525         if (s->gpp_int_level && (s->gpp_value & BIT(31))) {
>>   526             ret = pic_read_irq(isa_pic);
>>   527         }
>>   528         break;
>>
>> Add it to Kconfig to avoid the following build failure:
>>
>>   /usr/bin/ld: libcommon.fa.p/hw_pci-host_mv64361.c.o: in function `mv64361_read':
>>   hw/pci-host/mv64361.c:526: undefined reference to `isa_pic'
>>   /usr/bin/ld: hw/pci-host/mv64361.c:526: undefined reference to `pic_read_irq'
>>
>> Fixes: dcdf98a9015 ("hw/pci-host: Add emulation of Marvell MV64361 PPC system controller")
>> Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
>> ---
>>  hw/pci-host/Kconfig | 1 +
>>  1 file changed, 1 insertion(+)
>>
> 
> Reviewed-by: Bin Meng <bmeng.cn@gmail.com>

Thank you :)

> There are some more codes that contain isa_pic. Maybe worth an additional check.
> 
> ./hw/i386/x86.c:573:    intno = pic_read_irq(isa_pic);
> ./hw/intc/i8259.c:58:DeviceState *isa_pic;
> ./hw/intc/i8259.c:429:    isa_pic = dev;
> ./hw/intc/apic.c:387:    } else if (!apic_accept_pic_intr(dev) ||
> !pic_get_output(isa_pic)) {
> ./hw/intc/apic.c:562:    if (!apic_accept_pic_intr(dev) ||
> !pic_get_output(isa_pic)) {
> ./hw/intc/apic.c:615:        return isa_pic != NULL;
> ./hw/intc/ioapic.c:78:        info->vector = pic_read_irq(isa_pic);
> ./hw/hppa/pci.c:67:    return pic_read_irq(isa_pic);
> ./hw/mips/gt64xxx_pci.c:777:        val = pic_read_irq(isa_pic);
> ./hw/alpha/pci.c:70:    return pic_read_irq(isa_pic);
> ./hw/pci-host/mv64361.c:526:            ret = pic_read_irq(isa_pic);
> ./hw/pci-host/prep.c:121:    return pic_read_irq(isa_pic);
> ./include/hw/intc/i8259.h:6:extern DeviceState *isa_pic;

I'll have a look, by my secret plan is to remove the global isa_pic :)
diff mbox series

Patch

diff --git a/hw/pci-host/Kconfig b/hw/pci-host/Kconfig
index 79c20bf28bb..9dc0d761815 100644
--- a/hw/pci-host/Kconfig
+++ b/hw/pci-host/Kconfig
@@ -76,3 +76,4 @@  config SH_PCI
 config MV64361
     bool
     select PCI
+    select I8259