lkml.org 
[lkml]   [2020]   [Nov]   [3]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[patch V3 37/37] io-mapping: Remove io_mapping_map_atomic_wc()
    No more users. Get rid of it and remove the traces in documentation.

    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    ---
    V3: New patch
    ---
    Documentation/driver-api/io-mapping.rst | 22 +++++-----------
    include/linux/io-mapping.h | 42 +-------------------------------
    2 files changed, 9 insertions(+), 55 deletions(-)

    --- a/Documentation/driver-api/io-mapping.rst
    +++ b/Documentation/driver-api/io-mapping.rst
    @@ -21,19 +21,15 @@ mappable, while 'size' indicates how lar
    enable. Both are in bytes.

    This _wc variant provides a mapping which may only be used with
    -io_mapping_map_atomic_wc(), io_mapping_map_local_wc() or
    -io_mapping_map_wc().
    +io_mapping_map_local_wc() or io_mapping_map_wc().

    With this mapping object, individual pages can be mapped either temporarily
    or long term, depending on the requirements. Of course, temporary maps are
    -more efficient. They come in two flavours::
    +more efficient.

    void *io_mapping_map_local_wc(struct io_mapping *mapping,
    unsigned long offset)

    - void *io_mapping_map_atomic_wc(struct io_mapping *mapping,
    - unsigned long offset)
    -
    'offset' is the offset within the defined mapping region. Accessing
    addresses beyond the region specified in the creation function yields
    undefined results. Using an offset which is not page aligned yields an
    @@ -50,9 +46,6 @@ io_mapping_map_local_wc() has a side eff
    migration to make the mapping code work. No caller can rely on this side
    effect.

    -io_mapping_map_atomic_wc() has the side effect of disabling preemption and
    -pagefaults. Don't use in new code. Use io_mapping_map_local_wc() instead.
    -
    Nested mappings need to be undone in reverse order because the mapping
    code uses a stack for keeping track of them::

    @@ -65,11 +58,10 @@ Nested mappings need to be undone in rev
    The mappings are released with::

    void io_mapping_unmap_local(void *vaddr)
    - void io_mapping_unmap_atomic(void *vaddr)

    -'vaddr' must be the value returned by the last io_mapping_map_local_wc() or
    -io_mapping_map_atomic_wc() call. This unmaps the specified mapping and
    -undoes the side effects of the mapping functions.
    +'vaddr' must be the value returned by the last io_mapping_map_local_wc()
    +call. This unmaps the specified mapping and undoes eventual side effects of
    +the mapping function.

    If you need to sleep while holding a mapping, you can use the regular
    variant, although this may be significantly slower::
    @@ -77,8 +69,8 @@ If you need to sleep while holding a map
    void *io_mapping_map_wc(struct io_mapping *mapping,
    unsigned long offset)

    -This works like io_mapping_map_atomic/local_wc() except it has no side
    -effects and the pointer is globaly visible.
    +This works like io_mapping_map_local_wc() except it has no side effects and
    +the pointer is globaly visible.

    The mappings are released with::

    --- a/include/linux/io-mapping.h
    +++ b/include/linux/io-mapping.h
    @@ -60,28 +60,7 @@ io_mapping_fini(struct io_mapping *mappi
    iomap_free(mapping->base, mapping->size);
    }

    -/* Atomic map/unmap */
    -static inline void __iomem *
    -io_mapping_map_atomic_wc(struct io_mapping *mapping,
    - unsigned long offset)
    -{
    - resource_size_t phys_addr;
    -
    - BUG_ON(offset >= mapping->size);
    - phys_addr = mapping->base + offset;
    - preempt_disable();
    - pagefault_disable();
    - return __iomap_local_pfn_prot(PHYS_PFN(phys_addr), mapping->prot);
    -}
    -
    -static inline void
    -io_mapping_unmap_atomic(void __iomem *vaddr)
    -{
    - kunmap_local_indexed((void __force *)vaddr);
    - pagefault_enable();
    - preempt_enable();
    -}
    -
    +/* Temporary mappings which are only valid in the current context */
    static inline void __iomem *
    io_mapping_map_local_wc(struct io_mapping *mapping, unsigned long offset)
    {
    @@ -163,24 +142,7 @@ io_mapping_unmap(void __iomem *vaddr)
    {
    }

    -/* Atomic map/unmap */
    -static inline void __iomem *
    -io_mapping_map_atomic_wc(struct io_mapping *mapping,
    - unsigned long offset)
    -{
    - preempt_disable();
    - pagefault_disable();
    - return io_mapping_map_wc(mapping, offset, PAGE_SIZE);
    -}
    -
    -static inline void
    -io_mapping_unmap_atomic(void __iomem *vaddr)
    -{
    - io_mapping_unmap(vaddr);
    - pagefault_enable();
    - preempt_enable();
    -}
    -
    +/* Temporary mappings which are only valid in the current context */
    static inline void __iomem *
    io_mapping_map_local_wc(struct io_mapping *mapping, unsigned long offset)
    {
    \
     
     \ /
      Last update: 2020-11-03 11:34    [W:4.185 / U:0.132 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site