llamasareboss Posted March 9, 2021 Share Posted March 9, 2021 (edited) Hi. I have a server 2019 install and I have noticed that I have a safely remove devices prompt for... well... mostly everything attached Including my GPU. How would one remove these? Thanks, BIOS is OVMF Edited March 9, 2021 by llamasareboss Quote Link to comment
bobbintb Posted July 2, 2021 Share Posted July 2, 2021 I am having the same issue. I really don't want my kids ejecting the boot drive by mistake. I'm sure they won't be able to because it's in use bit I don't want to take that chance or test that theory. Quote Link to comment
ghost82 Posted July 3, 2021 Share Posted July 3, 2021 (edited) 16 hours ago, bobbintb said: I am having the same issue Machine type, i440fx or q35? xml please. As far as I know there should be an hotplug attribute for pcie-root-port (i.e. q35 type machine); I cannot find any documentation for i440fx. So, for q35, for a gpu, but it should be valid for any device attached to a pcie-root-port: pcie-root-port (index 3): <controller type='pci' index='3' model='pcie-root-port'> <model name='pcie-root-port'/> <target chassis='3' port='0xc' hotplug='off'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x4'/> </controller> gpu (audio + video attached to bus 3 --> index 3) <hostdev mode='subsystem' type='pci' managed='yes'> <driver name='vfio'/> <source> <address domain='0x0000' bus='0x04' slot='0x00' function='0x0'/> </source> <address type='pci' domain='0x0000' bus='0x03' slot='0x00' function='0x0' multifunction='on'/> </hostdev> <hostdev mode='subsystem' type='pci' managed='yes'> <driver name='vfio'/> <source> <address domain='0x0000' bus='0x04' slot='0x00' function='0x1'/> </source> <address type='pci' domain='0x0000' bus='0x03' slot='0x00' function='0x1'/> </hostdev> It seems that the hotplug attribute is valid for pcie-root-port and pcie-switch-downstream-port, pcie-root (bus 0) is not listed. If you have vdisks attached to a virtual sata controller you may want to create a second sata controller attached to a pcie-root-port, because qemu q35 has a sata controller hardcoded at bus 0, slot 0x1f, function 0x2, and this means that this sata controller is attached to pcie-root and not to a pcie-root-port. Devices attached to pcie-root (bus 0) are integrated devices, windows should be smart enough to understand that an integrated device cannot be hotplugged. From libvirt documentation: Quote hotplug pcie-root-port and pcie-switch-downstream-port controllers can also have a hotplug attribute in the <target> subelement, which is used to disable hotplug/unplug of devices on a particular controller. The default setting of hotplug is on; it should be set to off to disable hotplug/unplug of devices on a particular controller. Since 6.3.0 Another workaround could be to modify the windows registry, you can try what it is described here (look only at the registry modifications as a guide, and note that vendorid and productid will be different) https://helgeklein.com/blog/removing-eject-vmware-virtual-disk-scsi-disk-device/ You need a script to run at boot, otherwise the registry will be overwritten. Edited July 3, 2021 by ghost82 Quote Link to comment
bobbintb Posted July 4, 2021 Share Posted July 4, 2021 Mine is i440fx-5.1. I'll see if I can find something on that or try the registry. Here is my XML: <?xml version='1.0' encoding='UTF-8'?> <domain type='kvm' id='7'> <name>Windows 10</name> <uuid>68b80ce7-d359-e5d3-3d22-67d0d80d7012</uuid> <metadata> <vmtemplate xmlns="unraid" name="Windows 10" icon="windows.png" os="windows10"/> </metadata> <memory unit='KiB'>16777216</memory> <currentMemory unit='KiB'>16777216</currentMemory> <memoryBacking> <nosharepages/> </memoryBacking> <vcpu placement='static'>8</vcpu> <cputune> <vcpupin vcpu='0' cpuset='0'/> <vcpupin vcpu='1' cpuset='32'/> <vcpupin vcpu='2' cpuset='1'/> <vcpupin vcpu='3' cpuset='33'/> <vcpupin vcpu='4' cpuset='2'/> <vcpupin vcpu='5' cpuset='34'/> <vcpupin vcpu='6' cpuset='3'/> <vcpupin vcpu='7' cpuset='35'/> </cputune> <resource> <partition>/machine</partition> </resource> <os> <type arch='x86_64' machine='pc-i440fx-5.1'>hvm</type> <loader readonly='yes' type='pflash'>/usr/share/qemu/ovmf-x64/OVMF_CODE-pure-efi.fd</loader> <nvram>/etc/libvirt/qemu/nvram/68b80ce7-d359-e5d3-3d22-67d0d80d7012_VARS-pure-efi.fd</nvram> <boot dev='hd'/> </os> <features> <acpi/> <apic/> <hyperv> <relaxed state='on'/> <vapic state='on'/> <spinlocks state='on' retries='8191'/> <vendor_id state='on' value='none'/> </hyperv> </features> <cpu mode='host-passthrough' check='none' migratable='on'> <topology sockets='1' dies='1' cores='4' threads='2'/> <cache mode='passthrough'/> <feature policy='require' name='topoext'/> </cpu> <clock offset='localtime'> <timer name='hypervclock' present='yes'/> <timer name='hpet' present='no'/> </clock> <on_poweroff>destroy</on_poweroff> <on_reboot>restart</on_reboot> <on_crash>restart</on_crash> <devices> <emulator>/usr/local/sbin/qemu</emulator> <disk type='file' device='cdrom'> <driver name='qemu' type='raw'/> <source file='/mnt/cache/VMs/virtio-win-0.1.190.iso' index='1'/> <backingStore/> <target dev='hdb' bus='sata'/> <readonly/> <alias name='sata0-0-1'/> <address type='drive' controller='0' bus='0' target='0' unit='1'/> </disk> <controller type='usb' index='0' model='qemu-xhci' ports='15'> <alias name='usb'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0'/> </controller> <controller type='virtio-serial' index='0'> <alias name='virtio-serial0'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/> </controller> <controller type='pci' index='0' model='pci-root'> <alias name='pci.0'/> </controller> <controller type='sata' index='0'> <alias name='sata0'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/> </controller> <interface type='bridge'> <mac address='52:54:00:51:1f:d5'/> <source bridge='br0'/> <target dev='vnet0'/> <model type='virtio-net'/> <alias name='net0'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/> </interface> <serial type='pty'> <source path='/dev/pts/0'/> <target type='isa-serial' port='0'> <model name='isa-serial'/> </target> <alias name='serial0'/> </serial> <console type='pty' tty='/dev/pts/0'> <source path='/dev/pts/0'/> <target type='serial' port='0'/> <alias name='serial0'/> </console> <channel type='unix'> <source mode='bind' path='/var/lib/libvirt/qemu/channel/target/domain-7-Windows 10/org.qemu.guest_agent.0'/> <target type='virtio' name='org.qemu.guest_agent.0' state='disconnected'/> <alias name='channel0'/> <address type='virtio-serial' controller='0' bus='0' port='1'/> </channel> <input type='tablet' bus='usb'> <alias name='input0'/> <address type='usb' bus='0' port='1'/> </input> <input type='mouse' bus='ps2'> <alias name='input1'/> </input> <input type='keyboard' bus='ps2'> <alias name='input2'/> </input> <hostdev mode='subsystem' type='pci' managed='yes'> <driver name='vfio'/> <source> <address domain='0x0000' bus='0x02' slot='0x00' function='0x0'/> </source> <alias name='hostdev0'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/> </hostdev> <hostdev mode='subsystem' type='pci' managed='yes'> <driver name='vfio'/> <source> <address domain='0x0000' bus='0x02' slot='0x00' function='0x1'/> </source> <alias name='hostdev1'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/> </hostdev> <hostdev mode='subsystem' type='pci' managed='yes'> <driver name='vfio'/> <source> <address domain='0x0000' bus='0x01' slot='0x00' function='0x0'/> </source> <alias name='hostdev2'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x08' function='0x0'/> </hostdev> <hostdev mode='subsystem' type='pci' managed='yes'> <driver name='vfio'/> <source> <address domain='0x0000' bus='0x23' slot='0x00' function='0x3'/> </source> <alias name='hostdev3'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x09' function='0x0'/> </hostdev> <memballoon model='none'/> </devices> <seclabel type='dynamic' model='dac' relabel='yes'> <label>+0:+100</label> <imagelabel>+0:+100</imagelabel> </seclabel> </domain> Quote Link to comment
bobbintb Posted July 5, 2021 Share Posted July 5, 2021 Adding the correct registry entries fixed my issue but now I am just having trouble getting the GPO to run it on start up. I made a bat file that adds the registry entries. I can run it manually as admin and it works. Running it manually without admin does not, nor does having the GPO run the script on start up. Quote Link to comment
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.