compat-drm

DRM compatibility tree

Download .zip Download .tar.gz View on GitHub

Linux DRM compatibility tree

This is a Linux drm compatibility package which provides the latest Linux drm subsystem and driver enhancements for kernels 3.0 and above (for now).

With a local git repository you can update the compatibility package yourself. For more information on how to do this please refer the Developers section below.

Building, and installing

Build: compile the latest linux drm subsystem and drivers

make

Install:

We use the updates/ directory so your distribution's drivers are left intact.

sudo make install

Uninstall:

This nukes our changes to updates/ so you can go back to using your distribution's supported drivers.

sudo make uninstall

Load:

Now reboot for seeing the new drivers in action.

Building for external kernels

If you have a kernel you do not have installed but yet want to build the compat-drm tree for it you can use this syntax (Adjust the paths according to your system):

make KLIB=/usr/src/linux-3.3.7 KLIB_BUILD=/usr/src/linux-3.3.7

If you have a kernel installed, which is not your currently running kernel (e.g. via distro updates; plus its corresponding kernel-dev package), you can use this syntax:

make  KLIB=/lib/modules/3.4.0-1.fc17.x86_64

and to install to your system's root path for the non-running kernel:

make  KLIB=/lib/modules/3.4.0-1.fc17.x86_64
    KMODPATH_ARG='INSTALL_MOD_PATH=' install

Drivers

This is the list of drivers the package currently provides. It adds all new drivers or drivers which keep being updated which you might be interested in. Below you can find a list of currently enabled drivers:

  • ast
  • cirrus
  • gma500
  • i810
  • i915
  • mgag200
  • nouveau
  • radeon
  • via
  • vmwgfx

Firmwares

  • Firmwares for the radeon driver can be found in the linux-firmware git tree.
  • For Nouveau, please click here for further information.

Why?

For users or developers stuck on older kernels that want to help test or patch drm work. Additionally if you're on a recent kernel this lets you get the latest and greatest linux-next git work without much effort. This may mean new drivers for some users.

Bugs

If you've found a bug please report it to the LF Driver Backport mailing list

Make sure that the relevant compat trees are up-to-date.

If your bug is compatibility-related then we should still try to fix it within the compat.[ch] work.

License

This work is a subset of the Linux kernel as such we keep the kernel's Copyright practice. Some files have their own copyright and in those cases the license is mentioned in the file. All additional work made to building this package is licensed under the GPLv2.

Developers

Compatibility work goes into compat/compat.[ch]. If using those files do not suffice additional actual code changes can go into patches/*.patch.

An extended and more up to date version can be found in here.

This section deals with development details of compat-drm and the other trees it uses. If you want to make your own compat-drm tarballs, or if you see something busted with compat-drm or just want to add something new or an enhancement this is the guide for you.

Git trees you will need

compat-drm backports the DRM subsystem and a bunch of DRM drivers down to older kernels. To be able to synchronize backporting the latest and greatest the linux-next.git tree is used as its main source for kernel updates. General Linux kernel compatibility is addressed through a general kernel compatibility tree, compat.git. compat-drm then has its own tree for specific drm compatibility. You will then need to checkout three trees to start hacking on compat-drm:

git://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
git://github.com/mcgrof/compat.git
git://github.com/ozancaglayan/compat-drm.git

linux-next.git

The linux-next.git tree brings all subsystems being worked on for the next kernel release into one tree. So if the current rc kernel is 2.6.33-rc5, this means linux-next will have what people today are working on for the 2.6.34 kernel release.

compat.git

The compat git tree is a general kernel compatibility layer which can be shared amongst different compatibility projects, or drivers. compat-drm is just one of the kernel compatibility projects using compat.git. compat.git builds a general compatibility module, compat, and any additional modules to let you get new general kernel updates from future kernels on your old kernels.

compat-drm.git

Anything that is not general kernel compatibility but instead specific to drm goes into compat-drm.git. After you've cloned all three trees, linux-next.git, compat.git and compat-drm.git you need to change into the compat-drm directory and tell compat-drm where you linux-next and compat.git trees are. You do this with environment variables GIT_TREE and GIT_COMPAT_TREE. You can do for example:

export GIT_TREE=/home/user/linux-next.git GIT_COMPAT_TREE=/home/user/compat.git

Then you can update your local sources based on these linux-next.git and compat.git trees:

  • scripts/admin-clean.sh - Cleans the compat-drm tree
  • scripts/admin-update.sh - Updates compat-drm with your git tree
  • scripts/admin-refresh.sh - Does the above two

Adding new drivers

Most new drivers are enabled for compilation. If you see a driver you would like enabled try it into the mix, test them and if they work enable them and send the respective patches.