Hi to all
I have some questions (and hope someone can clarify my doubts)
I'm trying to enumerate all the devices. Right now I've implemented PCI enumeration. But I've been reading the forum/wiki and saw that this task could be implemented using SMBIOS. (Or am I wrong? )
If both could be used for the same task (enumerate devices):
Are there any advantages using SMBIOS instead of PCI?
Does one of this replace the other or they complement each other?
Could PCI/SMBIOS list some devices that the other can't?
Or maybe they should be used for totally different things?
should I implement both?
How to list devices ? PCI scan OR SMBIOS ?
Re: How to list devices ? PCI scan OR SMBIOS ?
Hi,
For example, someone upgrading the hardware in a computer might be glad to know that there's 2 RAM slots and one 512 MiB DDR RAM chip in the first RAM slot; but an OS doesn't care about this - an OS needs to know which areas of RAM are *usable*, including where these areas are in the physical address space.
IMHO, for software configuration purposes, any information you can get from interfaces designed for software configuration should take precedence over any information you can get from interfaces that weren't designed for software configuration...
This means that (for e.g.) for information on PCI devices, you should ignore SMBIOS and get everything from PCI configuration space.
Cheers,
Brendan
SMBIOS is intended to provide administrators (end users) with information about the hardware, to make it easier to track the hardware in a company (e.g. asset management), and for finding out what sort of RAM/PCI/ISA sockets/slots are there for upgrades purposes, etc. It's not intended for OS configuration, may not be supported by the BIOS (especially older BIOSs), and it can return dodgy results, or no results, or results that lack the information an OS needs.posman wrote:I'm trying to enumerate all the devices. Right now I've implemented PCI enumeration. But I've been reading the forum/wiki and saw that this task could be implemented using SMBIOS. (Or am I wrong? )
For example, someone upgrading the hardware in a computer might be glad to know that there's 2 RAM slots and one 512 MiB DDR RAM chip in the first RAM slot; but an OS doesn't care about this - an OS needs to know which areas of RAM are *usable*, including where these areas are in the physical address space.
Scanning PCI won't tell you about ISA devices (including ISA devices built into the motherboard, like PIT, PIC, etc), or RAM sockets, or empty PCI slots, or motherboard vendor, motherboard model number/product code, etc. SMBIOS might tell you this information.posman wrote:Does one of this replace the other or they complement each other?
IMHO, for software configuration purposes, any information you can get from interfaces designed for software configuration should take precedence over any information you can get from interfaces that weren't designed for software configuration...
This means that (for e.g.) for information on PCI devices, you should ignore SMBIOS and get everything from PCI configuration space.
They are *intended* to be used for totally different things; but, in some cases you may not have any choice and might need to use SMBIOS for something it wasn't intended for. For example, if you need to know the motherboard manufacturer and model number (e.g. to work around hardware or firmware bugs), then SMBIOS is probably the only sane way to get it.posman wrote:Or maybe they should be used for totally different things?
should I implement both?
Cheers,
Brendan
For all things; perfection is, and will always remain, impossible to achieve in practice. However; by striving for perfection we create things that are as perfect as practically possible. Let the pursuit of perfection be our guide.
-
- Member
- Posts: 116
- Joined: Wed Oct 22, 2008 2:21 am
- Location: Roma,Italy
Re: How to list devices ? PCI scan OR SMBIOS ?
Ciao,
For enumerate standard device ( keyboard,PIT,PIC,Real-Time Cloc,Speaker and so on) use BIOSPnP function
for other device use PCI
For enumerate standard device ( keyboard,PIT,PIC,Real-Time Cloc,Speaker and so on) use BIOSPnP function
for other device use PCI