From patchwork Mon Jan 14 09:54:37 2019 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: 10761857 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 B143E13B5 for ; Mon, 14 Jan 2019 09:55:16 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id A8B9928A75 for ; Mon, 14 Jan 2019 09:55:15 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 9CED528AD2; Mon, 14 Jan 2019 09:55: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 253BF28AD0 for ; Mon, 14 Jan 2019 09:55:15 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 30FD58E0008; Mon, 14 Jan 2019 04:55:14 -0500 (EST) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id 2BEA28E0002; Mon, 14 Jan 2019 04:55:14 -0500 (EST) 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 138CA8E0008; Mon, 14 Jan 2019 04:55:14 -0500 (EST) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from mail-pg1-f198.google.com (mail-pg1-f198.google.com [209.85.215.198]) by kanga.kvack.org (Postfix) with ESMTP id C58C28E0002 for ; Mon, 14 Jan 2019 04:55:13 -0500 (EST) Received: by mail-pg1-f198.google.com with SMTP id 202so12342374pgb.6 for ; Mon, 14 Jan 2019 01:55:13 -0800 (PST) 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:mime-version :content-transfer-encoding:message-id; bh=/eAUx4hI35nfQoEtMg3V4ufe9i2QR/v3/ft8ZObRbjk=; b=WHS8ukhepho8ZtVlSwPKzARR0AGF4c4LQrzF9bRZVuOABna77CI1bRPFVa87xsAnPA oXEhjdTtMPFEMFOEu3m/r456icu6PekSWNOxXubFBgghpIuZI1wgpUAlcsV+TZyvts+9 ggAT8DV9iVfxyByug6DAgBe7SIPi6qcEhxkfQ5ZTSB3QCU9DaNPag2g6FtTNACSWYy4Z VGJf31FGsfLP+kjQbRT8L7F5OkMPZyEEs2KZrjY8nqS9Mp5luBShPi8OBES/GuOcX/he AAacC3Gv4E2mV1y3Kb7l9LxJTdIqq0wJ6wf3ASv1EXUdNIQtch5edYhKjrRljIb/zN9H GFRQ== 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: AJcUukdZmiIktxq3Tece2/mcoFFETdYqb3i1YgwXDYL/JepEErHF2fR1 KaL5WuLhTTXeWstZ+cttXWWvWz5XuenbFD7PtNim2LNrpgLV1tqJQn9XAVSIE8GLgsDtvp3zZyy ITYL2R9omZ2MjJo84mK9kmlOVz/Feje73oOrOf4e7TZKnoRYP3rNumGAMEysY5NND0w== X-Received: by 2002:a63:955a:: with SMTP id t26mr22322267pgn.449.1547459713445; Mon, 14 Jan 2019 01:55:13 -0800 (PST) X-Google-Smtp-Source: ALg8bN6aIBHAFqnTMl60e5eYnanhu0nKIADcvG6As47nzEMdsePy1TcCH3dBwwHHZ/lVmnATj9Z4 X-Received: by 2002:a63:955a:: with SMTP id t26mr22322221pgn.449.1547459712365; Mon, 14 Jan 2019 01:55:12 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1547459712; cv=none; d=google.com; s=arc-20160816; b=JKG+zi5q3rU8UUn0ySmGIILdjwNvQgsJtG1SlZazCfVtNj5uOjCWcOiAu022ckJ8/1 hhkRsGnHfwdZX2jyY9/KUvcU/6pQSjyit1y42EmMxAYB0vOuaY3zzlDLq4iTi1L2rSrg Xy6uQvsTrPFHH3GZScswlmhp5YZgsR3mDv6koLkW/5TdoY2eUhl5A75WXS6aCFd+nQSR c2Xgs6IO9Xp4KzYuHXxwhFpPwTVxOeiIuRb5et1g07LMMAcV2CJ3jVE/me81NUZxeLhL MYCFWzGDx7Pps0qoM9B40UQ2lvIzYCeTwlvF7d/VM5SPQpLa7VwijV5Mk+XKKhignbaW cplw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=message-id:content-transfer-encoding:mime-version:references :in-reply-to:date:subject:cc:to:from; bh=/eAUx4hI35nfQoEtMg3V4ufe9i2QR/v3/ft8ZObRbjk=; b=BzhXWhMxVjamXzDHRUm5WSJc8n9Cl94DXLCyGPKYnQrmx5wpC/Vrcc/Q/yK5t5ngWE DH2wE4V0HilSRIUw79Ghkx9jKyhDhjAqi4Z3NH+xhE81lnGrC7GWV+T++l3juFoCnUQu xvW9sD5BbdDx+g/MgRVdv6xkrXk5JjizlYdIBU82mpOvkMOLPy89NhLIfSAIHXfo1FmJ dVlNmxK1j0eOtcLNAK5zwM9iTobkRaFPLURsS5oZIsG4xUk8s84VUf1PpN5Vl47qBK0/ v/kR4b8zBuDoKfrkqRnzooyshC7bnl2MXglzfR3rWRFhpF0F5rWq90lPhJLLUj5sVrLH ci8g== 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 h31si77051516pgl.482.2019.01.14.01.55.12 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 14 Jan 2019 01:55:12 -0800 (PST) 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 (m0098410.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.16.0.22/8.16.0.22) with SMTP id x0E9nKVn019246 for ; Mon, 14 Jan 2019 04:55:11 -0500 Received: from e17.ny.us.ibm.com (e17.ny.us.ibm.com [129.33.205.207]) by mx0a-001b2d01.pphosted.com with ESMTP id 2q0qhphvqn-1 (version=TLSv1.2 cipher=AES256-GCM-SHA384 bits=256 verify=NOT) for ; Mon, 14 Jan 2019 04:55:11 -0500 Received: from localhost by e17.ny.us.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Mon, 14 Jan 2019 09:55:10 -0000 Received: from b01cxnp22035.gho.pok.ibm.com (9.57.198.25) 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) Mon, 14 Jan 2019 09:55:06 -0000 Received: from b01ledav005.gho.pok.ibm.com (b01ledav005.gho.pok.ibm.com [9.57.199.110]) by b01cxnp22035.gho.pok.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id x0E9t5cS24445040 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=FAIL); Mon, 14 Jan 2019 09:55:05 GMT Received: from b01ledav005.gho.pok.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 458B2AE062; Mon, 14 Jan 2019 09:55:05 +0000 (GMT) Received: from b01ledav005.gho.pok.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id C7D09AE05C; Mon, 14 Jan 2019 09:55:02 +0000 (GMT) Received: from skywalker.in.ibm.com (unknown [9.124.31.106]) by b01ledav005.gho.pok.ibm.com (Postfix) with ESMTP; Mon, 14 Jan 2019 09:55:02 +0000 (GMT) From: "Aneesh Kumar K.V" To: akpm@linux-foundation.org, Michal Hocko , Alexey Kardashevskiy , David Gibson , Andrea Arcangeli , mpe@ellerman.id.au Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, "Aneesh Kumar K.V" Subject: [PATCH V7 4/4] powerpc/mm/iommu: Allow large IOMMU page size only for hugetlb backing Date: Mon, 14 Jan 2019 15:24:37 +0530 X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190114095438.32470-1-aneesh.kumar@linux.ibm.com> References: <20190114095438.32470-1-aneesh.kumar@linux.ibm.com> MIME-Version: 1.0 X-TM-AS-GCONF: 00 x-cbid: 19011409-0040-0000-0000-000004B17D6B X-IBM-SpamModules-Scores: X-IBM-SpamModules-Versions: BY=3.00010402; HX=3.00000242; KW=3.00000007; PH=3.00000004; SC=3.00000274; SDB=6.01146284; UDB=6.00593882; IPR=6.00926570; MB=3.00025118; MTD=3.00000008; XFM=3.00000015; UTC=2019-01-14 09:55:08 X-IBM-AV-DETECTION: SAVI=unused REMOTE=unused XFE=unused x-cbparentid: 19011409-0041-0000-0000-000008BC8573 Message-Id: <20190114095438.32470-6-aneesh.kumar@linux.ibm.com> X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:,, definitions=2019-01-14_05:,, 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-1810050000 definitions=main-1901140081 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 does 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 | 24 +++++++----------------- 1 file changed, 7 insertions(+), 17 deletions(-) diff --git a/arch/powerpc/mm/mmu_context_iommu.c b/arch/powerpc/mm/mmu_context_iommu.c index f11a2f15071f..74d43f522dc2 100644 --- a/arch/powerpc/mm/mmu_context_iommu.c +++ b/arch/powerpc/mm/mmu_context_iommu.c @@ -98,8 +98,6 @@ static long mm_iommu_do_alloc(struct mm_struct *mm, unsigned long ua, struct mm_iommu_table_group_mem_t *mem; long i, ret = 0, locked_entries = 0; unsigned int pageshift; - unsigned long flags; - unsigned long cur_ua; mutex_lock(&mem_list_mutex); @@ -169,22 +167,14 @@ static long mm_iommu_do_alloc(struct mm_struct *mm, unsigned long ua, for (i = 0; i < entries; ++i) { struct page *page = mem->hpages[i]; - cur_ua = ua + (i << PAGE_SHIFT); - if (mem->pageshift > PAGE_SHIFT && PageCompound(page)) { - pte_t *pte; + /* + * Allow to use larger than 64k IOMMU pages. Only do that + * if we are backed by hugetlb. + */ + 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); /*