On Mon, Mar 02, 2026 at 02:17:46PM +0800, Jian Zhang wrote: > A valid IPMI over SSIF response must contain at least three bytes > (NetFn/LUN, Command and Completion Code). > > Some DMA-only I2C controllers may return short reads instead of a > proper NACK when the response is not ready. Treat such short reads > as incomplete and retry until a full response is received.
Well that's unfriendly of them. Anyway, I see the issue. I would ask a couple of things: Can you add a comment before this "if" statement so people in the future know why it's this way? Otherwise it's a bit mysterious. Wouldn't the i2c_smbus_read_block_data() in ipmi_ssif_thread() have the same issue? We should fix all of these if so. Thanks, -corey > > Signed-off-by: Jian Zhang <[email protected]> > --- > drivers/char/ipmi/ipmi_ssif.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/char/ipmi/ipmi_ssif.c b/drivers/char/ipmi/ipmi_ssif.c > index 37a5cb5c53f1..64ee939a7a4b 100644 > --- a/drivers/char/ipmi/ipmi_ssif.c > +++ b/drivers/char/ipmi/ipmi_ssif.c > @@ -1300,7 +1300,7 @@ static int read_response(struct i2c_client *client, > unsigned char *resp) > while (retry_cnt > 0) { > ret = i2c_smbus_read_block_data(client, SSIF_IPMI_RESPONSE, > resp); > - if (ret > 0) > + if (ret >= 3) > break; > msleep(SSIF_MSG_MSEC); > retry_cnt--; > -- > 2.20.1 _______________________________________________ Openipmi-developer mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/openipmi-developer
