forked from Minki/linux
e61c0e336f
BUG fixes: The driver used to allocate memory with spinlock held which has been fixed in this patch. The driver was printing the entire buffer when it received a invalid entry in image_type. The fix is to only print a warning message and not the buffer. Usability enhancements: It is possible that due to user error the /sys/class/firmware/dell_rbu entries might be missing, this can happen if the user does the following echo 1 > /sys/class/firmware/dell_rbu/loading echo 0 > /sys/class/firmware/dell_rbu/loading This will make the entries in /sys/class/firmware/ to disappear and the only way get them back was bby unloading and loading the driver. This patch makes the user recreate these entries by echoing init in to image_type. This patch has been tested with Libsmbios and Dell OpenManage. Signed-off-by: Abhay Salunke <Abhay_Salunke@dell.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
83 lines
4.0 KiB
Plaintext
83 lines
4.0 KiB
Plaintext
Purpose:
|
|
Demonstrate the usage of the new open sourced rbu (Remote BIOS Update) driver
|
|
for updating BIOS images on Dell servers and desktops.
|
|
|
|
Scope:
|
|
This document discusses the functionality of the rbu driver only.
|
|
It does not cover the support needed from aplications to enable the BIOS to
|
|
update itself with the image downloaded in to the memory.
|
|
|
|
Overview:
|
|
This driver works with Dell OpenManage or Dell Update Packages for updating
|
|
the BIOS on Dell servers (starting from servers sold since 1999), desktops
|
|
and notebooks (starting from those sold in 2005).
|
|
Please go to http://support.dell.com register and you can find info on
|
|
OpenManage and Dell Update packages (DUP).
|
|
Libsmbios can also be used to update BIOS on Dell systems go to
|
|
http://linux.dell.com/libsmbios/ for details.
|
|
|
|
Dell_RBU driver supports BIOS update using the monilothic image and packetized
|
|
image methods. In case of moniolithic the driver allocates a contiguous chunk
|
|
of physical pages having the BIOS image. In case of packetized the app
|
|
using the driver breaks the image in to packets of fixed sizes and the driver
|
|
would place each packet in contiguous physical memory. The driver also
|
|
maintains a link list of packets for reading them back.
|
|
If the dell_rbu driver is unloaded all the allocated memory is freed.
|
|
|
|
The rbu driver needs to have an application (as mentioned above)which will
|
|
inform the BIOS to enable the update in the next system reboot.
|
|
|
|
The user should not unload the rbu driver after downloading the BIOS image
|
|
or updating.
|
|
|
|
The driver load creates the following directories under the /sys file system.
|
|
/sys/class/firmware/dell_rbu/loading
|
|
/sys/class/firmware/dell_rbu/data
|
|
/sys/devices/platform/dell_rbu/image_type
|
|
/sys/devices/platform/dell_rbu/data
|
|
|
|
The driver supports two types of update mechanism; monolithic and packetized.
|
|
These update mechanism depends upon the BIOS currently running on the system.
|
|
Most of the Dell systems support a monolithic update where the BIOS image is
|
|
copied to a single contiguous block of physical memory.
|
|
In case of packet mechanism the single memory can be broken in smaller chuks
|
|
of contiguous memory and the BIOS image is scattered in these packets.
|
|
|
|
By default the driver uses monolithic memory for the update type. This can be
|
|
changed to packets during the driver load time by specifying the load
|
|
parameter image_type=packet. This can also be changed later as below
|
|
echo packet > /sys/devices/platform/dell_rbu/image_type
|
|
Also echoing either mono ,packet or init in to image_type will free up the
|
|
memory allocated by the driver.
|
|
|
|
Do the steps below to download the BIOS image.
|
|
1) echo 1 > /sys/class/firmware/dell_rbu/loading
|
|
2) cp bios_image.hdr /sys/class/firmware/dell_rbu/data
|
|
3) echo 0 > /sys/class/firmware/dell_rbu/loading
|
|
|
|
The /sys/class/firmware/dell_rbu/ entries will remain till the following is
|
|
done.
|
|
echo -1 > /sys/class/firmware/dell_rbu/loading.
|
|
Until this step is completed the drivr cannot be unloaded.
|
|
If an user by accident executes steps 1 and 3 above without executing step 2;
|
|
it will make the /sys/class/firmware/dell_rbu/ entries to disappear.
|
|
The entries can be recreated by doing the following
|
|
echo init > /sys/devices/platform/dell_rbu/image_type
|
|
NOTE: echoing init in image_type does not change it original value.
|
|
|
|
Also the driver provides /sys/devices/platform/dell_rbu/data readonly file to
|
|
read back the image downloaded. This is useful in case of packet update
|
|
mechanism where the above steps 1,2,3 will repeated for every packet.
|
|
By reading the /sys/devices/platform/dell_rbu/data file all packet data
|
|
downloaded can be verified in a single file.
|
|
The packets are arranged in this file one after the other in a FIFO order.
|
|
|
|
NOTE:
|
|
This driver requires a patch for firmware_class.c which has the addition
|
|
of request_firmware_nowait_nohotplug function to wortk
|
|
Also after updating the BIOS image an user mdoe application neeeds to execute
|
|
code which message the BIOS update request to the BIOS. So on the next reboot
|
|
the BIOS knows about the new image downloaded and it updates it self.
|
|
Also don't unload the rbu drive if the image has to be updated.
|
|
|