AMD has just published a massive patch-set for the Linux kernel that finally implements a HSA (Heterogeneous System Architecture) in open-source. The set of 83 patches implement a Linux HSA driver for Radeon family GPUs and serves too as a sample driver for other HSA-compatible devices. This big driver in part is what well known Phoronix contributor John Bridgman
has been working on at AMD.
Heterogeneous System Architecture has been talked up for a while now by AMD as well as ARM vendors and now finally for open-source enthusiasts we can finally start seeing the advantages of the CPU and GPU on the same bus. Oded Gabbay of AMD announced
the big HSA kernel patch-set:
This patch set implements a Heterogeneous System Architecture (HSA) driver for radeon-family GPUs.
HSA allows different processor types (CPUs, DSPs, GPUs, etc..) to share system resources more effectively via HW features including shared pageable memory, userspace-accessible work queues, and platform-level atomics. In addition to the memory protection mechanisms in GPUVM and IOMMUv2, the Sea Islands family of GPUs also performs HW-level validation of commands passed in through the queues (aka rings).
The code in this patch set is intended to serve both as a sample driver for other HSA-compatible hardware devices and as a production driver for radeon-family processors. The code is architected to support multiple CPUs each with connected GPUs, although the current implementation focuses on a single Kaveri/Berlin APU, and works alongside the existing radeon kernel graphics driver (kgd).
AMD GPUs designed for use with HSA (Sea Islands and up) share some hardware functionality between HSA compute and regular gfx/compute (memory, interrupts, registers), while other functionality has been added specifically for HSA compute (hw scheduler for virtualized compute rings). All shared hardware is owned by the radeon graphics driver, and an interface between kfd and kgd allows the kfd to make use of those shared resources, while HSA-specific functionality is managed directly by kfd by submitting packets into an HSA-specific command queue (the "HIQ").
John Bridgman, the AMD employee that's well known to Phoronix readers especially those that have followed AMD's open-source efforts over the years as dominantly covered by Phoronix, has been working in the AMD HSA area as of late and partially responsible for this new driver. Among the developers coding this HSA Radeon support for hte Linux kernel include Alexey Skidanov, Andrew Lewycky, Ben Goz, Evgeny Pinchuk, Michael Varga, Oded Gabbay, and Yair Shachar. The HSA Radeon driver amounts to nearly 10,000 lines of new kernel code.
Hopefully these patches will be quickly reviewed and will be able to enter at least the staging area for the Linux 3.17 kernel
given there's still a few weeks left before the debut of Linux 3.16.