Merge tag 'powerpc-4.4-5' of git://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux

Pull powerpc fixes from Michael Ellerman:
- Partial revert of "powerpc: Individual System V IPC system calls"
- pr_warn_once on unsupported OPAL_MSG type from Stewart
- Fix deadlock in opal-irqchip introduced by "Fix double endian
conversion" from Alistair

* tag 'powerpc-4.4-5' of git://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux:
powerpc/opal-irqchip: Fix deadlock introduced by "Fix double endian conversion"
powerpc/powernv: pr_warn_once on unsupported OPAL_MSG type
Partial revert of "powerpc: Individual System V IPC system calls"

Changed files
+26 -26
arch
powerpc
include
asm
uapi
asm
platforms
+12 -12
arch/powerpc/include/asm/systbl.h
··· 370 370 PPC64ONLY(switch_endian) 371 371 SYSCALL_SPU(userfaultfd) 372 372 SYSCALL_SPU(membarrier) 373 - SYSCALL(semop) 374 - SYSCALL(semget) 375 - COMPAT_SYS(semctl) 376 - COMPAT_SYS(semtimedop) 377 - COMPAT_SYS(msgsnd) 378 - COMPAT_SYS(msgrcv) 379 - SYSCALL(msgget) 380 - COMPAT_SYS(msgctl) 381 - COMPAT_SYS(shmat) 382 - SYSCALL(shmdt) 383 - SYSCALL(shmget) 384 - COMPAT_SYS(shmctl) 373 + SYSCALL(ni_syscall) 374 + SYSCALL(ni_syscall) 375 + SYSCALL(ni_syscall) 376 + SYSCALL(ni_syscall) 377 + SYSCALL(ni_syscall) 378 + SYSCALL(ni_syscall) 379 + SYSCALL(ni_syscall) 380 + SYSCALL(ni_syscall) 381 + SYSCALL(ni_syscall) 382 + SYSCALL(ni_syscall) 383 + SYSCALL(ni_syscall) 384 + SYSCALL(ni_syscall) 385 385 SYSCALL(mlock2)
-12
arch/powerpc/include/uapi/asm/unistd.h
··· 388 388 #define __NR_switch_endian 363 389 389 #define __NR_userfaultfd 364 390 390 #define __NR_membarrier 365 391 - #define __NR_semop 366 392 - #define __NR_semget 367 393 - #define __NR_semctl 368 394 - #define __NR_semtimedop 369 395 - #define __NR_msgsnd 370 396 - #define __NR_msgrcv 371 397 - #define __NR_msgget 372 398 - #define __NR_msgctl 373 399 - #define __NR_shmat 374 400 - #define __NR_shmdt 375 401 - #define __NR_shmget 376 402 - #define __NR_shmctl 377 403 391 #define __NR_mlock2 378 404 392 405 393 #endif /* _UAPI_ASM_POWERPC_UNISTD_H_ */
+13 -1
arch/powerpc/platforms/powernv/opal-irqchip.c
··· 83 83 set_bit(d->hwirq, &opal_event_irqchip.mask); 84 84 85 85 opal_poll_events(&events); 86 - opal_handle_events(be64_to_cpu(events)); 86 + last_outstanding_events = be64_to_cpu(events); 87 + 88 + /* 89 + * We can't just handle the events now with opal_handle_events(). 90 + * If we did we would deadlock when opal_event_unmask() is called from 91 + * handle_level_irq() with the irq descriptor lock held, because 92 + * calling opal_handle_events() would call generic_handle_irq() and 93 + * then handle_level_irq() which would try to take the descriptor lock 94 + * again. Instead queue the events for later. 95 + */ 96 + if (last_outstanding_events & opal_event_irqchip.mask) 97 + /* Need to retrigger the interrupt */ 98 + irq_work_queue(&opal_event_irq_work); 87 99 } 88 100 89 101 static int opal_event_set_type(struct irq_data *d, unsigned int flow_type)
+1 -1
arch/powerpc/platforms/powernv/opal.c
··· 278 278 279 279 /* Sanity check */ 280 280 if (type >= OPAL_MSG_TYPE_MAX) { 281 - pr_warning("%s: Unknown message type: %u\n", __func__, type); 281 + pr_warn_once("%s: Unknown message type: %u\n", __func__, type); 282 282 return; 283 283 } 284 284 opal_message_do_notify(type, (void *)&msg);