Re: [PATCH 1/3] msi vector targeting abstractions

Jun'ichi Nomura
2006-03-21T16:29:30Z

Hi Mark,

Mark Maule wrote:
> Index: linux-2.6.16/include/asm-ia64/msi.h
> =================================> --- linux-2.6.16.orig/include/asm-ia64/msi.h 2006-03-19 23:53:29.000000000 -0600
> +++ linux-2.6.16/include/asm-ia64/msi.h 2006-03-20 14:50:53.331368084 -0600
> @@ -14,4 +14,16 @@
> #define ack_APIC_irq ia64_eoi
> #define MSI_TARGET_CPU_SHIFT 4
>
> +extern struct msi_ops msi_apic_ops;
> +
> +static inline int msi_arch_init(void)
> +{
> + if (platform_msi_init)
> + return platform_msi_init();
> +
> + /* default ops for most ia64 platforms */
> + msi_register(&msi_apic_ops);
> + return 0;
> +}
> +
> #endif /* ASM_MSI_H */

It turned out that the above code breaks configs other
than CONFIG_IA64_SN and CONFIG_IA64_GENERIC.
e.g. CONFIG_IA64_DIG.

In file included from /build/16.msi/drivers/pci/msi.h:71,
from /build/16.msi/drivers/pci/msi.c:24:
include2/asm/msi.h: In function `msi_arch_init':
include2/asm/msi.h:22: error: called object is not a function
make[3]: *** [drivers/pci/msi.o] Error 1

Something like below might fix this problem:
if (platform_msi_init) {
ia64_mv_msi_init_t *fn = platform_msi_init;
return (*fn)();
}

Thanks,
--
Jun'ichi Nomura, NEC Solutions (America), Inc.