Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 21 Apr 1996 14:25:46 +0900
From:      Mihoko Tanaka <mihoko@sapphire.pa.yokogawa.co.jp>
To:        freebsd-hackers@freebsd.org
Subject:   HP Vectra VL Series 4
Message-ID:  <199604210525.OAA25877@sapphire.pa.yokogawa.co.jp>

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

Hi all,

I have a HP Vectra VL Series 4. I have installed
FreeBSD-2.2-0323-SNAP on it. but it doesn't recognize the PCI bus.

My PC has a 'Intel SB82437FX-66' and 'Intel SB82371FB' as a PCI chipset.

When I booted the kernel with -v option, the system reported the
following messages:

  pcibus_setup(1): mode 1 addr port (0x0cf8) is 0x8000790c
  pcibus_setup(2): mode 2 enable port (0x0cf8) is 0xff

It means that the it reads the data '0x8000790c' from the
configuration address register (0x0cf8) of the PCI bridge.

The register is consisted of the following bits:
  31 30        24 23        16 15     11 10    8 7      2  1  0
 +--+------------+------------+---------+-------+--------+--+--+
 |EN| reserved   | Bus No.    |device No|Func No|reg addr| 0| 0|
 +--+------------+------------+---------+-------+--------+--+--+
	   31 : enable 
	30-24 : (reserved)
	23-16 : bus number
	15-11 : device number
	10- 8 : function number
	 7- 2 : register address
	    1 :
	    0 :
	
'0x8000790c' means
	the enable bit is on. (it's a configuration cycle).

	   31 : enable		====> 1
	30-24 : (reserved)	====> 0
	23-16 : bus number	====> 0
	15-11 : device number   ====> f
	10- 8 : function number ====> 1 (*)
	 7- 2 : register address ===> 0
	
In i386/isa/pcibus.c: pcibus_setup(),

#define CONF1_ENABLE_MSK	0x00ff0700ul
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        oldval1 = inl (CONF1_ADDR_PORT);

        if (bootverbose) {
                printf ("pcibus_setup(1):\tmode 1 addr port (0x0cf8) is 0x%08lx\
n", oldval1);   

        if ((oldval1 & CONF1_ENABLE_MSK) == 0) {
             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                pci_mechanism = 1;
                pci_maxdevice = 32;
		.......
	}
I guess that the PCI bus isn't recognize if the number of function
is not equal 0 (in another words, if the PCI bridge is the
multi-function device).

I tried to change the mask 'CONF1_ENABLE_MSK from '0x00ff0700ul' to
'0x00ff0000ul', and it works well.
But I'm worrying if my change is correct.

Please give me some advices.

Thank you in advance.

---
Mihoko Tanaka
<Email: mihoko@pa.yokogawa.co.jp>



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