diff options
author | Linus Torvalds <torvalds@woody.osdl.org> | 2006-12-22 21:46:56 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.osdl.org> | 2006-12-22 21:46:56 -0500 |
commit | 18ed1c051317ac3a685120cead2adb192b802347 (patch) | |
tree | c08a9147119a6cb69114166c7107f6b0bba6e2ab /arch/i386 | |
parent | dab6df63086762629936e8b89a5984bae39724f6 (diff) | |
parent | 36bcbec7ce21e2e8b3143b11a05747330abeca70 (diff) |
Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6
* 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6: (68 commits)
ACPI: replace kmalloc+memset with kzalloc
ACPI: Add support for acpi_load_table/acpi_unload_table_id
fbdev: update after backlight argument change
ACPI: video: Add dev argument for backlight_device_register
ACPI: Implement acpi_video_get_next_level()
ACPI: Kconfig - depend on PM rather than selecting it
ACPI: fix NULL check in drivers/acpi/osl.c
ACPI: make drivers/acpi/ec.c:ec_ecdt static
ACPI: prevent processor module from loading on failures
ACPI: fix single linked list manipulation
ACPI: ibm_acpi: allow clean removal
ACPI: fix git automerge failure
ACPI: ibm_acpi: respond to workqueue update
ACPI: dock: add uevent to indicate change in device status
ACPI: ec: Lindent once again
ACPI: ec: Change #define to enums there possible.
ACPI: ec: Style changes.
ACPI: ec: Acquire Global Lock under EC mutex.
ACPI: ec: Drop udelay() from poll mode. Loop by reading status field instead.
ACPI: ec: Rename gpe_bit to gpe
...
Diffstat (limited to 'arch/i386')
-rw-r--r-- | arch/i386/kernel/acpi/boot.c | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/arch/i386/kernel/acpi/boot.c b/arch/i386/kernel/acpi/boot.c index c8f96cff07c6..094300b3a81f 100644 --- a/arch/i386/kernel/acpi/boot.c +++ b/arch/i386/kernel/acpi/boot.c | |||
@@ -1327,3 +1327,25 @@ static int __init setup_acpi_sci(char *s) | |||
1327 | return 0; | 1327 | return 0; |
1328 | } | 1328 | } |
1329 | early_param("acpi_sci", setup_acpi_sci); | 1329 | early_param("acpi_sci", setup_acpi_sci); |
1330 | |||
1331 | int __acpi_acquire_global_lock(unsigned int *lock) | ||
1332 | { | ||
1333 | unsigned int old, new, val; | ||
1334 | do { | ||
1335 | old = *lock; | ||
1336 | new = (((old & ~0x3) + 2) + ((old >> 1) & 0x1)); | ||
1337 | val = cmpxchg(lock, old, new); | ||
1338 | } while (unlikely (val != old)); | ||
1339 | return (new < 3) ? -1 : 0; | ||
1340 | } | ||
1341 | |||
1342 | int __acpi_release_global_lock(unsigned int *lock) | ||
1343 | { | ||
1344 | unsigned int old, new, val; | ||
1345 | do { | ||
1346 | old = *lock; | ||
1347 | new = old & ~0x3; | ||
1348 | val = cmpxchg(lock, old, new); | ||
1349 | } while (unlikely (val != old)); | ||
1350 | return old & 0x1; | ||
1351 | } | ||