From nnd@ctserv.itfs.nsk.su  Sun Dec 14 23:13:01 1997
Received: from gw.itfs.nsk.su (gw.itfs.nsk.su [193.124.36.33])
          by hub.freebsd.org (8.8.7/8.8.7) with SMTP id XAA28818
          for <FreeBSD-gnats-submit@freebsd.org>; Sun, 14 Dec 1997 23:12:53 -0800 (PST)
          (envelope-from nnd@ctserv.itfs.nsk.su)
Received: from ctserv.itfs.nsk.su (ctserv.itfs.nsk.su [193.124.36.37]) by gw.itfs.nsk.su (8.6.12/8.6.12) with ESMTP id NAA05512 for <FreeBSD-gnats-submit@freebsd.org>; Mon, 15 Dec 1997 13:04:15 +0600
Received: (from root@localhost)
	by ctserv.itfs.nsk.su (8.8.8/8.8.8) id MAA01489;
	Mon, 15 Dec 1997 12:59:59 +0600 (NS)
	(envelope-from nnd)
Message-Id: <199712150659.MAA01489@ctserv.itfs.nsk.su>
Date: Mon, 15 Dec 1997 12:59:59 +0600 (NS)
From: nnd@itfs.nsk.su
Reply-To: nnd@itfs.nsk.su
To: FreeBSD-gnats-submit@freebsd.org
Subject: /sys/i386/isa/pcibus.c does'nt discovered Cyclades Cyclom-16YeP
X-Send-Pr-Version: 3.2

>Number:         5300
>Category:       i386
>Synopsis:       /sys/i386/isa/pcibus.c does'nt discovered Cyclades Cyclom-16YeP
>Confidential:   no
>Severity:       critical
>Priority:       medium
>Responsible:    se
>State:          closed
>Quarter:
>Keywords:
>Date-Required:
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Sun Dec 14 23:20:00 PST 1997
>Closed-Date:    Sat Dec 20 01:04:54 PST 1997
>Last-Modified:  Sat Dec 20 01:06:15 PST 1997
>Originator:     Nickolay N. Dudorov
>Release:        FreeBSD 3.0-971208-SNAP i386
>Organization:
STP Infoteka
>Environment:

	PC with PCI motherboard an ONLY Cyclades Cyclom-16YeP
	on the PCI bus.

>Description:

	Here is the (extract from) boot:-v dmesg for one of my PCs
before and after the next "patch" was applied to /sys/i386/isa/pcibus.c

=============================================================
--- pcibus.c.ORIG	Sun Dec 14 14:47:08 1997
+++ pcibus.c	Mon Dec 15 12:51:42 1997
@@ -162,7 +162,7 @@
 		class = inl(pci_cfgenable(0, device, 0, 8, 4)) >> 8;
 		if (bootverbose)
 			printf("[class=%06x] ", class);
-		if (class == 0 || (class & 0xf8f0ff) != 0)
+		if (class == 0 || (class & 0xf870ff) != 0)
 			continue;
 
 		header = inb(pci_cfgenable(0, device, 0, 14, 1));
===============================================================

Before:

Dec 14 14:34:25 ctserv /kernel: Copyright (c) 1992-1997 FreeBSD Inc.
Dec 14 14:34:25 ctserv /kernel: Copyright (c) 1982, 1986, 1989, 1991, 1993
Dec 14 14:34:25 ctserv /kernel: 	The Regents of the University of California. All rights reserved.
Dec 14 14:34:25 ctserv /kernel: FreeBSD 3.0-971208-SNAP #1: Sat Dec 13 20:39:41 NS 1997
Dec 14 14:34:25 ctserv /kernel:     nnd@ctserv.itfs.nsk.su:/usr/src/sys/compile/TSERV
Dec 14 14:34:25 ctserv /kernel: Calibrating clock(s) ... i8254 clock: 1193421 Hz
Dec 14 14:34:25 ctserv /kernel: CLK_USE_I8254_CALIBRATION not specified - using default frequency
Dec 14 14:34:25 ctserv /kernel: CPU: i486 DX2 (486-class CPU)
Dec 14 14:34:25 ctserv /kernel:   Origin = "GenuineIntel"  Id = 0x435  Stepping=5
Dec 14 14:34:25 ctserv /kernel:   Features=0x3<FPU,VME>
Dec 14 14:34:25 ctserv /kernel: real memory  = 16777216 (16384K bytes)
Dec 14 14:34:25 ctserv /kernel: Physical memory chunk(s):
Dec 14 14:34:26 ctserv /kernel: 0x00001000 - 0x0009efff, 647168 bytes (158 pages)
Dec 14 14:34:26 ctserv /kernel: 0x00206000 - 0x00ffdfff, 14647296 bytes (3576 pages)
Dec 14 14:34:26 ctserv /kernel: avail memory = 14688256 (14344K bytes)
Dec 14 14:34:26 ctserv /kernel: Found BIOS32 Service Directory header at 0xf00f0120
Dec 14 14:34:26 ctserv /kernel: Entry = 0xf138c (0xf00f138c)  Rev = 0  Len = 1
Dec 14 14:34:26 ctserv /kernel: PCI BIOS entry at 0x1370
Dec 14 14:34:26 ctserv /kernel: Other BIOS signatures found:
Dec 14 14:34:26 ctserv /kernel: ACPI: 00000000
Dec 14 14:34:26 ctserv /kernel: $PnP: 000f0130
Dec 14 14:34:26 ctserv /kernel: pci_open(1):	mode 1 addr port (0x0cf8) is 0x80002858
Dec 14 14:34:26 ctserv /kernel: pci_open(1a):	mode1res=0x80000000 (0x80000000)
Dec 14 14:34:26 ctserv /kernel: pci_cfgcheck:	device 0 1 2 3 4 5 [class=000000] 6 7 8 9 10 11 12 13 14 15 16 17 18 19 [class=078000] 20 21 22 23 24 25 26 27 28 29 30 31 -- nothing found
Dec 14 14:34:26 ctserv /kernel: pci_open(1b):	mode1res=0xff000001 (0xff000001)
Dec 14 14:34:26 ctserv /kernel: pci_open(2):	mode 2 enable port (0x0cf8) is 0xff
Dec 14 14:34:26 ctserv /kernel: Probing for devices on the ISA bus:


After:


Dec 14 14:48:41 ctserv /kernel: Copyright (c) 1992-1997 FreeBSD Inc.
Dec 14 14:48:41 ctserv /kernel: Copyright (c) 1982, 1986, 1989, 1991, 1993
Dec 14 14:48:41 ctserv /kernel: 	The Regents of the University of California. All rights reserved.
Dec 14 14:48:41 ctserv /kernel: FreeBSD 3.0-971208-SNAP #2: Sun Dec 14 14:47:22 NS 1997
Dec 14 14:48:41 ctserv /kernel:     nnd@ctserv.itfs.nsk.su:/usr/src/sys/compile/TSERV
Dec 14 14:48:41 ctserv /kernel: Calibrating clock(s) ... i8254 clock: 1193422 Hz
Dec 14 14:48:41 ctserv /kernel: CLK_USE_I8254_CALIBRATION not specified - using default frequency
Dec 14 14:48:41 ctserv /kernel: CPU: i486 DX2 (486-class CPU)
Dec 14 14:48:41 ctserv /kernel:   Origin = "GenuineIntel"  Id = 0x435  Stepping=5
Dec 14 14:48:41 ctserv /kernel:   Features=0x3<FPU,VME>
Dec 14 14:48:41 ctserv /kernel: real memory  = 16777216 (16384K bytes)
Dec 14 14:48:41 ctserv /kernel: Physical memory chunk(s):
Dec 14 14:48:41 ctserv /kernel: 0x00001000 - 0x0009efff, 647168 bytes (158 pages)
Dec 14 14:48:41 ctserv /kernel: 0x00206000 - 0x00ffdfff, 14647296 bytes (3576 pages)
Dec 14 14:48:41 ctserv /kernel: avail memory = 14688256 (14344K bytes)
Dec 14 14:48:41 ctserv /kernel: Found BIOS32 Service Directory header at 0xf00f0120
Dec 14 14:48:41 ctserv /kernel: Entry = 0xf138c (0xf00f138c)  Rev = 0  Len = 1
Dec 14 14:48:41 ctserv /kernel: PCI BIOS entry at 0x1370
Dec 14 14:48:42 ctserv /kernel: Other BIOS signatures found:
Dec 14 14:48:42 ctserv /kernel: ACPI: 00000000
Dec 14 14:48:42 ctserv /kernel: $PnP: 000f0130
Dec 14 14:48:42 ctserv /kernel: pci_open(1):	mode 1 addr port (0x0cf8) is 0x80002858
Dec 14 14:48:42 ctserv /kernel: pci_open(1a):	mode1res=0x80000000 (0x80000000)
Dec 14 14:48:42 ctserv /kernel: pci_cfgcheck:	device 0 1 2 3 4 5 [class=000000] 6 7 8 9 10 11 12 13 14 15 16 17 18 19 [class=078000] [hdr=00] is there (id=0101120e)
Dec 14 14:48:42 ctserv /kernel: Probing for devices on PCI bus 0:
Dec 14 14:48:42 ctserv /kernel: found->	vendor=0x8086, dev=0x0486, revid=0x02
Dec 14 14:48:42 ctserv /kernel: 	class=00-00-00, hdrtype=0x00, mfdev=0
Dec 14 14:48:42 ctserv /kernel: chip0: <Intel 82425EX PCI system controller> rev 0x02 on pci0.5.0
Dec 14 14:48:42 ctserv /kernel: 	Clock 33MHz, L1 Cache Write-through
Dec 14 14:48:42 ctserv /kernel: 	L2 Cache , 3-2-2-2/3-2-2-2
Dec 14 14:48:42 ctserv /kernel: 	DRAM: Fast Code Read, Fast Data Read, Fast Write, 
Dec 14 14:48:42 ctserv /kernel: 	Timing: RAS: 2 Clocks, CAS Read: , CAS Write: 2/1
Dec 14 14:48:42 ctserv /kernel: 	CPU-to-PCI Byte Merging
Dec 14 14:48:42 ctserv /kernel: 	CPU-to-PCI Bursting
Dec 14 14:48:42 ctserv /kernel: 	PCI Posted Writes
Dec 14 14:48:42 ctserv /kernel: 	DRAM Parity Disabled
Dec 14 14:48:42 ctserv /kernel: 	PCI IDE controller: Primary (1F0h-1F7h,3F6h,3F7h)	RTC (70-77h)
Dec 14 14:48:42 ctserv /kernel: found->	vendor=0x120e, dev=0x0101, revid=0x01
Dec 14 14:48:42 ctserv /kernel: 	class=07-80-00, hdrtype=0x00, mfdev=0
Dec 14 14:48:42 ctserv /kernel: 	intpin=a, irq=11
Dec 14 14:48:42 ctserv /kernel: 	map[0]: type 1, range 32, base ffbffc00, size  7
Dec 14 14:48:42 ctserv /kernel: 	map[1]: type 4, range 32, base 0000fc80, size  7
Dec 14 14:48:42 ctserv /kernel: 	map[2]: type 1, range 32, base ffbf8000, size 14
Dec 14 14:48:42 ctserv /kernel: cy0: <Cyclades Cyclom-Y Serial Adapter> rev 0x01 int a irq 11 on pci0.19.0
Dec 14 14:48:42 ctserv /kernel: Probing for devices on the ISA bus:

>How-To-Repeat:

	Get the PC with such PCI config and boot FreeBSD-current
on it.

>Fix:
	
	Substitute "right" value for "0xf8f0ff" class-mask
OR applay abovementioned patch.

>Release-Note:
>Audit-Trail:

From: Stefan Esser <se@FreeBSD.ORG>
To: nnd@itfs.nsk.su
Cc: FreeBSD-gnats-submit@freebsd.org, Stefan Esser <se@freebsd.org>
Subject: Re: i386/5300: /sys/i386/isa/pcibus.c does'nt discovered Cyclades Cyclom-16YeP
Date: Sat, 20 Dec 1997 09:52:29 +0100

 On 1997-12-15 12:59 +0600, nnd@itfs.nsk.su wrote:
 > 	Here is the (extract from) boot:-v dmesg for one of my PCs
 > before and after the next "patch" was applied to /sys/i386/isa/pcibus.c
 
 >  		class = inl(pci_cfgenable(0, device, 0, 8, 4)) >> 8;
 >  		if (bootverbose)
 >  			printf("[class=%06x] ", class);
 > -		if (class == 0 || (class & 0xf8f0ff) != 0)
 > +		if (class == 0 || (class & 0xf870ff) != 0)
 
 Hmmm, I had to discard the class == 0 case, since that value
 is often returned even if there is no PCI device ...
 Since 0 is an obsolete class code ("old"), I decided to test
 for at least one other PCI device with a non-zero class, and
 in general there is at least a VGA card (and possibly disk
 controllers and network cards) on PCI bus 0, which satisfy
 that condition.
 
 Your case is special, and I agree, that the test must be made
 less strict.
 
 OK. The bit-mask you suggest seems reasonable, and I'll commit
 your patch to the -current tree!
 
 Thanks for sending the patch, and sorry for the inconvenience!
 
 Regards, STefan
State-Changed-From-To: open->closed 
State-Changed-By: se 
State-Changed-When: Sat Dec 20 01:04:54 PST 1997 
State-Changed-Why:  
Suggested fix applied (/sys/i386/isa/pcibus.c rev. 1.41) 


Responsible-Changed-From-To: freebsd-bugs->se 
Responsible-Changed-By: se 
Responsible-Changed-When: Sat Dec 20 01:04:54 PST 1997 
Responsible-Changed-Why:  
>Unformatted:
