Date: Wed, 11 May 2016 20:37:04 -0700 From: "K. Macy" <kmacy@freebsd.org> To: "freebsd-arch@freebsd.org" <arch@freebsd.org> Cc: Ed Maste <emaste@freebsd.org>, Mark Johnston <markj@freebsd.org> Subject: MMU Notifiers and the quest for graphics feature parity Message-ID: <CAHM0Q_P1-Ak=xmuiBcpZvF66kf-2anT3urKK2sn=va-sRxwp1w@mail.gmail.com>
next in thread | raw e-mail | index | archive | help
My motivation for writing this email stems from my recent work extending the linuxkpi to facilitate updating graphics support for FreeBSD. I've made reasonable progress limiting my changes to the linuxkpi so far. I have 3D HW acceleration working on an essentially unmodified 4.6-rc5 drm and i915 driver. The 4.6 i915 driver supports all of Haswell (3.8 doesn't), Broadwall, Skylake, and the, as of yet, unreleased Kaby Lake processors. Additionally, I am expecting a Thinkpad e565 (AMD based) to arrive on Friday which will allow me to bring up amdgpu (the Radeon driver for post 2013 AMD GPU hardware) this weekend. I find this exciting as it means that FreeBSD will be able to run on _all_ x86 graphics hardware. Unfortunately, most if not all ARM GPU drivers are closed source. This isn't quite everything though. There is a new "userptr" ioctl in graphics drivers that allows applications to safely register user memory with the driver. This works because if pages are evicted or the process goes away, the driver will be notified first. This notification takes place through the "mmu notifier" facility. MMU Notifiers are essentially just VM callbacks (or in FreeBSD parlance eventhandlers). They were first added to Linux to enable KVM to better interoperate with the native VM's resident set management: https://lwn.net/Articles/266320/ They're now also used by IB, IOMMUs, MPSS (Xeon Phi), and graphics drivers. The API is well enough documented in the header file: http://lxr.free-electrons.com/source/include/linux/mmu_notifier.h I don't have strong feelings for what these are called or their precise location. I do, however, need to be able to support roughly equivalent semantics when I register these eventhandlers from the notifer calls in the linuxkpi. I haven't worked on the VM in a year or two so don't know quite how to proceed. I'm happy to produce patches for review, but fear that they might be rejected out of hand for one reason or another. I'd like feedback on the approach itself and what I might do to make any proposed patches more palatable. Thanks in advance.
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAHM0Q_P1-Ak=xmuiBcpZvF66kf-2anT3urKK2sn=va-sRxwp1w>