From patchwork Thu Sep 6 05:43:39 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Aneesh Kumar K.V" X-Patchwork-Id: 10589867 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 2B13313BB for ; Thu, 6 Sep 2018 05:44:03 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 1E1192A574 for ; Thu, 6 Sep 2018 05:44:03 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 126282A58B; Thu, 6 Sep 2018 05:44:03 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-2.9 required=2.0 tests=BAYES_00,MAILING_LIST_MULTI, RCVD_IN_DNSWL_NONE autolearn=ham version=3.3.1 Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id A03B42A574 for ; Thu, 6 Sep 2018 05:44:02 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id ADB436B771C; Thu, 6 Sep 2018 01:44:01 -0400 (EDT) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id A8AC56B771D; Thu, 6 Sep 2018 01:44:01 -0400 (EDT) X-Original-To: int-list-linux-mm@kvack.org X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 9531B6B771E; Thu, 6 Sep 2018 01:44:01 -0400 (EDT) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from mail-oi0-f70.google.com (mail-oi0-f70.google.com [209.85.218.70]) by kanga.kvack.org (Postfix) with ESMTP id 5F3C06B771C for ; Thu, 6 Sep 2018 01:44:01 -0400 (EDT) Received: by mail-oi0-f70.google.com with SMTP id j17-v6so11476202oii.8 for ; Wed, 05 Sep 2018 22:44:01 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-original-authentication-results:x-gm-message-state:from:to:cc :subject:date:message-id; bh=XskK/JpEF2pUekGRLHG5roYTrmpnUCGQSomLZWPanGI=; b=OSa+bVvgUM4UEtK/naJ2KB9+y0nJiuT9kDfQFowNgTB7zhtYcVlxAJ2z50iLbtl+rA S0OHOOYY8kSfbbONrQEY+KJT88z2zzSEiy4XTfGVbGkbkoXG/Wn3WcXlSHGurswHnQ12 hHdZwCBFUwi3+Aqp9ZUOjh3hiKtdd9pjWlmDVw29td5AbFhBU11FMUo+hr8i7TN8UB9w zbaPtBLaGjHEksBSrrhTedjP41ALESURagtnK8jXCBHIjywKDpXwLykZtkmeaptzISKZ pe9V39yCySytuje6zgVDvCJDCv4uU9WAHLQPfx0GqmaXUSHVXcIOK0RUPFzLTVK/z4G8 Akrw== X-Original-Authentication-Results: mx.google.com; spf=pass (google.com: domain of aneesh.kumar@linux.ibm.com designates 148.163.156.1 as permitted sender) smtp.mailfrom=aneesh.kumar@linux.ibm.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=ibm.com X-Gm-Message-State: APzg51B8daS3/LGAiF7NHs4UUH4Eu6Sqngcs93tJeVr7e74Wb0CgqJRn Qa5uwDnpL2Zg5hbKto4JJ01WTu8y7iW+1Bm6eSyMWZIP5NeRcvv3OWJ/2Dh77fQYrWQGVWeOdlG KpCqkHLbOJl0mOOz9K3Bdox6wIM/eS/oV0AO4qv9EJPLIjB6Z+jTuRlkHa6J2C2Ir/A== X-Received: by 2002:aca:bcc1:: with SMTP id m184-v6mr1157377oif.19.1536212641080; Wed, 05 Sep 2018 22:44:01 -0700 (PDT) X-Google-Smtp-Source: ANB0VdbJg5HY7kwRLCnVmXtyxHBMxJgmQn0WD80cl4sHqQxdZc6KfYWSmM+xs6+ESgC82mX0Gqaw X-Received: by 2002:aca:bcc1:: with SMTP id m184-v6mr1157350oif.19.1536212640502; Wed, 05 Sep 2018 22:44:00 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1536212640; cv=none; d=google.com; s=arc-20160816; b=HZwUy63ECgbx0S538dVcAk3doRrsYAnulqpSBYuXIErljhX6gfPpkyqqv4hNrQjbpz Na7dTxVZTxo/Vzw+j5dJNkv1dh3zM669al8qwr0AiSMOcA/8Id2/DWHqiRP0nvqSe7dG vtvF4UF5jaJV/4rHU5DtKzBrGuS2DrhbZsfu/XYaKmSgGAoEGYBdm4DWyxltO07Epni4 MyQYfm4pyHOKUxxs1wAtyTTdF10RTH8S44FkD9Ob7NaD4MMnqaP1CyzjEAM7QCggHEWh N5L2pWhuFYGcgwAfgig6maRnGAToYLYsH2oFrU7kGbs+EAz5MKJqchBt8DIpOd4rNYm9 zulg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=message-id:date:subject:cc:to:from; bh=XskK/JpEF2pUekGRLHG5roYTrmpnUCGQSomLZWPanGI=; b=eJgalaTLftYbiXkOSGC5Ljv8fXROSzC9f/yIvbRmNdBZ9rWIT02lOkhbUka3aZnpb6 vyKzqGPmCtw6RtEHhh+xUJ+OIrVUJFEz4rBGM/z7b2d0WJMTmn8rLHTU1MgMzWFIBU2z BFNBcnXoLvotMeFD2TWlNs9d4/ZCT+G6VJRYwQf6QBTX2VKgxjymg72HotLmaO+l+GPB I7ZgwSGj0ywEdysjoL5C5J8d1eJVmHqkOFz17ulnh6YPfCGs0kl9d54Oanz2JJlLBq8d bZPSbm7gtj1XMfA69gHjCA2LH5Nl5Uy3XsBcSWe+vo0akZNBFmbIbAP8BNLGfDCAQnun 57fQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of aneesh.kumar@linux.ibm.com designates 148.163.156.1 as permitted sender) smtp.mailfrom=aneesh.kumar@linux.ibm.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=ibm.com Received: from mx0a-001b2d01.pphosted.com (mx0a-001b2d01.pphosted.com. [148.163.156.1]) by mx.google.com with ESMTPS id b74-v6si2785014oii.106.2018.09.05.22.44.00 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 05 Sep 2018 22:44:00 -0700 (PDT) Received-SPF: pass (google.com: domain of aneesh.kumar@linux.ibm.com designates 148.163.156.1 as permitted sender) client-ip=148.163.156.1; Authentication-Results: mx.google.com; spf=pass (google.com: domain of aneesh.kumar@linux.ibm.com designates 148.163.156.1 as permitted sender) smtp.mailfrom=aneesh.kumar@linux.ibm.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=ibm.com Received: from pps.filterd (m0098393.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.16.0.22/8.16.0.22) with SMTP id w865hgVf010700 for ; Thu, 6 Sep 2018 01:43:59 -0400 Received: from e13.ny.us.ibm.com (e13.ny.us.ibm.com [129.33.205.203]) by mx0a-001b2d01.pphosted.com with ESMTP id 2mat7a8kc9-1 (version=TLSv1.2 cipher=AES256-GCM-SHA384 bits=256 verify=NOT) for ; Thu, 06 Sep 2018 01:43:59 -0400 Received: from localhost by e13.ny.us.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Thu, 6 Sep 2018 01:43:58 -0400 Received: from b01cxnp22033.gho.pok.ibm.com (9.57.198.23) by e13.ny.us.ibm.com (146.89.104.200) with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted; (version=TLSv1/SSLv3 cipher=AES256-GCM-SHA384 bits=256/256) Thu, 6 Sep 2018 01:43:55 -0400 Received: from b01ledav002.gho.pok.ibm.com (b01ledav002.gho.pok.ibm.com [9.57.199.107]) by b01cxnp22033.gho.pok.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id w865hsUi38797416 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=FAIL); Thu, 6 Sep 2018 05:43:54 GMT Received: from b01ledav002.gho.pok.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id E693E124054; Thu, 6 Sep 2018 02:44:23 -0400 (EDT) Received: from b01ledav002.gho.pok.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 9010A124053; Thu, 6 Sep 2018 02:44:21 -0400 (EDT) Received: from skywalker.ibmuc.com (unknown [9.102.0.183]) by b01ledav002.gho.pok.ibm.com (Postfix) with ESMTP; Thu, 6 Sep 2018 02:44:21 -0400 (EDT) From: "Aneesh Kumar K.V" To: akpm@linux-foundation.org, Alexey Kardashevskiy , mpe@ellerman.id.au Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, "Aneesh Kumar K.V" Subject: [RFC PATCH V2 1/4] mm: Export alloc_migrate_huge_page Date: Thu, 6 Sep 2018 11:13:39 +0530 X-Mailer: git-send-email 2.17.1 X-TM-AS-GCONF: 00 x-cbid: 18090605-0064-0000-0000-00000347C5FF X-IBM-SpamModules-Scores: X-IBM-SpamModules-Versions: BY=3.00009676; HX=3.00000242; KW=3.00000007; PH=3.00000004; SC=3.00000266; SDB=6.01084227; UDB=6.00559596; IPR=6.00864226; MB=3.00023138; MTD=3.00000008; XFM=3.00000015; UTC=2018-09-06 05:43:57 X-IBM-AV-DETECTION: SAVI=unused REMOTE=unused XFE=unused x-cbparentid: 18090605-0065-0000-0000-00003A8C7721 Message-Id: <20180906054342.25094-1-aneesh.kumar@linux.ibm.com> X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:,, definitions=2018-09-06_02:,, signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 malwarescore=0 suspectscore=0 phishscore=0 bulkscore=0 spamscore=0 clxscore=1015 lowpriorityscore=0 mlxscore=0 impostorscore=0 mlxlogscore=883 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1807170000 definitions=main-1809060061 X-Bogosity: Ham, tests=bogofilter, spamicity=0.000060, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: X-Virus-Scanned: ClamAV using ClamSMTP We want to use this to support customized huge page migration. Signed-off-by: Aneesh Kumar K.V --- include/linux/hugetlb.h | 2 ++ mm/hugetlb.c | 4 ++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/include/linux/hugetlb.h b/include/linux/hugetlb.h index c39d9170a8a0..98c9c6dc308c 100644 --- a/include/linux/hugetlb.h +++ b/include/linux/hugetlb.h @@ -357,6 +357,8 @@ struct page *alloc_huge_page_nodemask(struct hstate *h, int preferred_nid, nodemask_t *nmask); struct page *alloc_huge_page_vma(struct hstate *h, struct vm_area_struct *vma, unsigned long address); +struct page *alloc_migrate_huge_page(struct hstate *h, gfp_t gfp_mask, + int nid, nodemask_t *nmask); int huge_add_to_page_cache(struct page *page, struct address_space *mapping, pgoff_t idx); diff --git a/mm/hugetlb.c b/mm/hugetlb.c index 47566bb0b4b1..88881b3f8628 100644 --- a/mm/hugetlb.c +++ b/mm/hugetlb.c @@ -1586,8 +1586,8 @@ static struct page *alloc_surplus_huge_page(struct hstate *h, gfp_t gfp_mask, return page; } -static struct page *alloc_migrate_huge_page(struct hstate *h, gfp_t gfp_mask, - int nid, nodemask_t *nmask) +struct page *alloc_migrate_huge_page(struct hstate *h, gfp_t gfp_mask, + int nid, nodemask_t *nmask) { struct page *page; From patchwork Thu Sep 6 05:43:40 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Aneesh Kumar K.V" X-Patchwork-Id: 10589869 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 9463D5A4 for ; Thu, 6 Sep 2018 05:44:07 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 867ED2A574 for ; Thu, 6 Sep 2018 05:44:07 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 7A9EB2A58B; Thu, 6 Sep 2018 05:44:07 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-2.9 required=2.0 tests=BAYES_00,MAILING_LIST_MULTI, RCVD_IN_DNSWL_NONE autolearn=ham version=3.3.1 Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id E4F122A574 for ; Thu, 6 Sep 2018 05:44:06 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id D71A86B771F; Thu, 6 Sep 2018 01:44:05 -0400 (EDT) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id D23616B7720; Thu, 6 Sep 2018 01:44:05 -0400 (EDT) X-Original-To: int-list-linux-mm@kvack.org X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id BC3AE6B7721; Thu, 6 Sep 2018 01:44:05 -0400 (EDT) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from mail-oi0-f69.google.com (mail-oi0-f69.google.com [209.85.218.69]) by kanga.kvack.org (Postfix) with ESMTP id 898C16B771F for ; Thu, 6 Sep 2018 01:44:05 -0400 (EDT) Received: by mail-oi0-f69.google.com with SMTP id b8-v6so11746154oib.4 for ; Wed, 05 Sep 2018 22:44:05 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-original-authentication-results:x-gm-message-state:from:to:cc :subject:date:in-reply-to:references:message-id; bh=WdRcVhoXwisiEn7eYn1NSVscZhJIBTv8+4KT5sHQWpY=; b=pCdyVOAV5gdB675lyvx5dGSbbHzawpuS/9lniGJm19ela3ZlkCY9lhOiDMuttsgraG rgUI7xxTqYMYFuKJ8J7RBnJvCZ+t+9L7z8ugbXA8OxjFU5cRZZaoB3RELexKQGMutKLl 7qIhHkf0NQWNWy7bB6R1Nzk1L1uyk0bFkP+0GWmGZltwo8ig8+g4wWJeNT/AWrh3nvfH RjQ97r7k1y+yyIjsg2CpHXf4t2ANtukppRmfxAumBohPAUqNvoQD6+kQwxv95eyRKPJh 2su8zBcDElXPMYNvVCqA+cBynG8dIHosjBk1Hfb2HSC5G4B2ynlw4j7gAUHIe6TtbF6r yUEQ== X-Original-Authentication-Results: mx.google.com; spf=pass (google.com: domain of aneesh.kumar@linux.ibm.com designates 148.163.158.5 as permitted sender) smtp.mailfrom=aneesh.kumar@linux.ibm.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=ibm.com X-Gm-Message-State: APzg51BXI5MoNeSznTIx6LiMfrNCSNfYiL18qM4ReeUgu0yFYIlTEc7H qZ9B+dUqzLEo+w48gp9aA0Y/1SSNFipxpR0A1y8vwxwDIYw6jD7dPhhGup1WCwQ0y2Q/LHBM3/l 8ApRCBALXa3ZThTyBbTrW1gbkNtZ5boeUZA2ywky2Eba5Sxr+y3MATBY8bs7qRwqrYA== X-Received: by 2002:aca:dc82:: with SMTP id t124-v6mr1133227oig.189.1536212645268; Wed, 05 Sep 2018 22:44:05 -0700 (PDT) X-Google-Smtp-Source: ANB0VdanDUYm+AnTuQyncYxQor+6O6488Cb+kMlW4AVpZVTI++tPd+9rXHHpxAg+CXvvk3QNd5wa X-Received: by 2002:aca:dc82:: with SMTP id t124-v6mr1133173oig.189.1536212644472; Wed, 05 Sep 2018 22:44:04 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1536212644; cv=none; d=google.com; s=arc-20160816; b=Kjv5elY+BTquaAHG0TV5xDRjmunYAV9fq+mBmT6wkXAeaKryWUP4VkWawMnu+/W1AH ezQBFI5Mb0FVmUaVVTwOPvgaympV1/fAa58il1dU23DOOUNog0BlnV62sSK0G29mbtTt dxopRG64sNKIi6KPVjCiiHn4MJTvFTbvarEDGCNZQowT4HKrtto3LBjL6yyfL+AOlrFF 23LTA+obB4ttYGoRbDTGWXrnDQCIkeths5RrBrXu/D+XnxPWukKtLTDvpXXBCbVhonBW iFdeBY960sOsbLJ8zBKoGSArb3c16nZmSMP3ps/IXJjnpjYmhclp3/NeLcDc3IsFYB2X KTew== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=message-id:references:in-reply-to:date:subject:cc:to:from; bh=WdRcVhoXwisiEn7eYn1NSVscZhJIBTv8+4KT5sHQWpY=; b=jFu/Cjx5sD8jVGHSbW+trrg5TEJBChJXXD0sXUQ7WgiahV3Ap60FPyArwQntvNsHjh cHrF97uyFyd7foosyKJRQISJZIg1U9G3GS9Ur0gNADoNO3PZpgHAYKRRqWZ0w5MYAuxL sfMYWY0+4apBIW1eyZh5o8xtEeTaJE/wpy/gLZiPSBjjbzkcqmi62MNGfwZVPJMWPdhT WAzOHNK3M9+3KfRxfby0b9xf5B+speyg7yV8wXMbPf14momAecoi2S4UrzL1i82ENSs1 +r+XjzTw1kiRxA6dk3MAduJBt//BEDpX7rREOyPojBU9SXJvqb0l9xOAH3I3Kv/mGntE z00w== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of aneesh.kumar@linux.ibm.com designates 148.163.158.5 as permitted sender) smtp.mailfrom=aneesh.kumar@linux.ibm.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=ibm.com Received: from mx0a-001b2d01.pphosted.com (mx0b-001b2d01.pphosted.com. [148.163.158.5]) by mx.google.com with ESMTPS id 186-v6si2723486oih.244.2018.09.05.22.44.04 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 05 Sep 2018 22:44:04 -0700 (PDT) Received-SPF: pass (google.com: domain of aneesh.kumar@linux.ibm.com designates 148.163.158.5 as permitted sender) client-ip=148.163.158.5; Authentication-Results: mx.google.com; spf=pass (google.com: domain of aneesh.kumar@linux.ibm.com designates 148.163.158.5 as permitted sender) smtp.mailfrom=aneesh.kumar@linux.ibm.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=ibm.com Received: from pps.filterd (m0098421.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.16.0.22/8.16.0.22) with SMTP id w865hmRt036592 for ; Thu, 6 Sep 2018 01:44:03 -0400 Received: from e11.ny.us.ibm.com (e11.ny.us.ibm.com [129.33.205.201]) by mx0a-001b2d01.pphosted.com with ESMTP id 2masqp1axm-1 (version=TLSv1.2 cipher=AES256-GCM-SHA384 bits=256 verify=NOT) for ; Thu, 06 Sep 2018 01:44:03 -0400 Received: from localhost by e11.ny.us.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Thu, 6 Sep 2018 01:44:03 -0400 Received: from b01cxnp22035.gho.pok.ibm.com (9.57.198.25) by e11.ny.us.ibm.com (146.89.104.198) with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted; (version=TLSv1/SSLv3 cipher=AES256-GCM-SHA384 bits=256/256) Thu, 6 Sep 2018 01:43:59 -0400 Received: from b01ledav002.gho.pok.ibm.com (b01ledav002.gho.pok.ibm.com [9.57.199.107]) by b01cxnp22035.gho.pok.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id w865hw5X46989384 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=FAIL); Thu, 6 Sep 2018 05:43:58 GMT Received: from b01ledav002.gho.pok.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id CCB6A124058; Thu, 6 Sep 2018 02:44:27 -0400 (EDT) Received: from b01ledav002.gho.pok.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 78042124055; Thu, 6 Sep 2018 02:44:25 -0400 (EDT) Received: from skywalker.ibmuc.com (unknown [9.102.0.183]) by b01ledav002.gho.pok.ibm.com (Postfix) with ESMTP; Thu, 6 Sep 2018 02:44:25 -0400 (EDT) From: "Aneesh Kumar K.V" To: akpm@linux-foundation.org, Alexey Kardashevskiy , mpe@ellerman.id.au Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, "Aneesh Kumar K.V" Subject: [RFC PATCH V2 2/4] mm: Add get_user_pages_cma_migrate Date: Thu, 6 Sep 2018 11:13:40 +0530 X-Mailer: git-send-email 2.17.1 In-Reply-To: <20180906054342.25094-1-aneesh.kumar@linux.ibm.com> References: <20180906054342.25094-1-aneesh.kumar@linux.ibm.com> X-TM-AS-GCONF: 00 x-cbid: 18090605-2213-0000-0000-000002E8E385 X-IBM-SpamModules-Scores: X-IBM-SpamModules-Versions: BY=3.00009676; HX=3.00000242; KW=3.00000007; PH=3.00000004; SC=3.00000266; SDB=6.01084227; UDB=6.00559595; IPR=6.00864226; MB=3.00023138; MTD=3.00000008; XFM=3.00000015; UTC=2018-09-06 05:44:01 X-IBM-AV-DETECTION: SAVI=unused REMOTE=unused XFE=unused x-cbparentid: 18090605-2214-0000-0000-00005B754B87 Message-Id: <20180906054342.25094-2-aneesh.kumar@linux.ibm.com> X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:,, definitions=2018-09-06_02:,, signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 malwarescore=0 suspectscore=0 phishscore=0 bulkscore=0 spamscore=0 clxscore=1015 lowpriorityscore=0 mlxscore=0 impostorscore=0 mlxlogscore=999 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1807170000 definitions=main-1809060061 X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: X-Virus-Scanned: ClamAV using ClamSMTP This helper does a get_user_pages_fast and if it find pages in the CMA area it will try to migrate them before taking page reference. This makes sure that we don't keep non-movable pages (due to page reference count) in the CMA area. Not able to move pages out of CMA area result in CMA allocation failures. Signed-off-by: Aneesh Kumar K.V --- include/linux/migrate.h | 3 ++ mm/migrate.c | 108 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 111 insertions(+) diff --git a/include/linux/migrate.h b/include/linux/migrate.h index f2b4abbca55e..d82b35afd2eb 100644 --- a/include/linux/migrate.h +++ b/include/linux/migrate.h @@ -286,6 +286,9 @@ static inline int migrate_vma(const struct migrate_vma_ops *ops, } #endif /* IS_ENABLED(CONFIG_MIGRATE_VMA_HELPER) */ +extern int get_user_pages_cma_migrate(unsigned long start, int nr_pages, int write, + struct page **pages); + #endif /* CONFIG_MIGRATION */ #endif /* _LINUX_MIGRATE_H */ diff --git a/mm/migrate.c b/mm/migrate.c index c27e97b5b69d..c26288d407ae 100644 --- a/mm/migrate.c +++ b/mm/migrate.c @@ -3008,3 +3008,111 @@ int migrate_vma(const struct migrate_vma_ops *ops, } EXPORT_SYMBOL(migrate_vma); #endif /* defined(MIGRATE_VMA_HELPER) */ + +static struct page *new_non_cma_page(struct page *page, unsigned long private) +{ + /* + * We want to make sure we allocate the new page from the same node + * as the source page. + */ + int nid = page_to_nid(page); + gfp_t gfp_mask = GFP_USER | __GFP_THISNODE; + + if (PageHighMem(page)) + gfp_mask |= __GFP_HIGHMEM; + + if (PageHuge(page)) { + + struct hstate *h = page_hstate(page); + /* + * We don't want to dequeue from the pool because pool pages will + * mostly be from the CMA region. + */ + return alloc_migrate_huge_page(h, gfp_mask, nid, NULL); + + } else if (PageTransHuge(page)) { + struct page *thp; + gfp_t thp_gfpmask = GFP_TRANSHUGE | __GFP_THISNODE; + + /* + * Remove the movable mask so that we don't allocate from + * CMA area again. + */ + thp_gfpmask &= ~__GFP_MOVABLE; + thp = __alloc_pages_node(nid, thp_gfpmask, HPAGE_PMD_ORDER); + if (!thp) + return NULL; + prep_transhuge_page(thp); + return thp; + } + + return __alloc_pages_node(nid, gfp_mask, 0); +} + +int get_user_pages_cma_migrate(unsigned long start, int nr_pages, int write, + struct page **pages) +{ + int i, ret; + bool drain_allow = true; + bool migrate_allow = true; + LIST_HEAD(cma_page_list); + +get_user_again: + ret = get_user_pages_fast(start, nr_pages, write, pages); + if (ret <= 0) + return ret; + + for (i = 0; i < ret; ++i) { + /* + * If we get a page from the CMA zone, since we are going to + * be pinning these entries, we might as well move them out + * of the CMA zone if possible. + */ + if (is_migrate_cma_page(pages[i]) && migrate_allow) { + if (PageHuge(pages[i])) + isolate_huge_page(pages[i], &cma_page_list); + else { + struct page *head = compound_head(pages[i]); + + if (!PageLRU(head) && drain_allow) { + lru_add_drain_all(); + drain_allow = false; + } + + if (!isolate_lru_page(head)) { + list_add_tail(&head->lru, &cma_page_list); + mod_node_page_state(page_pgdat(head), + NR_ISOLATED_ANON + + page_is_file_cache(head), + hpage_nr_pages(head)); + } + } + } + } + if (!list_empty(&cma_page_list)) { + /* + * drop the above get_user_pages reference. + */ + for (i = 0; i < ret; ++i) + put_page(pages[i]); + + if (migrate_pages(&cma_page_list, new_non_cma_page, + NULL, 0, MIGRATE_SYNC, MR_CONTIG_RANGE)) { + /* + * some of the pages failed migration. Do get_user_pages + * without migration. + */ + migrate_allow = false; + + if (!list_empty(&cma_page_list)) + putback_movable_pages(&cma_page_list); + } + /* + * We did migrate all the pages, Try to get the page references again + * migrating any new CMA pages which we failed to isolate earlier. + */ + drain_allow = true; + goto get_user_again; + } + return ret; +} From patchwork Thu Sep 6 05:43:41 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Aneesh Kumar K.V" X-Patchwork-Id: 10589871 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id AEB9913BB for ; Thu, 6 Sep 2018 05:44:10 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id A0DEF2A574 for ; Thu, 6 Sep 2018 05:44:10 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 9502E2A58B; Thu, 6 Sep 2018 05:44:10 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-2.9 required=2.0 tests=BAYES_00,MAILING_LIST_MULTI, RCVD_IN_DNSWL_NONE autolearn=ham version=3.3.1 Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 337AB2A574 for ; Thu, 6 Sep 2018 05:44:10 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id B9D446B7721; Thu, 6 Sep 2018 01:44:08 -0400 (EDT) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id B502C6B7723; Thu, 6 Sep 2018 01:44:08 -0400 (EDT) X-Original-To: int-list-linux-mm@kvack.org X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 9FECD6B7724; Thu, 6 Sep 2018 01:44:08 -0400 (EDT) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from mail-oi0-f71.google.com (mail-oi0-f71.google.com [209.85.218.71]) by kanga.kvack.org (Postfix) with ESMTP id 5D9596B7721 for ; Thu, 6 Sep 2018 01:44:08 -0400 (EDT) Received: by mail-oi0-f71.google.com with SMTP id p14-v6so11751978oip.0 for ; Wed, 05 Sep 2018 22:44:08 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-original-authentication-results:x-gm-message-state:from:to:cc :subject:date:in-reply-to:references:message-id; bh=aZ52QrJ34AqFpIq4fFrVUelgxTADQ3L8kCte64iUIeI=; b=T+aqMNplD983mOV7VeYajSQYlil7RJp8UOVWj6Rz5l2nnt1LCYCWvlPPcyrapEoo8Y T5L6syKL7WtD2+O4yDzdGulKst9ue9nGOPzhNGgqvQATtsNXrkfzHgCtZ58UL7YKciuh G5jt9okMB2J4lKwDL/n6Fmc1luXlE3z5jgQ1N3SmmTfGZO9Z3I8giYFPx0jnbbFAa06M gWS82zCebPEJqCOGnWrZSwXwuApn/txvGkcARXBEWV9fIAm8ugdv0s08aHzeRq3A9uVg HMwc/iwAt/Y2GbkIL1F6MBGeLCCK9qIb8cewUOr3e7a/S9HeAK8vvpbKO8hy4Wo6A0HH NZKg== X-Original-Authentication-Results: mx.google.com; spf=pass (google.com: domain of aneesh.kumar@linux.ibm.com designates 148.163.158.5 as permitted sender) smtp.mailfrom=aneesh.kumar@linux.ibm.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=ibm.com X-Gm-Message-State: APzg51CKsiybp2cOicXpJtWl9/HXJa1WreSVIQH4HExvHLXhMXRRHDi8 9BjQLaRQSmKZffRal0NGo2BzBuNa0WCyrssv7zxg2q6qWfVq1YiU9CBKsYUXjET4vapoUhxusBc KssYvrdiuxSTpY2jrif5B7cfmxl9DMcAYc0wBpeJZO9WKb2qTiW9tP3MWqZKGjOeVCg== X-Received: by 2002:aca:f189:: with SMTP id p131-v6mr1257355oih.14.1536212648109; Wed, 05 Sep 2018 22:44:08 -0700 (PDT) X-Google-Smtp-Source: ANB0VdZYzV9smdFeuna7hsQE6bHHqd/b10Hh+SBfAwXjyXbv4INva/kdMNaWaUFRbcfC5JANPyXQ X-Received: by 2002:aca:f189:: with SMTP id p131-v6mr1257323oih.14.1536212647500; Wed, 05 Sep 2018 22:44:07 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1536212647; cv=none; d=google.com; s=arc-20160816; b=n03dyrjl1rCFJhfkj2ksRS9A4pXgpLS/AoY2WdftibRSm2iuIhhQqkNAIuDV8Vjnmn R7AMd45q4c/iTM6xFJtkFYC0x0pHPdZnawTAGoechf558z4QwpS21vgVxjXL2/4cooKa iRbyRtGxG2gmASxWFSeGXGFmoKDZ12Qar8/2e8e7RK+DAXhNbkmbAkpwJGNZiylTRZr9 iRX3MfZREabnNJKGzb05j4e8s6rdpnlPE/a2mnjUipAY7IWkK3XuCi4GN17AC7GeseNQ R5yIGyKO5VOx2e3J3mGqBByzQ45Vjm5sLApqENnMHxgHOa9Ug7c1MhlOnSxcv9Bl49RP F4vg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=message-id:references:in-reply-to:date:subject:cc:to:from; bh=aZ52QrJ34AqFpIq4fFrVUelgxTADQ3L8kCte64iUIeI=; b=t2nd9Z2B/wmvn/wEMQ+YB5UXEernbSgjn6J9NE/L4f9uZ6ykudrTiPA/krJ4oPZGB/ KMDaMXT+3NfSX1KOSCVcWsJsRc/vZgIyrIfSleXpbPvPo6K2Y25j3DDmuDHhYYcYWzaG NilPY8v9lHoi0VZQ6qNZWDbFg7C/W9a5MhUdXiVdbZPXTol6LqieGqAZJT5Ga/7ASOEN Du6OTX/2QLCdlZXeGLuHgooSz1Rho305g+oy5rLoVmm6t5F3rlUsE6DWQxCysn4JeBFq GckdvzfV+Xu3dQccHthvz5Vxb9UB6Ftdi/BgR54DXnNrZH4AbIBXETp028wOMwK16pgr ceNw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of aneesh.kumar@linux.ibm.com designates 148.163.158.5 as permitted sender) smtp.mailfrom=aneesh.kumar@linux.ibm.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=ibm.com Received: from mx0a-001b2d01.pphosted.com (mx0b-001b2d01.pphosted.com. [148.163.158.5]) by mx.google.com with ESMTPS id u4-v6si2627558oif.129.2018.09.05.22.44.07 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 05 Sep 2018 22:44:07 -0700 (PDT) Received-SPF: pass (google.com: domain of aneesh.kumar@linux.ibm.com designates 148.163.158.5 as permitted sender) client-ip=148.163.158.5; Authentication-Results: mx.google.com; spf=pass (google.com: domain of aneesh.kumar@linux.ibm.com designates 148.163.158.5 as permitted sender) smtp.mailfrom=aneesh.kumar@linux.ibm.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=ibm.com Received: from pps.filterd (m0098413.ppops.net [127.0.0.1]) by mx0b-001b2d01.pphosted.com (8.16.0.22/8.16.0.22) with SMTP id w865hiZi146248 for ; Thu, 6 Sep 2018 01:44:06 -0400 Received: from e17.ny.us.ibm.com (e17.ny.us.ibm.com [129.33.205.207]) by mx0b-001b2d01.pphosted.com with ESMTP id 2mathwfss1-1 (version=TLSv1.2 cipher=AES256-GCM-SHA384 bits=256 verify=NOT) for ; Thu, 06 Sep 2018 01:44:06 -0400 Received: from localhost by e17.ny.us.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Thu, 6 Sep 2018 01:44:06 -0400 Received: from b01cxnp23034.gho.pok.ibm.com (9.57.198.29) by e17.ny.us.ibm.com (146.89.104.204) with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted; (version=TLSv1/SSLv3 cipher=AES256-GCM-SHA384 bits=256/256) Thu, 6 Sep 2018 01:44:03 -0400 Received: from b01ledav002.gho.pok.ibm.com (b01ledav002.gho.pok.ibm.com [9.57.199.107]) by b01cxnp23034.gho.pok.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id w865i2rD19857656 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=FAIL); Thu, 6 Sep 2018 05:44:02 GMT Received: from b01ledav002.gho.pok.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id B8D40124053; Thu, 6 Sep 2018 02:44:31 -0400 (EDT) Received: from b01ledav002.gho.pok.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 5A911124054; Thu, 6 Sep 2018 02:44:29 -0400 (EDT) Received: from skywalker.ibmuc.com (unknown [9.102.0.183]) by b01ledav002.gho.pok.ibm.com (Postfix) with ESMTP; Thu, 6 Sep 2018 02:44:29 -0400 (EDT) From: "Aneesh Kumar K.V" To: akpm@linux-foundation.org, Alexey Kardashevskiy , mpe@ellerman.id.au Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, "Aneesh Kumar K.V" Subject: [RFC PATCH V2 3/4] powerpc/mm/iommu: Allow large IOMMU page size only for hugetlb backing Date: Thu, 6 Sep 2018 11:13:41 +0530 X-Mailer: git-send-email 2.17.1 In-Reply-To: <20180906054342.25094-1-aneesh.kumar@linux.ibm.com> References: <20180906054342.25094-1-aneesh.kumar@linux.ibm.com> X-TM-AS-GCONF: 00 x-cbid: 18090605-0040-0000-0000-0000046B12F9 X-IBM-SpamModules-Scores: X-IBM-SpamModules-Versions: BY=3.00009676; HX=3.00000242; KW=3.00000007; PH=3.00000004; SC=3.00000266; SDB=6.01084227; UDB=6.00559595; IPR=6.00864226; MB=3.00023138; MTD=3.00000008; XFM=3.00000015; UTC=2018-09-06 05:44:05 X-IBM-AV-DETECTION: SAVI=unused REMOTE=unused XFE=unused x-cbparentid: 18090605-0041-0000-0000-00000872352B Message-Id: <20180906054342.25094-3-aneesh.kumar@linux.ibm.com> X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:,, definitions=2018-09-06_02:,, signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 malwarescore=0 suspectscore=0 phishscore=0 bulkscore=0 spamscore=0 clxscore=1015 lowpriorityscore=0 mlxscore=0 impostorscore=0 mlxlogscore=999 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1807170000 definitions=main-1809060061 X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: X-Virus-Scanned: ClamAV using ClamSMTP THP pages can get split during different code paths. An incremented reference count do imply we will not split the compound page. But the pmd entry can be converted to level 4 pte entries. Keep the code simpler by allowing large IOMMU page size only if the guest ram is backed by hugetlb pages. Signed-off-by: Aneesh Kumar K.V --- arch/powerpc/mm/mmu_context_iommu.c | 16 ++-------------- 1 file changed, 2 insertions(+), 14 deletions(-) diff --git a/arch/powerpc/mm/mmu_context_iommu.c b/arch/powerpc/mm/mmu_context_iommu.c index c9ee9e23845f..f472965f7638 100644 --- a/arch/powerpc/mm/mmu_context_iommu.c +++ b/arch/powerpc/mm/mmu_context_iommu.c @@ -212,21 +212,9 @@ long mm_iommu_get(struct mm_struct *mm, unsigned long ua, unsigned long entries, } populate: pageshift = PAGE_SHIFT; - if (mem->pageshift > PAGE_SHIFT && PageCompound(page)) { - pte_t *pte; + if (mem->pageshift > PAGE_SHIFT && PageHuge(page)) { struct page *head = compound_head(page); - unsigned int compshift = compound_order(head); - unsigned int pteshift; - - local_irq_save(flags); /* disables as well */ - pte = find_linux_pte(mm->pgd, cur_ua, NULL, &pteshift); - - /* Double check it is still the same pinned page */ - if (pte && pte_page(*pte) == head && - pteshift == compshift + PAGE_SHIFT) - pageshift = max_t(unsigned int, pteshift, - PAGE_SHIFT); - local_irq_restore(flags); + pageshift = compound_order(head) + PAGE_SHIFT; } mem->pageshift = min(mem->pageshift, pageshift); mem->hpas[i] = page_to_pfn(page) << PAGE_SHIFT; From patchwork Thu Sep 6 05:43:42 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Aneesh Kumar K.V" X-Patchwork-Id: 10589873 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 14E4D13BB for ; Thu, 6 Sep 2018 05:44:16 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 06DBB2A561 for ; Thu, 6 Sep 2018 05:44:16 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id EF7792A578; Thu, 6 Sep 2018 05:44:15 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-2.9 required=2.0 tests=BAYES_00,MAILING_LIST_MULTI, RCVD_IN_DNSWL_NONE autolearn=ham version=3.3.1 Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 5543D2A561 for ; Thu, 6 Sep 2018 05:44:15 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 339996B7723; Thu, 6 Sep 2018 01:44:14 -0400 (EDT) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id 2E9F96B7724; Thu, 6 Sep 2018 01:44:14 -0400 (EDT) X-Original-To: int-list-linux-mm@kvack.org X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 1B38D6B7725; Thu, 6 Sep 2018 01:44:14 -0400 (EDT) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from mail-oi0-f69.google.com (mail-oi0-f69.google.com [209.85.218.69]) by kanga.kvack.org (Postfix) with ESMTP id D37206B7723 for ; Thu, 6 Sep 2018 01:44:13 -0400 (EDT) Received: by mail-oi0-f69.google.com with SMTP id p14-v6so11752147oip.0 for ; Wed, 05 Sep 2018 22:44:13 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-original-authentication-results:x-gm-message-state:from:to:cc :subject:date:in-reply-to:references:message-id; bh=CPvQSe75A6DKrJFbLhIt68a+EnGW+c6f3Ky+jMvzBJk=; b=avpPLfyp1Qzq60VOLsGC0foXB1IefGqOoPpbdsvDoGcedUO3L6VxRJT8aRyKrzZu4g WCsFGA3yVjriKUr+mUvGG3HjNvC7MewGvnyiv6/TDyXlYv5U0gvp+VM5KbyfsgSY+hqq DlmTV9Ks77GDwlfp+y1RGssXTAfWjm+QMUsPgM3m0JBm7AGq+Ua4W7TRhGMMYXwjsIWf zA/vFtECSpc3LCcEPwH8uySdB7rhy1S7DabBnpX69ef2hQWJ+Q9ISKvNlSaeROhOo7ID fTvXnk1V3b1PDkqL3sQh2Q9yaMqA3EYXdniRkmO4lxXU+LQOk4E/eKYiCRniUP3GlfgZ pHTw== X-Original-Authentication-Results: mx.google.com; spf=pass (google.com: domain of aneesh.kumar@linux.ibm.com designates 148.163.156.1 as permitted sender) smtp.mailfrom=aneesh.kumar@linux.ibm.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=ibm.com X-Gm-Message-State: APzg51AiHJWtJk1wXoToUqMWHNjn3yOdAF5S3jVDPDvLAJ/9xsdWj1w1 s0lWxlMB1/bCGdTqBRx9yQ+USOOvKgItNpVoCfxvcllhlyXC8zfV4gLFppQUEjRG6//ZecRPP+L sVAo3vh08AwBX2Sd2RzYyapbC7AExlWWZ2/uHdVTICLSz5zGGyulKEGdSdpQwApxoRQ== X-Received: by 2002:aca:1008:: with SMTP id 8-v6mr1232843oiq.303.1536212653567; Wed, 05 Sep 2018 22:44:13 -0700 (PDT) X-Google-Smtp-Source: ANB0VdZe7siiSoW5XmH2DSPua9lI3e13XC46C5JM5yyOADCKDH7+gBsCWQ+rCPeWmpZDC5nxi7kq X-Received: by 2002:aca:1008:: with SMTP id 8-v6mr1232798oiq.303.1536212652760; Wed, 05 Sep 2018 22:44:12 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1536212652; cv=none; d=google.com; s=arc-20160816; b=XCGuBUbqMdK3fhq6grJKWshysV6vk0i1WtoIdzovpKPmo9eUezA63evfvsvMlcuy1P Dv3RqlcnN6PPfCvOk+peHSIQPrlmi0BrU4SDajbIVnHAI7aqiW45C111aJGgK6r+Hulx Rc+EUSQZyIe7ySnSbvXuD1CI2px6NYbssgoMUyNw0PlhthvaDwXLTGecUpBAMSDWtsPf yZVwqptvSSVeUJLzlstEZc0m4oe75Y/N0cVX9nB/JwNflO9Si3RuGUb5eoLL3AMlctTk kKNkpeXO+OoI7IIddYdDr94kM5H++/Dimw0d+PUItFpAbILZHS+b/HNWfNxqZ8r3X+Ys liTA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=message-id:references:in-reply-to:date:subject:cc:to:from; bh=CPvQSe75A6DKrJFbLhIt68a+EnGW+c6f3Ky+jMvzBJk=; b=uJswYoSyQvMukfSEEOORrzdxOtrsbnSmyskkOzenOjFk3T3RBjM66CAOyUYLwG15pP dI4IX8haW6N+ORrsCT1KuJJ5kd7OJ8+xWe3dl9yNpjIg/qsWvutocOE/rooQWj3c8/S/ TzkP2v3OzcISWJi1Ki2wfexWWd0RsB7bgdjlbrTWE1HOcBklIbO4AUntmhYMDNWgwqbz eGC4v9drb3m58INcwkkfE29Nulu8rQLR70GoCoXbcl7NvyZ6xkZaJJhKVrPdvhJg0e9h 3KEqd+9up/COFygEybuETGzjC5RQbU/4+1P1L1Ke0YUDN4ynh2UHBhM5ns3/WB/z3aV+ ZZMA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of aneesh.kumar@linux.ibm.com designates 148.163.156.1 as permitted sender) smtp.mailfrom=aneesh.kumar@linux.ibm.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=ibm.com Received: from mx0a-001b2d01.pphosted.com (mx0a-001b2d01.pphosted.com. [148.163.156.1]) by mx.google.com with ESMTPS id z206-v6si2797093oiz.239.2018.09.05.22.44.12 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 05 Sep 2018 22:44:12 -0700 (PDT) Received-SPF: pass (google.com: domain of aneesh.kumar@linux.ibm.com designates 148.163.156.1 as permitted sender) client-ip=148.163.156.1; Authentication-Results: mx.google.com; spf=pass (google.com: domain of aneesh.kumar@linux.ibm.com designates 148.163.156.1 as permitted sender) smtp.mailfrom=aneesh.kumar@linux.ibm.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=ibm.com Received: from pps.filterd (m0098399.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.16.0.22/8.16.0.22) with SMTP id w865hh4A146778 for ; Thu, 6 Sep 2018 01:44:12 -0400 Received: from e17.ny.us.ibm.com (e17.ny.us.ibm.com [129.33.205.207]) by mx0a-001b2d01.pphosted.com with ESMTP id 2masq310jp-1 (version=TLSv1.2 cipher=AES256-GCM-SHA384 bits=256 verify=NOT) for ; Thu, 06 Sep 2018 01:44:11 -0400 Received: from localhost by e17.ny.us.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Thu, 6 Sep 2018 01:44:10 -0400 Received: from b01cxnp23033.gho.pok.ibm.com (9.57.198.28) by e17.ny.us.ibm.com (146.89.104.204) with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted; (version=TLSv1/SSLv3 cipher=AES256-GCM-SHA384 bits=256/256) Thu, 6 Sep 2018 01:44:07 -0400 Received: from b01ledav002.gho.pok.ibm.com (b01ledav002.gho.pok.ibm.com [9.57.199.107]) by b01cxnp23033.gho.pok.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id w865i6Nm26804268 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=FAIL); Thu, 6 Sep 2018 05:44:06 GMT Received: from b01ledav002.gho.pok.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id AF770124052; Thu, 6 Sep 2018 02:44:35 -0400 (EDT) Received: from b01ledav002.gho.pok.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 3E4C4124053; Thu, 6 Sep 2018 02:44:33 -0400 (EDT) Received: from skywalker.ibmuc.com (unknown [9.102.0.183]) by b01ledav002.gho.pok.ibm.com (Postfix) with ESMTP; Thu, 6 Sep 2018 02:44:32 -0400 (EDT) From: "Aneesh Kumar K.V" To: akpm@linux-foundation.org, Alexey Kardashevskiy , mpe@ellerman.id.au Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, "Aneesh Kumar K.V" Subject: [RFC PATCH V2 4/4] powerpc/mm/iommu: Allow migration of cma allocated pages during mm_iommu_get Date: Thu, 6 Sep 2018 11:13:42 +0530 X-Mailer: git-send-email 2.17.1 In-Reply-To: <20180906054342.25094-1-aneesh.kumar@linux.ibm.com> References: <20180906054342.25094-1-aneesh.kumar@linux.ibm.com> X-TM-AS-GCONF: 00 x-cbid: 18090605-0040-0000-0000-0000046B12FD X-IBM-SpamModules-Scores: X-IBM-SpamModules-Versions: BY=3.00009676; HX=3.00000242; KW=3.00000007; PH=3.00000004; SC=3.00000266; SDB=6.01084227; UDB=6.00559595; IPR=6.00864226; MB=3.00023138; MTD=3.00000008; XFM=3.00000015; UTC=2018-09-06 05:44:09 X-IBM-AV-DETECTION: SAVI=unused REMOTE=unused XFE=unused x-cbparentid: 18090605-0041-0000-0000-000008723530 Message-Id: <20180906054342.25094-4-aneesh.kumar@linux.ibm.com> X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:,, definitions=2018-09-06_02:,, signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 malwarescore=0 suspectscore=2 phishscore=0 bulkscore=0 spamscore=0 clxscore=1015 lowpriorityscore=0 mlxscore=0 impostorscore=0 mlxlogscore=999 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1807170000 definitions=main-1809060061 X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: X-Virus-Scanned: ClamAV using ClamSMTP Current code doesn't do page migration if the page allocated is a compound page. With HugeTLB migration support, we can end up allocating hugetlb pages from CMA region. Also THP pages can be allocated from CMA region. This patch updates the code to handle compound pages correctly. This use the new helper get_user_pages_cma_migrate. It does one get_user_pages with right count, instead of doing one get_user_pages per page. That avoids reading page table multiple times. The patch also convert the hpas member of mm_iommu_table_group_mem_t to a union. We use the same storage location to store pointers to struct page. We cannot update alll the code path use struct page *, because we access hpas in real mode and we can't do that struct page * to pfn conversion in real mode. Signed-off-by: Aneesh Kumar K.V --- arch/powerpc/mm/mmu_context_iommu.c | 124 +++++++++------------------- 1 file changed, 37 insertions(+), 87 deletions(-) diff --git a/arch/powerpc/mm/mmu_context_iommu.c b/arch/powerpc/mm/mmu_context_iommu.c index f472965f7638..607acd03ab06 100644 --- a/arch/powerpc/mm/mmu_context_iommu.c +++ b/arch/powerpc/mm/mmu_context_iommu.c @@ -20,6 +20,7 @@ #include #include #include +#include static DEFINE_MUTEX(mem_list_mutex); @@ -30,8 +31,18 @@ struct mm_iommu_table_group_mem_t { atomic64_t mapped; unsigned int pageshift; u64 ua; /* userspace address */ - u64 entries; /* number of entries in hpas[] */ - u64 *hpas; /* vmalloc'ed */ + u64 entries; /* number of entries in hpages[] */ + /* + * in mm_iommu_get we temporarily use this to store + * struct page address. + * + * We need to convert ua to hpa in real mode. Make it + * simpler by storing physicall address. + */ + union { + struct page **hpages; /* vmalloc'ed */ + phys_addr_t *hpas; + }; }; static long mm_iommu_adjust_locked_vm(struct mm_struct *mm, @@ -74,63 +85,12 @@ bool mm_iommu_preregistered(struct mm_struct *mm) } EXPORT_SYMBOL_GPL(mm_iommu_preregistered); -/* - * Taken from alloc_migrate_target with changes to remove CMA allocations - */ -struct page *new_iommu_non_cma_page(struct page *page, unsigned long private) -{ - gfp_t gfp_mask = GFP_USER; - struct page *new_page; - - if (PageCompound(page)) - return NULL; - - if (PageHighMem(page)) - gfp_mask |= __GFP_HIGHMEM; - - /* - * We don't want the allocation to force an OOM if possibe - */ - new_page = alloc_page(gfp_mask | __GFP_NORETRY | __GFP_NOWARN); - return new_page; -} - -static int mm_iommu_move_page_from_cma(struct page *page) -{ - int ret = 0; - LIST_HEAD(cma_migrate_pages); - - /* Ignore huge pages for now */ - if (PageCompound(page)) - return -EBUSY; - - lru_add_drain(); - ret = isolate_lru_page(page); - if (ret) - return ret; - - list_add(&page->lru, &cma_migrate_pages); - put_page(page); /* Drop the gup reference */ - - ret = migrate_pages(&cma_migrate_pages, new_iommu_non_cma_page, - NULL, 0, MIGRATE_SYNC, MR_CONTIG_RANGE); - if (ret) { - if (!list_empty(&cma_migrate_pages)) - putback_movable_pages(&cma_migrate_pages); - } - - return 0; -} - long mm_iommu_get(struct mm_struct *mm, unsigned long ua, unsigned long entries, struct mm_iommu_table_group_mem_t **pmem) { struct mm_iommu_table_group_mem_t *mem; - long i, j, ret = 0, locked_entries = 0; + long i, ret = 0, locked_entries = 0; unsigned int pageshift; - unsigned long flags; - unsigned long cur_ua; - struct page *page = NULL; mutex_lock(&mem_list_mutex); @@ -177,47 +137,37 @@ long mm_iommu_get(struct mm_struct *mm, unsigned long ua, unsigned long entries, goto unlock_exit; } + ret = get_user_pages_cma_migrate(ua, entries, 1, mem->hpages); + if (ret != entries) { + /* free the reference taken */ + for (i = 0; i < ret; i++) + put_page(mem->hpages[i]); + + vfree(mem->hpas); + kfree(mem); + ret = -EFAULT; + goto unlock_exit; + } else + ret = 0; + + pageshift = PAGE_SHIFT; for (i = 0; i < entries; ++i) { - cur_ua = ua + (i << PAGE_SHIFT); - if (1 != get_user_pages_fast(cur_ua, - 1/* pages */, 1/* iswrite */, &page)) { - ret = -EFAULT; - for (j = 0; j < i; ++j) - put_page(pfn_to_page(mem->hpas[j] >> - PAGE_SHIFT)); - vfree(mem->hpas); - kfree(mem); - goto unlock_exit; - } + struct page *page = mem->hpages[i]; /* - * If we get a page from the CMA zone, since we are going to - * be pinning these entries, we might as well move them out - * of the CMA zone if possible. NOTE: faulting in + migration - * can be expensive. Batching can be considered later + * Allow to use larger than 64k IOMMU pages. Only do that + * if we are backed by hugetlb. */ - if (is_migrate_cma_page(page)) { - if (mm_iommu_move_page_from_cma(page)) - goto populate; - if (1 != get_user_pages_fast(cur_ua, - 1/* pages */, 1/* iswrite */, - &page)) { - ret = -EFAULT; - for (j = 0; j < i; ++j) - put_page(pfn_to_page(mem->hpas[j] >> - PAGE_SHIFT)); - vfree(mem->hpas); - kfree(mem); - goto unlock_exit; - } - } -populate: - pageshift = PAGE_SHIFT; - if (mem->pageshift > PAGE_SHIFT && PageHuge(page)) { + if ((mem->pageshift > PAGE_SHIFT) && PageHuge(page)) { struct page *head = compound_head(page); pageshift = compound_order(head) + PAGE_SHIFT; } mem->pageshift = min(mem->pageshift, pageshift); + /* + * We don't need struct page reference any more, switch + * physicall address. + */ mem->hpas[i] = page_to_pfn(page) << PAGE_SHIFT; + } atomic64_set(&mem->mapped, 1);