I’m trying to experiment with adding a Qemu devices (ethernet/NIC) and it’s 
corresponding Linux driver. I’ve chosen to port the following ‘codeproject’ 
project:
https://www.codeproject.com/Articles/1087177/Linux-Ethernet-Driver-using-Qemu

Since this was written a couple of years back, it didn’t integrate with latest 
qemu directly so I modified the code like so:
https://github.com/qemu/qemu/compare/master...redbilledpanda:skel_eth

I am unable to ascertain whether this device is indeed getting realized or not.

I am invoking qemu like so:

‘qemu-system-arm -m 512M -M vexpress-a9 -D qemu.log -kernel 
buildroot-2019.02.5/output/images/zImage -dtb 
buildroot-2019.02.5/output/images/vexpress-v2p-ca9.dtb -append "console=ttyAMA0 
ip=dhcp" -initrd buildroot-2019.02.5/output/images/rootfs.cpio -nographic -net 
nic -net bridge,br=mybridge’

On the linux kernel side, if I keep the existing driver for the board (aka 
lan9118), everything is A-OK and the machine boots up and I can see the log. 
However when I replace that with the (modified) driver from the aforementioned 
codeproject link, I get an (expected) kernel panic. Which can only mean that my 
device backend is still lan9118 and not skel_eth_dev (the one I added). I tried 
specifying the model explicitly while invoking qemu like so:

‘qemu-system-arm -m 512M -M vexpress-a9 -D qemu.log -kernel 
buildroot-2019.02.5/output/images/zImage -dtb 
buildroot-2019.02.5/output/images/vexpress-v2p-ca9.dtb -append "console=ttyAMA0 
ip=dhcp" -initrd buildroot-2019.02.5/output/images/rootfs.cpio -nographic -net 
nic,model=skel_eth_dev -net bridge,br=mybridge’

This is the string I used in the ‘typeinfo’ structure while registering the 
device

#define TYPE_SKEL_ETH_DEV       "skel_eth_dev"

…
static const TypeInfo skel_eth_device_info = {$

    .name          = TYPE_SKEL_ETH_DEV,$

     .parent        = TYPE_SYS_BUS_DEVICE,$

     .instance_size = sizeof(skel_eth_device_state),$

     .class_init    = skel_eth_device_class_init,$

};

To which I get the following error:
skel_eth_device: skel_eth_device_register_types

skel_eth_device: skel_eth_device_class_init

qemu-system-arm: Unsupported NIC model: skel_eth_dev

what are the two messages I see in the first two lines? And why does qemu say 
this model isn’t supported? I am unable to see any log message whatsoever in 
qemu.log

Keen to hear

Aijaz Baig

Reply via email to