mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-15 01:01:56 -04:00
SCSI misc on 20170220
This update includes the usual round of major driver updates (ncr5380, ufs, lpfc, be2iscsi, hisi_sas, storvsc, cxlflash, aacraid, megaraid_sas, ). There's also an assortment of minor fixes and the major update of switching a bunch of drivers to pci_alloc_irq_vectors from Christoph. Signed-off-by: James E.J. Bottomley <jejb@linux.vnet.ibm.com> -----BEGIN PGP SIGNATURE----- Version: GnuPG v2 iQIcBAABAgAGBQJYq5adAAoJEAVr7HOZEZN4bjUP/Atk7CSZVnC75pcYmncbEGCx ysOlEHK4uW2HhiAYk3PlYMk+pKrMHet2zsbbM9PHJfopdOHZ7Sq1+UZZVeqE1Zun 8pe0NhON+fZx7XAnevdEvnSSULQZ+AGfjZO72iUwkJiN3ozYaFtCITOyn49l4GpR ra9emskBh7CQOFW2voGn1AKeDijPYGx3+TO4AUrWjVMiByR06gb1bmImx+ljiUrs jzRJPfrt90ORcTdpMateyN2EXxudcASMhX03SJ6fRI84hPAhMCROMbTv8RnzOTE4 DPbnvbYUowlHt43iUhJHSwGdkRRaRBnkzQENBp1fNrNzZgF6vB7+kShxbonrYB2p gC4ewaJr0BNj+HsUnvTpe3WseiPOcfsnBsKilPLKBlm2dCKEXqFox/dj/T1uexxg HoyFrl3u8fyEqVHrzRS4M9t/njWh0NFmXxb0wBdj+lkVFTRErGSKQ8SfOqshuSGs P8NN88jy8vC7uqgzKBJ+UH3ehzn3qfBxasFHIC/e2awY9FqKjHGTxKMmSVpjXVxy wCvE2FQ3k/qEj2XSM6f7/NGytlSOlju5q1rFtHPW2M+TFSh0LJWCnmVjR/Zle9em pBWmtIgCv8W5b41zL2H94nLWAZbfdrrNU/XnX88l47LKnmorte/PGhpxu36NEsMS VCgreQmFMdMRY+WzDWl1 =cBQx -----END PGP SIGNATURE----- Merge tag 'scsi-misc' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi Pull SCSI updates from James Bottomley: "This update includes the usual round of major driver updates (ncr5380, ufs, lpfc, be2iscsi, hisi_sas, storvsc, cxlflash, aacraid, megaraid_sas, ...). There's also an assortment of minor fixes and the major update of switching a bunch of drivers to pci_alloc_irq_vectors from Christoph" * tag 'scsi-misc' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi: (188 commits) scsi: megaraid_sas: handle dma_addr_t right on 32-bit scsi: megaraid_sas: array overflow in megasas_dump_frame() scsi: snic: switch to pci_irq_alloc_vectors scsi: megaraid_sas: driver version upgrade scsi: megaraid_sas: Change RAID_1_10_RMW_CMDS to RAID_1_PEER_CMDS and set value to 2 scsi: megaraid_sas: Indentation and smatch warning fixes scsi: megaraid_sas: Cleanup VD_EXT_DEBUG and SPAN_DEBUG related debug prints scsi: megaraid_sas: Increase internal command pool scsi: megaraid_sas: Use synchronize_irq to wait for IRQs to complete scsi: megaraid_sas: Bail out the driver load if ld_list_query fails scsi: megaraid_sas: Change build_mpt_mfi_pass_thru to return void scsi: megaraid_sas: During OCR, if get_ctrl_info fails do not continue with OCR scsi: megaraid_sas: Do not set fp_possible if TM capable for non-RW syspdIO, change fp_possible to bool scsi: megaraid_sas: Remove unused pd_index from megasas_build_ld_nonrw_fusion scsi: megaraid_sas: megasas_return_cmd does not memset IO frame to zero scsi: megaraid_sas: max_fw_cmds are decremented twice, remove duplicate scsi: megaraid_sas: update can_queue only if the new value is less scsi: megaraid_sas: Change max_cmd from u32 to u16 in all functions scsi: megaraid_sas: set pd_after_lb from MR_BuildRaidContext and initialize pDevHandle to MR_DEVHANDLE_INVALID scsi: megaraid_sas: latest controller OCR capability from FW before sending shutdown DCMD ...
This commit is contained in:
commit
cdc194705d
129 changed files with 9294 additions and 3928 deletions
263
include/trace/events/ufs.h
Normal file
263
include/trace/events/ufs.h
Normal file
|
|
@ -0,0 +1,263 @@
|
|||
/*
|
||||
* Copyright (c) 2013-2014, The Linux Foundation. All rights reserved.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License version 2 and
|
||||
* only version 2 as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*/
|
||||
|
||||
#undef TRACE_SYSTEM
|
||||
#define TRACE_SYSTEM ufs
|
||||
|
||||
#if !defined(_TRACE_UFS_H) || defined(TRACE_HEADER_MULTI_READ)
|
||||
#define _TRACE_UFS_H
|
||||
|
||||
#include <linux/tracepoint.h>
|
||||
|
||||
#define UFS_LINK_STATES \
|
||||
EM(UIC_LINK_OFF_STATE) \
|
||||
EM(UIC_LINK_ACTIVE_STATE) \
|
||||
EMe(UIC_LINK_HIBERN8_STATE)
|
||||
|
||||
#define UFS_PWR_MODES \
|
||||
EM(UFS_ACTIVE_PWR_MODE) \
|
||||
EM(UFS_SLEEP_PWR_MODE) \
|
||||
EMe(UFS_POWERDOWN_PWR_MODE)
|
||||
|
||||
#define UFSCHD_CLK_GATING_STATES \
|
||||
EM(CLKS_OFF) \
|
||||
EM(CLKS_ON) \
|
||||
EM(REQ_CLKS_OFF) \
|
||||
EMe(REQ_CLKS_ON)
|
||||
|
||||
/* Enums require being exported to userspace, for user tool parsing */
|
||||
#undef EM
|
||||
#undef EMe
|
||||
#define EM(a) TRACE_DEFINE_ENUM(a);
|
||||
#define EMe(a) TRACE_DEFINE_ENUM(a);
|
||||
|
||||
UFS_LINK_STATES;
|
||||
UFS_PWR_MODES;
|
||||
UFSCHD_CLK_GATING_STATES;
|
||||
|
||||
/*
|
||||
* Now redefine the EM() and EMe() macros to map the enums to the strings
|
||||
* that will be printed in the output.
|
||||
*/
|
||||
#undef EM
|
||||
#undef EMe
|
||||
#define EM(a) { a, #a },
|
||||
#define EMe(a) { a, #a }
|
||||
|
||||
TRACE_EVENT(ufshcd_clk_gating,
|
||||
|
||||
TP_PROTO(const char *dev_name, int state),
|
||||
|
||||
TP_ARGS(dev_name, state),
|
||||
|
||||
TP_STRUCT__entry(
|
||||
__string(dev_name, dev_name)
|
||||
__field(int, state)
|
||||
),
|
||||
|
||||
TP_fast_assign(
|
||||
__assign_str(dev_name, dev_name);
|
||||
__entry->state = state;
|
||||
),
|
||||
|
||||
TP_printk("%s: gating state changed to %s",
|
||||
__get_str(dev_name),
|
||||
__print_symbolic(__entry->state, UFSCHD_CLK_GATING_STATES))
|
||||
);
|
||||
|
||||
TRACE_EVENT(ufshcd_clk_scaling,
|
||||
|
||||
TP_PROTO(const char *dev_name, const char *state, const char *clk,
|
||||
u32 prev_state, u32 curr_state),
|
||||
|
||||
TP_ARGS(dev_name, state, clk, prev_state, curr_state),
|
||||
|
||||
TP_STRUCT__entry(
|
||||
__string(dev_name, dev_name)
|
||||
__string(state, state)
|
||||
__string(clk, clk)
|
||||
__field(u32, prev_state)
|
||||
__field(u32, curr_state)
|
||||
),
|
||||
|
||||
TP_fast_assign(
|
||||
__assign_str(dev_name, dev_name);
|
||||
__assign_str(state, state);
|
||||
__assign_str(clk, clk);
|
||||
__entry->prev_state = prev_state;
|
||||
__entry->curr_state = curr_state;
|
||||
),
|
||||
|
||||
TP_printk("%s: %s %s from %u to %u Hz",
|
||||
__get_str(dev_name), __get_str(state), __get_str(clk),
|
||||
__entry->prev_state, __entry->curr_state)
|
||||
);
|
||||
|
||||
TRACE_EVENT(ufshcd_auto_bkops_state,
|
||||
|
||||
TP_PROTO(const char *dev_name, const char *state),
|
||||
|
||||
TP_ARGS(dev_name, state),
|
||||
|
||||
TP_STRUCT__entry(
|
||||
__string(dev_name, dev_name)
|
||||
__string(state, state)
|
||||
),
|
||||
|
||||
TP_fast_assign(
|
||||
__assign_str(dev_name, dev_name);
|
||||
__assign_str(state, state);
|
||||
),
|
||||
|
||||
TP_printk("%s: auto bkops - %s",
|
||||
__get_str(dev_name), __get_str(state))
|
||||
);
|
||||
|
||||
DECLARE_EVENT_CLASS(ufshcd_profiling_template,
|
||||
TP_PROTO(const char *dev_name, const char *profile_info, s64 time_us,
|
||||
int err),
|
||||
|
||||
TP_ARGS(dev_name, profile_info, time_us, err),
|
||||
|
||||
TP_STRUCT__entry(
|
||||
__string(dev_name, dev_name)
|
||||
__string(profile_info, profile_info)
|
||||
__field(s64, time_us)
|
||||
__field(int, err)
|
||||
),
|
||||
|
||||
TP_fast_assign(
|
||||
__assign_str(dev_name, dev_name);
|
||||
__assign_str(profile_info, profile_info);
|
||||
__entry->time_us = time_us;
|
||||
__entry->err = err;
|
||||
),
|
||||
|
||||
TP_printk("%s: %s: took %lld usecs, err %d",
|
||||
__get_str(dev_name), __get_str(profile_info),
|
||||
__entry->time_us, __entry->err)
|
||||
);
|
||||
|
||||
DEFINE_EVENT(ufshcd_profiling_template, ufshcd_profile_hibern8,
|
||||
TP_PROTO(const char *dev_name, const char *profile_info, s64 time_us,
|
||||
int err),
|
||||
TP_ARGS(dev_name, profile_info, time_us, err));
|
||||
|
||||
DEFINE_EVENT(ufshcd_profiling_template, ufshcd_profile_clk_gating,
|
||||
TP_PROTO(const char *dev_name, const char *profile_info, s64 time_us,
|
||||
int err),
|
||||
TP_ARGS(dev_name, profile_info, time_us, err));
|
||||
|
||||
DEFINE_EVENT(ufshcd_profiling_template, ufshcd_profile_clk_scaling,
|
||||
TP_PROTO(const char *dev_name, const char *profile_info, s64 time_us,
|
||||
int err),
|
||||
TP_ARGS(dev_name, profile_info, time_us, err));
|
||||
|
||||
DECLARE_EVENT_CLASS(ufshcd_template,
|
||||
TP_PROTO(const char *dev_name, int err, s64 usecs,
|
||||
int dev_state, int link_state),
|
||||
|
||||
TP_ARGS(dev_name, err, usecs, dev_state, link_state),
|
||||
|
||||
TP_STRUCT__entry(
|
||||
__field(s64, usecs)
|
||||
__field(int, err)
|
||||
__string(dev_name, dev_name)
|
||||
__field(int, dev_state)
|
||||
__field(int, link_state)
|
||||
),
|
||||
|
||||
TP_fast_assign(
|
||||
__entry->usecs = usecs;
|
||||
__entry->err = err;
|
||||
__assign_str(dev_name, dev_name);
|
||||
__entry->dev_state = dev_state;
|
||||
__entry->link_state = link_state;
|
||||
),
|
||||
|
||||
TP_printk(
|
||||
"%s: took %lld usecs, dev_state: %s, link_state: %s, err %d",
|
||||
__get_str(dev_name),
|
||||
__entry->usecs,
|
||||
__print_symbolic(__entry->dev_state, UFS_PWR_MODES),
|
||||
__print_symbolic(__entry->link_state, UFS_LINK_STATES),
|
||||
__entry->err
|
||||
)
|
||||
);
|
||||
|
||||
DEFINE_EVENT(ufshcd_template, ufshcd_system_suspend,
|
||||
TP_PROTO(const char *dev_name, int err, s64 usecs,
|
||||
int dev_state, int link_state),
|
||||
TP_ARGS(dev_name, err, usecs, dev_state, link_state));
|
||||
|
||||
DEFINE_EVENT(ufshcd_template, ufshcd_system_resume,
|
||||
TP_PROTO(const char *dev_name, int err, s64 usecs,
|
||||
int dev_state, int link_state),
|
||||
TP_ARGS(dev_name, err, usecs, dev_state, link_state));
|
||||
|
||||
DEFINE_EVENT(ufshcd_template, ufshcd_runtime_suspend,
|
||||
TP_PROTO(const char *dev_name, int err, s64 usecs,
|
||||
int dev_state, int link_state),
|
||||
TP_ARGS(dev_name, err, usecs, dev_state, link_state));
|
||||
|
||||
DEFINE_EVENT(ufshcd_template, ufshcd_runtime_resume,
|
||||
TP_PROTO(const char *dev_name, int err, s64 usecs,
|
||||
int dev_state, int link_state),
|
||||
TP_ARGS(dev_name, err, usecs, dev_state, link_state));
|
||||
|
||||
DEFINE_EVENT(ufshcd_template, ufshcd_init,
|
||||
TP_PROTO(const char *dev_name, int err, s64 usecs,
|
||||
int dev_state, int link_state),
|
||||
TP_ARGS(dev_name, err, usecs, dev_state, link_state));
|
||||
|
||||
TRACE_EVENT(ufshcd_command,
|
||||
TP_PROTO(const char *dev_name, const char *str, unsigned int tag,
|
||||
u32 doorbell, int transfer_len, u32 intr, u64 lba,
|
||||
u8 opcode),
|
||||
|
||||
TP_ARGS(dev_name, str, tag, doorbell, transfer_len, intr, lba, opcode),
|
||||
|
||||
TP_STRUCT__entry(
|
||||
__string(dev_name, dev_name)
|
||||
__string(str, str)
|
||||
__field(unsigned int, tag)
|
||||
__field(u32, doorbell)
|
||||
__field(int, transfer_len)
|
||||
__field(u32, intr)
|
||||
__field(u64, lba)
|
||||
__field(u8, opcode)
|
||||
),
|
||||
|
||||
TP_fast_assign(
|
||||
__assign_str(dev_name, dev_name);
|
||||
__assign_str(str, str);
|
||||
__entry->tag = tag;
|
||||
__entry->doorbell = doorbell;
|
||||
__entry->transfer_len = transfer_len;
|
||||
__entry->intr = intr;
|
||||
__entry->lba = lba;
|
||||
__entry->opcode = opcode;
|
||||
),
|
||||
|
||||
TP_printk(
|
||||
"%s: %s: tag: %u, DB: 0x%x, size: %d, IS: %u, LBA: %llu, opcode: 0x%x",
|
||||
__get_str(str), __get_str(dev_name), __entry->tag,
|
||||
__entry->doorbell, __entry->transfer_len,
|
||||
__entry->intr, __entry->lba, (u32)__entry->opcode
|
||||
)
|
||||
);
|
||||
|
||||
#endif /* if !defined(_TRACE_UFS_H) || defined(TRACE_HEADER_MULTI_READ) */
|
||||
|
||||
/* This part must be outside protection */
|
||||
#include <trace/define_trace.h>
|
||||
Loading…
Reference in a new issue