Thread (1 message) flat view 1 message, 1 author, 2021-06-29

Re: [PATCH v10] i2c: virtio: add a virtio i2c frontend driver

From: Viresh Kumar <viresh.kumar@linaro.org>
Date: 2021-06-29 04:10:27
Also in: linux-i2c, lkml

I will be replying here instead of replying to each and every msg :)

On 28-06-21, 16:58, Wolfram Sang wrote:
quoted
You can fine Viresh's vhost-user implementation at
https://lore.kernel.org/qemu-devel/cover.1617278395.git.viresh.kumar@linaro.org/t/#m3b5044bad9769b170f505e63bd081eb27cef8db2 (local)
It looks OK so far; yet, it is not complete. But it might be bearable
in the end.
While we are at it, this has been replaced by a Rust counterpart [1]
(as that makes it hypervisor agnostic, which is the goal of my work
here) and I need someone with I2C knowledge to help review it. It
should be okay even if you don't understand Rust a lot, just review
this file[2] which is where most of i2c specific stuff lies.
quoted
As you say, it does get a bit clumsy, but I think there is also a good argument
to be made that the clumsiness is based on the host Linux user interface
more than the on the requirements of the physical interface,
and that should not have to be reflected in the virtio specification.
Makes sense to me.
quoted
Right, this one has come up before as well: the preliminary result
was to assume that this probably won't be needed, but would be easy
enough to add later if necessary.
If adding support incrementally works for such an interface, this makes
sense as well.
Yes, we don't support few of SMBUS transaction (the block ones) as you
specified.
So, where are we?
The virtio specification is already merged and here is the latest
version [3].
As I understand, this v10 does not support I2C transactions (or
I2C_RDWR as you said).
I am not sure why you say I2C_RDWR isn't supported. The spec and Linux
driver (+ my Rust/qemu backend), they all support I2C_RDWR as well as
SMBUS. To clarify on an earlier point, every virtio transfer may
contain one or more struct i2c_msg instances, all processed together
(as expected).

If you see virtio_i2c_send_reqs() in this patch, you will see that it
converts a stream of i2c_req messages to their virtio counterparts and
send them together, consider it a single transaction.
But you want to support all clients. So, this doesn't match, or?
-- 
viresh

[1] https://github.com/rust-vmm/vhost-device/pull/1
[2] https://github.com/rust-vmm/vhost-device/blob/5aa22c92faac84ab07b6b15a214513556e8b1d01/src/i2c/src/i2c.rs
[3] https://github.com/oasis-tcs/virtio-spec/blob/master/virtio-i2c.tex
_______________________________________________
Virtualization mailing list
Virtualization@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/virtualization
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help