19 Platform limitations
***********************

GRUB2 is designed to be portable and is actually ported across
platforms.  We try to keep all platforms at the level.  Unfortunately
some platforms are better supported than others.  This is detailed in
current and 2 following sections.

   ARC platform is unable to change datetime (firmware doesn't seem to
provide a function for it).  EMU has similar limitation.

   On EMU platform no serial port is available.

   Console charset refers only to firmware-assisted console.  gfxterm is
always Unicode (see Internationalisation section for its limitations).
Serial is configurable to UTF-8 or ASCII (see Internationalisation).  In
case of qemu and coreboot ports the refered console is vga_text.
Loongson always uses gfxterm.

   Most limited one is ASCII. CP437 provides additionally
pseudographics.  GRUB2 doesn't use any language characters from CP437 as
often CP437 is replaced by national encoding compatible only in
pseudographics.  Unicode is the most versatile charset which supports
many languages.  However the actual console may be much more limited
depending on firmware

   On BIOS network is supported only if the image is loaded through
network.  On sparc64 GRUB is unable to determine which server it was
booted from.

   Direct ATA/AHCI support allows to circumvent various firmware
limitations but isn't needed for normal operation except on baremetal
ports.

   AT keyboard support allows keyboard layout remapping and support for
keys not available through firmware.  It isn't needed for normal
operation except baremetal ports.

   Speaker allows morse and spkmodem communication.

   USB support provides benefits similar to ATA (for USB disks) or AT
(for USB keyboards).  In addition it allows USBserial.

   Chainloading refers to the ability to load another bootloader through
the same protocol

   Hints allow faster disk discovery by already knowing in advance which
is the disk in question.  On some platforms hints are correct unless you
move the disk between boots.  On other platforms it's just an educated
guess.  Note that hint failure results in just reduced performance, not
a failure

   BadRAM is the ability to mark some of the RAM as "bad".  Note: due to
protocol limitations mips-loongson (with Linux protocol) and
mips-qemu_mips can use only memory up to first hole.

   Bootlocation is ability of GRUB to automatically detect where it
boots from.  "disk" means the detection is limited to detecting the disk
with partition being discovered on install time.  "partition" means that
disk and partiton can be automatically discovered.  "file" means that
boot image file name as well as disk and partition can be discovered.
For consistency default install ignores partition and relies solely on
disk detection.  If no bootlocation discovery is available or boot and
grub-root disks are different, UUID is used instead.  On ARC if no
device to install to is specified, UUID is used instead as well.

               BIOS           Coreboot       Multiboot      Qemu
video          yes            yes            yes            yes
console        CP437          CP437          CP437          CP437
charset
network        yes (*)        no             no             no
ATA/AHCI       yes            yes            yes            yes
AT keyboard    yes            yes            yes            yes
Speaker        yes            yes            yes            yes
USB            yes            yes            yes            yes
chainloader    local          yes            yes            no
cpuid          partial        partial        partial        partial
rdmsr          partial        partial        partial        partial
wrmsr          partial        partial        partial        partial
hints          guess          guess          guess          guess
PCI            yes            yes            yes            yes
badram         yes            yes            yes            yes
compression    always         pointless      no             no
exit           yes            no             no             no
bootlocation   disk           no             no             no

               ia32 EFI       amd64 EFI      ia32           Itanium
                                             IEEE1275
video          yes            yes            no             no
console        Unicode        Unicode        ASCII          Unicode
charset
network        yes            yes            yes            yes
ATA/AHCI       yes            yes            yes            no
AT keyboard    yes            yes            yes            no
Speaker        yes            yes            yes            no
USB            yes            yes            yes            no
chainloader    local          local          no             local
cpuid          partial        partial        partial        no
rdmsr          partial        partial        partial        no
wrmsr          partial        partial        partial        no
hints          guess          guess          good           guess
PCI            yes            yes            yes            no
badram         yes            yes            no             yes
compression    no             no             no             no
exit           yes            yes            yes            yes
bootlocation   file           file           file,          file
                                             ignored

               Loongson       sparc64        Powerpc        ARC
video          yes            no             yes            no
console        N/A            ASCII          ASCII          ASCII
charset
network        no             yes (*)        yes            no
ATA/AHCI       yes            no             no             no
AT keyboard    yes            no             no             no
Speaker        no             no             no             no
USB            yes            no             no             no
chainloader    yes            no             no             no
cpuid          no             no             no             no
rdmsr          no             no             no             no
wrmsr          no             no             no             no
hints          good           good           good           no
PCI            yes            no             no             no
badram         yes (*)        no             no             no
compression    configurable   no             no             configurable
exit           no             yes            yes            yes
bootlocation   no             partition      file           file (*)

               MIPS qemu      emu            xen
video          no             yes            no
console        CP437          Unicode (*)    ASCII
charset
network        no             yes            no
ATA/AHCI       yes            no             no
AT keyboard    yes            no             no
Speaker        no             no             no
USB            N/A            yes            no
chainloader    yes            no             yes
cpuid          no             no             yes
rdmsr          no             no             yes
wrmsr          no             no             yes
hints          guess          no             no
PCI            no             no             no
badram         yes (*)        no             no
compression    configurable   no             no
exit           no             yes            no
bootlocation   no             file           no

