Abhay Salunke | 6c54c28 | 2005-09-06 15:17:14 -0700 | [diff] [blame] | 1 | Purpose: |
| 2 | Demonstrate the usage of the new open sourced rbu (Remote BIOS Update) driver |
| 3 | for updating BIOS images on Dell servers and desktops. |
| 4 | |
| 5 | Scope: |
| 6 | This document discusses the functionality of the rbu driver only. |
| 7 | It does not cover the support needed from aplications to enable the BIOS to |
| 8 | update itself with the image downloaded in to the memory. |
| 9 | |
| 10 | Overview: |
| 11 | This driver works with Dell OpenManage or Dell Update Packages for updating |
| 12 | the BIOS on Dell servers (starting from servers sold since 1999), desktops |
| 13 | and notebooks (starting from those sold in 2005). |
| 14 | Please go to http://support.dell.com register and you can find info on |
| 15 | OpenManage and Dell Update packages (DUP). |
Abhay Salunke | e61c0e3 | 2005-09-16 19:28:04 -0700 | [diff] [blame] | 16 | Libsmbios can also be used to update BIOS on Dell systems go to |
| 17 | http://linux.dell.com/libsmbios/ for details. |
Abhay Salunke | 6c54c28 | 2005-09-06 15:17:14 -0700 | [diff] [blame] | 18 | |
| 19 | Dell_RBU driver supports BIOS update using the monilothic image and packetized |
| 20 | image methods. In case of moniolithic the driver allocates a contiguous chunk |
| 21 | of physical pages having the BIOS image. In case of packetized the app |
| 22 | using the driver breaks the image in to packets of fixed sizes and the driver |
| 23 | would place each packet in contiguous physical memory. The driver also |
| 24 | maintains a link list of packets for reading them back. |
| 25 | If the dell_rbu driver is unloaded all the allocated memory is freed. |
| 26 | |
Abhay Salunke | e61c0e3 | 2005-09-16 19:28:04 -0700 | [diff] [blame] | 27 | The rbu driver needs to have an application (as mentioned above)which will |
| 28 | inform the BIOS to enable the update in the next system reboot. |
Abhay Salunke | 6c54c28 | 2005-09-06 15:17:14 -0700 | [diff] [blame] | 29 | |
| 30 | The user should not unload the rbu driver after downloading the BIOS image |
| 31 | or updating. |
| 32 | |
| 33 | The driver load creates the following directories under the /sys file system. |
| 34 | /sys/class/firmware/dell_rbu/loading |
| 35 | /sys/class/firmware/dell_rbu/data |
| 36 | /sys/devices/platform/dell_rbu/image_type |
| 37 | /sys/devices/platform/dell_rbu/data |
| 38 | |
| 39 | The driver supports two types of update mechanism; monolithic and packetized. |
| 40 | These update mechanism depends upon the BIOS currently running on the system. |
| 41 | Most of the Dell systems support a monolithic update where the BIOS image is |
| 42 | copied to a single contiguous block of physical memory. |
| 43 | In case of packet mechanism the single memory can be broken in smaller chuks |
| 44 | of contiguous memory and the BIOS image is scattered in these packets. |
| 45 | |
| 46 | By default the driver uses monolithic memory for the update type. This can be |
Abhay Salunke | e61c0e3 | 2005-09-16 19:28:04 -0700 | [diff] [blame] | 47 | changed to packets during the driver load time by specifying the load |
Abhay Salunke | 6c54c28 | 2005-09-06 15:17:14 -0700 | [diff] [blame] | 48 | parameter image_type=packet. This can also be changed later as below |
| 49 | echo packet > /sys/devices/platform/dell_rbu/image_type |
Abhay Salunke | e61c0e3 | 2005-09-16 19:28:04 -0700 | [diff] [blame] | 50 | Also echoing either mono ,packet or init in to image_type will free up the |
| 51 | memory allocated by the driver. |
Abhay Salunke | 6c54c28 | 2005-09-06 15:17:14 -0700 | [diff] [blame] | 52 | |
| 53 | Do the steps below to download the BIOS image. |
| 54 | 1) echo 1 > /sys/class/firmware/dell_rbu/loading |
| 55 | 2) cp bios_image.hdr /sys/class/firmware/dell_rbu/data |
| 56 | 3) echo 0 > /sys/class/firmware/dell_rbu/loading |
| 57 | |
| 58 | The /sys/class/firmware/dell_rbu/ entries will remain till the following is |
| 59 | done. |
Abhay Salunke | e61c0e3 | 2005-09-16 19:28:04 -0700 | [diff] [blame] | 60 | echo -1 > /sys/class/firmware/dell_rbu/loading. |
Abhay Salunke | 6c54c28 | 2005-09-06 15:17:14 -0700 | [diff] [blame] | 61 | Until this step is completed the drivr cannot be unloaded. |
Abhay Salunke | e61c0e3 | 2005-09-16 19:28:04 -0700 | [diff] [blame] | 62 | If an user by accident executes steps 1 and 3 above without executing step 2; |
| 63 | it will make the /sys/class/firmware/dell_rbu/ entries to disappear. |
| 64 | The entries can be recreated by doing the following |
| 65 | echo init > /sys/devices/platform/dell_rbu/image_type |
| 66 | NOTE: echoing init in image_type does not change it original value. |
Abhay Salunke | 6c54c28 | 2005-09-06 15:17:14 -0700 | [diff] [blame] | 67 | |
| 68 | Also the driver provides /sys/devices/platform/dell_rbu/data readonly file to |
| 69 | read back the image downloaded. This is useful in case of packet update |
| 70 | mechanism where the above steps 1,2,3 will repeated for every packet. |
| 71 | By reading the /sys/devices/platform/dell_rbu/data file all packet data |
| 72 | downloaded can be verified in a single file. |
| 73 | The packets are arranged in this file one after the other in a FIFO order. |
| 74 | |
| 75 | NOTE: |
| 76 | This driver requires a patch for firmware_class.c which has the addition |
| 77 | of request_firmware_nowait_nohotplug function to wortk |
| 78 | Also after updating the BIOS image an user mdoe application neeeds to execute |
| 79 | code which message the BIOS update request to the BIOS. So on the next reboot |
| 80 | the BIOS knows about the new image downloaded and it updates it self. |
| 81 | Also don't unload the rbu drive if the image has to be updated. |
| 82 | |