[LinuxBIOS] PCI: Left over static devices. Check your Config.lb

Uwe Hermann uwe at hermann-uwe.de
Sun Dec 9 19:12:58 CET 2007


On Wed, Dec 05, 2007 at 12:00:59PM -0800, Steve Isaacs wrote:
> On Wed, 2007-12-05 at 12:30 +0100, Uwe Hermann wrote:
> 
> > Please post your Config.lb and 'lspci -tvnn' output.
> > 
> > You're likely listing PCI devices in Config.lb which are not on the
> > board, or you use the wrong nesting or order (?)
> > 
> 
> Thanks, see below.
> 
> I have been in a very uncomfortable position of having to guess about
> this. I dug around in other boards trying to find something that almost
> fits and then hacked from there.
> 
> Is there anything that describes how to make a configuration in detail?
> I'd rather learn the rules than have someone figure it out for me. 

There's a PDF which describes some parts of it, not sure how complete it is:

$ cd documentation
$ make
$ xpdf LinuxBIOS-AMD64.pdf


> Other questions are, in what form and how is this information used at
> run-time?

For the PCI parts, LinuxBIOS sets up the static/onboard devices and scans
for other devices dynamically, if I'm not mistaken.
This means you do not specify PCI/AGP/PCIe extention cards in Config.lb,
they're rather detected at runtime.

For Super I/O stuff, the (PnP) settings are hardcoded from the options
in the 'chip superio/foo/bar' section of Config.lb

The CPU/socket/APIC stuff below tells LinuxBIOS which CPU init code
to execute etc.


> Config.lb
> 
> chip northbridge/amd/amdk8/root_complex
>   device apic_cluster 0 on
>     chip cpu/amd/socket_F
>       device apic 0 on
>       end
>     end
>   end

Looks ok.


>   device pci_domain 0 on
>     chip northbridge/amd/amdk8
>       device pci 18.0 on #  northbridge
>                          #  devices on link 0
>         chip southbridge/broadcom/bcm21000
>           device pci 0.0 on
>           end
>           device pci 1.0 off
>           end
>           device pci 2.0 on
>           end
>           device pci 3.0 off
>           end
>           device pci 4.0 off
>           end
>         end
>         chip southbridge/broadcom/bcm11000
>           device pci 0.0 on
>           end
>           device pci 0.1  on
>           end

Hm, not sure about the above stuff...


>           device pci 1.0 on
>             device pci e.0 on
>             end
>           end

I may be wrong, but I don't think you can nest PCI entries like this.


>           device pci 1.1 on
>           end
>           device pci 2.0 on


>             device pci b.0 on
>             end
>             device pci b.1 on
>             end
>             device pci b.2 on
>             end
>             device pci c.0 on
>             end
>             device pci c.1 on
>             end
>             device pci c.2 on
>             end
>             device pci d.0 on
>             end
>             device pci d.1 on
>             end
>             device pci d.2 on
>             end

What is 2.0? What are the b.0 etc. entries? This doesn't seem to match
the lspci you posted.


>           end
>           device pci 2.1 on
>           end
>           device pci 3.0 on
>           end
>           device pci 3.1 on
>           end
>           device pci 4.0 on
>           end
>           device pci 4.1 on
>           end
>           device pci 6.0 on
>             chip drivers/i2c/i2cmux2 # pca9544 smbus mux
>               device i2c 71 on # MIS_ P40,28,39
>               end #0 pca9544 0
>               device i2c 71 on # HT_ P40,24,42
>               end #0 pca9544 1
>               device i2c 71 on # pca9544 2 P1_ P40,2,6,7
>                 chip drivers/generic/generic #dimm 0-0-0
>                   device i2c 50 on
>                   end
>                 end
>                 chip drivers/generic/generic #dimm 0-0-1
>                   device i2c 51 on
>                   end
>                 end
>                 chip drivers/generic/generic #dimm 0-1-0
>                   device i2c 52 on
>                   end
>                 end
>                 chip drivers/generic/generic #dimm 0-1-1
>                   device i2c 53 on
>                   end
>                 end
>               end
>               device i2c 71 on #pca9544 3 P2_ P40,8,12,13
>                 chip drivers/generic/generic #dimm 1-0-0
>                   device i2c 50 on
>                   end
>                 end
>                 chip drivers/generic/generic #dimm 1-0-1
>                   device i2c 51 on
>                   end
>                 end
>                 chip drivers/generic/generic #dimm 1-1-0
>                   device i2c 52 on
>                   end
>                 end
>                 chip drivers/generic/generic #dimm 1-1-1
>                   device i2c 53 on
>                   end
>                 end
>               end
>             end
>           end
>           device pci 6.1 on
>           end
>           device pci 6.2 on

What device is 6.2? The Super I/O section below should be a child of
the ISA/LPC device usually.


>             chip superio/smsc/sch4304

Please use the 'superio/smsc/smscsuperio' driver, which is a common
driver for many SMSC Super I/Os. It should be easy to add support
for the sch4304 there.

Do you have the sch4304 datasheet? If so, it would be nice if you
could add support for this chip to superiotool, see
http://linuxbios.org/Superiotool


>               device  pnp 2e.0 off  # Floppy
>                 io 0x60 = 0x3f0
>                 irq 0x70 = 6
>                 drq 0x74 = 2
>               end
>               device pnp 2e.3 on  # Parallel Port
>                 io 0x60 = 0x378
>                 irq 0x70 = 7
>               end
>               device pnp 2e.4 on  # Com 1
>                 io 0x60 = 0x3f8
>                 irq 0x70 = 4
>               end
>               device pnp 2e.5 on # Com 2
>                 io 0x60 = 0x2f8
>                 irq 0x70 = 3
>               end
>               device pnp 2e.6 on # RTC
>                 io 0x60 = 0x70
>                 io 0x62 = 0x72
>               end
>               device pnp 2e.7 on  # Keyboard
>                 io 0x60 = 0x60
>                 io 0x62 = 0x64
>                 irq 0x70 = 1
>               end

Looks good as far as I can tell.


>               #device pnp 2e.7 off
>               #end
>               #device pnp 2e.B off
>               #end

This section should have one entry per Super I/O LDN. If the Super I/O
has some LDNs/capabilities you don't use on the board, it should still
be listed, but with "off" (and a comment why it's off).


>             end
> 	  end


>           device pci 6.3 off
>           end
>           device pci 6.4 on
>           end
>           device pci 6.5 on
>           end
>           device pci 6.6 on
>           end

Where does this come from? I don't see 6.3, 6.4 etc. in the lspci output.


>         end # bcm11000
>       end #  device pci 18.0
>       device pci 18.1 on
>       end

Not sure about the above few lines. Other boards have e.g.

      device pci 18.0 on end                    # Link 1
      device pci 18.0 on end

(yes, twice, there's some reason for that which was explained in the
PDF, IIRC).


>       device pci 18.2 on
>       end
>       device pci 18.3 on
>       end

You don't have the 19.* devices from lspci listed here; not sure what
those devices are, but I guess they must be listed.


>     end
>   end #pci_domain
> end
> 
> $ lspci -tvnn
> -[0000:00]-+-01.0  1166:0031
>            +-02.0-[0000:01]----0f.0  1166:0410
>            +-03.0-[0000:02]--+-0c.0  1166:0412
>            |                 +-0c.1  1166:0412
>            |                 +-0c.2  1166:0414
>            |                 +-0d.0  1166:0412
>            |                 +-0d.1  1166:0412
>            |                 +-0d.2  1166:0414
>            |                 +-0e.0  1166:0412
>            |                 +-0e.1  1166:0412
>            |                 \-0e.2  1166:0416
>            +-04.0-[0000:03]--
>            +-05.0-[0000:04]--
>            +-07.0  1166:0408
>            +-07.1  1166:0214
>            +-07.2  1166:040a
>            +-08.0-[0000:05]--
>            +-09.0-[0000:06]--
>            +-0a.0-[0000:07]--
>            +-0b.0-[0000:08]--
>            +-0c.0-[0000:09]--
>            +-0e.0  10ec:8139
>            +-0f.0  1002:515e
>            +-18.0  1022:1100
>            +-18.1  1022:1101
>            +-18.2  1022:1102
>            +-18.3  1022:1103
>            +-19.0  1022:1100
>            +-19.1  1022:1101
>            +-19.2  1022:1102
>            \-19.3  1022:1103

Can you also post the 'lspci' output? Your version of lspci doesn't
attach the device names to the -tvnn output.


Thanks, Uwe.
-- 
http://www.hermann-uwe.de  | http://www.holsham-traders.de
http://www.crazy-hacks.org | http://www.unmaintained-free-software.org




More information about the coreboot mailing list