qemu-devel
[Top][All Lists]
Advanced

[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 so


From: Pavel Pisa
Subject: Re: [Qemu-devel] [PATCH V4 0/7] CAN bus support for QEMU (SJA1000 PCI so far)
Date: Tue, 30 Jan 2018 23:12:59 +0100
User-agent: KMail/1.9.10 (enterprise35 0.20100827.1168748)

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



reply via email to

[Prev in Thread] Current Thread [Next in Thread]