I have worked out a series of steps for getting Skylake's integrated GPU working under Qubes R3.0. Please note that two things are needed to get through the above steps: (1) a network adapter other than the Skylake integrated nic (since this is not supported by the kernel included in the ISO installer) so updates can be downloaded, and (2) another GPU besides the integrated GPU (seeing as that is what we're trying to get to work here). This is easier to deal with on a desktop system than a notebook (although the notebook may have a supported wifi card, and some include a secondary GPU that will work under Qubes). One way to get around this is to run the below steps on a different non-Skylake computer, and then put the hard drive in the Skylake system once all is complete.
1) Boot the R3.0 installer ISO. Press tab, and add 'xsave=0' shortly after xen.gz. Without this option for Xen, the system will simply reboot, rather than proceed with the installer.
2) Install Qubes R3.0
3) Once things are fully installed, right-click on dom0 in Qubes Manager, and choose Update. Update all of the packages.
4) Edit /etc/yum.repos.d/qubes-dom0.repo Duplicate the section [qubes-dom0-current-testing], and call the new one [qubes-dom0-r31-current-testing]. Replace '$releasever' with '3.1', and set gpgcheck to 0. The resulting new section should look like this:
[qubes-dom0-r31-current-testing]
name = Qubes Dom0 Repository (r3.1 updates-testing)
enabled = 0
metadata_expire = 7d
gpgcheck = 0
gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-qubes-$releasever-primary
(it is possible this works without setting gpgcheck to 0 - I did not test that)
5) In a dom0 console, run 'sudo qubes-dom0-update --enablerepo=qubes-dom0-r31-current-testing kernel-4.1.13*'. This will install the 4.1.13 Linux kernel, which provide drivers for the integrated GPU and Skylake ethernet.
6) Update the initramfs for 4.1.13 to have firmware blobs for Skylake:
mkdir dl
cd dl
tar xf sklgucver43.tar.bz2
tar xf skldmcver123.tar.bz2
cd ..
mkdir rfs
cd rfs
gunzip -c /boot/initramfs-4.1.13-6.pvops.qubes.x86_64.img | cpio -h
cd lib
mkdir firmware (may exist)
mkdir firmware/i915
cd firmware/i915
cp ../../../../dl/skl_dmc_ver1_23/skl_dmc_ver1_23.bin ../../../../dl/skl_guc_ver4_3/skl_guc_ver4_3.bin .
ln -s skl_dmc_ver1_23.bin skl_dmc_ver1.bin
ln -s skl_guc_ver4_3.bin skl_guc_ver4.bin
cd ../../..
mv /boot/initramfs-4.1.13-6.pvops.qubes.x86_64.img /boot/initramfs-4.1.13-6.pvops.qubes.x86_64.img.OLD
find . | cpio -H newc -o | gzip -9 > /boot/initramfs-4.1.13-6.pvops.qubes.x86_64.img
Note: the above may/will need to be done any time initramfs has been rebuilt.
7) Update grub.cfg (for example, 'sudo vi /boot/grub2/grub.cfg'). For the entry/entries that boot up the 4.1.13 kernel, revise the xen command line to include 'xsave=0', and the linux kernel command line to include 'i915.preliminary_hw_support=1'. For example:
multiboot /xen-4.4.3.gz placeholder console=none dom0_mem=min:1024M xsave=0 ${xen_rm_opts}
module /vmlinuz-4.1.13-6.pvops.qubes.x86_64 placeholder root=/dev/mapper/qubes_dom0-root ro rd.lvm.lv=qubes_dom0/root vconsole.font=latarcyrheb-sun16 rd.luks.uuid=luks-7dd366b7-49c4-4dd7-d5f2-6cddd796232b rd.lvm.lv=qubes_dom0/swap i915.preliminary_fw_support=1 rhgb quiet
8) Install updated x11 driver for i915 (along with others)
sudo qubes-dom0-update --enablerepo=qubes-dom0-r31-current-testing xorg-x11-drivers xorg-x11-drv-ati xorg-x11-drv-dummy xorg-x11-drv-evdev xorg-x11-drv-fbdev xorg-x11-drv-intel xorg-x11-drv-modesetting xorg-x11-drv-nouveau xorg-x11-drv-openchrome xorg-x11-drv-qxl xorg-x11-drv-sisusb xorg-x11-drv-synaptics xorg-x11-drv-v4l xorg-x11-drv-vesa xorg-x11-drv-vmmouse xorg-x11-drv-vmware xorg-x11-drv-void xorg-x11-drv-voodoo xorg-x11-drv-wacom xorg-x11-server-Xorg xorg-x11-server-common
9) Go to System Tools->System Settings. Under Power Management, disable Screen Energy Saving. If you do not, the GPU will not be in a good state when it wakes from sleep. This is a known bug with the version of the Skylake driver in the 4.1 kernels (apparently fixed in 4.2+). Unfortunately, it also is a significant limitation for notebook users. It is the best I have to offer for the time being.
That should do it. Best of luck!
Eric