Re: [PATCH v3 2/2] usb: typec: tcpm: AMS for PD2.0

From: kbuild test robot
Date: Sat Sep 21 2019 - 11:57:05 EST


Hi Kyle,

Thank you for the patch! Perhaps something to improve:

[auto build test WARNING on linus/master]
[cannot apply to v5.3 next-20190919]
[if your patch is applied to the wrong git tree, please drop us a note to help
improve the system. BTW, we also suggest to use '--base' option to specify the
base tree in git format-patch, please see https://stackoverflow.com/a/37406982]

url: https://github.com/0day-ci/linux/commits/Kyle-Tso/usb-typec-tcpm-AMS-and-Collision-Avoidance/20190920-112652
config: i386-allmodconfig (attached as .config)
compiler: gcc-7 (Debian 7.4.0-13) 7.4.0
reproduce:
# save the attached .config to linux build tree
make ARCH=i386
:::::: branch date: 7 hours ago
:::::: commit date: 7 hours ago

If you fix the issue, kindly add following tag
Reported-by: kbuild test robot <lkp@xxxxxxxxx>

Note: it may well be a FALSE warning. FWIW you are at least aware of it now.
http://gcc.gnu.org/wiki/Better_Uninitialized_Warnings

All warnings (new ones prefixed by >>):

drivers/usb/typec/tcpm/tcpm.c: In function 'tcpm_ams_start':
>> drivers/usb/typec/tcpm/tcpm.c:1144:5: warning: 'cc_req' may be used uninitialized in this function [-Wmaybe-uninitialized]
tcpm_set_state(port, AMS_START,
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
cc_req == SINK_TX_OK ?
~~~~~~~~~~~~~~~~~~~~~~
PD_T_SINK_TX : 0);
~~~~~~~~~~~~~~~~~

# https://github.com/0day-ci/linux/commit/59e8594ebb63b2f2f6d8ec5a9c9c914f6c476cae
git remote add linux-review https://github.com/0day-ci/linux
git remote update linux-review
git checkout 59e8594ebb63b2f2f6d8ec5a9c9c914f6c476cae
vim +/cc_req +1144 drivers/usb/typec/tcpm/tcpm.c

0ea47e4d06fe89 Kyle Tso 2019-09-20 1095
0ea47e4d06fe89 Kyle Tso 2019-09-20 1096 static int tcpm_ams_start(struct tcpm_port *port, enum tcpm_ams ams)
0ea47e4d06fe89 Kyle Tso 2019-09-20 1097 {
0ea47e4d06fe89 Kyle Tso 2019-09-20 1098 int ret = 0;
0ea47e4d06fe89 Kyle Tso 2019-09-20 1099
0ea47e4d06fe89 Kyle Tso 2019-09-20 1100 tcpm_log(port, "AMS %s start", tcpm_ams_str[ams]);
0ea47e4d06fe89 Kyle Tso 2019-09-20 1101
0ea47e4d06fe89 Kyle Tso 2019-09-20 1102 if (!tcpm_ams_interruptible(port) && ams != HARD_RESET) {
0ea47e4d06fe89 Kyle Tso 2019-09-20 1103 port->upcoming_state = INVALID_STATE;
0ea47e4d06fe89 Kyle Tso 2019-09-20 1104 tcpm_log(port, "AMS %s not interruptible, aborting",
0ea47e4d06fe89 Kyle Tso 2019-09-20 1105 tcpm_ams_str[port->ams]);
0ea47e4d06fe89 Kyle Tso 2019-09-20 1106 return -EAGAIN;
0ea47e4d06fe89 Kyle Tso 2019-09-20 1107 }
0ea47e4d06fe89 Kyle Tso 2019-09-20 1108
0ea47e4d06fe89 Kyle Tso 2019-09-20 1109 if (port->pwr_role == TYPEC_SOURCE) {
0ea47e4d06fe89 Kyle Tso 2019-09-20 1110 enum typec_cc_status cc_req;
0ea47e4d06fe89 Kyle Tso 2019-09-20 1111
0ea47e4d06fe89 Kyle Tso 2019-09-20 1112 port->ams = ams;
0ea47e4d06fe89 Kyle Tso 2019-09-20 1113
0ea47e4d06fe89 Kyle Tso 2019-09-20 1114 if (ams == HARD_RESET) {
0ea47e4d06fe89 Kyle Tso 2019-09-20 1115 tcpm_set_cc(port, tcpm_rp_cc(port));
0ea47e4d06fe89 Kyle Tso 2019-09-20 1116 tcpm_pd_transmit(port, TCPC_TX_HARD_RESET, NULL);
0ea47e4d06fe89 Kyle Tso 2019-09-20 1117 tcpm_set_state(port, HARD_RESET_START, 0);
0ea47e4d06fe89 Kyle Tso 2019-09-20 1118 return ret;
0ea47e4d06fe89 Kyle Tso 2019-09-20 1119 } else if (ams == SOFT_RESET_AMS) {
0ea47e4d06fe89 Kyle Tso 2019-09-20 1120 if (!port->explicit_contract) {
0ea47e4d06fe89 Kyle Tso 2019-09-20 1121 port->upcoming_state = INVALID_STATE;
0ea47e4d06fe89 Kyle Tso 2019-09-20 1122 tcpm_set_cc(port, tcpm_rp_cc(port));
0ea47e4d06fe89 Kyle Tso 2019-09-20 1123 return ret;
0ea47e4d06fe89 Kyle Tso 2019-09-20 1124 }
0ea47e4d06fe89 Kyle Tso 2019-09-20 1125 } else if (tcpm_vdm_ams(port)) {
0ea47e4d06fe89 Kyle Tso 2019-09-20 1126 /* tSinkTx is enforced in vdm_run_state_machine */
59e8594ebb63b2 Kyle Tso 2019-09-20 1127 if (port->negotiated_rev >= PD_REV30)
0ea47e4d06fe89 Kyle Tso 2019-09-20 1128 tcpm_set_cc(port, SINK_TX_NG);
0ea47e4d06fe89 Kyle Tso 2019-09-20 1129 return ret;
0ea47e4d06fe89 Kyle Tso 2019-09-20 1130 }
0ea47e4d06fe89 Kyle Tso 2019-09-20 1131
59e8594ebb63b2 Kyle Tso 2019-09-20 1132 if (port->negotiated_rev >= PD_REV30) {
0ea47e4d06fe89 Kyle Tso 2019-09-20 1133 cc_req = port->cc_req;
0ea47e4d06fe89 Kyle Tso 2019-09-20 1134 tcpm_set_cc(port, SINK_TX_NG);
59e8594ebb63b2 Kyle Tso 2019-09-20 1135 }
59e8594ebb63b2 Kyle Tso 2019-09-20 1136
59e8594ebb63b2 Kyle Tso 2019-09-20 1137 switch (port->state) {
59e8594ebb63b2 Kyle Tso 2019-09-20 1138 case SRC_READY:
59e8594ebb63b2 Kyle Tso 2019-09-20 1139 case SRC_STARTUP:
59e8594ebb63b2 Kyle Tso 2019-09-20 1140 case SRC_SOFT_RESET_WAIT_SNK_TX:
59e8594ebb63b2 Kyle Tso 2019-09-20 1141 case SOFT_RESET:
59e8594ebb63b2 Kyle Tso 2019-09-20 1142 case SOFT_RESET_SEND:
59e8594ebb63b2 Kyle Tso 2019-09-20 1143 if (port->negotiated_rev >= PD_REV30)
59e8594ebb63b2 Kyle Tso 2019-09-20 @1144 tcpm_set_state(port, AMS_START,
59e8594ebb63b2 Kyle Tso 2019-09-20 1145 cc_req == SINK_TX_OK ?
0ea47e4d06fe89 Kyle Tso 2019-09-20 1146 PD_T_SINK_TX : 0);
0ea47e4d06fe89 Kyle Tso 2019-09-20 1147 else
59e8594ebb63b2 Kyle Tso 2019-09-20 1148 tcpm_set_state(port, AMS_START, 0);
59e8594ebb63b2 Kyle Tso 2019-09-20 1149 break;
59e8594ebb63b2 Kyle Tso 2019-09-20 1150 default:
59e8594ebb63b2 Kyle Tso 2019-09-20 1151 if (port->negotiated_rev >= PD_REV30)
59e8594ebb63b2 Kyle Tso 2019-09-20 1152 tcpm_set_state(port, SRC_READY,
59e8594ebb63b2 Kyle Tso 2019-09-20 1153 cc_req == SINK_TX_OK ?
0ea47e4d06fe89 Kyle Tso 2019-09-20 1154 PD_T_SINK_TX : 0);
59e8594ebb63b2 Kyle Tso 2019-09-20 1155 else
59e8594ebb63b2 Kyle Tso 2019-09-20 1156 tcpm_set_state(port, SRC_READY, 0);
59e8594ebb63b2 Kyle Tso 2019-09-20 1157 break;
59e8594ebb63b2 Kyle Tso 2019-09-20 1158 }
0ea47e4d06fe89 Kyle Tso 2019-09-20 1159 } else {
59e8594ebb63b2 Kyle Tso 2019-09-20 1160 if (port->negotiated_rev >= PD_REV30 &&
59e8594ebb63b2 Kyle Tso 2019-09-20 1161 !tcpm_sink_tx_ok(port) &&
0ea47e4d06fe89 Kyle Tso 2019-09-20 1162 ams != SOFT_RESET_AMS &&
0ea47e4d06fe89 Kyle Tso 2019-09-20 1163 ams != HARD_RESET) {
0ea47e4d06fe89 Kyle Tso 2019-09-20 1164 port->upcoming_state = INVALID_STATE;
0ea47e4d06fe89 Kyle Tso 2019-09-20 1165 tcpm_log(port, "Sink TX No Go");
0ea47e4d06fe89 Kyle Tso 2019-09-20 1166 return -EAGAIN;
0ea47e4d06fe89 Kyle Tso 2019-09-20 1167 }
0ea47e4d06fe89 Kyle Tso 2019-09-20 1168
0ea47e4d06fe89 Kyle Tso 2019-09-20 1169 port->ams = ams;
0ea47e4d06fe89 Kyle Tso 2019-09-20 1170
0ea47e4d06fe89 Kyle Tso 2019-09-20 1171 if (ams == HARD_RESET) {
0ea47e4d06fe89 Kyle Tso 2019-09-20 1172 tcpm_pd_transmit(port, TCPC_TX_HARD_RESET, NULL);
0ea47e4d06fe89 Kyle Tso 2019-09-20 1173 tcpm_set_state(port, HARD_RESET_START, 0);
0ea47e4d06fe89 Kyle Tso 2019-09-20 1174 return ret;
0ea47e4d06fe89 Kyle Tso 2019-09-20 1175 } else if (tcpm_vdm_ams(port)) {
0ea47e4d06fe89 Kyle Tso 2019-09-20 1176 return ret;
0ea47e4d06fe89 Kyle Tso 2019-09-20 1177 }
0ea47e4d06fe89 Kyle Tso 2019-09-20 1178
0ea47e4d06fe89 Kyle Tso 2019-09-20 1179 if (port->state == SNK_READY ||
0ea47e4d06fe89 Kyle Tso 2019-09-20 1180 port->state == SNK_SOFT_RESET)
0ea47e4d06fe89 Kyle Tso 2019-09-20 1181 tcpm_set_state(port, AMS_START, 0);
0ea47e4d06fe89 Kyle Tso 2019-09-20 1182 else
0ea47e4d06fe89 Kyle Tso 2019-09-20 1183 tcpm_set_state(port, SNK_READY, 0);
0ea47e4d06fe89 Kyle Tso 2019-09-20 1184 }
0ea47e4d06fe89 Kyle Tso 2019-09-20 1185
0ea47e4d06fe89 Kyle Tso 2019-09-20 1186 return ret;
0ea47e4d06fe89 Kyle Tso 2019-09-20 1187 }
0ea47e4d06fe89 Kyle Tso 2019-09-20 1188

---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation

Attachment: .config.gz
Description: .config.gz