Commit | Line | Data |
---|---|---|
58ef0e5b MCC |
1 | ============================================================= |
2 | Usage of the new open sourced rbu (Remote BIOS Update) driver | |
3 | ============================================================= | |
4 | ||
5 | Purpose | |
6 | ======= | |
7 | ||
8 | Document demonstrating the use of the Dell Remote BIOS Update driver. | |
6c54c28e AS |
9 | for updating BIOS images on Dell servers and desktops. |
10 | ||
58ef0e5b MCC |
11 | Scope |
12 | ===== | |
13 | ||
6c54c28e | 14 | This document discusses the functionality of the rbu driver only. |
3f6dee9b | 15 | It does not cover the support needed from applications to enable the BIOS to |
6c54c28e AS |
16 | update itself with the image downloaded in to the memory. |
17 | ||
58ef0e5b MCC |
18 | Overview |
19 | ======== | |
20 | ||
6c54c28e AS |
21 | This driver works with Dell OpenManage or Dell Update Packages for updating |
22 | the BIOS on Dell servers (starting from servers sold since 1999), desktops | |
23 | and notebooks (starting from those sold in 2005). | |
58ef0e5b | 24 | |
6c54c28e AS |
25 | Please go to http://support.dell.com register and you can find info on |
26 | OpenManage and Dell Update packages (DUP). | |
58ef0e5b | 27 | |
e61c0e33 AS |
28 | Libsmbios can also be used to update BIOS on Dell systems go to |
29 | http://linux.dell.com/libsmbios/ for details. | |
6c54c28e | 30 | |
2fe0ae78 ML |
31 | Dell_RBU driver supports BIOS update using the monolithic image and packetized |
32 | image methods. In case of monolithic the driver allocates a contiguous chunk | |
6c54c28e AS |
33 | of physical pages having the BIOS image. In case of packetized the app |
34 | using the driver breaks the image in to packets of fixed sizes and the driver | |
35 | would place each packet in contiguous physical memory. The driver also | |
36 | maintains a link list of packets for reading them back. | |
58ef0e5b | 37 | |
6c54c28e AS |
38 | If the dell_rbu driver is unloaded all the allocated memory is freed. |
39 | ||
e61c0e33 AS |
40 | The rbu driver needs to have an application (as mentioned above)which will |
41 | inform the BIOS to enable the update in the next system reboot. | |
6c54c28e AS |
42 | |
43 | The user should not unload the rbu driver after downloading the BIOS image | |
44 | or updating. | |
45 | ||
58ef0e5b MCC |
46 | The driver load creates the following directories under the /sys file system:: |
47 | ||
48 | /sys/class/firmware/dell_rbu/loading | |
49 | /sys/class/firmware/dell_rbu/data | |
50 | /sys/devices/platform/dell_rbu/image_type | |
51 | /sys/devices/platform/dell_rbu/data | |
52 | /sys/devices/platform/dell_rbu/packet_size | |
6c54c28e AS |
53 | |
54 | The driver supports two types of update mechanism; monolithic and packetized. | |
55 | These update mechanism depends upon the BIOS currently running on the system. | |
56 | Most of the Dell systems support a monolithic update where the BIOS image is | |
57 | copied to a single contiguous block of physical memory. | |
58ef0e5b | 58 | |
6c28f2c0 | 59 | In case of packet mechanism the single memory can be broken in smaller chunks |
6c54c28e AS |
60 | of contiguous memory and the BIOS image is scattered in these packets. |
61 | ||
62 | By default the driver uses monolithic memory for the update type. This can be | |
e61c0e33 | 63 | changed to packets during the driver load time by specifying the load |
58ef0e5b MCC |
64 | parameter image_type=packet. This can also be changed later as below:: |
65 | ||
66 | echo packet > /sys/devices/platform/dell_rbu/image_type | |
ad6ce87e AS |
67 | |
68 | In packet update mode the packet size has to be given before any packets can | |
58ef0e5b MCC |
69 | be downloaded. It is done as below:: |
70 | ||
71 | echo XXXX > /sys/devices/platform/dell_rbu/packet_size | |
72 | ||
992caacf | 73 | In the packet update mechanism, the user needs to create a new file having |
ad6ce87e AS |
74 | packets of data arranged back to back. It can be done as follows |
75 | The user creates packets header, gets the chunk of the BIOS image and | |
a2ffd275 ML |
76 | places it next to the packetheader; now, the packetheader + BIOS image chunk |
77 | added together should match the specified packet_size. This makes one | |
ad6ce87e AS |
78 | packet, the user needs to create more such packets out of the entire BIOS |
79 | image file and then arrange all these packets back to back in to one single | |
80 | file. | |
58ef0e5b | 81 | |
ad6ce87e AS |
82 | This file is then copied to /sys/class/firmware/dell_rbu/data. |
83 | Once this file gets to the driver, the driver extracts packet_size data from | |
25985edc | 84 | the file and spreads it across the physical memory in contiguous packet_sized |
ad6ce87e | 85 | space. |
58ef0e5b | 86 | |
ad6ce87e AS |
87 | This method makes sure that all the packets get to the driver in a single operation. |
88 | ||
89 | In monolithic update the user simply get the BIOS image (.hdr file) and copies | |
90 | to the data file as is without any change to the BIOS image itself. | |
6c54c28e AS |
91 | |
92 | Do the steps below to download the BIOS image. | |
58ef0e5b | 93 | |
6c54c28e AS |
94 | 1) echo 1 > /sys/class/firmware/dell_rbu/loading |
95 | 2) cp bios_image.hdr /sys/class/firmware/dell_rbu/data | |
96 | 3) echo 0 > /sys/class/firmware/dell_rbu/loading | |
97 | ||
98 | The /sys/class/firmware/dell_rbu/ entries will remain till the following is | |
99 | done. | |
58ef0e5b MCC |
100 | |
101 | :: | |
102 | ||
103 | echo -1 > /sys/class/firmware/dell_rbu/loading | |
104 | ||
ad6ce87e | 105 | Until this step is completed the driver cannot be unloaded. |
58ef0e5b | 106 | |
1b68bfc1 | 107 | Also echoing either mono, packet or init in to image_type will free up the |
ad6ce87e AS |
108 | memory allocated by the driver. |
109 | ||
0211a9c8 FS |
110 | If a user by accident executes steps 1 and 3 above without executing step 2; |
111 | it will make the /sys/class/firmware/dell_rbu/ entries disappear. | |
58ef0e5b MCC |
112 | |
113 | The entries can be recreated by doing the following:: | |
114 | ||
115 | echo init > /sys/devices/platform/dell_rbu/image_type | |
116 | ||
117 | .. note:: echoing init in image_type does not change it original value. | |
6c54c28e AS |
118 | |
119 | Also the driver provides /sys/devices/platform/dell_rbu/data readonly file to | |
ad6ce87e | 120 | read back the image downloaded. |
6c54c28e | 121 | |
58ef0e5b MCC |
122 | .. note:: |
123 | ||
124 | This driver requires a patch for firmware_class.c which has the modified | |
125 | request_firmware_nowait function. | |
126 | ||
127 | Also after updating the BIOS image a user mode application needs to execute | |
128 | code which sends the BIOS update request to the BIOS. So on the next reboot | |
129 | the BIOS knows about the new image downloaded and it updates itself. | |
130 | Also don't unload the rbu driver if the image has to be updated. | |
6c54c28e | 131 |