linux/include
Chen-Yu Tsai 961a325bec platform/chrome: cros_ec: Use per-device lockdep key
Lockdep reports a bogus possible deadlock on MT8192 Chromebooks due to
the following lock sequences:

1. lock(i2c_register_adapter) [1]; lock(&ec_dev->lock)
2. lock(&ec_dev->lock); lock(prepare_lock);

The actual dependency chains are much longer. The shortened version
looks somewhat like:

1. cros-ec-rpmsg on mtk-scp
   ec_dev->lock -> prepare_lock
2. In rt5682_i2c_probe() on native I2C bus:
   prepare_lock -> regmap->lock -> (possibly) i2c_adapter->bus_lock
3. In rt5682_i2c_probe() on native I2C bus:
   regmap->lock -> i2c_adapter->bus_lock
4. In sbs_probe() on i2c-cros-ec-tunnel I2C bus attached on cros-ec:
   i2c_adapter->bus_lock -> ec_dev->lock

While lockdep is correct that the shared lockdep classes have a circular
dependency, it is bogus because

  a) 2+3 happen on a native I2C bus
  b) 4 happens on the actual EC on ChromeOS devices
  c) 1 happens on the SCP coprocessor on MediaTek Chromebooks that just
     happens to expose a cros-ec interface, but does not have an
     i2c-cros-ec-tunnel I2C bus

In short, the "dependencies" are actually on different devices.

Setup a per-device lockdep key for cros_ec devices so lockdep can tell
the two instances apart. This helps with getting rid of the bogus
lockdep warning. For ChromeOS devices that only have one cros-ec
instance this doesn't change anything.

Also add a missing mutex_destroy, just to make the teardown complete.

[1] This is likely the per I2C bus lock with shared lockdep class

Signed-off-by: Chen-Yu Tsai <wenst@chromium.org>
Signed-off-by: Tzung-Bi Shih <tzungbi@kernel.org>
Link: https://lore.kernel.org/r/20230111074146.2624496-1-wenst@chromium.org
History 2023-01-13 09:30:50 +08:00
..
acpi More ACPI updates for 6.2-rc1 2022-12-15 10:21:10 -08:00
asm-generic asm-generic bits for 6.2 2022-12-20 08:32:11 -06:00
clocksource Updates for timers, timekeeping and drivers: 2022-12-12 12:52:02 -08:00
crypto crypto: acomp - define max size for destination 2022-12-09 18:45:00 +08:00
drm Some deferred-io and damage worker reworks revert and make a fb function 2022-12-09 11:53:52 +10:00
dt-bindings remoteproc updates for v6.2 2022-12-21 09:37:14 -08:00
keys certs: Move load_certificate_list() to be with the asymmetric keys code 2022-06-21 16:05:06 +01:00
kunit kunit: add macro to allow conditionally exposing static symbols to tests 2022-12-12 14:13:48 -07:00
kvm Merge branch kvm-arm64/pmu-unchained into kvmarm-master/next 2022-12-05 14:38:44 +00:00
linux platform/chrome: cros_ec: Use per-device lockdep key 2023-01-13 09:30:50 +08:00
math-emu powerpc/math-emu: Remove -w build flag and fix warnings 2022-09-05 17:28:25 +10:00
media Merge tag 'br-v6.2i' of git://linuxtv.org/hverkuil/media_tree into media_stage 2022-12-07 17:58:47 +01:00
memory memory: renesas-rpc-if: Add support for R-Car Gen4 2022-10-18 13:02:58 -04:00
misc cxl: fix typo in comment 2022-11-24 23:12:19 +11:00
net 9p-for-6.2-rc1 2022-12-23 11:39:18 -08:00
pcmcia ARM: pxa/sa1100: move I/O space to PCI_IOBASE 2022-05-07 22:56:17 +02:00
ras mm, hwpoison: enable memory error handling on 1GB hugepage 2022-08-08 18:06:44 -07:00
rdma RDMA: Extend RDMA kernel verbs ABI to support flush 2022-12-09 19:36:01 -04:00
rv Documentation/rv: Add deterministic automata monitor synthesis documentation 2022-07-30 14:01:29 -04:00
scsi SCSI misc on 20221222 2022-12-22 11:22:31 -08:00
soc Networking changes for 6.2. 2022-12-13 15:47:48 -08:00
sound ALSA: hda/hdmi: fix stream-id config keep-alive for rt suspend 2022-12-09 12:06:15 +01:00
target scsi: target: core: Send max transfer length in blocks 2022-11-24 02:16:19 +00:00
trace pwm: Changes for v6.2-rc1 2022-12-21 09:41:28 -08:00
uapi SCSI misc on 20221222 2022-12-22 11:22:31 -08:00
ufs scsi: ufs: core: Remove check_upiu_size() from ufshcd.h 2022-11-08 03:06:33 +00:00
vdso time64.h: Consolidated PSEC_PER_SEC definition 2021-04-06 16:32:17 -07:00
video fbdev: omapfb: connector-analog-tv: remove support for platform data 2022-12-14 20:01:49 +01:00
xen xen: fix xen.h build for CONFIG_XEN_PVH=y 2022-12-05 12:59:49 +01:00