SMBIOS again

Question about which tools to use, bugs, the best way to implement a function, etc should go here. Don't forget to see if your question is answered in the wiki first! When in doubt post here.
Post Reply
User avatar
naiksidd_85
Member
Member
Posts: 76
Joined: Thu Jan 17, 2008 1:15 am

SMBIOS again

Post by naiksidd_85 »

I am trying to access the SMBIOS values to check all the components that are present on my machine.

I have added the code for searching the anchor string (_SM_)of the entry point structure and am able to locate it.

also i am able to locate the intermidiate string (_DMI_).

but the value at offset 18h which gives the address of the other structure is probably not correct as I just get values 0x00.

can any one help me locate it
Learning a lot these days THANKS to OSdev users
arkady
Posts: 17
Joined: Wed Jan 02, 2008 3:14 pm
Location: Poland

Post by arkady »

Hi,

On my machine the SMBIOS Entry Point structure "looks" like this:

5F 53 4D 5F 22 1F 02 03-5C 00 00 00 00 00 00 00
5F 44 4D 49 5F A7 63 04-00 01 0F 00 27 00 23

which translates to (offset-meaning);
00 - _SM_
04 - 22 (checksum)
05 - 1F (length in bytes)
06/07 - version 2.3
08 - 005C (max size)
0A - 00 (Entry point based on SMBIOS 2.1)
10 - _DMI_
15 - A7 (checksum)
16 - 0463 (table length)
18 - 000F0100 (phys. address of the table)
1C - 0027 (number of structures)
1E - 23 (spec. 2.3)

This structure is located at 0F0CE0 in my case. It points to a table of structures >> F0100. At that address I can see the following:

00 14 00 00 01 02 00 E0 03 0F 80 9E C9 7F 00 00 .......ŕ..€žÉ..
00 00 33 01 41 77 61 72 64 20 53 6F 66 74 77 61 ..3.Award Softwa
72 65 20 49 6E 74 65 72 6E 61 74 69 6F 6E 61 6C re International
2C 20 49 6E 63 2E 00 46 36 00 31 30 2F 31 32 2F , Inc..F6.10/12/
32 30 30 36 00 00 01 19 01 00 01 02 03 04 FF FF 2006..........˙˙

...and so on...

In your case, naiksidd_85, value at offset 18 SHOULD give you the correct address of the table (~list of devices) for your system, AFAIK. It's hard to tell why it isn't so.... Have you checked whether both checksums are correct - offsets 04 & 15?
johnsa
Member
Member
Posts: 296
Joined: Mon Oct 15, 2007 3:04 pm

Re: SMBIOS again

Post by johnsa »

Hi, reviving an old thread here after searching.

I've been working on some SMBIOS support code.

It was all going quite well, found the _SM_ table, validate checksum, display version number to be 2.3 (on real h/w) and 2.4 under bochs. Get the pointer to the structures table and heres where things go funny:

On bochs I find the BIOS Info table (type 0) all the entries are correct except for string entries are = 1 (index into string table / unformed area)... this is for vendor name, version and date strings. Then the string table itself seems to contain garbage.

On real h/w i don't seem to be able to locate a single table at all... not too sure about this.

The question is... is the SMBIOS Bios info table in Bochs broken?
johnsa
Member
Member
Posts: 296
Joined: Mon Oct 15, 2007 3:04 pm

Re: SMBIOS again

Post by johnsa »

Ok, got it working on bochs.. not 100% sure what the issue was, but after some mem-dumps and checking the code it now finds the strings. However they are both still = 1. So i assume there is no rule that multiple strings can't be the same.
Post Reply