From: Greg Kroah-Hartman Date: Fri, 27 Sep 2013 23:38:23 +0000 (-0700) Subject: 3.0-stable patches X-Git-Tag: v3.0.98~10 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=f5a9b2d04c3c26994d0e8d92800f67a4192386ab;p=thirdparty%2Fkernel%2Fstable-queue.git 3.0-stable patches added patches: perf-tools-handle-jited-code-in-shared-memory.patch sfc-Fix-efx_rx_buf_offset-for-recycled-pages-3.0.patch --- diff --git a/queue-3.0/perf-tools-handle-jited-code-in-shared-memory.patch b/queue-3.0/perf-tools-handle-jited-code-in-shared-memory.patch new file mode 100644 index 00000000000..5b1a524c11e --- /dev/null +++ b/queue-3.0/perf-tools-handle-jited-code-in-shared-memory.patch @@ -0,0 +1,33 @@ +From 89365e6c9ad4c0e090e4c6a4b67a3ce319381d89 Mon Sep 17 00:00:00 2001 +From: Andi Kleen +Date: Wed, 24 Apr 2013 17:03:02 -0700 +Subject: perf tools: Handle JITed code in shared memory + +From: Andi Kleen + +commit 89365e6c9ad4c0e090e4c6a4b67a3ce319381d89 upstream. + +Need to check for /dev/zero. + +Most likely more strings are missing too. + +Signed-off-by: Andi Kleen +Link: http://lkml.kernel.org/r/1366848182-30449-1-git-send-email-andi@firstfloor.org +Signed-off-by: Arnaldo Carvalho de Melo +Cc: Vinson Lee +Signed-off-by: Greg Kroah-Hartman + +--- + tools/perf/util/map.c | 1 + + 1 file changed, 1 insertion(+) + +--- a/tools/perf/util/map.c ++++ b/tools/perf/util/map.c +@@ -16,6 +16,7 @@ const char *map_type__name[MAP__NR_TYPES + static inline int is_anon_memory(const char *filename) + { + return !strcmp(filename, "//anon") || ++ !strcmp(filename, "/dev/zero (deleted)") || + !strcmp(filename, "/anon_hugepage (deleted)"); + } + diff --git a/queue-3.0/series b/queue-3.0/series index 69181499e08..425ed9f15ef 100644 --- a/queue-3.0/series +++ b/queue-3.0/series @@ -12,3 +12,5 @@ cgroup-fail-if-monitored-file-and-event_control-are-in-different-cgroup.patch perf-clarify-perf_cpu_context-active_pmu-usage-by-renaming.patch perf-fix-perf_cgroup_switch-for-sw-events.patch fanotify-dont-merge-permission-events.patch +perf-tools-handle-jited-code-in-shared-memory.patch +sfc-Fix-efx_rx_buf_offset-for-recycled-pages-3.0.patch diff --git a/queue-3.0/sfc-Fix-efx_rx_buf_offset-for-recycled-pages-3.0.patch b/queue-3.0/sfc-Fix-efx_rx_buf_offset-for-recycled-pages-3.0.patch new file mode 100644 index 00000000000..e9bbcdfb403 --- /dev/null +++ b/queue-3.0/sfc-Fix-efx_rx_buf_offset-for-recycled-pages-3.0.patch @@ -0,0 +1,44 @@ +From d4e70d42eff6938c12d7d0b12f657b10d06a156d Mon Sep 17 00:00:00 2001 +From: Ben Hutchings +Date: Fri, 6 Sep 2013 22:39:20 +0100 +Subject: sfc: Fix efx_rx_buf_offset() for recycled pages + +From: Ben Hutchings + +This bug fix is only for stable branches older than 3.10. The bug was +fixed upstream by commit 2768935a4660 ('sfc: reuse pages to avoid DMA +mapping/unmapping costs'), but that change is totally unsuitable for +stable. + +Commit b590ace09d51 ('sfc: Fix efx_rx_buf_offset() in the presence of +swiotlb') added an explicit page_offset member to struct +efx_rx_buffer, which must be set consistently with the u.page and +dma_addr fields. However, it failed to add the necessary assignment +in efx_resurrect_rx_buffer(). It also did not correct the calculation +of efx_rx_buffer::dma_addr in efx_resurrect_rx_buffer(), which assumes +that DMA-mapping a page will result in a page-aligned DMA address +(exactly what swiotlb violates). + +Add the assignment of efx_rx_buffer::page_offset and change the +calculation of dma_addr to make use of it. + +Signed-off-by: Ben Hutchings +Cc: David Miller +Signed-off-by: Greg Kroah-Hartman +--- + drivers/net/sfc/rx.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +--- a/drivers/net/sfc/rx.c ++++ b/drivers/net/sfc/rx.c +@@ -311,8 +311,9 @@ static void efx_resurrect_rx_buffer(stru + + index = rx_queue->added_count & rx_queue->ptr_mask; + new_buf = efx_rx_buffer(rx_queue, index); +- new_buf->dma_addr = rx_buf->dma_addr ^ (PAGE_SIZE >> 1); + new_buf->u.page = rx_buf->u.page; ++ new_buf->page_offset = rx_buf->page_offset ^ (PAGE_SIZE >> 1); ++ new_buf->dma_addr = state->dma_addr + new_buf->page_offset; + new_buf->len = rx_buf->len; + new_buf->is_page = true; + ++rx_queue->added_count;