Mauro Carvalho Chehab | 58ef0e5 | 2017-05-17 14:25:05 -0300 | [diff] [blame] | 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. |
Abhay Salunke | 6c54c28 | 2005-09-06 15:17:14 -0700 | [diff] [blame] | 9 | for updating BIOS images on Dell servers and desktops. |
| 10 | |
Mauro Carvalho Chehab | 58ef0e5 | 2017-05-17 14:25:05 -0300 | [diff] [blame] | 11 | Scope |
| 12 | ===== |
| 13 | |
Abhay Salunke | 6c54c28 | 2005-09-06 15:17:14 -0700 | [diff] [blame] | 14 | This document discusses the functionality of the rbu driver only. |
Matt LaPlante | 3f6dee9 | 2006-10-03 22:45:33 +0200 | [diff] [blame] | 15 | It does not cover the support needed from applications to enable the BIOS to |
Abhay Salunke | 6c54c28 | 2005-09-06 15:17:14 -0700 | [diff] [blame] | 16 | update itself with the image downloaded in to the memory. |
| 17 | |
Mauro Carvalho Chehab | 58ef0e5 | 2017-05-17 14:25:05 -0300 | [diff] [blame] | 18 | Overview |
| 19 | ======== |
| 20 | |
Abhay Salunke | 6c54c28 | 2005-09-06 15:17:14 -0700 | [diff] [blame] | 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). |
Mauro Carvalho Chehab | 58ef0e5 | 2017-05-17 14:25:05 -0300 | [diff] [blame] | 24 | |
Abhay Salunke | 6c54c28 | 2005-09-06 15:17:14 -0700 | [diff] [blame] | 25 | Please go to http://support.dell.com register and you can find info on |
| 26 | OpenManage and Dell Update packages (DUP). |
Mauro Carvalho Chehab | 58ef0e5 | 2017-05-17 14:25:05 -0300 | [diff] [blame] | 27 | |
Abhay Salunke | e61c0e3 | 2005-09-16 19:28:04 -0700 | [diff] [blame] | 28 | Libsmbios can also be used to update BIOS on Dell systems go to |
| 29 | http://linux.dell.com/libsmbios/ for details. |
Abhay Salunke | 6c54c28 | 2005-09-06 15:17:14 -0700 | [diff] [blame] | 30 | |
Matt LaPlante | 2fe0ae7 | 2006-10-03 22:50:39 +0200 | [diff] [blame] | 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 |
Abhay Salunke | 6c54c28 | 2005-09-06 15:17:14 -0700 | [diff] [blame] | 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. |
Mauro Carvalho Chehab | 58ef0e5 | 2017-05-17 14:25:05 -0300 | [diff] [blame] | 37 | |
Abhay Salunke | 6c54c28 | 2005-09-06 15:17:14 -0700 | [diff] [blame] | 38 | If the dell_rbu driver is unloaded all the allocated memory is freed. |
| 39 | |
Abhay Salunke | e61c0e3 | 2005-09-16 19:28:04 -0700 | [diff] [blame] | 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. |
Abhay Salunke | 6c54c28 | 2005-09-06 15:17:14 -0700 | [diff] [blame] | 42 | |
| 43 | The user should not unload the rbu driver after downloading the BIOS image |
| 44 | or updating. |
| 45 | |
Mauro Carvalho Chehab | 58ef0e5 | 2017-05-17 14:25:05 -0300 | [diff] [blame] | 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 |
Abhay Salunke | 6c54c28 | 2005-09-06 15:17:14 -0700 | [diff] [blame] | 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. |
Mauro Carvalho Chehab | 58ef0e5 | 2017-05-17 14:25:05 -0300 | [diff] [blame] | 58 | |
Matt LaPlante | 6c28f2c | 2006-10-03 22:46:31 +0200 | [diff] [blame] | 59 | In case of packet mechanism the single memory can be broken in smaller chunks |
Abhay Salunke | 6c54c28 | 2005-09-06 15:17:14 -0700 | [diff] [blame] | 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 |
Abhay Salunke | e61c0e3 | 2005-09-16 19:28:04 -0700 | [diff] [blame] | 63 | changed to packets during the driver load time by specifying the load |
Mauro Carvalho Chehab | 58ef0e5 | 2017-05-17 14:25:05 -0300 | [diff] [blame] | 64 | parameter image_type=packet. This can also be changed later as below:: |
| 65 | |
| 66 | echo packet > /sys/devices/platform/dell_rbu/image_type |
Abhay Salunke | ad6ce87 | 2005-10-11 08:29:02 -0700 | [diff] [blame] | 67 | |
| 68 | In packet update mode the packet size has to be given before any packets can |
Mauro Carvalho Chehab | 58ef0e5 | 2017-05-17 14:25:05 -0300 | [diff] [blame] | 69 | be downloaded. It is done as below:: |
| 70 | |
| 71 | echo XXXX > /sys/devices/platform/dell_rbu/packet_size |
| 72 | |
Matt LaPlante | 992caac | 2006-10-03 22:52:05 +0200 | [diff] [blame] | 73 | In the packet update mechanism, the user needs to create a new file having |
Abhay Salunke | ad6ce87 | 2005-10-11 08:29:02 -0700 | [diff] [blame] | 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 |
Matt LaPlante | a2ffd27 | 2006-10-03 22:49:15 +0200 | [diff] [blame] | 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 |
Abhay Salunke | ad6ce87 | 2005-10-11 08:29:02 -0700 | [diff] [blame] | 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. |
Mauro Carvalho Chehab | 58ef0e5 | 2017-05-17 14:25:05 -0300 | [diff] [blame] | 81 | |
Abhay Salunke | ad6ce87 | 2005-10-11 08:29:02 -0700 | [diff] [blame] | 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 |
Lucas De Marchi | 25985ed | 2011-03-30 22:57:33 -0300 | [diff] [blame] | 84 | the file and spreads it across the physical memory in contiguous packet_sized |
Abhay Salunke | ad6ce87 | 2005-10-11 08:29:02 -0700 | [diff] [blame] | 85 | space. |
Mauro Carvalho Chehab | 58ef0e5 | 2017-05-17 14:25:05 -0300 | [diff] [blame] | 86 | |
Abhay Salunke | ad6ce87 | 2005-10-11 08:29:02 -0700 | [diff] [blame] | 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. |
Abhay Salunke | 6c54c28 | 2005-09-06 15:17:14 -0700 | [diff] [blame] | 91 | |
| 92 | Do the steps below to download the BIOS image. |
Mauro Carvalho Chehab | 58ef0e5 | 2017-05-17 14:25:05 -0300 | [diff] [blame] | 93 | |
Abhay Salunke | 6c54c28 | 2005-09-06 15:17:14 -0700 | [diff] [blame] | 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. |
Mauro Carvalho Chehab | 58ef0e5 | 2017-05-17 14:25:05 -0300 | [diff] [blame] | 100 | |
| 101 | :: |
| 102 | |
| 103 | echo -1 > /sys/class/firmware/dell_rbu/loading |
| 104 | |
Abhay Salunke | ad6ce87 | 2005-10-11 08:29:02 -0700 | [diff] [blame] | 105 | Until this step is completed the driver cannot be unloaded. |
Mauro Carvalho Chehab | 58ef0e5 | 2017-05-17 14:25:05 -0300 | [diff] [blame] | 106 | |
Masanori Kobayasi | 1b68bfc | 2009-06-04 21:12:29 +0900 | [diff] [blame] | 107 | Also echoing either mono, packet or init in to image_type will free up the |
Abhay Salunke | ad6ce87 | 2005-10-11 08:29:02 -0700 | [diff] [blame] | 108 | memory allocated by the driver. |
| 109 | |
Frederik Schwarzer | 0211a9c | 2008-12-29 22:14:56 +0100 | [diff] [blame] | 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. |
Mauro Carvalho Chehab | 58ef0e5 | 2017-05-17 14:25:05 -0300 | [diff] [blame] | 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. |
Abhay Salunke | 6c54c28 | 2005-09-06 15:17:14 -0700 | [diff] [blame] | 118 | |
| 119 | Also the driver provides /sys/devices/platform/dell_rbu/data readonly file to |
Abhay Salunke | ad6ce87 | 2005-10-11 08:29:02 -0700 | [diff] [blame] | 120 | read back the image downloaded. |
Abhay Salunke | 6c54c28 | 2005-09-06 15:17:14 -0700 | [diff] [blame] | 121 | |
Mauro Carvalho Chehab | 58ef0e5 | 2017-05-17 14:25:05 -0300 | [diff] [blame] | 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. |
Abhay Salunke | 6c54c28 | 2005-09-06 15:17:14 -0700 | [diff] [blame] | 131 | |