From bc86d66ef25de0489f9ba31a72ab4130a1f4f6e9 Mon Sep 17 00:00:00 2001 From: Paul Mackerras Date: Fri, 14 Dec 2007 16:46:50 +1100 Subject: [PATCH] --- yaml --- r: 74864 b: refs/heads/master c: 280bb6b1f76aaec29a721b1025ec5d69afba57e8 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/arch/powerpc/configs/ps3_defconfig | 2 +- trunk/arch/powerpc/platforms/iseries/lpevents.c | 17 +++++++++++++++-- trunk/arch/powerpc/platforms/ps3/Kconfig | 2 +- 4 files changed, 18 insertions(+), 5 deletions(-) diff --git a/[refs] b/[refs] index 17f9ec6235d9..1a3b67cedb47 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: c89686210542f6946e48a907772a356b9fce03f0 +refs/heads/master: 280bb6b1f76aaec29a721b1025ec5d69afba57e8 diff --git a/trunk/arch/powerpc/configs/ps3_defconfig b/trunk/arch/powerpc/configs/ps3_defconfig index 5bd547ecd60a..0b5469fb6e0f 100644 --- a/trunk/arch/powerpc/configs/ps3_defconfig +++ b/trunk/arch/powerpc/configs/ps3_defconfig @@ -157,7 +157,7 @@ CONFIG_PS3_HTAB_SIZE=20 CONFIG_PS3_USE_LPAR_ADDR=y CONFIG_PS3_VUART=y CONFIG_PS3_PS3AV=y -CONFIG_PS3_SYS_MANAGER=m +CONFIG_PS3_SYS_MANAGER=y CONFIG_PS3_STORAGE=y CONFIG_PS3_DISK=y CONFIG_PS3_ROM=y diff --git a/trunk/arch/powerpc/platforms/iseries/lpevents.c b/trunk/arch/powerpc/platforms/iseries/lpevents.c index 34bdbbe3ce59..275f49449839 100644 --- a/trunk/arch/powerpc/platforms/iseries/lpevents.c +++ b/trunk/arch/powerpc/platforms/iseries/lpevents.c @@ -121,6 +121,7 @@ void process_hvlpevents(void) { struct HvLpEvent * event; + restart: /* If we have recursed, just return */ if (!spin_trylock(&hvlpevent_queue.hq_lock)) return; @@ -146,8 +147,20 @@ void process_hvlpevents(void) if (event->xType < HvLpEvent_Type_NumTypes && lpEventHandler[event->xType]) lpEventHandler[event->xType](event); - else - printk(KERN_INFO "Unexpected Lp Event type=%d\n", event->xType ); + else { + u8 type = event->xType; + + /* + * Don't printk in the spinlock as printk + * may require ack events form the HV to send + * any characters there. + */ + hvlpevent_clear_valid(event); + spin_unlock(&hvlpevent_queue.hq_lock); + printk(KERN_INFO + "Unexpected Lp Event type=%d\n", type); + goto restart; + } hvlpevent_clear_valid(event); } else if (hvlpevent_queue.hq_overflow_pending) diff --git a/trunk/arch/powerpc/platforms/ps3/Kconfig b/trunk/arch/powerpc/platforms/ps3/Kconfig index 67144d1d1405..298f1c9679fb 100644 --- a/trunk/arch/powerpc/platforms/ps3/Kconfig +++ b/trunk/arch/powerpc/platforms/ps3/Kconfig @@ -91,7 +91,7 @@ config PS3_SYS_MANAGER depends on PPC_PS3 tristate "PS3 System Manager driver" if PS3_ADVANCED select PS3_VUART - default m + default y help Include support for the PS3 System Manager.