diff options
author | Anton Ivanov <anton.ivanov@cambridgegreys.com> | 2017-11-20 21:17:58 +0000 |
---|---|---|
committer | Richard Weinberger <richard@nod.at> | 2018-02-19 19:38:51 +0100 |
commit | ff6a17989c08b0bb0fd490cc500b084581b3a9b9 (patch) | |
tree | 1f87a8f21ad3659e61e4958faece57994a842cde /arch/um/drivers/ubd_kern.c | |
parent | 4d1a535b8ec5e74b42dfd9dc809142653b2597f6 (diff) | |
download | blackbird-op-linux-ff6a17989c08b0bb0fd490cc500b084581b3a9b9.tar.gz blackbird-op-linux-ff6a17989c08b0bb0fd490cc500b084581b3a9b9.zip |
Epoll based IRQ controller
1. Removes the need to walk the IRQ/Device list to determine
who triggered the IRQ.
2. Improves scalability (up to several times performance
improvement for cases with 10s of devices).
3. Improves UML baseline IO performance for one disk + one NIC
use case by up to 10%.
4. Introduces write poll triggered IRQs.
5. Prerequisite for introducing high performance mmesg family
of functions in network IO.
6. Fixes RNG shutdown which was leaking a file descriptor
Signed-off-by: Anton Ivanov <anton.ivanov@cambridgegreys.com>
Signed-off-by: Richard Weinberger <richard@nod.at>
Diffstat (limited to 'arch/um/drivers/ubd_kern.c')
-rw-r--r-- | arch/um/drivers/ubd_kern.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/arch/um/drivers/ubd_kern.c b/arch/um/drivers/ubd_kern.c index b55fe9bf5d3e..d4e8c497ae86 100644 --- a/arch/um/drivers/ubd_kern.c +++ b/arch/um/drivers/ubd_kern.c @@ -1587,11 +1587,11 @@ int io_thread(void *arg) do { res = os_write_file(kernel_fd, ((char *) io_req_buffer) + written, n); - if (res > 0) { + if (res >= 0) { written += res; } else { if (res != -EAGAIN) { - printk("io_thread - read failed, fd = %d, " + printk("io_thread - write failed, fd = %d, " "err = %d\n", kernel_fd, -n); } } |