This is an old revision of the document!
Update i915 GPU driver to Linux 3.8
Our kernel-side i915 GPU driver is old, and platforms beginning with Haswell are not yet supported. This initiative aims to change that.
Current status (2015-12-13)
Piglit runs fine on a Core Duo based laptop.
I'm focusing on reviewing the entire patch to post it to freebsd-x11@. The goal is to find any regression with already well supported GPUs. When it's in good shape, I will commit it, no matter the state for Haswell. After that, I will probably update to Linux 3.9 which brings many bugfixes for Haswell.
Known Issues with Haswell
- Modes above FullHD (1920×1080) seem broken: the screen is only garbage. I have the problem with an UltraHD monitor and some users reported a similar behavior with other modes.
- Masachika ISHIZUKA on freebsd-x11@ gets a kernel panic:
panic: BUG ON: obj->base.write_domain & ~I915_GEM_GPU_DOMAINS. - Stefan Wendler on freebsd-x11@ gets a blank screen, even in vt(4).
Testing Instructions / How To
Whether it works or not, I'm interested in the output of dmesg and, in case of a kernel crash, the corresponding /var/crash/core.txt.* files. Please send them to the freebsd-x11 mailing list.
At this time, we aren't providing user support. However, if you have patches, they are very much welcome!
Thank you for your help!
The branch is on GitHub: https://github.com/freebsd/freebsd-base-graphics/tree/drm-i915-update-38
- Make sure you have everything setup to have kernel dumps. Especially, it helps to have the following sysctl:
# In /etc/sysctl.conf. debug.debugger_on_panic=0
- Enable i915 debug messages:
# In /boot/loader.conf. drm.debug=3
- You need to clone the repository and switch to the
drm-i915-update-38branch:
git clone -b drm-i915-update-38 \ https://github.com/freebsd/freebsd-base-graphics.git
- Build and install a kernel from this clone; I suggest you install the kernel with a non-default name:
cd freebsd-base-graphics sudo make kernel INSTKERNNAME=kernel.i915
- Select the new kernel for the next boot and reboot:
sudo nextboot -k kernel.i915 sudo reboot
- Try to load the new driver:
sudo kldload i915kms
- Try to start an X.Org server and use it!
Progress
This is a list of files needing review. Reviewing consists of comparing each file with Linux 3.8.13 and with FreeBSD HEAD, to make sure everything is ported and no FreeBSD-specific changes were lost.
dvo_ch7017.cdvo_ch7xxx.cdvo_ivch.cdvo_ns2501.cdvo_sil164.cdvo_tfp410.cdvo.hi915_debug.ci915_dma.ci915_drm.hi915_drv.ci915_drv.hi915_gem_context.ci915_gem_evict.ci915_gem_execbuffer.ci915_gem_gtt.c: TODO: Portgen6_ggtt_bind_object()?i915_gem_stolen.ci915_gem_tiling.ci915_gem.ci915_ioc32.ci915_irq.ci915_reg.hi915_suspend.cintel_acpi.cintel_bios.cintel_bios.hintel_crt.cintel_ddi.cintel_display.cintel_dp.cintel_drv.hintel_dvo.cintel_fb.cintel_hdmi.cintel_iic.cintel_lvds.cintel_modes.cintel_opregion.cintel_overlay.cintel_panel.cintel_pm.cintel_ringbuffer.cintel_ringbuffer.hintel_sdvo_regs.hintel_sdvo.cintel_sprite.cintel_tv.c