mirror of
https://github.com/torvalds/linux.git
synced 2024-11-22 12:11:40 +00:00
Improve the detection when to run atomic transfer handlers for kernels
with preemption disabled. This removes some false positive splats a number of users were seeing if their driver didn't have support for atomic transfers. Also, fix a typo in the docs while we are here. -----BEGIN PGP SIGNATURE----- iQJDBAABCgAtFiEEOZGx6rniZ1Gk92RdFA3kzBSgKbYFAmWZUukPHHdzYUBrZXJu ZWwub3JnAAoJEBQN5MwUoCm2XUMP/Rm/6oiH7ASUOKpmLi42a68llEJuBCkK8oPW PmO/QmuTc6K1rDE6ehmBgTNeBQDkI7NdrUViu7xel1G0p57q5rZCdxl/BV7qmGjv aq46Y3omw06UybqceVlmx8NJe9r7+HXh+qJJ0UXg/+uA9VKd0jaiGo40wQjR6AxA Ow92+p6rUcFDGpEdXFRQJnov8p7GnCGRKumA593goju+sJRUVozjz0nifTVqdyA5 +L3V02j5INx285sAngTPSHSn2vd0arxwumXKYusehfUtytzkI0RmBWebfqxbg5QE 7WRnqtHe5aR78gr1RWWo/pI91yTtlfslGhj7uFQxcPpkKkyD57Z17N8rxS+u3rwH xAwvYG7CiWygee+q2RTDFmz49FNxRCeB3O5cjPp1Imco6MVG5ZOwZjIjn3CkDyvi CGQD8vXdiDfRBDSCI25XdORNsTBzrhSBAs412xGo3waflvgowtw076FYpXfNnAmZ z79lIlrR+Hg7ynZBs3qcjVOXvaj8rzXiLkfFWrBihGfbzVOTJv9cfetEpYcOcSaw Ae/wC3TKhvowdaFr43wYJrIsni93xdsCjHeIwQYozKbD6iiKWymwxzhWRDTM0cjP eSifFBoa1mzVqUNzSVzCHFbdKV0nlhZqxpZGrsTKhUm2EU0934sb9hBvn8o1weaR WRl0sHoU =LZdW -----END PGP SIGNATURE----- Merge tag 'i2c-for-6.7-final' of git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux Pull i2c fixes from Wolfram Sang: "Improve the detection when to run atomic transfer handlers for kernels with preemption disabled. This removes some false positive splats a number of users were seeing if their driver didn't have support for atomic transfers. Also, fix a typo in the docs while we are here" * tag 'i2c-for-6.7-final' of git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux: i2c: core: Fix atomic xfer check for non-preempt config Documentation/i2c: fix spelling error in i2c-address-translators
This commit is contained in:
commit
52b1853b08
@ -71,7 +71,7 @@ Transaction:
|
||||
- Physical I2C transaction on bus A, slave address 0x20
|
||||
- ATR chip detects transaction on address 0x20, finds it in table,
|
||||
propagates transaction on bus B with address translated to 0x10,
|
||||
keeps clock streched on bus A waiting for reply
|
||||
keeps clock stretched on bus A waiting for reply
|
||||
- Slave X chip (on bus B) detects transaction at its own physical
|
||||
address 0x10 and replies normally
|
||||
- ATR chip stops clock stretching and forwards reply on bus A,
|
||||
|
@ -3,6 +3,7 @@
|
||||
* i2c-core.h - interfaces internal to the I2C framework
|
||||
*/
|
||||
|
||||
#include <linux/kconfig.h>
|
||||
#include <linux/rwsem.h>
|
||||
|
||||
struct i2c_devinfo {
|
||||
@ -29,7 +30,8 @@ int i2c_dev_irq_from_resources(const struct resource *resources,
|
||||
*/
|
||||
static inline bool i2c_in_atomic_xfer_mode(void)
|
||||
{
|
||||
return system_state > SYSTEM_RUNNING && !preemptible();
|
||||
return system_state > SYSTEM_RUNNING &&
|
||||
(IS_ENABLED(CONFIG_PREEMPT_COUNT) ? !preemptible() : irqs_disabled());
|
||||
}
|
||||
|
||||
static inline int __i2c_lock_bus_helper(struct i2c_adapter *adap)
|
||||
|
Loading…
Reference in New Issue
Block a user