Re: [PATCH] IB/ehca: Serialize HCA-related hCalls on POWER5
From: Joachim Fenkes <hidden>
Date: 2007-12-10 17:57:57
Also in:
lkml
Hi, guys,
We're taking this to the firmware architects at the moment, but they're
not
very fond of the idea of reporting the absence of bugs through
capability
flags, as this could quickly lead to the exhaustion of flag bits. We'll
let
the discussion stew for a bit, but if we don't get this flag, we'll have
to
resort to the CPU features.
The architects have spoken, and we're getting a capability flag for this. I'll repost my patch with new autodetection code that doesn't involve checking the processor version.
quoted
> Regarding the performance problem, have you checked whether
converting all
quoted
> your spin_lock_irqsave to spin_lock/spin_lock_irq improves your
performance
quoted
> on the older machines? Maybe it's already fast enough that way. It does seem that the only places that the hcall_lock is taken also use msleep, so they must always be in process context. So you can safely just use spin_lock(), right?As Arnd said, there are hCalls that will never return H_LONG_BUSY_*,
such as
H_QUERY_PORT and chums, so they will never sleep. The surrounding
functions,
though, are not prepared to be called from interrupt context (GFP_KERNEL
comes
to mind), so I agree that a simple spin_lock() will suffice. Thanks,
Arnd, for
pointing this out.
As I pointed out in my earlier mail, there's still an issue with map_phys_fmr possibly sleeping. Let's keep the irqsave for the time being and revisit this part once we find a solution to map_phys_fmr. Regards, Joachim