Comment 4 for bug 560571

Revision history for this message
fs (masta2) wrote :

Hi there!

A little bit late!
SOLUTION:

--- firegl_public.c.modified 2017-06-09 16:41:29.334991812 +0200
+++ firegl_public.c 2017-06-08 18:25:25.835817920 +0200
@@ -4273,8 +4273,8 @@
 {
     unsigned long orig_level;

- orig_level = __get_cpu_var(kasExecutionLevel);
- __get_cpu_var(kasExecutionLevel) = level;
+ orig_level = __raw_get_cpu_var(kasExecutionLevel);
+ __raw_get_cpu_var(kasExecutionLevel) = level;

     return orig_level;
 }
@@ -4286,7 +4286,7 @@
  */
 static unsigned long kas_GetExecutionLevel(void)
 {
- return __get_cpu_var(kasExecutionLevel);
+ return __raw_get_cpu_var(kasExecutionLevel);
 }

 /** \brief Type definition for kas_spin_lock() parameter */
@@ -4440,7 +4440,7 @@
     KCL_DEBUG5(FN_FIREGL_KAS,"0x%08X, 0x%08X\n", ih_routine, ih_context);

     //Prevent simultaneous entry on some SMP systems.
- if (test_and_set_bit(0, (void *)&(kasContext.in_interrupts[smp_processor_id()])))
+ if (test_and_set_bit(0, (void *)&(kasContext.in_interrupts[raw_smp_processor_id()])))
     {
         KCL_DEBUG1(FN_FIREGL_KAS, "The processor is handling the interrupt\n");
         return IRQ_NONE;
@@ -4455,7 +4455,7 @@
     kasSetExecutionLevel(orig_level);
     spin_unlock(&kasContext.lock_ih);

- clear_bit(0, (void *)&(kasContext.in_interrupts[smp_processor_id()]));
+ clear_bit(0, (void *)&(kasContext.in_interrupts[raw_smp_processor_id()]));
     KCL_DEBUG5(FN_FIREGL_KAS,"%d\n", ret);

     return ret;

bye
masta