Re: [PATCH] (-mm) drivers/pci/msi: explicit declaration of msi_register

From: Jun'ichi Nomura
Date: Thu Mar 16 2006 - 10:15:30 EST


Greg KH wrote:
No, we don't need a linux/msi.h, these are core pci things that no one
else should care about. The other arches handle this just fine, let's
not mess everything up just because ia64 can't get it right :)

Hmm, it sounds asm/msi.h shouldn't be included from common headers. :<
I think the attached patch might be better. How about this?

Default msi_arch_init() looks sufficient for most ia64 platforms
except for SGI SN2, which seems to need its special version.
gregkh-pci-msi-vector-targeting-abstractions.patch used machvec
to switch the functions between platforms.
For that, it included asm/msi.h from asm/machvec.h and
caused the warnings flood.
The attached patch separates machvec function and the original
inline function. So that we don't need to include asm/msi.h from
common headers.


There is another problem that CONFIG_IA64_GENERIC still doesn't
build due to error in SGI SN specific code.
It needs additional fix.

Thanks,
--
Jun'ichi Nomura, NEC Solutions (America), Inc.
asm/msi.h is a private header for core pci code.
It should not be included from common header.

Signed-off-by: Jun'ichi Nomura <j-nomura@xxxxxxxxxxxxx>

--- linux-2.6.16-rc6-mm1.orig/include/asm-ia64/msi.h 2006-03-14 13:54:11.000000000 -0500
+++ linux-2.6.16-rc6-mm1/include/asm-ia64/msi.h 2006-03-16 01:36:44.000000000 -0500
@@ -17,12 +17,12 @@ static inline void set_intr_gate (int nr
extern struct msi_ops msi_apic_ops;

/* default ia64 msi init routine */
-static inline int ia64_msi_init(void)
+static inline int msi_arch_init(void)
{
+ if (platform_msi_init)
+ return platform_msi_init();
msi_register(&msi_apic_ops);
return 0;
}

-#define msi_arch_init platform_msi_init /* in asm/machvec.h */
-
#endif /* ASM_MSI_H */
--- linux-2.6.16-rc6-mm1.orig/include/asm-ia64/machvec.h 2006-03-16 01:22:49.000000000 -0500
+++ linux-2.6.16-rc6-mm1/include/asm-ia64/machvec.h 2006-03-16 01:40:34.000000000 -0500
@@ -404,12 +404,7 @@ extern ia64_mv_dma_supported swiotlb_dm
# define platform_migrate machvec_noop_task
#endif
#ifndef platform_msi_init
-#ifdef CONFIG_PCI_MSI
-#include <asm/msi.h> /* pull in ia64_msi_init() */
-# define platform_msi_init ia64_msi_init
-#else
# define platform_msi_init NULL
-#endif /* CONFIG_PCI_MSI */
#endif

#endif /* _ASM_IA64_MACHVEC_H */