Replaces !4419 (closed) as I created a new branch to work with mainline rather than continue with the downstream kernel.
Requires !4494 (merged) first.