On Thursday 06 December 2007, Joachim Fenkes wrote: > printk(KERN_INFO "eHCA Infiniband Device Driver " > "(Version " HCAD_VERSION ")\n"); > > + /* Autodetect hCall locking -- we can't read the firmware version > + * directly, but we know that starting with POWER6, all firmware > + * versions are good. > + */ > + if (ehca_lock_hcalls == -1) > + ehca_lock_hcalls = !(cur_cpu_spec->cpu_user_features > + & PPC_FEATURE_ARCH_2_05); > + > ret = ehca_create_comp_pool(); > if (ret) { > ehca_gen_err("Cannot create comp pool.");
We already talked about this yesterday, but I still feel that checking the instruction set of the CPU should not be used to determine whether a specific device driver implementation is used int hypervisor. At the very least, I think you should change this to read the hypervisor version number from the device tree, though the ideal solution would be to have the absence of this bug encoded in the device node for the ehca device itself. Regarding the performance problem, have you checked whether converting all your spin_lock_irqsave to spin_lock/spin_lock_irq improves your performance on the older machines? Maybe it's already fast enough that way. Arnd <>< -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/