From patchwork Fri Aug 30 13:20:49 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: 2852036 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 E2A609F313 for ; Fri, 30 Aug 2013 13:25:17 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id C01DF20114 for ; Fri, 30 Aug 2013 13:25:16 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id B23E52015B for ; Fri, 30 Aug 2013 13:25:14 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756802Ab3H3NYx (ORCPT ); Fri, 30 Aug 2013 09:24:53 -0400 Received: from e31.co.us.ibm.com ([32.97.110.149]:34458 "EHLO e31.co.us.ibm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1756801Ab3H3NYv (ORCPT ); Fri, 30 Aug 2013 09:24:51 -0400 Received: from /spool/local by e31.co.us.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Fri, 30 Aug 2013 07:24:50 -0600 Received: from d03dlp03.boulder.ibm.com (9.17.202.179) by e31.co.us.ibm.com (192.168.1.131) with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted; Fri, 30 Aug 2013 07:24:49 -0600 Received: from d03relay01.boulder.ibm.com (d03relay01.boulder.ibm.com [9.17.195.226]) by d03dlp03.boulder.ibm.com (Postfix) with ESMTP id 5BC8619D8041; Fri, 30 Aug 2013 07:24:48 -0600 (MDT) Received: from d03av06.boulder.ibm.com (d03av06.boulder.ibm.com [9.17.195.245]) by d03relay01.boulder.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id r7UDOlEL178350; Fri, 30 Aug 2013 07:24:47 -0600 Received: from d03av06.boulder.ibm.com (loopback [127.0.0.1]) by d03av06.boulder.ibm.com (8.14.4/8.13.1/NCO v10.0 AVout) with ESMTP id r7UDRcEE016361; Fri, 30 Aug 2013 07:27:41 -0600 Received: from srivatsabhat.in.ibm.com ([9.79.248.196]) by d03av06.boulder.ibm.com (8.14.4/8.13.1/NCO v10.0 AVin) with ESMTP id r7UDRSiU015902; Fri, 30 Aug 2013 07:27:30 -0600 From: "Srivatsa S. Bhat" Subject: [RFC PATCH v3 22/35] mm: Provide a mechanism to request free memory from the region allocator 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, 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:50:49 +0530 Message-ID: <20130830132047.4947.67625.stgit@srivatsabhat.in.ibm.com> In-Reply-To: <20130830131221.4947.99764.stgit@srivatsabhat.in.ibm.com> References: <20130830131221.4947.99764.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: 13083013-8236-0000-0000-000001461913 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 Implement helper functions to request freepages from the region allocator in order to add them to the buddy freelists. For simplicity, all operations related to the region allocator are performed at the granularity of entire memory regions. That is, when the buddy allocator requests freepages from the region allocator, the latter picks a free region and always allocates all the freepages belonging to that entire region. Signed-off-by: Srivatsa S. Bhat --- mm/page_alloc.c | 23 +++++++++++++++++++++++ 1 file changed, 23 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 d407caf..5b58e7d 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c @@ -938,6 +938,29 @@ static void add_to_region_allocator(struct zone *z, struct free_list *free_list, del_from_freelist_bulk(ralloc_list, free_list, order, region_id); } +/* Delete freepages from the region allocator and add them to buddy freelists */ +static int del_from_region_allocator(struct zone *zone, unsigned int order, + int migratetype) +{ + struct region_allocator *reg_alloc; + struct list_head *ralloc_list; + struct free_list *free_list; + int next_region; + + reg_alloc = &zone->region_allocator; + + next_region = reg_alloc->next_region; + if (next_region < 0) + return -ENOMEM; + + ralloc_list = ®_alloc->region[next_region].region_area[order].list; + free_list = &zone->free_area[order].free_list[migratetype]; + + add_to_freelist_bulk(ralloc_list, free_list, order, next_region); + + return 0; +} + /* * Freeing function for a buddy system allocator. *