diff --git a/site/docs/hardware/dell9020.md b/site/docs/hardware/dell9020.md index a07ee9b..82eac77 100644 --- a/site/docs/hardware/dell9020.md +++ b/site/docs/hardware/dell9020.md @@ -91,23 +91,62 @@ Kukri's patch is here: This patch, at this revision (patchset 31), is what Libreboot uses for this port. -Graphics cards +Graphics cards and IOMMU -------------- +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, +you can use the console but as soon as you start xorg, it will just b0rk. + +Current Libreboot revisions *disable IOMMU by default*, on this board. The +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. + +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, +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. + +On all other Haswell boards, LIbreboot enables IOMMU by default. To enable +it on the 9020, do this on your ROM: + + nvramtool -C libreboot.rom -w iommu=Enable + +Then flash the ROM image. You can find nvram +under `src/coreboot/default/util/nvramtool`. Do this in lbmk if you don't +already havse `src/coreboot/default/`: + + ./update trees -f coreboot default + +Then do this: + + make -C src/coreboot/default/util/nvramtool + +The binary `nvramtool` will then live in that directory. More information +available in [Libreboot build instructions](../build/). Information about +dumping/flashing the ROM can be found +in [Libreboot flashing instructions](../install/) +and [Libreboot external flashing instructions](../install/spi.md). + +NOTE: If IOMMU is enabled, you can still use a graphics card, but you must +pass this on the Linux cmdline paramaters: `iommu=off` + +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 +table that is baked into it. + On current lbmk master, graphics cards *do* work. The option to hide PEG devices from MRC was disabled. Now when you insert a graphics card, the onboard Intel GPU is disabled and the graphics card is used instead. -NOTE: You must set `iommu=off` in your linux cmdline. For instance, set this -in `/etc/default/grub` and regenerate your GRUB config. With the IOMMU turned -off, graphics cards work fine. Otherwise, with IOMMU turned on, you might get -this error: +Here is an example of the type of errors we got when testing graphics cards +with IOMMU enabled: -NOTE2: You *can* use the onboard Intel GPU (without a graphics card inserted), -and leave IOMMU turned on. You only need to disable the IOMMU when a graphics -card is inserted. +We believe the native MRC replacement may work better on graphics card with +IOMMU turned on. This will be enabled in a future Libreboot release, if not +already supported. 7020 compatibility ------------------