From nobody@FreeBSD.org  Sat Jan 24 23:07:52 2009
Return-Path: <nobody@FreeBSD.org>
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id AB81A10656C4
	for <freebsd-gnats-submit@FreeBSD.org>; Sat, 24 Jan 2009 23:07:52 +0000 (UTC)
	(envelope-from nobody@FreeBSD.org)
Received: from www.freebsd.org (www.freebsd.org [IPv6:2001:4f8:fff6::21])
	by mx1.freebsd.org (Postfix) with ESMTP id 981C48FC1B
	for <freebsd-gnats-submit@FreeBSD.org>; Sat, 24 Jan 2009 23:07:52 +0000 (UTC)
	(envelope-from nobody@FreeBSD.org)
Received: from www.freebsd.org (localhost [127.0.0.1])
	by www.freebsd.org (8.14.3/8.14.3) with ESMTP id n0ON7qcB096665
	for <freebsd-gnats-submit@FreeBSD.org>; Sat, 24 Jan 2009 23:07:52 GMT
	(envelope-from nobody@www.freebsd.org)
Received: (from nobody@localhost)
	by www.freebsd.org (8.14.3/8.14.3/Submit) id n0ON7qks096664;
	Sat, 24 Jan 2009 23:07:52 GMT
	(envelope-from nobody)
Message-Id: <200901242307.n0ON7qks096664@www.freebsd.org>
Date: Sat, 24 Jan 2009 23:07:52 GMT
From: Markus Hitter <mah@jump-ing.de>
To: freebsd-gnats-submit@FreeBSD.org
Subject: /sys/dev/pci/pci.c revision 181771 breaks networking and the power button
X-Send-Pr-Version: www-3.1
X-GNATS-Notify:

>Number:         130957
>Category:       kern
>Synopsis:       [pci] /sys/dev/pci/pci.c revision 181771 breaks networking and the power button
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    jhb
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:  
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Sat Jan 24 23:10:01 UTC 2009
>Closed-Date:    
>Last-Modified:  Wed Mar  3 20:10:00 UTC 2010
>Originator:     Markus Hitter
>Release:        stable/7, revision 181770
>Organization:
>Environment:
GENERIC kernel, i386
>Description:
After upgrading from 7.0 RELEASE to 7.1 RELEASE on my Geode-equipped Flepo Alpha (a disk- and screenless box running off an USB pen drive) I found networking to be not completely, but seriously broken. See http://lists.freebsd.org/pipermail/freebsd-embedded/2009-January/000680.html

Not mentioned in this Email, the power button broke as well, flooding error messages to the console instead of shutting down.

After the long journey of bisecting 10,000 kernel revisions, I found revision 181771, and only the change in file /sys/dev/pci/pci.c to be the culprit:

http://svn.freebsd.org/viewvc/base/stable/7/sys/dev/pci/pci.c?r1=176218&r2=181771
>How-To-Repeat:
Build a stable/7 kernel of revision 181771 or later and attempt to boot the machine. It'll start to boot, but won't reach the console login prompt because DHCP fails. Setting up networking manually makes things better, but still it's impossible to ssh in. All this works fine with kernel r181770 or before.
>Fix:
The obvious one: don't upgrade beyond r181770.

I'll try to reverse-apply this patch on stable and look how things work.

>Release-Note:
>Audit-Trail:

From: Markus Hitter <mah@jump-ing.de>
To: bug-followup@FreeBSD.org
Cc:  
Subject: Re: i386/130957: /sys/dev/pci/pci.c revision 181771 breaks networking and the power button
Date: Sun, 25 Jan 2009 23:52:32 +0100

 --Apple-Mail-3--933801065
 Content-Transfer-Encoding: 7bit
 Content-Type: text/plain;
 	charset=US-ASCII;
 	delsp=yes;
 	format=flowed
 
 
 Indeed, reverting the r181771 change on stable/7 as of today brings  
 my Flepo back to life. I've attached a slimmed version of the reverse  
 patch, keeping the comments, code removal and spelling corrections.
 
 
 --Apple-Mail-3--933801065
 Content-Transfer-Encoding: 7bit
 Content-Type: text/plain;
 	x-unix-mode=0644;
 	name=pcipatch.txt
 Content-Disposition: attachment;
 	filename=pcipatch.txt
 
 Index: sys/dev/pci/pci.c
 ===================================================================
 --- sys/dev/pci/pci.c	(revision 187693)
 +++ sys/dev/pci/pci.c	(working copy)
 @@ -2395,17 +2395,10 @@
  	 */
  	res = resource_list_alloc(rl, bus, dev, type, &reg, start, end, count,
  	    prefetch ? RF_PREFETCHABLE : 0);
 -	if (res == NULL) {
 -		/*
 -		 * If the allocation fails, clear the BAR and delete
 -		 * the resource list entry to force
 -		 * pci_alloc_resource() to allocate resources from the
 -		 * parent.
 -		 */
 -		resource_list_delete(rl, type, reg);
 -		start = 0;
 -	} else
 -		start = rman_get_start(res);
 +	if (res == NULL)
 +		return(barlen);
 +	start = rman_get_start(res);
 +
  	pci_write_config(dev, reg, start, 4);
  	if (ln2range == 64)
  		pci_write_config(dev, reg + 4, start >> 32, 4);
 
 --Apple-Mail-3--933801065--
Responsible-Changed-From-To: freebsd-i386->jhb 
Responsible-Changed-By: linimon 
Responsible-Changed-When: Mon Jan 26 01:20:49 UTC 2009 
Responsible-Changed-Why:  
Over to committer of revision in question. 

http://www.freebsd.org/cgi/query-pr.cgi?pr=130957 

From: John Baldwin <jhb@freebsd.org>
To: bug-followup@freebsd.org, mah@jump-ing.de
Cc:  
Subject: Re: kern/130957: [pci] /sys/dev/pci/pci.c revision 181771 breaks networking and the power button
Date: Mon, 26 Jan 2009 09:06:43 -0500

 Please capture a dmesg from a verbose boot (boot -v) both with and without the 
 change.
 
 -- 
 John Baldwin

From: Markus Hitter <mah@jump-ing.de>
To: John Baldwin <jhb@freebsd.org>,
 bug-followup@freebsd.org
Cc:  
Subject: Re: kern/130957: [pci] /sys/dev/pci/pci.c revision 181771 breaks networking and the power button
Date: Tue, 27 Jan 2009 01:13:02 +0100

 --Apple-Mail-5--842571266
 Content-Transfer-Encoding: 7bit
 Content-Type: text/plain;
 	charset=US-ASCII;
 	delsp=yes;
 	format=flowed
 
 
 Am 26.01.2009 um 15:06 schrieb John Baldwin:
 
 > Please capture a dmesg from a verbose boot (boot -v) both with and  
 > without the
 > change.
 
 Attached /var/log/messages with the change. The log without the  
 change will follow soon, as it's pretty difficult to get into this  
 box without network.
 
 
 --Apple-Mail-5--842571266
 Content-Transfer-Encoding: 7bit
 Content-Type: text/plain;
 	x-unix-mode=0644;
 	name=dmsg-with-change.txt
 Content-Disposition: attachment;
 	filename=dmsg-with-change.txt
 
 Jan 26 21:11:14 git newsyslog[366]: logfile first created
 Jan 26 21:11:14 git syslogd: kernel boot file is /boot/kernel/kernel
 Jan 26 21:11:14 git kernel: Copyright (c) 1992-2009 The FreeBSD Project.
 Jan 26 21:11:14 git kernel: Copyright (c) 1979, 1980, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994
 Jan 26 21:11:14 git kernel: The Regents of the University of California. All rights reserved.
 Jan 26 21:11:14 git kernel: FreeBSD is a registered trademark of The FreeBSD Foundation.
 Jan 26 21:11:14 git kernel: FreeBSD 7.1-STABLE #18 r187693M: Mon Jan 26 00:24:04 GMT-2 2009
 Jan 26 21:11:14 git kernel: root@freebsdfortinybsd.jump-ing.de:/usr/src/sys/i386/compile/TINYBSD
 Jan 26 21:11:14 git kernel: Preloaded elf kernel "/boot/kernel/kernel" at 0xc1815000.
 Jan 26 21:11:14 git kernel: Preloaded mfs_root "/mfsroot" at 0xc181516c.
 Jan 26 21:11:14 git kernel: Preloaded elf module "/boot/kernel/acpi.ko" at 0xc18151ac.
 Jan 26 21:11:14 git kernel: Calibrating clock(s) ... i8254 clock: 1193106 Hz
 Jan 26 21:11:14 git kernel: Timecounter "i8254" frequency 1193106 Hz quality 0
 Jan 26 21:11:14 git kernel: Calibrating TSC clock ... TSC clock: 498021210 Hz
 Jan 26 21:11:14 git kernel: CPU: Geode(TM) Integrated Processor by AMD PCS (498.02-MHz 586-class CPU)
 Jan 26 21:11:14 git kernel: Origin = "AuthenticAMD"  Id = 0x5a2  Stepping = 2
 Jan 26 21:11:14 git kernel: Features=0x88a93d<FPU,DE,PSE,TSC,MSR,CX8,SEP,PGE,CMOV,CLFLUSH,MMX>
 Jan 26 21:11:14 git kernel: AMD Features=0xc0400000<MMX+,3DNow!+,3DNow!>
 Jan 26 21:11:14 git kernel: Data TLB: 16 entries, fully associative
 Jan 26 21:11:14 git kernel: Instruction TLB: 16 entries, fully associative
 Jan 26 21:11:14 git kernel: L1 data cache: 64 kbytes, 32 bytes/line, 1 lines/tag, 16-way associative
 Jan 26 21:11:14 git kernel: L1 instruction cache: 64 kbytes, 32 bytes/line, 1 lines/tag, 16-way associative
 Jan 26 21:11:14 git kernel: L2 internal cache: 128 kbytes, 32 bytes/line, 1 lines/tag, 4-way associative
 Jan 26 21:11:14 git kernel: Write Allocate Disable
 Jan 26 21:11:14 git kernel: real memory  = 469434368 (447 MB)
 Jan 26 21:11:14 git kernel: Physical memory chunk(s):
 Jan 26 21:11:14 git kernel: 0x0000000000001000 - 0x000000000009dfff, 643072 bytes (157 pages)
 Jan 26 21:11:14 git kernel: 0x0000000000100000 - 0x00000000003fffff, 3145728 bytes (768 pages)
 Jan 26 21:11:14 git kernel: 0x0000000001c25000 - 0x000000001b78cfff, 431390720 bytes (105320 pages)
 Jan 26 21:11:14 git kernel: avail memory = 433086464 (413 MB)
 Jan 26 21:11:14 git kernel: bios32: Found BIOS32 Service Directory header at 0xc00fa650
 Jan 26 21:11:14 git kernel: bios32: Entry = 0xfaac0 (c00faac0)  Rev = 0  Len = 1
 Jan 26 21:11:14 git kernel: pcibios: PCI BIOS entry at 0xf0000+0xaaf0
 Jan 26 21:11:14 git kernel: pnpbios: Found PnP BIOS data at 0xc00fb440
 Jan 26 21:11:14 git kernel: pnpbios: Entry = f0000:b470  Rev = 1.0
 Jan 26 21:11:14 git kernel: Other BIOS signatures found:
 Jan 26 21:11:14 git kernel: ULE: setup cpu 0
 Jan 26 21:11:14 git kernel: mem: <memory>
 Jan 26 21:11:14 git kernel: K6-family MTRR support enabled (2 registers)
 Jan 26 21:11:14 git kernel: io: <I/O>
 Jan 26 21:11:14 git kernel: random: <entropy source, Software, Yarrow>
 Jan 26 21:11:14 git kernel: nfslock: pseudo-device
 Jan 26 21:11:14 git kernel: null: <null device, zero device>
 Jan 26 21:11:14 git kernel: ACPI: RSDP @ 0x0xf5e30/0x0014 (v  0 AMDGX3)
 Jan 26 21:11:14 git kernel: ACPI: RSDT @ 0x0x1bfb3000/0x0028 (v  1 AMDGX3 AWRDACPI 0x42302E31 AWRD 0x00000000)
 Jan 26 21:11:14 git kernel: ACPI: FACP @ 0x0x1bfb3080/0x0074 (v  1 AMDGX3 AWRDACPI 0x42302E31 AWRD 0x00000000)
 Jan 26 21:11:14 git kernel: ACPI: DSDT @ 0x0x1bfb3100/0x2C30 (v  1 AMDGX3 AWRDACPI 0x00001000 MSFT 0x03000000)
 Jan 26 21:11:14 git kernel: ACPI: FACS @ 0x0x1bfb0000/0x0040
 Jan 26 21:11:14 git kernel: npx0: INT 16 interface
 Jan 26 21:11:14 git kernel: acpi0: <AMDGX3 AWRDACPI> on motherboard
 Jan 26 21:11:14 git kernel: acpi0: [MPSAFE]
 Jan 26 21:11:14 git kernel: acpi0: [ITHREAD]
 Jan 26 21:11:14 git kernel: acpi0: Power Button (fixed)
 Jan 26 21:11:14 git kernel: acpi0: wakeup code va 0xcbfd6000 pa 0x1000
 Jan 26 21:11:14 git kernel: atpic: Programming IRQ9 as level/low
 Jan 26 21:11:14 git kernel: pci_open(1):	mode 1 addr port (0x0cf8) is 0x800078d0
 Jan 26 21:11:14 git kernel: pci_open(1a):	mode1res=0x80000000 (0x80000000)
 Jan 26 21:11:14 git kernel: pci_cfgcheck:	device 0 1 [class=060000] [hdr=80] is there (id=20801022)
 Jan 26 21:11:14 git kernel: pcibios: BIOS version 2.10
 Jan 26 21:11:14 git kernel: acpi_bus_number: root bus has no _BBN, assuming 0
 Jan 26 21:11:14 git kernel: AcpiOsDerivePciId: \_SB_.PCI0.CYRX.PIRX -> bus 0 dev 15 func 0
 Jan 26 21:11:14 git kernel: acpi0: reservation of 0, a0000 (3) failed
 Jan 26 21:11:14 git kernel: acpi0: reservation of 100000, 1beb0000 (3) failed
 Jan 26 21:11:14 git kernel: ACPI timer: 1/2 1/2 1/1 1/2 1/2 1/2 1/2 1/1 1/2 1/2 -> 10
 Jan 26 21:11:14 git kernel: Timecounter "ACPI-fast" frequency 3579545 Hz quality 1000
 Jan 26 21:11:14 git kernel: acpi_timer0: <32-bit timer at 3.579545MHz> port 0x9c10-0x9c13 on acpi0
 Jan 26 21:11:14 git kernel: pci_link0:        Index  IRQ  Rtd  Ref  IRQs
 Jan 26 21:11:14 git kernel: Initial Probe       0    5   N     0  5 10 11
 Jan 26 21:11:14 git kernel: Validation          0    5   N     0  5 10 11
 Jan 26 21:11:14 git kernel: After Disable       0  255   N     0  5 10 11
 Jan 26 21:11:14 git kernel: pci_link1:        Index  IRQ  Rtd  Ref  IRQs
 Jan 26 21:11:14 git kernel: Initial Probe       0   11   N     0  5 10 11
 Jan 26 21:11:14 git kernel: Validation          0   11   N     0  5 10 11
 Jan 26 21:11:14 git kernel: After Disable       0  255   N     0  5 10 11
 Jan 26 21:11:14 git kernel: pci_link2:        Index  IRQ  Rtd  Ref  IRQs
 Jan 26 21:11:14 git kernel: Initial Probe       0  255   N     0  5 10 11
 Jan 26 21:11:14 git kernel: Validation          0  255   N     0  5 10 11
 Jan 26 21:11:14 git kernel: After Disable       0  255   N     0  5 10 11
 Jan 26 21:11:14 git kernel: pci_link3:        Index  IRQ  Rtd  Ref  IRQs
 Jan 26 21:11:14 git kernel: Initial Probe       0  255   N     0  5 10 11
 Jan 26 21:11:14 git kernel: Validation          0  255   N     0  5 10 11
 Jan 26 21:11:14 git kernel: After Disable       0  255   N     0  5 10 11
 Jan 26 21:11:14 git kernel: acpi_button0: <Power Button> on acpi0
 Jan 26 21:11:14 git kernel: acpi_button1: <Sleep Button> on acpi0
 Jan 26 21:11:14 git kernel: acpi_acad0: <AC Adapter> on acpi0
 Jan 26 21:11:14 git kernel: pcib0: <ACPI Host-PCI bridge> port 0xcf8-0xcff on acpi0
 Jan 26 21:11:14 git kernel: ACPI: Found matching pin for 0.12.INTA at func 0: 11
 Jan 26 21:11:14 git kernel: ACPI: Found matching pin for 0.13.INTA at func 0: 10
 Jan 26 21:11:14 git kernel: ACPI: Found matching pin for 0.1.INTA at func 1: 5
 Jan 26 21:11:14 git kernel: ACPI: Found matching pin for 0.15.INTB at func 3: 11
 Jan 26 21:11:14 git kernel: ACPI: Found matching pin for 0.15.INTD at func 4: 10
 Jan 26 21:11:14 git kernel: pci0: <ACPI PCI bus> on pcib0
 Jan 26 21:11:14 git kernel: pci0: domain=0, physical bus=0
 Jan 26 21:11:14 git kernel: found->	vendor=0x1022, dev=0x2080, revid=0x33
 Jan 26 21:11:14 git kernel: domain=0, bus=0, slot=1, func=0
 Jan 26 21:11:14 git kernel: class=06-00-00, hdrtype=0x00, mfdev=1
 Jan 26 21:11:14 git kernel: cmdreg=0x0005, statreg=0x0220, cachelnsz=8 (dwords)
 Jan 26 21:11:14 git kernel: lattimer=0xf8 (7440 ns), mingnt=0x00 (0 ns), maxlat=0x00 (0 ns)
 Jan 26 21:11:14 git kernel: map[10]: type I/O Port, range 32, base 0xac1c, size  2, enabled
 Jan 26 21:11:14 git kernel: map[14]: type I/O Port, range 32, base 0x9e00, size  3, enabled
 Jan 26 21:11:14 git kernel: found->	vendor=0x1022, dev=0x2081, revid=0x00
 Jan 26 21:11:14 git kernel: domain=0, bus=0, slot=1, func=1
 Jan 26 21:11:14 git kernel: class=03-00-00, hdrtype=0x00, mfdev=0
 Jan 26 21:11:14 git kernel: cmdreg=0x0007, statreg=0x0220, cachelnsz=8 (dwords)
 Jan 26 21:11:14 git kernel: lattimer=0x00 (0 ns), mingnt=0x00 (0 ns), maxlat=0x00 (0 ns)
 Jan 26 21:11:14 git kernel: intpin=a, irq=5
 Jan 26 21:11:14 git kernel: map[10]: type Memory, range 32, base 0xe0000000, size 27, enabled
 Jan 26 21:11:14 git kernel: map[14]: type Memory, range 32, base 0xefff4000, size 14, enabled
 Jan 26 21:11:14 git kernel: map[18]: type Memory, range 32, base 0xefff0000, size 14, enabled
 Jan 26 21:11:14 git kernel: map[1c]: type Memory, range 32, base 0xeffec000, size 14, enabled
 Jan 26 21:11:14 git kernel: map[20]: type Memory, range 32, base 0xeffe8000, size 14, enabled
 Jan 26 21:11:14 git kernel: pcib0: matched entry for 0.1.INTA (src \_SB_.PCI0.CYRX.LNKA:0)
 Jan 26 21:11:14 git kernel: pcib0: slot 1 INTA routed to irq 5 via \_SB_.PCI0.CYRX.LNKA
 Jan 26 21:11:14 git kernel: found->	vendor=0x1022, dev=0x2082, revid=0x00
 Jan 26 21:11:14 git kernel: domain=0, bus=0, slot=1, func=2
 Jan 26 21:11:14 git kernel: class=10-10-00, hdrtype=0x00, mfdev=0
 Jan 26 21:11:14 git kernel: cmdreg=0x0006, statreg=0x02a0, cachelnsz=8 (dwords)
 Jan 26 21:11:14 git kernel: lattimer=0x00 (0 ns), mingnt=0x00 (0 ns), maxlat=0x00 (0 ns)
 Jan 26 21:11:14 git kernel: intpin=a, irq=5
 Jan 26 21:11:14 git kernel: map[10]: type Memory, range 32, base 0xefff8000, size 14, enabled
 Jan 26 21:11:14 git kernel: pcib0: matched entry for 0.1.INTA (src \_SB_.PCI0.CYRX.LNKA:0)
 Jan 26 21:11:14 git kernel: pcib0: slot 1 INTA routed to irq 5 via \_SB_.PCI0.CYRX.LNKA
 Jan 26 21:11:14 git kernel: found->	vendor=0x10ec, dev=0x8167, revid=0x10
 Jan 26 21:11:14 git kernel: domain=0, bus=0, slot=12, func=0
 Jan 26 21:11:14 git kernel: class=02-00-00, hdrtype=0x00, mfdev=0
 Jan 26 21:11:14 git kernel: cmdreg=0x0007, statreg=0x02b0, cachelnsz=8 (dwords)
 Jan 26 21:11:14 git kernel: lattimer=0x20 (960 ns), mingnt=0x20 (8000 ns), maxlat=0x40 (16000 ns)
 Jan 26 21:11:14 git kernel: intpin=a, irq=11
 Jan 26 21:11:14 git kernel: powerspec 2  supports D0 D1 D2 D3  current D0
 Jan 26 21:11:14 git kernel: map[10]: type I/O Port, range 32, base 0xfc00, size  8, enabled
 Jan 26 21:11:14 git kernel: map[14]: type Memory, range 32, base 0xeffff000, size  8, enabled
 Jan 26 21:11:14 git kernel: pcib0: matched entry for 0.12.INTA (src \_SB_.PCI0.CYRX.LNKC:0)
 Jan 26 21:11:14 git kernel: pcib0: slot 12 INTA routed to irq 11 via \_SB_.PCI0.CYRX.LNKC
 Jan 26 21:11:14 git kernel: found->	vendor=0x10ec, dev=0x8167, revid=0x10
 Jan 26 21:11:14 git kernel: domain=0, bus=0, slot=13, func=0
 Jan 26 21:11:14 git kernel: class=02-00-00, hdrtype=0x00, mfdev=0
 Jan 26 21:11:14 git kernel: cmdreg=0x0007, statreg=0x02b0, cachelnsz=8 (dwords)
 Jan 26 21:11:14 git kernel: lattimer=0x20 (960 ns), mingnt=0x20 (8000 ns), maxlat=0x40 (16000 ns)
 Jan 26 21:11:14 git kernel: intpin=a, irq=10
 Jan 26 21:11:14 git kernel: powerspec 2  supports D0 D1 D2 D3  current D0
 Jan 26 21:11:14 git kernel: map[10]: type I/O Port, range 32, base 0xfa00, size  8, enabled
 Jan 26 21:11:14 git kernel: map[14]: type Memory, range 32, base 0xefffe000, size  8, enabled
 Jan 26 21:11:14 git kernel: pcib0: matched entry for 0.13.INTA (src \_SB_.PCI0.CYRX.LNKD:0)
 Jan 26 21:11:14 git kernel: pcib0: slot 13 INTA routed to irq 10 via \_SB_.PCI0.CYRX.LNKD
 Jan 26 21:11:14 git kernel: found->	vendor=0x1022, dev=0x2090, revid=0x03
 Jan 26 21:11:14 git kernel: domain=0, bus=0, slot=15, func=0
 Jan 26 21:11:14 git kernel: class=06-01-00, hdrtype=0x00, mfdev=1
 Jan 26 21:11:14 git kernel: cmdreg=0x0009, statreg=0x02a0, cachelnsz=8 (dwords)
 Jan 26 21:11:14 git kernel: lattimer=0x40 (1920 ns), mingnt=0x00 (0 ns), maxlat=0x00 (0 ns)
 Jan 26 21:11:14 git kernel: map[10]: type I/O Port, range 32, base 0x6000, size  3, enabled
 Jan 26 21:11:14 git kernel: map[14]: type I/O Port, range 32, base 0x6100, size  8, enabled
 Jan 26 21:11:14 git kernel: map[18]: type I/O Port, range 32, base 0x6200, size  6, enabled
 Jan 26 21:11:14 git kernel: map[1c]: type I/O Port, range 32, base 0, size  5, enabled
 Jan 26 21:11:14 git kernel: map[20]: type I/O Port, range 32, base 0x9d00, size  7, enabled
 Jan 26 21:11:14 git kernel: map[24]: type I/O Port, range 32, base 0x9c00, size  6, enabled
 Jan 26 21:11:14 git kernel: found->	vendor=0x1022, dev=0x209a, revid=0x01
 Jan 26 21:11:14 git kernel: domain=0, bus=0, slot=15, func=2
 Jan 26 21:11:14 git kernel: class=01-01-80, hdrtype=0x00, mfdev=0
 Jan 26 21:11:14 git kernel: cmdreg=0x0005, statreg=0x02a0, cachelnsz=8 (dwords)
 Jan 26 21:11:14 git kernel: lattimer=0xf8 (7440 ns), mingnt=0x00 (0 ns), maxlat=0x00 (0 ns)
 Jan 26 21:11:14 git kernel: map[20]: type I/O Port, range 32, base 0xff00, size  4, enabled
 Jan 26 21:11:14 git kernel: found->	vendor=0x1022, dev=0x2093, revid=0x01
 Jan 26 21:11:14 git kernel: domain=0, bus=0, slot=15, func=3
 Jan 26 21:11:14 git kernel: class=04-01-00, hdrtype=0x00, mfdev=0
 Jan 26 21:11:14 git kernel: cmdreg=0x0005, statreg=0x02a0, cachelnsz=8 (dwords)
 Jan 26 21:11:14 git kernel: lattimer=0x00 (0 ns), mingnt=0x00 (0 ns), maxlat=0x00 (0 ns)
 Jan 26 21:11:14 git kernel: intpin=b, irq=11
 Jan 26 21:11:14 git kernel: map[10]: type I/O Port, range 32, base 0xfe00, size  7, enabled
 Jan 26 21:11:14 git kernel: pcib0: matched entry for 0.15.INTB (src \_SB_.PCI0.CYRX.LNKB:0)
 Jan 26 21:11:14 git kernel: pcib0: slot 15 INTB routed to irq 11 via \_SB_.PCI0.CYRX.LNKB
 Jan 26 21:11:14 git kernel: found->	vendor=0x1022, dev=0x2094, revid=0x02
 Jan 26 21:11:14 git kernel: domain=0, bus=0, slot=15, func=4
 Jan 26 21:11:14 git kernel: class=0c-03-10, hdrtype=0x00, mfdev=0
 Jan 26 21:11:14 git kernel: cmdreg=0x0006, statreg=0x0230, cachelnsz=8 (dwords)
 Jan 26 21:11:14 git kernel: lattimer=0x00 (0 ns), mingnt=0x00 (0 ns), maxlat=0x00 (0 ns)
 Jan 26 21:11:14 git kernel: intpin=d, irq=10
 Jan 26 21:11:14 git kernel: powerspec 2  supports D0 D3  current D0
 Jan 26 21:11:14 git kernel: map[10]: type Memory, range 32, base 0xefffd000, size 12, enabled
 Jan 26 21:11:14 git kernel: pcib0: matched entry for 0.15.INTD (src \_SB_.PCI0.CYRX.LNKD:0)
 Jan 26 21:11:14 git kernel: pcib0: slot 15 INTD routed to irq 10 via \_SB_.PCI0.CYRX.LNKD
 Jan 26 21:11:14 git kernel: found->	vendor=0x1022, dev=0x2095, revid=0x02
 Jan 26 21:11:14 git kernel: domain=0, bus=0, slot=15, func=5
 Jan 26 21:11:14 git kernel: class=0c-03-20, hdrtype=0x00, mfdev=0
 Jan 26 21:11:14 git kernel: cmdreg=0x0006, statreg=0x0230, cachelnsz=8 (dwords)
 Jan 26 21:11:14 git kernel: lattimer=0x00 (0 ns), mingnt=0x00 (0 ns), maxlat=0x00 (0 ns)
 Jan 26 21:11:14 git kernel: intpin=d, irq=10
 Jan 26 21:11:14 git kernel: powerspec 2  supports D0 D3  current D0
 Jan 26 21:11:14 git kernel: map[10]: type Memory, range 32, base 0xefffc000, size 12, enabled
 Jan 26 21:11:14 git kernel: pcib0: matched entry for 0.15.INTD (src \_SB_.PCI0.CYRX.LNKD:0)
 Jan 26 21:11:14 git kernel: pcib0: slot 15 INTD routed to irq 10 via \_SB_.PCI0.CYRX.LNKD
 Jan 26 21:11:14 git kernel: MFGPT bar: f00100006200
 Jan 26 21:11:14 git kernel: vgapci0: <VGA-compatible display> mem 0xe0000000-0xe7ffffff,0xefff4000-0xefff7fff,0xefff0000-0xefff3fff,0xeffec000-0xeffeffff,0xeffe8000-0xeffebfff irq 5 at device 1.1 on pci0
 Jan 26 21:11:14 git kernel: pci0: <encrypt/decrypt, entertainment crypto> at device 1.2 (no driver attached)
 Jan 26 21:11:14 git kernel: re0: <RealTek 8169SC/8110SC Single-chip Gigabit Ethernet> port 0xfc00-0xfcff mem 0xeffff000-0xeffff0ff irq 11 at device 12.0 on pci0
 Jan 26 21:11:14 git kernel: re0: Reserved 0x100 bytes for rid 0x14 type 3 at 0xeffff000
 Jan 26 21:11:14 git kernel: re0: Chip rev. 0x18000000
 Jan 26 21:11:14 git kernel: re0: MAC rev. 0x00000000
 Jan 26 21:11:14 git kernel: miibus0: <MII bus> on re0
 Jan 26 21:11:14 git kernel: rgephy0: <RTL8169S/8110S/8211B media interface> PHY 1 on miibus0
 Jan 26 21:11:14 git kernel: rgephy0:  10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, 1000baseT, 1000baseT-FDX, auto
 Jan 26 21:11:14 git kernel: re0: bpf attached
 Jan 26 21:11:14 git kernel: re0: Ethernet address: 00:0f:c9:03:5c:86
 Jan 26 21:11:14 git kernel: re0: [MPSAFE]
 Jan 26 21:11:14 git kernel: re0: [FILTER]
 Jan 26 21:11:14 git kernel: re1: <RealTek 8169SC/8110SC Single-chip Gigabit Ethernet> port 0xfa00-0xfaff mem 0xefffe000-0xefffe0ff irq 10 at device 13.0 on pci0
 Jan 26 21:11:14 git kernel: re1: Reserved 0x100 bytes for rid 0x14 type 3 at 0xefffe000
 Jan 26 21:11:14 git kernel: re1: Chip rev. 0x18000000
 Jan 26 21:11:14 git kernel: re1: MAC rev. 0x00000000
 Jan 26 21:11:14 git kernel: miibus1: <MII bus> on re1
 Jan 26 21:11:14 git kernel: rgephy1: <RTL8169S/8110S/8211B media interface> PHY 1 on miibus1
 Jan 26 21:11:14 git kernel: rgephy1:  10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, 1000baseT, 1000baseT-FDX, auto
 Jan 26 21:11:14 git kernel: re1: bpf attached
 Jan 26 21:11:14 git kernel: re1: Ethernet address: 00:0f:c9:03:5c:87
 Jan 26 21:11:14 git kernel: re1: [MPSAFE]
 Jan 26 21:11:14 git kernel: re1: [FILTER]
 Jan 26 21:11:14 git kernel: isab0: <PCI-ISA bridge> port 0x6000-0x6007,0x6100-0x61ff,0x6200-0x623f,0x9d00-0x9d7f,0x9c00-0x9c3f at device 15.0 on pci0
 Jan 26 21:11:14 git kernel: isa0: <ISA bus> on isab0
 Jan 26 21:11:14 git kernel: pci0: <mass storage, ATA> at device 15.2 (no driver attached)
 Jan 26 21:11:14 git kernel: pci0: <multimedia, audio> at device 15.3 (no driver attached)
 Jan 26 21:11:14 git kernel: ohci0: <OHCI (generic) USB controller> mem 0xefffd000-0xefffdfff irq 10 at device 15.4 on pci0
 Jan 26 21:11:14 git kernel: ohci0: Reserved 0x1000 bytes for rid 0x10 type 3 at 0xefffd000
 Jan 26 21:11:14 git kernel: ohci0: [GIANT-LOCKED]
 Jan 26 21:11:14 git kernel: ohci0: [ITHREAD]
 Jan 26 21:11:14 git kernel: usb0: OHCI version 1.0, legacy support
 Jan 26 21:11:14 git kernel: usb0: SMM does not respond, resetting
 Jan 26 21:11:14 git kernel: usb0: <OHCI (generic) USB controller> on ohci0
 Jan 26 21:11:14 git kernel: usb0: USB revision 1.0
 Jan 26 21:11:14 git kernel: uhub0: <AMD OHCI root hub, class 9/0, rev 1.00/1.00, addr 1> on usb0
 Jan 26 21:11:14 git kernel: uhub0: 4 ports with 4 removable, self powered
 Jan 26 21:11:14 git kernel: pci0: <serial bus, USB> at device 15.5 (no driver attached)
 Jan 26 21:11:14 git kernel: cpu0: <ACPI CPU> on acpi0
 Jan 26 21:11:14 git kernel: cpu0: switching to generic Cx mode
 Jan 26 21:11:14 git kernel: sc: sc0 already exists; skipping it
 Jan 26 21:11:14 git kernel: vga: vga0 already exists; skipping it
 Jan 26 21:11:14 git kernel: pnp_identify: Trying Read_Port at 203
 Jan 26 21:11:14 git kernel: pnp_identify: Trying Read_Port at 243
 Jan 26 21:11:14 git kernel: pnp_identify: Trying Read_Port at 283
 Jan 26 21:11:14 git kernel: pnp_identify: Trying Read_Port at 2c3
 Jan 26 21:11:14 git kernel: pnp_identify: Trying Read_Port at 303
 Jan 26 21:11:14 git kernel: pnp_identify: Trying Read_Port at 343
 Jan 26 21:11:14 git kernel: pnp_identify: Trying Read_Port at 383
 Jan 26 21:11:14 git kernel: pnp_identify: Trying Read_Port at 3c3
 Jan 26 21:11:14 git kernel: PNP Identify complete
 Jan 26 21:11:14 git kernel: isa_probe_children: disabling PnP devices
 Jan 26 21:11:14 git kernel: isa_probe_children: probing non-PnP devices
 Jan 26 21:11:14 git kernel: orm0: <ISA Option ROMs> at iomem 0xc0000-0xc7fff,0xc8000-0xd1fff,0xd2000-0xdbfff,0xef000-0xeffff pnpid ORM0000 on isa0
 Jan 26 21:11:14 git kernel: sc0: <System console> at flags 0x100 on isa0
 Jan 26 21:11:14 git kernel: sc0: VGA <16 virtual consoles, flags=0x300>
 Jan 26 21:11:14 git kernel: sc0: fb0, kbd0, terminal emulator: sc (syscons terminal)
 Jan 26 21:11:14 git kernel: vga0: <Generic ISA VGA> at port 0x3c0-0x3df iomem 0xa0000-0xbffff on isa0
 Jan 26 21:11:14 git kernel: adv0: not probed (disabled)
 Jan 26 21:11:14 git kernel: aha0: not probed (disabled)
 Jan 26 21:11:14 git kernel: aic0: not probed (disabled)
 Jan 26 21:11:14 git kernel: ata0 failed to probe at port 0x1f0 irq 14 on isa0
 Jan 26 21:11:14 git kernel: ata1 failed to probe at port 0x170 irq 15 on isa0
 Jan 26 21:11:14 git kernel: atkbdc0: <Keyboard controller (i8042)> at port 0x60,0x64 on isa0
 Jan 26 21:11:14 git kernel: atkbd0: <AT Keyboard> irq 1 on atkbdc0
 Jan 26 21:11:14 git kernel: kbd0: atkbd0, generic (0), config:0x0, flags:0x3f0000
 Jan 26 21:11:14 git kernel: atkbd0: [GIANT-LOCKED]
 Jan 26 21:11:14 git kernel: atkbd0: [ITHREAD]
 Jan 26 21:11:14 git kernel: bt0: not probed (disabled)
 Jan 26 21:11:14 git kernel: cs0: not probed (disabled)
 Jan 26 21:11:14 git kernel: ed0: not probed (disabled)
 Jan 26 21:11:14 git kernel: fdc0 failed to probe at port 0x3f0 irq 6 drq 2 on isa0
 Jan 26 21:11:14 git kernel: fe0: not probed (disabled)
 Jan 26 21:11:14 git kernel: ie0: not probed (disabled)
 Jan 26 21:11:14 git kernel: le0: not probed (disabled)
 Jan 26 21:11:14 git kernel: ppc0 failed to probe at irq 7 on isa0
 Jan 26 21:11:14 git kernel: sio0 failed to probe at port 0x3f8 irq 4 on isa0
 Jan 26 21:11:14 git kernel: sio1 failed to probe at port 0x2f8 irq 3 on isa0
 Jan 26 21:11:14 git kernel: sio2: not probed (disabled)
 Jan 26 21:11:14 git kernel: sio3: not probed (disabled)
 Jan 26 21:11:14 git kernel: sn0: not probed (disabled)
 Jan 26 21:11:14 git kernel: vt0: not probed (disabled)
 Jan 26 21:11:14 git kernel: isa_probe_children: probing PnP devices
 Jan 26 21:11:14 git kernel: umass0: <vendor 0x13fe USB DISK 30X, class 0/0, rev 2.00/1.10, addr 2> on uhub0
 Jan 26 21:11:14 git kernel: umass0:0:0:-1: Attached to scbus0
 Jan 26 21:11:14 git kernel: Device configuration finished.
 Jan 26 21:11:14 git kernel: Timecounter "TSC" frequency 498021210 Hz quality 800
 Jan 26 21:11:14 git kernel: Timecounters tick every 1.000 msec
 Jan 26 21:11:14 git kernel: lo0: bpf attached
 Jan 26 21:11:14 git kernel: md0: Preloaded image </mfsroot> 17162240 bytes at 0xc074a0b4
 Jan 26 21:11:14 git kernel: acpi_acad0: acline initialization start
 Jan 26 21:11:14 git kernel: acpi_acad0: On Line
 Jan 26 21:11:14 git kernel: acpi_acad0: acline initialization done, tried 1 times
 Jan 26 21:11:14 git kernel: GEOM: new disk da0
 Jan 26 21:11:14 git kernel: da0 at umass-sim0 bus 0 target 0 lun 0
 Jan 26 21:11:14 git kernel: da0: < USB DISK 30X PMAP> Removable Direct Access SCSI-0 device 
 Jan 26 21:11:14 git kernel: da0: 1.000MB/s transfers
 Jan 26 21:11:14 git kernel: da0: 1968MB (4030464 512 byte sectors: 255H 63S/T 250C)
 Jan 26 21:11:14 git kernel: Trying to mount root from ufs:/dev/md0a
 Jan 26 21:11:14 git kernel: start_init: trying /sbin/init
 Jan 26 21:11:15 git kernel: re0: link state changed to UP
 Jan 26 21:11:15 git ntpd[467]: ntpd 4.2.0-a Sun Feb 24 16:32:46 UTC 2008 (1)
 Jan 26 21:11:15 git ntpd[467]: no IPv6 interfaces found
 
 --Apple-Mail-5--842571266
 Content-Transfer-Encoding: 7bit
 Content-Type: text/plain;
 	charset=US-ASCII;
 	format=flowed
 
 
 
 
 
 --Apple-Mail-5--842571266--

From: Markus Hitter <mah@jump-ing.de>
To: John Baldwin <jhb@freebsd.org>,
 bug-followup@freebsd.org
Cc:  
Subject: Re: kern/130957: [pci] /sys/dev/pci/pci.c revision 181771 breaks networking and the power button
Date: Tue, 27 Jan 2009 04:57:33 +0100

 Am 27.01.2009 um 01:13 schrieb Markus Hitter:
 
 > The log without the change will follow soon, [...]
 
 I fear I can't deliver that. Without network, the only ways to  
 communicate with this machine is to read the console's text screen  
 and trough prepared, bootable pen drives - which throw errors at  
 write attempts as well.
 
 

From: John Baldwin <jhb@freebsd.org>
To: bug-followup@freebsd.org, mah@jump-ing.de
Cc:  
Subject: Re: kern/130957: [pci] /sys/dev/pci/pci.c revision 181771 breaks networking and the power button
Date: Mon, 23 Feb 2009 10:26:07 -0500

 Ok, can you adjust your patch to print out the PCI bus/slot/func as well as 
 the BAR register in the case that (res == NULL) and provide those lines of 
 output?
 
 -- 
 John Baldwin

From: Markus Hitter <mah@jump-ing.de>
To: bug-followup@FreeBSD.org, mah@jump-ing.de
Cc:  
Subject: Re: kern/130957: [pci] /sys/dev/pci/pci.c revision 181771 breaks
 networking and the power button
Date: Tue, 02 Mar 2010 02:14:29 +0100

 --=-49ED90izWysxEjQppxrT
 Content-Type: text/plain; charset="UTF-8"
 Content-Transfer-Encoding: 7bit
 
 After switching to stable/8 the problem is still there, so I've picked
 up on this one again. To get the device working, I have to comment out
 the code for res == NULL (see patch). To fetch some info, I added some
 more-or-less random printfs, which produce the following output (dmesg
 -a):
 
 FreeBSD 8.0-STABLE #3 r204519M: Tue Mar  2 00:42:10 UTC 2010
     root@freebsdfortinybsd.jump-ing.de:/usr/src/sys/i386/compile/TINYBSD
 i386
 Timecounter "i8254" frequency 1193182 Hz quality 0
 CPU: Geode(TM) Integrated Processor by AMD PCS (498.05-MHz 586-class
 CPU)
   Origin = "AuthenticAMD"  Id = 0x5a2  Stepping = 2
   Features=0x88a93d<FPU,DE,PSE,TSC,MSR,CX8,SEP,PGE,CMOV,CLFLUSH,MMX>
   AMD Features=0xc0400000<MMX+,3DNow!+,3DNow!>
 real memory  = 536870912 (512 MB)
 avail memory = 490602496 (467 MB)
 [...]
 Markus: res = c3ccf800
 Markus: res = c3ccf780
 Markus: res = c3ccf700
 Markus: res = c3ccf680
 Markus: res = c3ccf600
 Markus: res = c3ccf5c0
 Markus: res = c3ccf580
 Markus: res = c3ccf400
 Markus: res = c3ccf3c0
 Markus: res = c3ccf340
 Markus: res = c3ccf2c0
 Markus: res = c3ccf240
 Markus: res = c3ccf1c0
 Markus: res = c3ccf140
 Markus: res = c3ccf0c0
 Markus: res = c3ccf080
 Markus: res = 0
 	map[24]: type I/O Port, range 32, base 0x9c00, size  6, enabled
 pci0:0:15:0 bar 0x24
 rl 0xc3c8a704  bus c3cc8180  dev c3cd1380  type 4  reg 0xc1c20b0c
 start 39936  end 39999  count 64  flags 0
 Markus: res = c3ccf000
 Markus: res = c3ccae80
 
 
 --=-49ED90izWysxEjQppxrT
 Content-Disposition: attachment; filename="pcipatch.txt"
 Content-Type: text/plain; name="pcipatch.txt"; charset="UTF-8"
 Content-Transfer-Encoding: 7bit
 
 Index: sys/dev/pci/pci.c
 ===================================================================
 --- sys/dev/pci/pci.c	(revision 204519)
 +++ sys/dev/pci/pci.c	(working copy)
 @@ -2483,6 +2483,7 @@
  	 */
  	res = resource_list_alloc(rl, bus, dev, type, &reg, start, end, count,
  	    prefetch ? RF_PREFETCHABLE : 0);
 +printf("Markus: res = %x\n", (unsigned)res);
  	if (res == NULL) {
  		/*
  		 * If the allocation fails, clear the BAR and delete
 @@ -2490,8 +2491,23 @@
  		 * pci_alloc_resource() to allocate resources from the
  		 * parent.
  		 */
 -		resource_list_delete(rl, type, reg);
 -		start = 0;
 +printf("\tmap[%02x]: type %s, range %2d, base %#jx, size %2d",
 +       reg, pci_maptype(map), maprange, (uintmax_t)base, mapsize);
 +if (type == SYS_RES_IOPORT && !pci_porten(dev))
 +	printf(", port disabled\n");
 +else if (type == SYS_RES_MEMORY && !pci_memen(dev))
 +	printf(", memory disabled\n");
 +else
 +	printf(", enabled\n");
 +printf("pci%d:%d:%d:%d bar %#x\n",
 +       pci_get_domain(dev), pci_get_bus(dev), pci_get_slot(dev),
 +       pci_get_function(dev), reg);
 +printf("rl %p  bus %x  dev %x  type %d  reg %p\n", rl, (unsigned)bus,
 +       (unsigned)dev, type, &reg);
 +printf("start %ld  end %ld  count %ld  flags %d\n", (long)start, (long)end,
 +       (long)count, prefetch ? RF_PREFETCHABLE : 0);
 +//Mar		resource_list_delete(rl, type, reg);
 +//Mar		start = 0;
  	} else {
  		start = rman_get_start(res);
  		rman_set_device(res, bus);
 
 --=-49ED90izWysxEjQppxrT--
 

From: Markus Hitter <mah@jump-ing.de>
To: bug-followup@FreeBSD.org
Cc:  
Subject: Re: kern/130957: [pci] /sys/dev/pci/pci.c revision 181771 breaks
 networking and the power button
Date: Wed, 03 Mar 2010 21:04:22 +0100

 For the records, and those experiencing similar trouble, the diagnosis
 is about this:
 
 > > Am 02.03.2010 um 16:30 schrieb John Baldwin:
 > >
 > > > It seems you have a conflict and that your BIOS is broken.
 > > > The PCI resource that is being rejected is I/O ports 0x9c00 -
 > > > 0x9c3f, but the acpi_timer0 device is using I/O ports 0x9c10 -
 > > > 0x9c13.
 > > >
 > > > Hmmm, in this case this may be ok because the range is being
 > > > assigned to a PCI-ISA bridge, and it is possible that ACPI devices
 > > > could be using ISA ranges.  This is quite unusual and problematic.
 > > > Right now there is not an easy way to account for this.
 > > 
 > > Thanks for evaluating, John.
 > > 
 > > What does that mean to Mr. Everyone? Is one of the built in
 > > devices not available and there's no reason for concern as long as
 > > all the required devices work? Will my computer catch fire as soon
 > > as the keyboard and ethernet are used at the exact same time?
 >
 > No, the BIOS is just doing something that is confusing, and I guess
 > Windows doesn't get confused by it (it probably isn't as strict
 > about avoiding resource conflicts).
 
 
>Unformatted:
