CC: [email protected] CC: [email protected] TO: Hyun Kwon <[email protected]> CC: Laurent Pinchart <[email protected]>
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master head: 368094df48e680fa51cedb68537408cfa64b788e commit: d76271d22694e874ed70791702db9252ffe96a4c drm: xlnx: DRM/KMS driver for Xilinx ZynqMP DisplayPort Subsystem date: 11 months ago :::::: branch date: 26 hours ago :::::: commit date: 11 months ago config: h8300-randconfig-m031-20210609 (attached as .config) compiler: h8300-linux-gcc (GCC) 9.3.0 If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot <[email protected]> Reported-by: Dan Carpenter <[email protected]> smatch warnings: drivers/gpu/drm/xlnx/zynqmp_dp.c:997 zynqmp_dp_aux_cmd_submit() error: we previously assumed 'buf' could be null (see line 966) vim +/buf +997 drivers/gpu/drm/xlnx/zynqmp_dp.c d76271d22694e8 Hyun Kwon 2018-07-07 926 d76271d22694e8 Hyun Kwon 2018-07-07 927 /** d76271d22694e8 Hyun Kwon 2018-07-07 928 * zynqmp_dp_aux_cmd_submit - Submit aux command d76271d22694e8 Hyun Kwon 2018-07-07 929 * @dp: DisplayPort IP core structure d76271d22694e8 Hyun Kwon 2018-07-07 930 * @cmd: aux command d76271d22694e8 Hyun Kwon 2018-07-07 931 * @addr: aux address d76271d22694e8 Hyun Kwon 2018-07-07 932 * @buf: buffer for command data d76271d22694e8 Hyun Kwon 2018-07-07 933 * @bytes: number of bytes for @buf d76271d22694e8 Hyun Kwon 2018-07-07 934 * @reply: reply code to be returned d76271d22694e8 Hyun Kwon 2018-07-07 935 * d76271d22694e8 Hyun Kwon 2018-07-07 936 * Submit an aux command. All aux related commands, native or i2c aux d76271d22694e8 Hyun Kwon 2018-07-07 937 * read/write, are submitted through this function. The function is mapped to d76271d22694e8 Hyun Kwon 2018-07-07 938 * the transfer function of struct drm_dp_aux. This function involves in d76271d22694e8 Hyun Kwon 2018-07-07 939 * multiple register reads/writes, thus synchronization is needed, and it is d76271d22694e8 Hyun Kwon 2018-07-07 940 * done by drm_dp_helper using @hw_mutex. The calling thread goes into sleep d76271d22694e8 Hyun Kwon 2018-07-07 941 * if there's no immediate reply to the command submission. The reply code is d76271d22694e8 Hyun Kwon 2018-07-07 942 * returned at @reply if @reply != NULL. d76271d22694e8 Hyun Kwon 2018-07-07 943 * d76271d22694e8 Hyun Kwon 2018-07-07 944 * Return: 0 if the command is submitted properly, or corresponding error code: d76271d22694e8 Hyun Kwon 2018-07-07 945 * -EBUSY when there is any request already being processed d76271d22694e8 Hyun Kwon 2018-07-07 946 * -ETIMEDOUT when receiving reply is timed out d76271d22694e8 Hyun Kwon 2018-07-07 947 * -EIO when received bytes are less than requested d76271d22694e8 Hyun Kwon 2018-07-07 948 */ d76271d22694e8 Hyun Kwon 2018-07-07 949 static int zynqmp_dp_aux_cmd_submit(struct zynqmp_dp *dp, u32 cmd, u16 addr, d76271d22694e8 Hyun Kwon 2018-07-07 950 u8 *buf, u8 bytes, u8 *reply) d76271d22694e8 Hyun Kwon 2018-07-07 951 { d76271d22694e8 Hyun Kwon 2018-07-07 952 bool is_read = (cmd & AUX_READ_BIT) ? true : false; d76271d22694e8 Hyun Kwon 2018-07-07 953 u32 reg, i; d76271d22694e8 Hyun Kwon 2018-07-07 954 d76271d22694e8 Hyun Kwon 2018-07-07 955 reg = zynqmp_dp_read(dp, ZYNQMP_DP_INTERRUPT_SIGNAL_STATE); d76271d22694e8 Hyun Kwon 2018-07-07 956 if (reg & ZYNQMP_DP_INTERRUPT_SIGNAL_STATE_REQUEST) d76271d22694e8 Hyun Kwon 2018-07-07 957 return -EBUSY; d76271d22694e8 Hyun Kwon 2018-07-07 958 d76271d22694e8 Hyun Kwon 2018-07-07 959 zynqmp_dp_write(dp, ZYNQMP_DP_AUX_ADDRESS, addr); d76271d22694e8 Hyun Kwon 2018-07-07 960 if (!is_read) d76271d22694e8 Hyun Kwon 2018-07-07 961 for (i = 0; i < bytes; i++) d76271d22694e8 Hyun Kwon 2018-07-07 962 zynqmp_dp_write(dp, ZYNQMP_DP_AUX_WRITE_FIFO, d76271d22694e8 Hyun Kwon 2018-07-07 963 buf[i]); d76271d22694e8 Hyun Kwon 2018-07-07 964 d76271d22694e8 Hyun Kwon 2018-07-07 965 reg = cmd << ZYNQMP_DP_AUX_COMMAND_CMD_SHIFT; d76271d22694e8 Hyun Kwon 2018-07-07 @966 if (!buf || !bytes) d76271d22694e8 Hyun Kwon 2018-07-07 967 reg |= ZYNQMP_DP_AUX_COMMAND_ADDRESS_ONLY; d76271d22694e8 Hyun Kwon 2018-07-07 968 else d76271d22694e8 Hyun Kwon 2018-07-07 969 reg |= (bytes - 1) << ZYNQMP_DP_AUX_COMMAND_BYTES_SHIFT; d76271d22694e8 Hyun Kwon 2018-07-07 970 zynqmp_dp_write(dp, ZYNQMP_DP_AUX_COMMAND, reg); d76271d22694e8 Hyun Kwon 2018-07-07 971 d76271d22694e8 Hyun Kwon 2018-07-07 972 /* Wait for reply to be delivered upto 2ms */ d76271d22694e8 Hyun Kwon 2018-07-07 973 for (i = 0; ; i++) { d76271d22694e8 Hyun Kwon 2018-07-07 974 reg = zynqmp_dp_read(dp, ZYNQMP_DP_INTERRUPT_SIGNAL_STATE); d76271d22694e8 Hyun Kwon 2018-07-07 975 if (reg & ZYNQMP_DP_INTERRUPT_SIGNAL_STATE_REPLY) d76271d22694e8 Hyun Kwon 2018-07-07 976 break; d76271d22694e8 Hyun Kwon 2018-07-07 977 d76271d22694e8 Hyun Kwon 2018-07-07 978 if (reg & ZYNQMP_DP_INTERRUPT_SIGNAL_STATE_REPLY_TIMEOUT || d76271d22694e8 Hyun Kwon 2018-07-07 979 i == 2) d76271d22694e8 Hyun Kwon 2018-07-07 980 return -ETIMEDOUT; d76271d22694e8 Hyun Kwon 2018-07-07 981 d76271d22694e8 Hyun Kwon 2018-07-07 982 usleep_range(1000, 1100); d76271d22694e8 Hyun Kwon 2018-07-07 983 } d76271d22694e8 Hyun Kwon 2018-07-07 984 d76271d22694e8 Hyun Kwon 2018-07-07 985 reg = zynqmp_dp_read(dp, ZYNQMP_DP_AUX_REPLY_CODE); d76271d22694e8 Hyun Kwon 2018-07-07 986 if (reply) d76271d22694e8 Hyun Kwon 2018-07-07 987 *reply = reg; d76271d22694e8 Hyun Kwon 2018-07-07 988 d76271d22694e8 Hyun Kwon 2018-07-07 989 if (is_read && d76271d22694e8 Hyun Kwon 2018-07-07 990 (reg == ZYNQMP_DP_AUX_REPLY_CODE_AUX_ACK || d76271d22694e8 Hyun Kwon 2018-07-07 991 reg == ZYNQMP_DP_AUX_REPLY_CODE_I2C_ACK)) { d76271d22694e8 Hyun Kwon 2018-07-07 992 reg = zynqmp_dp_read(dp, ZYNQMP_DP_REPLY_DATA_COUNT); d76271d22694e8 Hyun Kwon 2018-07-07 993 if ((reg & ZYNQMP_DP_REPLY_DATA_COUNT_MASK) != bytes) d76271d22694e8 Hyun Kwon 2018-07-07 994 return -EIO; d76271d22694e8 Hyun Kwon 2018-07-07 995 d76271d22694e8 Hyun Kwon 2018-07-07 996 for (i = 0; i < bytes; i++) d76271d22694e8 Hyun Kwon 2018-07-07 @997 buf[i] = zynqmp_dp_read(dp, ZYNQMP_DP_AUX_REPLY_DATA); d76271d22694e8 Hyun Kwon 2018-07-07 998 } d76271d22694e8 Hyun Kwon 2018-07-07 999 d76271d22694e8 Hyun Kwon 2018-07-07 1000 return 0; d76271d22694e8 Hyun Kwon 2018-07-07 1001 } d76271d22694e8 Hyun Kwon 2018-07-07 1002 --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/[email protected]
.config.gz
Description: application/gzip
_______________________________________________ kbuild mailing list -- [email protected] To unsubscribe send an email to [email protected]
