Commit 0ab09c36818ca88f65c88f4d8c6d067fbf10578d
Committed by
Dan Williams
1 parent
b158471ef6
fsldma: improve link descriptor debugging
This adds better tracking to link descriptor allocations, callbacks, and frees. This makes it much easier to track errors with link descriptors. Signed-off-by: Ira W. Snyder <iws@ovro.caltech.edu> Signed-off-by: Dan Williams <dan.j.williams@intel.com>
Showing 1 changed file with 15 additions and 6 deletions Side-by-side Diff
drivers/dma/fsldma.c
... | ... | @@ -420,6 +420,10 @@ |
420 | 420 | desc->async_tx.tx_submit = fsl_dma_tx_submit; |
421 | 421 | desc->async_tx.phys = pdesc; |
422 | 422 | |
423 | +#ifdef FSL_DMA_LD_DEBUG | |
424 | + chan_dbg(chan, "LD %p allocated\n", desc); | |
425 | +#endif | |
426 | + | |
423 | 427 | return desc; |
424 | 428 | } |
425 | 429 | |
... | ... | @@ -470,6 +474,9 @@ |
470 | 474 | |
471 | 475 | list_for_each_entry_safe(desc, _desc, list, node) { |
472 | 476 | list_del(&desc->node); |
477 | +#ifdef FSL_DMA_LD_DEBUG | |
478 | + chan_dbg(chan, "LD %p free\n", desc); | |
479 | +#endif | |
473 | 480 | dma_pool_free(chan->desc_pool, desc, desc->async_tx.phys); |
474 | 481 | } |
475 | 482 | } |
... | ... | @@ -481,6 +488,9 @@ |
481 | 488 | |
482 | 489 | list_for_each_entry_safe_reverse(desc, _desc, list, node) { |
483 | 490 | list_del(&desc->node); |
491 | +#ifdef FSL_DMA_LD_DEBUG | |
492 | + chan_dbg(chan, "LD %p free\n", desc); | |
493 | +#endif | |
484 | 494 | dma_pool_free(chan->desc_pool, desc, desc->async_tx.phys); |
485 | 495 | } |
486 | 496 | } |
... | ... | @@ -557,9 +567,6 @@ |
557 | 567 | chan_err(chan, "%s\n", msg_ld_oom); |
558 | 568 | goto fail; |
559 | 569 | } |
560 | -#ifdef FSL_DMA_LD_DEBUG | |
561 | - chan_dbg(chan, "new link desc alloc %p\n", new); | |
562 | -#endif | |
563 | 570 | |
564 | 571 | copy = min(len, (size_t)FSL_DMA_BCR_MAX_CNT); |
565 | 572 | |
... | ... | @@ -645,9 +652,6 @@ |
645 | 652 | chan_err(chan, "%s\n", msg_ld_oom); |
646 | 653 | goto fail; |
647 | 654 | } |
648 | -#ifdef FSL_DMA_LD_DEBUG | |
649 | - chan_dbg(chan, "new link desc alloc %p\n", new); | |
650 | -#endif | |
651 | 655 | |
652 | 656 | set_desc_cnt(chan, &new->hw, len); |
653 | 657 | set_desc_src(chan, &new->hw, src); |
654 | 658 | |
655 | 659 | |
... | ... | @@ -882,13 +886,18 @@ |
882 | 886 | callback_param = desc->async_tx.callback_param; |
883 | 887 | if (callback) { |
884 | 888 | spin_unlock_irqrestore(&chan->desc_lock, flags); |
889 | +#ifdef FSL_DMA_LD_DEBUG | |
885 | 890 | chan_dbg(chan, "LD %p callback\n", desc); |
891 | +#endif | |
886 | 892 | callback(callback_param); |
887 | 893 | spin_lock_irqsave(&chan->desc_lock, flags); |
888 | 894 | } |
889 | 895 | |
890 | 896 | /* Run any dependencies, then free the descriptor */ |
891 | 897 | dma_run_dependencies(&desc->async_tx); |
898 | +#ifdef FSL_DMA_LD_DEBUG | |
899 | + chan_dbg(chan, "LD %p free\n", desc); | |
900 | +#endif | |
892 | 901 | dma_pool_free(chan->desc_pool, desc, desc->async_tx.phys); |
893 | 902 | } |
894 | 903 |