nvme: fix async event trace event
[ Upstream commit 6622b76fe922b94189499a90ccdb714a4a8d0773 ]
Mixing AER Event Type and Event Info has masking clashes. Just print the
event type, but also include the event info of the AER result in the
trace.
Fixes: 09bd1ff4b1 ("nvme-core: add async event trace helper")
Reported-by: Nate Thornton <nate.thornton@samsung.com>
Reviewed-by: Sagi Grimberg <sagi@grimberg.me>
Reviewed-by: Minwoo Im <minwoo.im@samsung.com>
Reviewed-by: Chaitanya Kulkarni <kch@nvidia.com>
Signed-off-by: Keith Busch <kbusch@kernel.org>
Signed-off-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
a9e3d9bac9
commit
e119d19183
@@ -4430,8 +4430,6 @@ static void nvme_handle_aen_notice(struct nvme_ctrl *ctrl, u32 result)
|
|||||||
{
|
{
|
||||||
u32 aer_notice_type = nvme_aer_subtype(result);
|
u32 aer_notice_type = nvme_aer_subtype(result);
|
||||||
|
|
||||||
trace_nvme_async_event(ctrl, aer_notice_type);
|
|
||||||
|
|
||||||
switch (aer_notice_type) {
|
switch (aer_notice_type) {
|
||||||
case NVME_AER_NOTICE_NS_CHANGED:
|
case NVME_AER_NOTICE_NS_CHANGED:
|
||||||
set_bit(NVME_AER_NOTICE_NS_CHANGED, &ctrl->events);
|
set_bit(NVME_AER_NOTICE_NS_CHANGED, &ctrl->events);
|
||||||
@@ -4463,7 +4461,6 @@ static void nvme_handle_aen_notice(struct nvme_ctrl *ctrl, u32 result)
|
|||||||
|
|
||||||
static void nvme_handle_aer_persistent_error(struct nvme_ctrl *ctrl)
|
static void nvme_handle_aer_persistent_error(struct nvme_ctrl *ctrl)
|
||||||
{
|
{
|
||||||
trace_nvme_async_event(ctrl, NVME_AER_ERROR);
|
|
||||||
dev_warn(ctrl->device, "resetting controller due to AER\n");
|
dev_warn(ctrl->device, "resetting controller due to AER\n");
|
||||||
nvme_reset_ctrl(ctrl);
|
nvme_reset_ctrl(ctrl);
|
||||||
}
|
}
|
||||||
@@ -4478,6 +4475,7 @@ void nvme_complete_async_event(struct nvme_ctrl *ctrl, __le16 status,
|
|||||||
if (le16_to_cpu(status) >> 1 != NVME_SC_SUCCESS)
|
if (le16_to_cpu(status) >> 1 != NVME_SC_SUCCESS)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
trace_nvme_async_event(ctrl, result);
|
||||||
switch (aer_type) {
|
switch (aer_type) {
|
||||||
case NVME_AER_NOTICE:
|
case NVME_AER_NOTICE:
|
||||||
nvme_handle_aen_notice(ctrl, result);
|
nvme_handle_aen_notice(ctrl, result);
|
||||||
@@ -4495,7 +4493,6 @@ void nvme_complete_async_event(struct nvme_ctrl *ctrl, __le16 status,
|
|||||||
case NVME_AER_SMART:
|
case NVME_AER_SMART:
|
||||||
case NVME_AER_CSS:
|
case NVME_AER_CSS:
|
||||||
case NVME_AER_VS:
|
case NVME_AER_VS:
|
||||||
trace_nvme_async_event(ctrl, aer_type);
|
|
||||||
ctrl->aen_result = result;
|
ctrl->aen_result = result;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
|||||||
@@ -127,13 +127,10 @@ TRACE_EVENT(nvme_async_event,
|
|||||||
),
|
),
|
||||||
TP_printk("nvme%d: NVME_AEN=%#08x [%s]",
|
TP_printk("nvme%d: NVME_AEN=%#08x [%s]",
|
||||||
__entry->ctrl_id, __entry->result,
|
__entry->ctrl_id, __entry->result,
|
||||||
__print_symbolic(__entry->result,
|
__print_symbolic(__entry->result & 0x7,
|
||||||
aer_name(NVME_AER_NOTICE_NS_CHANGED),
|
|
||||||
aer_name(NVME_AER_NOTICE_ANA),
|
|
||||||
aer_name(NVME_AER_NOTICE_FW_ACT_STARTING),
|
|
||||||
aer_name(NVME_AER_NOTICE_DISC_CHANGED),
|
|
||||||
aer_name(NVME_AER_ERROR),
|
aer_name(NVME_AER_ERROR),
|
||||||
aer_name(NVME_AER_SMART),
|
aer_name(NVME_AER_SMART),
|
||||||
|
aer_name(NVME_AER_NOTICE),
|
||||||
aer_name(NVME_AER_CSS),
|
aer_name(NVME_AER_CSS),
|
||||||
aer_name(NVME_AER_VS))
|
aer_name(NVME_AER_VS))
|
||||||
)
|
)
|
||||||
|
|||||||
Reference in New Issue
Block a user