Non-sn2 boxes occasionally run into problems when they execute module_init functions for sn2 drivers, if those drivers go off and try to read a register that doesn't exist, or maybe dereference a variable that isn't defined for the non-sn2 case. This patch adds a platform check for the ioc4 and snsc driver init functions. It's a bit overkill for the ioc4 case, but erring on the conservative side doesn't hurt. Signed-off-by: Greg Edwards <edwardsg@xxxxxxx> --- drivers/char/snsc.c | 7 ++++++- drivers/sn/ioc4.c | 3 +++ 2 files changed, 9 insertions(+), 1 deletion(-) Index: git-linus/drivers/char/snsc.c =================================================================== --- git-linus.orig/drivers/char/snsc.c 2006-07-27 09:15:02.524672764 -0500 +++ git-linus/drivers/char/snsc.c 2006-07-27 09:15:13.630016184 -0500 @@ -374,7 +374,12 @@ scdrv_init(void) struct sysctl_data_s *scd; void *salbuf; dev_t first_dev, dev; - nasid_t event_nasid = ia64_sn_get_console_nasid(); + nasid_t event_nasid; + + if (!ia64_platform_is("sn2")) + return -ENODEV; + + event_nasid = ia64_sn_get_console_nasid(); if (alloc_chrdev_region(&first_dev, 0, num_cnodes, SYSCTL_BASENAME) < 0) { Index: git-linus/drivers/sn/ioc4.c =================================================================== --- git-linus.orig/drivers/sn/ioc4.c 2006-07-27 09:29:41.000000000 -0500 +++ git-linus/drivers/sn/ioc4.c 2006-07-27 09:54:49.186272223 -0500 @@ -455,6 +455,9 @@ MODULE_DEVICE_TABLE(pci, ioc4_id_table); static int __devinit ioc4_init(void) { + if (!ia64_platform_is("sn2")) + return -ENODEV; + return pci_register_driver(&ioc4_driver); } - : send the line "unsubscribe linux-ia64" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html
![]() |