diff --git a/lib/qemu/iommu b/lib/qemu/iommu new file mode 100644 index 0000000..f7c42e1 --- /dev/null +++ b/lib/qemu/iommu @@ -0,0 +1,38 @@ +#!/usr/bin/env bash +# SPDX-License-Identifier: GPL-3.0-or-later +# Copyright (c) 2025 Samsung Electronics Co., Ltd. All Rights Reserved. +# +# Written by Joel Granados + +qemu_viommu_intel() { + local long="extra-args:" + + if ! tmp=$(getopt -o "" --long "$long" -n "${FUNCNAME[0]}" -- "$@"); then + exit 1 + fi + + eval set -- "$tmp" + unset tmp + + while true; do + case "$1" in + '--extra-args' ) + local extra_args="$2"; shift 2 + ;; + '--' ) + shift; break + ;; + * ) + _fatal 1 "unknown argument '$1'" + ;; + esac + done + + local iommu_arg="intel-iommu,intremap=on" + + if [[ -v extra_args ]]; then + iommu_arg="${iommu_arg},${extra_args}" + fi + + QEMU_PARAMS+=("-device" "${iommu_arg}") +}