【运维案例】某芯片适配openEuler过程中,启动时一条I2C总线的属性从slave改为master模式

产品:openEuler

版本:20.03-SP3

分类:兼容性 / 南向兼容性

来源:现网

[背景及现象描述]

某芯片适配openEuler过程中,启动时一条I2C总线的属性从slave改为master模式,导致原有master+slave的模式变为master+master, 连接断开。os还可以正常启动。多次循环读取该配置的寄存器的值发现,在启动第6-7秒左右发生配置变动。

[原因分析]

开机默认加载了i2c-designware-platform.ko,导致I2C由slave模式改为master模式

[解决方法]

首先怀疑是BMC相关驱动造成的,去掉后仍有该问题; 查看6-7秒的日志,发现有systemd-udevd的服务在启动。去掉改服务后,6-7秒仍会修改I2C配置,且系统进入救援模式; 最后怀疑I2C相关的驱动,受编译选项控制。修改了HISI_I2C和CONFIG_I2C相关的几个编译选项后,均未解决。最后定位发现加载了i2c-designware-platform.ko,该ko受CONFIG_I2C_DESIGNWARE_PLATFORM影响。在grub commandline配置启动不加载后,重启发现I2C配置不被修改。

1 个赞