9020sff/mt: say how to use gfxcard+iommu

A special kernel option is required:

intel_iommu=enable,igfx_off

Signed-off-by: Leah Rowe <info@minifree.org>
master
Leah Rowe 2024-10-05 02:42:41 +01:00
parent 91db0835fa
commit 253a3f7ca0
1 changed files with 32 additions and 7 deletions

View File

@ -30,9 +30,9 @@ OR YOU MIGHT BRICK YOUR MACHINE: [SAFETY PRECAUTIONS](../../news/safety.md)**
| **CPU** | Intel Haswell | | **CPU** | Intel Haswell |
| **Graphics** | Intel HD Graphics | | **Graphics** | Intel HD Graphics |
| **Memory** | DDR3 DIMMs (max 32GB, 4x8GB) | | **Memory** | DDR3 DIMMs (max 32GB, 4x8GB) |
| **Architecture** | x86_64 | | **Architecture** | x86\_64 |
| **Original boot firmware** | Dell UEFI firmware | | **Original boot firmware** | Dell UEFI firmware |
| **Intel ME/AMD PSP** | Present. Can be disabled with me_cleaner. | | **Intel ME/AMD PSP** | Present. Can be disabled with me\_cleaner. |
| **Flash chip** | 2x SOIC-8, 12MiB (8+4) (96Mbit) | | **Flash chip** | 2x SOIC-8, 12MiB (8+4) (96Mbit) |
@ -104,23 +104,47 @@ Graphics cards and IOMMU
IOMMU is buggy for some reason (we don't know why yet), when you plug in IOMMU is buggy for some reason (we don't know why yet), when you plug in
a graphics card. The graphics card simply won't work. On some of them, a graphics card. The graphics card simply won't work. On some of them,
you can use the console but as soon as you start xorg, it will just b0rk. you can use the console but as soon as you start xorg/wayland, it will just b0rk.
Current Libreboot revisions *disable IOMMU by default*, on this board. The Current Libreboot revisions *disable IOMMU by default*, on this board. The
coreboot code for initialising IOMMU was modified by the Libreboot project, to coreboot code for initialising IOMMU was modified by the Libreboot project, to
make it a toggle. IOMMU works fine if you use only Intel graphics. make it a toggle. IOMMU works fine if you use only Intel graphics.
If you want to use IOMMU *with a graphics card*, you also can. Use this Linux
kernel option at boot:
intel_iommu=enable,igfx_off
With the above option, IOMMU is enabled *except* for the Intel GPU. However,
Libreboot also *disables the Intel GPU* in coreboot, entirely, when a graphics
card is used. With the above option, it's possible that something like Qubes
may work, which requires an IOMMU to be turned on.
If you are using Intel graphics, and not a graphics card, you can ignore the
above, and instead fully turn on the IOMMU, without any special kernel options.
The way coreboot works is this: if vt-d is present on the CPU, it enables an The way coreboot works is this: if vt-d is present on the CPU, it enables an
IOMMU, and only if vt-d is present. This is still the behaviour in Libreboot, IOMMU, and only if vt-d is present. This is still the behaviour in Libreboot,
but Libreboot adds an additional check: if `iommu` is not set in nvram, it but Libreboot adds an additional check: if `iommu` is not set in nvram, it
defaults to on, but if it's set to disabled, then IOMMU is not initialised. defaults to on, but if it's set to disabled, then IOMMU is not initialised.
Enable IOMMU
------------
IOMMU is *disabled by default*, universally, on this board. You can turn it on,
by modifying the ROM image prior to flashing, or modifying it prior to
re-flashing.
On all other Haswell boards, LIbreboot enables IOMMU by default. To enable On all other Haswell boards, LIbreboot enables IOMMU by default. To enable
it on the 9020, do this on your ROM: it on the 9020, do this on your ROM:
nvramtool -C libreboot.rom -w iommu=Enable nvramtool -C libreboot.rom -w iommu=Enable
Then flash the ROM image. You can find nvram If you're using a graphics card, please make sure to read the above notes
about how to use IOMMU; specifically, the part that talks about Linux kernel
option `intel_iommu=enable,igfx_off`
Then flash the ROM image. You can find nvramtool
under `src/coreboot/default/util/nvramtool`. Do this in lbmk if you don't under `src/coreboot/default/util/nvramtool`. Do this in lbmk if you don't
already havse `src/coreboot/default/`: already havse `src/coreboot/default/`:
@ -137,7 +161,8 @@ in [Libreboot flashing instructions](../install/)
and [Libreboot external flashing instructions](../install/spi.md). and [Libreboot external flashing instructions](../install/spi.md).
NOTE: If IOMMU is enabled, you can still use a graphics card, but you must NOTE: If IOMMU is enabled, you can still use a graphics card, but you must
pass this on the Linux cmdline paramaters: `iommu=off` pass this on the Linux cmdline paramaters: `iommu=off` - or if you need
IOMMU (e.g. for Qubes), use `intel_iommu=enable,igfx_off` instead.
NOTE2: Libreboot uses a *static option table* on all boards that have nvram, NOTE2: Libreboot uses a *static option table* on all boards that have nvram,
which is why you must use the `-C` option on your ROM, to change the static which is why you must use the `-C` option on your ROM, to change the static
@ -201,12 +226,12 @@ If you're already running Libreboot, and you don't have flash protection
turned on, [internal flashing](../install/) is possible. turned on, [internal flashing](../install/) is possible.
Internal flashing can also be done with the original Dell BIOS, if the Internal flashing can also be done with the original Dell BIOS, if the
SERVICE_MODE jumper near the PCIe slots is installed. Before flashing, SERVICE\_MODE jumper near the PCIe slots is installed. Before flashing,
rmmod spi-intel-platform rmmod spi-intel-platform
needs to be run to prevent errors. Once Libreboot is installed, the needs to be run to prevent errors. Once Libreboot is installed, the
SERVICE_MODE jumper can be removed. SERVICE\_MODE jumper can be removed.
**Note: The Dell BIOS can write EFI variables to flash when shutting **Note: The Dell BIOS can write EFI variables to flash when shutting
down, which could corrupt the newly flashed Libreboot ROM and render down, which could corrupt the newly flashed Libreboot ROM and render