[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] PATCH: multicall and auto_translated in netfront.c



> diff -r bef360142b62 -r ee4aef404bce 
> linux-2.6-xen-sparse/drivers/xen/netfront/netfront.c
> --- a/linux-2.6-xen-sparse/drivers/xen/netfront/netfront.c    Mon Aug 14 
> 14:21:21 2006 -0600
> +++ b/linux-2.6-xen-sparse/drivers/xen/netfront/netfront.c    Fri Aug 18 
> 14:00:37 2006 +0200
> @@ -1220,13 +1220,20 @@ err:
>  
>       /* Do all the remapping work, and M2P updates, in one big hypercall. */
>       if (likely(pages_done)) {
> -             mcl = np->rx_mcl + pages_done;
> +             unsigned int mcl_off;
> +
> +             if (!xen_feature(XENFEAT_auto_translated_physmap))
> +                     mcl_off = pages_done;
> +             else
> +                     mcl_off = 0;
> +
The intent of this code was that pages_done should be 0 if
auto_translated_physmap was set, so this should be a no-op.  It gets
initialised to 0 at the top of the big loop, and is then only modified
by xennet_get_responses through its mcl_offset_p pointer.
xennet_get_responses only modifies it if
!xen_feature(XENFEAT_auto_translated_physmap).  Am I simply confused?

(And, in fact, if pages_done != 0 then the mmu update you do next will
be incorrect)

> +             mcl = np->rx_mcl + mcl_off;
>               mcl->op = __HYPERVISOR_mmu_update;
>               mcl->args[0] = (unsigned long)np->rx_mmu;
>               mcl->args[1] = pages_done;
>               mcl->args[2] = 0;
>               mcl->args[3] = DOMID_SELF;
> -             (void)HYPERVISOR_multicall(np->rx_mcl, pages_done + 1);
> +             (void)HYPERVISOR_multicall(np->rx_mcl, mcl_off + 1);
>       }
>  
>       while ((skb = __skb_dequeue(&errq)))

Steven.

Attachment: signature.asc
Description: Digital signature

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.