Based on feedback received (and the fact that my mail system interjected linewraps into the patch), I'll be resubmitting with a tweak or two.
Thanks. Mark Overby Platform Architecture NVIDIA Corporation -----Original Message----- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Mark Overby Sent: Tuesday, July 19, 2005 12:21 PM To: linux-usb-devel@lists.sourceforge.net Subject: [linux-usb-devel] Proposed patch for NForce USB EHCI controllers with large memory systems ===================== This message appears to be from an NVIDIA.COM e-mail address, yet did not originate from an NVIDIA server. Please be cautious of any attachments or links in this message. Thank you, NVIDIA IT Team. ===================== After investigating reports of large memory issues with nForce EHCI controllers, NVIDIA has determined that EHCI data structures mapped above 2GB in memory will cause undefined behavior in USB2 devices. The symptoms may include system and device crashes. The data structures which will lead to this system behavior are all Transfer Descriptors used to control transfers on the USB2 bus. They are namely the Isochronous Transaction Descriptors (iTD) and Split-transaction Isochronous Transfer Descriptors (siTD) used in the periodic schedule; and Queue Heads (QH) used in the periodic and asynchronous schedules. Note that data buffers, Queue Element Transfer Descriptors (qTD), Frame Span Traversal Nodes (FSTN) and the Periodic Frame List are not affected by this restriction. We would request that this patch be included. If you have any questions, please feel free to e-mail me. Mark Overby Platform Architecture NVIDIA Corporation --- linux-2.6.12.3/drivers/usb/host/ehci-hcd.c 2005-07-15 14:18:57.000000000 -0700 +++ linux-2.6.12.3usbpatch/drivers/usb/host/ehci-hcd.c 2005-07-18 16:02:32.000000000 -0700 @@ -551,6 +551,23 @@ static int ehci_start (struct usb_hcd *h /* help hc dma work well with cachelines */ pci_set_mwi (pdev); + + /* chip-specific init */ + switch (pdev->vendor) { + case PCI_VENDOR_ID_NVIDIA: + switch (pdev->device) { + case 0x003c: /* MCP04 */ + case 0x005b: /* CK804 */ + case 0x00d8: /* CK8 */ + case 0x00e8: /* CK8S */ + /* >2GB Workaround for some of NVIDIA's EHCI controllers. */ + if ((retval = pci_set_consistent_dma_mask(pdev, 0x7fffffff)) != 0) { + printk(KERN_WARNING "Setting DMA mask workaround failed. This is harmless unless the system has 2GB or more RAM.\n"); + } + break; + } + break; + } } #endif ------------------------------------------------------- SF.Net email is sponsored by: Discover Easy Linux Migration Strategies from IBM. Find simple to follow Roadmaps, straightforward articles, informative Webcasts and more! Get everything you need to get up to speed, fast. http://ads.osdn.com/?ad_idt77&alloc_id492&op,ick _______________________________________________ linux-usb-devel@lists.sourceforge.net To unsubscribe, use the last form field at: https://lists.sourceforge.net/lists/listinfo/linux-usb-devel ------------------------------------------------------- SF.Net email is sponsored by: Discover Easy Linux Migration Strategies from IBM. Find simple to follow Roadmaps, straightforward articles, informative Webcasts and more! Get everything you need to get up to speed, fast. http://ads.osdn.com/?ad_idt77&alloc_id492&op=click _______________________________________________ linux-usb-devel@lists.sourceforge.net To unsubscribe, use the last form field at: https://lists.sourceforge.net/lists/listinfo/linux-usb-devel