Skip site navigation (1)Skip section navigation (2)
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>