mirror of https://gitee.com/openkylin/linux.git
powerpc/spufs: Don't spu_acquire_saved unnecessarily in regs read
With most file readers (eg cat, dd), reading a context's regs file will result in two reads: the first to read the data, and the second to return EOF. Because each read performs a spu_acquire_saved, we end up descheduling and re-scheduling the context twice. This change does a simple check to see if we'd return EOF before calling spu_acquire_saved(), saving the extra schedule operation. Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
This commit is contained in:
parent
14f693eeb5
commit
f027faa231
|
@ -548,6 +548,11 @@ spufs_regs_read(struct file *file, char __user *buffer,
|
|||
int ret;
|
||||
struct spu_context *ctx = file->private_data;
|
||||
|
||||
/* pre-check for file position: if we'd return EOF, there's no point
|
||||
* causing a deschedule */
|
||||
if (*pos >= sizeof(ctx->csa.lscsa->gprs))
|
||||
return 0;
|
||||
|
||||
ret = spu_acquire_saved(ctx);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
|
Loading…
Reference in New Issue