From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S261478AbULYDZy (ORCPT ); Fri, 24 Dec 2004 22:25:54 -0500 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S261481AbULYDZy (ORCPT ); Fri, 24 Dec 2004 22:25:54 -0500 Received: from mail-relay-3.tiscali.it ([213.205.33.43]:44685 "EHLO mail-relay-3.tiscali.it") by vger.kernel.org with ESMTP id S261478AbULYDZN (ORCPT ); Fri, 24 Dec 2004 22:25:13 -0500 Date: Sat, 25 Dec 2004 04:24:30 +0100 From: Andrea Arcangeli To: Linus Torvalds Cc: "David S. Miller" , linux-kernel@vger.kernel.org, tglx@linutronix.de, akpm@osdl.org Subject: VM fixes [PF_MEMDIE to TIF_MEMDIE] [5/4] Message-ID: <20041225032430.GT13747@dualathlon.random> References: <20041224174156.GE13747@dualathlon.random> <20041224100147.32ad4268.davem@davemloft.net> <20041224182219.GH13747@dualathlon.random> <20041225022721.GR13747@dualathlon.random> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20041225022721.GR13747@dualathlon.random> X-GPG-Key: 1024D/68B9CB43 13D9 8355 295F 4823 7C49 C012 DFA1 686E 68B9 CB43 X-PGP-Key: 1024R/CB4660B9 CC A0 71 81 F4 A0 63 AC C0 4B 81 1D 8C 15 C8 E5 User-Agent: Mutt/1.5.6i Sender: linux-kernel-owner@vger.kernel.org X-Mailing-List: linux-kernel@vger.kernel.org On Sat, Dec 25, 2004 at 03:27:21AM +0100, Andrea Arcangeli wrote: > So my current plan is to make used_math a PF_USED_MATH, and memdie a > TIF_MEMDIE. And of course oomtaskadj an int (that one requires more than Here it is the first part. This makes memdie a TIF_MEMDIE. It's incremental with the last 4 patches (so I call this one 5/4). From: Andrea Arcangeli Subject: convert memdie to an atomic thread bitflag memdie will not be modified by the current task, so it cannot be a PF_MEMDIE but it must be a TIF_MEMDIE. Signed-off-by: Andrea Arcangeli --- x/include/asm-alpha/thread_info.h.~1~ 2004-12-04 08:55:03.000000000 +0100 +++ x/include/asm-alpha/thread_info.h 2004-12-25 03:52:04.377884048 +0100 @@ -77,6 +77,7 @@ register struct thread_info *__current_t #define TIF_UAC_NOPRINT 6 /* see sysinfo.h */ #define TIF_UAC_NOFIX 7 #define TIF_UAC_SIGBUS 8 +#define TIF_MEMDIE 9 #define _TIF_SYSCALL_TRACE (1<memdie || (p->flags & PF_EXITING)) && !(p->flags & PF_DEAD)) + if ((unlikely(test_tsk_thread_flag(p, TIF_MEMDIE)) || (p->flags & PF_EXITING)) && + !(p->flags & PF_DEAD)) return ERR_PTR(-1UL); if (p->flags & PF_SWAPOFF) return p; @@ -195,7 +196,7 @@ static void __oom_kill_task(task_t *p) * exit() and clear out its resources quickly... */ p->time_slice = HZ; - p->memdie = 1; + set_tsk_thread_flag(p, TIF_MEMDIE); /* This process has hardware access, be more careful. */ if (cap_t(p->cap_effective) & CAP_TO_MASK(CAP_SYS_RAWIO)) { --- x/mm/page_alloc.c.~1~ 2004-12-25 03:49:05.000000000 +0100 +++ x/mm/page_alloc.c 2004-12-25 04:01:41.000000000 +0100 @@ -663,7 +663,7 @@ __alloc_pages(unsigned int gfp_mask, uns } /* This allocation should allow future memory freeing. */ - if (((p->flags & PF_MEMALLOC) || p->memdie) && !in_interrupt()) { + if (((p->flags & PF_MEMALLOC) || unlikely(test_thread_flag(TIF_MEMDIE))) && !in_interrupt()) { /* go through the zonelist yet again, ignoring mins */ for (i = 0; (z = zones[i]) != NULL; i++) { page = buffered_rmqueue(z, order, gfp_mask);