Re: [PATCH v3 03/17] powerpc: Add PFO support to the VIO bus

2012-05-10 Thread Robert Jennings
* Benjamin Herrenschmidt (b...@kernel.crashing.org) wrote:
 Hrm... I don't like that much:
 
  +   if (op-timeout)
  +   deadline = jiffies + msecs_to_jiffies(op-timeout);
  +
  +   while (true) {
  +   hret = plpar_hcall_norets(H_COP, op-flags,
  +   vdev-resource_id,
  +   op-in, op-inlen, op-out,
  +   op-outlen, op-csbcpb);
  +
  +   if (hret == H_SUCCESS ||
  +   (hret != H_NOT_ENOUGH_RESOURCES 
  +hret != H_BUSY  hret != H_RESOURCE) ||
  +   (op-timeout  time_after(deadline, jiffies)))
  +   break;
  +
  +   dev_dbg(dev, %s: hcall ret(%ld), retrying.\n, __func__, hret);
  +   }
  +
 
 Is this meant to be called in atomic context ? If not, maybe it should
 at the very least do a cond_resched() ?
 
 Else, what about ceding the processor ? Or at the very least reducing
 the thread priority for a bit ?
 
 Shouldn't we also enforce to always have a timeout ? IE. Something like
 30s or so if nothing specified to avoid having the kernel just hard
 lock...
 
 In general I don't like that sort of synchronous code, I'd rather return
 the busy status up the chain which gives a chance to the caller to take
 more appropriate measures depending on what it's doing, but that really
 depends what you use that synchronous call for. I suppose if it's for
 configuration type operations, it's ok...

This function is called in atomic context, it is used by PFO-type device
drivers to perform operations with the nest accelerator unit (like
crypto acceleration).

Having the timeout and retries in this function is the wrong thing to do.
We'll resubmit this without the loop and the caller will be responsible for
retrying the operations.

I would rather have the caller cede the processor or alter thread
priority where appropriate than doing that in this function.  I don't
think this should be done in this crypto driver.

--Rob Jennings

--
To unsubscribe from this list: send the line unsubscribe linux-crypto in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH v3 03/17] powerpc: Add PFO support to the VIO bus

2012-04-30 Thread Benjamin Herrenschmidt
Hrm... I don't like that much:

 + if (op-timeout)
 + deadline = jiffies + msecs_to_jiffies(op-timeout);
 +
 + while (true) {
 + hret = plpar_hcall_norets(H_COP, op-flags,
 + vdev-resource_id,
 + op-in, op-inlen, op-out,
 + op-outlen, op-csbcpb);
 +
 + if (hret == H_SUCCESS ||
 + (hret != H_NOT_ENOUGH_RESOURCES 
 +  hret != H_BUSY  hret != H_RESOURCE) ||
 + (op-timeout  time_after(deadline, jiffies)))
 + break;
 +
 + dev_dbg(dev, %s: hcall ret(%ld), retrying.\n, __func__, hret);
 + }
 +

Is this meant to be called in atomic context ? If not, maybe it should
at the very least do a cond_resched() ?

Else, what about ceding the processor ? Or at the very least reducing
the thread priority for a bit ?

Shouldn't we also enforce to always have a timeout ? IE. Something like
30s or so if nothing specified to avoid having the kernel just hard
lock...

In general I don't like that sort of synchronous code, I'd rather return
the busy status up the chain which gives a chance to the caller to take
more appropriate measures depending on what it's doing, but that really
depends what you use that synchronous call for. I suppose if it's for
configuration type operations, it's ok...

Cheers,
Ben.


--
To unsubscribe from this list: send the line unsubscribe linux-crypto in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH v3 03/17] powerpc: Add PFO support to the VIO bus

2012-04-30 Thread Benjamin Herrenschmidt

 Else, what about ceding the processor ? Or at the very least reducing
 the thread priority for a bit ?
 
 Shouldn't we also enforce to always have a timeout ? IE. Something like
 30s or so if nothing specified to avoid having the kernel just hard
 lock...
 
 In general I don't like that sort of synchronous code, I'd rather return
 the busy status up the chain which gives a chance to the caller to take
 more appropriate measures depending on what it's doing, but that really
 depends what you use that synchronous call for. I suppose if it's for
 configuration type operations, it's ok...

In any case, don't resend the whole series, just that one patch.

Cheers,
Ben.



--
To unsubscribe from this list: send the line unsubscribe linux-crypto in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html