On Mon, Feb 22, 2021 at 08:41:58AM -0800, Jae Hyun Yoo wrote: > From: Terry Duncan <terry.s.dun...@intel.com> > > Rarely but still failures are observed while getting BMC device ID > so this commit adds more conditions to retry to get device id.
I suppose this is ok. Any more and I'd say just retry on any error. -corey > > Signed-off-by: Terry Duncan <terry.s.dun...@intel.com> > Signed-off-by: Jae Hyun Yoo <jae.hyun....@linux.intel.com> > --- > drivers/char/ipmi/ipmi_msghandler.c | 5 ++++- > drivers/char/ipmi/ipmi_si_intf.c | 5 ++++- > include/uapi/linux/ipmi_msgdefs.h | 1 + > 3 files changed, 9 insertions(+), 2 deletions(-) > > diff --git a/drivers/char/ipmi/ipmi_msghandler.c > b/drivers/char/ipmi/ipmi_msghandler.c > index c44ad18464f1..decd33535ff7 100644 > --- a/drivers/char/ipmi/ipmi_msghandler.c > +++ b/drivers/char/ipmi/ipmi_msghandler.c > @@ -2449,7 +2449,10 @@ static int __get_device_id(struct ipmi_smi *intf, > struct bmc_device *bmc) > if (!bmc->dyn_id_set) { > if ((bmc->cc == IPMI_DEVICE_IN_FW_UPDATE_ERR > || bmc->cc == IPMI_DEVICE_IN_INIT_ERR > - || bmc->cc == IPMI_NOT_IN_MY_STATE_ERR) > + || bmc->cc == IPMI_NOT_IN_MY_STATE_ERR > + || bmc->cc == IPMI_TIMEOUT_ERR > + || bmc->cc == IPMI_RESPONSE_UNAVAILABLE > + || bmc->cc == IPMI_NODE_BUSY_ERR) > && ++retry_count <= GET_DEVICE_ID_MAX_RETRY) { > msleep(500); > dev_warn(intf->si_dev, > diff --git a/drivers/char/ipmi/ipmi_si_intf.c > b/drivers/char/ipmi/ipmi_si_intf.c > index 5eac94cf4ff8..c315f3fb0fc2 100644 > --- a/drivers/char/ipmi/ipmi_si_intf.c > +++ b/drivers/char/ipmi/ipmi_si_intf.c > @@ -1348,7 +1348,10 @@ static int try_get_dev_id(struct smi_info *smi_info) > > if ((cc == IPMI_DEVICE_IN_FW_UPDATE_ERR > || cc == IPMI_DEVICE_IN_INIT_ERR > - || cc == IPMI_NOT_IN_MY_STATE_ERR) > + || cc == IPMI_NOT_IN_MY_STATE_ERR > + || cc == IPMI_TIMEOUT_ERR > + || cc == IPMI_RESPONSE_UNAVAILABLE > + || cc == IPMI_NODE_BUSY_ERR) > && ++retry_count <= GET_DEVICE_ID_MAX_RETRY) { > dev_warn(smi_info->io.dev, > "BMC returned 0x%2.2x, retry get bmc device id\n", > diff --git a/include/uapi/linux/ipmi_msgdefs.h > b/include/uapi/linux/ipmi_msgdefs.h > index 0934af3b8037..dbadbad71930 100644 > --- a/include/uapi/linux/ipmi_msgdefs.h > +++ b/include/uapi/linux/ipmi_msgdefs.h > @@ -69,6 +69,7 @@ > #define IPMI_ERR_MSG_TRUNCATED 0xc6 > #define IPMI_REQ_LEN_INVALID_ERR 0xc7 > #define IPMI_REQ_LEN_EXCEEDED_ERR 0xc8 > +#define IPMI_RESPONSE_UNAVAILABLE 0xce > #define IPMI_DEVICE_IN_FW_UPDATE_ERR 0xd1 > #define IPMI_DEVICE_IN_INIT_ERR 0xd2 > #define IPMI_NOT_IN_MY_STATE_ERR 0xd5 /* IPMI 2.0 */ > -- > 2.17.1 > _______________________________________________ Openipmi-developer mailing list Openipmi-developer@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/openipmi-developer