[Skiboot] [PATCH] ipmi: Log exact NetFn value in OPAL logs
Cyril Bur
cyrilbur at gmail.com
Mon Feb 29 11:52:49 AEDT 2016
On Sat, 27 Feb 2016 02:13:26 +0530
Vipin K Parashar <vipin at linux.vnet.ibm.com> wrote:
Hi Vipin,
> As per IPMI message format NetFn value in present in first 6 bits
> while last 2 bits contain LUN value. This needs to be taken care
> while printing NetFn value in OPAL logs which is useful while debugging
> fails.
>
At the moment it is confusing that the netfn/lun byte is printed as the netfn,
good idea.
> [root at fir01 /]# ipmitool raw 0x0a 0x48
> 47 b1 d0 56
> [root at fir01 /]#
>
> From OPAL Logs
> ---------------
> [133969609199,7] BT: seq 0x3d netfn 0x0a cmd 0x48: Message sent to host
> [133975465455,7] BT: seq 0x3d netfn 0x0a cmd 0x48: IPMI MSG done
>
> From BMC Logs
> --------------
> IPMIMain: [693 WARNING][corecmdselect.c:913]
> Request: Channel:f; Netfn:a; Cmd:48;
> IPMIMain: [693 INFO][corecmdselect.c:924]
> Response: Channel:f; Netfn:a; Cmd:48; Data:0 47 b1 d0 56
>
> Signed-off-by: Vipin K Parashar <vipin at linux.vnet.ibm.com>
> ---
> core/ipmi.c | 2 +-
> hw/bt.c | 5 +++--
> 2 files changed, 4 insertions(+), 3 deletions(-)
>
> diff --git a/core/ipmi.c b/core/ipmi.c
> index 60e9640..6fdb9a7 100644
> --- a/core/ipmi.c
> +++ b/core/ipmi.c
> @@ -141,7 +141,7 @@ void ipmi_cmd_done(uint8_t cmd, uint8_t netfn, uint8_t cc, struct ipmi_msg *msg)
> }
>
> if ((msg->netfn >> 2) + 1 != (netfn >> 2)) {
> - prerror("IPMI: Incorrect netfn 0x%02x in response\n", netfn);
> + prerror("IPMI: Incorrect netfn 0x%02x in response\n", netfn >> 2);
> cc = IPMI_ERR_UNSPECIFIED;
This change makes sense as the error reported is the failure of the condition
which is looking at strictly the netfn.
> }
> msg->netfn = netfn;
> diff --git a/hw/bt.c b/hw/bt.c
> index 3325f69..ca8bd1e 100644
> --- a/hw/bt.c
> +++ b/hw/bt.c
> @@ -15,6 +15,7 @@
> */
>
> #define pr_fmt(fmt) "BT: " fmt
> +
> #include <skiboot.h>
> #include <lpc.h>
> #include <lock.h>
> @@ -80,7 +81,7 @@
> #define _BT_Q_LOG(level, msg, fmt, args...) \
> do { if (msg) \
> prlog(level, "seq 0x%02x netfn 0x%02x cmd 0x%02x: " fmt "\n", \
> - (msg)->seq, (msg)->ipmi_msg.netfn, (msg)->ipmi_msg.cmd, ##args); \
> + (msg)->seq, ((msg)->ipmi_msg.netfn >> 2), (msg)->ipmi_msg.cmd, ##args); \
> else \
> prlog(level, "seq 0x?? netfn 0x?? cmd 0x??: " fmt "\n", ##args); \
> } while(0)
> @@ -346,7 +347,7 @@ static void bt_get_resp(void)
> if (!bt_msg) {
> /* A response to a message we no longer care about. */
> prlog(PR_INFO, "Nobody cared about a response to an BT/IPMI message"
> - "(seq 0x%02x netfn 0x%02x cmd 0x%02x)\n", seq, netfn, cmd);
> + "(seq 0x%02x netfn 0x%02x cmd 0x%02x)\n", seq, (netfn >> 2), cmd);
> bt_flush_msg();
> return;
These two hunks are debug prints which actually show all the bytes that aren't
data bytes. Perhaps renaming the label to 'netfn/lun' makes more sense here as
it keeps more information for debugging (I'm assuming that someone debugging
will know how the netfn/lun is put in one byte obviously...).
Thanks,
Cyril
> }
More information about the Skiboot
mailing list