All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 4.14 1/4] powerpc/mm/slice: Remove intermediate bitmap copy
@ 2018-05-31  8:54 Christophe Leroy
  2018-05-31  8:54 ` [PATCH 4.14 2/4] powerpc/mm/slice: create header files dedicated to slices Christophe Leroy
                   ` (2 more replies)
  0 siblings, 3 replies; 10+ messages in thread
From: Christophe Leroy @ 2018-05-31  8:54 UTC (permalink / raw)
  To: stable, Greg Kroah-Hartman; +Cc: linux-kernel, linuxppc-dev

[ Upstream commit 326691ad4f179e6edc7eb1271e618dd673e4736d ]

bitmap_or() and bitmap_andnot() can work properly with dst identical
to src1 or src2. There is no need of an intermediate result bitmap
that is copied back to dst in a second step.

Signed-off-by: Christophe Leroy <christophe.leroy@c-s.fr>
Reviewed-by: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
Reviewed-by: Nicholas Piggin <npiggin@gmail.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
---
 arch/powerpc/mm/slice.c | 12 ++++--------
 1 file changed, 4 insertions(+), 8 deletions(-)

diff --git a/arch/powerpc/mm/slice.c b/arch/powerpc/mm/slice.c
index a4f93699194b..b79897bb89e3 100644
--- a/arch/powerpc/mm/slice.c
+++ b/arch/powerpc/mm/slice.c
@@ -379,21 +379,17 @@ static unsigned long slice_find_area(struct mm_struct *mm, unsigned long len,
 
 static inline void slice_or_mask(struct slice_mask *dst, struct slice_mask *src)
 {
-	DECLARE_BITMAP(result, SLICE_NUM_HIGH);
-
 	dst->low_slices |= src->low_slices;
-	bitmap_or(result, dst->high_slices, src->high_slices, SLICE_NUM_HIGH);
-	bitmap_copy(dst->high_slices, result, SLICE_NUM_HIGH);
+	bitmap_or(dst->high_slices, dst->high_slices, src->high_slices,
+		  SLICE_NUM_HIGH);
 }
 
 static inline void slice_andnot_mask(struct slice_mask *dst, struct slice_mask *src)
 {
-	DECLARE_BITMAP(result, SLICE_NUM_HIGH);
-
 	dst->low_slices &= ~src->low_slices;
 
-	bitmap_andnot(result, dst->high_slices, src->high_slices, SLICE_NUM_HIGH);
-	bitmap_copy(dst->high_slices, result, SLICE_NUM_HIGH);
+	bitmap_andnot(dst->high_slices, dst->high_slices, src->high_slices,
+		      SLICE_NUM_HIGH);
 }
 
 #ifdef CONFIG_PPC_64K_PAGES
-- 
2.13.3

^ permalink raw reply related	[flat|nested] 10+ messages in thread
* [PATCH 4.14 1/4] powerpc/mm/slice: Remove intermediate bitmap copy
@ 2018-03-09 15:48 Christophe Leroy
  2018-03-09 15:49 ` [PATCH 4.14 4/4] powerpc/mm/slice: Fix hugepage allocation at hint address on 8xx Christophe Leroy
  0 siblings, 1 reply; 10+ messages in thread
From: Christophe Leroy @ 2018-03-09 15:48 UTC (permalink / raw)
  To: stable, Greg Kroah-Hartman; +Cc: linux-kernel, linuxppc-dev

Upstream 326691ad4f179e6edc7eb1271e618dd673e4736d

bitmap_or() and bitmap_andnot() can work properly with dst identical
to src1 or src2. There is no need of an intermediate result bitmap
that is copied back to dst in a second step.

Signed-off-by: Christophe Leroy <christophe.leroy@c-s.fr>
Reviewed-by: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
Reviewed-by: Nicholas Piggin <npiggin@gmail.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
---
 arch/powerpc/mm/slice.c | 12 ++++--------
 1 file changed, 4 insertions(+), 8 deletions(-)

diff --git a/arch/powerpc/mm/slice.c b/arch/powerpc/mm/slice.c
index 45f6740dd407..a7ac600f71c6 100644
--- a/arch/powerpc/mm/slice.c
+++ b/arch/powerpc/mm/slice.c
@@ -379,21 +379,17 @@ static unsigned long slice_find_area(struct mm_struct *mm, unsigned long len,
 
 static inline void slice_or_mask(struct slice_mask *dst, struct slice_mask *src)
 {
-	DECLARE_BITMAP(result, SLICE_NUM_HIGH);
-
 	dst->low_slices |= src->low_slices;
-	bitmap_or(result, dst->high_slices, src->high_slices, SLICE_NUM_HIGH);
-	bitmap_copy(dst->high_slices, result, SLICE_NUM_HIGH);
+	bitmap_or(dst->high_slices, dst->high_slices, src->high_slices,
+		  SLICE_NUM_HIGH);
 }
 
 static inline void slice_andnot_mask(struct slice_mask *dst, struct slice_mask *src)
 {
-	DECLARE_BITMAP(result, SLICE_NUM_HIGH);
-
 	dst->low_slices &= ~src->low_slices;
 
-	bitmap_andnot(result, dst->high_slices, src->high_slices, SLICE_NUM_HIGH);
-	bitmap_copy(dst->high_slices, result, SLICE_NUM_HIGH);
+	bitmap_andnot(dst->high_slices, dst->high_slices, src->high_slices,
+		      SLICE_NUM_HIGH);
 }
 
 #ifdef CONFIG_PPC_64K_PAGES
-- 
2.13.3

^ permalink raw reply related	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2018-06-03  9:24 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-05-31  8:54 [PATCH 4.14 1/4] powerpc/mm/slice: Remove intermediate bitmap copy Christophe Leroy
2018-05-31  8:54 ` [PATCH 4.14 2/4] powerpc/mm/slice: create header files dedicated to slices Christophe Leroy
2018-06-02 13:21   ` Greg Kroah-Hartman
2018-06-02 20:55     ` Christophe Leroy
2018-06-02 20:55       ` Christophe Leroy
2018-06-03  9:21       ` Greg Kroah-Hartman
2018-06-03  9:23         ` Greg Kroah-Hartman
2018-05-31  8:54 ` [PATCH 4.14 3/4] powerpc/mm/slice: Enhance for supporting PPC32 Christophe Leroy
2018-05-31  8:54 ` [PATCH 4.14 4/4] powerpc/mm/slice: Fix hugepage allocation at hint address on 8xx Christophe Leroy
  -- strict thread matches above, loose matches on Subject: below --
2018-03-09 15:48 [PATCH 4.14 1/4] powerpc/mm/slice: Remove intermediate bitmap copy Christophe Leroy
2018-03-09 15:49 ` [PATCH 4.14 4/4] powerpc/mm/slice: Fix hugepage allocation at hint address on 8xx Christophe Leroy

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.