[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH V4 0/7] CAN bus support for QEMU (SJA1000 PCI s
From: |
Deniz Eren |
Subject: |
Re: [Qemu-devel] [PATCH V4 0/7] CAN bus support for QEMU (SJA1000 PCI so far) |
Date: |
Wed, 31 Jan 2018 04:07:34 +0000 (GMT) |
Hi Paolo,
Thank you for the correction! Greatly appreciated and it worked.
I tested all combinations of Linux host using virtual Socket-CAN and pcm3680
and mioe3680 client QEmu Linux environments using Linux Socket-CAN drivers,
sending and receiving from each-other (all combinations; host-to-client,
client-to-client, etc).
All tests passed!
Details:
Setup virtual Socket-CAN from host Linux system:
$ sudo ip link add dev vcan0 type vcan
$ sudo ip link set up vcan0
$ sudo ip link add dev vcan1 type vcan
$ sudo ip link set up vcan1
$ sudo ip link set vcan0 txqueuelen 15
$ sudo ip link set vcan1 txqueuelen 15
Starting 2 x QEmu sessions from host Linux; one for pcm3680 and other for
mioe3680:
$ ./qemu-local/bin/qemu-system-i386 -hda sdd2gb-uno1483-16.04-2.0-dev.img -boot
d -k en-us -object can-bus,id=canbus0 -object can-bus,id=canbus1 -object
can-host-socketcan,id=canhost0,canbus=canbus0,if=vcan0 -object
can-host-socketcan,id=canhost1,canbus=canbus1,if=vcan1 -device
mioe3680_pci,canbus0=canbus0,canbus1=canbus1 -m size=2048 -netdev user,id=user.0
-device e1000,netdev=user.0 -redir tcp:5022::22 -enable-kvm &
$ ./qemu-local/bin/qemu-system-i386 -hda sdd2gb-uno1483-16.04-2.0-dev-copy.img
-boot d -k en-us -object can-bus,id=canbus0 -object can-bus,id=canbus1 -object
can-host-socketcan,id=canhost0,canbus=canbus0,if=vcan0 -object
can-host-socketcan,id=canhost1,canbus=canbus1,if=vcan1 -device
pcm3680_pci,canbus0=canbus0,canbus1=canbus1 -m size=2048 -netdev user,id=user.0
-device e1000,netdev=user.0 -redir tcp:6022::22 -enable-kvm &
Login to client QEmu instances and setup CAN networks:
$ ssh -Yp5022 address@hidden
$ sudo ip link set can0 type can bitrate 250000
$ sudo ip link set can1 type can bitrate 250000
$ sudo ip link set up can0
$ sudo ip link set up can1
$ sudo ip link set can0 txqueuelen 15
$ sudo ip link set can1 txqueuelen 15
$ ssh -Yp6022 address@hidden
$ ... similarly ...
Then tried all combinations of "candump vcan0/1" from host and "candump can0/1"
from clients for transmission and reception to and from host to client and client to client.
user@:~$ candump can1
can1 123 [8] 11 22 33 44 55 66 77 88
can1 123 [8] 11 22 33 44 55 66 77 88
can1 123 [8] 11 22 33 44 55 66 77 88
host:$ candump vcan0
vcan0 123 [8] 11 22 33 44 55 66 77 88
vcan0 123 [8] 11 22 33 44 55 66 77 88
vcan0 123 [8] 11 22 33 44 55 66 77 88
vcan0 123 [8] 11 22 33 44 55 66 77 88
All successful.
Best regards,
Deniz
On Jan 31, 2018, at 12:10 PM, Paolo Bonzini <address@hidden> wrote:
On 30/01/2018 20:08, Paolo Bonzini wrote:
On 30/01/2018 19:13, Deniz Eren wrote:
Hi Pavel, Paolo,
I tried to rerun my environment to test however it seems the interface has
changed a little and my standard program options cause complaints.
Unfortunately I don’t have too much time to dig through at the moment.
My standard startup command is:
$ ./qemu-local/bin/qemu-system-i386 -hda sdd2gb-uno1483-16.04-2.0-dev.img -boot d
-k en-us -device
mioe3680_pci,canbus1=canbus0,host1=vcan0,canbus2=canbus1,host2=vcan1 -m size=2048
-netdev user,id=user.0 -device e1000,netdev=user.0 -redir tcp:5022::22 -enable-kvm
&
Yep, it's now like this:
./qemu-local/bin/qemu-system-i386 \
-hda sdd2gb-uno1483-16.04-2.0-dev.img -boot d -k en-us \
-object can-bus,id=canbus0 \
-object can-bus,id=canbus1 \
-object can-host-socketcan,id=canhost0,canbus=canbus0,ifname=vcan0 \
-object can-host-socketcan,id=canhost1,canbus=canbus1,ifname=vcan1 \
-device mioe3680_pci,canbus0=canbus0,canbus1=canbus1 \
-m size=2048 -netdev user,id=user.0 -device e1000,netdev=user.0 \
-redir tcp:5022::22 -enable-kvm
Sorry, all "ifname" are "if".
Paolo
Thanks,
Paolo
Best regards,
Deniz
Sent from my iPhone
Deniz Eren
+61 400 307 762
On 31 Jan 2018, at 9:12 am, Pavel Pisa <address@hidden> wrote:
Hello Paolo,
thanks much for conversion to acceptable QOM model.
On Tuesday 30 of January 2018 15:15:22 Paolo Bonzini wrote:
On 25/01/2018 22:33, Pavel Pisa wrote:
Hello Paolo,
thanks for suggestions. I understand and fully agree with your
request to switch to QOM. I have succeed with that for CAN devices
some time ago. It worth to be done for the rest of the objects
but I fear that I do not find time to complete QOMification
in reasonable future. Contributions/suggestions from other
are welcomed. I can look for students for GSoC at our university
or under other funding.
Please take a look at branch can-pci-qom of github.com/bonzini/qemu.git.
Apart from QOMification of the backend include, I simplified the IRQ
handling in can_kvaser_pci (fixing bugs too I think), and removed an
unnecessary mutex. I also moved the files to net/can and hw/net/can so
that in the future Jason (networking maintainer) can take care of pull
requests.
I might have broken something, and the top commit in particular is
completely untested.
I have run basic test with Linux kernel on both sides
for one kavser_pci card on guest side and vcan (no real interface)
on host side.
Mesages exchange tests passed and looks OK.
I have used next parameters
-object can-bus,id=canbus0 \
-device kvaser_pci,canbus=canbus0 \
-object can-host-socketcan,if=can0,canbus=canbus0,id=canbus0-socketcan
The id parameter is required for "can-host-socketcan" object.
Else next error is printed
qemu-system-x86_64: -object can-host-socketcan,if=can0,canbus=canbus0:
Parameter 'id' is missing
If "-object can-bus,id=canbus0" is missing then next error is reported
qemu-system-x86_64: -object
can-host-socketcan,if=can0,canbus=canbus0,id=canbus0-socketcan: Device
'canbus0' not found
I have inspected through monitor the state of objects
(qemu) qom-list /objects
canbus0-socketcan (child<can-host-socketcan>)
type (string)
canbus0 (child<can-bus>)
(qemu) info qom-tree
/machine (pc-i440fx-2.12-machine)
...
/peripheral-anon (container)
/device[1] (kvaser_pci)
/bus master[0] (qemu:memory-region)
/kvaser_pci-xilinx[0] (qemu:memory-region)
/kvaser_pci-s5920[0] (qemu:memory-region)
/kvaser_pci-sja[0] (qemu:memory-region)
/bus master container[0] (qemu:memory-region)
...
(qemu) qom-list /objects
canbus0-socketcan (child<can-host-socketcan>)
type (string)
canbus0 (child<can-bus>)
(qemu) qom-list /machine/peripheral-anon/device[1]
bus master container[0] (child<qemu:memory-region>)
canbus (link<can-bus>)
rombar (uint32)
hotpluggable (bool)
x-pcie-lnksta-dllla (bool)
kvaser_pci-sja[0] (child<qemu:memory-region>)
multifunction (bool)
hotplugged (bool)
parent_bus (link<bus>)
romfile (str)
kvaser_pci-s5920[0] (child<qemu:memory-region>)
x-pcie-extcap-init (bool)
command_serr_enable (bool)
addr (int32)
type (string)
legacy-addr (str)
kvaser_pci-xilinx[0] (child<qemu:memory-region>)
realized (bool)
bus master[0] (child<qemu:memory-region>)
From the user point of view, it would be nice if "can-bus"
can be populated when required automatically.
I am not sure, but may it be that it would worth to
push can-bus objects under some category/specific
container. The path /objects is quite wide.
Into something like /object/can-bus or /net/can.
But generally thanks much, the progress you have made
in one day is really great. I hope that others check
your branch. I have pushed your unmodified version into
"can-pci-qom" branch of my repo
https://gitlab.fel.cvut.cz/canbus/qemu-canbus/tree/can-pci-qom
It would be great if others can check that everything
works in their setup. I think that then it can be pushed
into mainline and some usability improvements can be
done/experiment with later.
Thanks much,
Pavel Pisa
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- Re: [Qemu-devel] [PATCH V4 0/7] CAN bus support for QEMU (SJA1000 PCI so far),
Deniz Eren <=