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

[Xen-users] DMA Crash when I test GPL Windows PV Driver by iperf


  • To: xen-users@xxxxxxxxxxxxxxxxxxx
  • From: Qian Huibin <qianhb@xxxxxxxxx>
  • Date: Sun, 8 Nov 2009 21:22:55 +0800
  • Cc: james.harper@xxxxxxxxxxxxxxxx
  • Delivery-date: Mon, 09 Nov 2009 05:00:33 -0800
  • Domainkey-signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:date:message-id:subject:from:to:cc:content-type; b=qn0udlWLu26O/aX32crJsSh5QrW/ebgVblk7aY0H9QUL+21tpAV6Ty/C6PtEoAzUYq vvgR3yvzOI58Av+Xdq6pNzitq4fRS+iK+SPuNtH/pkKYsgt63is8kDFdjzIo+2o13ZQL 7Ogp4v+w8tdhmNg6aXKoM48k3Sb37m9QZXlEY=
  • List-id: Xen user discussion <xen-users.lists.xensource.com>

Hey All,
 
When I did a test of GPL Windows PV Driver on Windows XP SP2 by iperf, I found a DMA Crash.
And the Crash occurs every times.
The test is as following:
I install GPL Windows PV Driver (0.10.0.130) for XP as DomU , and Suse 11 as Dom0 on Xen 3.3.1.
When I set DomU as iperf's Client and Dom0 as Server.
 
iperf client on DomU (XP):
iperf -c $SERVER_IP -i 1 -l 1 -w 64k
iperf server on Dom0 (Suse 11 & xen 3.3.1)
iperf -s -l 1 l -w 64k
 
Scatter/gather enabled
 
IF I SET -l (buff size ) as 1 byte ( in fact from 1 byte to 9 bytes), the DomU (XP) crashed everything (Scatter/gather enabled).
 
I use windbg to analyze the Windows Mem Dump, I found the crash callstack  as following:
 
XenNet_RxBufferCheck() -> ... ->  XenPci_DOP_BuildScatterGatherList() -> XenPci_DOP_BuildScatterGatherListButDontExecute()
 
        for (i = 0; remaining > 0; i++)
        {
          pfn = MmGetMdlPfnArray(curr_mdl)[pfn_offset + i];
          ASSERT(pfn);
          gref = (grant_ref_t)GntTbl_GrantAccess(xpdd, 0, (ULONG)pfn, FALSE, INVALID_GRANT_REF);
          ASSERT(gref != INVALID_GRANT_REF); // gref gets a value of INVALID_GRANT_REF, Crash occurs!!!
          sglist->Elements[sg_element].Address.QuadPart = (LONGLONG)(gref << PAGE_SHIFT) | offset;
          sglist->Elements[sg_element].Length = min(min(PAGE_SIZE - offset, remaining), total_remaining);
          total_remaining -= sglist->Elements[sg_element].Length;
          remaining -= sglist->Elements[sg_element].Length;
          offset = 0;
          sg_element++;
        }
I donot know how to fix it.
I think the Satter/Gather is related to transfer NOT receive, why crash when receving data.
because of  -l set as 1 byte, then using more gref to store outgoing data, and gref is NOT enough?
 
pls have a look at this problem.
 
Thanks

--
Huibin.QIAN
Hangzhou,China
_______________________________________________
Xen-users mailing list
Xen-users@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-users

 


Rackspace

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