diff options
Diffstat (limited to 'hw/fsp/fsp-ipmi.c')
-rw-r--r-- | hw/fsp/fsp-ipmi.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/hw/fsp/fsp-ipmi.c b/hw/fsp/fsp-ipmi.c index f803f179..d262cee6 100644 --- a/hw/fsp/fsp-ipmi.c +++ b/hw/fsp/fsp-ipmi.c @@ -126,6 +126,9 @@ static int fsp_ipmi_send_request(void) struct fsp_msg *msg; int rc; + if (fsp_in_rr()) + return OPAL_BUSY; + lock(&fsp_ipmi.lock); /* An outstanding request is still pending */ if (fsp_ipmi.cur_msg) { @@ -208,6 +211,9 @@ static int fsp_ipmi_queue_msg(struct ipmi_msg *ipmi_msg) struct fsp_ipmi_msg *fsp_ipmi_msg = container_of(ipmi_msg, struct fsp_ipmi_msg, ipmi_msg); + if (fsp_in_rr()) + return OPAL_BUSY; + lock(&fsp_ipmi.lock); list_add_tail(&fsp_ipmi.msg_queue, &fsp_ipmi_msg->link); unlock(&fsp_ipmi.lock); @@ -220,6 +226,9 @@ static int fsp_ipmi_queue_msg_head(struct ipmi_msg *ipmi_msg) struct fsp_ipmi_msg *fsp_ipmi_msg = container_of(ipmi_msg, struct fsp_ipmi_msg, ipmi_msg); + if (fsp_in_rr()) + return OPAL_BUSY; + lock(&fsp_ipmi.lock); list_add(&fsp_ipmi.msg_queue, &fsp_ipmi_msg->link); unlock(&fsp_ipmi.lock); |