Hi Wolfram, the following RFC patches are based on your branch > git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux.git renesas/i2c/atomic_xfer I have used them to test your changes and my usecase on my available hardware setup: an i.MX6 Solo (phyCORE-i.MX6). In general: Great stuff! And I vote for inclusion :-) Even so this series does not tackle all problems at once, it's a step into the right direction to support reboot handlers using an external PMIC via I2C. Some additional comments below and also in-line in your posted patches. > a) we decided to respect the current locking scheme and to not give atomic > transfers a priority. The code needed for that would have been either > incomplete or very invasive. And we cannot guarantee successful transfers > anyhow. See [1] for the discussion and other write-ups for design choices. Ack. I can just confirm that the mentioned locking issues are a real. I could not reproduce them on my single core ARM SoC, but on a multi core ARM system, e.g. the CPU frequency scaler is maybe holding the I2C transfer mutex, while the system is going to restart. Just for reference: I 'solved' this by augmenting, read 'hacked', the locking schema, so a single device driver can block the whole I2C bus for itself and cause all other transfers to fail at once. See https://www.spinics.net/lists/linux-i2c/msg25399.html A real and good solution, as you said, is very invasive and must be thought out carefully. The appended patches are not meant for inclusion or review. They are just for reference of my testing setup. Kind regards, Stefan Lengfeld Stefan Christ (1): ARM: dts: phyboard-mira-dl: rely on PMIC for reboot and watchdog Stefan Lengfeld (2): watchdog: da9062: avoid regmap in restart handler i2c: imx: implement master_xfer_atomic callback .../boot/dts/imx6dl-phytec-mira-rdk-nand.dts | 8 ++ drivers/i2c/busses/i2c-imx.c | 128 +++++++++++++----- drivers/mfd/da9062-core.c | 1 + drivers/watchdog/da9062_wdt.c | 17 ++- include/linux/mfd/da9062/core.h | 1 + 5 files changed, 116 insertions(+), 39 deletions(-) -- 2.21.0