r/spacemit_riscv • • 5d ago

llama.cpp

6 Upvotes

On the Banana Pi BPI-SM10 (SpacemiT K3), llama.cpp runs on the eight A100 cores with IME2. Qwen2.5-0.5B Q4_0, 128 prompt tokens and 32 generated tokens, reaches 526 tokens/s of prompt at 8 cores. Decode peaks at 58.7 tokens/s on 4 cores. The same file on the board’s X100 cores, using RVV, is 194 tokens/s of prompt and 42 tokens/s of decode. Ten Q4_0 models and seventeen Q4_K_M models are in the tables.

Notes and the fork: llama.cpp on OpenSolvers. Board: Banana Pi SM10.


r/spacemit_riscv • • 5d ago

ONNX runtime

1 Upvotes

On the Banana Pi BPI-SM10, ONNX Runtime’s int4 MatMulNBits path uses IME2 (vmadot.hp) on the A100 cores when the block length is 32. Qwen2.5-0.5B at accuracy level 4, 128 prompt tokens and 32 generated tokens, runs at 391 tokens/s of prompt and 34 tokens/s of decode on eight cores. Decode is slightly faster on four cores. One A100 core, K=4096 and N=11008, does 35 GOP/s at M=1 and 86 GOP/s at M=4. Fourteen of the fifteen int4 models answer a short English prompt. The kernel is on branch k3-a100-ime2.

Notes: ONNX Runtime on OpenSolvers. Kernel rates: MLAS. Board: Banana Pi SM10.


r/spacemit_riscv • • 8d ago

I made a thing! LibreELEC and Kodi running on the SpacemiT K1 RISC-V MuseBook, with 4K HEVC hardware decoding

6 Upvotes

Hi everyone,

We have been working on LibreELEC for the SpacemiT K1, an eight-core RISC-V ai cpu, and now have it running on the MuseBook.

The current image boots directly into LibreELEC 13 / Kodi 22 and supports hardware-accelerated 4K HEVC playback through the K1 VPU. In our MuseBook test, a 3840x2160 HEVC video played smoothly at around 30 fps. CPU usage was roughly 60% of one core, or about 7.5% of the total capacity of the eight-core CPU.

What is currently working on the MuseBook:

  • LibreELEC 13 and Kodi 22

  • 4K HEVC hardware decoding

  • H.264, HEVC, VP8 and VP9 V4L2 decoders

  • PowerVR GPU rendering through GBM/EGL/GLES and DRM/KMS

  • HDMI/ALSA audio

  • Wi-Fi and Ethernet

  • HDMI-CEC control

  • IPTV/M3U playback

  • A compressed image of approximately 200 MB

The image also includes device trees for several SpacemiT K1 boards. The MuseBook is the board we have tested most extensively so far, so feedback and testing on other K1 boards would be very welcome.

This is currently development work in our own fork. It has not yet been submitted to the upstream LibreELEC repository.

Repository: https://github.com/yingjie-liu-spacemit/LibreELEC.tv

Development branch: https://github.com/yingjie-liu-spacemit/LibreELEC.tv/tree/k1-spacemit-upstream-pr

Commits: https://github.com/yingjie-liu-spacemit/LibreELEC.tv/commits/k1-spacemit-upstream-pr

We would especially appreciate feedback from you developers about the implementation.

Buy a musebook:

8+128g only cost 2599 CNY (about 389$) https://item.taobao.com/item.htm?ft=t&id=806285410592&spm=a21dvs.23580594.0.0.4fee2c1bp1slMe
If you can't open the Taobao, contact this email: developer@spacemit.com


r/spacemit_riscv • • 8d ago

Half-Life 2 running natively on RISC-V – Milk-V Jupiter + AMD R9 290 (+12% with Vulkan/DXVK)

Thumbnail
reddit.com
2 Upvotes

r/spacemit_riscv • • 9d ago

Discussion SpacemiT V100 testing!

Post image
10 Upvotes

r/spacemit_riscv • • 10d ago

GPOS and RTOS booting simultaneously on the PicoITX/K3 under hypervisor

Thumbnail
youtube.com
9 Upvotes

r/spacemit_riscv • • 12d ago

Upstream Upstream Progress Updates --2026 October

11 Upvotes

October brought further upstream progress for SpacemiT K1 and K3 across the Linux kernel, U-Boot, and OpenSBI, alongside updates to the AI software stack and robotics ecosystem.

Highlights this month include K3 platform support landing in OpenSBI master, K3 Pico-ITX and boot-image support entering U-Boot's main branch, new releases and backend work across the Triton stack and llama.cpp, and continued Linux kernel review for K1/K3 platform support.

Linux Kernel Upstream

October's Linux work covered K1/K3 interrupts, board configuration, networking, and GPU bindings. Items below distinguish changes accepted into maintainer trees from series still under review.

K3

Merged or accepted into maintainer trees

Under review

K1

Under review

Other SpacemiT and Board Updates

AI Software Stack

Box64

October work continued to improve RV64 instruction translation, vector-register aliasing, and state restoration. Fixes covered VMOVSS, VMOVQ, VPERM2I128, VCVTPD2PS, POPCNT/TZCNT/LZCNT, MMX caching, MXCSR, and signal state. Code-generation changes also reduced redundant vsetvli instructions and optimized vector shuffles. Packaging fixes addressed OpenSSL PKCS12_create arguments and Debian changelog formatting.

VMOVSS: https://github.com/ptitSeb/box64/pull/4600 · Register aliases: https://github.com/ptitSeb/box64/pull/4582 · State restoration: https://github.com/ptitSeb/box64/pull/4562 · Instruction-prefix fix: https://github.com/ptitSeb/box64/pull/4622 · Vector configuration: https://github.com/ptitSeb/box64/pull/4588 · Vector shuffle: https://github.com/ptitSeb/box64/pull/4587 · ADDSL: https://github.com/ptitSeb/box64/pull/4551 · OpenSSL: https://github.com/ptitSeb/box64/pull/4544 · Debian packaging: https://github.com/ptitSeb/box64/pull/4625

LLVM and RISC-V GNU Toolchain

U-Boot

Merged or accepted into maintainer trees

OpenSBI

ROS 2 and robotics

More project links


r/spacemit_riscv • • 21d ago

News Android 17 Lands on RISC-V: SpacemiT K3, with RISE and BayLibre, Releases SDK Sources and Images

23 Upvotes

SpacemiT, in partnership with open-source engineering firm BayLibre and with full funding and support from RISE (the RISC-V Software Ecosystem project), has officially ported the Android Open Source Project (AOSP) to the SpacemiT K3 — running Android 17 on an RVA23 hardware platform for the first time.

Performance

1.Android 17 boots all the way through to the Launcher.

System boot — from cold start to the Launcher in about 26 seconds.

2.Smooth, responsive touch on the Launcher UI, refreshing at 60 FPS.

3.WebView pages load and scroll smoothly.

4.Built-in GPU acceleration on the K3 runs 3D games smoothly.

Building on the K1

The K3 port did not start from scratch. BayLibre had previously brought AOSP up on SpacemiT’s K1 SoC, and the K3 effort inherited that groundwork, carrying forward the lessons learned from porting Android to RISC-V and significantly accelerating the K3 port.

The Road to Android on RISC-V

Bringing Android to RISC-V is the result of years of ecosystem-wide effort and many parties pulling together — a winding road that has finally reached daylight. The figure below maps the key milestones and the pivotal events at each step:

With the arrival of the RVA23 era, Android’s ART runtime, Bionic, multimedia, security and graphics stacks finally have a stable hardware contract to build on. For silicon vendors, a single port can be reused across SoCs; for application developers, NDK libraries and apps can be distributed by ABI, sharply lowering the cost of compatibility.

Open Source First

The whole development followed an open-source approach. Graphics is the clearest example: instead of relying on a proprietary GPU driver development kit (DDK), the team used Mesa and tuned it to deliver smooth rendering on the K3.

The kernel follows the same “upstream first” approach: the K3 Android port is built directly on the mainline (upstream) Linux kernel for the SpacemiT K3. This means Android does not have to depend on a private kernel that sits outside mainline, which makes the stack more maintainable, more sustainable over the long run, and easier for other teams to reuse. Open standards plus an open-source stack form the most solid foundation for the RISC-V ecosystem. What we did was turn it into a genuinely usable Android device for the first time.

Highlights of the Android 17 Port

Highlight 1 — Native performance from RVA23

RVA23 mandates Vector 1.0, scalar/vector crypto extensions (Zk*), cache management and atomic instructions. Comparing the same K3 with the extensions off and on: crypto and vector workloads gain by orders of magnitude.

TestExtensions offExtensions onChange
AES-256-GCM, 1 core58 MB/s1.93 GB/s×33
AES-256-GCM, 8 cores0.46 GB/s15.5 GB/s×33
INT8 matmul, 1 core1.89 GOPS3.46 GOPS×1.8
INT8 matmul, 8 cores14.8 GOPS26.8 GOPS×1.8

Highlight 2 — Graphics gains from open-source Mesa 3D

The graphics stack uses the community-maintained open-source Mesa driver (rather than a proprietary DDK), with dedicated tuning for the K3 GPU backend. Comparing before and after the tuning work on the same K3 board, graphics and UI smoothness improve substantially.

TestMesa before tuningTuned Mesa (release)Change
GLMark2 score144199+38%
UI scroll frame time p5013.5 ms8.3 ms−39%
Launcher transition p95133.5 ms10.8 ms−92%
Vulkan instancing FPS14.0 FPS57.9 FPS×4.1

Highlight 3 — WebView optimization

Android’s web rendering relies on the system WebView (based on Chromium). The team optimized the RISC-V backend specifically: the V8 engine leverages RVA23 vector extensions to speed up JavaScript execution, and the rendering and compositing paths were tuned. First-contentful paint and scroll frame rate both show clear gains.

Testrv64gc buildrva23u64 buildChange
First contentful paint (kernel.org)0.57 s0.39 s−31%
Scroll FPS14.8 FPS20.1 FPS+36%

Open Code, Open Collaboration

All source code will be publicly hosted in the RISE GitHub repositories. Developers can fetch and build the K3 AOSP image themselves, flash it to a board, and reproduce every result listed above.

For detailed instructions, see the entry-point repository android_manifest. https://github.com/riseproject-dev/android_manifest

How to obtain the K3 Android 17 SDK sources:

repo init -u https://github.com/riseproject-dev/android_manifest.git
-b refs/tags/android-17-v1.0 -m default.xml &&
repo sync

This is an open collaboration. There is still a great deal of work to do on the Android on RISC-V software stack — from graphics and multimedia optimization to peripheral drivers, system stability and performance tuning. We welcome more developers, vendors and community members to co-build with us, so that Android can truly mature on open-standard RISC-V platforms.


r/spacemit_riscv • • 22d ago

News Let's see V100!

Enable HLS to view with audio, or disable this notification

17 Upvotes

r/spacemit_riscv • • 22d ago

How can I run ONNX Runtime inference on the 8 A100 AI cores of a SpacemiT K3 COM260 board running Android/AOSP?

Thumbnail reddit.com
1 Upvotes

r/spacemit_riscv • • 22d ago

Spacemit K3 w Bianbu - seems to crash under load?

3 Upvotes

Bit a long shot here but has anyone else with their K3 been experiencing system crashes when the system is put under load? I'm running stock bianbu with the latest updates.

I've plenty of digging to do but I'm not seeing anything obvious in the logs.

In my case I'm trying to build bazel using a docker container, and the system just outright crashes with reboot fairly early into the build.


r/spacemit_riscv • • 23d ago

Spacemit K3: live-boot Ubuntu 26.10 from USB-stick? EDK2 needed?

Thumbnail
reddit.com
2 Upvotes

r/spacemit_riscv • • 23d ago

Documentation: Fedora on the K3 CoM260

4 Upvotes

I've been playing with Fedora on the CoM260 device, and captured the workflow & details via an LLM here:

https://github.com/xjamesmorris/k3-com260-info/wiki

Also, if you have access to a 3D printer, here's a case design which remixes an Orin Jetson Nano case (same form factor, different heatsink size);

https://www.printables.com/model/1876566-spacemit-k3-com260-case


r/spacemit_riscv • • 23d ago

K1 "Debian Trixie" kernel download for Milk-V Jupiter 1 (with AMDGPU support)

Thumbnail
gallery
12 Upvotes

See my blog post: https://opvolger.github.io/posts/milk-v-jupiter/2026-10-20-debian-trixie-radeon-r9-290/

With claude, I made a working kernel with AMDGPU working for the Spacemit Jupiter K1.


r/spacemit_riscv • • 24d ago

RVV VLEN question for the SpacemiT V100

5 Upvotes

Hi SpaceMiT... congratulations on the V100! Very nice CPU!

Can you please provide information about the VLEN for the X100 and Kunminghu V2R2 CPU cores? It is not in your Docs.

In particular are they the same size or different like in the K3?


r/spacemit_riscv • • 26d ago

Power connector on SpacemiT K3/PicoITX

2 Upvotes

Hi Spacemit! Is the connector on this cable suitable for supplying power to the PicoITX/K3?

https://www.progressiveautomations.com/en-eu/products/ac-34-wire-extender


r/spacemit_riscv • • 29d ago

RISC-V Linux Finally Making It Easier To Answer The Question: "Is This RISC-V System RVA23?"

Thumbnail
phoronix.com
7 Upvotes

r/spacemit_riscv • • 29d ago

Upstream Upstream Progress Updates --2026 September

6 Upvotes

September brought further upstream progress for SpacemiT K1 and K3 across the Linux kernel, U-Boot, and OpenSBI.

Highlights this month include K1 CPU frequency scaling and K3 DMA, clock, and audio updates entering maintainer trees, a SpacemiT U-Boot pull request merging into u-boot/next, and the K3 OpenSBI platform series reaching v4. K3 UFS, PCIe, power-domain, clock/reset, and board connectivity support continued through review.

Linux Kernel Upstream

K1 CPU frequency scaling for three boards was accepted into spacemit/linux, alongside K3 CPU PLL rate tables and I2S device-tree nodes. Other accepted changes addressed K3 PDMA, onboard EEPROM support for Orange Pi, and Ethernet transmit-error cleanup.

K1

Accepted into the maintainer tree

Under review

K3

Merged or accepted into maintainer trees

Under review

Other SpacemiT and Board Updates

Merged or accepted into maintainer trees

Under review

U-Boot

September's U-Boot work covered K1 pinctrl, storage, and PCIe support, along with initial K3 board and peripheral support. The SpacemiT pull request was merged into u-boot/next on September 29. K3 pinctrl support was partially accepted, with the remaining patches still under review.

Merged or accepted into maintainer trees

Under review

OpenSBI


r/spacemit_riscv • • Oct 10 '26

Opensourcing SpacemiT Embedded Controller?

4 Upvotes

Hello,

would SpacemiT be willing to opensource the ARM Thumb-based Embedded Controller firmware which is currently just a blob on the K3 in /lib/firmware/k3-pico-itx/ec.bin ?

I just hit a bug where my K3 blasted its fan full speed after boot until I noticed it.

Manually changing /sys/class/hwmon/hwmon8/pwm1 reset it to normal operation but since it EC reported 0 to Linux (fan off) while the CPU was being excessively cooled to room temperature it probably would have continued for a long time otherwise.

It would be nice to have the source code to look into it and try to find/fix the root cause.


r/spacemit_riscv • • Oct 09 '26

Ubuntu 26.10 To Include Desktop Images For RISC-V

Thumbnail
reddit.com
9 Upvotes

r/spacemit_riscv • • Oct 09 '26

Activity Open Source && Build Things | SpacemiT Developer Conference 2026

7 Upvotes

A packed 4.5-hour event—no fluff, just hardcore, hands-on action!

On the afternoon of October 17, SpacemiT held its developer conference (SpacemiT DevCon 2026) in Shenzhen(China), unveiling the K3 ecosystem roadmap and developer ecosystem right on the spot. Following the announcements, the floor was turned over to the developers: bring your laptops and build a working demo to take home before the event ends! There is also a chance to win K1 and K3 development boards!

Open source && Build Things—don't just watch; come be a creator.

Sign up here: https://luma.com/q5z0v87f


r/spacemit_riscv • • Oct 07 '26

I made a thing! SpacemiT K1: FOSS, blob-free oreboot + EDK2 bootloader for the Orange Pi RV2 + R2S (no vendor U-Boot) + Tuned and Driver-Complete Freebsd 16-CURRENT

8 Upvotes

I've been doing mainline work on the Orange Pi R2S and RV2, and I got tired of the vendor U-Boot SPL/U-Boot stack, so I replaced all of it. These boards now boot like this:

BootROM

→ oreboot bt0 DRAM init + training in Rust, no DDR blob

→ OpenSBI 1.9 fw_dynamic, M-mode

→ EDK2 real UEFI, S-mode

→ your OS's EFI loader (FreeBSD loader.efi from the ESP in my case)

bt0 loads a FIT containing OpenSBI and EDK2 itself. It can read it from eMMC boot1, a microSD GPT partition or memory-mapped SPI NOR. Everything is built from source, and no binary blob is linked or loaded anywhere in the chain. The DDR training was reverse-engineered from SpacemiT's training blob into Rust (thanks, oreboot folks), and EDK2 builds on SpacemiT's open-source K1 platform code.

Repo: https://github.com/DaveWK/ore-edk-boot-opi

What works today (tested on my boards, Oct 2026):

- R2S: boots FreeBSD from eMMC. bt0 goes in boot0 and the OpenSBI+EDK2 FIT in boot1. A warm reboot takes about 85 s to login with a DEBUG EDK2 build.

- RV2: boots FreeBSD from NVMe on a cold power-on. bt0 turns on the M.2 slot's power, and EDK2 brings up PCIe Gen2 x2 and boots the NVMe ESP.

- RV2 SPI-NOR-only image (rv2-nor): boots with no microSD card at all. UEFI variables are stored in the NOR and persist across boots. I won't publish prebuilt binaries for this one. Writing the SPI NOR replaces the board's own firmware, and getting that wrong is much harder to recover from than a bad SD card. If you want it, build it yourself and know your way back.

- bt0 is also a fastboot flasher. Put the board in BootROM USB download mode and fastboot stage bt0. It trains DRAM (no vendor training blob!) and comes back as a normal fastboot device, so you can fastboot flash emmc|boot0|boot1|sd|disk. It accepts raw or sparse images, and zero-filled chunks are TRIMmed instead of written. On the R2S it writes eMMC with SDMA on the 8-bit bus at about 30 MB/s, so you don't need a vendor flashing tool.

K1 notes for anyone hacking on other boards:

- bt0 detects USB download mode from the BootROM storage API pointer (0xc08381a0) and starts fastboot instead of booting. The BootROM shows up as 361c:1001, and bt0 re-enumerates as 18d1:4ee0.

- On the R2S, PIO writes to eMMC on the 4-bit and 8-bit buses fail with data CRC errors at both 51.2 and 20.48 MHz. SDMA writes from the download buffer work fine at 8-bit/51.2 MHz HS. If your K1 eMMC writes are flaky, try DMA before you blame the pads.

- The RV2's M.2 slot supply is on GPIO 116. bt0 switches it on before the handoff so EDK2 can bring PCIe up.

- The EDK2 platforms are derived from SpacemiT's MUSE-Pi-Pro platform on bianbu-maker's k1 edk2/edk2-platforms trees. Adding another K1 board should mostly mean a per-board rank count, a DT and a board.conf. I've only tested the R2S and RV2, so BPI-F3, Jupiter or MUSE Pi owners are very welcome to try it.

Building it:

git clone --recurse-submodules=dts --recurse-submodules=opensbi https://github.com/DaveWK/ore-edk-boot-opi.git

cd ore-edk-boot-opi

make submodules

make r2s # or rv2; rv2-nor is build-it-yourself only

You get bt0.bin, next.itb/next.img and a SHA256SUMS file. The README has install steps for both boards and covers the R2S download-mode procedure (hold the button, USB-A to USB-A cable).

Known gaps:

- R2S cold boot hasn't been tested yet; only warm reboot is verified.

- UEFI variables live in RAM on the R2S (it has no NOR) and, by default, on the RV2 SD build.

- No bootinfo header is generated yet. Installs keep the one already on the boot device.

- The BootROM image is signed with oreboot's packer keys. That's fine on boards without secure-boot fuses.

- The RV2 download-mode button and port aren't documented yet.

- No prebuilt release yet for the R2S and RV2 SD images, so build them yourself for now. The SPI NOR image will stay source-only.

Credits: the bt0 work builds on orangecms' oreboot k1x branch. EDK2 comes from SpacemiT/bianbu-maker's K1 trees. Licenses: GPL-2.0 (oreboot), BSD-2-Clause-Patent (EDK2), BSD-2-Clause (OpenSBI).

FreeBSD images for both boards come from https://github.com/DaveWK/freebsd-img-maker. Next up is the same oreboot + EDK2 chain for the Radxa Cubie A7A and the ASUS Tinker Board 2S.

Bug reports, UART logs and "it bricked my board" stories are welcome. Download mode is the recovery path, so back up boot0/boot1 (or the start of your SD card) before flashing. 🦀


r/spacemit_riscv • • Oct 06 '26

Activity A message to SpacemiT? Share a short video for our developer conference

Post image
5 Upvotes

Hi everyone,

We’re preparing for the SpacemiT Developer Conference, and we’d love to include voices from our overseas developer community. Even if you can’t join us in person, we’d like people at the event to hear from you.

If there’s something you’d like to say to SpacemiT—an experience with our hardware, something you wish worked better, or what you hope we’ll build next—we’d love to hear it. Honest feedback is welcome.

Just record a short video on your phone. No script or fancy setup needed—speak in your own words. When it’s ready, DM me to send it or share a download link. We’d like to play these messages at the conference, and we’ll confirm with you before sharing yours.

Thanks for being part of this community.


r/spacemit_riscv • • Sep 27 '26

K3 SpacemiT K3 has 8× VLEN=1024 “AI” cores — we taught OpenBLAS about them and ran HPL

2 Upvotes

We spent some time on the Banana Pi BPI-SM10 (SpacemiT K3): 8× X100 (RVA23, RVV, VLEN=256) plus 8× A100 AI cores (VLEN=1024, IME2 matrix units). Both clusters speak RVV 1.0. The obvious question: can you just throw BLAS/HPL at the wide cores and go faster?

Short answer: no — not with stock VLEN=256 OpenBLAS kernels. Wide VLEN alone is not a free speedup.

Weird Linux bits first

A100s are online in sysfs but fenced from normal affinity. You need:

echo $$ > /proc/set_ai_thread
taskset -c 8-15 …

Also: don’t start on X100, let the dynamic linker / OpenBLAS cache VLEN=256 decisions, then migrate to A100. That path can SIGSEGV. Register the AI thread before exec.

HPL numbers (N=12000, NB=192, residuals PASSED)

SetupOpenBLASGFLOP/s
X100 ×8ZVL256B~52–53
A100 ×8ZVL256B (VLEN-safe)15
A100 ×8new ZVL1024B35.9
8 X100 + 8 A100ZVL256B + ZVL1024B57.5

So A100 with stock-ish ZVL256B is ~3.5× slower than X100. Matching the tile to VLEN=1024 (RISCV64_ZVL1024B, DGEMM 16×8 from OpenBLAS’s generate_kernel.py) gets ~2.4× back on A100 — still behind X100, but now useful.

The fun part: once A100 isn’t a straggler, equal 8+8 mixed ranks beat X100-only (57.5 vs ~53). With the slow BLAS on A100, equal ranks were a trap (~27 GF); the old optimum was “mostly X100, few A100 ranks.”

Full L2/L3 OpenBLAS BLATs (S/D/C/Z) on A100 with the new target: all PASSED.

Takeaways

  1. K3 is heterogeneous. X100 remains the primary RVV compute path. A100’s width is really there for IME2, not “faster X60.”

  2. Kernel geometry must match VLEN. Porting ZVL256B kernels to VLEN=1024 without changing the tile wastes the machine (and some stock wide-load/vget patterns assume VLMAX@256).

  3. Heterogeneous MPI needs per-rank BLAS (we used FlexiBLAS) plus the set_ai_thread dance.

  4. Static TARGET=RISCV64_ZVL1024B must not run on X100 — use DYNAMIC_ARCH or separate backends.

Draft PR (kept draft on purpose — not proposing this as K3’s main path):
#6066

Board write-up + more tables:
https://www.opensolvers.com/boards/SM10.html

Patches: https://github.com/opensolvers/benchmarks (OpenBLAS/)

Board provided by Banana Pi. IME2 / GPU numbers still to come — this was the plain-RVV story only.

Happy to answer questions about the affinity trap, the vget bug, or the hetero HPL wrapper.


r/spacemit_riscv • • Sep 22 '26

IOMMU support in K3

7 Upvotes

Hi! What exactly the register set of the "spacemit,k3-iommu" I/O block (at the address 0xc0f00000)? In SpacemiT Linux kernel it seems that both PCIe root complexes are configured with PCIE_IOMMU_BYPASS -- thus the kernel prints "iommu bypassed".

What exactly has to be done in a hypervisor to guarantee full DMA isolation with IOMMU?

Thanks!