diff options
author | Otavio Salvador <otavio@ossystems.com.br> | 2017-11-09 11:34:59 -0200 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2017-11-21 13:06:12 +0000 |
commit | 6c2fca8f3517c9d064cec3aeec99bc68cb33b134 (patch) | |
tree | 72c8e1eeb27af97d9ab83b958d3d1f4e2701039c /meta/recipes-kernel/lttng/lttng-modules/0005-Fix-mmap-caches-aliased-on-virtual-addresses.patch | |
parent | 0603cdead596bed30000fd6e539b6a1269cec671 (diff) | |
download | poky-6c2fca8f3517c9d064cec3aeec99bc68cb33b134.tar.gz |
lttng-modules: Upgrade to 2.9.5 release
This upgrade is critical as it fixes the support for Linux 4.14 LTS kernel.
The changlog is:
2017-10-05 LTTng modules 2.9.5
* Fix: update block instrumentation for 4.14 kernel
* Revert "Fix: update block instrumentation for kernel 4.14"
2017-10-03 (National Techies Day) LTTng modules 2.9.4
* Fix: version check error in btrfs instrumentation
* Fix: update btrfs instrumentation for kernel 4.14
* Fix: update writeback instrumentation for kernel 4.14
* Fix: update block instrumentation for kernel 4.14
* Fix: vmalloc wrapper on kernel < 2.6.38
* Fix: vmalloc wrapper on kernel >= 4.12
* Add kmalloc failover to vmalloc
* Fix: mmap: caches aliased on virtual addresses
* Fix: update ext4 instrumentation for kernel 4.13
* Fix: Sleeping function called from invalid context
* Fix: sched for v4.11.5-rt1
* Fix: handle missing ftrace header on v4.12
This also removes the previously backported patches as they are part
of 2.9.4 release and the missing fix is part of 2.9.5 release.
(From OE-Core rev: 3ca3f8b2dbf0fec6a188ee2c10238704e4642c93)
Signed-off-by: Otavio Salvador <otavio@ossystems.com.br>
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta/recipes-kernel/lttng/lttng-modules/0005-Fix-mmap-caches-aliased-on-virtual-addresses.patch')
-rw-r--r-- | meta/recipes-kernel/lttng/lttng-modules/0005-Fix-mmap-caches-aliased-on-virtual-addresses.patch | 100 |
1 files changed, 0 insertions, 100 deletions
diff --git a/meta/recipes-kernel/lttng/lttng-modules/0005-Fix-mmap-caches-aliased-on-virtual-addresses.patch b/meta/recipes-kernel/lttng/lttng-modules/0005-Fix-mmap-caches-aliased-on-virtual-addresses.patch deleted file mode 100644 index 7f25c6a709..0000000000 --- a/meta/recipes-kernel/lttng/lttng-modules/0005-Fix-mmap-caches-aliased-on-virtual-addresses.patch +++ /dev/null | |||
@@ -1,100 +0,0 @@ | |||
1 | From 90715ba61e3fa66c1bb438138c8716c6e72356f9 Mon Sep 17 00:00:00 2001 | ||
2 | From: Mathieu Desnoyers <mathieu.desnoyers@efficios.com> | ||
3 | Date: Tue, 19 Sep 2017 12:16:58 -0400 | ||
4 | Subject: [PATCH 5/8] Fix: mmap: caches aliased on virtual addresses | ||
5 | Organization: O.S. Systems Software LTDA. | ||
6 | |||
7 | Some architectures (e.g. implementations of arm64) implement their | ||
8 | caches based on the virtual addresses (rather than physical address). | ||
9 | It has the upside of making the cache access faster (no TLB lookup | ||
10 | required to access the cache line), but the downside of requiring | ||
11 | virtual mappings (e.g. kernel vs user-space) to be aligned on the number | ||
12 | of bits used for cache aliasing. | ||
13 | |||
14 | Perform dcache flushing for the entire sub-buffer in the get_subbuf | ||
15 | operation on those architectures, thus ensuring we don't end up with | ||
16 | cache aliasing issues. | ||
17 | |||
18 | An alternative approach we could eventually take would be to create a | ||
19 | kernel mapping for the ring buffer that is aligned with the user-space | ||
20 | mapping. | ||
21 | |||
22 | Upstream-Status: Backport [2.9.4] | ||
23 | |||
24 | Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com> | ||
25 | --- | ||
26 | lib/ringbuffer/ring_buffer_frontend.c | 44 +++++++++++++++++++++++++++++++++++ | ||
27 | 1 file changed, 44 insertions(+) | ||
28 | |||
29 | diff --git a/lib/ringbuffer/ring_buffer_frontend.c b/lib/ringbuffer/ring_buffer_frontend.c | ||
30 | index dc1ee45..e77d789 100644 | ||
31 | --- a/lib/ringbuffer/ring_buffer_frontend.c | ||
32 | +++ b/lib/ringbuffer/ring_buffer_frontend.c | ||
33 | @@ -54,6 +54,7 @@ | ||
34 | #include <linux/delay.h> | ||
35 | #include <linux/module.h> | ||
36 | #include <linux/percpu.h> | ||
37 | +#include <asm/cacheflush.h> | ||
38 | |||
39 | #include <wrapper/ringbuffer/config.h> | ||
40 | #include <wrapper/ringbuffer/backend.h> | ||
41 | @@ -1149,6 +1150,47 @@ void lib_ring_buffer_move_consumer(struct lib_ring_buffer *buf, | ||
42 | } | ||
43 | EXPORT_SYMBOL_GPL(lib_ring_buffer_move_consumer); | ||
44 | |||
45 | +#if ARCH_IMPLEMENTS_FLUSH_DCACHE_PAGE | ||
46 | +static void lib_ring_buffer_flush_read_subbuf_dcache( | ||
47 | + const struct lib_ring_buffer_config *config, | ||
48 | + struct channel *chan, | ||
49 | + struct lib_ring_buffer *buf) | ||
50 | +{ | ||
51 | + struct lib_ring_buffer_backend_pages *pages; | ||
52 | + unsigned long sb_bindex, id, i, nr_pages; | ||
53 | + | ||
54 | + if (config->output != RING_BUFFER_MMAP) | ||
55 | + return; | ||
56 | + | ||
57 | + /* | ||
58 | + * Architectures with caches aliased on virtual addresses may | ||
59 | + * use different cache lines for the linear mapping vs | ||
60 | + * user-space memory mapping. Given that the ring buffer is | ||
61 | + * based on the kernel linear mapping, aligning it with the | ||
62 | + * user-space mapping is not straightforward, and would require | ||
63 | + * extra TLB entries. Therefore, simply flush the dcache for the | ||
64 | + * entire sub-buffer before reading it. | ||
65 | + */ | ||
66 | + id = buf->backend.buf_rsb.id; | ||
67 | + sb_bindex = subbuffer_id_get_index(config, id); | ||
68 | + pages = buf->backend.array[sb_bindex]; | ||
69 | + nr_pages = buf->backend.num_pages_per_subbuf; | ||
70 | + for (i = 0; i < nr_pages; i++) { | ||
71 | + struct lib_ring_buffer_backend_page *backend_page; | ||
72 | + | ||
73 | + backend_page = &pages->p[i]; | ||
74 | + flush_dcache_page(pfn_to_page(backend_page->pfn)); | ||
75 | + } | ||
76 | +} | ||
77 | +#else | ||
78 | +static void lib_ring_buffer_flush_read_subbuf_dcache( | ||
79 | + const struct lib_ring_buffer_config *config, | ||
80 | + struct channel *chan, | ||
81 | + struct lib_ring_buffer *buf) | ||
82 | +{ | ||
83 | +} | ||
84 | +#endif | ||
85 | + | ||
86 | /** | ||
87 | * lib_ring_buffer_get_subbuf - get exclusive access to subbuffer for reading | ||
88 | * @buf: ring buffer | ||
89 | @@ -1291,6 +1333,8 @@ retry: | ||
90 | buf->get_subbuf_consumed = consumed; | ||
91 | buf->get_subbuf = 1; | ||
92 | |||
93 | + lib_ring_buffer_flush_read_subbuf_dcache(config, chan, buf); | ||
94 | + | ||
95 | return 0; | ||
96 | |||
97 | nodata: | ||
98 | -- | ||
99 | 2.14.1 | ||
100 | |||