Hi Eric, On 21.02.2012 00:06, Moore, Eric wrote: > Jan - the smp_processor_id() is part of NUMA support which I added over a year ago. I don't see any problem with the driver running on sles11sp2 which has btrfs support ( I'm not sure if CONFIG_DEBUG_PREEMPT is turned on as I have not checked). Any theory why its oopsing in smp_processor_id() ? -- excerpt from include/linux/smp.h -- /* * smp_processor_id(): get the current CPU ID. * * if DEBUG_PREEMPT is enabled then we check whether it is * used in a preemption-safe way. (smp_processor_id() is safe * if it's used in a preemption-off critical section, or in * a thread that is bound to the current CPU.) [...] */ #ifdef CONFIG_DEBUG_PREEMPT extern unsigned int debug_smp_processor_id(void); # define smp_processor_id() debug_smp_processor_id() #else # define smp_processor_id() raw_smp_processor_id() #endif #define get_cpu() ({ preempt_disable(); smp_processor_id(); }) #define put_cpu() preempt_enable() -- end -- ... and ... -- excerpt from drivers/scsi/mpt2sas/mpt2sas_base.c -- static inline u8 _base_get_msix_index(struct MPT2SAS_ADAPTER *ioc) { return ioc->cpu_msix_table[smp_processor_id()]; } -- end -- Suggestion: Use get_cpu() and put_cpu(). -Jan -- To unsubscribe from this list: send the line "unsubscribe linux-scsi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html