NetBSD-Bugs archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: kern/46828 6.0_BETA2 and 6.0_RC1 won't start on DL320/G5p
The following reply was made to PR kern/46828; it has been noted by GNATS.
From: Ryo ONODERA <ryo_on%yk.rim.or.jp@localhost>
To: gnats-bugs%NetBSD.org@localhost
Cc:
Subject: Re: kern/46828 6.0_BETA2 and 6.0_RC1 won't start on DL320/G5p
Date: Sat, 22 Sep 2012 17:43:16 +0900 (JST)
Hi,
The following patch works well.
According to Intel's "Enhanced Host Controller Interface Specification
for Universal Serial Bus",
www.intel.com/technology/usb/download/ehci-r10.pdf .
In p.131,
"One semaphore is for the operating system (OS) and one is for the
BIOS. These semaphores are readable and writable. These fields are in
adjacent bytes, which allows each agent (OS or BIOS) to update their
respective semaphore without overwriting the other ownership semaphore."
I feel that BIOS part should not be overwritten by NetBSD.
Index: ehci_pci.c
===================================================================
RCS file: /cvsroot/src/sys/dev/pci/ehci_pci.c,v
retrieving revision 1.56
diff -u -r1.56 ehci_pci.c
--- ehci_pci.c 20 Jul 2012 01:26:19 -0000 1.56
+++ ehci_pci.c 22 Sep 2012 08:32:57 -0000
@@ -395,10 +395,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);
--
Ryo ONODERA // ryo_on%yk.rim.or.jp@localhost
PGP fingerprint = 82A2 DC91 76E0 A10A 8ABB FD1B F404 27FA C7D1 15F3
Home |
Main Index |
Thread Index |
Old Index