[Xen-devel] modifying drivers

Ritu kaur
Thu, 18 Feb 2010 16:27:44 -0000

Hi,

I am modifying netback driver code such that it allows access to only one
domU(based on lowest domid) when multiple domUs are present. When the domU
with the lowest domid is suspended then the next domU in the list will get
access. I believe it can be done via xe/xm commands or via Citrix Xencenter
by selecting or deselecting during vm installation or by adding and deleting
nics, however, I wanted to control this from netback driver. For this,

1.  keep track of devices created via netback_probe function which is called
for every device.
2. Use domid field in netif_st data structure
3. Added new function netif_check_domid and placed it along with
netif_schedulable, I add a check if netif->domid is the lowest one(via list
created in step 1)
4. Function netif_schedulable is called from
a. tx_queue_callback
b. netif_be_start_xmit
c. net_rx_action
d. add_to_net_schedule_tail
e. netif_be_int

This works fine for the first vm that comes up. However, subsequent vm
bringup has issues which reboots dom0 itself.

5. I removed the function added by me in function netif_be_start_xmit only,
this allows multiple vm''s to be up and will allow only first vm to
access
netback. However, this has issues with the second functionality I would like
to have i.e when first vm is suspended, next vm in the list should get
access. I added kernel printfs in above functions and none of them are
called after first vm is suspended and subsequent vm is trying to access.

Wanted to know inputs from experts on this and how to proceed with
debugging.

Thanks