Login | Register For Free | Help
Search for: (Advanced)

Mailing List Archive: Gentoo: User

ATI-drivers 12.3 with Kernel 3.4

 

 

Gentoo user RSS feed   Index | Next | Previous | View Threaded


jarausch at igpm

Apr 16, 2012, 6:09 AM

Post #1 of 3 (1318 views)
Permalink
ATI-drivers 12.3 with Kernel 3.4

Hi,

does anybody know about patches for the ATI-drivers 12.3 to work with
git-sources 3.4_rc3 ?

Many thanks for a hint,
Helmut.


w41ter at gmail

Apr 16, 2012, 11:45 AM

Post #2 of 3 (1277 views)
Permalink
Re: ATI-drivers 12.3 with Kernel 3.4 [In reply to]

On 04/16/2012 06:09 AM, Helmut Jarausch wrote:
>
> Hi,
>
> does anybody know about patches for the ATI-drivers 12.3 to work with git-sources 3.4_rc3 ?

Well, "patch" is too formal for the ugly hack I use :)

After building your new kernel you should patch one kernel header file
before building ati-drivers (taken from lkml):


--- arch/x86/include/asm/compat.h.orig 2012-04-08 11:51:29.569528342 -0700
+++ arch/x86/include/asm/compat.h 2012-04-08 14:33:58.309972502 -0700
@@ -221,6 +221,7 @@
return (u32)(unsigned long)uptr;
}

+#ifdef CONFIG_x86_64
static inline void __user *arch_compat_alloc_user_space(long len)
{
compat_uptr_t sp;
@@ -234,6 +235,15 @@

return (void __user *)round_down(sp - len, 16);
}
+#else
+
+static inline void __user *arch_compat_alloc_user_space(long len)
+{
+ struct pt_regs *regs = task_pt_regs(current);
+ return (void __user *)regs->sp -len;
+}
+
+#endif

static inline bool is_x32_task(void)
{


Here's the ugly part: some names in compat.h were changed recently, and
I can't be bothered to do a proper fix, so I hacked this together instead:

--- common/lib/modules/fglrx/build_mod/firegl_public.c 2012-03-23 13:38:48.000000000 -0700
+++ /tmp/firegl_public.c 2012-04-16 10:45:41.426582953 -0700
@@ -4181,7 +4181,7 @@
{
unsigned int p;
KCL_DEBUG5(FN_FIREGL_KAS, "%d\n", level_init);
- for_each_cpu_mask(p, cpu_possible_map)
+ for (p=0; p<4; p++)
{
KCL_DEBUG1(FN_FIREGL_KAS,"Setting initial execution level for CPU # %d\n", p);
preempt_disable();


NOTE: my new machine has 4 cpus, numbered 0 through 3, and I hardcoded that
number into the ati code, above, instead of deciphering the new kernel headers.
Ugly, ugly, ugly. But it works perfectly :)

If you have two cpus you should change the p<4 to p<2, etc. And then wait
for a professional fix from ati :p


jarausch at igpm

Apr 17, 2012, 12:28 AM

Post #3 of 3 (1274 views)
Permalink
Re: Re: ATI-drivers 12.3 with Kernel 3.4 [In reply to]

Many thanks, Walt,

your patches work just fine for me.

Helmut.


On 04/16/2012 08:45:14 PM, walt wrote:
> On 04/16/2012 06:09 AM, Helmut Jarausch wrote:
> >
> > Hi,
> >
> > does anybody know about patches for the ATI-drivers 12.3 to work
> with git-sources 3.4_rc3 ?
>
> Well, "patch" is too formal for the ugly hack I use :)
>
> After building your new kernel you should patch one kernel header file
> before building ati-drivers (taken from lkml):
>
>
> --- arch/x86/include/asm/compat.h.orig 2012-04-08 11:51:29.569528342
> -0700
> +++ arch/x86/include/asm/compat.h 2012-04-08 14:33:58.309972502
> -0700
> @@ -221,6 +221,7 @@
> return (u32)(unsigned long)uptr;
> }
>
> +#ifdef CONFIG_x86_64
> static inline void __user *arch_compat_alloc_user_space(long len)
> {
> compat_uptr_t sp;
> @@ -234,6 +235,15 @@
>
> return (void __user *)round_down(sp - len, 16);
> }
> +#else
> +
> +static inline void __user *arch_compat_alloc_user_space(long len)
> +{
> + struct pt_regs *regs = task_pt_regs(current);
> + return (void __user *)regs->sp -len;
> +}
> +
> +#endif
>
> static inline bool is_x32_task(void)
> {
>
>
> Here's the ugly part: some names in compat.h were changed recently,
> and
> I can't be bothered to do a proper fix, so I hacked this together
> instead:
>
> --- common/lib/modules/fglrx/build_mod/firegl_public.c 2012-03-23
> 13:38:48.000000000 -0700
> +++ /tmp/firegl_public.c 2012-04-16 10:45:41.426582953 -0700
> @@ -4181,7 +4181,7 @@
> {
> unsigned int p;
> KCL_DEBUG5(FN_FIREGL_KAS, "%d\n", level_init);
> - for_each_cpu_mask(p, cpu_possible_map)
> + for (p=0; p<4; p++)
> {
> KCL_DEBUG1(FN_FIREGL_KAS,"Setting initial execution level
> for CPU # %d\n", p);
> preempt_disable();
>
>
> NOTE: my new machine has 4 cpus, numbered 0 through 3, and I
> hardcoded that
> number into the ati code, above, instead of deciphering the new
> kernel headers.
> Ugly, ugly, ugly. But it works perfectly :)
>
> If you have two cpus you should change the p<4 to p<2, etc. And then
> wait
> for a professional fix from ati :p
>
>
>
>
>

Gentoo user RSS feed   Index | Next | Previous | View Threaded
 
 


Interested in having your list archived? Contact Gossamer Threads
 
  Web Applications & Managed Hosting Powered by Gossamer Threads Inc.