// vim:expandtab:autoindent:tabstop=4:shiftwidth=4:filetype=txt:

/*! \page dellBiosUpdate Documentation for dellBiosUpdate executable

\section NAME
dellBiosUpdate

\section SYNOPSIS

The dellBiosUpdate executable is used to stage BIOS updates. It works across
all Dell platforms that the libsmbios maintainer is aware of. The input to the
dellBiosUpdate executable is a Dell BIOS header (.HDR) file. The instructions
for obtaining this file are below. This update relies on the "dell_rbu" kernel
driver, first available in Linux 2.6.14. This executable supports both
packet-based(*) and the older monolithic RBU methods. For more information on
installing the dell_rbu driver, see here: \ref dell_drivers

*Note: Packet RBU is implemented but untested at this time. Therefore, it is disabled by default.

\verbatim
$ dellBiosUpdate
Usage: dellBiosUpdate [options]

  --help,       -h                      Displays this information

  --hdr,        -f <args>               BIOS update file (.HDR file)

  --info,       -i                      Dump BIOS update .HDR file info. Does not perform BIOS update
  --cancel,     -c                      Cancel a previously-scheduled BIOS update
  --update,     -u                      Schedule BIOS update
  --test,       -t                      Test this HDR file to see if it is appropriate for this system.

  --auto_detect                         Auto-detect update type
  --force_packet                        Force update type to be packet-based
  --force_mono                          Force update type to be monolithic-based

  --override_sysid                      Attempt BIOS update even if .HDR file does not appear to match this system
  --override_bios_version               Attempt BIOS update even if .HDR file is older than current system BIOS

  --version,    -v                      Display libsmbios version information
\endverbatim

\section DESCRIPTION
\subsection th Theory of operation for RBU
RBU works by separating out the specific code that performs that BIOS update
from the data of the BIOS update. The code that does the actual BIOS update is
stored in BIOS, while the new BIOS data is stored as a header (.hdr) file.
This simplifies BIOS updates because the programming of flash and handling of
myriad flash formats and vendors is simplified. 

The OS-specific part of RBU is simplified. The only operation that needs to
happen in the OS is that the BIOS needs to be staged in physical RAM. In the
older "monolithic" method, the entire .hdr file is staged in contiguous
physical RAM. The newer "packet" method allows the OS to break the image up
into similarly-sized packets, each with a header and data. This eases the
requirement for physically contiguous physical RAM. The system is then
rebooted and the existing system BIOS finds the BIOS update and does the 
flash programming.

The BIOS uses a bit in CMOS as a flag on bootup to indicate that it should
perform an RBU operation. The OS-based BIOS update program sets this CMOS bit
before rebooting to flag the BIOS that the update needs to be performed.

In this model, the "dell_rbu" Linux kernel driver performs the job of
allocating contiguous physical memory. The dellBiosUpdate executable transfers
the header file to dell_rbu and sets the CMOS RBU flag.

For more information on obtaining BIOS .HDR files, see \ref bios_hdr

\section RETURN VALUE

\section ERRORS

\section RESTRICTIONS

\section SEE ALSO

*/
