All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Aneesh Kumar K.V" <aneesh.kumar@linux.vnet.ibm.com>
To: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Cc: Rik van Riel <riel@redhat.com>,
	Linus Torvalds <torvalds@linux-foundation.org>,
	Hugh Dickins <hughd@google.com>,
	Linux Kernel <linux-kernel@vger.kernel.org>,
	Linux-MM <linux-mm@kvack.org>, Ingo Molnar <mingo@redhat.com>,
	Paul Mackerras <paulus@samba.org>, Mel Gorman <mgorman@suse.de>,
	Sasha Levin <sasha.levin@oracle.com>,
	Dave Jones <davej@redhat.com>,
	LinuxPPC-dev <linuxppc-dev@lists.ozlabs.org>,
	Kirill Shutemov <kirill.shutemov@linux.intel.com>
Subject: Re: [PATCH 03/10] mm: Convert p[te|md]_numa users to p[te|md]_protnone_numa
Date: Wed, 03 Dec 2014 20:53:37 +0530	[thread overview]
Message-ID: <87lhmobvuu.fsf@linux.vnet.ibm.com> (raw)
In-Reply-To: <1417551115.27448.7.camel@kernel.crashing.org>

Benjamin Herrenschmidt <benh@kernel.crashing.org> writes:

> On Tue, 2014-12-02 at 12:57 +0530, Aneesh Kumar K.V wrote:
>> Now, hash_preload can possibly insert an hpte in hash page table even if
>> the access is not allowed by the pte permissions. But i guess even that
>> is ok. because we will fault again, end-up calling hash_page_mm where we
>> handle that part correctly.
>
> I think we need a test case...
>

I ran the subpageprot test that Paul had written. I modified it to ran
with selftest. 

commit 0cd3756bce6880a13de49406ce5c8537712c9bf8
Author: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
Date:   Wed Dec 3 20:40:06 2014 +0530

    selftest/ppc: Add subpage protection self test.
    
    Originally written by  Paul Mackerras <paulus@samba.org>
    
    Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>

diff --git a/tools/testing/selftests/powerpc/mm/Makefile b/tools/testing/selftests/powerpc/mm/Makefile
index 357ccbd6bad9..fb00c6f7d675 100644
--- a/tools/testing/selftests/powerpc/mm/Makefile
+++ b/tools/testing/selftests/powerpc/mm/Makefile
@@ -1,7 +1,7 @@
 noarg:
 	$(MAKE) -C ../
 
-PROGS := hugetlb_vs_thp_test
+PROGS := hugetlb_vs_thp_test subpage_prot
 
 all: $(PROGS)
 
diff --git a/tools/testing/selftests/powerpc/mm/subpage_prot.c b/tools/testing/selftests/powerpc/mm/subpage_prot.c
new file mode 100644
index 000000000000..1efeafc2e175
--- /dev/null
+++ b/tools/testing/selftests/powerpc/mm/subpage_prot.c
@@ -0,0 +1,150 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+#include <signal.h>
+#include <stdarg.h>
+#include <sys/ptrace.h>
+#include <sys/mman.h>
+#include <errno.h>
+#include <ucontext.h>
+#include <assert.h>
+
+#include "utils.h"
+
+void *mallocblock;
+unsigned long mallocsize;
+void *fileblock;
+off_t filesize;
+
+int in_test;
+volatile int faulted;
+volatile void *dar;
+int errors;
+
+static void segv(int signum, siginfo_t *info, void *ctxt_v)
+{
+	ucontext_t *ctxt = (ucontext_t *)ctxt_v;
+	struct pt_regs *regs = ctxt->uc_mcontext.regs;
+
+	if (!in_test) {
+		fprintf(stderr, "Segfault outside of test !\n");
+		exit(1);
+	}
+	faulted = 1;
+	dar = (void *)regs->dar;
+	regs->nip += 4;
+}
+
+static inline void do_read(const volatile void *addr)
+{
+	int ret;
+	asm volatile("lwz %0,0(%1); twi 0,%0,0; isync;\n"
+		     : "=r" (ret) : "r" (addr) : "memory");
+}
+
+static inline void do_write(const volatile void *addr)
+{
+	int val = 0x1234567;
+	asm volatile("stw %0,0(%1); sync; \n"
+		     : : "r" (val), "r" (addr) : "memory");
+}
+
+static inline void check_faulted(void *addr, long page, long subpage, int write)
+{
+	int want_fault = (subpage == ((page + 3) % 16));
+
+	if (write)
+		want_fault |= (subpage == ((page + 1) % 16));
+
+	if (faulted != want_fault) {
+		printf("Failed at 0x%p (p=%ld,sp=%ld,w=%d), want=%s, got=%s !\n",
+		       addr, page, subpage, write,
+		       want_fault ? "fault" : "pass",
+		       faulted ? "fault" : "pass");
+		++errors;
+	}
+	if (faulted) {
+		if (dar != addr) {
+			printf("Fault expected at 0x%p and happened at 0x%p !\n",
+			       addr, dar);
+		}
+		faulted = 0;
+		asm volatile("sync" : : : "memory");
+	}
+}
+
+static int run_test(void *addr, unsigned long size)
+{
+	unsigned int *map;
+	long i, j, pages, err;
+
+	pages = size / 0x10000;
+	map = malloc(pages * 4);
+	assert(map);
+
+	/* for each page, mark subpage i % 16 read only and subpage
+	 * (i + 3) % 16 inaccessible
+	 */
+	for (i = 0; i < pages; i++)
+		map[i] = (0x40000000 >> (((i + 1) * 2) % 32)) |
+			(0xc0000000 >> (((i + 3) * 2) % 32));
+	err = syscall(310, addr, size, map);
+	if (err) {
+		perror("subpage_perm");
+		return 1;
+	}
+	free(map);
+
+	in_test = 1;
+	errors = 0;
+	for (i = 0; i < pages; i++)
+		for (j = 0; j < 16; j++, addr += 0x1000) {
+			do_read(addr);
+			check_faulted(addr, i, j, 0);
+			do_write(addr);
+			check_faulted(addr, i, j, 1);
+		}
+	in_test = 0;
+	if (errors) {
+		printf("%d errors detected\n", errors);
+		return 1;
+	}
+	printf("OK\n");
+	return 0;
+}
+
+int test_main(void)
+{
+	unsigned long align;
+
+	if (getpagesize() != 0x10000) {
+		fprintf(stderr, "Kernel page size must be 64K!\n");
+		return 1;
+	}
+
+	struct sigaction act = {
+		.sa_sigaction = segv,
+		.sa_flags = SA_SIGINFO
+	};
+	sigaction(SIGSEGV, &act, NULL);
+
+	mallocsize = 4*16*1024*1024;
+	posix_memalign(&mallocblock, 64*1024, mallocsize);
+	assert(mallocblock);
+	align = (unsigned long)mallocblock;
+	if (align & 0xffff)
+		align = (align | 0xffff) + 1;
+	mallocblock = (void *)align;
+
+	printf("allocated malloc block of 0x%lx bytes at 0x%p\n",
+	       mallocsize, mallocblock);
+
+	printf("testing malloc block...\n");
+	return run_test(mallocblock, mallocsize);
+}
+
+int main(void)
+{
+	return test_harness(test_main, "subpage_prot");
+}

WARNING: multiple messages have this Message-ID (diff)
From: "Aneesh Kumar K.V" <aneesh.kumar@linux.vnet.ibm.com>
To: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Cc: Mel Gorman <mgorman@suse.de>,
	Linux Kernel <linux-kernel@vger.kernel.org>,
	Linux-MM <linux-mm@kvack.org>,
	LinuxPPC-dev <linuxppc-dev@lists.ozlabs.org>,
	Hugh Dickins <hughd@google.com>, Dave Jones <davej@redhat.com>,
	Rik van Riel <riel@redhat.com>, Ingo Molnar <mingo@redhat.com>,
	Kirill Shutemov <kirill.shutemov@linux.intel.com>,
	Sasha Levin <sasha.levin@oracle.com>,
	Paul Mackerras <paulus@samba.org>,
	Linus Torvalds <torvalds@linux-foundation.org>
Subject: Re: [PATCH 03/10] mm: Convert p[te|md]_numa users to p[te|md]_protnone_numa
Date: Wed, 03 Dec 2014 20:53:37 +0530	[thread overview]
Message-ID: <87lhmobvuu.fsf@linux.vnet.ibm.com> (raw)
In-Reply-To: <1417551115.27448.7.camel@kernel.crashing.org>

Benjamin Herrenschmidt <benh@kernel.crashing.org> writes:

> On Tue, 2014-12-02 at 12:57 +0530, Aneesh Kumar K.V wrote:
>> Now, hash_preload can possibly insert an hpte in hash page table even if
>> the access is not allowed by the pte permissions. But i guess even that
>> is ok. because we will fault again, end-up calling hash_page_mm where we
>> handle that part correctly.
>
> I think we need a test case...
>

I ran the subpageprot test that Paul had written. I modified it to ran
with selftest. 

commit 0cd3756bce6880a13de49406ce5c8537712c9bf8
Author: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
Date:   Wed Dec 3 20:40:06 2014 +0530

    selftest/ppc: Add subpage protection self test.
    
    Originally written by  Paul Mackerras <paulus@samba.org>
    
    Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>

diff --git a/tools/testing/selftests/powerpc/mm/Makefile b/tools/testing/selftests/powerpc/mm/Makefile
index 357ccbd6bad9..fb00c6f7d675 100644
--- a/tools/testing/selftests/powerpc/mm/Makefile
+++ b/tools/testing/selftests/powerpc/mm/Makefile
@@ -1,7 +1,7 @@
 noarg:
 	$(MAKE) -C ../
 
-PROGS := hugetlb_vs_thp_test
+PROGS := hugetlb_vs_thp_test subpage_prot
 
 all: $(PROGS)
 
diff --git a/tools/testing/selftests/powerpc/mm/subpage_prot.c b/tools/testing/selftests/powerpc/mm/subpage_prot.c
new file mode 100644
index 000000000000..1efeafc2e175
--- /dev/null
+++ b/tools/testing/selftests/powerpc/mm/subpage_prot.c
@@ -0,0 +1,150 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+#include <signal.h>
+#include <stdarg.h>
+#include <sys/ptrace.h>
+#include <sys/mman.h>
+#include <errno.h>
+#include <ucontext.h>
+#include <assert.h>
+
+#include "utils.h"
+
+void *mallocblock;
+unsigned long mallocsize;
+void *fileblock;
+off_t filesize;
+
+int in_test;
+volatile int faulted;
+volatile void *dar;
+int errors;
+
+static void segv(int signum, siginfo_t *info, void *ctxt_v)
+{
+	ucontext_t *ctxt = (ucontext_t *)ctxt_v;
+	struct pt_regs *regs = ctxt->uc_mcontext.regs;
+
+	if (!in_test) {
+		fprintf(stderr, "Segfault outside of test !\n");
+		exit(1);
+	}
+	faulted = 1;
+	dar = (void *)regs->dar;
+	regs->nip += 4;
+}
+
+static inline void do_read(const volatile void *addr)
+{
+	int ret;
+	asm volatile("lwz %0,0(%1); twi 0,%0,0; isync;\n"
+		     : "=r" (ret) : "r" (addr) : "memory");
+}
+
+static inline void do_write(const volatile void *addr)
+{
+	int val = 0x1234567;
+	asm volatile("stw %0,0(%1); sync; \n"
+		     : : "r" (val), "r" (addr) : "memory");
+}
+
+static inline void check_faulted(void *addr, long page, long subpage, int write)
+{
+	int want_fault = (subpage == ((page + 3) % 16));
+
+	if (write)
+		want_fault |= (subpage == ((page + 1) % 16));
+
+	if (faulted != want_fault) {
+		printf("Failed at 0x%p (p=%ld,sp=%ld,w=%d), want=%s, got=%s !\n",
+		       addr, page, subpage, write,
+		       want_fault ? "fault" : "pass",
+		       faulted ? "fault" : "pass");
+		++errors;
+	}
+	if (faulted) {
+		if (dar != addr) {
+			printf("Fault expected at 0x%p and happened at 0x%p !\n",
+			       addr, dar);
+		}
+		faulted = 0;
+		asm volatile("sync" : : : "memory");
+	}
+}
+
+static int run_test(void *addr, unsigned long size)
+{
+	unsigned int *map;
+	long i, j, pages, err;
+
+	pages = size / 0x10000;
+	map = malloc(pages * 4);
+	assert(map);
+
+	/* for each page, mark subpage i % 16 read only and subpage
+	 * (i + 3) % 16 inaccessible
+	 */
+	for (i = 0; i < pages; i++)
+		map[i] = (0x40000000 >> (((i + 1) * 2) % 32)) |
+			(0xc0000000 >> (((i + 3) * 2) % 32));
+	err = syscall(310, addr, size, map);
+	if (err) {
+		perror("subpage_perm");
+		return 1;
+	}
+	free(map);
+
+	in_test = 1;
+	errors = 0;
+	for (i = 0; i < pages; i++)
+		for (j = 0; j < 16; j++, addr += 0x1000) {
+			do_read(addr);
+			check_faulted(addr, i, j, 0);
+			do_write(addr);
+			check_faulted(addr, i, j, 1);
+		}
+	in_test = 0;
+	if (errors) {
+		printf("%d errors detected\n", errors);
+		return 1;
+	}
+	printf("OK\n");
+	return 0;
+}
+
+int test_main(void)
+{
+	unsigned long align;
+
+	if (getpagesize() != 0x10000) {
+		fprintf(stderr, "Kernel page size must be 64K!\n");
+		return 1;
+	}
+
+	struct sigaction act = {
+		.sa_sigaction = segv,
+		.sa_flags = SA_SIGINFO
+	};
+	sigaction(SIGSEGV, &act, NULL);
+
+	mallocsize = 4*16*1024*1024;
+	posix_memalign(&mallocblock, 64*1024, mallocsize);
+	assert(mallocblock);
+	align = (unsigned long)mallocblock;
+	if (align & 0xffff)
+		align = (align | 0xffff) + 1;
+	mallocblock = (void *)align;
+
+	printf("allocated malloc block of 0x%lx bytes at 0x%p\n",
+	       mallocsize, mallocblock);
+
+	printf("testing malloc block...\n");
+	return run_test(mallocblock, mallocsize);
+}
+
+int main(void)
+{
+	return test_harness(test_main, "subpage_prot");
+}

--
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>

WARNING: multiple messages have this Message-ID (diff)
From: "Aneesh Kumar K.V" <aneesh.kumar@linux.vnet.ibm.com>
To: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Cc: Mel Gorman <mgorman@suse.de>,
	Linux Kernel <linux-kernel@vger.kernel.org>,
	Linux-MM <linux-mm@kvack.org>,
	LinuxPPC-dev <linuxppc-dev@lists.ozlabs.org>,
	Hugh Dickins <hughd@google.com>, Dave Jones <davej@redhat.com>,
	Rik van Riel <riel@redhat.com>, Ingo Molnar <mingo@redhat.com>,
	Kirill Shutemov <kirill.shutemov@linux.intel.com>,
	Sasha Levin <sasha.levin@oracle.com>,
	Paul Mackerras <paulus@samba.org>,
	Linus Torvalds <torvalds@linux-foundation.org>
Subject: Re: [PATCH 03/10] mm: Convert p[te|md]_numa users to p[te|md]_protnone_numa
Date: Wed, 03 Dec 2014 20:53:37 +0530	[thread overview]
Message-ID: <87lhmobvuu.fsf@linux.vnet.ibm.com> (raw)
In-Reply-To: <1417551115.27448.7.camel@kernel.crashing.org>

Benjamin Herrenschmidt <benh@kernel.crashing.org> writes:

> On Tue, 2014-12-02 at 12:57 +0530, Aneesh Kumar K.V wrote:
>> Now, hash_preload can possibly insert an hpte in hash page table even if
>> the access is not allowed by the pte permissions. But i guess even that
>> is ok. because we will fault again, end-up calling hash_page_mm where we
>> handle that part correctly.
>
> I think we need a test case...
>

I ran the subpageprot test that Paul had written. I modified it to ran
with selftest. 

commit 0cd3756bce6880a13de49406ce5c8537712c9bf8
Author: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
Date:   Wed Dec 3 20:40:06 2014 +0530

    selftest/ppc: Add subpage protection self test.
    
    Originally written by  Paul Mackerras <paulus@samba.org>
    
    Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>

diff --git a/tools/testing/selftests/powerpc/mm/Makefile b/tools/testing/selftests/powerpc/mm/Makefile
index 357ccbd6bad9..fb00c6f7d675 100644
--- a/tools/testing/selftests/powerpc/mm/Makefile
+++ b/tools/testing/selftests/powerpc/mm/Makefile
@@ -1,7 +1,7 @@
 noarg:
 	$(MAKE) -C ../
 
-PROGS := hugetlb_vs_thp_test
+PROGS := hugetlb_vs_thp_test subpage_prot
 
 all: $(PROGS)
 
diff --git a/tools/testing/selftests/powerpc/mm/subpage_prot.c b/tools/testing/selftests/powerpc/mm/subpage_prot.c
new file mode 100644
index 000000000000..1efeafc2e175
--- /dev/null
+++ b/tools/testing/selftests/powerpc/mm/subpage_prot.c
@@ -0,0 +1,150 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+#include <signal.h>
+#include <stdarg.h>
+#include <sys/ptrace.h>
+#include <sys/mman.h>
+#include <errno.h>
+#include <ucontext.h>
+#include <assert.h>
+
+#include "utils.h"
+
+void *mallocblock;
+unsigned long mallocsize;
+void *fileblock;
+off_t filesize;
+
+int in_test;
+volatile int faulted;
+volatile void *dar;
+int errors;
+
+static void segv(int signum, siginfo_t *info, void *ctxt_v)
+{
+	ucontext_t *ctxt = (ucontext_t *)ctxt_v;
+	struct pt_regs *regs = ctxt->uc_mcontext.regs;
+
+	if (!in_test) {
+		fprintf(stderr, "Segfault outside of test !\n");
+		exit(1);
+	}
+	faulted = 1;
+	dar = (void *)regs->dar;
+	regs->nip += 4;
+}
+
+static inline void do_read(const volatile void *addr)
+{
+	int ret;
+	asm volatile("lwz %0,0(%1); twi 0,%0,0; isync;\n"
+		     : "=r" (ret) : "r" (addr) : "memory");
+}
+
+static inline void do_write(const volatile void *addr)
+{
+	int val = 0x1234567;
+	asm volatile("stw %0,0(%1); sync; \n"
+		     : : "r" (val), "r" (addr) : "memory");
+}
+
+static inline void check_faulted(void *addr, long page, long subpage, int write)
+{
+	int want_fault = (subpage == ((page + 3) % 16));
+
+	if (write)
+		want_fault |= (subpage == ((page + 1) % 16));
+
+	if (faulted != want_fault) {
+		printf("Failed at 0x%p (p=%ld,sp=%ld,w=%d), want=%s, got=%s !\n",
+		       addr, page, subpage, write,
+		       want_fault ? "fault" : "pass",
+		       faulted ? "fault" : "pass");
+		++errors;
+	}
+	if (faulted) {
+		if (dar != addr) {
+			printf("Fault expected at 0x%p and happened at 0x%p !\n",
+			       addr, dar);
+		}
+		faulted = 0;
+		asm volatile("sync" : : : "memory");
+	}
+}
+
+static int run_test(void *addr, unsigned long size)
+{
+	unsigned int *map;
+	long i, j, pages, err;
+
+	pages = size / 0x10000;
+	map = malloc(pages * 4);
+	assert(map);
+
+	/* for each page, mark subpage i % 16 read only and subpage
+	 * (i + 3) % 16 inaccessible
+	 */
+	for (i = 0; i < pages; i++)
+		map[i] = (0x40000000 >> (((i + 1) * 2) % 32)) |
+			(0xc0000000 >> (((i + 3) * 2) % 32));
+	err = syscall(310, addr, size, map);
+	if (err) {
+		perror("subpage_perm");
+		return 1;
+	}
+	free(map);
+
+	in_test = 1;
+	errors = 0;
+	for (i = 0; i < pages; i++)
+		for (j = 0; j < 16; j++, addr += 0x1000) {
+			do_read(addr);
+			check_faulted(addr, i, j, 0);
+			do_write(addr);
+			check_faulted(addr, i, j, 1);
+		}
+	in_test = 0;
+	if (errors) {
+		printf("%d errors detected\n", errors);
+		return 1;
+	}
+	printf("OK\n");
+	return 0;
+}
+
+int test_main(void)
+{
+	unsigned long align;
+
+	if (getpagesize() != 0x10000) {
+		fprintf(stderr, "Kernel page size must be 64K!\n");
+		return 1;
+	}
+
+	struct sigaction act = {
+		.sa_sigaction = segv,
+		.sa_flags = SA_SIGINFO
+	};
+	sigaction(SIGSEGV, &act, NULL);
+
+	mallocsize = 4*16*1024*1024;
+	posix_memalign(&mallocblock, 64*1024, mallocsize);
+	assert(mallocblock);
+	align = (unsigned long)mallocblock;
+	if (align & 0xffff)
+		align = (align | 0xffff) + 1;
+	mallocblock = (void *)align;
+
+	printf("allocated malloc block of 0x%lx bytes at 0x%p\n",
+	       mallocsize, mallocblock);
+
+	printf("testing malloc block...\n");
+	return run_test(mallocblock, mallocsize);
+}
+
+int main(void)
+{
+	return test_harness(test_main, "subpage_prot");
+}


  reply	other threads:[~2014-12-03 15:23 UTC|newest]

Thread overview: 93+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-11-21 13:57 [PATCH 0/10] Replace _PAGE_NUMA with PAGE_NONE protections v3 Mel Gorman
2014-11-21 13:57 ` Mel Gorman
2014-11-21 13:57 ` Mel Gorman
2014-11-21 13:57 ` [PATCH 01/10] mm: numa: Do not dereference pmd outside of the lock during NUMA hinting fault Mel Gorman
2014-11-21 13:57   ` Mel Gorman
2014-11-21 13:57   ` Mel Gorman
2014-11-21 13:57 ` [PATCH 02/10] mm: Add p[te|md] protnone helpers for use by NUMA balancing Mel Gorman
2014-11-21 13:57   ` Mel Gorman
2014-11-21 13:57   ` Mel Gorman
2014-12-01 22:38   ` Benjamin Herrenschmidt
2014-12-01 22:38     ` Benjamin Herrenschmidt
2014-12-01 22:38     ` Benjamin Herrenschmidt
2014-12-02 10:12     ` Mel Gorman
2014-12-02 10:12       ` Mel Gorman
2014-12-02 10:12       ` Mel Gorman
2014-11-21 13:57 ` [PATCH 03/10] mm: Convert p[te|md]_numa users to p[te|md]_protnone_numa Mel Gorman
2014-11-21 13:57   ` Mel Gorman
2014-11-21 13:57   ` Mel Gorman
2014-12-01 22:42   ` Benjamin Herrenschmidt
2014-12-01 22:42     ` Benjamin Herrenschmidt
2014-12-01 22:42     ` Benjamin Herrenschmidt
2014-12-02  7:27     ` Aneesh Kumar K.V
2014-12-02  7:27       ` Aneesh Kumar K.V
2014-12-02  7:27       ` Aneesh Kumar K.V
2014-12-02 20:11       ` Benjamin Herrenschmidt
2014-12-02 20:11         ` Benjamin Herrenschmidt
2014-12-02 20:11         ` Benjamin Herrenschmidt
2014-12-03 15:23         ` Aneesh Kumar K.V [this message]
2014-12-03 15:23           ` Aneesh Kumar K.V
2014-12-03 15:23           ` Aneesh Kumar K.V
2014-12-03 15:52           ` Mel Gorman
2014-12-03 15:52             ` Mel Gorman
2014-12-03 15:52             ` Mel Gorman
2014-12-03 17:20             ` Aneesh Kumar K.V
2014-12-03 17:20               ` Aneesh Kumar K.V
2014-12-03 17:20               ` Aneesh Kumar K.V
2014-12-04 11:17               ` Mel Gorman
2014-12-04 11:17                 ` Mel Gorman
2014-12-04 11:17                 ` Mel Gorman
2014-12-03 21:01             ` Benjamin Herrenschmidt
2014-12-03 21:01               ` Benjamin Herrenschmidt
2014-12-03 21:01               ` Benjamin Herrenschmidt
2014-12-04 11:15               ` Mel Gorman
2014-12-04 11:15                 ` Mel Gorman
2014-12-04 11:15                 ` Mel Gorman
2014-12-01 22:44   ` Benjamin Herrenschmidt
2014-12-01 22:44     ` Benjamin Herrenschmidt
2014-12-01 22:44     ` Benjamin Herrenschmidt
2014-12-02  7:31     ` Aneesh Kumar K.V
2014-12-02  7:31       ` Aneesh Kumar K.V
2014-12-02  7:31       ` Aneesh Kumar K.V
2014-12-02 20:13       ` Benjamin Herrenschmidt
2014-12-02 20:13         ` Benjamin Herrenschmidt
2014-12-02 20:13         ` Benjamin Herrenschmidt
2014-11-21 13:57 ` [PATCH 04/10] ppc64: Add paranoid warnings for unexpected DSISR_PROTFAULT Mel Gorman
2014-11-21 13:57   ` Mel Gorman
2014-11-21 13:57   ` Mel Gorman
2014-11-21 13:57 ` [PATCH 05/10] mm: Convert p[te|md]_mknonnuma and remaining page table manipulations Mel Gorman
2014-11-21 13:57   ` Mel Gorman
2014-11-21 13:57   ` Mel Gorman
2014-11-21 13:57 ` [PATCH 06/10] mm: Remove remaining references to NUMA hinting bits and helpers Mel Gorman
2014-11-21 13:57   ` Mel Gorman
2014-11-21 13:57   ` Mel Gorman
2014-11-21 13:57 ` [PATCH 07/10] mm: numa: Do not trap faults on the huge zero page Mel Gorman
2014-11-21 13:57   ` Mel Gorman
2014-11-21 13:57   ` Mel Gorman
2014-11-21 13:57 ` [PATCH 08/10] x86: mm: Restore original pte_special check Mel Gorman
2014-11-21 13:57   ` Mel Gorman
2014-11-21 13:57   ` Mel Gorman
2014-11-21 13:57 ` [PATCH 09/10] mm: numa: Add paranoid check around pte_protnone_numa Mel Gorman
2014-11-21 13:57   ` Mel Gorman
2014-11-21 13:57   ` Mel Gorman
2014-11-21 13:57 ` [PATCH 10/10] mm: numa: Avoid unnecessary TLB flushes when setting NUMA hinting entries Mel Gorman
2014-11-21 13:57   ` Mel Gorman
2014-11-21 13:57   ` Mel Gorman
  -- strict thread matches above, loose matches on Subject: below --
2015-01-05 10:54 [PATCH 0/10] Replace _PAGE_NUMA with PAGE_NONE protections v5 Mel Gorman
2015-01-05 10:54 ` [PATCH 03/10] mm: Convert p[te|md]_numa users to p[te|md]_protnone_numa Mel Gorman
2015-01-05 10:54   ` Mel Gorman
2015-01-05 10:54   ` Mel Gorman
2014-12-04 11:24 [PATCH 0/10] Replace _PAGE_NUMA with PAGE_NONE protections v4 Mel Gorman
2014-12-04 11:24 ` [PATCH 03/10] mm: Convert p[te|md]_numa users to p[te|md]_protnone_numa Mel Gorman
2014-12-04 11:24   ` Mel Gorman
2014-12-04 11:24   ` Mel Gorman
2014-11-20 10:19 [PATCH 0/10] Replace _PAGE_NUMA with PAGE_NONE protections v2 Mel Gorman
2014-11-20 10:19 ` [PATCH 03/10] mm: Convert p[te|md]_numa users to p[te|md]_protnone_numa Mel Gorman
2014-11-20 10:19   ` Mel Gorman
2014-11-20 10:19   ` Mel Gorman
2014-11-20 10:38   ` David Laight
2014-11-20 10:38     ` David Laight
2014-11-20 10:38     ` David Laight
2014-11-20 10:47     ` Mel Gorman
2014-11-20 10:47       ` Mel Gorman
2014-11-20 10:47       ` Mel Gorman
2014-11-21  5:28   ` Aneesh Kumar K.V
2014-11-21  5:28     ` Aneesh Kumar K.V
2014-11-21  5:28     ` Aneesh Kumar K.V

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87lhmobvuu.fsf@linux.vnet.ibm.com \
    --to=aneesh.kumar@linux.vnet.ibm.com \
    --cc=benh@kernel.crashing.org \
    --cc=davej@redhat.com \
    --cc=hughd@google.com \
    --cc=kirill.shutemov@linux.intel.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=linuxppc-dev@lists.ozlabs.org \
    --cc=mgorman@suse.de \
    --cc=mingo@redhat.com \
    --cc=paulus@samba.org \
    --cc=riel@redhat.com \
    --cc=sasha.levin@oracle.com \
    --cc=torvalds@linux-foundation.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.