Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 28 Feb 2007 17:46:08 +0100
From:      Karol Kwiatkowski <karol.kwiat@gmail.com>
To:        freebsd-current@freebsd.org
Subject:   [SOLVED] Re: i386 kernel just stops booting
Message-ID:  <45E5B1D0.6030401@gmail.com>
In-Reply-To: <45E44704.7080400@gmail.com>
References:  <45E44704.7080400@gmail.com>

index | next in thread | previous in thread | raw e-mail

[-- Attachment #1 --]
Karol Kwiatkowski wrote:
> Hello everyone,
> 
> I'm trying to get CURRENT installed on i386 desktop machine, but kernel
> stops booting after some time [1]. No error, even with verbose logging.
> At that point keyboard does not respond so manual reset is the only
> option. Nothing is logged into dmesg or messages.
> 
> [1]
[...]
> found-> vendor=0x1102, dev=0x4001, revid=0x00
>      bus=2, slot=8, func=2
>      class=0c-00-10, hdrtype=0x00, mfdev=1
>      cmdreg=0x0116, statreg=0x0210, cachelnsz=64 (dwords)
>      lattimer=0x20 (960 ns), mingnt=0x02 (500 ns), maxlat=0x04 (1000 ns)
>      intpin=b, irq=5
>      powerspec 2  supports D0 D1 D2 D3  current D0
>      map[10]: type 1, range 32, base ff5ff800, size 11, enabled
> pcib1: requested memory range 0xff5ff800-0xff5fffff: good
>      map[14]: type 1, range 32, base ff5f8000, size 14, enabled
> pcib1: requested memory range 0xff5f8000-0xff5fbfff: good
> pcib1: matched entry for 2.8.INTB (src \\_SB_.LNKB:0)
> pci_link1: Picked IRQ 17 with weight 0
> ioapic0: Changing polarity for pin 17 to high
> pcib1: slot 8 INTB routed to irq 17 via \\_SB_.LNKB
> [ here it stops responding ]

Gee, after few hours of looking at the sources (yeah, kernel internals
newbie here :) I've found that VPD scanning is the problem. Workaround
to this is to disable VPD reading by hw.pci.enable_vpd=0.

Now that I know of it, I 've found it is documented in a comment for
revision 1.339:
	http://www.freebsd.org/cgi/cvsweb.cgi/src/sys/dev/pci/pci.c


FYI, it's this code in sys/dev/pci/pci.c (rev. 1.343):

% static void
% pci_read_extcap(device_t pcib, pcicfgregs *cfg)
[...]
% case PCIY_VPD:		/* PCI Vital Product Data */
% 	if (pci_do_vpd) {
% 		cfg->vpd.vpd_reg = ptr;
% 		pci_read_vpd(pcib, cfg);
% 	}
% break;

Apparently this hangs while scanning PV-BT878P+ TV card (pci2:10:0) [1].


Cheers,

Karol


[1] PixelView PlayTV Pro PV-BT878P+ rev.9D

# pciconf -vl
bktr0@pci2:10:0:        class=0x040000 card=0x00000000 chip=0x036e109e
rev=0x11 hdr=0x00
    vendor     = 'Conexant (Was: Brooktree Corp)'
    device     = 'Bt878/Fusion 878A Mediastream Controller'
    class      = multimedia
    subclass   = video
none7@pci2:10:1:        class=0x048000 card=0x00000000 chip=0x0878109e
rev=0x11 hdr=0x00
    vendor     = 'Conexant (Was: Brooktree Corp)'
    device     = 'Bt878/Fusion878A Video Capture (Audio Section)'
    class      = multimedia


-- 
Karol Kwiatkowski   <karol.kwiat at gmail dot com>
OpenPGP 0x06E09309


[-- Attachment #2 --]
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.6 (FreeBSD)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iD8DBQFF5bHYezeoPAwGIYsRCDzmAKCWBNQaEhALabq/FEkOzMbQmbErDwCffQUE
IJRXW5Jtt2MZy2tp81Aa8pU=
=g0QO
-----END PGP SIGNATURE-----
help

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