Re: [Xen-devel] modifying drivers

Ian Campbell
Thu, 18 Feb 2010 16:39:31 -0000

On Thu, 2010-02-18 at 16:27 +0000, Ritu kaur wrote:
> 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.

Why?

>  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.

The toolstack is exactly the correct place to make and implement this
sort of policy decision -- it has no place in the kernel netback driver.

Ian.

>  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