summaryrefslogtreecommitdiffstats
path: root/debian/patches-rt/0060-io-mapping-Remove-io_mapping_map_atomic_wc.patch
diff options
context:
space:
mode:
Diffstat (limited to 'debian/patches-rt/0060-io-mapping-Remove-io_mapping_map_atomic_wc.patch')
-rw-r--r--debian/patches-rt/0060-io-mapping-Remove-io_mapping_map_atomic_wc.patch140
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
+