* [BK PATCH] More fixes for 2.6.0-test9
@ 2003-11-07 19:26 Greg KH
2003-11-07 19:27 ` [PATCH] " Greg KH
0 siblings, 1 reply; 4+ messages in thread
From: Greg KH @ 2003-11-07 19:26 UTC (permalink / raw)
To: torvalds; +Cc: linux-usb-devel, linux-kernel
Hi,
Here are some more minor fixes for 2.6.0-test9. These fixes do the
following:
- fix oops with cardbus firewire controllers
- fix oops with usbnet devices on non-i386 platforms
- fix oops when removing the usb-storage module when using
preempt.
Please pull from: bk://linuxusb.bkbits.net/gregkh-2.6
Patches will be posted as a follow-up thread for those who want to see
them.
thanks,
greg k-h
drivers/pci/quirks.c | 2 +-
drivers/usb/host/ehci-hcd.c | 3 +++
drivers/usb/net/kaweth.c | 3 +++
drivers/usb/net/usbnet.c | 3 +++
drivers/usb/storage/usb.c | 19 +++++++++++++++----
5 files changed, 25 insertions(+), 5 deletions(-)
-----
<michael:metaparadigm.com>:
o PCI: Fix oops in quirk_via_bridge
David Brownell:
o USB: usb ignores 64bit dma
Matthew Dharm:
o USB: fix a thread-exit problem at module unload
^ permalink raw reply [flat|nested] 4+ messages in thread
* [PATCH] More fixes for 2.6.0-test9
2003-11-07 19:26 [BK PATCH] More fixes for 2.6.0-test9 Greg KH
@ 2003-11-07 19:27 ` Greg KH
2003-11-07 19:27 ` Greg KH
0 siblings, 1 reply; 4+ messages in thread
From: Greg KH @ 2003-11-07 19:27 UTC (permalink / raw)
To: linux-kernel, linux-usb-devel
ChangeSet 1.1418, 2003/11/07 10:04:16-08:00, michael@metaparadigm.com
[PATCH] PCI: Fix oops in quirk_via_bridge
I have a VIA cardbus 1394 controller which oops on insertion
after an APM suspend/resume cycle (without card inserted):
bounds: 0000 [#1]
CPU: 0
EIP: 0060:[<c0300060>] Tainted: PF
EFLAGS: 00010206
EIP is at quirk_via_bridge+0x4/0x1c
eax: 0000ffff ebx: c02982e0 ecx: d1958000 edx: 000c0010
esi: d1958000 edi: 00000001 ebp: 00000000 esp: da401ee8
ds: 007b es: 007b ss: 0068
Process pccardd (pid: 1093, threadinfo=da400000 task=da4c8780)
Stack: c019fb85 d1958000 00000001 d1958000 00000000 c019fbc2 d1958000 00000001
c02980a0 d1958000 dfdebf14 c019d828 00000001 d1958000 00000000 dec2802c
dfdebf00 dfdebf14 00000000 e3dfe7c7 dfdebf00 00000000 dec2802c da401f48
Call Trace:
[<c019fb85>] pci_do_fixups+0x52/0x54
[<c019fbc2>] pci_fixup_device+0x3b/0x49
[<c019d828>] pci_scan_slot+0x46/0x8f
[<e3dfe7c7>] cb_alloc+0x29/0xf7 [pcmcia_core]
[<e3dfb9aa>] socket_insert+0x90/0x102 [pcmcia_core]
[<e3dfbc0d>] socket_detect_change+0x54/0x7e [pcmcia_core]
[<e3dfbdbc>] pccardd+0x185/0x1f9 [pcmcia_core]
quirk_via_bridge (which is marked device PCI_ANY_ID) triggers on
my 1394 controller which vendor=VIA but is not a bridge.
Making the quirk __devinit solves the problem.
drivers/pci/quirks.c | 2 +-
1 files changed, 1 insertion(+), 1 deletion(-)
diff -Nru a/drivers/pci/quirks.c b/drivers/pci/quirks.c
--- a/drivers/pci/quirks.c Fri Nov 7 11:22:16 2003
+++ b/drivers/pci/quirks.c Fri Nov 7 11:22:16 2003
@@ -646,7 +646,7 @@
int interrupt_line_quirk;
-static void __init quirk_via_bridge(struct pci_dev *pdev)
+static void __devinit quirk_via_bridge(struct pci_dev *pdev)
{
if(pdev->devfn == 0)
interrupt_line_quirk = 1;
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH] More fixes for 2.6.0-test9
2003-11-07 19:27 ` Greg KH
@ 2003-11-07 19:27 ` Greg KH
0 siblings, 0 replies; 4+ messages in thread
From: Greg KH @ 2003-11-07 19:27 UTC (permalink / raw)
To: linux-kernel, linux-usb-devel
ChangeSet 1.1420, 2003/11/07 10:19:35-08:00, david-b@pacbell.net
[PATCH] USB: usb ignores 64bit dma
The dma hooks whereby EHCI can pass 64bit DMA support
up the driver stack (to avoid buffer copies) turn out
to broken on most architectures(*). This patch just
disables them all, since it looks like those mechanisms
won't get fixed before 2.6.0-final. For now it'd only
matter on a few big Intel boxes anyway.
Please merge.
- Dave
(*) On x86, mips, and arm dma_supported() doesn't
even compare with the device's mask. On several
other architectures (reported on ppc, alpha,
and sparc64), asking that question for non-PCI
devices will just BUG() -- even though all info
needed to answer the question is right at hand.
drivers/usb/host/ehci-hcd.c | 3 +++
drivers/usb/net/kaweth.c | 3 +++
drivers/usb/net/usbnet.c | 3 +++
3 files changed, 9 insertions(+)
diff -Nru a/drivers/usb/host/ehci-hcd.c b/drivers/usb/host/ehci-hcd.c
--- a/drivers/usb/host/ehci-hcd.c Fri Nov 7 11:22:04 2003
+++ b/drivers/usb/host/ehci-hcd.c Fri Nov 7 11:22:04 2003
@@ -426,8 +426,11 @@
*/
if (HCC_64BIT_ADDR (hcc_params)) {
writel (0, &ehci->regs->segment);
+#if 0
+// this is deeply broken on almost all architectures
if (!pci_set_dma_mask (ehci->hcd.pdev, 0xffffffffffffffffULL))
ehci_info (ehci, "enabled 64bit PCI DMA\n");
+#endif
}
/* help hc dma work well with cachelines */
diff -Nru a/drivers/usb/net/kaweth.c b/drivers/usb/net/kaweth.c
--- a/drivers/usb/net/kaweth.c Fri Nov 7 11:22:04 2003
+++ b/drivers/usb/net/kaweth.c Fri Nov 7 11:22:04 2003
@@ -1120,8 +1120,11 @@
usb_set_intfdata(intf, kaweth);
+#if 0
+// dma_supported() is deeply broken on almost all architectures
if (dma_supported (&intf->dev, 0xffffffffffffffffULL))
kaweth->net->features |= NETIF_F_HIGHDMA;
+#endif
SET_NETDEV_DEV(netdev, &intf->dev);
if (register_netdev(netdev) != 0) {
diff -Nru a/drivers/usb/net/usbnet.c b/drivers/usb/net/usbnet.c
--- a/drivers/usb/net/usbnet.c Fri Nov 7 11:22:04 2003
+++ b/drivers/usb/net/usbnet.c Fri Nov 7 11:22:04 2003
@@ -2972,9 +2972,12 @@
strcpy (net->name, "usb%d");
memcpy (net->dev_addr, node_id, sizeof node_id);
+#if 0
+// dma_supported() is deeply broken on almost all architectures
// possible with some EHCI controllers
if (dma_supported (&udev->dev, 0xffffffffffffffffULL))
net->features |= NETIF_F_HIGHDMA;
+#endif
net->change_mtu = usbnet_change_mtu;
net->get_stats = usbnet_get_stats;
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH] More fixes for 2.6.0-test9
2003-11-07 19:27 ` [PATCH] " Greg KH
@ 2003-11-07 19:27 ` Greg KH
2003-11-07 19:27 ` Greg KH
0 siblings, 1 reply; 4+ messages in thread
From: Greg KH @ 2003-11-07 19:27 UTC (permalink / raw)
To: linux-kernel, linux-usb-devel
ChangeSet 1.1419, 2003/11/07 10:07:03-08:00, mdharm-usb@one-eyed-alien.net
[PATCH] USB: fix a thread-exit problem at module unload
This patch fixes a thread-exit problem when the usb-storage module is
unloaded with a preemptable kernel. Please refer to the comments in the
code for more detail.
drivers/usb/storage/usb.c | 19 +++++++++++++++----
1 files changed, 15 insertions(+), 4 deletions(-)
diff -Nru a/drivers/usb/storage/usb.c b/drivers/usb/storage/usb.c
--- a/drivers/usb/storage/usb.c Fri Nov 7 11:22:10 2003
+++ b/drivers/usb/storage/usb.c Fri Nov 7 11:22:10 2003
@@ -417,10 +417,21 @@
scsi_unlock(host);
} /* for (;;) */
- /* notify the exit routine that we're actually exiting now */
- complete(&(us->notify));
-
- return 0;
+ /* notify the exit routine that we're actually exiting now
+ *
+ * complete()/wait_for_completion() is similar to up()/down(),
+ * except that complete() is safe in the case where the structure
+ * is getting deleted in a parallel mode of execution (i.e. just
+ * after the down() -- that's necessary for the thread-shutdown
+ * case.
+ *
+ * complete_and_exit() goes even further than this -- it is safe in
+ * the case that the thread of the caller is going away (not just
+ * the structure) -- this is necessary for the module-remove case.
+ * This is important in preemption kernels, which transfer the flow
+ * of execution immediately upon a complete().
+ */
+ complete_and_exit(&(us->notify), 0);
}
/***********************************************************************
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2003-11-08 0:24 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2003-11-07 19:26 [BK PATCH] More fixes for 2.6.0-test9 Greg KH
2003-11-07 19:27 ` [PATCH] " Greg KH
2003-11-07 19:27 ` Greg KH
2003-11-07 19:27 ` Greg KH
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox