Hi Krishna, Thank you for the patch! Perhaps something to improve: [auto build test WARNING on broonie-spi/for-next] [also build test WARNING on linus/master v6.0-rc7 next-20220930] [If your patch is applied to the wrong git tree, kindly drop us a note. And when submitting patch, we suggest to use '--base' as documented in https://git-scm.com/docs/git-format-patch#_base_tree_information] url: https://github.com/intel-lab-lkp/linux/commits/Krishna-Yarlagadda/spi-tegra210-quad-Fix-combined-sequence/20221001-202349 base: https://git.kernel.org/pub/scm/linux/kernel/git/broonie/spi.git for-next config: m68k-allyesconfig compiler: m68k-linux-gcc (GCC) 12.1.0 reproduce (this is a W=1 build): wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # https://github.com/intel-lab-lkp/linux/commit/1c7e26dac0d8ad5c5cb6f42d07a57b943b369185 git remote add linux-review https://github.com/intel-lab-lkp/linux git fetch --no-tags linux-review Krishna-Yarlagadda/spi-tegra210-quad-Fix-combined-sequence/20221001-202349 git checkout 1c7e26dac0d8ad5c5cb6f42d07a57b943b369185 # save the config file mkdir build_dir && cp config build_dir/.config COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-12.1.0 make.cross W=1 O=build_dir ARCH=m68k SHELL=/bin/bash drivers/ If you fix the issue, kindly add following tag where applicable | Reported-by: kernel test robot All warnings (new ones prefixed by >>): drivers/spi/spi-tegra210-quad.c: In function 'tegra_qspi_start_dma_based_transfer': >> drivers/spi/spi-tegra210-quad.c:669:56: warning: right shift count >= width of type [-Wshift-count-overflow] 669 | tegra_qspi_writel(tqspi, ((tx_dma_phys >> 32) & 0xff), | ^~ drivers/spi/spi-tegra210-quad.c:696:56: warning: right shift count >= width of type [-Wshift-count-overflow] 696 | tegra_qspi_writel(tqspi, ((rx_dma_phys >> 32) & 0xff), | ^~ vim +669 drivers/spi/spi-tegra210-quad.c 614 615 static int tegra_qspi_start_dma_based_transfer(struct tegra_qspi *tqspi, struct spi_transfer *t) 616 { 617 struct dma_slave_config dma_sconfig = { 0 }; 618 dma_addr_t rx_dma_phys, tx_dma_phys; 619 unsigned int len; 620 u8 dma_burst; 621 int ret = 0; 622 u32 val; 623 bool has_ext_dma = (tqspi->soc_data->has_dma & 624 QSPI_DMA_EXT) ? true : false; 625 626 if (tqspi->is_packed) { 627 ret = tegra_qspi_dma_map_xfer(tqspi, t); 628 if (ret < 0) 629 return ret; 630 } 631 632 val = QSPI_DMA_BLK_SET(tqspi->curr_dma_words - 1); 633 tegra_qspi_writel(tqspi, val, QSPI_DMA_BLK); 634 635 tegra_qspi_unmask_irq(tqspi); 636 637 if (tqspi->is_packed) 638 len = DIV_ROUND_UP(tqspi->curr_dma_words * tqspi->bytes_per_word, 4) * 4; 639 else 640 len = tqspi->curr_dma_words * 4; 641 642 /* set attention level based on length of transfer */ 643 if (has_ext_dma) { 644 val = 0; 645 if (len & 0xf) { 646 val |= QSPI_TX_TRIG_1 | QSPI_RX_TRIG_1; 647 dma_burst = 1; 648 } else if (((len) >> 4) & 0x1) { 649 val |= QSPI_TX_TRIG_4 | QSPI_RX_TRIG_4; 650 dma_burst = 4; 651 } else { 652 val |= QSPI_TX_TRIG_8 | QSPI_RX_TRIG_8; 653 dma_burst = 8; 654 } 655 } 656 657 tegra_qspi_writel(tqspi, val, QSPI_DMA_CTL); 658 tqspi->dma_control_reg = val; 659 660 dma_sconfig.device_fc = true; 661 if ((tqspi->cur_direction & DATA_DIR_TX) && !has_ext_dma) { 662 if (tqspi->is_packed) 663 tx_dma_phys = t->tx_dma; 664 else 665 tx_dma_phys = tqspi->tx_dma_phys; 666 tegra_qspi_copy_client_txbuf_to_qspi_txbuf(tqspi, t); 667 tegra_qspi_writel(tqspi, (tx_dma_phys & 0xffffffff), 668 QSPI_DMA_MEM_ADDRESS_REG); > 669 tegra_qspi_writel(tqspi, ((tx_dma_phys >> 32) & 0xff), 670 QSPI_DMA_HI_ADDRESS_REG); 671 } else if ((tqspi->cur_direction & DATA_DIR_TX) && has_ext_dma) { 672 dma_sconfig.dst_addr = tqspi->phys + QSPI_TX_FIFO; 673 dma_sconfig.dst_addr_width = DMA_SLAVE_BUSWIDTH_4_BYTES; 674 dma_sconfig.dst_maxburst = dma_burst; 675 ret = dmaengine_slave_config(tqspi->tx_dma_chan, &dma_sconfig); 676 if (ret < 0) { 677 dev_err(tqspi->dev, "failed DMA slave config: %d\n", ret); 678 return ret; 679 } 680 681 tegra_qspi_copy_client_txbuf_to_qspi_txbuf(tqspi, t); 682 ret = tegra_qspi_start_tx_dma(tqspi, t, len); 683 if (ret < 0) { 684 dev_err(tqspi->dev, "failed to starting TX DMA: %d\n", ret); 685 return ret; 686 } 687 } 688 689 if ((tqspi->cur_direction & DATA_DIR_RX) && !has_ext_dma) { 690 if (tqspi->is_packed) 691 rx_dma_phys = t->rx_dma; 692 else 693 rx_dma_phys = tqspi->rx_dma_phys; 694 tegra_qspi_writel(tqspi, (rx_dma_phys & 0xffffffff), 695 QSPI_DMA_MEM_ADDRESS_REG); 696 tegra_qspi_writel(tqspi, ((rx_dma_phys >> 32) & 0xff), 697 QSPI_DMA_HI_ADDRESS_REG); 698 } else if ((tqspi->cur_direction & DATA_DIR_RX) && has_ext_dma) { 699 dma_sconfig.src_addr = tqspi->phys + QSPI_RX_FIFO; 700 dma_sconfig.src_addr_width = DMA_SLAVE_BUSWIDTH_4_BYTES; 701 dma_sconfig.src_maxburst = dma_burst; 702 ret = dmaengine_slave_config(tqspi->rx_dma_chan, &dma_sconfig); 703 if (ret < 0) { 704 dev_err(tqspi->dev, "failed DMA slave config: %d\n", ret); 705 return ret; 706 } 707 708 dma_sync_single_for_device(tqspi->dev, tqspi->rx_dma_phys, 709 tqspi->dma_buf_size, 710 DMA_FROM_DEVICE); 711 712 ret = tegra_qspi_start_rx_dma(tqspi, t, len); 713 if (ret < 0) { 714 dev_err(tqspi->dev, "failed to start RX DMA: %d\n", ret); 715 if (tqspi->cur_direction & DATA_DIR_TX) 716 dmaengine_terminate_all(tqspi->tx_dma_chan); 717 return ret; 718 } 719 } 720 721 tegra_qspi_writel(tqspi, tqspi->command1_reg, QSPI_COMMAND1); 722 723 tqspi->is_curr_dma_xfer = true; 724 tqspi->dma_control_reg = val; 725 val |= QSPI_DMA_EN; 726 tegra_qspi_writel(tqspi, val, QSPI_DMA_CTL); 727 728 return ret; 729 } 730 -- 0-DAY CI Kernel Test Service https://01.org/lkp