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 E6954C04FFE for ; Tue, 14 May 2024 14:05:45 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 17D9A6B0149; Tue, 14 May 2024 10:05:43 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 12FFF6B014B; Tue, 14 May 2024 10:05:43 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id E9C2E6B014C; Tue, 14 May 2024 10:05:42 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0015.hostedemail.com [216.40.44.15]) by kanga.kvack.org (Postfix) with ESMTP id C26B96B0149 for ; Tue, 14 May 2024 10:05:42 -0400 (EDT) Received: from smtpin30.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id 3B9361C0AA6 for ; Tue, 14 May 2024 14:05:42 +0000 (UTC) X-FDA: 82117174524.30.A1EB7BF Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by imf09.hostedemail.com (Postfix) with ESMTP id 7E73C14003F for ; Tue, 14 May 2024 14:05:40 +0000 (UTC) Authentication-Results: imf09.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=DocwhOPM; spf=pass (imf09.hostedemail.com: domain of bjorn@kernel.org designates 139.178.84.217 as permitted sender) smtp.mailfrom=bjorn@kernel.org; dmarc=pass (policy=none) header.from=kernel.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1715695540; 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-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=lwVEAOz0NyD/sQaWGzFjQscH92aI1v23LVpziabaD9g=; b=2CsX9pV6lQUmr91LT+52vh9t4fFILRiW1PxVjX07GBw+axk/HGd36PJaBYHWjoeo46EVKi 1seAeEsaJdO6slUhQLTkHY26D1rwjO1ZQqXoRnRjsyhmFi59JE5AzubRymxj4qdByitkIc FrKUmYhFVeju+ntbZzTaZOF7j9FoqKo= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1715695540; a=rsa-sha256; cv=none; b=MhUuXwqas3vXTRUSttmEoMNZ8whTL+po8qCRi6LMrYW99euVIUgoRaP+JpHYais8qgMVRy JhEcn8o+JOpSVhW5X6feY/j0viKmE6lFVjbvD8DTLotBuU3nkVWLX6p2f2rF8HYih1v0P2 WCPl/I7RXGj8rNOKJr7v0AKoZsCDHOw= ARC-Authentication-Results: i=1; imf09.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=DocwhOPM; spf=pass (imf09.hostedemail.com: domain of bjorn@kernel.org designates 139.178.84.217 as permitted sender) smtp.mailfrom=bjorn@kernel.org; dmarc=pass (policy=none) header.from=kernel.org Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by dfw.source.kernel.org (Postfix) with ESMTP id C6ECE61277; Tue, 14 May 2024 14:05:39 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id D7AD3C32782; Tue, 14 May 2024 14:05:35 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1715695539; bh=ID0c8KED4MaRAhJEPecqve06L1MFkX8CguX3Z8emb34=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=DocwhOPMzvezJPtOLEyIs2TIRSDK1iKYiQIktTqvDEydUXhzyMFEVIe4w7rEBUoLH s1Aip/eIuRLs0LXxRO2MMKQduZjZ4DBOo06roaRsDYMD4/V0p/WrJ1lfcdUWNFUWwn ODSRdACvCftCwaJk1JNzfbi3KPDD6bOSxG75Dty41GwFFUJmy5m2JNOYIkDK9lRWK4 +67Ojs55jbeazXTVY+CfQswUJQMXyrqtCucl7p6pKvQpAHUytS7hU/8LLSnmhoiUR/ 8vk20MjslNrDRrN0YMhL+gaxgJaWiumVfcpTRg8PMQDoBY6o9yqd75mDcjXratHavn aZt3F8dpoR/bA== From: =?UTF-8?q?Bj=C3=B6rn=20T=C3=B6pel?= To: Alexandre Ghiti , Albert Ou , David Hildenbrand , Palmer Dabbelt , Paul Walmsley , linux-riscv@lists.infradead.org Cc: =?UTF-8?q?Bj=C3=B6rn=20T=C3=B6pel?= , Andrew Bresticker , Chethan Seshadri , Lorenzo Stoakes , Oscar Salvador , Santosh Mamila , Sivakumar Munnangi , Sunil V L , linux-kernel@vger.kernel.org, linux-mm@kvack.org, virtualization@lists.linux-foundation.org Subject: [PATCH v2 8/8] riscv: mm: Add support for ZONE_DEVICE Date: Tue, 14 May 2024 16:04:46 +0200 Message-Id: <20240514140446.538622-9-bjorn@kernel.org> X-Mailer: git-send-email 2.40.1 In-Reply-To: <20240514140446.538622-1-bjorn@kernel.org> References: <20240514140446.538622-1-bjorn@kernel.org> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Rspam-User: X-Stat-Signature: w5uwwuepxtcsu5nkzixt19fp6wcktbax X-Rspamd-Server: rspam07 X-Rspamd-Queue-Id: 7E73C14003F X-HE-Tag: 1715695540-350485 X-HE-Meta: U2FsdGVkX19eA0pTKBX5ZnNT6rIXpXjVvoSXSfKpRsmyiO9/87HLUbBZdBtnyZKYBd9DRn822aoXhW+KeMq2r4vsHA+hOu/Q07/YKKjv8/KPV8zZW9YJ4CdsTG4yxfp2VOW3wKmLqeFgxbIbi2jOOkqlx7r/kmTNBIxEPEz40qseIX5kFz0V7bp1/I+lM6j6Jaxm3XaI/Ae7x8DWbUcYCQBHOI6jKOFTpYVjp3g/ohsTFQ4PnBehwGHf1D5aBNKCNZinNmyky1h4+ltFCaw1C0UcAREweDipF/wfd1VlVluCYxeNpCTuVrlSI2zoY99EwejhVsf6mtKVeSL1ffvOQ5UAc2ZGzwbKJtdiQXH5WsxQvx934yVbFWliogqLVL7Tqishp5NyCPuqTMjoRD7XQRyK9KkIYvP/M2iRIMUDbaqJbHq9/HpIWM1KZnin2D3EKETTgJWPaVH5LtPP/0zmlgliEIEaLrcKIUEZL/Jj9BuIxCfF7HsJTiheYzg5mtxvayTXnmZDgqlj3RLsQNPXrjrdrFrQ/radhBKuFeDslznbiUFdjYpksmkz4BsweXU82/URl2Hy+1eefhfEagQ2OZeSMtimAi65Td+c3V6kKvQVyK5Kb1y1TN1/xc8iHM5jnogQjyrzdc1xcUnvufjSJV9lUlLMb7fxJ+ZV6upOTCTyUnEzVHXUjMKyofnR6HaucBMOd8afvUEcGKSJ4vOJE0PS67gfL+Ri8Tb1B7axOTzPIvw4BwnKRzKURS48s1+tVlFQ1QX+QjtVRQKOnJzT3v6t8PG5RccOlWkufkWIeQaTgoIDVS782lCN/1Mg/5z/19tmZgAmSrYFKixBveNfkZWBdx6COvi6NmjZcnjXks1Jsh91Rwdbem7HIGx9IXdotgiEZdq6MiM3H/RsOGJ5ZAG0UJB2eeQTXTmwt1TZ3l01F0Vexly+u85zK6HyfrEOtz45JeJNGEhwulU535f d48sVtEM tYf7sNoJwxcf2vJVyz7Heeme0t7DSZyXfosUXKPWObrEZhSTOeeBSggPU7mnL0UfCS5xWCqp5g0Kxf+9rCsNUK5scTMtbohZdqd02ide0j2pcps3vrmQU/Eqi/N+sSc9cquYGPNhd4tXFoRBw4anqx9gWuf4rlfNuNkmeEBkn3LtmtXmU5mytUdcuQnXGhNhV6L0Zdz4hqGidJGE/KgVz7u24KYeJParifWbXdfyJnmy61TXNokJA877YFGzvNmCNxciRAiQb9jzCpGZn6lQQ8aMawgapM/t4Gjkg3GKdq0wUTmpVchUTZVysZWlNx1B2G39Rv021945X5KxeUJEYEp6w3lyFQPe3ld89VWYEGUpKZ05S2WjaH7fxNA== 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: List-Subscribe: List-Unsubscribe: From: Björn Töpel ZONE_DEVICE pages need DEVMAP PTEs support to function (ARCH_HAS_PTE_DEVMAP). Claim another RSW (reserved for software) bit in the PTE for DEVMAP mark, add the corresponding helpers, and enable ARCH_HAS_PTE_DEVMAP for riscv64. Signed-off-by: Björn Töpel --- arch/riscv/Kconfig | 1 + arch/riscv/include/asm/pgtable-64.h | 20 ++++++++++++++++++++ arch/riscv/include/asm/pgtable-bits.h | 1 + arch/riscv/include/asm/pgtable.h | 15 +++++++++++++++ 4 files changed, 37 insertions(+) diff --git a/arch/riscv/Kconfig b/arch/riscv/Kconfig index b9398b64bb69..6d426afdd904 100644 --- a/arch/riscv/Kconfig +++ b/arch/riscv/Kconfig @@ -36,6 +36,7 @@ config RISCV select ARCH_HAS_NON_OVERLAPPING_ADDRESS_SPACE select ARCH_HAS_PMEM_API select ARCH_HAS_PREPARE_SYNC_CORE_CMD + select ARCH_HAS_PTE_DEVMAP if 64BIT && MMU select ARCH_HAS_PTE_SPECIAL select ARCH_HAS_SET_DIRECT_MAP if MMU select ARCH_HAS_SET_MEMORY if MMU diff --git a/arch/riscv/include/asm/pgtable-64.h b/arch/riscv/include/asm/pgtable-64.h index 221a5c1ee287..c67a9bbfd010 100644 --- a/arch/riscv/include/asm/pgtable-64.h +++ b/arch/riscv/include/asm/pgtable-64.h @@ -400,4 +400,24 @@ static inline struct page *pgd_page(pgd_t pgd) #define p4d_offset p4d_offset p4d_t *p4d_offset(pgd_t *pgd, unsigned long address); +#ifdef CONFIG_TRANSPARENT_HUGEPAGE +static inline int pte_devmap(pte_t pte); +static inline pte_t pmd_pte(pmd_t pmd); + +static inline int pmd_devmap(pmd_t pmd) +{ + return pte_devmap(pmd_pte(pmd)); +} + +static inline int pud_devmap(pud_t pud) +{ + return 0; +} + +static inline int pgd_devmap(pgd_t pgd) +{ + return 0; +} +#endif + #endif /* _ASM_RISCV_PGTABLE_64_H */ diff --git a/arch/riscv/include/asm/pgtable-bits.h b/arch/riscv/include/asm/pgtable-bits.h index 179bd4afece4..a8f5205cea54 100644 --- a/arch/riscv/include/asm/pgtable-bits.h +++ b/arch/riscv/include/asm/pgtable-bits.h @@ -19,6 +19,7 @@ #define _PAGE_SOFT (3 << 8) /* Reserved for software */ #define _PAGE_SPECIAL (1 << 8) /* RSW: 0x1 */ +#define _PAGE_DEVMAP (1 << 9) /* RSW, devmap */ #define _PAGE_TABLE _PAGE_PRESENT /* diff --git a/arch/riscv/include/asm/pgtable.h b/arch/riscv/include/asm/pgtable.h index 7933f493db71..216de1db3cd0 100644 --- a/arch/riscv/include/asm/pgtable.h +++ b/arch/riscv/include/asm/pgtable.h @@ -387,6 +387,11 @@ static inline int pte_special(pte_t pte) return pte_val(pte) & _PAGE_SPECIAL; } +static inline int pte_devmap(pte_t pte) +{ + return pte_val(pte) & _PAGE_DEVMAP; +} + /* static inline pte_t pte_rdprotect(pte_t pte) */ static inline pte_t pte_wrprotect(pte_t pte) @@ -428,6 +433,11 @@ static inline pte_t pte_mkspecial(pte_t pte) return __pte(pte_val(pte) | _PAGE_SPECIAL); } +static inline pte_t pte_mkdevmap(pte_t pte) +{ + return __pte(pte_val(pte) | _PAGE_DEVMAP); +} + static inline pte_t pte_mkhuge(pte_t pte) { return pte; @@ -711,6 +721,11 @@ static inline pmd_t pmd_mkdirty(pmd_t pmd) return pte_pmd(pte_mkdirty(pmd_pte(pmd))); } +static inline pmd_t pmd_mkdevmap(pmd_t pmd) +{ + return pte_pmd(pte_mkdevmap(pmd_pte(pmd))); +} + static inline void set_pmd_at(struct mm_struct *mm, unsigned long addr, pmd_t *pmdp, pmd_t pmd) { -- 2.40.1