[PATCH 1/3] msi vector targeting abstractions

Andreas Schwab schwab at suse.de
Wed Mar 22 03:38:08 EST 2006


"Jun'ichi Nomura" <j-nomura at ce.jp.nec.com> writes:

> 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)();
>   }

platform_msi_init should have the right type in the first place,
ie. defined to ((ia64_mv_msi_init_t*)NULL) instead of just NULL.

Andreas.

-- 
Andreas Schwab, SuSE Labs, schwab at suse.de
SuSE Linux Products GmbH, Maxfeldstraße 5, 90409 Nürnberg, Germany
PGP key fingerprint = 58CA 54C7 6D53 942B 1756  01D3 44D5 214B 8276 4ED5
"And now for something completely different."



More information about the Linuxppc-dev mailing list