[PATCH V5 01/17] powerpc/mm/slice: Convert slice_mask high slice to a bitmap
Aneesh Kumar K.V
aneesh.kumar at linux.vnet.ibm.com
Wed Mar 29 16:20:40 AEDT 2017
On Wednesday 29 March 2017 08:41 AM, Paul Mackerras wrote:
> On Wed, Mar 22, 2017 at 09:06:47AM +0530, Aneesh Kumar K.V wrote:
>> In followup patch we want to increase the va range which will result
>> in us requiring high_slices to have more than 64 bits. To enable this
>> convert high_slices to bitmap. We keep the number bits same in this patch
>> and later change that to higher value
>
> See comment below...
>
>> @@ -531,8 +569,8 @@ unsigned long slice_get_unmapped_area(unsigned long addr, unsigned long len,
>> slice_print_mask(" mask", mask);
>>
>> convert:
>> - andnot_mask(mask, good_mask);
>> - andnot_mask(mask, compat_mask);
>> + slice_andnot_mask(&mask, &good_mask);
>> + slice_andnot_mask(&mask, &compat_mask);
>> if (mask.low_slices || mask.high_slices) {
>
> The test on mask.high_slices here wants to test whether high_slices
> has any bits set, but with the conversion to a bitmap, the test will
> be always true since what will be tested is the address of the array
> in the bitmap.
>
Thanks for the review. How about the below change ?
diff --git a/arch/powerpc/mm/slice.c b/arch/powerpc/mm/slice.c
index f808f99372e4..252d90b7c3c5 100644
--- a/arch/powerpc/mm/slice.c
+++ b/arch/powerpc/mm/slice.c
@@ -588,7 +588,7 @@ unsigned long slice_get_unmapped_area(unsigned long
addr, unsigned long len,
convert:
slice_andnot_mask(&mask, &good_mask);
slice_andnot_mask(&mask, &compat_mask);
- if (mask.low_slices || mask.high_slices) {
+ if (mask.low_slices || !bitmap_empty(mask.high_slices,
SLICE_NUM_HIGH)) {
slice_convert(mm, mask, psize);
if (psize > MMU_PAGE_BASE)
on_each_cpu(slice_flush_segments, mm, 1);
More information about the Linuxppc-dev
mailing list