From patchwork Fri Aug 30 12:37:01 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Srivatsa S. Bhat" X-Patchwork-Id: 2851985 Return-Path: X-Original-To: patchwork-linux-pm@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork1.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.19.201]) by patchwork1.web.kernel.org (Postfix) with ESMTP id 99D9D9F313 for ; Fri, 30 Aug 2013 12:42:59 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 8904B20488 for ; Fri, 30 Aug 2013 12:42:58 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 2473D2047D for ; Fri, 30 Aug 2013 12:42:57 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756334Ab3H3MlN (ORCPT ); Fri, 30 Aug 2013 08:41:13 -0400 Received: from e8.ny.us.ibm.com ([32.97.182.138]:43228 "EHLO e8.ny.us.ibm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1756320Ab3H3MlL (ORCPT ); Fri, 30 Aug 2013 08:41:11 -0400 Received: from /spool/local by e8.ny.us.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Fri, 30 Aug 2013 13:41:10 +0100 Received: from d01dlp02.pok.ibm.com (9.56.250.167) by e8.ny.us.ibm.com (192.168.1.108) with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted; Fri, 30 Aug 2013 13:41:06 +0100 Received: from b01cxnp23032.gho.pok.ibm.com (b01cxnp23032.gho.pok.ibm.com [9.57.198.27]) by d01dlp02.pok.ibm.com (Postfix) with ESMTP id 099A36E8028; Fri, 30 Aug 2013 08:41:06 -0400 (EDT) Received: from d01av04.pok.ibm.com (d01av04.pok.ibm.com [9.56.224.64]) by b01cxnp23032.gho.pok.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id r7UCf56s23330858; Fri, 30 Aug 2013 12:41:05 GMT Received: from d01av04.pok.ibm.com (loopback [127.0.0.1]) by d01av04.pok.ibm.com (8.14.4/8.13.1/NCO v10.0 AVout) with ESMTP id r7UCevLM002867; Fri, 30 Aug 2013 08:41:05 -0400 Received: from srivatsabhat.in.ibm.com ([9.79.221.107]) by d01av04.pok.ibm.com (8.14.4/8.13.1/NCO v10.0 AVin) with ESMTP id r7UCemtR001689; Fri, 30 Aug 2013 08:40:49 -0400 From: "Srivatsa S. Bhat" Subject: [RFC PATCH v3 09/35] mm: Track the freepage migratetype of pages accurately To: akpm@linux-foundation.org, mgorman@suse.de, hannes@cmpxchg.org, tony.luck@intel.com, matthew.garrett@nebula.com, dave@sr71.net, riel@redhat.com, arjan@linux.intel.com, srinivas.pandruvada@linux.intel.com, willy@linux.intel.com, kamezawa.hiroyu@jp.fujitsu.com, lenb@kernel.org, rjw@sisk.pl Cc: gargankita@gmail.com, paulmck@linux.vnet.ibm.com, amit.kachhap@linaro.org, svaidy@linux.vnet.ibm.com, andi@firstfloor.org, isimatu.yasuaki@jp.fujitsu.com, santosh.shilimkar@ti.com, kosaki.motohiro@gmail.com, srivatsa.bhat@linux.vnet.ibm.com, linux-pm@vger.kernel.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org Date: Fri, 30 Aug 2013 18:07:01 +0530 Message-ID: <20130830123655.24352.97744.stgit@srivatsabhat.in.ibm.com> In-Reply-To: <20130830123303.24352.18732.stgit@srivatsabhat.in.ibm.com> References: <20130830123303.24352.18732.stgit@srivatsabhat.in.ibm.com> User-Agent: StGIT/0.14.3 MIME-Version: 1.0 X-TM-AS-MML: No X-Content-Scanned: Fidelis XPS MAILER x-cbid: 13083012-0320-0000-0000-000000D83793 Sender: linux-pm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-pm@vger.kernel.org X-Spam-Status: No, score=-9.0 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_HI, RP_MATCHES_RCVD, UNPARSEABLE_RELAY autolearn=unavailable version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP Due to the region-wise ordering of the pages in the buddy allocator's free lists, whenever we want to delete a free pageblock from a free list (for ex: when moving blocks of pages from one list to the other), we need to be able to tell the buddy allocator exactly which migratetype it belongs to. For that purpose, we can use the page's freepage migratetype (which is maintained in the page's ->index field). So, while splitting up higher order pages into smaller ones as part of buddy operations, keep the new head pages updated with the correct freepage migratetype information (because we depend on tracking this info accurately, as outlined above). Signed-off-by: Srivatsa S. Bhat --- mm/page_alloc.c | 7 +++++++ 1 file changed, 7 insertions(+) -- To unsubscribe from this list: send the line "unsubscribe linux-pm" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html diff --git a/mm/page_alloc.c b/mm/page_alloc.c index 398b62c..b4b1275 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c @@ -947,6 +947,13 @@ static inline void expand(struct zone *zone, struct page *page, add_to_freelist(&page[size], &area->free_list[migratetype]); area->nr_free++; set_page_order(&page[size], high); + + /* + * Freepage migratetype is tracked using the index field of the + * first page of the block. So we need to update the new first + * page, when changing the page order. + */ + set_freepage_migratetype(&page[size], migratetype); } }