Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 14 Jan 1999 14:30:42 -0800 (PST)
From:      atrens@nortel.ca
To:        freebsd-gnats-submit@FreeBSD.ORG
Subject:   kern/9497: ide_pci.c is broken
Message-ID:  <199901142230.OAA19865@hub.freebsd.org>

next in thread | raw e-mail | index | archive | help

>Number:         9497
>Category:       kern
>Synopsis:       ide_pci.c is broken
>Confidential:   no
>Severity:       critical
>Priority:       high
>Responsible:    freebsd-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Thu Jan 14 14:40:00 PST 1999
>Closed-Date:
>Last-Modified:
>Originator:     Andrew Atrens
>Release:        3.0-Current
>Organization:
self
>Environment:
FreeBSD churchill 3.0-CURRENT FreeBSD 3.0-CURRENT #1: Wed Jan 13 01:22:45 EST 1999     root@churchill:/home/cvs/sys/compile/CHURCHILL  i386

>Description:
I've been experiencing pci-ide timeouts of the showstopper variety.
My system freezes on boot with DMA timeout messages when it tries to
mount root on wd1.

I've determined that a patch submitted in the middle of December _is 
wrong_ and has caused this problem. Please back out the patch...

> Dec 21 8:55:56 1998 UTC by msmith 
> Diffs to 1.18 
>
> Check for DMA capbility is against unit,not controller.
>
> Submitted by:   Lee Cremeans <lee@st-lcremean.tidalwave.net>




>How-To-Repeat:
On systems experiencing this problem, the problem manifests as a
complete freeze-up upon mounting a DMA capable disk.
>Fix:
The following patch (submitted in the middle of December is _wrong_
and breaks PCI/UDMA support. Please back it out.
 
# diff -c /home/cvs/sys/pci/ide_pci.c*
*** /home/cvs/sys/pci/ide_pci.c Mon Jan 11 19:29:54 1999
--- /home/cvs/sys/pci/ide_pci.c.ctm     Mon Jan 11 19:28:35 1999
***************
*** 1195,1201 ****
  
        cp = softc.cookies.lh_first;
        while(cp) {
!               if (cp->ctlr == unit &&
                        ((iobase_wd == 0) || (cp->iobase_wd ==
                          iobase_wd)))
                        break;
                cp = cp->le.le_next;
--- 1195,1201 ----
  
        cp = softc.cookies.lh_first;
        while(cp) {
!               if (cp->unit == unit &&
                        ((iobase_wd == 0) || (cp->iobase_wd ==
                          iobase_wd)))
                        break;
                cp = cp->le.le_next;


>Release-Note:
>Audit-Trail:
>Unformatted:

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-bugs" in the body of the message



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199901142230.OAA19865>