0001 =========================================
0002 Dell Remote BIOS Update driver (dell_rbu)
0003 =========================================
0004
0005 Purpose
0006 =======
0007
0008 Document demonstrating the use of the Dell Remote BIOS Update driver
0009 for updating BIOS images on Dell servers and desktops.
0010
0011 Scope
0012 =====
0013
0014 This document discusses the functionality of the rbu driver only.
0015 It does not cover the support needed from applications to enable the BIOS to
0016 update itself with the image downloaded in to the memory.
0017
0018 Overview
0019 ========
0020
0021 This driver works with Dell OpenManage or Dell Update Packages for updating
0022 the BIOS on Dell servers (starting from servers sold since 1999), desktops
0023 and notebooks (starting from those sold in 2005).
0024
0025 Please go to http://support.dell.com register and you can find info on
0026 OpenManage and Dell Update packages (DUP).
0027
0028 Libsmbios can also be used to update BIOS on Dell systems go to
0029 https://linux.dell.com/libsmbios/ for details.
0030
0031 Dell_RBU driver supports BIOS update using the monolithic image and packetized
0032 image methods. In case of monolithic the driver allocates a contiguous chunk
0033 of physical pages having the BIOS image. In case of packetized the app
0034 using the driver breaks the image in to packets of fixed sizes and the driver
0035 would place each packet in contiguous physical memory. The driver also
0036 maintains a link list of packets for reading them back.
0037
0038 If the dell_rbu driver is unloaded all the allocated memory is freed.
0039
0040 The rbu driver needs to have an application (as mentioned above) which will
0041 inform the BIOS to enable the update in the next system reboot.
0042
0043 The user should not unload the rbu driver after downloading the BIOS image
0044 or updating.
0045
0046 The driver load creates the following directories under the /sys file system::
0047
0048 /sys/class/firmware/dell_rbu/loading
0049 /sys/class/firmware/dell_rbu/data
0050 /sys/devices/platform/dell_rbu/image_type
0051 /sys/devices/platform/dell_rbu/data
0052 /sys/devices/platform/dell_rbu/packet_size
0053
0054 The driver supports two types of update mechanism; monolithic and packetized.
0055 These update mechanism depends upon the BIOS currently running on the system.
0056 Most of the Dell systems support a monolithic update where the BIOS image is
0057 copied to a single contiguous block of physical memory.
0058
0059 In case of packet mechanism the single memory can be broken in smaller chunks
0060 of contiguous memory and the BIOS image is scattered in these packets.
0061
0062 By default the driver uses monolithic memory for the update type. This can be
0063 changed to packets during the driver load time by specifying the load
0064 parameter image_type=packet. This can also be changed later as below::
0065
0066 echo packet > /sys/devices/platform/dell_rbu/image_type
0067
0068 In packet update mode the packet size has to be given before any packets can
0069 be downloaded. It is done as below::
0070
0071 echo XXXX > /sys/devices/platform/dell_rbu/packet_size
0072
0073 In the packet update mechanism, the user needs to create a new file having
0074 packets of data arranged back to back. It can be done as follows:
0075 The user creates packets header, gets the chunk of the BIOS image and
0076 places it next to the packetheader; now, the packetheader + BIOS image chunk
0077 added together should match the specified packet_size. This makes one
0078 packet, the user needs to create more such packets out of the entire BIOS
0079 image file and then arrange all these packets back to back in to one single
0080 file.
0081
0082 This file is then copied to /sys/class/firmware/dell_rbu/data.
0083 Once this file gets to the driver, the driver extracts packet_size data from
0084 the file and spreads it across the physical memory in contiguous packet_sized
0085 space.
0086
0087 This method makes sure that all the packets get to the driver in a single operation.
0088
0089 In monolithic update the user simply get the BIOS image (.hdr file) and copies
0090 to the data file as is without any change to the BIOS image itself.
0091
0092 Do the steps below to download the BIOS image.
0093
0094 1) echo 1 > /sys/class/firmware/dell_rbu/loading
0095 2) cp bios_image.hdr /sys/class/firmware/dell_rbu/data
0096 3) echo 0 > /sys/class/firmware/dell_rbu/loading
0097
0098 The /sys/class/firmware/dell_rbu/ entries will remain till the following is
0099 done.
0100
0101 ::
0102
0103 echo -1 > /sys/class/firmware/dell_rbu/loading
0104
0105 Until this step is completed the driver cannot be unloaded.
0106
0107 Also echoing either mono, packet or init in to image_type will free up the
0108 memory allocated by the driver.
0109
0110 If a user by accident executes steps 1 and 3 above without executing step 2;
0111 it will make the /sys/class/firmware/dell_rbu/ entries disappear.
0112
0113 The entries can be recreated by doing the following::
0114
0115 echo init > /sys/devices/platform/dell_rbu/image_type
0116
0117 .. note:: echoing init in image_type does not change its original value.
0118
0119 Also the driver provides /sys/devices/platform/dell_rbu/data readonly file to
0120 read back the image downloaded.
0121
0122 .. note::
0123
0124 After updating the BIOS image a user mode application needs to execute
0125 code which sends the BIOS update request to the BIOS. So on the next reboot
0126 the BIOS knows about the new image downloaded and it updates itself.
0127 Also don't unload the rbu driver if the image has to be updated.
0128