diff -ru usr/src/nv/nv-linux.h usr/src/nv.1182399/nv-linux.h --- usr/src/nv/nv-linux.h 2004-11-03 22:53:00.000000000 +0100 +++ usr/src/nv.1182399/nv-linux.h 2004-12-21 18:58:41.000000000 +0100 @@ -155,6 +155,10 @@ #endif #endif /* defined(NVCPU_X86) */ +#ifndef get_cpu +#define get_cpu() smp_processor_id() +#define put_cpu() +#endif #if !defined (list_for_each) #define list_for_each(pos, head) \ diff -ru usr/src/nv/nv.c usr/src/nv.1182399/nv.c --- usr/src/nv/nv.c 2004-11-03 22:53:00.000000000 +0100 +++ usr/src/nv.1182399/nv.c 2004-12-21 18:58:55.000000000 +0100 @@ -2769,21 +2769,13 @@ } -/* avoid compiler warnings on UP kernels, - * when spinlock macros are defined away - */ -#define NO_COMPILER_WARNINGS(nvl) \ - if (nvl == NULL) return - - static void nv_lock_init_locks ( nv_state_t *nv ) { - nv_linux_state_t *nvl = NV_GET_NVL_FROM_NV_STATE(nv); - - NO_COMPILER_WARNINGS(nvl); + nv_linux_state_t *nvl; + nvl = NV_GET_NVL_FROM_NV_STATE(nv); spin_lock_init(&nvl->rm_lock); @@ -2799,28 +2791,33 @@ nv_state_t *nv ) { - nv_linux_state_t *nvl = NV_GET_NVL_FROM_NV_STATE(nv); - NO_COMPILER_WARNINGS(nvl); + nv_linux_state_t *nvl; + int cpu; + + nvl = NV_GET_NVL_FROM_NV_STATE(nv); + cpu = get_cpu(); - if (nvl->rm_lock_cpu == smp_processor_id()) + if (nvl->rm_lock_cpu == cpu) { nvl->rm_lock_count++; + put_cpu(); return; } + put_cpu(); spin_unlock_wait(&nvl->rm_lock); spin_lock_irq(&nvl->rm_lock); - nvl->rm_lock_cpu = smp_processor_id(); - nvl->rm_lock_count = 1; + nvl->rm_lock_cpu = smp_processor_id(); + nvl->rm_lock_count = 1; } void NV_API_CALL nv_unlock_rm( nv_state_t *nv ) { - nv_linux_state_t *nvl = NV_GET_NVL_FROM_NV_STATE(nv); - NO_COMPILER_WARNINGS(nvl); + nv_linux_state_t *nvl; + nvl = NV_GET_NVL_FROM_NV_STATE(nv); if (--nvl->rm_lock_count) return; diff -ru usr/src/nv/os-interface.c usr/src/nv.1182399/os-interface.c --- usr/src/nv/os-interface.c 2004-11-03 22:53:00.000000000 +0100 +++ usr/src/nv.1182399/os-interface.c 2004-12-21 18:58:47.000000000 +0100 @@ -732,10 +732,17 @@ // inline void NV_API_CALL out_string(const char *str) { +#if DEBUG static int was_newline = 0; - if (was_newline) printk("%d: %s", smp_processor_id(), str); - else printk("%s", str); + if (NV_NUM_CPUS() > 1 && was_newline) + { + printk("%d: %s", get_cpu(), str); + put_cpu(); + } + else +#endif + printk("%s", str); #if DEBUG if (NV_NUM_CPUS() > 1)