Hi, I have a fedora25 system with a Windows10 host and would like to use it for photoshop. However, it complains the video memory is too low. I'm using the QXL driver and it appears to be limited to 256MB? I've installed the Red Hat QXL driver in Windows. I have 4GB of memory allocated overall, and could allocate more if necessary. How do I increase the available video memory? Photoshop reports that it's detected less than 512MB and isn't operating properly. When I view "Adapter Properties" is reports there is 2047 MB of available graphics memory and 2047 MB Shared System Memory. Attempts to modify with "virsh edit" the vram and other video-related variables for the host have failed. Included below is my qemu XML configuration. Any idea greatly appreciated. <domain type='kvm'> <name>alex-win10</name> <uuid>337f9410-3286-4ef5-a3e8-8271e38ea1e5</uuid> <memory unit='KiB'>4194304</memory> <currentMemory unit='KiB'>4194304</currentMemory> <vcpu placement='static'>2</vcpu> <os> <type arch='x86_64' machine='pc-i440fx-2.4'>hvm</type> </os> <features> <acpi/> <apic/> <hyperv> <relaxed state='on'/> <vapic state='on'/> <spinlocks state='on' retries='8191'/> </hyperv> <vmport state='off'/> </features> <cpu mode='host-model'> <model fallback='allow'/> </cpu> <clock offset='localtime'> <timer name='rtc' tickpolicy='catchup'/> <timer name='pit' tickpolicy='delay'/> <timer name='hpet' present='no'/> <timer name='hypervclock' present='yes'/> </clock> <on_poweroff>destroy</on_poweroff> <on_reboot>restart</on_reboot> <on_crash>restart</on_crash> <pm> <suspend-to-mem enabled='no'/> <suspend-to-disk enabled='no'/> </pm> <devices> <emulator>/usr/bin/qemu-kvm</emulator> <disk type='file' device='disk'> <driver name='qemu' type='qcow2'/> <source file='/var/lib/libvirt/images/alex-win10.qcow2'/> <target dev='vda' bus='virtio'/> <boot order='2'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0'/> </disk> <disk type='block' device='cdrom'> <driver name='qemu' type='raw'/> <source dev='/dev/sr0'/> <target dev='hdb' bus='ide'/> <readonly/> <boot order='1'/> <address type='drive' controller='0' bus='0' target='0' unit='1'/> </disk> <disk type='file' device='cdrom'> <driver name='qemu' type='raw'/> <target dev='hdc' bus='ide'/> <readonly/> <address type='drive' controller='0' bus='1' target='0' unit='0'/> </disk> <controller type='usb' index='0' model='ich9-ehci1'> <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x7'/> </controller> <controller type='usb' index='0' model='ich9-uhci1'> <master startport='0'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0' multifunction='on'/> </controller> <controller type='usb' index='0' model='ich9-uhci2'> <master startport='2'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x1'/> </controller> <controller type='usb' index='0' model='ich9-uhci3'> <master startport='4'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x2'/> </controller> <controller type='pci' index='0' model='pci-root'/> <controller type='ide' index='0'> <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/> </controller> <controller type='virtio-serial' index='0'> <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/> </controller> <controller type='scsi' index='0'> <address type='pci' domain='0x0000' bus='0x00' slot='0x09' function='0x0'/> </controller> <interface type='bridge'> <mac address='52:54:00:52:6b:61'/> <source bridge='br0'/> <model type='rtl8139'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/> </interface> <serial type='pty'> <target port='0'/> </serial> <console type='pty'> <target type='serial' port='0'/> </console> <channel type='spicevmc'> <target type='virtio' name='com.redhat.spice.0'/> <address type='virtio-serial' controller='0' bus='0' port='1'/> </channel> <input type='tablet' bus='usb'> <address type='usb' bus='0' port='1'/> </input> <input type='mouse' bus='ps2'/> <input type='keyboard' bus='ps2'/> <graphics type='spice' autoport='yes'> <listen type='address'/> <image compression='off'/> </graphics> <sound model='ich6'> <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/> </sound> <video> <model type='qxl' ram='65536' vram='65536' vgamem='536870912' heads='1' primary='yes'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/> </video> <redirdev bus='usb' type='spicevmc'> <address type='usb' bus='0' port='2'/> </redirdev> <redirdev bus='usb' type='spicevmc'> <address type='usb' bus='0' port='3'/> </redirdev> <memballoon model='virtio'> <address type='pci' domain='0x0000' bus='0x00' slot='0x08' function='0x0'/> </memballoon> </devices> </domain>
Pavel Hrdina
2017-Jul-23 19:45 UTC
Re: [libvirt-users] Increasing video memory available to Windows
On Sat, Jul 22, 2017 at 03:03:06PM -0400, Alex wrote:> Hi, > I have a fedora25 system with a Windows10 host and would like to use > it for photoshop. However, it complains the video memory is too low. > I'm using the QXL driver and it appears to be limited to 256MB? I've > installed the Red Hat QXL driver in Windows.What driver did you installed? There are two drivers, qxl and qxldod, for windows 10 you need the qxldod and I would give it a try to use the latest drivers [1], not the stable ones. [1] <https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/latest-virtio/>> > I have 4GB of memory allocated overall, and could allocate more if necessary. > > How do I increase the available video memory? Photoshop reports that > it's detected less than 512MB and isn't operating properly. > > When I view "Adapter Properties" is reports there is 2047 MB of > available graphics memory and > 2047 MB Shared System Memory. > > Attempts to modify with "virsh edit" the vram and other video-related > variables for the host have failed. > > Included below is my qemu XML configuration. Any idea greatly appreciated. > > <domain type='kvm'> > <name>alex-win10</name> > <uuid>337f9410-3286-4ef5-a3e8-8271e38ea1e5</uuid> > <memory unit='KiB'>4194304</memory> > <currentMemory unit='KiB'>4194304</currentMemory> > <vcpu placement='static'>2</vcpu> > <os> > <type arch='x86_64' machine='pc-i440fx-2.4'>hvm</type> > </os> > <features> > <acpi/> > <apic/> > <hyperv> > <relaxed state='on'/> > <vapic state='on'/> > <spinlocks state='on' retries='8191'/> > </hyperv> > <vmport state='off'/> > </features> > <cpu mode='host-model'> > <model fallback='allow'/> > </cpu>Small tip, if you don't care about migration and this is just a guest that will be used only on one host, I would go with: <cpu mode='host-passthrough' check='none'> <topology sockets='1' cores='2' threads='1'/> </cpu> The "host-passthrough" is a mode where it tries to present the CPU to guest as close as possible to the host CPU. The topology configuration is required for windows, because of licensing, it supports only 2 sockets, so for your configuration it works but if you would like to add more vcpus to the guest, it could cause problems. Without this configuration QEMU by default sets the number of sockets and each socket has only 1 core and 1 thread.> <clock offset='localtime'> > <timer name='rtc' tickpolicy='catchup'/> > <timer name='pit' tickpolicy='delay'/> > <timer name='hpet' present='no'/> > <timer name='hypervclock' present='yes'/> > </clock> > <on_poweroff>destroy</on_poweroff> > <on_reboot>restart</on_reboot> > <on_crash>restart</on_crash> > <pm> > <suspend-to-mem enabled='no'/> > <suspend-to-disk enabled='no'/> > </pm> > <devices> > <emulator>/usr/bin/qemu-kvm</emulator> > <disk type='file' device='disk'> > <driver name='qemu' type='qcow2'/> > <source file='/var/lib/libvirt/images/alex-win10.qcow2'/> > <target dev='vda' bus='virtio'/> > <boot order='2'/> > <address type='pci' domain='0x0000' bus='0x00' slot='0x07' > function='0x0'/> > </disk> > <disk type='block' device='cdrom'> > <driver name='qemu' type='raw'/> > <source dev='/dev/sr0'/> > <target dev='hdb' bus='ide'/> > <readonly/> > <boot order='1'/> > <address type='drive' controller='0' bus='0' target='0' unit='1'/> > </disk> > <disk type='file' device='cdrom'> > <driver name='qemu' type='raw'/> > <target dev='hdc' bus='ide'/> > <readonly/> > <address type='drive' controller='0' bus='1' target='0' unit='0'/> > </disk> > <controller type='usb' index='0' model='ich9-ehci1'> > <address type='pci' domain='0x0000' bus='0x00' slot='0x06' > function='0x7'/> > </controller> > <controller type='usb' index='0' model='ich9-uhci1'> > <master startport='0'/> > <address type='pci' domain='0x0000' bus='0x00' slot='0x06' > function='0x0' multifunction='on'/> > </controller> > <controller type='usb' index='0' model='ich9-uhci2'> > <master startport='2'/> > <address type='pci' domain='0x0000' bus='0x00' slot='0x06' > function='0x1'/> > </controller> > <controller type='usb' index='0' model='ich9-uhci3'> > <master startport='4'/> > <address type='pci' domain='0x0000' bus='0x00' slot='0x06' > function='0x2'/> > </controller> > <controller type='pci' index='0' model='pci-root'/> > <controller type='ide' index='0'> > <address type='pci' domain='0x0000' bus='0x00' slot='0x01' > function='0x1'/> > </controller> > <controller type='virtio-serial' index='0'> > <address type='pci' domain='0x0000' bus='0x00' slot='0x05' > function='0x0'/> > </controller> > <controller type='scsi' index='0'> > <address type='pci' domain='0x0000' bus='0x00' slot='0x09' > function='0x0'/> > </controller> > <interface type='bridge'> > <mac address='52:54:00:52:6b:61'/> > <source bridge='br0'/> > <model type='rtl8139'/> > <address type='pci' domain='0x0000' bus='0x00' slot='0x03' > function='0x0'/> > </interface> > <serial type='pty'> > <target port='0'/> > </serial> > <console type='pty'> > <target type='serial' port='0'/> > </console> > <channel type='spicevmc'> > <target type='virtio' name='com.redhat.spice.0'/> > <address type='virtio-serial' controller='0' bus='0' port='1'/> > </channel> > <input type='tablet' bus='usb'> > <address type='usb' bus='0' port='1'/> > </input> > <input type='mouse' bus='ps2'/> > <input type='keyboard' bus='ps2'/> > <graphics type='spice' autoport='yes'> > <listen type='address'/> > <image compression='off'/> > </graphics> > <sound model='ich6'> > <address type='pci' domain='0x0000' bus='0x00' slot='0x04' > function='0x0'/> > </sound> > <video> > <model type='qxl' ram='65536' vram='65536' vgamem='536870912' > heads='1' primary='yes'/>So there are some limits for the memory configuration, if you start the guest and run "virsh dumpxml $guestName" you will see how much memory is actually configure. It should be this: ram='524288' vram='65536' vgamem='262144' I have a windows 10 guest installed and I installed a Photoshop 12.0 and it starts without any warning. You don't need to set the vgamem that large, 32M should be good enough, the formula to calculate the vgamem is: "screen_width * screen_height * 4" And I would set the "ram" to 512M, however I'm not sure how this actually affects the video memory seen by guest. The documentation is really poor. Anyway, the same configuration works for me so I don't know what else could help you especially while I'm not able to reproduce the issue with video memory. Pavel> <address type='pci' domain='0x0000' bus='0x00' slot='0x02' > function='0x0'/> > </video> > <redirdev bus='usb' type='spicevmc'> > <address type='usb' bus='0' port='2'/> > </redirdev> > <redirdev bus='usb' type='spicevmc'> > <address type='usb' bus='0' port='3'/> > </redirdev> > <memballoon model='virtio'> > <address type='pci' domain='0x0000' bus='0x00' slot='0x08' > function='0x0'/> > </memballoon> > </devices> > </domain>
Alex
2017-Aug-05 20:13 UTC
Re: [libvirt-users] Increasing video memory available to Windows
Hi, On Sun, Jul 23, 2017 at 3:45 PM, Pavel Hrdina <phrdina@redhat.com> wrote:> On Sat, Jul 22, 2017 at 03:03:06PM -0400, Alex wrote: >> Hi, >> I have a fedora25 system with a Windows10 host and would like to use >> it for photoshop. However, it complains the video memory is too low. >> I'm using the QXL driver and it appears to be limited to 256MB? I've >> installed the Red Hat QXL driver in Windows. > > What driver did you installed? There are two drivers, qxl and qxldod, > for windows 10 you need the qxldod and I would give it a try to use the > latest drivers [1], not the stable ones. > > [1] <https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/latest-virtio/>It looks like that fixed it. I must have been using the x86 version all along, thinking the amd64 was only for AMD chips, and I have an Intel. I tried to change the CPU settings to those you recommended, and it didn't like it. When I use 'virsh edit" for the host, make the cpu changes, then try to save, I receive: error: XML document failed to validate against schema: Unable to validate doc against /usr/share/libvirt/schemas/domain.rng Extra element cpu in interleave Element domain failed to validate content Failed. Try again? [y,n,i,f,?]: I currently have the following CPU info: <vcpu placement='static'>2</vcpu> <cpu mode='host-model'> <model fallback='allow'/> </cpu> When I made the CPU changes, I kept the vcpu config and replaced the "cpu mode..." section. This is the real info from /proc/cpuinfo. Do you have any idea what I might be doing wrong? processor : 7 vendor_id : GenuineIntel cpu family : 6 model : 60 model name : Intel(R) Core(TM) i7-4770 CPU @ 3.40GHz stepping : 3 microcode : 0x22 cpu MHz : 3509.777 cache size : 8192 KB physical id : 0 siblings : 8 core id : 3 cpu cores : 4 apicid : 7 initial apicid : 7 fpu : yes fpu_exception : yes cpuid level : 13 wp : yes flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc cpuid aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 sdbg fma cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm epb tpr_shadow vnmi flexpriority ept vpid fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid xsaveopt dtherm ida arat pln pts bugs : bogomips : 6803.22 clflush size : 64 cache_alignment : 64 address sizes : 39 bits physical, 48 bits virtual power management: Thanks, Alex