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 09:29:36 +0900 (JST)

 Hi,
 
 I think the patch,
 
http://cvsweb.netbsd.org/bsdweb.cgi/src/sys/dev/pci/ehci_pci.c.diff?r1=1.52&r2=1.53
 ,
 has two parts.
 And first part has problem.
 
 The following patch solves the problem on ML110 G7.
 
 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 00:22:17 -0000
 @@ -91,7 +91,7 @@
  enum ehci_pci_quirk_flags ehci_pci_lookup_quirkdata(pci_vendor_id_t,
        pci_product_id_t);
  
 -#define EHCI_MAX_BIOS_WAIT            100 /* ms*10 */
 +#define EHCI_MAX_BIOS_WAIT            1000 /* ms */
  #define EHCI_SBx00_WORKAROUND_REG     0x50
  #define EHCI_SBx00_WORKAROUND_ENABLE  __BIT(27)
  
 @@ -393,18 +393,16 @@
                if (EHCI_CAP_GET_ID(cap) != EHCI_CAP_ID_LEGACY)
                        goto next;
                legsup = pci_conf_read(pc, tag, addr + PCI_EHCI_USBLEGSUP);
 +              /* Ask BIOS to give up ownership */
 +              pci_conf_write(pc, tag, addr + PCI_EHCI_USBLEGSUP,
 +                  legsup | EHCI_LEG_HC_OS_OWNED);
                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);
                        for (ms = 0; ms < EHCI_MAX_BIOS_WAIT; ms++) {
                                legsup = pci_conf_read(pc, tag,
                                    addr + PCI_EHCI_USBLEGSUP);
                                if (!(legsup & EHCI_LEG_HC_BIOS_OWNED))
                                        break;
 -                              delay(10000);
 +                              delay(1000);
                        }
                        if (ms == EHCI_MAX_BIOS_WAIT) {
                                aprint_normal("%s: BIOS refuses to give up "
 
 --
 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