/*
* Copyright (c) 2014, The Linux Foundation. All rights reserved.
*
* This software is licensed under the terms of the GNU General Public
* License version 2, as published by the Free Software Foundation, and
* may be copied, distributed, and modified under those terms.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*/
#ifndef _DT_BINDINGS_RESET_APQ_MMCC_8084_H
#define _DT_BINDINGS_RESET_APQ_MMCC_8084_H
#define MMSS_SPDM_RESET 0
#define MMSS_SPDM_RM_RESET 1
#define VENUS0_RESET 2
#define VPU_RESET 3
#define MDSS_RESET 4
#define AVSYNC_RESET 5
#define CAMSS_PHY0_RESET 6
#define CAMSS_PHY1_RESET 7
#define CAMSS_PHY2_RESET 8
#define CAMSS_CSI0_RESET 9
#define CAMSS_CSI0PHY_RESET 10
#define CAMSS_CSI0RDI_RESET 11
#define CAMSS_CSI0PIX_RESET 12
#define CAMSS_CSI1_RESET 13
#define CAMSS_CSI1PHY_RESET 14
#define CAMSS_CSI1RDI_RESET 15
#define CAMSS_CSI1PIX_RESET 16
#define CAMSS_CSI2_RESET 17
#define CAMSS_CSI2PHY_RESET 18
#define CAMSS_CSI2RDI_RESET 19
#define CAMSS_CSI2PIX_RESET 20
#define CAMSS_CSI3_RESET 21
#define CAMSS_CSI3PHY_RESET 22
#define CAMSS_CSI3RDI_RESET 23
#define CAMSS_CSI3PIX_RESET 24
#define CAMSS_ISPIF_RESET 25
#define CAMSS_CCI_RESET 26
#define CAMSS_MCLK0_RESET 27
#define CAMSS_MCLK1_RESET 28
#define CAMSS_MCLK2_RESET 29
#define CAMSS_MCLK3_RESET 30
#define CAMSS_GP0_RESET 31
#define CAMSS_GP1_RESET 32
#define CAMSS_TOP_RESET 33
#define CAMSS_AHB_RESET 34
#define CAMSS_MICRO_RESET 35
#define CAMSS_JPEG_RESET 36
#define CAMSS_VFE_RESET 37
#define CAMSS_CSI_VFE0_RESET 38
#define CAMSS_CSI_VFE1_RESET 39
#define OXILI_RESET 40
#define OXILICX_RESET 41
#define OCMEMCX_RESET 42
#define MMSS_RBCRP_RESET 43
#define MMSSNOCAHB_RESET 44
#define MMSSNOCAXI_RESET 45
#endif
mple.pl?h=nds-private-remove&id=add7c65ca426b7a37184dd3d2172394e23d585d6'>treecommitdiff
pid: fix lockdep deadlock warning due to ucount_lock
=========================================================
[ INFO: possible irq lock inversion dependency detected ]
4.10.0-rc2-00024-g4aecec9-dirty #118 Tainted: G W
---------------------------------------------------------
swapper/1/0 just changed the state of lock:
(&(&sighand->siglock)->rlock){-.....}, at: [<ffffffffbd0a1bc6>] __lock_task_sighand+0xb6/0x2c0
but this lock took another, HARDIRQ-unsafe lock in the past:
(ucounts_lock){+.+...}
and interrupts could create inverse lock ordering between them.
other info that might help us debug this:
Chain exists of: &(&sighand->siglock)->rlock --> &(&tty->ctrl_lock)->rlock --> ucounts_lock
Possible interrupt unsafe locking scenario:
CPU0 CPU1
---- ----
lock(ucounts_lock);
local_irq_disable();
lock(&(&sighand->siglock)->rlock);
lock(&(&tty->ctrl_lock)->rlock);
<Interrupt>
lock(&(&sighand->siglock)->rlock);
*** DEADLOCK ***
This patch removes a dependency between rlock and ucount_lock.
Fixes: f333c700c610 ("pidns: Add a limit on the number of pid namespaces")
Cc: stable@vger.kernel.org
Signed-off-by: Andrei Vagin <avagin@openvz.org>
Acked-by: Al Viro <viro@ZenIV.linux.org.uk>
Signed-off-by: Eric W. Biederman <ebiederm@xmission.com>