* [PATCH 01/19 v2.1] avr32/mm/fault.c: Port OOM changes to do_page_fault
@ 2012-04-02 15:32 Kautuk Consul
2012-04-02 16:16 ` Håvard Skinnemoen
0 siblings, 1 reply; 5+ messages in thread
From: Kautuk Consul @ 2012-04-02 15:32 UTC (permalink / raw)
To: Haavard Skinnemoen, Hans-Christian Egtvedt
Cc: linux-kernel, Kautuk Consul, Mohd. Faris
Commit d065bd810b6deb67d4897a14bfe21f8eb526ba99
(mm: retry page fault when blocking on disk transfer) and
commit 37b23e0525d393d48a7d59f870b3bc061a30ccdb
(x86,mm: make pagefault killable)
The above commits introduced changes into the x86 pagefault handler
for making the page fault handler retryable as well as killable.
These changes reduce the mmap_sem hold time, which is crucial
during OOM killer invocation.
Port these changes to AVR32.
Signed-off-by: Mohd. Faris <mohdfarisq2010@gmail.com>
Signed-off-by: Kautuk Consul <consul.kautuk@gmail.com>
---
arch/avr32/mm/fault.c | 33 +++++++++++++++++++++++++--------
1 files changed, 25 insertions(+), 8 deletions(-)
diff --git a/arch/avr32/mm/fault.c b/arch/avr32/mm/fault.c
index f7040a1..29a0fa0 100644
--- a/arch/avr32/mm/fault.c
+++ b/arch/avr32/mm/fault.c
@@ -61,10 +61,10 @@ asmlinkage void do_page_fault(unsigned long ecr, struct pt_regs *regs)
const struct exception_table_entry *fixup;
unsigned long address;
unsigned long page;
- int writeaccess;
long signr;
int code;
int fault;
+ unsigned int flags = FAULT_FLAG_ALLOW_RETRY | FAULT_FLAG_KILLABLE;
if (notify_page_fault(regs, ecr))
return;
@@ -86,6 +86,7 @@ asmlinkage void do_page_fault(unsigned long ecr, struct pt_regs *regs)
local_irq_enable();
+retry:
down_read(&mm->mmap_sem);
vma = find_vma(mm, address);
@@ -104,7 +105,6 @@ asmlinkage void do_page_fault(unsigned long ecr, struct pt_regs *regs)
*/
good_area:
code = SEGV_ACCERR;
- writeaccess = 0;
switch (ecr) {
case ECR_PROTECTION_X:
@@ -121,7 +121,7 @@ good_area:
case ECR_TLB_MISS_W:
if (!(vma->vm_flags & VM_WRITE))
goto bad_area;
- writeaccess = 1;
+ flags |= FAULT_FLAG_WRITE;
break;
default:
panic("Unhandled case %lu in do_page_fault!", ecr);
@@ -132,7 +132,11 @@ good_area:
* sure we exit gracefully rather than endlessly redo the
* fault.
*/
- fault = handle_mm_fault(mm, vma, address, writeaccess ? FAULT_FLAG_WRITE : 0);
+ fault = handle_mm_fault(mm, vma, address, flags);
+
+ if ((fault & VM_FAULT_RETRY) && fatal_signal_pending(current))
+ return;
+
if (unlikely(fault & VM_FAULT_ERROR)) {
if (fault & VM_FAULT_OOM)
goto out_of_memory;
@@ -140,10 +144,23 @@ good_area:
goto do_sigbus;
BUG();
}
- if (fault & VM_FAULT_MAJOR)
- tsk->maj_flt++;
- else
- tsk->min_flt++;
+
+ if (flags & FAULT_FLAG_ALLOW_RETRY) {
+ if (fault & VM_FAULT_MAJOR)
+ tsk->maj_flt++;
+ else
+ tsk->min_flt++;
+ if (fault & VM_FAULT_RETRY) {
+ flags &= ~FAULT_FLAG_ALLOW_RETRY;
+
+ /* No need to up_read(&mm->mmap_sem) as we would
+ * have already released it in __lock_page_or_retry
+ * in mm/filemap.c.
+ */
+
+ goto retry;
+ }
+ }
up_read(&mm->mmap_sem);
return;
--
1.7.5.4
^ permalink raw reply [flat|nested] 5+ messages in thread* Re: [PATCH 01/19 v2.1] avr32/mm/fault.c: Port OOM changes to do_page_fault
2012-04-02 15:32 [PATCH 01/19 v2.1] avr32/mm/fault.c: Port OOM changes to do_page_fault Kautuk Consul
@ 2012-04-02 16:16 ` Håvard Skinnemoen
2012-04-04 14:34 ` Kautuk Consul
2012-06-12 15:57 ` Kautuk Consul
0 siblings, 2 replies; 5+ messages in thread
From: Håvard Skinnemoen @ 2012-04-02 16:16 UTC (permalink / raw)
To: Kautuk Consul; +Cc: Hans-Christian Egtvedt, linux-kernel, Mohd. Faris
On Mon, Apr 2, 2012 at 8:32 AM, Kautuk Consul <consul.kautuk@gmail.com> wrote:
> Commit d065bd810b6deb67d4897a14bfe21f8eb526ba99
> (mm: retry page fault when blocking on disk transfer) and
> commit 37b23e0525d393d48a7d59f870b3bc061a30ccdb
> (x86,mm: make pagefault killable)
>
> The above commits introduced changes into the x86 pagefault handler
> for making the page fault handler retryable as well as killable.
>
> These changes reduce the mmap_sem hold time, which is crucial
> during OOM killer invocation.
>
> Port these changes to AVR32.
>
> Signed-off-by: Mohd. Faris <mohdfarisq2010@gmail.com>
> Signed-off-by: Kautuk Consul <consul.kautuk@gmail.com>
Acked-by: Havard Skinnemoen <hskinnemoen@gmail.com>
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH 01/19 v2.1] avr32/mm/fault.c: Port OOM changes to do_page_fault
2012-04-02 16:16 ` Håvard Skinnemoen
@ 2012-04-04 14:34 ` Kautuk Consul
2012-06-12 15:57 ` Kautuk Consul
1 sibling, 0 replies; 5+ messages in thread
From: Kautuk Consul @ 2012-04-04 14:34 UTC (permalink / raw)
To: Håvard Skinnemoen; +Cc: Hans-Christian Egtvedt, linux-kernel, Mohd. Faris
On Mon, Apr 2, 2012 at 9:46 PM, Håvard Skinnemoen <hskinnemoen@gmail.com> wrote:
> On Mon, Apr 2, 2012 at 8:32 AM, Kautuk Consul <consul.kautuk@gmail.com> wrote:
>> Commit d065bd810b6deb67d4897a14bfe21f8eb526ba99
>> (mm: retry page fault when blocking on disk transfer) and
>> commit 37b23e0525d393d48a7d59f870b3bc061a30ccdb
>> (x86,mm: make pagefault killable)
>>
>> The above commits introduced changes into the x86 pagefault handler
>> for making the page fault handler retryable as well as killable.
>>
>> These changes reduce the mmap_sem hold time, which is crucial
>> during OOM killer invocation.
>>
>> Port these changes to AVR32.
>>
>> Signed-off-by: Mohd. Faris <mohdfarisq2010@gmail.com>
>> Signed-off-by: Kautuk Consul <consul.kautuk@gmail.com>
>
> Acked-by: Havard Skinnemoen <hskinnemoen@gmail.com>
Thanks.
Since one or two of my other patches are being taken by the other arch
owners in their branches, can you take this patch and apply it to your
branch also ?
Much obliged if you do ! :-)
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH 01/19 v2.1] avr32/mm/fault.c: Port OOM changes to do_page_fault
2012-04-02 16:16 ` Håvard Skinnemoen
2012-04-04 14:34 ` Kautuk Consul
@ 2012-06-12 15:57 ` Kautuk Consul
2012-06-12 16:11 ` Hans-Christian Egtvedt
1 sibling, 1 reply; 5+ messages in thread
From: Kautuk Consul @ 2012-06-12 15:57 UTC (permalink / raw)
To: Håvard Skinnemoen; +Cc: Hans-Christian Egtvedt, linux-kernel, Mohd. Faris
hi,
When can I see this patch in linux-next ?
Thanks,
Kautuk.
On Mon, Apr 2, 2012 at 9:46 PM, Håvard Skinnemoen <hskinnemoen@gmail.com> wrote:
> On Mon, Apr 2, 2012 at 8:32 AM, Kautuk Consul <consul.kautuk@gmail.com> wrote:
>> Commit d065bd810b6deb67d4897a14bfe21f8eb526ba99
>> (mm: retry page fault when blocking on disk transfer) and
>> commit 37b23e0525d393d48a7d59f870b3bc061a30ccdb
>> (x86,mm: make pagefault killable)
>>
>> The above commits introduced changes into the x86 pagefault handler
>> for making the page fault handler retryable as well as killable.
>>
>> These changes reduce the mmap_sem hold time, which is crucial
>> during OOM killer invocation.
>>
>> Port these changes to AVR32.
>>
>> Signed-off-by: Mohd. Faris <mohdfarisq2010@gmail.com>
>> Signed-off-by: Kautuk Consul <consul.kautuk@gmail.com>
>
> Acked-by: Havard Skinnemoen <hskinnemoen@gmail.com>
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH 01/19 v2.1] avr32/mm/fault.c: Port OOM changes to do_page_fault
2012-06-12 15:57 ` Kautuk Consul
@ 2012-06-12 16:11 ` Hans-Christian Egtvedt
0 siblings, 0 replies; 5+ messages in thread
From: Hans-Christian Egtvedt @ 2012-06-12 16:11 UTC (permalink / raw)
To: Kautuk Consul; +Cc: Håvard Skinnemoen, linux-kernel, Mohd. Faris
Around Tue 12 Jun 2012 21:27:03 +0530 or thereabout, Kautuk Consul wrote:
Hello,
> When can I see this patch in linux-next ?
>
Currently there are no AVR32 git tree, since I don't have a kernel.org
account. I hope to meet somebody with a signed key, but until I do, could you
run the patch by Andrew?
> On Mon, Apr 2, 2012 at 9:46 PM, Håvard Skinnemoen <hskinnemoen@gmail.com> wrote:
>> On Mon, Apr 2, 2012 at 8:32 AM, Kautuk Consul <consul.kautuk@gmail.com> wrote:
>>> Commit d065bd810b6deb67d4897a14bfe21f8eb526ba99
>>> (mm: retry page fault when blocking on disk transfer) and
>>> commit 37b23e0525d393d48a7d59f870b3bc061a30ccdb
>>> (x86,mm: make pagefault killable)
>>>
>>> The above commits introduced changes into the x86 pagefault handler
>>> for making the page fault handler retryable as well as killable.
>>>
>>> These changes reduce the mmap_sem hold time, which is crucial
>>> during OOM killer invocation.
>>>
>>> Port these changes to AVR32.
>>>
>>> Signed-off-by: Mohd. Faris <mohdfarisq2010@gmail.com>
>>> Signed-off-by: Kautuk Consul <consul.kautuk@gmail.com>
>>
>> Acked-by: Havard Skinnemoen <hskinnemoen@gmail.com>
--
mvh
Hans-Christian Egtvedt
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2012-06-12 16:11 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-04-02 15:32 [PATCH 01/19 v2.1] avr32/mm/fault.c: Port OOM changes to do_page_fault Kautuk Consul
2012-04-02 16:16 ` Håvard Skinnemoen
2012-04-04 14:34 ` Kautuk Consul
2012-06-12 15:57 ` Kautuk Consul
2012-06-12 16:11 ` Hans-Christian Egtvedt
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®