WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-devel

[Xen-devel] RE: [PATCH] Fox for pcnet device model data corruption

To: "Keir Fraser" <Keir.Fraser@xxxxxxxxxxxx>
Subject: [Xen-devel] RE: [PATCH] Fox for pcnet device model data corruption
From: "Kamble, Nitin A" <nitin.a.kamble@xxxxxxxxx>
Date: Sat, 25 Feb 2006 07:27:43 -0800
Cc: Ian Pratt <m+Ian.Pratt@xxxxxxxxxxxx>, xen-devel@xxxxxxxxxxxxxxxxxxx
Delivery-date: Sat, 25 Feb 2006 15:28:10 +0000
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
List-help: <mailto:xen-devel-request@lists.xensource.com?subject=help>
List-id: Xen developer discussion <xen-devel.lists.xensource.com>
List-post: <mailto:xen-devel@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
Thread-index: AcY5/lIFe+/1HViZRo+CpFcyfzxqSAAH0xSc
Thread-topic: [PATCH] Fox for pcnet device model data corruption
Hi Keir,
   While copying a big file to VMX domain I observed that the receive ring in 
the DM was getting completely full; Partially because the VMX domain driver was 
not able to pull it off from the DM fast enough. In that case the DM was 
dropping the packet and sentting the status of 0x1000 and sending interrupt 
notifying the linux driver that the packets are lost due to space unavailabilty 
in the receive ring of DM. The pcnet driver handles this situation differently. 
Based on the real pcnet issues on some real hardware, the pcnet driver tries to 
clear up the receive ring, assuming it is full of errors. For the emulated DM 
that is not the case and things go wrong from that point onwards. I think the 
error handling part of the pcnet DM is not correct, and it causes the buffer 
overwrites resulting the corrpution we see.
   The patch is letting the DM detect the receive ring full condition in 
advance, so that packets will not be pushed to DM, in that situation, and that 
si better because otherwise it is just going to drop the packet and raise an 
error.
  Yeh, the DM is checking for this condition in the pcnet_receive(), to signal 
the OS driver that packets are dropped. But it is too late because the OS 
driver handling for this situation does not work properly for the DM.

Thanks & Regards,
Nitin
--------------------------------------------------
Open Source Technology Center, Intel Corp



-----Original Message-----
From: Keir Fraser [mailto:Keir.Fraser@xxxxxxxxxxxx]
Sent: Sat 2/25/2006 3:23 AM
To: Kamble, Nitin A
Cc: xen-devel@xxxxxxxxxxxxxxxxxxx; Ian Pratt
Subject: Re: [PATCH] Fox for pcnet device model data corruption
 

On 25 Feb 2006, at 00:10, Kamble, Nitin A wrote:

> Hi Ian,
>    The attached patch fixes pcnet data corruption for VMX guests as 
> reported by you.
> All the packets go through the qemu generic packet interface to the 
> specific device model. In this case the device model is pcnet.
>    The pcnet device model receiver is registered with it like this.
> qemu_add_read_packet(nd, pcnet_can_receive, pcnet_receive, d);
>    pcnet_can_receive function is used to tell the generic qemu 
> framework that the DM can receive packets. It is suppose block 
> incoming packets in the cases such as when the pcnet driver is not yet 
> started by the OS or pcnet device is suspended or stopped by the OS or 
> it is not ready to receive more packets.
>     When the traffic is heavy on the DM, its receive rings can get 
> filled up, and it will has to drop the receiving packets. This patch 
> detects this situation in the pcnet_can_receive() function and avoids 
> dropping of packets. This mechanism is working as a bandwidth 
> handshaking between device model and the sender. Dm is saying send me 
> up to the rate at which I can handle it.

I can see that this may avoid packet loss, but does pcnet_receive 
really get confused and corrupt data if there is no spare space? It 
appears to check the same status flag that you check in your patch?

  -- Keir


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

<Prev in Thread] Current Thread [Next in Thread>