* [[PATCH -mm] 3/6] Fix the x86-64 page colouring code to take pgoff into account and use that code as the basis for a generic page colouring code.
[not found] <1340029247-6949-1-git-send-email-riel@surriel.com>
@ 2012-06-18 14:20 ` Rik van Riel
2012-06-18 14:20 ` [[PATCH -mm] 4/6] mm: remove x86 arch_get_unmapped_area(_topdown) Rik van Riel
` (2 subsequent siblings)
3 siblings, 0 replies; 12+ messages in thread
From: Rik van Riel @ 2012-06-18 14:20 UTC (permalink / raw)
To: linux-mm
Cc: akpm, aarcange, peterz, minchan, kosaki.motohiro, andi, hnaz, mel,
linux-kernel, knoel, Rik van Riel, Rik van Riel
<<< No Message Collected >>>
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
^ permalink raw reply [flat|nested] 12+ messages in thread
* [[PATCH -mm] 4/6] mm: remove x86 arch_get_unmapped_area(_topdown)
[not found] <1340029247-6949-1-git-send-email-riel@surriel.com>
2012-06-18 14:20 ` [[PATCH -mm] 3/6] Fix the x86-64 page colouring code to take pgoff into account and use that code as the basis for a generic page colouring code Rik van Riel
@ 2012-06-18 14:20 ` Rik van Riel
2012-06-18 14:20 ` [[PATCH -mm] 5/6] remove MIPS arch_get_unmapped_area code Rik van Riel
2012-06-18 14:20 ` [[PATCH -mm] 6/6] remove ARM arch_get_unmapped_area functions Rik van Riel
3 siblings, 0 replies; 12+ messages in thread
From: Rik van Riel @ 2012-06-18 14:20 UTC (permalink / raw)
To: linux-mm
Cc: akpm, aarcange, peterz, minchan, kosaki.motohiro, andi, hnaz, mel,
linux-kernel, knoel, Rik van Riel, Rik van Riel
<<< No Message Collected >>>
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
^ permalink raw reply [flat|nested] 12+ messages in thread
* [[PATCH -mm] 5/6] remove MIPS arch_get_unmapped_area code
[not found] <1340029247-6949-1-git-send-email-riel@surriel.com>
2012-06-18 14:20 ` [[PATCH -mm] 3/6] Fix the x86-64 page colouring code to take pgoff into account and use that code as the basis for a generic page colouring code Rik van Riel
2012-06-18 14:20 ` [[PATCH -mm] 4/6] mm: remove x86 arch_get_unmapped_area(_topdown) Rik van Riel
@ 2012-06-18 14:20 ` Rik van Riel
2012-06-18 14:20 ` [[PATCH -mm] 6/6] remove ARM arch_get_unmapped_area functions Rik van Riel
3 siblings, 0 replies; 12+ messages in thread
From: Rik van Riel @ 2012-06-18 14:20 UTC (permalink / raw)
To: linux-mm
Cc: akpm, aarcange, peterz, minchan, kosaki.motohiro, andi, hnaz, mel,
linux-kernel, knoel, Rik van Riel, Ralf Baechle, sjhill,
Rik van Riel
<<< No Message Collected >>>
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
^ permalink raw reply [flat|nested] 12+ messages in thread
* [[PATCH -mm] 6/6] remove ARM arch_get_unmapped_area functions
[not found] <1340029247-6949-1-git-send-email-riel@surriel.com>
` (2 preceding siblings ...)
2012-06-18 14:20 ` [[PATCH -mm] 5/6] remove MIPS arch_get_unmapped_area code Rik van Riel
@ 2012-06-18 14:20 ` Rik van Riel
3 siblings, 0 replies; 12+ messages in thread
From: Rik van Riel @ 2012-06-18 14:20 UTC (permalink / raw)
To: linux-mm
Cc: akpm, aarcange, peterz, minchan, kosaki.motohiro, andi, hnaz, mel,
linux-kernel, knoel, Rik van Riel, Russell King, Rik van Riel
<<< No Message Collected >>>
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
^ permalink raw reply [flat|nested] 12+ messages in thread
* [PATCH -mm 3/6] Fix the x86-64 page colouring code to take pgoff into account and use that code as the basis for a generic page colouring code.
2012-06-18 14:31 [PATCH -mm 0/6] mm: scalable and unified arch_get_unmapped_area Rik van Riel
@ 2012-06-18 14:31 ` Rik van Riel
2012-06-18 16:30 ` Andi Kleen
0 siblings, 1 reply; 12+ messages in thread
From: Rik van Riel @ 2012-06-18 14:31 UTC (permalink / raw)
To: linux-mm
Cc: akpm, aarcange, peterz, minchan, kosaki.motohiro, andi, hnaz, mel,
linux-kernel, Rik van Riel, Rik van Riel
From: Rik van Riel <riel@surriel.com>
Teach the generic arch_get_unmapped_area(_topdown) code to call the
page colouring code.
Signed-off-by: Rik van Riel <riel@redhat.com>
---
arch/mips/include/asm/page.h | 2 -
arch/mips/include/asm/pgtable.h | 1 +
arch/x86/include/asm/elf.h | 3 -
arch/x86/include/asm/pgtable_64.h | 1 +
arch/x86/kernel/sys_x86_64.c | 35 +++++++++-----
arch/x86/vdso/vma.c | 2 +-
include/linux/sched.h | 8 +++-
mm/mmap.c | 91 ++++++++++++++++++++++++++++++++-----
8 files changed, 111 insertions(+), 32 deletions(-)
diff --git a/arch/mips/include/asm/page.h b/arch/mips/include/asm/page.h
index da9bd7d..459cc25 100644
--- a/arch/mips/include/asm/page.h
+++ b/arch/mips/include/asm/page.h
@@ -63,8 +63,6 @@ extern void build_copy_page(void);
extern void clear_page(void * page);
extern void copy_page(void * to, void * from);
-extern unsigned long shm_align_mask;
-
static inline unsigned long pages_do_alias(unsigned long addr1,
unsigned long addr2)
{
diff --git a/arch/mips/include/asm/pgtable.h b/arch/mips/include/asm/pgtable.h
index b2202a6..f133a4c 100644
--- a/arch/mips/include/asm/pgtable.h
+++ b/arch/mips/include/asm/pgtable.h
@@ -415,6 +415,7 @@ int phys_mem_access_prot_allowed(struct file *file, unsigned long pfn,
*/
#define HAVE_ARCH_UNMAPPED_AREA
#define HAVE_ARCH_UNMAPPED_AREA_TOPDOWN
+#define HAVE_ARCH_ALIGN_ADDR
/*
* No page table caches to initialise
diff --git a/arch/x86/include/asm/elf.h b/arch/x86/include/asm/elf.h
index 5939f44..dc2d0bf 100644
--- a/arch/x86/include/asm/elf.h
+++ b/arch/x86/include/asm/elf.h
@@ -358,8 +358,6 @@ static inline int mmap_is_ia32(void)
enum align_flags {
ALIGN_VA_32 = BIT(0),
ALIGN_VA_64 = BIT(1),
- ALIGN_VDSO = BIT(2),
- ALIGN_TOPDOWN = BIT(3),
};
struct va_alignment {
@@ -368,5 +366,4 @@ struct va_alignment {
} ____cacheline_aligned;
extern struct va_alignment va_align;
-extern unsigned long align_addr(unsigned long, struct file *, enum align_flags);
#endif /* _ASM_X86_ELF_H */
diff --git a/arch/x86/include/asm/pgtable_64.h b/arch/x86/include/asm/pgtable_64.h
index 8af36f6..8408ccd 100644
--- a/arch/x86/include/asm/pgtable_64.h
+++ b/arch/x86/include/asm/pgtable_64.h
@@ -170,6 +170,7 @@ extern void cleanup_highmap(void);
#define HAVE_ARCH_UNMAPPED_AREA
#define HAVE_ARCH_UNMAPPED_AREA_TOPDOWN
#define HAVE_ARCH_GET_ADDRESS_RANGE
+#define HAVE_ARCH_ALIGN_ADDR
#define pgtable_cache_init() do { } while (0)
#define check_pgt_cache() do { } while (0)
diff --git a/arch/x86/kernel/sys_x86_64.c b/arch/x86/kernel/sys_x86_64.c
index 2595a5e..ac0afb8 100644
--- a/arch/x86/kernel/sys_x86_64.c
+++ b/arch/x86/kernel/sys_x86_64.c
@@ -25,31 +25,40 @@
* @flags denotes the allocation direction - bottomup or topdown -
* or vDSO; see call sites below.
*/
-unsigned long align_addr(unsigned long addr, struct file *filp,
- enum align_flags flags)
+unsigned long arch_align_addr(unsigned long addr, struct file *filp,
+ unsigned long pgoff, unsigned long flags,
+ enum mmap_allocation_direction direction)
{
- unsigned long tmp_addr;
+ unsigned long tmp_addr = PAGE_ALIGN(addr);
/* handle 32- and 64-bit case with a single conditional */
if (va_align.flags < 0 || !(va_align.flags & (2 - mmap_is_ia32())))
- return addr;
+ return tmp_addr;
- if (!(current->flags & PF_RANDOMIZE))
- return addr;
+ /* Always allow MAP_FIXED. Colouring is a performance thing only. */
+ if (flags & MAP_FIXED)
+ return tmp_addr;
- if (!((flags & ALIGN_VDSO) || filp))
- return addr;
+ if (!(current->flags & PF_RANDOMIZE))
+ return tmp_addr;
- tmp_addr = addr;
+ if (!(filp || direction == ALLOC_VDSO))
+ return tmp_addr;
/*
* We need an address which is <= than the original
* one only when in topdown direction.
*/
- if (!(flags & ALIGN_TOPDOWN))
+ if (direction == ALLOC_UP)
tmp_addr += va_align.mask;
tmp_addr &= ~va_align.mask;
+ tmp_addr += ((pgoff << PAGE_SHIFT) & va_align.mask);
+
+ if (direction == ALLOC_DOWN && tmp_addr > addr) {
+ tmp_addr -= va_align.mask;
+ tmp_addr &= ~va_align.mask;
+ }
return tmp_addr;
}
@@ -159,7 +168,7 @@ arch_get_unmapped_area(struct file *filp, unsigned long addr,
full_search:
- addr = align_addr(addr, filp, 0);
+ addr = arch_align_addr(addr, filp, pgoff, flags, ALLOC_UP);
for (vma = find_vma(mm, addr); ; vma = vma->vm_next) {
/* At this point: (!vma || addr < vma->vm_end). */
@@ -186,7 +195,7 @@ full_search:
mm->cached_hole_size = vma->vm_start - addr;
addr = vma->vm_end;
- addr = align_addr(addr, filp, 0);
+ addr = arch_align_addr(addr, filp, pgoff, flags, ALLOC_UP);
}
}
@@ -235,7 +244,7 @@ try_again:
addr -= len;
do {
- addr = align_addr(addr, filp, ALIGN_TOPDOWN);
+ addr = arch_align_addr(addr, filp, pgoff, flags, ALLOC_DOWN);
/*
* Lookup failure means no vma is above this address,
diff --git a/arch/x86/vdso/vma.c b/arch/x86/vdso/vma.c
index 00aaf04..83e0355 100644
--- a/arch/x86/vdso/vma.c
+++ b/arch/x86/vdso/vma.c
@@ -141,7 +141,7 @@ static unsigned long vdso_addr(unsigned long start, unsigned len)
* unaligned here as a result of stack start randomization.
*/
addr = PAGE_ALIGN(addr);
- addr = align_addr(addr, NULL, ALIGN_VDSO);
+ addr = arch_align_addr(addr, NULL, 0, 0, ALLOC_VDSO);
return addr;
}
diff --git a/include/linux/sched.h b/include/linux/sched.h
index fc76318..18f9326 100644
--- a/include/linux/sched.h
+++ b/include/linux/sched.h
@@ -390,12 +390,18 @@ extern int sysctl_max_map_count;
#ifdef CONFIG_MMU
enum mmap_allocation_direction {
ALLOC_UP,
- ALLOC_DOWN
+ ALLOC_DOWN,
+ ALLOC_VDSO,
};
extern void arch_pick_mmap_layout(struct mm_struct *mm);
extern void
arch_get_address_range(unsigned long flags, unsigned long *begin,
unsigned long *end, enum mmap_allocation_direction direction);
+extern unsigned long shm_align_mask;
+extern unsigned long
+arch_align_addr(unsigned long addr, struct file *filp,
+ unsigned long pgoff, unsigned long flags,
+ enum mmap_allocation_direction direction);
extern unsigned long
arch_get_unmapped_area(struct file *, unsigned long, unsigned long,
unsigned long, unsigned long);
diff --git a/mm/mmap.c b/mm/mmap.c
index 92cf0bf..0314cb1 100644
--- a/mm/mmap.c
+++ b/mm/mmap.c
@@ -1465,6 +1465,51 @@ unacct_error:
return error;
}
+#ifndef HAVE_ARCH_ALIGN_ADDR
+/* Each architecture is responsible for setting this to the required value. */
+unsigned long shm_align_mask = PAGE_SIZE - 1;
+EXPORT_SYMBOL(shm_align_mask);
+
+unsigned long arch_align_addr(unsigned long addr, struct file *filp,
+ unsigned long pgoff, unsigned long flags,
+ enum mmap_allocation_direction direction)
+{
+ unsigned long tmp_addr = PAGE_ALIGN(addr);
+
+ if (shm_align_mask <= PAGE_SIZE)
+ return tmp_addr;
+
+ /* Allow MAP_FIXED without MAP_SHARED at any address. */
+ if ((flags & (MAP_FIXED|MAP_SHARED)) == MAP_FIXED)
+ return tmp_addr;
+
+ /* Enforce page colouring for any file or MAP_SHARED mapping. */
+ if (!(filp || (flags & MAP_SHARED)))
+ return tmp_addr;
+
+ /*
+ * We need an address which is <= than the original
+ * one only when in topdown direction.
+ */
+ if (direction == ALLOC_UP)
+ tmp_addr += shm_align_mask;
+
+ tmp_addr &= ~shm_align_mask;
+ tmp_addr += ((pgoff << PAGE_SHIFT) & shm_align_mask);
+
+ /*
+ * When aligning down, make sure we did not accidentally go up.
+ * The caller will check for underflow.
+ */
+ if (direction == ALLOC_DOWN && tmp_addr > addr) {
+ tmp_addr -= shm_align_mask;
+ tmp_addr &= ~shm_align_mask;
+ }
+
+ return tmp_addr;
+}
+#endif
+
#ifndef HAVE_ARCH_GET_ADDRESS_RANGE
void arch_get_address_range(unsigned long flags, unsigned long *begin,
unsigned long *end, enum mmap_allocation_direction direction)
@@ -1513,18 +1558,22 @@ arch_get_unmapped_area(struct file *filp, unsigned long addr,
struct mm_struct *mm = current->mm;
struct vm_area_struct *vma = NULL;
struct rb_node *rb_node;
- unsigned long lower_limit, upper_limit;
+ unsigned long lower_limit, upper_limit, tmp_addr;
arch_get_address_range(flags, &lower_limit, &upper_limit, ALLOC_UP);
if (len > TASK_SIZE)
return -ENOMEM;
- if (flags & MAP_FIXED)
+ if (flags & MAP_FIXED) {
+ tmp_addr = arch_align_addr(addr, filp, pgoff, flags, ALLOC_UP);
+ if (tmp_addr != PAGE_ALIGN(addr))
+ return -EINVAL;
return addr;
+ }
if (addr) {
- addr = PAGE_ALIGN(addr);
+ addr = arch_align_addr(addr, filp, pgoff, flags, ALLOC_UP);
vma = find_vma(mm, addr);
if (TASK_SIZE - len >= addr &&
(!vma || addr + len <= vma->vm_start))
@@ -1533,7 +1582,7 @@ arch_get_unmapped_area(struct file *filp, unsigned long addr,
/* Find the left-most free area of sufficient size. */
for (addr = 0, rb_node = mm->mm_rb.rb_node; rb_node; ) {
- unsigned long vma_start;
+ unsigned long vma_start, tmp_addr;
int found_here = 0;
vma = rb_to_vma(rb_node);
@@ -1541,13 +1590,17 @@ arch_get_unmapped_area(struct file *filp, unsigned long addr,
if (vma->vm_start > len) {
if (!vma->vm_prev) {
/* This is the left-most VMA. */
- if (vma->vm_start - len >= lower_limit) {
- addr = lower_limit;
+ tmp_addr = arch_align_addr(lower_limit, filp,
+ pgoff, flags, ALLOC_UP);
+ if (vma->vm_start - len >= tmp_addr) {
+ addr = tmp_addr;
goto found_addr;
}
} else {
/* Is this hole large enough? Remember it. */
vma_start = max(vma->vm_prev->vm_end, lower_limit);
+ vma_start = arch_align_addr(vma_start, filp,
+ pgoff, flags, ALLOC_UP);
if (vma->vm_start - len >= vma_start) {
addr = vma_start;
found_here = 1;
@@ -1599,6 +1652,8 @@ arch_get_unmapped_area(struct file *filp, unsigned long addr,
if (addr < lower_limit)
addr = lower_limit;
+ addr = arch_align_addr(addr, filp, pgoff, flags, ALLOC_UP);
+
found_addr:
if (TASK_SIZE - len < addr)
return -ENOMEM;
@@ -1656,12 +1711,17 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0,
if (len > TASK_SIZE)
return -ENOMEM;
- if (flags & MAP_FIXED)
+ if (flags & MAP_FIXED) {
+ unsigned long tmp_addr;
+ tmp_addr = arch_align_addr(addr, filp, pgoff, flags, ALLOC_DOWN);
+ if (tmp_addr != PAGE_ALIGN(addr))
+ return -EINVAL;
return addr;
+ }
/* requesting a specific address */
if (addr) {
- addr = PAGE_ALIGN(addr);
+ addr = arch_align_addr(addr, filp, pgoff, flags, ALLOC_DOWN);
vma = find_vma(mm, addr);
if (TASK_SIZE - len >= addr &&
(!vma || addr + len <= vma->vm_start))
@@ -1678,7 +1738,9 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0,
*/
if (upper_limit - len > mm->highest_vma) {
addr = upper_limit - len;
- goto found_addr;
+ addr = arch_align_addr(addr, filp, pgoff, flags, ALLOC_DOWN);
+ if (addr > mm->highest_vma);
+ goto found_addr;
}
/* Find the right-most free area of sufficient size. */
@@ -1691,9 +1753,14 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0,
/* Is this hole large enough? Remember it. */
vma_start = min(vma->vm_start, upper_limit);
if (vma_start > len) {
- if (!vma->vm_prev ||
- (vma_start - len >= vma->vm_prev->vm_end)) {
- addr = vma_start - len;
+ unsigned long tmp_addr = vma_start - len;
+ tmp_addr = arch_align_addr(tmp_addr, filp,
+ pgoff, flags, ALLOC_DOWN);
+ /* No underflow? Does it still fit the hole? */
+ if (tmp_addr && tmp_addr <= vma_start - len &&
+ (!vma->vm_prev ||
+ tmp_addr >= vma->vm_prev->vm_end)) {
+ addr = tmp_addr;
found_here = 1;
}
}
--
1.7.7.6
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
^ permalink raw reply related [flat|nested] 12+ messages in thread
* Re: [PATCH -mm 3/6] Fix the x86-64 page colouring code to take pgoff into account and use that code as the basis for a generic page colouring code.
2012-06-18 14:31 ` [PATCH -mm 3/6] Fix the x86-64 page colouring code to take pgoff into account and use that code as the basis for a generic page colouring code Rik van Riel
@ 2012-06-18 16:30 ` Andi Kleen
2012-06-18 16:45 ` Rik van Riel
0 siblings, 1 reply; 12+ messages in thread
From: Andi Kleen @ 2012-06-18 16:30 UTC (permalink / raw)
To: Rik van Riel
Cc: linux-mm, akpm, aarcange, peterz, minchan, kosaki.motohiro, hnaz,
mel, linux-kernel, Rik van Riel
Rik van Riel <riel@redhat.com> writes:
> From: Rik van Riel <riel@surriel.com>
>
> Teach the generic arch_get_unmapped_area(_topdown) code to call the
> page colouring code.
What tree is that against? I cannot find x86 page colouring code in next
or mainline.
-Andi
--
ak@linux.intel.com -- Speaking for myself only
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH -mm 3/6] Fix the x86-64 page colouring code to take pgoff into account and use that code as the basis for a generic page colouring code.
2012-06-18 16:30 ` Andi Kleen
@ 2012-06-18 16:45 ` Rik van Riel
2012-06-18 18:16 ` Borislav Petkov
0 siblings, 1 reply; 12+ messages in thread
From: Rik van Riel @ 2012-06-18 16:45 UTC (permalink / raw)
To: Andi Kleen
Cc: linux-mm, akpm, aarcange, peterz, minchan, kosaki.motohiro, hnaz,
mel, linux-kernel, Rik van Riel
On 06/18/2012 12:30 PM, Andi Kleen wrote:
> Rik van Riel<riel@redhat.com> writes:
>
>> From: Rik van Riel<riel@surriel.com>
>>
>> Teach the generic arch_get_unmapped_area(_topdown) code to call the
>> page colouring code.
>
> What tree is that against? I cannot find x86 page colouring code in next
> or mainline.
This is against mainline.
See align_addr in arch/x86/kernel/sys_x86_64.c and the
call sites in arch_get_unmapped_area(_topdown).
On certain AMD chips, Linux tries to get certain
allocations aligned to avoid cache aliasing issues.
--
All rights reversed
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH -mm 3/6] Fix the x86-64 page colouring code to take pgoff into account and use that code as the basis for a generic page colouring code.
2012-06-18 16:45 ` Rik van Riel
@ 2012-06-18 18:16 ` Borislav Petkov
2012-06-18 19:00 ` Rik van Riel
2012-06-18 19:02 ` Rik van Riel
0 siblings, 2 replies; 12+ messages in thread
From: Borislav Petkov @ 2012-06-18 18:16 UTC (permalink / raw)
To: Rik van Riel
Cc: Andi Kleen, linux-mm, akpm, aarcange, peterz, minchan,
kosaki.motohiro, hnaz, mel, linux-kernel, Rik van Riel
On Mon, Jun 18, 2012 at 12:45:48PM -0400, Rik van Riel wrote:
> >What tree is that against? I cannot find x86 page colouring code in next
> >or mainline.
>
> This is against mainline.
Which mainline do you mean exactly?
1/6 doesn't apply ontop of current mainline and by "current" I mean
v3.5-rc3-57-g39a50b42f702.
--
Regards/Gruss,
Boris.
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH -mm 3/6] Fix the x86-64 page colouring code to take pgoff into account and use that code as the basis for a generic page colouring code.
2012-06-18 18:16 ` Borislav Petkov
@ 2012-06-18 19:00 ` Rik van Riel
2012-06-18 19:02 ` Rik van Riel
1 sibling, 0 replies; 12+ messages in thread
From: Rik van Riel @ 2012-06-18 19:00 UTC (permalink / raw)
To: Borislav Petkov, Andi Kleen, linux-mm, akpm, aarcange, peterz,
minchan, kosaki.motohiro, hnaz, mel, linux-kernel, Rik van Riel
On 06/18/2012 02:16 PM, Borislav Petkov wrote:
> On Mon, Jun 18, 2012 at 12:45:48PM -0400, Rik van Riel wrote:
>>> What tree is that against? I cannot find x86 page colouring code in next
>>> or mainline.
>>
>> This is against mainline.
>
> Which mainline do you mean exactly?
>
> 1/6 doesn't apply ontop of current mainline and by "current" I mean
> v3.5-rc3-57-g39a50b42f702.
I git pulled on Friday, then used guilt to apply and rediff
all the patches. I pull from here:
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6
I see no g39a50b... commit after pulling that tree here.
Do you have any local changes by chance?
--
All rights reversed
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH -mm 3/6] Fix the x86-64 page colouring code to take pgoff into account and use that code as the basis for a generic page colouring code.
2012-06-18 18:16 ` Borislav Petkov
2012-06-18 19:00 ` Rik van Riel
@ 2012-06-18 19:02 ` Rik van Riel
2012-06-18 20:37 ` Borislav Petkov
1 sibling, 1 reply; 12+ messages in thread
From: Rik van Riel @ 2012-06-18 19:02 UTC (permalink / raw)
To: Borislav Petkov, Andi Kleen, linux-mm, akpm, aarcange, peterz,
minchan, kosaki.motohiro, hnaz, mel, linux-kernel, Rik van Riel
On 06/18/2012 02:16 PM, Borislav Petkov wrote:
> On Mon, Jun 18, 2012 at 12:45:48PM -0400, Rik van Riel wrote:
>>> What tree is that against? I cannot find x86 page colouring code in next
>>> or mainline.
>>
>> This is against mainline.
>
> Which mainline do you mean exactly?
>
> 1/6 doesn't apply ontop of current mainline and by "current" I mean
> v3.5-rc3-57-g39a50b42f702.
After pulling in the latest patches, including that
39a50b... commit, all patches still apply here when
I type guilt push -a.
--
All rights reversed
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH -mm 3/6] Fix the x86-64 page colouring code to take pgoff into account and use that code as the basis for a generic page colouring code.
2012-06-18 19:02 ` Rik van Riel
@ 2012-06-18 20:37 ` Borislav Petkov
2012-06-18 22:03 ` Rik van Riel
0 siblings, 1 reply; 12+ messages in thread
From: Borislav Petkov @ 2012-06-18 20:37 UTC (permalink / raw)
To: Rik van Riel
Cc: Andi Kleen, linux-mm, akpm, aarcange, peterz, minchan,
kosaki.motohiro, hnaz, mel, linux-kernel, Rik van Riel
On Mon, Jun 18, 2012 at 03:02:54PM -0400, Rik van Riel wrote:
> On 06/18/2012 02:16 PM, Borislav Petkov wrote:
> >On Mon, Jun 18, 2012 at 12:45:48PM -0400, Rik van Riel wrote:
> >>>What tree is that against? I cannot find x86 page colouring code in next
> >>>or mainline.
> >>
> >>This is against mainline.
> >
> >Which mainline do you mean exactly?
> >
> >1/6 doesn't apply ontop of current mainline and by "current" I mean
> >v3.5-rc3-57-g39a50b42f702.
>
> After pulling in the latest patches, including that
> 39a50b... commit, all patches still apply here when
> I type guilt push -a.
That's strange.
I'm also pulling from
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6
Btw, if I had local changes, the top commit id would've changed, right?
So I wouldn't have had 39a50b anymore.
Just in case, I tried applying 1/6 on another repository and it still
doesn't apply:
$ patch -p1 --dry-run -i /tmp/riel.01
patching file include/linux/mm_types.h
Hunk #1 succeeded at 300 (offset -7 lines).
patching file mm/mmap.c
Hunk #2 succeeded at 206 with fuzz 1 (offset -45 lines).
Hunk #3 FAILED at 398.
Hunk #4 FAILED at 461.
Hunk #5 succeeded at 603 (offset -57 lines).
Hunk #6 succeeded at 1404 (offset -66 lines).
Hunk #7 succeeded at 1441 (offset -66 lines).
Hunk #8 succeeded at 1528 (offset -66 lines).
Hunk #9 succeeded at 1570 (offset -66 lines).
Hunk #10 FAILED at 1908.
Hunk #11 FAILED at 2093.
4 out of 11 hunks FAILED -- saving rejects to file mm/mmap.c.rej
riel.01 is the mail saved from mutt so it should be fine.
Now let's look at the first failing hunk:
Mainline has:
void validate_mm(struct mm_struct *mm)
{
int bug = 0;
int i = 0;
struct vm_area_struct *tmp = mm->mmap;
while (tmp) {
tmp = tmp->vm_next;
i++;
}
if (i != mm->map_count)
printk("map_count %d vm_next %d\n", mm->map_count, i), bug = 1;
i = browse_rb(&mm->mm_rb);
if (i != mm->map_count)
printk("map_count %d rb %d\n", mm->map_count, i), bug = 1;
BUG_ON(bug);
}
--
and your patch has some new ifs in it:
@@ -386,12 +398,16 @@ void validate_mm(struct mm_struct *mm)
int bug = 0;
int i = 0;
struct vm_area_struct *tmp = mm->mmap;
+ unsigned long highest_address = 0;
while (tmp) {
if (tmp->free_gap != max_free_space(&tmp->vm_rb))
printk("free space %lx, correct %lx\n", tmp->free_gap, max_free_space(&tmp->vm_rb)), bug = 1;
^^^^^^^^^^^^^^
I think this if-statement is the problem. It is not present in mainline
but this patch doesn't add it so some patch earlier than that adds it
which is probably in your queue?
+ highest_address = tmp->vm_end;
tmp = tmp->vm_next;
i++;
}
+ if (highest_address != mm->highest_vma)
+ printk("mm->highest_vma %lx, found %lx\n", mm->highest_vma, highest_address), bug = 1;
if (i != mm->map_count)
printk("map_count %d vm_next %d\n", mm->map_count, i), bug = 1;
i = browse_rb(&mm->mm_rb);
--
I haven't looked at the other failing hunks...
Thanks.
--
Regards/Gruss,
Boris.
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH -mm 3/6] Fix the x86-64 page colouring code to take pgoff into account and use that code as the basis for a generic page colouring code.
2012-06-18 20:37 ` Borislav Petkov
@ 2012-06-18 22:03 ` Rik van Riel
0 siblings, 0 replies; 12+ messages in thread
From: Rik van Riel @ 2012-06-18 22:03 UTC (permalink / raw)
To: Borislav Petkov, Andi Kleen, linux-mm, akpm, aarcange, peterz,
minchan, kosaki.motohiro, hnaz, mel, linux-kernel, Rik van Riel
On 06/18/2012 04:37 PM, Borislav Petkov wrote:
> and your patch has some new ifs in it:
>
> @@ -386,12 +398,16 @@ void validate_mm(struct mm_struct *mm)
> int bug = 0;
> int i = 0;
> struct vm_area_struct *tmp = mm->mmap;
> + unsigned long highest_address = 0;
> while (tmp) {
> if (tmp->free_gap != max_free_space(&tmp->vm_rb))
> printk("free space %lx, correct %lx\n", tmp->free_gap, max_free_space(&tmp->vm_rb)), bug = 1;
>
> ^^^^^^^^^^^^^^
>
> I think this if-statement is the problem. It is not present in mainline
> but this patch doesn't add it so some patch earlier than that adds it
> which is probably in your queue?
Argh! I see the problem now.
guilt-patchbomb sent everything from my second patch onwards,
not my first patch :(
Let me resend the series properly, I have 7 patches not 6.
I am having a bad email day...
--
All rights reversed
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
^ permalink raw reply [flat|nested] 12+ messages in thread
end of thread, other threads:[~2012-06-18 22:03 UTC | newest]
Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <1340029247-6949-1-git-send-email-riel@surriel.com>
2012-06-18 14:20 ` [[PATCH -mm] 3/6] Fix the x86-64 page colouring code to take pgoff into account and use that code as the basis for a generic page colouring code Rik van Riel
2012-06-18 14:20 ` [[PATCH -mm] 4/6] mm: remove x86 arch_get_unmapped_area(_topdown) Rik van Riel
2012-06-18 14:20 ` [[PATCH -mm] 5/6] remove MIPS arch_get_unmapped_area code Rik van Riel
2012-06-18 14:20 ` [[PATCH -mm] 6/6] remove ARM arch_get_unmapped_area functions Rik van Riel
2012-06-18 14:31 [PATCH -mm 0/6] mm: scalable and unified arch_get_unmapped_area Rik van Riel
2012-06-18 14:31 ` [PATCH -mm 3/6] Fix the x86-64 page colouring code to take pgoff into account and use that code as the basis for a generic page colouring code Rik van Riel
2012-06-18 16:30 ` Andi Kleen
2012-06-18 16:45 ` Rik van Riel
2012-06-18 18:16 ` Borislav Petkov
2012-06-18 19:00 ` Rik van Riel
2012-06-18 19:02 ` Rik van Riel
2012-06-18 20:37 ` Borislav Petkov
2012-06-18 22:03 ` Rik van Riel
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).