LCOV - code coverage report
Current view: top level - include/linux - iommu-helper.h (source / functions) Hit Total Coverage
Test: landlock.info Lines: 0 4 0.0 %
Date: 2021-04-22 12:43:58 Functions: 0 1 0.0 %

          Line data    Source code
       1             : /* SPDX-License-Identifier: GPL-2.0 */
       2             : #ifndef _LINUX_IOMMU_HELPER_H
       3             : #define _LINUX_IOMMU_HELPER_H
       4             : 
       5             : #include <linux/bug.h>
       6             : #include <linux/log2.h>
       7             : #include <linux/math.h>
       8             : #include <linux/types.h>
       9             : 
      10             : static inline unsigned long iommu_device_max_index(unsigned long size,
      11             :                                                    unsigned long offset,
      12             :                                                    u64 dma_mask)
      13             : {
      14             :         if (size + offset > dma_mask)
      15             :                 return dma_mask - offset + 1;
      16             :         else
      17             :                 return size;
      18             : }
      19             : 
      20           0 : static inline int iommu_is_span_boundary(unsigned int index, unsigned int nr,
      21             :                 unsigned long shift, unsigned long boundary_size)
      22             : {
      23           0 :         BUG_ON(!is_power_of_2(boundary_size));
      24             : 
      25           0 :         shift = (shift + index) & (boundary_size - 1);
      26           0 :         return shift + nr > boundary_size;
      27             : }
      28             : 
      29             : extern unsigned long iommu_area_alloc(unsigned long *map, unsigned long size,
      30             :                                       unsigned long start, unsigned int nr,
      31             :                                       unsigned long shift,
      32             :                                       unsigned long boundary_size,
      33             :                                       unsigned long align_mask);
      34             : 
      35             : static inline unsigned long iommu_num_pages(unsigned long addr,
      36             :                                             unsigned long len,
      37             :                                             unsigned long io_page_size)
      38             : {
      39             :         unsigned long size = (addr & (io_page_size - 1)) + len;
      40             : 
      41             :         return DIV_ROUND_UP(size, io_page_size);
      42             : }
      43             : 
      44             : #endif

Generated by: LCOV version 1.14