Several i2c-mlxbf.c patches have been upstreamed recently and are in linux-next at the moment. So revert all changes in both Focal (5.4) and Jammy (5.15) and cherry-pick all changes from linux-next master.
IMPORTANT NOTE: please make sure you also load the latest UEFI (EDK2) firmware because there are dependencies.
* Also add the i2c driver version to keep track of the changes internally.
[Test Case]
* Check that the i2c driver loads without errors on BF1 and BF2 (dmesg, and check i2c1 sysfs is created)
* Check that the i2c module can be removed and reloaded without errors.
* Check that IPMB services work successfully on systems with BMC. This is the best way to test the i2c driver. Run ipmitool command from the BF: ipmitool mc info
* Run ipmitool from the BMC as well: ipmitool -I ipmb mc info
[Regression Potential]
* The i2c driver could fail to load because the UEFI firmware hasn't been upgraded
* The i2c driver would fail to load due to a bug
* IPMB code which utilises the i2c driver fails to work (ipmitool commands)
SRU Justification:
[Impact]
Several i2c-mlxbf.c patches have been upstreamed recently and are in linux-next at the moment. So revert all changes in both Focal (5.4) and Jammy (5.15) and cherry-pick all changes from linux-next master.
IMPORTANT NOTE: please make sure you also load the latest UEFI (EDK2) firmware because there are dependencies.
[Fix]
* i2c: mlxbf: incorrect base address passed during io write /git.kernel. org/pub/ scm/linux/ kernel/ git/next/ linux-next. git/commit/ ?id=2a5be6d1340 c0fefcee8a6489c ff7fd88a0d5b85>
From <https:/
* i2c: mlxbf: prevent stack overflow in mlxbf_i2c_ smbus_start_ transaction( ) /git.kernel. org/pub/ scm/linux/ kernel/ git/next/ linux-next. git/commit/ ?id=de24aceb07d 426b6f1c59f3388 9d6a964770547b>
From <https:/
* i2c: mlxbf: remove IRQF_ONESHOT /git.kernel. org/pub/ scm/linux/ kernel/ git/next/ linux-next. git/commit/ ?id=92be2c122e4 95f0249090c0048 f4fd05fe1efa9e>
From <https:/
* i2c: mlxbf: Fix frequency calculation /git.kernel. org/pub/ scm/linux/ kernel/ git/next/ linux-next. git/commit/ ?id=37f071ec327 b04c83d47637c5e 5c2199b39899ca>
From <https:/
* i2c: mlxbf: support lock mechanism /git.kernel. org/pub/ scm/linux/ kernel/ git/next/ linux-next. git/commit/ ?id=86067ccfa14 24a26491542d6f6 d7546d40b61a10>
From <https:/
* i2c: mlxbf: add multi slave functionality /git.kernel. org/pub/ scm/linux/ kernel/ git/next/ linux-next. git/commit/ ?id=bdc4af281b7 0b7fe2881fd08f1 aa1b15f2b6adf0>
From <https:/
* i2c: mlxbf: support BlueField-3 SoC /git.kernel. org/pub/ scm/linux/ kernel/ git/next/ linux-next. git/commit/ ?id=19e13e1330c 63506452eed80f4 73f344e6779b94>
From <https:/
* i2c: mlxbf: remove device tree support /git.kernel. org/pub/ scm/linux/ kernel/ git/next/ linux-next. git/commit/ ?id=be18c5ede25 da39a0eda541f6d e3620a30cf731f>
From <https:/
* Also add the i2c driver version to keep track of the changes internally.
[Test Case]
* Check that the i2c driver loads without errors on BF1 and BF2 (dmesg, and check i2c1 sysfs is created)
* Check that the i2c module can be removed and reloaded without errors.
* Check that IPMB services work successfully on systems with BMC. This is the best way to test the i2c driver. Run ipmitool command from the BF: ipmitool mc info
* Run ipmitool from the BMC as well: ipmitool -I ipmb mc info
[Regression Potential]
* The i2c driver could fail to load because the UEFI firmware hasn't been upgraded
* The i2c driver would fail to load due to a bug
* IPMB code which utilises the i2c driver fails to work (ipmitool commands)