Intel HDMI Passthrough

/etc/default/grub

$ cat /etc/default/grub       
---
GRUB_DEFAULT=0
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR=`lsb_release -i -s 2/dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on vfio-pci.ids=8086:3e92 iommu=pt video=efifb:off nomodeset"
GRUB_CMDLINE_LINUX=""
---
update-grub

/etc/modules

$ cat /etc/modules                 
---
vfio
vfio_iommu_type1
vfio_pci
vfio_virqfd
kvmgt
---

/etc/modprobe.d/blacklist.conf

$ cat /etc/modprobe.d/blacklist.conf            
---
blacklist snd_hda_intel
blacklist snd_hda_codec_hdmi
blacklist i915
---

/etc/modprobe.d/kvm.conf

$ cat /etc/modprobe.d/kvm.conf
---
options kvm ignore_msrs=1
---

/etc/modprobe.d/kvm.conf

$ cat /etc/modprobe.d/pve-blacklist.conf 
---
blacklist nvidiafb
---
update-initramfs -k all -u

Windows QEMU Config

# root @ pve in /etc/pve/qemu-server [20:39:41] 
$ cat 107.conf 
args: -device vfio-pci,host=00:02.0,addr=0x18,x-igd-opregion=on
boot: order=virtio0;net0
cores: 12
cpu: host
machine: pc-q35-6.2
memory: 8192
meta: creation-qemu=6.2.0,ctime=1655465526
name: windows-lite
net0: virtio=CE:52:39:7C:5B:46,bridge=vmbr0,firewall=1
numa: 0
onboot: 1
ostype: win10
scsihw: virtio-scsi-pci
smbios1: uuid=74eb8b02-a4f3-4401-9575-e9a9c49b39b6
sockets: 1
usb0: host=08bb:2704
usb1: host=046d:c52b
usb2: host=046d:c52f
vga: std,memory=64
virtio0: local-lvm:vm-107-disk-0,size=128G
vmgenid: 8c748566-43e7-45d3-8354-92072d3beee7

Disk Passthrough

/etc/default/grub

$ cat /etc/default/grub
---
# If you change this file, run 'update-grub' afterwards to update
# /boot/grub/grub.cfg.
# For full documentation of the options in this file, see:
#   info -f grub -n 'Simple configuration'
 
GRUB_DEFAULT=0
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR=`lsb_release -i -s 2/dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on"
GRUB_CMDLINE_LINUX=""
 
# Uncomment to enable BadRAM filtering, modify to suit your needs
# This works with Linux (no patch required) and with any kernel that obtains
# the memory map information from GRUB (GNU Mach, kernel of FreeBSD ...)
#GRUB_BADRAM="0x01234567,0xfefefefe,0x89abcdef,0xefefefef"
 
# Uncomment to disable graphical terminal (grub-pc only)
#GRUB_TERMINAL=console
 
# The resolution used on graphical terminal
# note that you can use only modes which your graphic card supports via VBE
# you can see them in real GRUB with the command `vbeinfo'
#GRUB_GFXMODE=640x480
 
# Uncomment if you don't want GRUB to pass "root=UUID=xxx" parameter to Linux
#GRUB_DISABLE_LINUX_UUID=true
 
# Uncomment to disable generation of recovery mode menu entries
#GRUB_DISABLE_RECOVERY="true"
 
# Uncomment to get a beep at grub start
#GRUB_INIT_TUNE="480 440 1"
---
update-grub

ls -l /dev/disk/by-id/

# Get disk ID & Set disk passthrough
ls -l /dev/disk/by-id/
qm set 101 --sata0 /dev/disk/by-id/ata-WDC_WD40PURX-64GVNY0_PAK4V48T
qm set 101 --sata1 /dev/disk/by-id/ata-WDC_WD40PURX-64GVNY0_P4GKEV0C

/etc/lvm/lvm.conf

$ cat /etc/lvm/lvm.conf
 
# The end part of the file
---
...
devices {
        global_filter = ["r|/dev/disk/by-id/ata-WDC_WD40PURX-64GVNY0_PAK4V48T.*|","r|/dev/disk/by-id/dev/disk/by-id/ata-WDC_WD40PURX-64GVNY0_P4GKEV0C.*|"]
}
 
devices {
	 # added by pve-manager to avoid scanning ZFS zvols
	 global_filter=["r|/dev/zd.*|"]
}
---
END