[PATCH v12 2/2] i2c: aspeed: support ast2600 i2c new register mode driver

Krzysztof Kozlowski krzysztof.kozlowski at linaro.org
Tue Jul 25 23:31:54 PDT 2023


On 26/07/2023 05:38, Ryan Chen wrote:
>>> +
>>> +static int ast2600_i2c_remove(struct platform_device *pdev) {
>>> +	struct ast2600_i2c_bus *i2c_bus = platform_get_drvdata(pdev);
>>> +
>>> +	/* Disable everything. */
>>> +	writel(0, i2c_bus->reg_base + AST2600_I2CC_FUN_CTRL);
>>> +	writel(0, i2c_bus->reg_base + AST2600_I2CM_IER);
>>> +
>>> +	i2c_del_adapter(&i2c_bus->adap);
>>
>>> I have doubts that you tested this. I think you have here double free/del of the adapter.
>> Sorry, i can't catch your point for double free the adapter.
>> It should use i2c_del_adapter in driver remove function.
>> All the driver doing this
>> https://github.com/torvalds/linux/blob/master/drivers/i2c/busses/i2c-n
>> pcm7xx.c#L2373
>> https://github.com/torvalds/linux/blob/master/drivers/i2c/busses/i2c-a
>> ltera.c#L473
>>
>> Do you mean it is not necessary? 
> 
>> Instead of giving you the fish, I think much more learning experience is to teach you how to fish. Please unbind your driver (echo the device name to proper unbind file in sysfs). The best if you build your kernel with KASAN.
> 
>> Thanks, will do this test with unbind to understand your point. 
> I do my the test with enable kernel config KASAN.
> I don't see any error dump. You can see the following. It use i2c-0 bind/unbind.
> Did I miss some test ??
> 
> root at ast2600-default:/sys/bus/platform/drivers/i2c_ast2600# i2cdetect -l
> i2c-0   i2c             1e78a080.i2c-bus                        I2C adapter
> i2c-1   i2c             1e78a100.i2c-bus                        I2C adapter
> i2c-2   i2c             1e78a180.i2c-bus                        I2C adapter
> i2c-3   i2c             1e78a200.i2c-bus                        I2C adapter
> i2c-4   i2c             1e78a280.i2c-bus                        I2C adapter
> i2c-5   i2c             1e78a300.i2c-bus                        I2C adapter
> i2c-6   i2c             1e78a380.i2c-bus                        I2C adapter
> i2c-7   i2c             1e78a400.i2c-bus                        I2C adapter
> i2c-8   i2c             1e78a480.i2c-bus                        I2C adapter
> i2c-9   i2c             1e78a500.i2c-bus                        I2C adapter
> i2c-12  i2c             1e78a680.i2c-bus                        I2C adapter
> i2c-13  i2c             1e78a700.i2c-bus                        I2C adapter
> i2c-14  i2c             1e78a780.i2c-bus                        I2C adapter
> i2c-15  i2c             1e78a800.i2c-bus                        I2C adapter
> root at ast2600-default:/sys/bus/platform/drivers/i2c_ast2600# echo 1e78a080.i2c-bus > unbind

It should fail... if it doesn't, maybe you can tell why?

Best regards,
Krzysztof




More information about the linux-arm-kernel mailing list