Source-Changes-HG archive

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

[src/netbsd-6]: src/sys/dev/pci Pull up following revision(s) (requested by t...



details:   https://anonhg.NetBSD.org/src/rev/1a46d392a055
branches:  netbsd-6
changeset: 774622:1a46d392a055
user:      riz <riz%NetBSD.org@localhost>
date:      Mon Oct 01 17:37:28 2012 +0000

description:
Pull up following revision(s) (requested by tstsui in ticket #569):
        sys/dev/pci/ehci_pci.c: revision 1.57
Fix PR kern/46828 (6.0_BETA2 and 6.0_RC1 won't start on DL320/G5p):
 In ehci_get_ownership(), don't explicitly clear EHCI_LEG_HC_BIOS_OWNED
 semaphore bit in the driver before asking BIOS to give up ownership.
 The EHCI spec implies that the semaphore should not be changed by
 the other agent and actually the previous one (introduced in rev 1.53
 after 5.x) caused hangup during probe on at least two HP machines
 as mentioned in the PR.  Analyzed and patch provided by Ryo ONODERA.
Should be pulled up to netbsd-6 (fatal hangup during boot).

diffstat:

 sys/dev/pci/ehci_pci.c |  8 +++-----
 1 files changed, 3 insertions(+), 5 deletions(-)

diffs (30 lines):

diff -r b56cde1156f6 -r 1a46d392a055 sys/dev/pci/ehci_pci.c
--- a/sys/dev/pci/ehci_pci.c    Mon Oct 01 17:35:05 2012 +0000
+++ b/sys/dev/pci/ehci_pci.c    Mon Oct 01 17:37:28 2012 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: ehci_pci.c,v 1.54 2012/01/30 19:41:19 drochner Exp $   */
+/*     $NetBSD: ehci_pci.c,v 1.54.2.1 2012/10/01 17:37:28 riz Exp $    */
 
 /*
  * Copyright (c) 2001, 2002 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ehci_pci.c,v 1.54 2012/01/30 19:41:19 drochner Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ehci_pci.c,v 1.54.2.1 2012/10/01 17:37:28 riz Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -386,10 +386,8 @@
                legsup = pci_conf_read(pc, tag, addr + PCI_EHCI_USBLEGSUP);
                if (legsup & EHCI_LEG_HC_BIOS_OWNED) {
                        /* Ask BIOS to give up ownership */
-                       legsup &= ~EHCI_LEG_HC_BIOS_OWNED;
-                       legsup |= EHCI_LEG_HC_OS_OWNED;
                        pci_conf_write(pc, tag, addr + PCI_EHCI_USBLEGSUP,
-                           legsup);
+                           legsup | EHCI_LEG_HC_OS_OWNED);
                        for (ms = 0; ms < EHCI_MAX_BIOS_WAIT; ms++) {
                                legsup = pci_conf_read(pc, tag,
                                    addr + PCI_EHCI_USBLEGSUP);



Home | Main Index | Thread Index | Old Index