<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux/drivers/firmware/dmi_scan.c, branch v2.6.25</title>
<subtitle>Linux Kernel (branches are rebased on master from time to time)</subtitle>
<id>https://sre.ring0.de/linux/atom?h=v2.6.25</id>
<link rel='self' href='https://sre.ring0.de/linux/atom?h=v2.6.25'/>
<link rel='alternate' type='text/html' href='https://sre.ring0.de/linux/'/>
<updated>2008-04-04T21:46:26Z</updated>
<entry>
<title>ipmi: change device node ordering to reflect probe order</title>
<updated>2008-04-04T21:46:26Z</updated>
<author>
<name>Carol Hebert</name>
<email>cah@us.ibm.com</email>
</author>
<published>2008-04-04T21:30:03Z</published>
<link rel='alternate' type='text/html' href='https://sre.ring0.de/linux/commit/?id=abd24df828f1a72971db29d1b74fefae104ea9e2'/>
<id>urn:sha1:abd24df828f1a72971db29d1b74fefae104ea9e2</id>
<content type='text'>
In 2.6.14 a patch was merged which switching the order of the ipmi device
naming from in-order-of-discovery over to reverse-order-of-discovery.

So on systems with multiple BMC interfaces, the ipmi device names are being
created in reverse order relative to how they are discovered on the system
(e.g.  on an IBM x3950 multinode server with N nodes, the device name for the
BMC in the first node is /dev/ipmiN-1 and the device name for the BMC in the
last node is /dev/ipmi0, etc.).

The problem is caused by the list handling routines chosen in dmi_scan.c.
Using list_add() causes the multiple ipmi devices to be added to the device
list using a stack-paradigm and so the ipmi driver subsequently pulls them off
during initialization in LIFO order.  This patch changes the
dmi_save_ipmi_device() list handling paradigm to a queue, thereby allowing the
ipmi driver to build the ipmi device names in the order in which they are
found on the system.

Signed-off-by: Carol Hebert &lt;cah@us.ibm.com&gt;
Signed-off-by: Corey Minyard &lt;cminyard@mvista.com&gt;
Signed-off-by: Andrew Morton &lt;akpm@linux-foundation.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
</content>
</entry>
<entry>
<title>dmi: prevent linked list corruption</title>
<updated>2008-02-24T01:12:15Z</updated>
<author>
<name>Jean Delvare</name>
<email>khali@linux-fr.org</email>
</author>
<published>2008-02-23T23:23:55Z</published>
<link rel='alternate' type='text/html' href='https://sre.ring0.de/linux/commit/?id=43fe105a5c91b2f00ea7f900ed307fe980410612'/>
<id>urn:sha1:43fe105a5c91b2f00ea7f900ed307fe980410612</id>
<content type='text'>
Adding the same item to a given linked list more than once is guaranteed
to break and corrupt the list.  This is however what we do in dmi_scan
since commit 79da4721117fcf188b4b007b775738a530f574da ("x86: fix DMI out
of memory problems").

Given that there is absolutely no interest in saving empty OEM strings
anyway, I propose the simple and efficient fix below: we discard the empty
OEM strings altogether.

Signed-off-by: Jean Delvare &lt;khali@linux-fr.org&gt;
Acked-by: Parag Warudkar &lt;parag.warudkar@gmail.com&gt;
Cc: Ingo Molnar &lt;mingo@elte.hu&gt;
Cc: Thomas Gleixner &lt;tglx@linutronix.de&gt;
Cc: Matt Domsch &lt;Matt_Domsch@dell.com&gt;
Signed-off-by: Andrew Morton &lt;akpm@linux-foundation.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
</content>
</entry>
<entry>
<title>dmi: don't save the same device twice</title>
<updated>2008-02-24T01:12:14Z</updated>
<author>
<name>Jean Delvare</name>
<email>khali@linux-fr.org</email>
</author>
<published>2008-02-23T23:23:46Z</published>
<link rel='alternate' type='text/html' href='https://sre.ring0.de/linux/commit/?id=f3069ae9d76901d021362bb63d9ad6c5900dfc76'/>
<id>urn:sha1:f3069ae9d76901d021362bb63d9ad6c5900dfc76</id>
<content type='text'>
Now that we gather on-board devices from both DMI types 10 and 41, there is
a possibility that we list the same device twice.  In order to not confuse
drivers, and also to save memory, make sure that we do not add duplicate
devices to the dmi_devices list.

Signed-off-by: Jean Delvare &lt;khali@linux-fr.org&gt;
Cc: Wim Van Sebroeck &lt;wim@iguana.be&gt;
Signed-off-by: Andrew Morton &lt;akpm@linux-foundation.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
</content>
</entry>
<entry>
<title>SMBIOS/DMI: add type 41 = Onboard Devices Extended Information</title>
<updated>2008-02-08T17:22:37Z</updated>
<author>
<name>Wim Van Sebroeck</name>
<email>wim@iguana.be</email>
</author>
<published>2008-02-08T12:20:58Z</published>
<link rel='alternate' type='text/html' href='https://sre.ring0.de/linux/commit/?id=b4bd7d59451960d4e1d994c01581b31b08fe3720'/>
<id>urn:sha1:b4bd7d59451960d4e1d994c01581b31b08fe3720</id>
<content type='text'>
From version 2.6 of the SMBIOS standard, type 10 (On Board Devices
Information) becomes obsolete.  The reason for this is that no further
fields can be added to this structure without adversely affecting existing
software's ability to properly parse the data.

Therefore type 41 (Onboard Devices Extended Information) was added.
The structure is as follows:

struct smbios_type_41 {
	u8 type;
	u8 length;
	u16 handle;
	u8 reference_designation_string;
	u8 device_type;		/* same device type as in type 10 */
	u8 device_type_instance;
	u16 segment_group_number;
	u8 bus_number;
	u8 device_function_number;
};

For more info: http://www.dmtf.org/standards/smbios

Signed-off-by: Wim Van Sebroeck &lt;wim@iguana.be&gt;
Cc: Jean Delvare &lt;khali@linux-fr.org&gt;
Cc: Len Brown &lt;lenb@kernel.org&gt;
Cc: Jeff Garzik &lt;jeff@garzik.org&gt;
Cc: Tejun Heo &lt;htejun@gmail.com&gt;
Cc: Alan Cox &lt;alan@lxorguk.ukuu.org.uk&gt;
Signed-off-by: Andrew Morton &lt;akpm@linux-foundation.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
</content>
</entry>
<entry>
<title>dmi: Let drivers walk the DMI table</title>
<updated>2008-02-08T01:39:40Z</updated>
<author>
<name>Jean Delvare</name>
<email>khali@linux-fr.org</email>
</author>
<published>2007-11-03T16:29:20Z</published>
<link rel='alternate' type='text/html' href='https://sre.ring0.de/linux/commit/?id=7fce084a0b3e2bb8caef919f8f36065953655bb5'/>
<id>urn:sha1:7fce084a0b3e2bb8caef919f8f36065953655bb5</id>
<content type='text'>
Let drivers walk the DMI table for their own needs. Some drivers need
data stored in OEM-specific DMI records for proper operation.

Signed-off-by: Jean Delvare &lt;khali@linux-fr.org&gt;
Signed-off-by: Mark M. Hoffman &lt;mhoffman@lightlink.com&gt;
</content>
</entry>
<entry>
<title>DMI: remove duplicate helper routine</title>
<updated>2008-02-03T22:37:02Z</updated>
<author>
<name>Len Brown</name>
<email>len.brown@intel.com</email>
</author>
<published>2008-01-25T20:40:02Z</published>
<link rel='alternate' type='text/html' href='https://sre.ring0.de/linux/commit/?id=e6298c6d60838495978cdbe5555dc290785bb961'/>
<id>urn:sha1:e6298c6d60838495978cdbe5555dc290785bb961</id>
<content type='text'>
Use existing dmi_get_system_info(),
Delete duplicate dmi_get_slot()

Spotted-by: Wim Van Sebroeck &lt;wim@iguana.be&gt;
Signed-off-by: Len Brown &lt;len.brown@intel.com&gt;
</content>
</entry>
<entry>
<title>x86: left over fix for leak of early_ioremp in dmi_scan</title>
<updated>2008-01-30T12:33:32Z</updated>
<author>
<name>Yinghai Lu</name>
<email>Yinghai.Lu@Sun.COM</email>
</author>
<published>2008-01-30T12:33:32Z</published>
<link rel='alternate' type='text/html' href='https://sre.ring0.de/linux/commit/?id=3212bff370c2f22e4987c6679ba485654cefb178'/>
<id>urn:sha1:3212bff370c2f22e4987c6679ba485654cefb178</id>
<content type='text'>
Signed-off-by: Yinghai Lu &lt;yinghai@sun.com&gt;
Signed-off-by: Ingo Molnar &lt;mingo@elte.hu&gt;
Signed-off-by: Thomas Gleixner &lt;tglx@linutronix.de&gt;
</content>
</entry>
<entry>
<title>x86: fix DMI ioremap leak</title>
<updated>2008-01-30T12:33:09Z</updated>
<author>
<name>Ingo Molnar</name>
<email>mingo@elte.hu</email>
</author>
<published>2008-01-30T12:33:09Z</published>
<link rel='alternate' type='text/html' href='https://sre.ring0.de/linux/commit/?id=0d64484f7ea12ca04211b497e94634c3d27cf3fb'/>
<id>urn:sha1:0d64484f7ea12ca04211b497e94634c3d27cf3fb</id>
<content type='text'>
Signed-off-by: Ingo Molnar &lt;mingo@elte.hu&gt;
Signed-off-by: Thomas Gleixner &lt;tglx@linutronix.de&gt;
</content>
</entry>
<entry>
<title>x86: fix DMI out of memory problems</title>
<updated>2008-01-30T12:31:59Z</updated>
<author>
<name>Parag Warudkar</name>
<email>parag.warudkar@gmail.com</email>
</author>
<published>2008-01-30T12:31:59Z</published>
<link rel='alternate' type='text/html' href='https://sre.ring0.de/linux/commit/?id=79da4721117fcf188b4b007b775738a530f574da'/>
<id>urn:sha1:79da4721117fcf188b4b007b775738a530f574da</id>
<content type='text'>
People with HP Desktops (including me) encounter couple of DMI errors
during boot - dmi_save_oem_strings_devices: out of memory and
dmi_string: out of memory.

On some HP desktops the DMI data include OEM strings (type 11) out of
which only few are meaningful and most other are empty. DMI code
religiously creates copies of these 27 strings (65 bytes each in my
case) and goes OOM in dmi_string().

If DMI_MAX_DATA is bumped up a little then it goes and fails in
dmi_save_oem_strings while allocating dmi_devices of sizeof(struct
dmi_device) corresponding to these strings.

On x86_64 since we cannot use alloc_bootmem this early, the code uses a
static array of 2048 bytes (DMI_MAX_DATA) for allocating the memory DMI
needs. It does not survive the creation of empty strings and devices.

Fix this by detecting and not newly allocating empty strings and instead
using a one statically defined dmi_empty_string.

Also do not create a new struct dmi_device for each empty string - use
one statically define dmi_device with .name=dmi_empty_string and add
that to the dmi_devices list.

On x64 this should stop the OOM with same current size of DMI_MAX_DATA
and on x86 this should save a good amount of (27*65 bytes +
27*sizeof(struct dmi_device) bootmem.

Compile and boot tested on both 32-bit and 64-bit x86.

Signed-off-by: Parag Warudkar &lt;parag.warudkar@gmail.com&gt;
Signed-off-by: Ingo Molnar &lt;mingo@elte.hu&gt;
Signed-off-by: Thomas Gleixner &lt;tglx@linutronix.de&gt;
</content>
</entry>
<entry>
<title>DMI: create dmi_get_slot()</title>
<updated>2008-01-24T02:23:13Z</updated>
<author>
<name>Len Brown</name>
<email>len.brown@intel.com</email>
</author>
<published>2008-01-23T21:36:45Z</published>
<link rel='alternate' type='text/html' href='https://sre.ring0.de/linux/commit/?id=f89e3b0620a0dc19f313218f55373b9361142203'/>
<id>urn:sha1:f89e3b0620a0dc19f313218f55373b9361142203</id>
<content type='text'>
This simply allows other sub-systems (such as ACPI)
to access and print out slots in static dmi_ident[].

Signed-off-by: Len Brown &lt;len.brown@intel.com&gt;
</content>
</entry>
</feed>
