2006-12-04 18:03:46

by Art Haas

[permalink] [raw]
Subject: [PATCH] Remove 'volatile' from spinlocks

Hi.

Months ago two patches were posted by Ingo Molnar that removed
the 'volatile' keyword from the 'raw_spinlock_t' and 'raw_rwlock_t'
structures in the i386 and x86-64 ports. The link below takes you to
the initial (?) posting of the patches:

http://marc.theaimsgroup.com/?l=linux-kernel&m=115217423929806&w=2

I've been build and running SMP kernels on a dual PIII machine with
the i386 version of the patch since then and the kernels have worked
well. Perhaps the patch(es) can make it into the 2.6.20 kernel?

The i386 version of the patch is below, the x86-64 patch is identical.

Art Haas

diff --git a/include/asm-i386/spinlock_types.h b/include/asm-i386/spinlock_types.h
index 59efe84..4da9345 100644
--- a/include/asm-i386/spinlock_types.h
+++ b/include/asm-i386/spinlock_types.h
@@ -6,13 +6,13 @@ # error "please don't include this file
#endif

typedef struct {
- volatile unsigned int slock;
+ unsigned int slock;
} raw_spinlock_t;

#define __RAW_SPIN_LOCK_UNLOCKED { 1 }

typedef struct {
- volatile unsigned int lock;
+ unsigned int lock;
} raw_rwlock_t;

#define __RAW_RW_LOCK_UNLOCKED { RW_LOCK_BIAS }

--
Man once surrendering his reason, has no remaining guard against absurdities
the most monstrous, and like a ship without rudder, is the sport of every wind.

-Thomas Jefferson to James Smith, 1822