lkml.org 
[lkml]   [2022]   [Aug]   [8]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH] irqchip: Select downstream irqchip drivers for LoongArch CPU
    On Mon, 08 Aug 2022 09:53:19 +0100,
    Huacai Chen <chenhuacai@loongson.cn> wrote:
    >
    > LoongArch irqchips have a fixed hierarchy which currently can't be
    > described by ACPI tables, so upstream irqchip drivers call downstream
    > irqchip drivers' initialization directly. As a result, the top level
    > (CPU-level) irqchip driver should explicitly select downstream drivers
    > to avoid build errors.
    >
    > Reported-by: kernel test robot <lkp@intel.com>
    > Signed-off-by: Huacai Chen <chenhuacai@loongson.cn>
    > ---
    > drivers/irqchip/Kconfig | 5 +++++
    > 1 file changed, 5 insertions(+)
    >
    > diff --git a/drivers/irqchip/Kconfig b/drivers/irqchip/Kconfig
    > index 66b9fa408bf2..2549daa859d6 100644
    > --- a/drivers/irqchip/Kconfig
    > +++ b/drivers/irqchip/Kconfig
    > @@ -561,6 +561,11 @@ config IRQ_LOONGARCH_CPU
    > select GENERIC_IRQ_CHIP
    > select IRQ_DOMAIN
    > select GENERIC_IRQ_EFFECTIVE_AFF_MASK
    > + select LOONGSON_LIOINTC
    > + select LOONGSON_EIOINTC
    > + select LOONGSON_PCH_PIC
    > + select LOONGSON_PCH_MSI
    > + select LOONGSON_PCH_LPC

    This triggers tons of pretty bad compilation and configuration issues,
    as PCI still isn't selectable, even in Linus' tree (see below). I'm
    guessing you still have local patches that hide this issue.

    Please test your patches on an upstream tree in the future.

    M.

    <log>
    $ make ARCH=loongarch CROSS_COMPILE=loongarch64-linux- -j 20 vmlinux
    SYNC include/config/auto.conf.cmd

    WARNING: unmet direct dependencies detected for LOONGSON_PCH_MSI
    Depends on [n]: MACH_LOONGSON64 [=y] && PCI [=n]
    Selected by [y]:
    - IRQ_LOONGARCH_CPU [=y]

    WARNING: unmet direct dependencies detected for LOONGSON_PCH_MSI
    Depends on [n]: MACH_LOONGSON64 [=y] && PCI [=n]
    Selected by [y]:
    - IRQ_LOONGARCH_CPU [=y]

    WARNING: unmet direct dependencies detected for LOONGSON_PCH_MSI
    Depends on [n]: MACH_LOONGSON64 [=y] && PCI [=n]
    Selected by [y]:
    [...]
    drivers/irqchip/irq-loongson-pch-msi.c:88:15: error: variable 'pch_msi_domain_info' has initializer but incomplete type
    88 | static struct msi_domain_info pch_msi_domain_info = {
    | ^~~~~~~~~~~~~~~
    drivers/irqchip/irq-loongson-pch-msi.c:89:10: error: 'struct msi_domain_info' has no member named 'flags'
    89 | .flags = MSI_FLAG_USE_DEF_DOM_OPS | MSI_FLAG_USE_DEF_CHIP_OPS |
    | ^~~~~
    CC mm/page-writeback.o
    CC io_uring/advise.o
    drivers/irqchip/irq-loongson-pch-msi.c:89:19: error: 'MSI_FLAG_USE_DEF_DOM_OPS' undeclared here (not in a function)
    89 | .flags = MSI_FLAG_USE_DEF_DOM_OPS | MSI_FLAG_USE_DEF_CHIP_OPS |
    | ^~~~~~~~~~~~~~~~~~~~~~~~
    CC fs/char_dev.o
    CC fs/stat.o
    drivers/irqchip/irq-loongson-pch-msi.c:89:46: error: 'MSI_FLAG_USE_DEF_CHIP_OPS' undeclared here (not in a function)
    89 | .flags = MSI_FLAG_USE_DEF_DOM_OPS | MSI_FLAG_USE_DEF_CHIP_OPS |
    | ^~~~~~~~~~~~~~~~~~~~~~~~~
    CC security/security.o
    AS arch/loongarch/kernel/switch.o
    CC kernel/softirq.o
    drivers/irqchip/irq-loongson-pch-msi.c:90:19: error: 'MSI_FLAG_MULTI_PCI_MSI' undeclared here (not in a function)
    90 | MSI_FLAG_MULTI_PCI_MSI | MSI_FLAG_PCI_MSIX,
    | ^~~~~~~~~~~~~~~~~~~~~~
    CC crypto/dh_helper.o
    CC arch/loongarch/kernel/elf.o
    drivers/irqchip/irq-loongson-pch-msi.c:90:44: error: 'MSI_FLAG_PCI_MSIX' undeclared here (not in a function)
    90 | MSI_FLAG_MULTI_PCI_MSI | MSI_FLAG_PCI_MSIX,
    | ^~~~~~~~~~~~~~~~~
    drivers/irqchip/irq-loongson-pch-msi.c:89:19: warning: excess elements in struct initializer
    89 | .flags = MSI_FLAG_USE_DEF_DOM_OPS | MSI_FLAG_USE_DEF_CHIP_OPS |
    | ^~~~~~~~~~~~~~~~~~~~~~~~
    drivers/irqchip/irq-loongson-pch-msi.c:89:19: note: (near initialization for 'pch_msi_domain_info')
    drivers/irqchip/irq-loongson-pch-msi.c:91:10: error: 'struct msi_domain_info' has no member named 'chip'
    91 | .chip = &pch_msi_irq_chip,
    | ^~~~
    drivers/irqchip/irq-loongson-pch-msi.c:91:19: warning: excess elements in struct initializer
    91 | .chip = &pch_msi_irq_chip,
    | ^
    drivers/irqchip/irq-loongson-pch-msi.c:91:19: note: (near initialization for 'pch_msi_domain_info')
    CC sound/core/device.o
    CC drivers/gpio/gpiolib-sysfs.o
    CC io_uring/filetable.o
    drivers/irqchip/irq-loongson-pch-msi.c: In function 'pch_msi_init_domains':
    drivers/irqchip/irq-loongson-pch-msi.c:178:22: error: implicit declaration of function 'pci_msi_create_irq_domain'; did you mean 'pci_msi_get_device_domain'? [-Werror=implicit-function-declaration]
    178 | msi_domain = pci_msi_create_irq_domain(domain_handle,
    | ^~~~~~~~~~~~~~~~~~~~~~~~~
    | pci_msi_get_device_domain
    drivers/irqchip/irq-loongson-pch-msi.c:178:20: warning: assignment to 'struct irq_domain *' from 'int' makes pointer from integer without a cast [-Wint-conversion]
    178 | msi_domain = pci_msi_create_irq_domain(domain_handle,
    | ^
    drivers/irqchip/irq-loongson-pch-msi.c: At top level:
    drivers/irqchip/irq-loongson-pch-msi.c:88:31: error: storage size of 'pch_msi_domain_info' isn't known
    88 | static struct msi_domain_info pch_msi_domain_info = {
    | ^~~~~~~~~~~~~~~~~~~
    </log>

    --
    Without deviation from the norm, progress is not possible.

    \
     
     \ /
      Last update: 2022-08-08 12:06    [W:2.248 / U:0.096 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site