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
We use the updates/ directory so your distribution's drivers are left intact.
sudo make install
This nukes our changes to updates/ so you can go back to using your distribution's supported drivers.
sudo make uninstall
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:
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
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:
- Firmwares for the radeon driver can be found in the linux-firmware git tree.
- For Nouveau, please click here for further information.
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.
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.
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.
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
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.
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.
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.