From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 35CCFC7EE36 for ; Mon, 27 Feb 2023 17:58:37 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 97AC328000F; Mon, 27 Feb 2023 12:58:17 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 8DBE4280001; Mon, 27 Feb 2023 12:58:17 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 7A34528000F; Mon, 27 Feb 2023 12:58:17 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0011.hostedemail.com [216.40.44.11]) by kanga.kvack.org (Postfix) with ESMTP id 60EF7280001 for ; Mon, 27 Feb 2023 12:58:17 -0500 (EST) Received: from smtpin25.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id 48EF2A0AFB for ; Mon, 27 Feb 2023 17:58:17 +0000 (UTC) X-FDA: 80513831034.25.9FD5FEA Received: from casper.infradead.org (casper.infradead.org [90.155.50.34]) by imf08.hostedemail.com (Postfix) with ESMTP id 7EE77160011 for ; Mon, 27 Feb 2023 17:58:15 +0000 (UTC) Authentication-Results: imf08.hostedemail.com; dkim=pass header.d=infradead.org header.s=casper.20170209 header.b=knrGnGCf; spf=none (imf08.hostedemail.com: domain of willy@infradead.org has no SPF policy when checking 90.155.50.34) smtp.mailfrom=willy@infradead.org; dmarc=none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1677520695; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=OsGw+Kta3YWjQfJb2PytPQ2Q1ww6/aja6t5dfRe0Qq4=; b=Enb5VW4APBvhMIAHeu+ZCegXXbXJHRv++KWifXnPMefL6eDPk9kgYkVzb2XXKXCd6OmPcr Wkpdmzpy20uibo2wgGgWGJo8ZhK4RtOeUmXP7XvyBTZb/hKpK/bTfIGVA/Yu+QjRNpndw8 h5HL8FF7VvrzQla3dPNzqXjIbYzvlsc= ARC-Authentication-Results: i=1; imf08.hostedemail.com; dkim=pass header.d=infradead.org header.s=casper.20170209 header.b=knrGnGCf; spf=none (imf08.hostedemail.com: domain of willy@infradead.org has no SPF policy when checking 90.155.50.34) smtp.mailfrom=willy@infradead.org; dmarc=none ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1677520695; a=rsa-sha256; cv=none; b=q+0nFB7OhobwRHYlVWMfuvRBHcrOXbv17bJ5fM3U/wQEMCvCqOXdObPBWXwsTGqd0yuV9v dxaUTPlBW+jRAOmU5psUTtC4938dqRCCH13Pvqa/zgORRc0kVxHGAbhvMBbZbQ6PZNjpey LuVQYRD7Sx3bQRRtjOqmPiws2nRwTVg= DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=casper.20170209; h=Content-Transfer-Encoding:MIME-Version: References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From:Sender:Reply-To: Content-Type:Content-ID:Content-Description; bh=OsGw+Kta3YWjQfJb2PytPQ2Q1ww6/aja6t5dfRe0Qq4=; b=knrGnGCfUo2tcrcph/DNuFOLU6 VIAEyQ7tnaj2wqyjOcp4mXoeoxzw4dUgrk3AVhoFoxQ9ZOEMHuSPFYcXInl/YZmH8ee9T8cknoGTF eHrNsl145ZSjyTlkUHZEkR6G4QC5T7R8yWXjyERjnGCiAJyDbgQXEg6v9JVmAZ4aT1uyhyHTAFnAh nmO55q2lznKdtJeR7mEiQ4Ix0wdFz54AyibNXqYVMVDCdi26fa9uN8StvjC/DBvPXQD7ClGulqmgs n++OiRl5uf0PefxKVaq/Z6LQOaZWNCHQPn5Zm4G542cDA2BA9nFr0V3ar6DaTt61wl/fwnsLF5s+W varwqbKA==; Received: from willy by casper.infradead.org with local (Exim 4.94.2 #2 (Red Hat Linux)) id 1pWhkv-000IY8-Ki; Mon, 27 Feb 2023 17:57:45 +0000 From: "Matthew Wilcox (Oracle)" To: linux-mm@kvack.org, linux-arch@vger.kernel.org Cc: "Matthew Wilcox (Oracle)" , linux-kernel@vger.kernel.org, Heiko Carstens , Vasily Gorbik , Alexander Gordeev , Christian Borntraeger , Sven Schnelle , linux-s390@vger.kernel.org Subject: [PATCH v2 20/30] s390: Implement the new page table range API Date: Mon, 27 Feb 2023 17:57:31 +0000 Message-Id: <20230227175741.71216-21-willy@infradead.org> X-Mailer: git-send-email 2.37.1 In-Reply-To: <20230227175741.71216-1-willy@infradead.org> References: <20230227175741.71216-1-willy@infradead.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Rspam-User: X-Rspamd-Server: rspam03 X-Stat-Signature: az4jxeo13xbsaijcmcyx4p5ez537inkp X-Rspamd-Queue-Id: 7EE77160011 X-HE-Tag: 1677520695-178151 X-HE-Meta: U2FsdGVkX1+cPO0k1aTJ/pO63MI3GP9uk7IKmyZbo1aWzjUs/NRhSoNfrC5AktU8qUEkayKOEL4q8nQltBD0ht3opnsX5N7uD5mP9k+2kFgvgtJqQC3oPminT/qVwieifexKVCT9e0dMZp6ItgZMzKTNuZtOaWuiYfNEVzhWZqQYBV3IqXBObA9ouqplNk0ly6PPUi4an+xh57qjVFfPQP3vT6FFF8K6AXD3Vi6iQt3x3a8fH4MmhqzgWtSe+w8+BBc99spRhBX/fQx5ErYPoEbez3pV8VzVuXjMu1sIhqfyz3LtpHF+QmR2LQYyi4fatk/lXpylsOai73y0YOboOEKhBB6d4wVq1CtJKItGqjErVlviSqvONCpkGxD38e0o7mMkRZfgPo1lvTFeww8s+28k9f0Z8SiPQGQTAFupTUhbLGZkVt4CodaJZFrYqKGPwJ99mpDUHT26nRRF6qerhrl5iEBOwUC7ri/+6UqT1iE4HQoh6rGebx2e5KRMP6cR37Ge0Zjq6uKJx8JD7F5c/nCSJpXVv+tLNYZ4EjO42oocOubC+fJ1WAaLn+bc31g9y1rBZHNgI1ZpO/lUTx+BbT+Wr2frvMqd7OqPKluP/HwM/UHJYPhdh3MyTh746IrAlQPXWeqWslKJOw0GbkP7HCrzuLng0Z/dUijuFPWBzO7vlTUd7btD567pOvxqK192cu9SPsl+FfKbxeI8pnIdfIAGSgXV7y4zNFZcGCnHZJNtZhBpZBxMfbRYovZvrju+8o5WXRtw+yCIFTX2i0q94Qd0lgzsieFh8SH2Rn6JkEVKL+JmhvrBKzWTjD9e2MneKtJWGy+FuLe/8m0JCUG0vOXWH2IUsQ8uF1TMWnG+w1k85ChNM3YDrYyZvakRPh6vNcjf02PbnPjAjDU0QWDwjG+wqWyRJ4tN963ipU0JyMUIxTWkcs+vPEKx7E2PJH+qYxyEkX3OaLF58XvyrqW m5ZS2VdH TD7/Fz2+Sh6sA3gOSTnuMCXnhyxUvWHSBpIzRm5FdqWDd975E2IuA6x66lHWHg+1ULeEwLDAs27UckBAv1ElmJp39j7kTjjCZhZYa2MXIQTcFMKpOD5F9aqpzoA2MRhvoP1PG3eaAAJjSJ18rICLoYhFTJdSFl0xeo9gIZACZod5tAZriSaS4vWb1Ur/Nmj5nGS+MmrERIOR9NlA12nisn+/h90J0L4hNZ6SNiIDJyPl0dZO8ktKKxpoEuCamT95MTeZn2kb4gsEbbG5QJvLISNMKwA== 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: Add set_ptes() and update_mmu_cache_range(). Signed-off-by: Matthew Wilcox (Oracle) Cc: Heiko Carstens Cc: Vasily Gorbik Cc: Alexander Gordeev Cc: Christian Borntraeger Cc: Sven Schnelle Cc: linux-s390@vger.kernel.org --- arch/s390/include/asm/pgtable.h | 34 ++++++++++++++++++++++++--------- 1 file changed, 25 insertions(+), 9 deletions(-) diff --git a/arch/s390/include/asm/pgtable.h b/arch/s390/include/asm/pgtable.h index 2c70b4d1263d..46bf475116f1 100644 --- a/arch/s390/include/asm/pgtable.h +++ b/arch/s390/include/asm/pgtable.h @@ -50,6 +50,7 @@ void arch_report_meminfo(struct seq_file *m); * tables contain all the necessary information. */ #define update_mmu_cache(vma, address, ptep) do { } while (0) +#define update_mmu_cache_range(vma, addr, ptep, nr) do { } while (0) #define update_mmu_cache_pmd(vma, address, ptep) do { } while (0) /* @@ -1317,21 +1318,36 @@ pgprot_t pgprot_writecombine(pgprot_t prot); pgprot_t pgprot_writethrough(pgprot_t prot); /* - * Certain architectures need to do special things when PTEs - * within a page table are directly modified. Thus, the following - * hook is made available. + * Set multiple PTEs to consecutive pages with a single call. All PTEs + * are within the same folio, PMD and VMA. */ -static inline void set_pte_at(struct mm_struct *mm, unsigned long addr, - pte_t *ptep, pte_t entry) +static inline void set_ptes(struct mm_struct *mm, unsigned long addr, + pte_t *ptep, pte_t entry, unsigned int nr) { if (pte_present(entry)) entry = clear_pte_bit(entry, __pgprot(_PAGE_UNUSED)); - if (mm_has_pgste(mm)) - ptep_set_pte_at(mm, addr, ptep, entry); - else - set_pte(ptep, entry); + if (mm_has_pgste(mm)) { + for (;;) { + ptep_set_pte_at(mm, addr, ptep, entry); + if (--nr == 0) + break; + ptep++; + entry = __pte(pte_val(entry) + PAGE_SIZE); + addr += PAGE_SIZE; + } + } else { + for (;;) { + set_pte(ptep, entry); + if (--nr == 0) + break; + ptep++; + entry = __pte(pte_val(entry) + PAGE_SIZE); + } + } } +#define set_pte_at(mm, addr, ptep, pte) set_ptes(mm, addr, ptep, pte, 1) + /* * Conversion functions: convert a page and protection to a page entry, * and a page entry and page directory to the page they refer to. -- 2.39.1