:::::: :::::: Manual check reason: "low confidence static check first_new_problem: drivers/dma/ppc4xx/adma.c:1329: warning: expecting prototype for ppc440spe_adma_device_estimate(). Prototype was for ppc440spe_adma_estimate() instead" ::::::
BCC: [email protected] CC: [email protected] CC: [email protected] TO: Christophe Leroy <[email protected]> CC: Michael Ellerman <[email protected]> tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master head: 2ae08b36c06ea8df73a79f6b80ff7964e006e9e3 commit: 2255411d1d0f0661d1e5acd5f6edf4e6652a345a powerpc/44x: Fix build failure with GCC 12 (unrecognized opcode: `wrteei') date: 2 weeks ago :::::: branch date: 4 hours ago :::::: commit date: 2 weeks ago config: powerpc-randconfig-s053-20220811 (https://download.01.org/0day-ci/archive/20220812/[email protected]/config) compiler: powerpc-linux-gcc (GCC) 12.1.0 reproduce: wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # apt-get install sparse # sparse version: v0.6.4-39-gce1a6720-dirty # https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=2255411d1d0f0661d1e5acd5f6edf4e6652a345a git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git git fetch --no-tags linus master git checkout 2255411d1d0f0661d1e5acd5f6edf4e6652a345a # save the config file mkdir build_dir && cp config build_dir/.config COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-12.1.0 make.cross C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' O=build_dir ARCH=powerpc SHELL=/bin/bash drivers/dma/ppc4xx/ If you fix the issue, kindly add following tag where applicable Reported-by: kernel test robot <[email protected]> All warnings (new ones prefixed by >>): drivers/dma/ppc4xx/adma.c:233: warning: Function parameter or member 'desc' not described in 'ppc440spe_desc_init_interrupt' drivers/dma/ppc4xx/adma.c:233: warning: Function parameter or member 'chan' not described in 'ppc440spe_desc_init_interrupt' drivers/dma/ppc4xx/adma.c:261: warning: Function parameter or member 'desc' not described in 'ppc440spe_desc_init_null_xor' drivers/dma/ppc4xx/adma.c:273: warning: Function parameter or member 'desc' not described in 'ppc440spe_desc_init_xor' drivers/dma/ppc4xx/adma.c:273: warning: Function parameter or member 'src_cnt' not described in 'ppc440spe_desc_init_xor' drivers/dma/ppc4xx/adma.c:273: warning: Function parameter or member 'flags' not described in 'ppc440spe_desc_init_xor' drivers/dma/ppc4xx/adma.c:293: warning: Function parameter or member 'desc' not described in 'ppc440spe_desc_init_dma2pq' drivers/dma/ppc4xx/adma.c:293: warning: Function parameter or member 'dst_cnt' not described in 'ppc440spe_desc_init_dma2pq' drivers/dma/ppc4xx/adma.c:293: warning: Function parameter or member 'src_cnt' not described in 'ppc440spe_desc_init_dma2pq' drivers/dma/ppc4xx/adma.c:293: warning: Function parameter or member 'flags' not described in 'ppc440spe_desc_init_dma2pq' drivers/dma/ppc4xx/adma.c:320: warning: Function parameter or member 'desc' not described in 'ppc440spe_desc_init_dma01pq' drivers/dma/ppc4xx/adma.c:320: warning: Function parameter or member 'dst_cnt' not described in 'ppc440spe_desc_init_dma01pq' drivers/dma/ppc4xx/adma.c:320: warning: Function parameter or member 'src_cnt' not described in 'ppc440spe_desc_init_dma01pq' drivers/dma/ppc4xx/adma.c:320: warning: Function parameter or member 'flags' not described in 'ppc440spe_desc_init_dma01pq' drivers/dma/ppc4xx/adma.c:320: warning: Function parameter or member 'op' not described in 'ppc440spe_desc_init_dma01pq' drivers/dma/ppc4xx/adma.c:433: warning: Function parameter or member 'desc' not described in 'ppc440spe_desc_init_dma01pqzero_sum' drivers/dma/ppc4xx/adma.c:433: warning: Function parameter or member 'dst_cnt' not described in 'ppc440spe_desc_init_dma01pqzero_sum' drivers/dma/ppc4xx/adma.c:433: warning: Function parameter or member 'src_cnt' not described in 'ppc440spe_desc_init_dma01pqzero_sum' drivers/dma/ppc4xx/adma.c:503: warning: Function parameter or member 'desc' not described in 'ppc440spe_desc_init_memcpy' drivers/dma/ppc4xx/adma.c:503: warning: Function parameter or member 'flags' not described in 'ppc440spe_desc_init_memcpy' drivers/dma/ppc4xx/adma.c:526: warning: Function parameter or member 'desc' not described in 'ppc440spe_desc_set_src_addr' drivers/dma/ppc4xx/adma.c:526: warning: Function parameter or member 'chan' not described in 'ppc440spe_desc_set_src_addr' drivers/dma/ppc4xx/adma.c:526: warning: Function parameter or member 'src_idx' not described in 'ppc440spe_desc_set_src_addr' drivers/dma/ppc4xx/adma.c:526: warning: Function parameter or member 'addrh' not described in 'ppc440spe_desc_set_src_addr' drivers/dma/ppc4xx/adma.c:526: warning: Function parameter or member 'addrl' not described in 'ppc440spe_desc_set_src_addr' drivers/dma/ppc4xx/adma.c:560: warning: Function parameter or member 'desc' not described in 'ppc440spe_desc_set_src_mult' drivers/dma/ppc4xx/adma.c:560: warning: Function parameter or member 'chan' not described in 'ppc440spe_desc_set_src_mult' drivers/dma/ppc4xx/adma.c:560: warning: Function parameter or member 'mult_index' not described in 'ppc440spe_desc_set_src_mult' drivers/dma/ppc4xx/adma.c:560: warning: Function parameter or member 'sg_index' not described in 'ppc440spe_desc_set_src_mult' drivers/dma/ppc4xx/adma.c:560: warning: Function parameter or member 'mult_value' not described in 'ppc440spe_desc_set_src_mult' drivers/dma/ppc4xx/adma.c:605: warning: Function parameter or member 'desc' not described in 'ppc440spe_desc_set_dest_addr' drivers/dma/ppc4xx/adma.c:605: warning: Function parameter or member 'chan' not described in 'ppc440spe_desc_set_dest_addr' drivers/dma/ppc4xx/adma.c:605: warning: Function parameter or member 'addrh' not described in 'ppc440spe_desc_set_dest_addr' drivers/dma/ppc4xx/adma.c:605: warning: Function parameter or member 'addrl' not described in 'ppc440spe_desc_set_dest_addr' drivers/dma/ppc4xx/adma.c:605: warning: Function parameter or member 'dst_idx' not described in 'ppc440spe_desc_set_dest_addr' drivers/dma/ppc4xx/adma.c:645: warning: Function parameter or member 'desc' not described in 'ppc440spe_desc_set_byte_count' drivers/dma/ppc4xx/adma.c:645: warning: Function parameter or member 'chan' not described in 'ppc440spe_desc_set_byte_count' drivers/dma/ppc4xx/adma.c:645: warning: Function parameter or member 'byte_count' not described in 'ppc440spe_desc_set_byte_count' drivers/dma/ppc4xx/adma.c:666: warning: Function parameter or member 'byte_count' not described in 'ppc440spe_desc_set_rxor_block_size' drivers/dma/ppc4xx/adma.c:679: warning: Function parameter or member 'desc' not described in 'ppc440spe_desc_set_dcheck' drivers/dma/ppc4xx/adma.c:679: warning: Function parameter or member 'chan' not described in 'ppc440spe_desc_set_dcheck' drivers/dma/ppc4xx/adma.c:679: warning: Function parameter or member 'qword' not described in 'ppc440spe_desc_set_dcheck' drivers/dma/ppc4xx/adma.c:701: warning: Function parameter or member 'prev_desc' not described in 'ppc440spe_xor_set_link' drivers/dma/ppc4xx/adma.c:701: warning: Function parameter or member 'next_desc' not described in 'ppc440spe_xor_set_link' drivers/dma/ppc4xx/adma.c:724: warning: Function parameter or member 'chan' not described in 'ppc440spe_desc_set_link' drivers/dma/ppc4xx/adma.c:724: warning: Function parameter or member 'prev_desc' not described in 'ppc440spe_desc_set_link' drivers/dma/ppc4xx/adma.c:724: warning: Function parameter or member 'next_desc' not described in 'ppc440spe_desc_set_link' drivers/dma/ppc4xx/adma.c:771: warning: Function parameter or member 'desc' not described in 'ppc440spe_desc_get_link' drivers/dma/ppc4xx/adma.c:771: warning: Function parameter or member 'chan' not described in 'ppc440spe_desc_get_link' drivers/dma/ppc4xx/adma.c:783: warning: Function parameter or member 'desc' not described in 'ppc440spe_desc_is_aligned' drivers/dma/ppc4xx/adma.c:783: warning: Function parameter or member 'num_slots' not described in 'ppc440spe_desc_is_aligned' drivers/dma/ppc4xx/adma.c:793: warning: Function parameter or member 'len' not described in 'ppc440spe_chan_xor_slot_count' drivers/dma/ppc4xx/adma.c:793: warning: Function parameter or member 'src_cnt' not described in 'ppc440spe_chan_xor_slot_count' drivers/dma/ppc4xx/adma.c:793: warning: Function parameter or member 'slots_per_op' not described in 'ppc440spe_chan_xor_slot_count' drivers/dma/ppc4xx/adma.c:814: warning: Function parameter or member 'srcs' not described in 'ppc440spe_dma2_pq_slot_count' drivers/dma/ppc4xx/adma.c:814: warning: Function parameter or member 'src_cnt' not described in 'ppc440spe_dma2_pq_slot_count' drivers/dma/ppc4xx/adma.c:814: warning: Function parameter or member 'len' not described in 'ppc440spe_dma2_pq_slot_count' drivers/dma/ppc4xx/adma.c:898: warning: Function parameter or member 'chan' not described in 'ppc440spe_adma_device_clear_eot_status' drivers/dma/ppc4xx/adma.c:1017: warning: Function parameter or member 'chan' not described in 'ppc440spe_chan_is_busy' drivers/dma/ppc4xx/adma.c:1050: warning: Function parameter or member 'chan' not described in 'ppc440spe_chan_set_first_xor_descriptor' drivers/dma/ppc4xx/adma.c:1050: warning: Function parameter or member 'next_desc' not described in 'ppc440spe_chan_set_first_xor_descriptor' drivers/dma/ppc4xx/adma.c:1076: warning: Function parameter or member 'chan' not described in 'ppc440spe_dma_put_desc' drivers/dma/ppc4xx/adma.c:1076: warning: Function parameter or member 'desc' not described in 'ppc440spe_dma_put_desc' drivers/dma/ppc4xx/adma.c:1095: warning: Function parameter or member 'chan' not described in 'ppc440spe_chan_append' drivers/dma/ppc4xx/adma.c:1174: warning: Function parameter or member 'chan' not described in 'ppc440spe_chan_get_current_descriptor' drivers/dma/ppc4xx/adma.c:1198: warning: Function parameter or member 'chan' not described in 'ppc440spe_chan_run' drivers/dma/ppc4xx/adma.c:1252: warning: Function parameter or member 'srcs' not described in 'ppc440spe_can_rxor' drivers/dma/ppc4xx/adma.c:1252: warning: Function parameter or member 'src_cnt' not described in 'ppc440spe_can_rxor' drivers/dma/ppc4xx/adma.c:1252: warning: Function parameter or member 'len' not described in 'ppc440spe_can_rxor' >> drivers/dma/ppc4xx/adma.c:1329: warning: expecting prototype for >> ppc440spe_adma_device_estimate(). Prototype was for >> ppc440spe_adma_estimate() instead drivers/dma/ppc4xx/adma.c:1422: warning: Function parameter or member 'entry_idx' not described in 'ppc440spe_get_group_entry' drivers/dma/ppc4xx/adma.c:1446: warning: Function parameter or member 'chan' not described in 'ppc440spe_adma_free_slots' drivers/dma/ppc4xx/adma.c:1465: warning: Function parameter or member 'desc' not described in 'ppc440spe_adma_run_tx_complete_actions' drivers/dma/ppc4xx/adma.c:1465: warning: Function parameter or member 'chan' not described in 'ppc440spe_adma_run_tx_complete_actions' drivers/dma/ppc4xx/adma.c:1465: warning: Function parameter or member 'cookie' not described in 'ppc440spe_adma_run_tx_complete_actions' drivers/dma/ppc4xx/adma.c:1489: warning: Function parameter or member 'desc' not described in 'ppc440spe_adma_clean_slot' drivers/dma/ppc4xx/adma.c:1489: warning: Function parameter or member 'chan' not described in 'ppc440spe_adma_clean_slot' drivers/dma/ppc4xx/adma.c:1534: warning: Function parameter or member 'chan' not described in '__ppc440spe_adma_slot_cleanup' drivers/dma/ppc4xx/adma.c:1662: warning: Function parameter or member 't' not described in 'ppc440spe_adma_tasklet' drivers/dma/ppc4xx/adma.c:1674: warning: Function parameter or member 'chan' not described in 'ppc440spe_adma_slot_cleanup' drivers/dma/ppc4xx/adma.c:1686: warning: Function parameter or member 'chan' not described in 'ppc440spe_adma_alloc_slots' drivers/dma/ppc4xx/adma.c:1686: warning: Function parameter or member 'num_slots' not described in 'ppc440spe_adma_alloc_slots' drivers/dma/ppc4xx/adma.c:1686: warning: Function parameter or member 'slots_per_op' not described in 'ppc440spe_adma_alloc_slots' drivers/dma/ppc4xx/adma.c:1765: warning: Function parameter or member 'chan' not described in 'ppc440spe_adma_alloc_chan_resources' drivers/dma/ppc4xx/adma.c:1846: warning: Function parameter or member 'desc' not described in 'ppc440spe_rxor_set_region' drivers/dma/ppc4xx/adma.c:1846: warning: Function parameter or member 'xor_arg_no' not described in 'ppc440spe_rxor_set_region' drivers/dma/ppc4xx/adma.c:1846: warning: Function parameter or member 'mask' not described in 'ppc440spe_rxor_set_region' >> drivers/dma/ppc4xx/adma.c:1846: warning: expecting prototype for >> ppc440spe_rxor_set_region_data(). Prototype was for >> ppc440spe_rxor_set_region() instead drivers/dma/ppc4xx/adma.c:1857: warning: Function parameter or member 'desc' not described in 'ppc440spe_rxor_set_src' drivers/dma/ppc4xx/adma.c:1857: warning: Function parameter or member 'xor_arg_no' not described in 'ppc440spe_rxor_set_src' drivers/dma/ppc4xx/adma.c:1857: warning: Function parameter or member 'addr' not described in 'ppc440spe_rxor_set_src' drivers/dma/ppc4xx/adma.c:1869: warning: Function parameter or member 'desc' not described in 'ppc440spe_rxor_set_mult' drivers/dma/ppc4xx/adma.c:1869: warning: Function parameter or member 'xor_arg_no' not described in 'ppc440spe_rxor_set_mult' drivers/dma/ppc4xx/adma.c:1869: warning: Function parameter or member 'idx' not described in 'ppc440spe_rxor_set_mult' drivers/dma/ppc4xx/adma.c:1869: warning: Function parameter or member 'mult' not described in 'ppc440spe_rxor_set_mult' drivers/dma/ppc4xx/adma.c:1880: warning: Function parameter or member 'chan' not described in 'ppc440spe_adma_check_threshold' drivers/dma/ppc4xx/adma.c:1896: warning: Function parameter or member 'tx' not described in 'ppc440spe_adma_tx_submit' drivers/dma/ppc4xx/adma.c:1946: warning: Function parameter or member 'chan' not described in 'ppc440spe_adma_prep_dma_interrupt' drivers/dma/ppc4xx/adma.c:1946: warning: Function parameter or member 'flags' not described in 'ppc440spe_adma_prep_dma_interrupt' drivers/dma/ppc4xx/adma.c:1978: warning: Function parameter or member 'chan' not described in 'ppc440spe_adma_prep_dma_memcpy' drivers/dma/ppc4xx/adma.c:1978: warning: Function parameter or member 'dma_dest' not described in 'ppc440spe_adma_prep_dma_memcpy' drivers/dma/ppc4xx/adma.c:1978: warning: Function parameter or member 'dma_src' not described in 'ppc440spe_adma_prep_dma_memcpy' drivers/dma/ppc4xx/adma.c:1978: warning: Function parameter or member 'len' not described in 'ppc440spe_adma_prep_dma_memcpy' drivers/dma/ppc4xx/adma.c:1978: warning: Function parameter or member 'flags' not described in 'ppc440spe_adma_prep_dma_memcpy' drivers/dma/ppc4xx/adma.c:2020: warning: Function parameter or member 'chan' not described in 'ppc440spe_adma_prep_dma_xor' drivers/dma/ppc4xx/adma.c:2020: warning: Function parameter or member 'dma_dest' not described in 'ppc440spe_adma_prep_dma_xor' drivers/dma/ppc4xx/adma.c:2020: warning: Function parameter or member 'dma_src' not described in 'ppc440spe_adma_prep_dma_xor' drivers/dma/ppc4xx/adma.c:2020: warning: Function parameter or member 'src_cnt' not described in 'ppc440spe_adma_prep_dma_xor' drivers/dma/ppc4xx/adma.c:2020: warning: Function parameter or member 'len' not described in 'ppc440spe_adma_prep_dma_xor' drivers/dma/ppc4xx/adma.c:2020: warning: Function parameter or member 'flags' not described in 'ppc440spe_adma_prep_dma_xor' drivers/dma/ppc4xx/adma.c:2069: warning: Function parameter or member 'desc' not described in 'ppc440spe_adma_init_dma2rxor_slot' drivers/dma/ppc4xx/adma.c:2069: warning: Function parameter or member 'src' not described in 'ppc440spe_adma_init_dma2rxor_slot' drivers/dma/ppc4xx/adma.c:2069: warning: Function parameter or member 'src_cnt' not described in 'ppc440spe_adma_init_dma2rxor_slot' drivers/dma/ppc4xx/adma.c:2087: warning: Function parameter or member 'ppc440spe_chan' not described in 'ppc440spe_dma01_prep_mult' drivers/dma/ppc4xx/adma.c:2087: warning: Function parameter or member 'dst' not described in 'ppc440spe_dma01_prep_mult' drivers/dma/ppc4xx/adma.c:2087: warning: Function parameter or member 'dst_cnt' not described in 'ppc440spe_dma01_prep_mult' drivers/dma/ppc4xx/adma.c:2087: warning: Function parameter or member 'src' not described in 'ppc440spe_dma01_prep_mult' drivers/dma/ppc4xx/adma.c:2087: warning: Function parameter or member 'src_cnt' not described in 'ppc440spe_dma01_prep_mult' drivers/dma/ppc4xx/adma.c:2087: warning: Function parameter or member 'scf' not described in 'ppc440spe_dma01_prep_mult' drivers/dma/ppc4xx/adma.c:2087: warning: Function parameter or member 'len' not described in 'ppc440spe_dma01_prep_mult' drivers/dma/ppc4xx/adma.c:2087: warning: Function parameter or member 'flags' not described in 'ppc440spe_dma01_prep_mult' drivers/dma/ppc4xx/adma.c:2173: warning: Function parameter or member 'ppc440spe_chan' not described in 'ppc440spe_dma01_prep_sum_product' drivers/dma/ppc4xx/adma.c:2173: warning: Function parameter or member 'dst' not described in 'ppc440spe_dma01_prep_sum_product' drivers/dma/ppc4xx/adma.c:2173: warning: Function parameter or member 'src' not described in 'ppc440spe_dma01_prep_sum_product' drivers/dma/ppc4xx/adma.c:2173: warning: Function parameter or member 'src_cnt' not described in 'ppc440spe_dma01_prep_sum_product' drivers/dma/ppc4xx/adma.c:2173: warning: Function parameter or member 'scf' not described in 'ppc440spe_dma01_prep_sum_product' drivers/dma/ppc4xx/adma.c:2173: warning: Function parameter or member 'len' not described in 'ppc440spe_dma01_prep_sum_product' drivers/dma/ppc4xx/adma.c:2173: warning: Function parameter or member 'flags' not described in 'ppc440spe_dma01_prep_sum_product' drivers/dma/ppc4xx/adma.c:2511: warning: Function parameter or member 'chan' not described in 'ppc440spe_adma_prep_dma_pq' drivers/dma/ppc4xx/adma.c:2511: warning: Function parameter or member 'dst' not described in 'ppc440spe_adma_prep_dma_pq' drivers/dma/ppc4xx/adma.c:2511: warning: Function parameter or member 'src' not described in 'ppc440spe_adma_prep_dma_pq' drivers/dma/ppc4xx/adma.c:2511: warning: Function parameter or member 'src_cnt' not described in 'ppc440spe_adma_prep_dma_pq' drivers/dma/ppc4xx/adma.c:2511: warning: Function parameter or member 'scf' not described in 'ppc440spe_adma_prep_dma_pq' drivers/dma/ppc4xx/adma.c:2511: warning: Function parameter or member 'len' not described in 'ppc440spe_adma_prep_dma_pq' drivers/dma/ppc4xx/adma.c:2511: warning: Function parameter or member 'flags' not described in 'ppc440spe_adma_prep_dma_pq' drivers/dma/ppc4xx/adma.c:2587: warning: Function parameter or member 'chan' not described in 'ppc440spe_adma_prep_dma_pqzero_sum' drivers/dma/ppc4xx/adma.c:2587: warning: Function parameter or member 'pq' not described in 'ppc440spe_adma_prep_dma_pqzero_sum' drivers/dma/ppc4xx/adma.c:2587: warning: Function parameter or member 'src' not described in 'ppc440spe_adma_prep_dma_pqzero_sum' drivers/dma/ppc4xx/adma.c:2587: warning: Function parameter or member 'src_cnt' not described in 'ppc440spe_adma_prep_dma_pqzero_sum' drivers/dma/ppc4xx/adma.c:2587: warning: Function parameter or member 'scf' not described in 'ppc440spe_adma_prep_dma_pqzero_sum' drivers/dma/ppc4xx/adma.c:2587: warning: Function parameter or member 'len' not described in 'ppc440spe_adma_prep_dma_pqzero_sum' drivers/dma/ppc4xx/adma.c:2587: warning: Function parameter or member 'pqres' not described in 'ppc440spe_adma_prep_dma_pqzero_sum' drivers/dma/ppc4xx/adma.c:2587: warning: Function parameter or member 'flags' not described in 'ppc440spe_adma_prep_dma_pqzero_sum' drivers/dma/ppc4xx/adma.c:2765: warning: Function parameter or member 'chan' not described in 'ppc440spe_adma_prep_dma_xor_zero_sum' drivers/dma/ppc4xx/adma.c:2765: warning: Function parameter or member 'src' not described in 'ppc440spe_adma_prep_dma_xor_zero_sum' drivers/dma/ppc4xx/adma.c:2765: warning: Function parameter or member 'src_cnt' not described in 'ppc440spe_adma_prep_dma_xor_zero_sum' drivers/dma/ppc4xx/adma.c:2765: warning: Function parameter or member 'len' not described in 'ppc440spe_adma_prep_dma_xor_zero_sum' drivers/dma/ppc4xx/adma.c:2765: warning: Function parameter or member 'result' not described in 'ppc440spe_adma_prep_dma_xor_zero_sum' drivers/dma/ppc4xx/adma.c:2765: warning: Function parameter or member 'flags' not described in 'ppc440spe_adma_prep_dma_xor_zero_sum' drivers/dma/ppc4xx/adma.c:2785: warning: Function parameter or member 'sw_desc' not described in 'ppc440spe_adma_set_dest' drivers/dma/ppc4xx/adma.c:2785: warning: Function parameter or member 'addr' not described in 'ppc440spe_adma_set_dest' drivers/dma/ppc4xx/adma.c:2785: warning: Function parameter or member 'index' not described in 'ppc440spe_adma_set_dest' drivers/dma/ppc4xx/adma.c:2832: warning: Function parameter or member 'sw_desc' not described in 'ppc440spe_adma_pq_set_dest' drivers/dma/ppc4xx/adma.c:2832: warning: Function parameter or member 'addrs' not described in 'ppc440spe_adma_pq_set_dest' drivers/dma/ppc4xx/adma.c:2832: warning: Function parameter or member 'flags' not described in 'ppc440spe_adma_pq_set_dest' drivers/dma/ppc4xx/adma.c:3022: warning: Function parameter or member 'sw_desc' not described in 'ppc440spe_adma_pqzero_sum_set_dest' drivers/dma/ppc4xx/adma.c:3022: warning: Function parameter or member 'paddr' not described in 'ppc440spe_adma_pqzero_sum_set_dest' drivers/dma/ppc4xx/adma.c:3022: warning: Function parameter or member 'qaddr' not described in 'ppc440spe_adma_pqzero_sum_set_dest' >> drivers/dma/ppc4xx/adma.c:3022: warning: expecting prototype for >> ppc440spe_adma_pq_zero_sum_set_dest(). Prototype was for >> ppc440spe_adma_pqzero_sum_set_dest() instead drivers/dma/ppc4xx/adma.c:3086: warning: Function parameter or member 'desc' not described in 'ppc440spe_desc_set_xor_src_cnt' drivers/dma/ppc4xx/adma.c:3086: warning: Function parameter or member 'src_cnt' not described in 'ppc440spe_desc_set_xor_src_cnt' drivers/dma/ppc4xx/adma.c:3098: warning: Function parameter or member 'sw_desc' not described in 'ppc440spe_adma_pq_set_src' drivers/dma/ppc4xx/adma.c:3098: warning: Function parameter or member 'addr' not described in 'ppc440spe_adma_pq_set_src' drivers/dma/ppc4xx/adma.c:3098: warning: Function parameter or member 'index' not described in 'ppc440spe_adma_pq_set_src' drivers/dma/ppc4xx/adma.c:3208: warning: Function parameter or member 'sw_desc' not described in 'ppc440spe_adma_memcpy_xor_set_src' drivers/dma/ppc4xx/adma.c:3208: warning: Function parameter or member 'addr' not described in 'ppc440spe_adma_memcpy_xor_set_src' drivers/dma/ppc4xx/adma.c:3208: warning: Function parameter or member 'index' not described in 'ppc440spe_adma_memcpy_xor_set_src' drivers/dma/ppc4xx/adma.c:3224: warning: Function parameter or member 'desc' not described in 'ppc440spe_adma_dma2rxor_inc_addr' drivers/dma/ppc4xx/adma.c:3224: warning: Function parameter or member 'cursor' not described in 'ppc440spe_adma_dma2rxor_inc_addr' drivers/dma/ppc4xx/adma.c:3224: warning: Function parameter or member 'index' not described in 'ppc440spe_adma_dma2rxor_inc_addr' drivers/dma/ppc4xx/adma.c:3224: warning: Function parameter or member 'src_cnt' not described in 'ppc440spe_adma_dma2rxor_inc_addr' drivers/dma/ppc4xx/adma.c:3242: warning: Function parameter or member 'hdesc' not described in 'ppc440spe_adma_dma2rxor_prep_src' drivers/dma/ppc4xx/adma.c:3242: warning: Function parameter or member 'cursor' not described in 'ppc440spe_adma_dma2rxor_prep_src' drivers/dma/ppc4xx/adma.c:3242: warning: Function parameter or member 'index' not described in 'ppc440spe_adma_dma2rxor_prep_src' drivers/dma/ppc4xx/adma.c:3242: warning: Function parameter or member 'src_cnt' not described in 'ppc440spe_adma_dma2rxor_prep_src' drivers/dma/ppc4xx/adma.c:3242: warning: Function parameter or member 'addr' not described in 'ppc440spe_adma_dma2rxor_prep_src' drivers/dma/ppc4xx/adma.c:3360: warning: Function parameter or member 'desc' not described in 'ppc440spe_adma_dma2rxor_set_src' drivers/dma/ppc4xx/adma.c:3360: warning: Function parameter or member 'index' not described in 'ppc440spe_adma_dma2rxor_set_src' drivers/dma/ppc4xx/adma.c:3360: warning: Function parameter or member 'addr' not described in 'ppc440spe_adma_dma2rxor_set_src' drivers/dma/ppc4xx/adma.c:3401: warning: Function parameter or member 'desc' not described in 'ppc440spe_adma_dma2rxor_set_mult' drivers/dma/ppc4xx/adma.c:3401: warning: Function parameter or member 'index' not described in 'ppc440spe_adma_dma2rxor_set_mult' drivers/dma/ppc4xx/adma.c:3401: warning: Function parameter or member 'mult' not described in 'ppc440spe_adma_dma2rxor_set_mult' drivers/dma/ppc4xx/adma.c:3437: warning: Function parameter or member 'cursor' not described in 'ppc440spe_init_rxor_cursor' drivers/dma/ppc4xx/adma.c:3449: warning: Function parameter or member 'sw_desc' not described in 'ppc440spe_adma_pq_set_src_mult' drivers/dma/ppc4xx/adma.c:3449: warning: Function parameter or member 'mult' not described in 'ppc440spe_adma_pq_set_src_mult' drivers/dma/ppc4xx/adma.c:3449: warning: Function parameter or member 'index' not described in 'ppc440spe_adma_pq_set_src_mult' drivers/dma/ppc4xx/adma.c:3449: warning: Function parameter or member 'dst_pos' not described in 'ppc440spe_adma_pq_set_src_mult' drivers/dma/ppc4xx/adma.c:3533: warning: Function parameter or member 'chan' not described in 'ppc440spe_adma_free_chan_resources' drivers/dma/ppc4xx/adma.c:3593: warning: Function parameter or member 'irq' not described in 'ppc440spe_adma_eot_handler' drivers/dma/ppc4xx/adma.c:3593: warning: Function parameter or member 'data' not described in 'ppc440spe_adma_eot_handler' drivers/dma/ppc4xx/adma.c:3610: warning: Function parameter or member 'irq' not described in 'ppc440spe_adma_err_handler' drivers/dma/ppc4xx/adma.c:3610: warning: Function parameter or member 'data' not described in 'ppc440spe_adma_err_handler' drivers/dma/ppc4xx/adma.c:3626: warning: Function parameter or member 'unused' not described in 'ppc440spe_test_callback' drivers/dma/ppc4xx/adma.c:3634: warning: Function parameter or member 'chan' not described in 'ppc440spe_adma_issue_pending' drivers/dma/ppc4xx/adma.c:3654: warning: Function parameter or member 'chan' not described in 'ppc440spe_chan_start_null_xor' drivers/dma/ppc4xx/adma.c:3700: warning: Function parameter or member 'chan' not described in 'ppc440spe_test_raid6' drivers/dma/ppc4xx/adma.c:4005: warning: Function parameter or member 'ofdev' not described in 'ppc440spe_adma_probe' drivers/dma/ppc4xx/adma.c:4234: warning: Function parameter or member 'ofdev' not described in 'ppc440spe_adma_remove' sparse warnings: (new ones prefixed by >>) >> drivers/dma/ppc4xx/adma.c:140:17: sparse: sparse: cast to restricted __le32 >> drivers/dma/ppc4xx/adma.c:140:17: sparse: sparse: cast to restricted __le32 >> drivers/dma/ppc4xx/adma.c:140:17: sparse: sparse: cast to restricted __le32 >> drivers/dma/ppc4xx/adma.c:140:17: sparse: sparse: cast to restricted __le32 >> drivers/dma/ppc4xx/adma.c:140:17: sparse: sparse: cast to restricted __le32 >> drivers/dma/ppc4xx/adma.c:140:17: sparse: sparse: cast to restricted __le32 >> drivers/dma/ppc4xx/adma.c:140:17: sparse: sparse: cast to restricted __le32 >> drivers/dma/ppc4xx/adma.c:543:35: sparse: sparse: incorrect type in >> assignment (different base types) @@ expected unsigned int [usertype] >> sg1l @@ got restricted __le32 [usertype] @@ drivers/dma/ppc4xx/adma.c:543:35: sparse: expected unsigned int [usertype] sg1l drivers/dma/ppc4xx/adma.c:543:35: sparse: got restricted __le32 [usertype] >> drivers/dma/ppc4xx/adma.c:544:35: sparse: sparse: invalid assignment: |= >> drivers/dma/ppc4xx/adma.c:544:35: sparse: left side has type unsigned int >> drivers/dma/ppc4xx/adma.c:544:35: sparse: right side has type restricted >> __le32 drivers/dma/ppc4xx/adma.c:589:23: sparse: sparse: invalid assignment: |= drivers/dma/ppc4xx/adma.c:589:23: sparse: left side has type unsigned int drivers/dma/ppc4xx/adma.c:589:23: sparse: right side has type restricted __le32 >> drivers/dma/ppc4xx/adma.c:627:23: sparse: sparse: incorrect type in >> assignment (different base types) @@ expected unsigned int [usertype] @@ >> got restricted __le32 [usertype] @@ drivers/dma/ppc4xx/adma.c:627:23: sparse: expected unsigned int [usertype] drivers/dma/ppc4xx/adma.c:627:23: sparse: got restricted __le32 [usertype] drivers/dma/ppc4xx/adma.c:628:23: sparse: sparse: invalid assignment: |= drivers/dma/ppc4xx/adma.c:628:23: sparse: left side has type unsigned int drivers/dma/ppc4xx/adma.c:628:23: sparse: right side has type restricted __le32 >> drivers/dma/ppc4xx/adma.c:653:34: sparse: sparse: incorrect type in >> assignment (different base types) @@ expected unsigned int [usertype] >> cnt @@ got restricted __le32 [usertype] @@ drivers/dma/ppc4xx/adma.c:653:34: sparse: expected unsigned int [usertype] cnt drivers/dma/ppc4xx/adma.c:653:34: sparse: got restricted __le32 [usertype] >> drivers/dma/ppc4xx/adma.c:686:38: sparse: sparse: incorrect type in argument >> 2 (different address spaces) @@ expected void volatile [noderef] __iomem >> *addr @@ got unsigned int * @@ drivers/dma/ppc4xx/adma.c:686:38: sparse: expected void volatile [noderef] __iomem *addr drivers/dma/ppc4xx/adma.c:686:38: sparse: got unsigned int * drivers/dma/ppc4xx/adma.c:687:38: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void volatile [noderef] __iomem *addr @@ got unsigned int * @@ drivers/dma/ppc4xx/adma.c:687:38: sparse: expected void volatile [noderef] __iomem *addr drivers/dma/ppc4xx/adma.c:687:38: sparse: got unsigned int * drivers/dma/ppc4xx/adma.c:688:38: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void volatile [noderef] __iomem *addr @@ got unsigned int * @@ drivers/dma/ppc4xx/adma.c:688:38: sparse: expected void volatile [noderef] __iomem *addr drivers/dma/ppc4xx/adma.c:688:38: sparse: got unsigned int * drivers/dma/ppc4xx/adma.c:689:39: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void volatile [noderef] __iomem *addr @@ got unsigned int * @@ drivers/dma/ppc4xx/adma.c:689:39: sparse: expected void volatile [noderef] __iomem *addr drivers/dma/ppc4xx/adma.c:689:39: sparse: got unsigned int * >> drivers/dma/ppc4xx/adma.c:734:17: sparse: sparse: Using plain integer as >> NULL pointer >> drivers/dma/ppc4xx/adma.c:1185:25: sparse: sparse: incorrect type in >> assignment (different address spaces) @@ expected struct dma_regs >> *dma_reg @@ got struct dma_regs [noderef] __iomem *dma_reg @@ drivers/dma/ppc4xx/adma.c:1185:25: sparse: expected struct dma_regs *dma_reg drivers/dma/ppc4xx/adma.c:1185:25: sparse: got struct dma_regs [noderef] __iomem *dma_reg >> drivers/dma/ppc4xx/adma.c:1186:34: sparse: sparse: incorrect type in >> argument 1 (different address spaces) @@ expected void const volatile >> [noderef] __iomem *addr @@ got unsigned int * @@ drivers/dma/ppc4xx/adma.c:1186:34: sparse: expected void const volatile [noderef] __iomem *addr drivers/dma/ppc4xx/adma.c:1186:34: sparse: got unsigned int * >> drivers/dma/ppc4xx/adma.c:1188:25: sparse: sparse: incorrect type in >> assignment (different address spaces) @@ expected struct xor_regs >> *xor_reg @@ got struct xor_regs [noderef] __iomem *xor_reg @@ drivers/dma/ppc4xx/adma.c:1188:25: sparse: expected struct xor_regs *xor_reg drivers/dma/ppc4xx/adma.c:1188:25: sparse: got struct xor_regs [noderef] __iomem *xor_reg >> drivers/dma/ppc4xx/adma.c:1189:36: sparse: sparse: incorrect type in >> argument 1 (different address spaces) @@ expected void const [noderef] >> __iomem *addr @@ got unsigned int * @@ drivers/dma/ppc4xx/adma.c:1189:36: sparse: expected void const [noderef] __iomem *addr drivers/dma/ppc4xx/adma.c:1189:36: sparse: got unsigned int * drivers/dma/ppc4xx/adma.c:1136:25: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected struct xor_regs *xor_reg @@ got struct xor_regs [noderef] __iomem *xor_reg @@ drivers/dma/ppc4xx/adma.c:1136:25: sparse: expected struct xor_regs *xor_reg drivers/dma/ppc4xx/adma.c:1136:25: sparse: got struct xor_regs [noderef] __iomem *xor_reg drivers/dma/ppc4xx/adma.c:1145:35: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const [noderef] __iomem *addr @@ got unsigned int * @@ drivers/dma/ppc4xx/adma.c:1145:35: sparse: expected void const [noderef] __iomem *addr drivers/dma/ppc4xx/adma.c:1145:35: sparse: got unsigned int * drivers/dma/ppc4xx/adma.c:1155:49: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const [noderef] __iomem *addr @@ got unsigned int * @@ drivers/dma/ppc4xx/adma.c:1155:49: sparse: expected void const [noderef] __iomem *addr drivers/dma/ppc4xx/adma.c:1155:49: sparse: got unsigned int * >> drivers/dma/ppc4xx/adma.c:1157:38: sparse: sparse: incorrect type in >> argument 2 (different address spaces) @@ expected void [noderef] __iomem >> *addr @@ got unsigned int * @@ drivers/dma/ppc4xx/adma.c:1157:38: sparse: expected void [noderef] __iomem *addr drivers/dma/ppc4xx/adma.c:1157:38: sparse: got unsigned int * drivers/dma/ppc4xx/adma.c:909:25: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected struct dma_regs *dma_reg @@ got struct dma_regs [noderef] __iomem *dma_reg @@ drivers/dma/ppc4xx/adma.c:909:25: sparse: expected struct dma_regs *dma_reg drivers/dma/ppc4xx/adma.c:909:25: sparse: got struct dma_regs [noderef] __iomem *dma_reg drivers/dma/ppc4xx/adma.c:910:40: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __iomem *addr @@ got unsigned int * @@ drivers/dma/ppc4xx/adma.c:910:40: sparse: expected void const volatile [noderef] __iomem *addr drivers/dma/ppc4xx/adma.c:910:40: sparse: got unsigned int * drivers/dma/ppc4xx/adma.c:927:37: sparse: sparse: cast to restricted __le32 drivers/dma/ppc4xx/adma.c:972:32: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __iomem *addr @@ got unsigned int * @@ drivers/dma/ppc4xx/adma.c:972:32: sparse: expected void const volatile [noderef] __iomem *addr drivers/dma/ppc4xx/adma.c:972:32: sparse: got unsigned int * drivers/dma/ppc4xx/adma.c:977:40: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void volatile [noderef] __iomem *addr @@ got unsigned int * @@ drivers/dma/ppc4xx/adma.c:977:40: sparse: expected void volatile [noderef] __iomem *addr drivers/dma/ppc4xx/adma.c:977:40: sparse: got unsigned int * drivers/dma/ppc4xx/adma.c:982:25: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected struct xor_regs *xor_reg @@ got struct xor_regs [noderef] __iomem *xor_reg @@ drivers/dma/ppc4xx/adma.c:982:25: sparse: expected struct xor_regs *xor_reg drivers/dma/ppc4xx/adma.c:982:25: sparse: got struct xor_regs [noderef] __iomem *xor_reg drivers/dma/ppc4xx/adma.c:983:34: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const [noderef] __iomem *addr @@ got unsigned int * @@ drivers/dma/ppc4xx/adma.c:983:34: sparse: expected void const [noderef] __iomem *addr drivers/dma/ppc4xx/adma.c:983:34: sparse: got unsigned int * drivers/dma/ppc4xx/adma.c:984:34: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void [noderef] __iomem *addr @@ got unsigned int * @@ drivers/dma/ppc4xx/adma.c:984:34: sparse: expected void [noderef] __iomem *addr drivers/dma/ppc4xx/adma.c:984:34: sparse: got unsigned int * drivers/dma/ppc4xx/adma.c:991:55: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const [noderef] __iomem *addr @@ got unsigned int * @@ drivers/dma/ppc4xx/adma.c:991:55: sparse: expected void const [noderef] __iomem *addr drivers/dma/ppc4xx/adma.c:991:55: sparse: got unsigned int * drivers/dma/ppc4xx/adma.c:993:51: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void [noderef] __iomem *addr @@ got unsigned int * @@ drivers/dma/ppc4xx/adma.c:993:51: sparse: expected void [noderef] __iomem *addr drivers/dma/ppc4xx/adma.c:993:51: sparse: got unsigned int * drivers/dma/ppc4xx/adma.c:995:51: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const [noderef] __iomem *addr @@ got unsigned int * @@ drivers/dma/ppc4xx/adma.c:995:51: sparse: expected void const [noderef] __iomem *addr drivers/dma/ppc4xx/adma.c:995:51: sparse: got unsigned int * drivers/dma/ppc4xx/adma.c:997:46: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void [noderef] __iomem *addr @@ got unsigned int * @@ drivers/dma/ppc4xx/adma.c:997:46: sparse: expected void [noderef] __iomem *addr drivers/dma/ppc4xx/adma.c:997:46: sparse: got unsigned int * drivers/dma/ppc4xx/adma.c:1006:35: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const [noderef] __iomem *addr @@ got unsigned int * @@ drivers/dma/ppc4xx/adma.c:1006:35: sparse: expected void const [noderef] __iomem *addr drivers/dma/ppc4xx/adma.c:1006:35: sparse: got unsigned int * drivers/dma/ppc4xx/adma.c:1025:25: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected struct dma_regs *dma_reg @@ got struct dma_regs [noderef] __iomem *dma_reg @@ drivers/dma/ppc4xx/adma.c:1025:25: sparse: expected struct dma_regs *dma_reg drivers/dma/ppc4xx/adma.c:1025:25: sparse: got struct dma_regs [noderef] __iomem *dma_reg >> drivers/dma/ppc4xx/adma.c:1029:31: sparse: sparse: incorrect type in >> argument 1 (different address spaces) @@ expected void const volatile >> [noderef] __iomem *addr @@ got unsigned short * @@ drivers/dma/ppc4xx/adma.c:1029:31: sparse: expected void const volatile [noderef] __iomem *addr drivers/dma/ppc4xx/adma.c:1029:31: sparse: got unsigned short * drivers/dma/ppc4xx/adma.c:1029:60: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __iomem *addr @@ got unsigned short * @@ drivers/dma/ppc4xx/adma.c:1029:60: sparse: expected void const volatile [noderef] __iomem *addr drivers/dma/ppc4xx/adma.c:1029:60: sparse: got unsigned short * drivers/dma/ppc4xx/adma.c:1030:31: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __iomem *addr @@ got unsigned short * @@ drivers/dma/ppc4xx/adma.c:1030:31: sparse: expected void const volatile [noderef] __iomem *addr drivers/dma/ppc4xx/adma.c:1030:31: sparse: got unsigned short * drivers/dma/ppc4xx/adma.c:1030:60: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __iomem *addr @@ got unsigned short * @@ drivers/dma/ppc4xx/adma.c:1030:60: sparse: expected void const volatile [noderef] __iomem *addr drivers/dma/ppc4xx/adma.c:1030:60: sparse: got unsigned short * drivers/dma/ppc4xx/adma.c:1036:25: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected struct xor_regs *xor_reg @@ got struct xor_regs [noderef] __iomem *xor_reg @@ drivers/dma/ppc4xx/adma.c:1036:25: sparse: expected struct xor_regs *xor_reg drivers/dma/ppc4xx/adma.c:1036:25: sparse: got struct xor_regs [noderef] __iomem *xor_reg drivers/dma/ppc4xx/adma.c:1037:37: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const [noderef] __iomem *addr @@ got unsigned int * @@ drivers/dma/ppc4xx/adma.c:1037:37: sparse: expected void const [noderef] __iomem *addr drivers/dma/ppc4xx/adma.c:1037:37: sparse: got unsigned int * >> drivers/dma/ppc4xx/adma.c:1051:48: sparse: sparse: incorrect type in >> initializer (different address spaces) @@ expected struct xor_regs >> *xor_reg @@ got struct xor_regs [noderef] __iomem *xor_reg @@ drivers/dma/ppc4xx/adma.c:1051:48: sparse: expected struct xor_regs *xor_reg drivers/dma/ppc4xx/adma.c:1051:48: sparse: got struct xor_regs [noderef] __iomem *xor_reg drivers/dma/ppc4xx/adma.c:1053:25: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const [noderef] __iomem *addr @@ got unsigned int * @@ drivers/dma/ppc4xx/adma.c:1053:25: sparse: expected void const [noderef] __iomem *addr drivers/dma/ppc4xx/adma.c:1053:25: sparse: got unsigned int * drivers/dma/ppc4xx/adma.c:1060:41: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void [noderef] __iomem *addr @@ got unsigned int * @@ drivers/dma/ppc4xx/adma.c:1060:41: sparse: expected void [noderef] __iomem *addr drivers/dma/ppc4xx/adma.c:1060:41: sparse: got unsigned int * drivers/dma/ppc4xx/adma.c:1062:39: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void [noderef] __iomem *addr @@ got unsigned int * @@ drivers/dma/ppc4xx/adma.c:1062:39: sparse: expected void [noderef] __iomem *addr drivers/dma/ppc4xx/adma.c:1062:39: sparse: got unsigned int * drivers/dma/ppc4xx/adma.c:1063:25: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void [noderef] __iomem *addr @@ got unsigned int * @@ drivers/dma/ppc4xx/adma.c:1063:25: sparse: expected void [noderef] __iomem *addr drivers/dma/ppc4xx/adma.c:1063:25: sparse: got unsigned int * drivers/dma/ppc4xx/adma.c:1064:33: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const [noderef] __iomem *addr @@ got unsigned int * @@ drivers/dma/ppc4xx/adma.c:1064:33: sparse: expected void const [noderef] __iomem *addr drivers/dma/ppc4xx/adma.c:1064:33: sparse: got unsigned int * drivers/dma/ppc4xx/adma.c:1065:22: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void [noderef] __iomem *addr @@ got unsigned int * @@ drivers/dma/ppc4xx/adma.c:1065:22: sparse: expected void [noderef] __iomem *addr drivers/dma/ppc4xx/adma.c:1065:22: sparse: got unsigned int * >> drivers/dma/ppc4xx/adma.c:1078:48: sparse: sparse: incorrect type in >> initializer (different address spaces) @@ expected struct dma_regs >> *dma_reg @@ got struct dma_regs [noderef] __iomem *dma_reg @@ drivers/dma/ppc4xx/adma.c:1078:48: sparse: expected struct dma_regs *dma_reg drivers/dma/ppc4xx/adma.c:1078:48: sparse: got struct dma_regs [noderef] __iomem *dma_reg drivers/dma/ppc4xx/adma.c:1088:26: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void volatile [noderef] __iomem *addr @@ got unsigned int * @@ drivers/dma/ppc4xx/adma.c:1088:26: sparse: expected void volatile [noderef] __iomem *addr drivers/dma/ppc4xx/adma.c:1088:26: sparse: got unsigned int * drivers/dma/ppc4xx/adma.c:1208:25: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected struct xor_regs *xor_reg @@ got struct xor_regs [noderef] __iomem *xor_reg @@ drivers/dma/ppc4xx/adma.c:1208:25: sparse: expected struct xor_regs *xor_reg drivers/dma/ppc4xx/adma.c:1208:25: sparse: got struct xor_regs [noderef] __iomem *xor_reg drivers/dma/ppc4xx/adma.c:1212:30: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void [noderef] __iomem *addr @@ got unsigned int * @@ drivers/dma/ppc4xx/adma.c:1212:30: sparse: expected void [noderef] __iomem *addr drivers/dma/ppc4xx/adma.c:1212:30: sparse: got unsigned int * drivers/dma/ppc4xx/adma.c:2775:62: sparse: sparse: Using plain integer as NULL pointer >> drivers/dma/ppc4xx/adma.c:4091:14: sparse: sparse: incorrect type in >> assignment (different address spaces) @@ expected void *regs @@ got >> void [noderef] __iomem * @@ drivers/dma/ppc4xx/adma.c:4091:14: sparse: expected void *regs drivers/dma/ppc4xx/adma.c:4091:14: sparse: got void [noderef] __iomem * >> drivers/dma/ppc4xx/adma.c:4099:31: sparse: sparse: incorrect type in >> assignment (different address spaces) @@ expected struct xor_regs >> [noderef] __iomem *xor_reg @@ got void *regs @@ drivers/dma/ppc4xx/adma.c:4099:31: sparse: expected struct xor_regs [noderef] __iomem *xor_reg drivers/dma/ppc4xx/adma.c:4099:31: sparse: got void *regs >> drivers/dma/ppc4xx/adma.c:4106:31: sparse: sparse: incorrect type in >> assignment (different address spaces) @@ expected struct dma_regs >> [noderef] __iomem *dma_reg @@ got void *regs @@ drivers/dma/ppc4xx/adma.c:4106:31: sparse: expected struct dma_regs [noderef] __iomem *dma_reg drivers/dma/ppc4xx/adma.c:4106:31: sparse: got void *regs vim +1329 drivers/dma/ppc4xx/adma.c 12458ea06efd7b Anatolij Gustschin 2009-12-11 1090 12458ea06efd7b Anatolij Gustschin 2009-12-11 1091 /** 12458ea06efd7b Anatolij Gustschin 2009-12-11 1092 * ppc440spe_chan_append - update the h/w chain in the channel 12458ea06efd7b Anatolij Gustschin 2009-12-11 1093 */ 12458ea06efd7b Anatolij Gustschin 2009-12-11 1094 static void ppc440spe_chan_append(struct ppc440spe_adma_chan *chan) 12458ea06efd7b Anatolij Gustschin 2009-12-11 1095 { 12458ea06efd7b Anatolij Gustschin 2009-12-11 1096 struct xor_regs *xor_reg; 12458ea06efd7b Anatolij Gustschin 2009-12-11 1097 struct ppc440spe_adma_desc_slot *iter; 12458ea06efd7b Anatolij Gustschin 2009-12-11 1098 struct xor_cb *xcb; 12458ea06efd7b Anatolij Gustschin 2009-12-11 1099 u32 cur_desc; 12458ea06efd7b Anatolij Gustschin 2009-12-11 1100 unsigned long flags; 12458ea06efd7b Anatolij Gustschin 2009-12-11 1101 12458ea06efd7b Anatolij Gustschin 2009-12-11 1102 local_irq_save(flags); 12458ea06efd7b Anatolij Gustschin 2009-12-11 1103 12458ea06efd7b Anatolij Gustschin 2009-12-11 1104 switch (chan->device->id) { 12458ea06efd7b Anatolij Gustschin 2009-12-11 1105 case PPC440SPE_DMA0_ID: 12458ea06efd7b Anatolij Gustschin 2009-12-11 1106 case PPC440SPE_DMA1_ID: 12458ea06efd7b Anatolij Gustschin 2009-12-11 1107 cur_desc = ppc440spe_chan_get_current_descriptor(chan); 12458ea06efd7b Anatolij Gustschin 2009-12-11 1108 12458ea06efd7b Anatolij Gustschin 2009-12-11 1109 if (likely(cur_desc)) { 12458ea06efd7b Anatolij Gustschin 2009-12-11 1110 iter = chan_last_sub[chan->device->id]; 12458ea06efd7b Anatolij Gustschin 2009-12-11 1111 BUG_ON(!iter); 12458ea06efd7b Anatolij Gustschin 2009-12-11 1112 } else { 12458ea06efd7b Anatolij Gustschin 2009-12-11 1113 /* first peer */ 12458ea06efd7b Anatolij Gustschin 2009-12-11 1114 iter = chan_first_cdb[chan->device->id]; 12458ea06efd7b Anatolij Gustschin 2009-12-11 1115 BUG_ON(!iter); 12458ea06efd7b Anatolij Gustschin 2009-12-11 1116 ppc440spe_dma_put_desc(chan, iter); 12458ea06efd7b Anatolij Gustschin 2009-12-11 1117 chan->hw_chain_inited = 1; 12458ea06efd7b Anatolij Gustschin 2009-12-11 1118 } 12458ea06efd7b Anatolij Gustschin 2009-12-11 1119 12458ea06efd7b Anatolij Gustschin 2009-12-11 1120 /* is there something new to append */ 12458ea06efd7b Anatolij Gustschin 2009-12-11 1121 if (!iter->hw_next) 12458ea06efd7b Anatolij Gustschin 2009-12-11 1122 break; 12458ea06efd7b Anatolij Gustschin 2009-12-11 1123 12458ea06efd7b Anatolij Gustschin 2009-12-11 1124 /* flush descriptors from the s/w queue to fifo */ 12458ea06efd7b Anatolij Gustschin 2009-12-11 1125 list_for_each_entry_continue(iter, &chan->chain, chain_node) { 12458ea06efd7b Anatolij Gustschin 2009-12-11 1126 ppc440spe_dma_put_desc(chan, iter); 12458ea06efd7b Anatolij Gustschin 2009-12-11 1127 if (!iter->hw_next) 12458ea06efd7b Anatolij Gustschin 2009-12-11 1128 break; 12458ea06efd7b Anatolij Gustschin 2009-12-11 1129 } 12458ea06efd7b Anatolij Gustschin 2009-12-11 1130 break; 12458ea06efd7b Anatolij Gustschin 2009-12-11 1131 case PPC440SPE_XOR_ID: 12458ea06efd7b Anatolij Gustschin 2009-12-11 1132 /* update h/w links and refetch */ 12458ea06efd7b Anatolij Gustschin 2009-12-11 1133 if (!xor_last_submit->hw_next) 12458ea06efd7b Anatolij Gustschin 2009-12-11 1134 break; 12458ea06efd7b Anatolij Gustschin 2009-12-11 1135 12458ea06efd7b Anatolij Gustschin 2009-12-11 1136 xor_reg = chan->device->xor_reg; 12458ea06efd7b Anatolij Gustschin 2009-12-11 1137 /* the last linked CDB has to generate an interrupt 12458ea06efd7b Anatolij Gustschin 2009-12-11 1138 * that we'd be able to append the next lists to h/w 12458ea06efd7b Anatolij Gustschin 2009-12-11 1139 * regardless of the XOR engine state at the moment of 12458ea06efd7b Anatolij Gustschin 2009-12-11 1140 * appending of these next lists 12458ea06efd7b Anatolij Gustschin 2009-12-11 1141 */ 12458ea06efd7b Anatolij Gustschin 2009-12-11 1142 xcb = xor_last_linked->hw_desc; 12458ea06efd7b Anatolij Gustschin 2009-12-11 1143 xcb->cbc |= XOR_CBCR_CBCE_BIT; 12458ea06efd7b Anatolij Gustschin 2009-12-11 1144 12458ea06efd7b Anatolij Gustschin 2009-12-11 1145 if (!(ioread32be(&xor_reg->sr) & XOR_SR_XCP_BIT)) { 12458ea06efd7b Anatolij Gustschin 2009-12-11 1146 /* XORcore is idle. Refetch now */ 12458ea06efd7b Anatolij Gustschin 2009-12-11 1147 do_xor_refetch = 0; 12458ea06efd7b Anatolij Gustschin 2009-12-11 1148 ppc440spe_xor_set_link(xor_last_submit, 12458ea06efd7b Anatolij Gustschin 2009-12-11 1149 xor_last_submit->hw_next); 12458ea06efd7b Anatolij Gustschin 2009-12-11 1150 12458ea06efd7b Anatolij Gustschin 2009-12-11 1151 ADMA_LL_DBG(print_cb_list(chan, 12458ea06efd7b Anatolij Gustschin 2009-12-11 1152 xor_last_submit->hw_next)); 12458ea06efd7b Anatolij Gustschin 2009-12-11 1153 12458ea06efd7b Anatolij Gustschin 2009-12-11 1154 xor_last_submit = xor_last_linked; 12458ea06efd7b Anatolij Gustschin 2009-12-11 1155 iowrite32be(ioread32be(&xor_reg->crsr) | 12458ea06efd7b Anatolij Gustschin 2009-12-11 1156 XOR_CRSR_RCBE_BIT | XOR_CRSR_64BA_BIT, 12458ea06efd7b Anatolij Gustschin 2009-12-11 @1157 &xor_reg->crsr); 12458ea06efd7b Anatolij Gustschin 2009-12-11 1158 } else { 12458ea06efd7b Anatolij Gustschin 2009-12-11 1159 /* XORcore is running. Refetch later in the handler */ 12458ea06efd7b Anatolij Gustschin 2009-12-11 1160 do_xor_refetch = 1; 12458ea06efd7b Anatolij Gustschin 2009-12-11 1161 } 12458ea06efd7b Anatolij Gustschin 2009-12-11 1162 12458ea06efd7b Anatolij Gustschin 2009-12-11 1163 break; 12458ea06efd7b Anatolij Gustschin 2009-12-11 1164 } 12458ea06efd7b Anatolij Gustschin 2009-12-11 1165 12458ea06efd7b Anatolij Gustschin 2009-12-11 1166 local_irq_restore(flags); 12458ea06efd7b Anatolij Gustschin 2009-12-11 1167 } 12458ea06efd7b Anatolij Gustschin 2009-12-11 1168 12458ea06efd7b Anatolij Gustschin 2009-12-11 1169 /** 12458ea06efd7b Anatolij Gustschin 2009-12-11 1170 * ppc440spe_chan_get_current_descriptor - get the currently executed descriptor 12458ea06efd7b Anatolij Gustschin 2009-12-11 1171 */ 12458ea06efd7b Anatolij Gustschin 2009-12-11 1172 static u32 12458ea06efd7b Anatolij Gustschin 2009-12-11 1173 ppc440spe_chan_get_current_descriptor(struct ppc440spe_adma_chan *chan) 12458ea06efd7b Anatolij Gustschin 2009-12-11 1174 { 12458ea06efd7b Anatolij Gustschin 2009-12-11 1175 struct dma_regs *dma_reg; 12458ea06efd7b Anatolij Gustschin 2009-12-11 1176 struct xor_regs *xor_reg; 12458ea06efd7b Anatolij Gustschin 2009-12-11 1177 12458ea06efd7b Anatolij Gustschin 2009-12-11 1178 if (unlikely(!chan->hw_chain_inited)) 12458ea06efd7b Anatolij Gustschin 2009-12-11 1179 /* h/w descriptor chain is not initialized yet */ 12458ea06efd7b Anatolij Gustschin 2009-12-11 1180 return 0; 12458ea06efd7b Anatolij Gustschin 2009-12-11 1181 12458ea06efd7b Anatolij Gustschin 2009-12-11 1182 switch (chan->device->id) { 12458ea06efd7b Anatolij Gustschin 2009-12-11 1183 case PPC440SPE_DMA0_ID: 12458ea06efd7b Anatolij Gustschin 2009-12-11 1184 case PPC440SPE_DMA1_ID: 12458ea06efd7b Anatolij Gustschin 2009-12-11 @1185 dma_reg = chan->device->dma_reg; 12458ea06efd7b Anatolij Gustschin 2009-12-11 @1186 return ioread32(&dma_reg->acpl) & (~DMA_CDB_MSK); 12458ea06efd7b Anatolij Gustschin 2009-12-11 1187 case PPC440SPE_XOR_ID: 12458ea06efd7b Anatolij Gustschin 2009-12-11 @1188 xor_reg = chan->device->xor_reg; 12458ea06efd7b Anatolij Gustschin 2009-12-11 @1189 return ioread32be(&xor_reg->ccbalr); 12458ea06efd7b Anatolij Gustschin 2009-12-11 1190 } 12458ea06efd7b Anatolij Gustschin 2009-12-11 1191 return 0; 12458ea06efd7b Anatolij Gustschin 2009-12-11 1192 } 12458ea06efd7b Anatolij Gustschin 2009-12-11 1193 12458ea06efd7b Anatolij Gustschin 2009-12-11 1194 /** 12458ea06efd7b Anatolij Gustschin 2009-12-11 1195 * ppc440spe_chan_run - enable the channel 12458ea06efd7b Anatolij Gustschin 2009-12-11 1196 */ 12458ea06efd7b Anatolij Gustschin 2009-12-11 1197 static void ppc440spe_chan_run(struct ppc440spe_adma_chan *chan) 12458ea06efd7b Anatolij Gustschin 2009-12-11 1198 { 12458ea06efd7b Anatolij Gustschin 2009-12-11 1199 struct xor_regs *xor_reg; 12458ea06efd7b Anatolij Gustschin 2009-12-11 1200 12458ea06efd7b Anatolij Gustschin 2009-12-11 1201 switch (chan->device->id) { 12458ea06efd7b Anatolij Gustschin 2009-12-11 1202 case PPC440SPE_DMA0_ID: 12458ea06efd7b Anatolij Gustschin 2009-12-11 1203 case PPC440SPE_DMA1_ID: 12458ea06efd7b Anatolij Gustschin 2009-12-11 1204 /* DMAs are always enabled, do nothing */ 12458ea06efd7b Anatolij Gustschin 2009-12-11 1205 break; 12458ea06efd7b Anatolij Gustschin 2009-12-11 1206 case PPC440SPE_XOR_ID: 12458ea06efd7b Anatolij Gustschin 2009-12-11 1207 /* drain write buffer */ 12458ea06efd7b Anatolij Gustschin 2009-12-11 1208 xor_reg = chan->device->xor_reg; 12458ea06efd7b Anatolij Gustschin 2009-12-11 1209 12458ea06efd7b Anatolij Gustschin 2009-12-11 1210 /* fetch descriptor pointed to in <link> */ 12458ea06efd7b Anatolij Gustschin 2009-12-11 1211 iowrite32be(XOR_CRSR_64BA_BIT | XOR_CRSR_XAE_BIT, 12458ea06efd7b Anatolij Gustschin 2009-12-11 1212 &xor_reg->crsr); 12458ea06efd7b Anatolij Gustschin 2009-12-11 1213 break; 12458ea06efd7b Anatolij Gustschin 2009-12-11 1214 } 12458ea06efd7b Anatolij Gustschin 2009-12-11 1215 } 12458ea06efd7b Anatolij Gustschin 2009-12-11 1216 12458ea06efd7b Anatolij Gustschin 2009-12-11 1217 /****************************************************************************** 12458ea06efd7b Anatolij Gustschin 2009-12-11 1218 * ADMA device level 12458ea06efd7b Anatolij Gustschin 2009-12-11 1219 ******************************************************************************/ 12458ea06efd7b Anatolij Gustschin 2009-12-11 1220 12458ea06efd7b Anatolij Gustschin 2009-12-11 1221 static void ppc440spe_chan_start_null_xor(struct ppc440spe_adma_chan *chan); 12458ea06efd7b Anatolij Gustschin 2009-12-11 1222 static int ppc440spe_adma_alloc_chan_resources(struct dma_chan *chan); 12458ea06efd7b Anatolij Gustschin 2009-12-11 1223 12458ea06efd7b Anatolij Gustschin 2009-12-11 1224 static dma_cookie_t 12458ea06efd7b Anatolij Gustschin 2009-12-11 1225 ppc440spe_adma_tx_submit(struct dma_async_tx_descriptor *tx); 12458ea06efd7b Anatolij Gustschin 2009-12-11 1226 12458ea06efd7b Anatolij Gustschin 2009-12-11 1227 static void ppc440spe_adma_set_dest(struct ppc440spe_adma_desc_slot *tx, 12458ea06efd7b Anatolij Gustschin 2009-12-11 1228 dma_addr_t addr, int index); 12458ea06efd7b Anatolij Gustschin 2009-12-11 1229 static void 12458ea06efd7b Anatolij Gustschin 2009-12-11 1230 ppc440spe_adma_memcpy_xor_set_src(struct ppc440spe_adma_desc_slot *tx, 12458ea06efd7b Anatolij Gustschin 2009-12-11 1231 dma_addr_t addr, int index); 12458ea06efd7b Anatolij Gustschin 2009-12-11 1232 12458ea06efd7b Anatolij Gustschin 2009-12-11 1233 static void 12458ea06efd7b Anatolij Gustschin 2009-12-11 1234 ppc440spe_adma_pq_set_dest(struct ppc440spe_adma_desc_slot *tx, 12458ea06efd7b Anatolij Gustschin 2009-12-11 1235 dma_addr_t *paddr, unsigned long flags); 12458ea06efd7b Anatolij Gustschin 2009-12-11 1236 static void 12458ea06efd7b Anatolij Gustschin 2009-12-11 1237 ppc440spe_adma_pq_set_src(struct ppc440spe_adma_desc_slot *tx, 12458ea06efd7b Anatolij Gustschin 2009-12-11 1238 dma_addr_t addr, int index); 12458ea06efd7b Anatolij Gustschin 2009-12-11 1239 static void 12458ea06efd7b Anatolij Gustschin 2009-12-11 1240 ppc440spe_adma_pq_set_src_mult(struct ppc440spe_adma_desc_slot *tx, 12458ea06efd7b Anatolij Gustschin 2009-12-11 1241 unsigned char mult, int index, int dst_pos); 12458ea06efd7b Anatolij Gustschin 2009-12-11 1242 static void 12458ea06efd7b Anatolij Gustschin 2009-12-11 1243 ppc440spe_adma_pqzero_sum_set_dest(struct ppc440spe_adma_desc_slot *tx, 12458ea06efd7b Anatolij Gustschin 2009-12-11 1244 dma_addr_t paddr, dma_addr_t qaddr); 12458ea06efd7b Anatolij Gustschin 2009-12-11 1245 12458ea06efd7b Anatolij Gustschin 2009-12-11 1246 static struct page *ppc440spe_rxor_srcs[32]; 12458ea06efd7b Anatolij Gustschin 2009-12-11 1247 12458ea06efd7b Anatolij Gustschin 2009-12-11 1248 /** 12458ea06efd7b Anatolij Gustschin 2009-12-11 1249 * ppc440spe_can_rxor - check if the operands may be processed with RXOR 12458ea06efd7b Anatolij Gustschin 2009-12-11 1250 */ 12458ea06efd7b Anatolij Gustschin 2009-12-11 1251 static int ppc440spe_can_rxor(struct page **srcs, int src_cnt, size_t len) 12458ea06efd7b Anatolij Gustschin 2009-12-11 1252 { 12458ea06efd7b Anatolij Gustschin 2009-12-11 1253 int i, order = 0, state = 0; 12458ea06efd7b Anatolij Gustschin 2009-12-11 1254 int idx = 0; 12458ea06efd7b Anatolij Gustschin 2009-12-11 1255 12458ea06efd7b Anatolij Gustschin 2009-12-11 1256 if (unlikely(!(src_cnt > 1))) 12458ea06efd7b Anatolij Gustschin 2009-12-11 1257 return 0; 12458ea06efd7b Anatolij Gustschin 2009-12-11 1258 12458ea06efd7b Anatolij Gustschin 2009-12-11 1259 BUG_ON(src_cnt > ARRAY_SIZE(ppc440spe_rxor_srcs)); 12458ea06efd7b Anatolij Gustschin 2009-12-11 1260 12458ea06efd7b Anatolij Gustschin 2009-12-11 1261 /* Skip holes in the source list before checking */ 12458ea06efd7b Anatolij Gustschin 2009-12-11 1262 for (i = 0; i < src_cnt; i++) { 12458ea06efd7b Anatolij Gustschin 2009-12-11 1263 if (!srcs[i]) 12458ea06efd7b Anatolij Gustschin 2009-12-11 1264 continue; 12458ea06efd7b Anatolij Gustschin 2009-12-11 1265 ppc440spe_rxor_srcs[idx++] = srcs[i]; 12458ea06efd7b Anatolij Gustschin 2009-12-11 1266 } 12458ea06efd7b Anatolij Gustschin 2009-12-11 1267 src_cnt = idx; 12458ea06efd7b Anatolij Gustschin 2009-12-11 1268 12458ea06efd7b Anatolij Gustschin 2009-12-11 1269 for (i = 1; i < src_cnt; i++) { 12458ea06efd7b Anatolij Gustschin 2009-12-11 1270 char *cur_addr = page_address(ppc440spe_rxor_srcs[i]); 12458ea06efd7b Anatolij Gustschin 2009-12-11 1271 char *old_addr = page_address(ppc440spe_rxor_srcs[i - 1]); 12458ea06efd7b Anatolij Gustschin 2009-12-11 1272 12458ea06efd7b Anatolij Gustschin 2009-12-11 1273 switch (state) { 12458ea06efd7b Anatolij Gustschin 2009-12-11 1274 case 0: 12458ea06efd7b Anatolij Gustschin 2009-12-11 1275 if (cur_addr == old_addr + len) { 12458ea06efd7b Anatolij Gustschin 2009-12-11 1276 /* direct RXOR */ 12458ea06efd7b Anatolij Gustschin 2009-12-11 1277 order = 1; 12458ea06efd7b Anatolij Gustschin 2009-12-11 1278 state = 1; 12458ea06efd7b Anatolij Gustschin 2009-12-11 1279 } else if (old_addr == cur_addr + len) { 12458ea06efd7b Anatolij Gustschin 2009-12-11 1280 /* reverse RXOR */ 12458ea06efd7b Anatolij Gustschin 2009-12-11 1281 order = -1; 12458ea06efd7b Anatolij Gustschin 2009-12-11 1282 state = 1; 12458ea06efd7b Anatolij Gustschin 2009-12-11 1283 } else 12458ea06efd7b Anatolij Gustschin 2009-12-11 1284 goto out; 12458ea06efd7b Anatolij Gustschin 2009-12-11 1285 break; 12458ea06efd7b Anatolij Gustschin 2009-12-11 1286 case 1: 12458ea06efd7b Anatolij Gustschin 2009-12-11 1287 if ((i == src_cnt - 2) || 12458ea06efd7b Anatolij Gustschin 2009-12-11 1288 (order == -1 && cur_addr != old_addr - len)) { 12458ea06efd7b Anatolij Gustschin 2009-12-11 1289 order = 0; 12458ea06efd7b Anatolij Gustschin 2009-12-11 1290 state = 0; 12458ea06efd7b Anatolij Gustschin 2009-12-11 1291 } else if ((cur_addr == old_addr + len * order) || 12458ea06efd7b Anatolij Gustschin 2009-12-11 1292 (cur_addr == old_addr + 2 * len) || 12458ea06efd7b Anatolij Gustschin 2009-12-11 1293 (cur_addr == old_addr + 3 * len)) { 12458ea06efd7b Anatolij Gustschin 2009-12-11 1294 state = 2; 12458ea06efd7b Anatolij Gustschin 2009-12-11 1295 } else { 12458ea06efd7b Anatolij Gustschin 2009-12-11 1296 order = 0; 12458ea06efd7b Anatolij Gustschin 2009-12-11 1297 state = 0; 12458ea06efd7b Anatolij Gustschin 2009-12-11 1298 } 12458ea06efd7b Anatolij Gustschin 2009-12-11 1299 break; 12458ea06efd7b Anatolij Gustschin 2009-12-11 1300 case 2: 12458ea06efd7b Anatolij Gustschin 2009-12-11 1301 order = 0; 12458ea06efd7b Anatolij Gustschin 2009-12-11 1302 state = 0; 12458ea06efd7b Anatolij Gustschin 2009-12-11 1303 break; 12458ea06efd7b Anatolij Gustschin 2009-12-11 1304 } 12458ea06efd7b Anatolij Gustschin 2009-12-11 1305 } 12458ea06efd7b Anatolij Gustschin 2009-12-11 1306 12458ea06efd7b Anatolij Gustschin 2009-12-11 1307 out: 12458ea06efd7b Anatolij Gustschin 2009-12-11 1308 if (state == 1 || state == 2) 12458ea06efd7b Anatolij Gustschin 2009-12-11 1309 return 1; 12458ea06efd7b Anatolij Gustschin 2009-12-11 1310 12458ea06efd7b Anatolij Gustschin 2009-12-11 1311 return 0; 12458ea06efd7b Anatolij Gustschin 2009-12-11 1312 } 12458ea06efd7b Anatolij Gustschin 2009-12-11 1313 12458ea06efd7b Anatolij Gustschin 2009-12-11 1314 /** 12458ea06efd7b Anatolij Gustschin 2009-12-11 1315 * ppc440spe_adma_device_estimate - estimate the efficiency of processing 12458ea06efd7b Anatolij Gustschin 2009-12-11 1316 * the operation given on this channel. It's assumed that 'chan' is 12458ea06efd7b Anatolij Gustschin 2009-12-11 1317 * capable to process 'cap' type of operation. 12458ea06efd7b Anatolij Gustschin 2009-12-11 1318 * @chan: channel to use 12458ea06efd7b Anatolij Gustschin 2009-12-11 1319 * @cap: type of transaction 12458ea06efd7b Anatolij Gustschin 2009-12-11 1320 * @dst_lst: array of destination pointers 12458ea06efd7b Anatolij Gustschin 2009-12-11 1321 * @dst_cnt: number of destination operands 12458ea06efd7b Anatolij Gustschin 2009-12-11 1322 * @src_lst: array of source pointers 12458ea06efd7b Anatolij Gustschin 2009-12-11 1323 * @src_cnt: number of source operands 12458ea06efd7b Anatolij Gustschin 2009-12-11 1324 * @src_sz: size of each source operand 12458ea06efd7b Anatolij Gustschin 2009-12-11 1325 */ 12458ea06efd7b Anatolij Gustschin 2009-12-11 1326 static int ppc440spe_adma_estimate(struct dma_chan *chan, 12458ea06efd7b Anatolij Gustschin 2009-12-11 1327 enum dma_transaction_type cap, struct page **dst_lst, int dst_cnt, 12458ea06efd7b Anatolij Gustschin 2009-12-11 1328 struct page **src_lst, int src_cnt, size_t src_sz) 12458ea06efd7b Anatolij Gustschin 2009-12-11 @1329 { 12458ea06efd7b Anatolij Gustschin 2009-12-11 1330 int ef = 1; 12458ea06efd7b Anatolij Gustschin 2009-12-11 1331 12458ea06efd7b Anatolij Gustschin 2009-12-11 1332 if (cap == DMA_PQ || cap == DMA_PQ_VAL) { 12458ea06efd7b Anatolij Gustschin 2009-12-11 1333 /* If RAID-6 capabilities were not activated don't try 12458ea06efd7b Anatolij Gustschin 2009-12-11 1334 * to use them 12458ea06efd7b Anatolij Gustschin 2009-12-11 1335 */ 12458ea06efd7b Anatolij Gustschin 2009-12-11 1336 if (unlikely(!ppc440spe_r6_enabled)) 12458ea06efd7b Anatolij Gustschin 2009-12-11 1337 return -1; 12458ea06efd7b Anatolij Gustschin 2009-12-11 1338 } 12458ea06efd7b Anatolij Gustschin 2009-12-11 1339 /* In the current implementation of ppc440spe ADMA driver it 12458ea06efd7b Anatolij Gustschin 2009-12-11 1340 * makes sense to pick out only pq case, because it may be 12458ea06efd7b Anatolij Gustschin 2009-12-11 1341 * processed: 12458ea06efd7b Anatolij Gustschin 2009-12-11 1342 * (1) either using Biskup method on DMA2; 12458ea06efd7b Anatolij Gustschin 2009-12-11 1343 * (2) or on DMA0/1. 12458ea06efd7b Anatolij Gustschin 2009-12-11 1344 * Thus we give a favour to (1) if the sources are suitable; 12458ea06efd7b Anatolij Gustschin 2009-12-11 1345 * else let it be processed on one of the DMA0/1 engines. 12458ea06efd7b Anatolij Gustschin 2009-12-11 1346 * In the sum_product case where destination is also the 12458ea06efd7b Anatolij Gustschin 2009-12-11 1347 * source process it on DMA0/1 only. 12458ea06efd7b Anatolij Gustschin 2009-12-11 1348 */ 12458ea06efd7b Anatolij Gustschin 2009-12-11 1349 if (cap == DMA_PQ && chan->chan_id == PPC440SPE_XOR_ID) { 12458ea06efd7b Anatolij Gustschin 2009-12-11 1350 12458ea06efd7b Anatolij Gustschin 2009-12-11 1351 if (dst_cnt == 1 && src_cnt == 2 && dst_lst[0] == src_lst[1]) 12458ea06efd7b Anatolij Gustschin 2009-12-11 1352 ef = 0; /* sum_product case, process on DMA0/1 */ 12458ea06efd7b Anatolij Gustschin 2009-12-11 1353 else if (ppc440spe_can_rxor(src_lst, src_cnt, src_sz)) 12458ea06efd7b Anatolij Gustschin 2009-12-11 1354 ef = 3; /* override (DMA0/1 + idle) */ 12458ea06efd7b Anatolij Gustschin 2009-12-11 1355 else 12458ea06efd7b Anatolij Gustschin 2009-12-11 1356 ef = 0; /* can't process on DMA2 if !rxor */ 12458ea06efd7b Anatolij Gustschin 2009-12-11 1357 } 12458ea06efd7b Anatolij Gustschin 2009-12-11 1358 12458ea06efd7b Anatolij Gustschin 2009-12-11 1359 /* channel idleness increases the priority */ 12458ea06efd7b Anatolij Gustschin 2009-12-11 1360 if (likely(ef) && 12458ea06efd7b Anatolij Gustschin 2009-12-11 1361 !ppc440spe_chan_is_busy(to_ppc440spe_adma_chan(chan))) 12458ea06efd7b Anatolij Gustschin 2009-12-11 1362 ef++; 12458ea06efd7b Anatolij Gustschin 2009-12-11 1363 12458ea06efd7b Anatolij Gustschin 2009-12-11 1364 return ef; 12458ea06efd7b Anatolij Gustschin 2009-12-11 1365 } 12458ea06efd7b Anatolij Gustschin 2009-12-11 1366 :::::: The code at line 1329 was first introduced by commit :::::: 12458ea06efd7b44281e68fe59c950ec7d59c649 ppc440spe-adma: adds updated ppc440spe adma driver :::::: TO: Anatolij Gustschin <[email protected]> :::::: CC: Dan Williams <[email protected]> -- 0-DAY CI Kernel Test Service https://01.org/lkp _______________________________________________ kbuild mailing list -- [email protected] To unsubscribe send an email to [email protected]
