NVIDIA joins in work on Tegra 2D graphics driver for Linux
NVIDIA has added infrastructure to the Linux kernel graphics drivers for Tegra SoCs (system on a chip) which supports the use of hardware-accelerated 2D on Tegra20 and Tegra30 chips. NVIDIA staff are working on integrating the extension, which is released under an open source licence, into the Linux kernel. At present, it does not look like this will be completed in time for Linux 3.8.
When the driver extension was first submitted to the Linux kernel developer mailing list, Dave Airlie, who maintains this class of kernel graphics drivers, noted that NVIDIA’s interface for using 2D acceleration fails to check commands received from userspace. Such an omission could allow attackers to use the graphics chip to modify arbitrary memory pages. However, carrying out checks that would prevent this requires CPU resources and therefore degrades performance. The NVIDIA developer responsible proposed allowing this check to be enabled or disabled in the kernel configuration options which have to be set when building the kernel. Airlie responded by noting that kernel developers don't generally make security checks optional and signed off with a smiley.
This is not the only area requiring further discussion before the prospect of merging the driver extension can start to be taken seriously. At present, for example, there is no driver which uses NVIDIA’s driver extension to implement 2D acceleration; this would normally be located in userspace. The kernel developers have previously rejected similar extensions for other drivers if no open source userspace drivers which use the interfaces existed for them. Some of the kernel code which NVIDIA has now released is old and has long been included in a public git repository containing open source kernel code.
The kernel driver which NVIDIA staff have extended, was not written by them but by Thierry Reding. It was unveiled by Reding, who uses an Avionic Design email address, in April. He recently released a revised version which is currently in Linux-next, where kernel developers collect changes for the next but one kernel version. It stands a good chance of being included in Linux 3.8. Reding recently started a discussion on the X.org developer mailing list on the best approach for an X driver based on the kernel driver for the Tegra SoC graphics core which is able to use the 2D acceleration feature that the NVIDIA extension is set to add.
In September, it was revealed that NVIDIA intends to add information on programming open source graphics drivers to its technical documentation. Its new, active role in driver development once again shows that NVIDIA is starting to pay more attention to open source drivers, although there is still no sign of extensions for 3D acceleration for open source drivers. There is also no indication that its increased commitment in the area of Tegra graphics drivers has filtered through to drivers for PC graphics chips. NVIDIA has long been much more open in the ARM field and in supporting motherboard chip sets and has been very active in developing open source drivers for Tegra SoCs.