This is a one-liner fix to the x11-drivers/ati-drivers-8.501 ebuild to allow the driver to be compiled against a kernel with realtime RCU preemption. Diff follows: --- /usr/portage/x11-drivers/ati-drivers/ati-drivers-8.501.ebuild 2008-07-19 17:19:24.102859737 -0400 +++ /usr/portage/x11-drivers/ati-drivers/ati-drivers-8.501-r1.ebuild 2008-07-19 16:46:01.345860800 -0400 @@ -75,7 +75,7 @@ fi if kernel_is ge 2 6 25 && linux_chkconfig_present PREEMPT_RCU; then - die "${P} is not compatible RCU Preemption, please disable it" + sed '/EXPORT_SYMBOL/s/GPL//g' -i /usr/src/linux/kernel/rcupreempt.c fi if kernel_is ge 2 6 24 && ! linux_chkconfig_present PCI_LEGACY; then Reproducible: Always Steps to Reproduce: Original bug: 1) Make sure /usr/src/linux is rt-patched and rt-enabled 2) run "emerge -1 x11-drivers/ati-drivers" Actual Results: ati-drivers-8.501: die message: "ati-drivers-8.501 is not compatible RCU Preemption, please disable it" < ati-drivers-8.501: compile failure: __rcu_read_(un)lock is GPL-only, some incompatibility (I forgot the details after un-GPLONLY-ing __rcu_read_lock and __rcu_ead_unclock) only required for -rt kernels >= 2.6.25
Created attachment 160885 [details] fixed ebuild
Created attachment 160893 [details] fixed ebuild (version 2) The original ebuild that I uploaded had one missing "_" in the //s///, which caused kernels to miscompile (D'oh!). I was unable to detect this since I patched kernel/rcupreempt.c by hand. In short, original -r1 ebuild i.e., attachment 1 [details], breaks unpatched rt- kernels.
Created attachment 160894 [details] fixed ebuild (version 2)
Rebised diff: --- /usr/portage/x11-drivers/ati-drivers/ati-drivers-8.501.ebuild 2008-07-19 17:19:24.102859737 -0400 +++ /usr/portage/x11-drivers/ati-drivers/ati-drivers-8.501-r1.ebuild 2008-07-19 16:46:01.345860800 -0400 @@ -75,7 +75,7 @@ fi if kernel_is ge 2 6 25 && linux_chkconfig_present PREEMPT_RCU; then - die "${P} is not compatible RCU Preemption, please disable it" + sed '/EXPORT_SYMBOL/s/_GPL//g' -i /usr/src/linux/kernel/rcupreempt.c fi if kernel_is ge 2 6 24 && ! linux_chkconfig_present PCI_LEGACY; then
fix is kinda buggy more help would be nice :)
*** Bug 232385 has been marked as a duplicate of this bug. ***
The x11 herd does not maintain binary blobs that call themselves drivers
Upstream will workaround in other ways, what you want to do is fine for single users but illegal otherwise.