• Home
  • Raw
  • Download

Lines Matching +full:long +full:- +full:ram +full:- +full:code

8 of the API (and actual examples), see Documentation/core-api/dma-api-howto.rst.
11 Part II describes extensions for supporting non-consistent memory
13 non-consistent platforms (this is usually only legacy platforms) you
16 Part I - dma_API
17 ----------------
19 To get the dma_API, you must #include <linux/dma-mapping.h>. This
27 Part Ia - Using large DMA-coherent buffers
28 ------------------------------------------
76 Part Ib - Using small DMA-coherent buffers
77 ------------------------------------------
81 Many drivers need lots of small DMA-coherent memory regions for DMA
84 much like a struct kmem_cache, except that they use the DMA-coherent allocator,
86 for alignment, like queue heads needing to be aligned on N-byte boundaries.
95 dma_pool_create() initializes a pool of DMA-coherent buffers
150 Part Ic - DMA addressing limitations
151 ------------------------------------
215 addition, for high-rate short-lived streaming mappings, the upfront time
231 unsigned long
237 Part Id - Streaming DMA mappings
238 --------------------------------
265 capability, it will fail if the user tries to map a non-physically
276 the driver may specify various platform-dependent flags to restrict
303 primitive should be treated as read-only by the device. If the device
309 be treated as read-only by the driver. If the driver needs to write
335 unsigned long offset, size_t size,
352 enum dma_data_direction dir, unsigned long attrs)
356 enum dma_data_direction dir, unsigned long attrs)
360 used to map device MMIO resources, mapping of RAM is not permitted.
369 the returned DMA address with dma_mapping_error(). A non-zero return value
412 accessed sg->address and sg->length as shown above.
460 - Before reading values that have been written by DMA from the device
462 - After writing values that will be written to the device using DMA
464 - before *and* after handing memory to the device if the memory is
474 unsigned long attrs)
479 unsigned long attrs)
484 unsigned long attrs)
489 unsigned long attrs)
495 The interpretation of DMA attributes is architecture-specific, and
497 Documentation/core-api/dma-attributes.rst.
508 #include <linux/dma-mapping.h>
509 /* DMA_ATTR_FOO should be defined in linux/dma-mapping.h and
510 * documented in Documentation/core-api/dma-attributes.rst */
513 unsigned long attr;
525 unsigned long attrs)
533 Part Ie - IOVA-based DMA mappings
534 ---------------------------------
537 optional path that requires extra code and are only recommended for drivers
555 Can be used by the driver to check if the IOVA-based API is used after a
562 enum dma_data_direction dir, unsigned long attrs);
575 Must be called to sync the IOMMU page tables for IOVA-range mapped by one or
578 For drivers that use a one-shot mapping, all ranges can be unmapped and the
585 unsigned long attrs);
594 unsigned long attrs);
605 Part II - Non-coherent DMA allocations
606 --------------------------------------
621 This routine allocates a region of <size> bytes of non-coherent memory. It
688 unsigned long attrs);
690 This routine allocates <size> bytes of non-coherent and possibly non-contiguous
696 indicated by sgt->nents, but it might have multiple CPU side segments as
697 indicated by sgt->orig_nents.
735 Once a non-contiguous allocation is mapped using this function, the
778 Part III - Debug drivers use of the DMA-API
779 -------------------------------------------
781 The DMA-API as described above has some constraints. DMA addresses must be
787 To debug drivers and find bugs in the usage of the DMA-API checking code can
790 debugging of DMA-API usage" option in your kernel configuration. Enabling this
793 If you boot the resulting kernel will contain code which does some bookkeeping
794 about what DMA memory was allocated for which device. If this code detects an
798 WARNING: at /data2/repos/linux-2.6-iommu/lib/dma-debug.c:448
801 forcedeth 0000:00:08.0: DMA-API: device driver frees DMA memory with wrong
805 Pid: 0, comm: swapper Tainted: G W 2.6.28-dmatest-09289-g8bb99c0 #1
826 <EOI> <4>---[ end trace f6435a98e2a38c0e ]---
829 of the DMA-API call which caused this warning.
832 errors will only silently counted. This limitation exist to prevent the code
837 The debugfs directory for the DMA-API debugging code is called dma-api/. In
841 dma-api/all_errors This file contains a numeric value. If this
842 value is not equal to zero the debugging code
847 dma-api/disabled This read-only file contains the character 'Y'
848 if the debugging code is disabled. This can
852 dma-api/dump This read-only file contains current DMA
855 dma-api/error_count This file is read-only and shows the total
858 dma-api/num_errors The number in this file shows how many
864 dma-api/min_free_entries This read-only file can be read to get the
867 down to zero the code will attempt to increase
870 dma-api/num_free_entries The current number of free dma_debug_entries
873 dma-api/nr_total_entries The total number of dma_debug_entries in the
876 dma-api/driver_filter You can write a name of a driver into this file
883 If you have this code compiled into your kernel it will be enabled by default.
885 'dma_debug=off' as a boot parameter. This will disable DMA-API debugging.
891 driver filter at boot time. The debug code will only print errors for that
894 When the code disables itself at runtime this is most likely because it ran
895 out of dma_debug_entries and was unable to allocate more on-demand. 65536
896 entries are preallocated at boot - if this is too low for you boot with
898 that the code allocates entries in batches, so the exact number of
900 code will print to the kernel log each time it has dynamically allocated
910 dma-debug interface debug_dma_mapping_error() to debug drivers that fail