=========================================================
ϡ
Linux-2.6.29/Documentation/dell_rbu.txt 
Ǥ
Ρ JF ץ <http://www.linux.or.jp/JF/>
 2009/06/11
ԡ Ӳŵ <zap03216@nifty.ne.jp>
ԡ Sho Shimauchi <sho.shimauchi at gmail dot com>
         Seiji Kaneko <skaneko at a2 dot mbn dot or dot jp>
         Takeshi Hamasaki <hmatrjp at users dot sourceforge dot jp>
=========================================================

# Purpose:
# Demonstrate the usage of the new open sourced rbu (Remote BIOS Update) driver
# for updating BIOS images on Dell servers and desktops.

ʸŪ:
Dell ΥФǥȥåӤΥޥ BIOS 򥢥åץǡȤ뤿Ρ
ʥץ󥽡 rbu (Remote BIOS Update) ɥ饤ФλȤ
ޤ

# Scope:
# This document discusses the functionality of the rbu driver only.
# It does not cover the support needed from applications to enable the BIOS to
# update itself with the image downloaded in to the memory.

Ƥϰ:
ʸ rbu ɥ饤Фεǽ⤷ޤ
˥ɤ줿᡼ BIOS ʬȤ򥢥åץǡȤǤ褦
뤿Ρץꥱ󶡤륵ݡȤˤĤƤϰޤ

# 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 OpenManage ⤷ Dell Update Packages Ȥ
Ȥ߹碌ưȡDell Υ (1999ǯȯ䤵줿ΰʹ)
ǥȥåץޥΡȥѥ (2005ǯȯ䤵줿ΰʹ) 
BIOS åץǡȤǤޤ
http://support.dell.com ǥ桼ϿȡOpenManage  
Dell Update packages (DUP) ξ󤬸Ĥޤ
libsmbios  Dell Υƥ BIOS 򥢥åץǡȤΤ˻Ȥޤ
ܺ٤ http://linux.dell.com/libsmbios/ 򸫤Ƥ

# Dell_RBU driver supports BIOS update using the monolithic image and packetized
# image methods. In case of monolithic 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.

Dell_RBU ɥ饤ФϡΥꥷåʥ᡼Ȥ BIOS åץǡȤȡ
ѥåȲ줿ϢΥ᡼Ȥ BIOS åץǡȤ򥵥ݡ
ƤޤΥꥷåʥ᡼ξ硢ɥ饤ФϢ³ʪڡ
()BIOS ᡼˳ƤޤѥåȲ줿
᡼ξ硢ɥ饤ФȤץꥱϥ᡼
ꥵΥѥåȤʬ䤷줫ɥ饤ФϳƥѥåȤϢ³
ʪ֤ޤɥ饤ФϥѥåȤɤ᤹ˤ
󥯥ꥹȤݻ⤷Ƥޤ
dell_rbu ɥ饤Фɤ줿硢Ƥ줿Ϥ٤
ޤ

# 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.

rbu ɥ饤Фˤϡ(ǿ줿) ץꥱɬפǤ
ץꥱϡ˥ƥ֡Ȥݤ˥åץǡȤǽʤȤ
BIOS Τ餻ޤ

# The user should not unload the rbu driver after downloading the BIOS image
# or updating.

ѼԤϡBIOS ᡼˥ɤꥢåץǡȤꤷ
rbu ɥ饤Ф򥢥ɤƤϤޤ

# The driver load creates the following directories under the /sys file system.

ɥ饤Фɤȡ/sys ե륷ƥ಼˼Υǥ쥯ȥ귲
ޤ

/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
/sys/devices/platform/dell_rbu/packet_size

# 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 chunks
# of contiguous memory and the BIOS image is scattered in these packets.

ɥ饤Ф2Υåץǡȥᥫ˥򥵥ݡȤƤޤ
ΥꥷåȥѥåȲǤΥåץǡȥᥫ˥ϡ
ƥǸ߼¹ BIOS ˰¸ޤۤȤɤ
Dell ƥϥΥꥷåΥåץǡȤ򥵥ݡȤƤޤ
ξ硢BIOS ᡼ʪΤҤȤĤϢ³֥å
ԡޤ
ѥåȥᥫ˥ξϡñΥ꤬꾮Ϣ³
()ʬ䤵ΤǡBIOS ᡼ϤΥѥåȤ
ߤޤ

# 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

ǥեȤǤϡɥ饤ФϥåץǡȤηȤƥΥꥷå
Ȥޤɥ饤ФΥɻ˥ѥ᡼Ȥ image_type=packet 
ꤹȡηѹǤޤΤ褦ˤȡ
ɸǤѹǽǤ
echo packet > /sys/devices/platform/dell_rbu/image_type

# In packet update mode the packet size has to be given before any packets can
# be downloaded. It is done as below
# echo XXXX > /sys/devices/platform/dell_rbu/packet_size

ѥåȲ륢åץǡȷξ硢ѥåȤ˥ɤ
ѥåȤΥꤷʤƤϤʤޤ󡣼Τ褦˻ꤷޤ
echo XXXX > /sys/devices/platform/dell_rbu/packet_size

# In the packet update mechanism, the user needs to create a new file having
# packets of data arranged back to back. It can be done as follows
# The user creates packets header, gets the chunk of the BIOS image and
# places it next to the packetheader; now, the packetheader + BIOS image chunk
# added together should match the specified packet_size. This makes one
# packet, the user needs to create more such packets out of the entire BIOS
# image file and then arrange all these packets back to back in to one single
# file.

ΥѥåȤˤ륢åץǡȤΥᥫ˥ǤϡѼԤϡҤ³ˤʤ褦
󤵤줿ǡΥѥåȤʤ뿷ʥեɬפޤ
ϼ̤Ǥ
ѼԤϤޤѥåȤΥإåꡢBIOS ᡼ʬŪ˼äƤ
ѥåȥإåľ֤ޤǡ礵줿ѥåȥإå
BIOS ᡼β򡢻ꤵ줿 packet_size ˹碌ɬפޤ
äƤҤȤĤΥѥåȤޤ
ѼԤϡBIOS ᡼եΤϤ뤽Τ褦ʥѥåȷ
ɬפޤ줫餳Υѥåȷ٤ƤҤ³ˤʤ褦
󤷤ñΥեˤޤȤޤ

# This file is then copied to /sys/class/firmware/dell_rbu/data.
# Once this file gets to the driver, the driver extracts packet_size data from
# the file and spreads it accross the physical memory in contiguous packet_sized
# space.
# This method makes sure that all the packets get to the driver in a single operation.

줫顢Υե /sys/class/firmware/dell_rbu/data ˥ԡޤ
Υե뤬ɥ饤Фɤ߹ޤȡɥ饤Фϥե뤫 packet_size 
ǡФʪϢ³ packet_size ζ֤֤
ޤ
ˡȡμ¤ˤ٤ƤΥѥåȤñǥɥ饤Фɤ߹ޤޤ

# In monolithic update the user simply get the BIOS image (.hdr file) and copies
# to the data file as is without any change to the BIOS image itself.

ΥꥷåʥåץǡȤȡѼԤñ BIOS ᡼ (.hdr ե)
ƥǡե˥ԡʤΤǡBIOS ᡼Τˤ
Ѳäޤ

# Do the steps below to download the BIOS image.

BIOS ᡼˥ɤˤϡν֤Ǽ¹Ԥޤ

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 driver cannot be unloaded.
# Also echoing either mono, packet or init in to image_type will free up the
# memory allocated by the driver.

/sys/class/firmware/dell_rbu/ Υȥϡʲ¹ԤޤǻĤޤ
echo -1 > /sys/class/firmware/dell_rbu/loading
Υƥåפλޤǡɥ饤ФϥɤǤޤ
ޤimage_type  mono  packet  init Τ줫 echo ȡ
ɥ饤ФˤäƳƤ줿ϲޤ

# If a user by accident executes steps 1 and 3 above without executing step 2;
# it will make the /sys/class/firmware/dell_rbu/ entries 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.

⤷ѼԤְäƾ嵭Υƥå2¹Ԥ˥ƥå13¹Ԥȡ
/sys/class/firmware/dell_rbu/ ʲΥȥ귲üޤ
ΥȥϡΤ褦ˤȤޤޤ
echo init > /sys/devices/platform/dell_rbu/image_type
: image_type  init  echo Ƥ⡢饨ȥϺǽͤޤ

# Also the driver provides /sys/devices/platform/dell_rbu/data readonly file to
# read back the image downloaded.

ޤ˥ɤ줿᡼ɤ᤹ˡɥ饤Фϥ꡼ɥ꡼
/sys/devices/platform/dell_rbu/data ե󶡤Ƥޤ

# NOTE:
# This driver requires a patch for firmware_class.c which has the modified
# request_firmware_nowait function.
# Also after updating the BIOS image a user mode application needs to execute
# code which sends the BIOS update request to the BIOS. So on the next reboot
# the BIOS knows about the new image downloaded and it updates itself.
# Also don't unload the rbu driver if the image has to be updated.

:
Υɥ饤Фˤϡfirmware_class.c ؤΡrequest_firmware_nowait ؿ
ѹѥåɬפǤ
ޤBIOS ᡼򥢥åץǡȤ塢桼⡼ɤΥץꥱϡ
BIOS  BIOS åץǡȥꥯȤ륳ɤ¹Ԥɬפޤ
ˤäơ֡Ȥκݤ BIOS ϥ˥ɤ줿᡼
ǧƼȤ򥢥åץǡȤޤ
ޤBIOS ᡼򥢥åץǡȤɬפʤ顢rbu ɥ饤Ф򥢥
ƤϤޤ
