Hi Andrew, Andrew Morton wrote: > One option might be to create inclued/linux/msi.h, put this declaration in > there then include . Possibly some other declarations should be > moved into linux/msi.h as well. How about the attached one? Build tested on ia64 with both CONFIG_PCI_MSI y and n. This is a minimum set to fix compile warnings and errors. Maybe better fleshed up by msi developers if necessary. The patch also fixes other build error below on CONFIG_IA64_GENERIC. CC arch/ia64/sn/pci/msi.o /build/rc6/source/arch/ia64/sn/pci/msi.c: At top level: /build/rc6/source/arch/ia64/sn/pci/msi.c:192: error: variable `sn_msi_ops' has initializer but incomplete type /build/rc6/source/arch/ia64/sn/pci/msi.c:193: error: unknown field `setup' specified in initializer /build/rc6/source/arch/ia64/sn/pci/msi.c:193: warning: excess elements in struct initializer /build/rc6/source/arch/ia64/sn/pci/msi.c:193: warning: (near initialization for `sn_msi_ops') /build/rc6/source/arch/ia64/sn/pci/msi.c:194: error: unknown field `teardown' specified in initializer /build/rc6/source/arch/ia64/sn/pci/msi.c:194: warning: excess elements in struct initializer /build/rc6/source/arch/ia64/sn/pci/msi.c:194: warning: (near initialization for `sn_msi_ops') /build/rc6/source/arch/ia64/sn/pci/msi.c:196: error: unknown field `target' specified in initializer /build/rc6/source/arch/ia64/sn/pci/msi.c:196: warning: excess elements in struct initializer /build/rc6/source/arch/ia64/sn/pci/msi.c:196: warning: (near initialization for `sn_msi_ops') /build/rc6/source/arch/ia64/sn/pci/msi.c:192: error: storage size of `sn_msi_ops' isn't known Thanks, -- Jun'ichi Nomura, NEC Solutions (America), Inc.