Dear RT Folks,

I'm pleased to announce the 3.0.65-rt92 stable release.


You can get this release via the git tree at:

  git://git.kernel.org/pub/scm/linux/kernel/git/rt/linux-stable-rt.git

  Head SHA1: f91338e92d1e0acb3f1efcb26725190d1feb9c4e


Or to build 3.0.65-rt92 directly, the following patches should be applied:

  http://www.kernel.org/pub/linux/kernel/v3.0/linux-3.0.tar.xz

  http://www.kernel.org/pub/linux/kernel/v3.0/patch-3.0.65.xz

  
http://www.kernel.org/pub/linux/kernel/projects/rt/3.0/patch-3.0.65-rt92.patch.xz


You can also build from 3.0.65-rt91 by applying the incremental patch:

  
http://www.kernel.org/pub/linux/kernel/projects/rt/3.0/incr/patch-3.0.65-rt91-rt92.patch.xz



Enjoy,

-- Steve


Changes from 3.0.65-rt91:

---

Steven Rostedt (2):
      acpi/rt: Convert acpi_gbl_hardware lock back to a raw_spinlock_t
      Linux 3.0.65-rt92

Thomas Gleixner (2):
      x86/32: Use kmap switch for non highmem as well
      rcutiny: Use simple waitqueue

----
 arch/x86/kernel/process_32.c    |    2 +-
 drivers/acpi/acpica/acglobal.h  |    2 +-
 drivers/acpi/acpica/hwregs.c    |    4 ++--
 drivers/acpi/acpica/hwxface.c   |    4 ++--
 drivers/acpi/acpica/utmutex.c   |    4 ++--
 include/acpi/platform/aclinux.h |   14 ++++++++++++++
 include/linux/sched.h           |    4 +++-
 kernel/rcutiny_plugin.h         |    9 +++++----
 localversion-rt                 |    2 +-
 9 files changed, 31 insertions(+), 14 deletions(-)
---------------------------
diff --git a/arch/x86/kernel/process_32.c b/arch/x86/kernel/process_32.c
index 95f2630..4a0d37f 100644
--- a/arch/x86/kernel/process_32.c
+++ b/arch/x86/kernel/process_32.c
@@ -336,7 +336,7 @@ __switch_to(struct task_struct *prev_p, struct task_struct 
*next_p)
                     task_thread_info(next_p)->flags & _TIF_WORK_CTXSW_NEXT))
                __switch_to_xtra(prev_p, next_p, tss);
 
-#if defined CONFIG_PREEMPT_RT_FULL && defined CONFIG_HIGHMEM
+#ifdef CONFIG_PREEMPT_RT_FULL
        /*
         * Save @prev's kmap_atomic stack
         */
diff --git a/drivers/acpi/acpica/acglobal.h b/drivers/acpi/acpica/acglobal.h
index 73863d8..3d208c8 100644
--- a/drivers/acpi/acpica/acglobal.h
+++ b/drivers/acpi/acpica/acglobal.h
@@ -230,7 +230,7 @@ ACPI_EXTERN u8 acpi_gbl_global_lock_pending;
  * interrupt level
  */
 ACPI_EXTERN acpi_spinlock acpi_gbl_gpe_lock;   /* For GPE data structs and 
registers */
-ACPI_EXTERN acpi_spinlock acpi_gbl_hardware_lock;      /* For ACPI H/W except 
GPE registers */
+ACPI_EXTERN acpi_raw_spinlock acpi_gbl_hardware_lock;  /* For ACPI H/W except 
GPE registers */
 
 /*****************************************************************************
  *
diff --git a/drivers/acpi/acpica/hwregs.c b/drivers/acpi/acpica/hwregs.c
index 55accb7..1da9213 100644
--- a/drivers/acpi/acpica/hwregs.c
+++ b/drivers/acpi/acpica/hwregs.c
@@ -263,7 +263,7 @@ acpi_status acpi_hw_clear_acpi_status(void)
                          ACPI_BITMASK_ALL_FIXED_STATUS,
                          ACPI_FORMAT_UINT64(acpi_gbl_xpm1a_status.address)));
 
-       lock_flags = acpi_os_acquire_lock(acpi_gbl_hardware_lock);
+       raw_spin_lock_irqsave(acpi_gbl_hardware_lock, lock_flags);
 
        /* Clear the fixed events in PM1 A/B */
 
@@ -278,7 +278,7 @@ acpi_status acpi_hw_clear_acpi_status(void)
        status = acpi_ev_walk_gpe_list(acpi_hw_clear_gpe_block, NULL);
 
       unlock_and_exit:
-       acpi_os_release_lock(acpi_gbl_hardware_lock, lock_flags);
+       raw_spin_unlock_irqrestore(acpi_gbl_hardware_lock, lock_flags);
        return_ACPI_STATUS(status);
 }
 
diff --git a/drivers/acpi/acpica/hwxface.c b/drivers/acpi/acpica/hwxface.c
index f75f81a..94a33ce 100644
--- a/drivers/acpi/acpica/hwxface.c
+++ b/drivers/acpi/acpica/hwxface.c
@@ -386,7 +386,7 @@ acpi_status acpi_write_bit_register(u32 register_id, u32 
value)
                return_ACPI_STATUS(AE_BAD_PARAMETER);
        }
 
-       lock_flags = acpi_os_acquire_lock(acpi_gbl_hardware_lock);
+       raw_spin_lock_irqsave(acpi_gbl_hardware_lock, lock_flags);
 
        /*
         * At this point, we know that the parent register is one of the
@@ -447,7 +447,7 @@ acpi_status acpi_write_bit_register(u32 register_id, u32 
value)
 
 unlock_and_exit:
 
-       acpi_os_release_lock(acpi_gbl_hardware_lock, lock_flags);
+       raw_spin_unlock_irqrestore(acpi_gbl_hardware_lock, lock_flags);
        return_ACPI_STATUS(status);
 }
 
diff --git a/drivers/acpi/acpica/utmutex.c b/drivers/acpi/acpica/utmutex.c
index 7d797e2..b611bf3 100644
--- a/drivers/acpi/acpica/utmutex.c
+++ b/drivers/acpi/acpica/utmutex.c
@@ -88,7 +88,7 @@ acpi_status acpi_ut_mutex_initialize(void)
                return_ACPI_STATUS (status);
        }
 
-       status = acpi_os_create_lock (&acpi_gbl_hardware_lock);
+       status = acpi_os_create_raw_lock (&acpi_gbl_hardware_lock);
        if (ACPI_FAILURE (status)) {
                return_ACPI_STATUS (status);
        }
@@ -135,7 +135,7 @@ void acpi_ut_mutex_terminate(void)
        /* Delete the spinlocks */
 
        acpi_os_delete_lock(acpi_gbl_gpe_lock);
-       acpi_os_delete_lock(acpi_gbl_hardware_lock);
+       acpi_os_delete_raw_lock(acpi_gbl_hardware_lock);
 
        /* Delete the reader/writer lock */
 
diff --git a/include/acpi/platform/aclinux.h b/include/acpi/platform/aclinux.h
index 2ce1be9..17d24de 100644
--- a/include/acpi/platform/aclinux.h
+++ b/include/acpi/platform/aclinux.h
@@ -74,6 +74,7 @@
 
 #define acpi_cache_t                        struct kmem_cache
 #define acpi_spinlock                       spinlock_t *
+#define acpi_raw_spinlock                   raw_spinlock_t *
 #define acpi_cpu_flags                      unsigned long
 
 #else /* !__KERNEL__ */
@@ -177,6 +178,19 @@ static inline void *acpi_os_acquire_object(acpi_cache_t * 
cache)
        lock ? AE_OK : AE_NO_MEMORY;                            \
 })
 
+#define acpi_os_create_raw_lock(__handle)                      \
+({                                                             \
+       raw_spinlock_t *lock = ACPI_ALLOCATE(sizeof(*lock));    \
+                                                               \
+       if (lock) {                                             \
+               *(__handle) = lock;                             \
+               raw_spin_lock_init(*(__handle));                \
+       }                                                       \
+       lock ? AE_OK : AE_NO_MEMORY;                            \
+})
+
+#define acpi_os_delete_raw_lock(__handle)      kfree(__handle)
+
 #endif /* __KERNEL__ */
 
 #endif /* __ACLINUX_H__ */
diff --git a/include/linux/sched.h b/include/linux/sched.h
index 8772834..285ab45 100644
--- a/include/linux/sched.h
+++ b/include/linux/sched.h
@@ -1602,9 +1602,11 @@ struct task_struct {
        struct rcu_head put_rcu;
        int softirq_nestcnt;
 #endif
-#if defined CONFIG_PREEMPT_RT_FULL && defined CONFIG_HIGHMEM
+#ifdef CONFIG_PREEMPT_RT_FULL
+# if defined CONFIG_HIGHMEM || defined CONFIG_X86_32
        int kmap_idx;
        pte_t kmap_pte[KM_TYPE_NR];
+# endif
 #endif
 
 #ifdef CONFIG_DEBUG_PREEMPT
diff --git a/kernel/rcutiny_plugin.h b/kernel/rcutiny_plugin.h
index f259c67..1cd0c6e 100644
--- a/kernel/rcutiny_plugin.h
+++ b/kernel/rcutiny_plugin.h
@@ -25,6 +25,7 @@
 #include <linux/kthread.h>
 #include <linux/debugfs.h>
 #include <linux/seq_file.h>
+#include <linux/wait-simple.h>
 
 #ifdef CONFIG_RCU_TRACE
 #define RCU_TRACE(stmt)        stmt
@@ -736,7 +737,7 @@ void synchronize_rcu(void)
 }
 EXPORT_SYMBOL_GPL(synchronize_rcu);
 
-static DECLARE_WAIT_QUEUE_HEAD(sync_rcu_preempt_exp_wq);
+static DEFINE_SWAIT_HEAD(sync_rcu_preempt_exp_wq);
 static unsigned long sync_rcu_preempt_exp_count;
 static DEFINE_MUTEX(sync_rcu_preempt_exp_mutex);
 
@@ -758,7 +759,7 @@ static int rcu_preempted_readers_exp(void)
  */
 static void rcu_report_exp_done(void)
 {
-       wake_up(&sync_rcu_preempt_exp_wq);
+       swait_wake(&sync_rcu_preempt_exp_wq);
 }
 
 /*
@@ -810,8 +811,8 @@ void synchronize_rcu_expedited(void)
        else {
                rcu_initiate_boost();
                local_irq_restore(flags);
-               wait_event(sync_rcu_preempt_exp_wq,
-                          !rcu_preempted_readers_exp());
+               swait_event(sync_rcu_preempt_exp_wq,
+                           !rcu_preempted_readers_exp());
        }
 
        /* Clean up and exit. */
diff --git a/localversion-rt b/localversion-rt
index e95e338..4905d52 100644
--- a/localversion-rt
+++ b/localversion-rt
@@ -1 +1 @@
--rt91
+-rt92


--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to