Messages in this thread | | | Date | Wed, 6 Dec 2017 09:17:37 +0800 | From | kbuild test robot <> | Subject | Re: [PATCH v2 06/15] NTB: ntb_perf: Add full multi-port NTB API support |
| |
Hi Serge,
I love your patch! Perhaps something to improve:
[auto build test WARNING on linus/master] [also build test WARNING on v4.15-rc2] [cannot apply to ntb/ntb-next next-20171205] [if your patch is applied to the wrong git tree, please drop us a note to help improve the system]
url: https://github.com/0day-ci/linux/commits/Serge-Semin/NTB-Add-full-multi-port-API-support-to-the-test-drivers/20171206-081300 config: x86_64-randconfig-x004-201749 (attached as .config) compiler: gcc-7 (Debian 7.2.0-12) 7.2.1 20171025 reproduce: # save the attached .config to linux build tree make ARCH=x86_64
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/ntb/test/ntb_perf.c: In function 'perf_thread_work': >> drivers/ntb/test/ntb_perf.c:821:22: warning: 'try' may be used uninitialized in this function [-Wmaybe-uninitialized] } while (!tx && (try++ < DMA_TRIES)); ~~~^~ drivers/ntb/test/ntb_perf.c:782:6: note: 'try' was declared here int try, ret = 0; ^~~
vim +/try +821 drivers/ntb/test/ntb_perf.c
775 776 static int perf_copy_chunk(struct perf_thread *pthr, 777 void __iomem *dst, void *src, size_t len) 778 { 779 struct dma_async_tx_descriptor *tx; 780 struct dmaengine_unmap_data *unmap; 781 struct device *dma_dev; 782 int try, ret = 0; 783 784 if (!use_dma) { 785 memcpy_toio(dst, src, len); 786 goto ret_check_tsync; 787 } 788 789 dma_dev = pthr->dma_chan->device->dev; 790 791 if (!is_dma_copy_aligned(pthr->dma_chan->device, offset_in_page(src), 792 offset_in_page(dst), len)) 793 return -EIO; 794 795 unmap = dmaengine_get_unmap_data(dma_dev, 2, GFP_NOWAIT); 796 if (!unmap) 797 return -ENOMEM; 798 799 unmap->len = len; 800 unmap->addr[0] = dma_map_page(dma_dev, virt_to_page(src), 801 offset_in_page(src), len, DMA_TO_DEVICE); 802 if (dma_mapping_error(dma_dev, unmap->addr[0])) { 803 ret = -EIO; 804 goto err_free_resource; 805 } 806 unmap->to_cnt = 1; 807 808 unmap->addr[1] = dma_map_page(dma_dev, virt_to_page(dst), 809 offset_in_page(dst), len, DMA_FROM_DEVICE); 810 if (dma_mapping_error(dma_dev, unmap->addr[1])) { 811 ret = -EIO; 812 goto err_free_resource; 813 } 814 unmap->from_cnt = 1; 815 816 do { 817 tx = dmaengine_prep_dma_memcpy(pthr->dma_chan, unmap->addr[1], 818 unmap->addr[0], len, DMA_PREP_INTERRUPT | DMA_CTRL_ACK); 819 if (!tx) 820 msleep(DMA_MDELAY); > 821 } while (!tx && (try++ < DMA_TRIES)); 822 823 if (!tx) { 824 ret = -EIO; 825 goto err_free_resource; 826 } 827 828 tx->callback = perf_dma_copy_callback; 829 tx->callback_param = pthr; 830 dma_set_unmap(tx, unmap); 831 832 if (dma_submit_error(dmaengine_submit(tx))) { 833 dmaengine_unmap_put(unmap); 834 goto err_free_resource; 835 } 836 837 dmaengine_unmap_put(unmap); 838 839 atomic_inc(&pthr->dma_sync); 840 dma_async_issue_pending(pthr->dma_chan); 841 842 ret_check_tsync: 843 return likely(atomic_read(&pthr->perf->tsync) > 0) ? 0 : -EINTR; 844 845 err_free_resource: 846 dmaengine_unmap_put(unmap); 847 848 return ret; 849 } 850
--- 0-DAY kernel test infrastructure Open Source Technology Center https://lists.01.org/pipermail/kbuild-all Intel Corporation [unhandled content-type:application/gzip] | |