docs/install: document CONFIG_X86_IOPL_IOPERM

Signed-off-by: Leah Rowe <leah@libreboot.org>
master
Leah Rowe 2024-01-04 09:21:57 +00:00
parent 2b2761eb47
commit 16ae385b84
1 changed files with 36 additions and 0 deletions

View File

@ -12,11 +12,47 @@ this notice. We will have more context at a future date.**
This section relates to installing libreboot on supported targets. This section relates to installing libreboot on supported targets.
FLASH ERRORS (and workarounds)
=======================
Right out of the gate, some users may experience errors with flashrom when
using the internal programmer. They are:
/dev/mem access error
---------------------
NOTE: if running `flashrom -p internal` for software based flashing, and you NOTE: if running `flashrom -p internal` for software based flashing, and you
get an error related to `/dev/mem` access, you should reboot with get an error related to `/dev/mem` access, you should reboot with
`iomem=relaxed` kernel parameter before running flashrom, or use a kernel that `iomem=relaxed` kernel parameter before running flashrom, or use a kernel that
has `CONFIG_STRICT_DEVMEM` not enabled. has `CONFIG_STRICT_DEVMEM` not enabled.
ERROR: Could not get I/O privileges
------------------------------------
Error message: `ERROR: Could not get I/O privileges (Function not implemented)`
If you get this while running `flashrom -p internal -w filename.rom` (or any
internal flash operation), note: flashrom heavily uses ioperm/iopl functions
to operate the internal flasher, at least on x86 machines.
See: <https://lwn.net/Articles/804143/>
Yeah, just enable `CONFIG_X86_IOPL_IOPERM` in your Linux kernel. This is
a *build-time* option, so you must re-compile your kernel, or find a build that
has this option enabled (IOPL emulation).
Here's a handy-dandy guide for building a kernel from source:
<https://www.cyberciti.biz/tips/compiling-linux-kernel-26.html>
**BSD users:** On OpenBSD and NetBSD if you get similar errors, note that it
should work here, but you need to boot with `kern.securelevel=-1`.
See: [NetBSD securelevel manual](https://wiki.netbsd.org/tutorials/kernel_secure_levels/)
and [OpenBSD securelevel manpage](https://man.openbsd.org/securelevel).
Otherwise, if you get such errors, it may just be that you're not root. You
must run flashrom as root, at least to use the internal flasher (using external
USB flashing dongles doesn't normally require root).
SAFETY WARNING! SAFETY WARNING!
==================================================================== ====================================================================