diff options
| -rw-r--r-- | MAINTAINERS | 9 | ||||
| -rw-r--r-- | arch/i386/kernel/acpi/boot.c | 22 | ||||
| -rw-r--r-- | arch/i386/kernel/cpu/cpufreq/acpi-cpufreq.c | 1 | ||||
| -rw-r--r-- | drivers/acpi/ec.c | 2 | ||||
| -rw-r--r-- | drivers/acpi/events/evmisc.c | 1 | ||||
| -rw-r--r-- | drivers/acpi/executer/exmutex.c | 6 | ||||
| -rw-r--r-- | drivers/acpi/glue.c | 6 | ||||
| -rw-r--r-- | drivers/acpi/sleep/wakeup.c | 6 | ||||
| -rw-r--r-- | drivers/acpi/utilities/utdebug.c | 5 | ||||
| -rw-r--r-- | drivers/acpi/utilities/utmutex.c | 16 | ||||
| -rw-r--r-- | include/asm-i386/acpi.h | 26 | ||||
| -rw-r--r-- | include/asm-x86_64/acpi.h | 26 |
12 files changed, 60 insertions, 66 deletions
diff --git a/MAINTAINERS b/MAINTAINERS index dea5b2a6de0a..7f7c7db174cc 100644 --- a/MAINTAINERS +++ b/MAINTAINERS | |||
| @@ -1397,6 +1397,15 @@ W: http://www.ia64-linux.org/ | |||
| 1397 | T: git kernel.org:/pub/scm/linux/kernel/git/aegl/linux-2.6.git | 1397 | T: git kernel.org:/pub/scm/linux/kernel/git/aegl/linux-2.6.git |
| 1398 | S: Maintained | 1398 | S: Maintained |
| 1399 | 1399 | ||
| 1400 | IBM ACPI EXTRAS DRIVER | ||
| 1401 | P: Henrique de Moraes Holschuh | ||
| 1402 | M: ibm-acpi@hmh.eng.br | ||
| 1403 | L: ibm-acpi-devel@lists.sourceforge.net | ||
| 1404 | W: http://ibm-acpi.sourceforge.net | ||
| 1405 | W: http://thinkwiki.org/wiki/Ibm-acpi | ||
| 1406 | T: git repo.or.cz/linux-2.6/linux-acpi-2.6/ibm-acpi-2.6.git | ||
| 1407 | S: Maintained | ||
| 1408 | |||
| 1400 | SN-IA64 (Itanium) SUB-PLATFORM | 1409 | SN-IA64 (Itanium) SUB-PLATFORM |
| 1401 | P: Jes Sorensen | 1410 | P: Jes Sorensen |
| 1402 | M: jes@sgi.com | 1411 | M: jes@sgi.com |
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 | } | ||
diff --git a/arch/i386/kernel/cpu/cpufreq/acpi-cpufreq.c b/arch/i386/kernel/cpu/cpufreq/acpi-cpufreq.c index 18f4715c655d..39bc16bec5aa 100644 --- a/arch/i386/kernel/cpu/cpufreq/acpi-cpufreq.c +++ b/arch/i386/kernel/cpu/cpufreq/acpi-cpufreq.c | |||
| @@ -569,6 +569,7 @@ static int sw_any_bug_found(struct dmi_system_id *d) | |||
| 569 | return 0; | 569 | return 0; |
| 570 | } | 570 | } |
| 571 | 571 | ||
| 572 | #ifdef CONFIG_SMP | ||
| 572 | static struct dmi_system_id sw_any_bug_dmi_table[] = { | 573 | static struct dmi_system_id sw_any_bug_dmi_table[] = { |
| 573 | { | 574 | { |
| 574 | .callback = sw_any_bug_found, | 575 | .callback = sw_any_bug_found, |
diff --git a/drivers/acpi/ec.c b/drivers/acpi/ec.c index d713f769b72d..4a909bfb805c 100644 --- a/drivers/acpi/ec.c +++ b/drivers/acpi/ec.c | |||
| @@ -367,7 +367,7 @@ int ec_write(u8 addr, u8 val) | |||
| 367 | 367 | ||
| 368 | EXPORT_SYMBOL(ec_write); | 368 | EXPORT_SYMBOL(ec_write); |
| 369 | 369 | ||
| 370 | extern int ec_transaction(u8 command, | 370 | int ec_transaction(u8 command, |
| 371 | const u8 * wdata, unsigned wdata_len, | 371 | const u8 * wdata, unsigned wdata_len, |
| 372 | u8 * rdata, unsigned rdata_len) | 372 | u8 * rdata, unsigned rdata_len) |
| 373 | { | 373 | { |
diff --git a/drivers/acpi/events/evmisc.c b/drivers/acpi/events/evmisc.c index ee2a10bf9077..bf63edc6608d 100644 --- a/drivers/acpi/events/evmisc.c +++ b/drivers/acpi/events/evmisc.c | |||
| @@ -331,7 +331,6 @@ static void ACPI_SYSTEM_XFACE acpi_ev_global_lock_thread(void *context) | |||
| 331 | static u32 acpi_ev_global_lock_handler(void *context) | 331 | static u32 acpi_ev_global_lock_handler(void *context) |
| 332 | { | 332 | { |
| 333 | u8 acquired = FALSE; | 333 | u8 acquired = FALSE; |
| 334 | acpi_status status; | ||
| 335 | 334 | ||
| 336 | /* | 335 | /* |
| 337 | * Attempt to get the lock | 336 | * Attempt to get the lock |
diff --git a/drivers/acpi/executer/exmutex.c b/drivers/acpi/executer/exmutex.c index 3a39c2e8e104..bf90f04f2c60 100644 --- a/drivers/acpi/executer/exmutex.c +++ b/drivers/acpi/executer/exmutex.c | |||
| @@ -266,10 +266,10 @@ acpi_ex_release_mutex(union acpi_operand_object *obj_desc, | |||
| 266 | walk_state->thread->thread_id) | 266 | walk_state->thread->thread_id) |
| 267 | && (obj_desc->mutex.os_mutex != ACPI_GLOBAL_LOCK)) { | 267 | && (obj_desc->mutex.os_mutex != ACPI_GLOBAL_LOCK)) { |
| 268 | ACPI_ERROR((AE_INFO, | 268 | ACPI_ERROR((AE_INFO, |
| 269 | "Thread %X cannot release Mutex [%4.4s] acquired by thread %X", | 269 | "Thread %lX cannot release Mutex [%4.4s] acquired by thread %lX", |
| 270 | (u32) walk_state->thread->thread_id, | 270 | (unsigned long)walk_state->thread->thread_id, |
| 271 | acpi_ut_get_node_name(obj_desc->mutex.node), | 271 | acpi_ut_get_node_name(obj_desc->mutex.node), |
| 272 | (u32) obj_desc->mutex.owner_thread->thread_id)); | 272 | (unsigned long)obj_desc->mutex.owner_thread->thread_id)); |
| 273 | return_ACPI_STATUS(AE_AML_NOT_OWNER); | 273 | return_ACPI_STATUS(AE_AML_NOT_OWNER); |
| 274 | } | 274 | } |
| 275 | 275 | ||
diff --git a/drivers/acpi/glue.c b/drivers/acpi/glue.c index a2f46d587d55..4ac2f18e0da2 100644 --- a/drivers/acpi/glue.c +++ b/drivers/acpi/glue.c | |||
| @@ -189,8 +189,12 @@ find_pci_rootbridge(acpi_handle handle, u32 lvl, void *context, void **rv) | |||
| 189 | bus = tmp; | 189 | bus = tmp; |
| 190 | 190 | ||
| 191 | if (seg == find->seg && bus == find->bus) | 191 | if (seg == find->seg && bus == find->bus) |
| 192 | { | ||
| 192 | find->handle = handle; | 193 | find->handle = handle; |
| 193 | status = AE_OK; | 194 | status = AE_CTRL_TERMINATE; |
| 195 | } | ||
| 196 | else | ||
| 197 | status = AE_OK; | ||
| 194 | exit: | 198 | exit: |
| 195 | kfree(buffer.pointer); | 199 | kfree(buffer.pointer); |
| 196 | return status; | 200 | return status; |
diff --git a/drivers/acpi/sleep/wakeup.c b/drivers/acpi/sleep/wakeup.c index af1dbabaf0b1..fab8f2694f03 100644 --- a/drivers/acpi/sleep/wakeup.c +++ b/drivers/acpi/sleep/wakeup.c | |||
| @@ -183,11 +183,11 @@ late_initcall(acpi_wakeup_device_init); | |||
| 183 | #endif | 183 | #endif |
| 184 | 184 | ||
| 185 | /* | 185 | /* |
| 186 | * Disable all wakeup GPEs before power off. | 186 | * Disable all wakeup GPEs before entering requested sleep state. |
| 187 | * | 187 | * @sleep_state: ACPI state |
| 188 | * Since acpi_enter_sleep_state() will disable all | 188 | * Since acpi_enter_sleep_state() will disable all |
| 189 | * RUNTIME GPEs, we simply mark all GPES that | 189 | * RUNTIME GPEs, we simply mark all GPES that |
| 190 | * are not enabled for wakeup from S5 as RUNTIME. | 190 | * are not enabled for wakeup from requested state as RUNTIME. |
| 191 | */ | 191 | */ |
| 192 | void acpi_gpe_sleep_prepare(u32 sleep_state) | 192 | void acpi_gpe_sleep_prepare(u32 sleep_state) |
| 193 | { | 193 | { |
diff --git a/drivers/acpi/utilities/utdebug.c b/drivers/acpi/utilities/utdebug.c index bb1eaf9aa653..9e9054e155c1 100644 --- a/drivers/acpi/utilities/utdebug.c +++ b/drivers/acpi/utilities/utdebug.c | |||
| @@ -180,8 +180,9 @@ acpi_ut_debug_print(u32 requested_debug_level, | |||
| 180 | if (thread_id != acpi_gbl_prev_thread_id) { | 180 | if (thread_id != acpi_gbl_prev_thread_id) { |
| 181 | if (ACPI_LV_THREADS & acpi_dbg_level) { | 181 | if (ACPI_LV_THREADS & acpi_dbg_level) { |
| 182 | acpi_os_printf | 182 | acpi_os_printf |
| 183 | ("\n**** Context Switch from TID %X to TID %X ****\n\n", | 183 | ("\n**** Context Switch from TID %lX to TID %lX ****\n\n", |
| 184 | (u32) acpi_gbl_prev_thread_id, (u32) thread_id); | 184 | (unsigned long) acpi_gbl_prev_thread_id, |
| 185 | (unsigned long) thread_id); | ||
| 185 | } | 186 | } |
| 186 | 187 | ||
| 187 | acpi_gbl_prev_thread_id = thread_id; | 188 | acpi_gbl_prev_thread_id = thread_id; |
diff --git a/drivers/acpi/utilities/utmutex.c b/drivers/acpi/utilities/utmutex.c index c39062a047cd..180e73ceb6e2 100644 --- a/drivers/acpi/utilities/utmutex.c +++ b/drivers/acpi/utilities/utmutex.c | |||
| @@ -243,23 +243,24 @@ acpi_status acpi_ut_acquire_mutex(acpi_mutex_handle mutex_id) | |||
| 243 | #endif | 243 | #endif |
| 244 | 244 | ||
| 245 | ACPI_DEBUG_PRINT((ACPI_DB_MUTEX, | 245 | ACPI_DEBUG_PRINT((ACPI_DB_MUTEX, |
| 246 | "Thread %X attempting to acquire Mutex [%s]\n", | 246 | "Thread %lX attempting to acquire Mutex [%s]\n", |
| 247 | (u32) this_thread_id, acpi_ut_get_mutex_name(mutex_id))); | 247 | (unsigned long) this_thread_id, |
| 248 | acpi_ut_get_mutex_name(mutex_id))); | ||
| 248 | 249 | ||
| 249 | status = acpi_os_acquire_mutex(acpi_gbl_mutex_info[mutex_id].mutex, | 250 | status = acpi_os_acquire_mutex(acpi_gbl_mutex_info[mutex_id].mutex, |
| 250 | ACPI_WAIT_FOREVER); | 251 | ACPI_WAIT_FOREVER); |
| 251 | if (ACPI_SUCCESS(status)) { | 252 | if (ACPI_SUCCESS(status)) { |
| 252 | ACPI_DEBUG_PRINT((ACPI_DB_MUTEX, | 253 | ACPI_DEBUG_PRINT((ACPI_DB_MUTEX, |
| 253 | "Thread %X acquired Mutex [%s]\n", | 254 | "Thread %lX acquired Mutex [%s]\n", |
| 254 | (u32) this_thread_id, | 255 | (unsigned long) this_thread_id, |
| 255 | acpi_ut_get_mutex_name(mutex_id))); | 256 | acpi_ut_get_mutex_name(mutex_id))); |
| 256 | 257 | ||
| 257 | acpi_gbl_mutex_info[mutex_id].use_count++; | 258 | acpi_gbl_mutex_info[mutex_id].use_count++; |
| 258 | acpi_gbl_mutex_info[mutex_id].thread_id = this_thread_id; | 259 | acpi_gbl_mutex_info[mutex_id].thread_id = this_thread_id; |
| 259 | } else { | 260 | } else { |
| 260 | ACPI_EXCEPTION((AE_INFO, status, | 261 | ACPI_EXCEPTION((AE_INFO, status, |
| 261 | "Thread %X could not acquire Mutex [%X]", | 262 | "Thread %lX could not acquire Mutex [%X]", |
| 262 | (u32) this_thread_id, mutex_id)); | 263 | (unsigned long) this_thread_id, mutex_id)); |
| 263 | } | 264 | } |
| 264 | 265 | ||
| 265 | return (status); | 266 | return (status); |
| @@ -285,7 +286,8 @@ acpi_status acpi_ut_release_mutex(acpi_mutex_handle mutex_id) | |||
| 285 | 286 | ||
| 286 | this_thread_id = acpi_os_get_thread_id(); | 287 | this_thread_id = acpi_os_get_thread_id(); |
| 287 | ACPI_DEBUG_PRINT((ACPI_DB_MUTEX, | 288 | ACPI_DEBUG_PRINT((ACPI_DB_MUTEX, |
| 288 | "Thread %X releasing Mutex [%s]\n", (u32) this_thread_id, | 289 | "Thread %lX releasing Mutex [%s]\n", |
| 290 | (unsigned long) this_thread_id, | ||
| 289 | acpi_ut_get_mutex_name(mutex_id))); | 291 | acpi_ut_get_mutex_name(mutex_id))); |
| 290 | 292 | ||
| 291 | if (mutex_id > ACPI_MAX_MUTEX) { | 293 | if (mutex_id > ACPI_MAX_MUTEX) { |
diff --git a/include/asm-i386/acpi.h b/include/asm-i386/acpi.h index c80b3a94511a..7cfad93edf10 100644 --- a/include/asm-i386/acpi.h +++ b/include/asm-i386/acpi.h | |||
| @@ -56,30 +56,8 @@ | |||
| 56 | #define ACPI_ENABLE_IRQS() local_irq_enable() | 56 | #define ACPI_ENABLE_IRQS() local_irq_enable() |
| 57 | #define ACPI_FLUSH_CPU_CACHE() wbinvd() | 57 | #define ACPI_FLUSH_CPU_CACHE() wbinvd() |
| 58 | 58 | ||
| 59 | 59 | int __acpi_acquire_global_lock(unsigned int *lock); | |
| 60 | static inline int | 60 | int __acpi_release_global_lock(unsigned int *lock); |
| 61 | __acpi_acquire_global_lock (unsigned int *lock) | ||
| 62 | { | ||
| 63 | unsigned int old, new, val; | ||
| 64 | do { | ||
| 65 | old = *lock; | ||
| 66 | new = (((old & ~0x3) + 2) + ((old >> 1) & 0x1)); | ||
| 67 | val = cmpxchg(lock, old, new); | ||
| 68 | } while (unlikely (val != old)); | ||
| 69 | return (new < 3) ? -1 : 0; | ||
| 70 | } | ||
| 71 | |||
| 72 | static inline int | ||
| 73 | __acpi_release_global_lock (unsigned int *lock) | ||
| 74 | { | ||
| 75 | unsigned int old, new, val; | ||
| 76 | do { | ||
| 77 | old = *lock; | ||
| 78 | new = old & ~0x3; | ||
| 79 | val = cmpxchg(lock, old, new); | ||
| 80 | } while (unlikely (val != old)); | ||
| 81 | return old & 0x1; | ||
| 82 | } | ||
| 83 | 61 | ||
| 84 | #define ACPI_ACQUIRE_GLOBAL_LOCK(GLptr, Acq) \ | 62 | #define ACPI_ACQUIRE_GLOBAL_LOCK(GLptr, Acq) \ |
| 85 | ((Acq) = __acpi_acquire_global_lock((unsigned int *) GLptr)) | 63 | ((Acq) = __acpi_acquire_global_lock((unsigned int *) GLptr)) |
diff --git a/include/asm-x86_64/acpi.h b/include/asm-x86_64/acpi.h index 9d1916e59c04..6b6fc6f8be7e 100644 --- a/include/asm-x86_64/acpi.h +++ b/include/asm-x86_64/acpi.h | |||
| @@ -54,30 +54,8 @@ | |||
| 54 | #define ACPI_ENABLE_IRQS() local_irq_enable() | 54 | #define ACPI_ENABLE_IRQS() local_irq_enable() |
| 55 | #define ACPI_FLUSH_CPU_CACHE() wbinvd() | 55 | #define ACPI_FLUSH_CPU_CACHE() wbinvd() |
| 56 | 56 | ||
| 57 | 57 | int __acpi_acquire_global_lock(unsigned int *lock); | |
| 58 | static inline int | 58 | int __acpi_release_global_lock(unsigned int *lock); |
| 59 | __acpi_acquire_global_lock (unsigned int *lock) | ||
| 60 | { | ||
| 61 | unsigned int old, new, val; | ||
| 62 | do { | ||
| 63 | old = *lock; | ||
| 64 | new = (((old & ~0x3) + 2) + ((old >> 1) & 0x1)); | ||
| 65 | val = cmpxchg(lock, old, new); | ||
| 66 | } while (unlikely (val != old)); | ||
| 67 | return (new < 3) ? -1 : 0; | ||
| 68 | } | ||
| 69 | |||
| 70 | static inline int | ||
| 71 | __acpi_release_global_lock (unsigned int *lock) | ||
| 72 | { | ||
| 73 | unsigned int old, new, val; | ||
| 74 | do { | ||
| 75 | old = *lock; | ||
| 76 | new = old & ~0x3; | ||
| 77 | val = cmpxchg(lock, old, new); | ||
| 78 | } while (unlikely (val != old)); | ||
| 79 | return old & 0x1; | ||
| 80 | } | ||
| 81 | 59 | ||
| 82 | #define ACPI_ACQUIRE_GLOBAL_LOCK(GLptr, Acq) \ | 60 | #define ACPI_ACQUIRE_GLOBAL_LOCK(GLptr, Acq) \ |
| 83 | ((Acq) = __acpi_acquire_global_lock((unsigned int *) GLptr)) | 61 | ((Acq) = __acpi_acquire_global_lock((unsigned int *) GLptr)) |
