Re: [RFC PATCH 19/28] lkl tools: host lib: virtio block device

From: Richard Weinberger
Date: Sun Nov 08 2015 - 08:31:14 EST

Am 08.11.2015 um 05:15 schrieb Octavian Purdila:
> On Sat, Nov 7, 2015 at 2:24 PM, Richard Weinberger
> <richard.weinberger@xxxxxxxxx> wrote:
>> On Tue, Nov 3, 2015 at 9:20 PM, Octavian Purdila
>> <octavian.purdila@xxxxxxxxx> wrote:
>>> Host independent implementation for virtio block devices. The host
>>> dependent part of the host library must provide an implementation for
>>> lkl_dev_block_ops.
>>> Disks can be added to the LKL configuration via lkl_disk_add(), a new
>>> LKL application API.
>>> Signed-off-by: Octavian Purdila <octavian.purdila@xxxxxxxxx>
>>> ---
>>> tools/lkl/include/lkl.h | 20 ++++++++
>>> tools/lkl/include/lkl_host.h | 21 ++++++++
>>> tools/lkl/lib/virtio_blk.c | 116 +++++++++++++++++++++++++++++++++++++++++++
>>> 3 files changed, 157 insertions(+)
>>> create mode 100644 tools/lkl/lib/virtio_blk.c
> Hi Richard,
>> Can you please outline what the differences between this driver and
>> UML's block driver are?
> LKL actually uses the standard virtio block driver, it does not
> implement a new (Linux kernel) driver.
> This patch is the implementation for the host side device (in virtio's
> spec lingo).
> Or maybe I misunderstood your question?

I just realized, that virtio does not depend on PCI, I thought you've implemented something
on your own. That said, UML could also use virtio block.

>> While UML and LKL have different goals they could at least share some drivers.
>> UML also has networking drivers you could reuse.
>> Maybe it would make sense to integrate LKL completely into arch/um if
>> we find a nice way
>> to combine them.
>> Would be a nice opportunity to clear away some dung from arch/um and
>> refactor it. :-)
> Yeah, that would be nice :) I think the key part is to define the
> right host operations (in LKL terms) that can support UML. I'll have
> to spend some time to study UML's internals a bit to see if that would
> be doable.

arch/um/os-Linux/ is a good place to start. It implements most things on the host side.
Drivers like UML'S block driver always have foo_user.c and foo_kern.c part.

In case of any questions, just ask!

To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at
Please read the FAQ at