diff options
Diffstat (limited to '')
-rw-r--r-- | debian/patches-rt/0060-io-mapping-Remove-io_mapping_map_atomic_wc.patch | 140 |
1 files changed, 140 insertions, 0 deletions
diff --git a/debian/patches-rt/0060-io-mapping-Remove-io_mapping_map_atomic_wc.patch b/debian/patches-rt/0060-io-mapping-Remove-io_mapping_map_atomic_wc.patch new file mode 100644 index 000000000..f8374350f --- /dev/null +++ b/debian/patches-rt/0060-io-mapping-Remove-io_mapping_map_atomic_wc.patch @@ -0,0 +1,140 @@ +From 925f92c53f78436e9242942d1a31a1ecc61ba740 Mon Sep 17 00:00:00 2001 +From: Thomas Gleixner <tglx@linutronix.de> +Date: Tue, 3 Nov 2020 10:27:49 +0100 +Subject: [PATCH 060/323] io-mapping: Remove io_mapping_map_atomic_wc() +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/5.10/older/patches-5.10.204-rt100.tar.xz + +No more users. Get rid of it and remove the traces in documentation. + +Signed-off-by: Thomas Gleixner <tglx@linutronix.de> +Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> +--- + Documentation/driver-api/io-mapping.rst | 22 +++++-------- + include/linux/io-mapping.h | 42 ++----------------------- + 2 files changed, 9 insertions(+), 55 deletions(-) + +diff --git a/Documentation/driver-api/io-mapping.rst b/Documentation/driver-api/io-mapping.rst +index a0cfb15988df..a7830c59481f 100644 +--- a/Documentation/driver-api/io-mapping.rst ++++ b/Documentation/driver-api/io-mapping.rst +@@ -21,19 +21,15 @@ mappable, while 'size' indicates how large a mapping region to + 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 effect on X86 32bit as it disables + 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 @@ code uses a stack for keeping track of them:: + 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 @@ variant, although this may be significantly slower:: + 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:: + +diff --git a/include/linux/io-mapping.h b/include/linux/io-mapping.h +index c093e81310a9..4bb8223f2f82 100644 +--- a/include/linux/io-mapping.h ++++ b/include/linux/io-mapping.h +@@ -60,28 +60,7 @@ io_mapping_fini(struct io_mapping *mapping) + 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) + { +-- +2.43.0 + |