pnv/xive2: Dump more END state with 'info pic'
Additional END state 'info pic' information as added. The 'ignore', 'crowd' and 'precluded escalation control' bits of an Event Notification Descriptor are all used when delivering an interrupt targeting a VP-group or crowd. Signed-off-by: Frederic Barrat <fbarrat@linux.ibm.com> Signed-off-by: Michael Kowal <kowal@linux.vnet.ibm.com> Reviewed-by: Cédric Le Goater <clg@redhat.com> Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
This commit is contained in:
parent
6adb007357
commit
5fc9c71724
@ -89,7 +89,7 @@ void xive2_end_pic_print_info(Xive2End *end, uint32_t end_idx, GString *buf)
|
||||
pq = xive_get_field32(END2_W1_ESn, end->w1);
|
||||
|
||||
g_string_append_printf(buf,
|
||||
" %08x %c%c %c%c%c%c%c%c%c%c%c%c "
|
||||
" %08x %c%c %c%c%c%c%c%c%c%c%c%c%c %c%c "
|
||||
"prio:%d nvp:%02x/%04x",
|
||||
end_idx,
|
||||
pq & XIVE_ESB_VAL_P ? 'P' : '-',
|
||||
@ -98,12 +98,15 @@ void xive2_end_pic_print_info(Xive2End *end, uint32_t end_idx, GString *buf)
|
||||
xive2_end_is_enqueue(end) ? 'q' : '-',
|
||||
xive2_end_is_notify(end) ? 'n' : '-',
|
||||
xive2_end_is_backlog(end) ? 'b' : '-',
|
||||
xive2_end_is_precluded_escalation(end) ? 'p' : '-',
|
||||
xive2_end_is_escalate(end) ? 'e' : '-',
|
||||
xive2_end_is_escalate_end(end) ? 'N' : '-',
|
||||
xive2_end_is_uncond_escalation(end) ? 'u' : '-',
|
||||
xive2_end_is_silent_escalation(end) ? 's' : '-',
|
||||
xive2_end_is_firmware1(end) ? 'f' : '-',
|
||||
xive2_end_is_firmware2(end) ? 'F' : '-',
|
||||
xive2_end_is_ignore(end) ? 'i' : '-',
|
||||
xive2_end_is_crowd(end) ? 'c' : '-',
|
||||
priority, nvp_blk, nvp_idx);
|
||||
|
||||
if (qaddr_base) {
|
||||
@ -676,7 +679,7 @@ static void xive2_router_end_notify(Xive2Router *xrtr, uint8_t end_blk,
|
||||
}
|
||||
|
||||
found = xive_presenter_notify(xrtr->xfb, format, nvp_blk, nvp_idx,
|
||||
xive_get_field32(END2_W6_IGNORE, end.w7),
|
||||
xive2_end_is_ignore(&end),
|
||||
priority,
|
||||
xive_get_field32(END2_W7_F1_LOG_SERVER_ID, end.w7));
|
||||
|
||||
|
@ -97,6 +97,7 @@ typedef struct Xive2End {
|
||||
uint32_t w6;
|
||||
#define END2_W6_FORMAT_BIT PPC_BIT32(0)
|
||||
#define END2_W6_IGNORE PPC_BIT32(1)
|
||||
#define END2_W6_CROWD PPC_BIT32(2)
|
||||
#define END2_W6_VP_BLOCK PPC_BITMASK32(4, 7)
|
||||
#define END2_W6_VP_OFFSET PPC_BITMASK32(8, 31)
|
||||
#define END2_W6_VP_OFFSET_GEN1 PPC_BITMASK32(13, 31)
|
||||
@ -111,6 +112,8 @@ typedef struct Xive2End {
|
||||
#define xive2_end_is_notify(end) \
|
||||
(be32_to_cpu((end)->w0) & END2_W0_UCOND_NOTIFY)
|
||||
#define xive2_end_is_backlog(end) (be32_to_cpu((end)->w0) & END2_W0_BACKLOG)
|
||||
#define xive2_end_is_precluded_escalation(end) \
|
||||
(be32_to_cpu((end)->w0) & END2_W0_PRECL_ESC_CTL)
|
||||
#define xive2_end_is_escalate(end) \
|
||||
(be32_to_cpu((end)->w0) & END2_W0_ESCALATE_CTL)
|
||||
#define xive2_end_is_uncond_escalation(end) \
|
||||
@ -123,6 +126,10 @@ typedef struct Xive2End {
|
||||
(be32_to_cpu((end)->w0) & END2_W0_FIRMWARE1)
|
||||
#define xive2_end_is_firmware2(end) \
|
||||
(be32_to_cpu((end)->w0) & END2_W0_FIRMWARE2)
|
||||
#define xive2_end_is_ignore(end) \
|
||||
(be32_to_cpu((end)->w6) & END2_W6_IGNORE)
|
||||
#define xive2_end_is_crowd(end) \
|
||||
(be32_to_cpu((end)->w6) & END2_W6_CROWD)
|
||||
|
||||
static inline uint64_t xive2_end_qaddr(Xive2End *end)
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user