[lkml]   [2009]   [Jan]   [19]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
    Subject[PATCH 0/16] DMA-API debugging facility v3

    this is version 3 of the patchset which introduces code to debug drivers
    usage of the DMA-API. Many thanks to all the reviewers and the useful
    comments on the previous versions of this patchset. Tests with hardware
    IOMMUs have shown several bugs in drivers regarding the usage of that

    These bugs often don't show up or have any negative impact if there is
    no hardware IOMMU in use in the system. But with an hardware IOMMU these
    bugs turn the hardware unusable or, in the worst case, cause data
    corruption on devices which are managed by other (good) drivers.

    With the code these patches introduce driver developers can find several
    bugs of misusing the DMA-API in their drivers. But be aware, it can not
    find all possible bugs. What it can not find are use-after-free bugs.

    If anyone wants to try this stuff and don't want to apply them one by
    one, they can also be pulled from (branch is based on tip/core/iommu)

    git:// dma-api/debug

    Changes from v2 -> v3:

    - rebased patches against tip/core/iommu branch
    - changed storage of virtual address to physical address in
    struct dma_debug_entry (thanks Fujita)
    - removed usage of x86 specific bad_dma_address (thanks Fujita)
    - changed a error log message to be more clear (thanks Roel)
    - fixed a bug with wrong handling of map_page/unmap_page requests
    (thanks Michael)
    - various improvements and fixes suggested by Ingo, thanks
    - added more comments

    Changes from v1 -> v2:

    - moved code to lib/ and include/linux to make it usable for all
    - more fine grained hash locking (locking is now per hash bucket, no
    global lock anymore)
    - dma_debug_entries are preallocated
    - per default the code will only print one warning and is silent then
    - added a debugfs interface to see some statistics and to enable more
    verbose error reporting in the kernel log
    - added command line parameter to disable debugging code
    - allocation errors are now handled correctly
    - added documentation about this facility for driver developers

    Here is the diffstat:

    Documentation/DMA-API.txt | 106 +++++
    Documentation/kernel-parameters.txt | 10 +
    arch/Kconfig | 2 +
    arch/x86/Kconfig | 1 +
    arch/x86/include/asm/dma-mapping.h | 45 ++-
    arch/x86/kernel/pci-dma.c | 6 +
    include/linux/dma-debug.h | 160 ++++++++
    lib/Kconfig.debug | 11 +
    lib/Makefile | 2 +
    lib/dma-debug.c | 753 +++++++++++++++++++++++++++++++++++
    10 files changed, 1090 insertions(+), 6 deletions(-)

     \ /
      Last update: 2009-01-19 15:55    [W:0.024 / U:49.228 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site