From patchwork Sat Jan 17 01:14:26 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Simon Glass X-Patchwork-Id: 1564 Return-Path: X-Original-To: u-boot-concept@u-boot.org Delivered-To: u-boot-concept@u-boot.org DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=u-boot.org; s=default; t=1768612516; bh=v3CYi1Zmp/Dw7/UbCaw0njbtjYtvICvb0UiC24oWukA=; h=From:To:Date:In-Reply-To:References:CC:Subject:List-Id: List-Archive:List-Help:List-Owner:List-Post:List-Subscribe: List-Unsubscribe:From; b=lQk+jOWtgS/jXHAPyBn52Tf+P4Hxh8D8OxFo603yb7c/bAnTPG8eSXH5WjUm5EehH 1Jev+w2NbZw98yRp+9/JG7r6mufczhsUesbgjxZir3M9AA4nCHcKvaaiLU6KZPjQiG rEP7AvuylWaKyOXpXB73xN2cxJN7s0iiWOayTZzFlf8t2JBjpwv9LLs8hpud2j6dWc uwF30LP9dXoOrKC2Z1BoCNcsFJPdeHVT8qO1mnfzOb0pLDVyltkPX3XcDLZyi3SbbS dXoHXnyS1Xc5eSre70xKaWqX+gffL3KrJ+JivqbUdcuRXdHGprMFd8wTnd2e/IyPCH 6IuXLjzylubVg== Received: from localhost (localhost [127.0.0.1]) by mail.u-boot.org (Postfix) with ESMTP id B7EDF69405 for ; Fri, 16 Jan 2026 18:15:16 -0700 (MST) X-Virus-Scanned: Debian amavis at Received: from mail.u-boot.org ([127.0.0.1]) by localhost (mail.u-boot.org [127.0.0.1]) (amavis, port 10024) with ESMTP id H0sjuNc_iebL for ; Fri, 16 Jan 2026 18:15:16 -0700 (MST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=u-boot.org; s=default; t=1768612516; bh=v3CYi1Zmp/Dw7/UbCaw0njbtjYtvICvb0UiC24oWukA=; h=From:To:Date:In-Reply-To:References:CC:Subject:List-Id: List-Archive:List-Help:List-Owner:List-Post:List-Subscribe: List-Unsubscribe:From; b=lQk+jOWtgS/jXHAPyBn52Tf+P4Hxh8D8OxFo603yb7c/bAnTPG8eSXH5WjUm5EehH 1Jev+w2NbZw98yRp+9/JG7r6mufczhsUesbgjxZir3M9AA4nCHcKvaaiLU6KZPjQiG rEP7AvuylWaKyOXpXB73xN2cxJN7s0iiWOayTZzFlf8t2JBjpwv9LLs8hpud2j6dWc uwF30LP9dXoOrKC2Z1BoCNcsFJPdeHVT8qO1mnfzOb0pLDVyltkPX3XcDLZyi3SbbS dXoHXnyS1Xc5eSre70xKaWqX+gffL3KrJ+JivqbUdcuRXdHGprMFd8wTnd2e/IyPCH 6IuXLjzylubVg== Received: from mail.u-boot.org (localhost [127.0.0.1]) by mail.u-boot.org (Postfix) with ESMTP id 9D3A8693F7 for ; Fri, 16 Jan 2026 18:15:16 -0700 (MST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=u-boot.org; s=default; t=1768612515; bh=p1aKK1ftU1XUJRPMqhdQtgWFIwgQvvQnRMbI/NiH1Io=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=eAawFFQDY0AH8fEa++tgnjuoAZmsgucjegvBWzS7Q6EYMO2bDkxFbURKb2OsHXPFe zubK4dYi4CChiYj4LLygHRgw38rYTYXlrx90eR6IW8ufXqgotIvD7EI9bUdYaz81Pj ooqjWCM7M4MQQJVp2+GgW7+z6NonPhqtmayjopwnVAak9UPqDVqgqQkxPj6q0nAGHo HX7oJ7zyhKvqNN0IIA3eWyq8tfB23PNp3jrKhNrPSZCfRuQYIrNssfoA0faDG29Hx0 y3OccZNYdQtqkgsVPSThmhxRQJwGuJpysvKf6alcoS3qgv9eiWhC7ywKBgfloURivA fA+fH2KGGhdZw== Received: from localhost (localhost [127.0.0.1]) by mail.u-boot.org (Postfix) with ESMTP id B66A06913F; Fri, 16 Jan 2026 18:15:15 -0700 (MST) X-Virus-Scanned: Debian amavis at Received: from mail.u-boot.org ([127.0.0.1]) by localhost (mail.u-boot.org [127.0.0.1]) (amavis, port 10026) with ESMTP id z1FjvH1_eIAU; Fri, 16 Jan 2026 18:15:15 -0700 (MST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=u-boot.org; s=default; t=1768612515; bh=npKWCTS+1y2l9MQ5AGW5uTaA1aIQkRm1qDJTaJXQOc8=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=KA493Hj6gXYEp8cnIntGqTPxQIX17MiKLWpn6cAnxlwEuh1yvAb7w589QKasYcfsB hapEsnseMvmMuU5dQv6mwiwG5d0hDeafSKZlzSbb+upaCDVZQg5+GBHeuRZgPeAlpi vmclMv7vgClqebledx3G09zc1xIPGv6YdixnF1+O69zhc84rQUZ0xvr9XqDqHefrmI 9N610bDWM/53wZwFAo1ZHyAeo5zBzBWtcN1vnOfZU1JLtzORV34aARj7YST8SuJ/6o +/+m91fNFnbsMuLrsJJAK9XjwlRtu5WbhKoXTq2yGFkysB6kKtuGnchmLgwEcepgOZ 09gXwtpcC3ROg== Received: from u-boot.org (unknown [73.34.74.121]) by mail.u-boot.org (Postfix) with ESMTPSA id 17E44693E0; Fri, 16 Jan 2026 18:15:15 -0700 (MST) From: Simon Glass To: U-Boot Concept Date: Fri, 16 Jan 2026 18:14:26 -0700 Message-ID: <20260117011448.3007171-5-sjg@u-boot.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260117011448.3007171-1-sjg@u-boot.org> References: <20260117011448.3007171-1-sjg@u-boot.org> MIME-Version: 1.0 Message-ID-Hash: PD2JLED63VQXCUXY3WUE3WYN6J5E7WM7 X-Message-ID-Hash: PD2JLED63VQXCUXY3WUE3WYN6J5E7WM7 X-MailFrom: sjg@u-boot.org X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; emergency; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header CC: Simon Glass , "Claude Opus 4 . 5" X-Mailman-Version: 3.3.10 Precedence: list Subject: [Concept] [PATCH 04/19] linux: Add mm_types.h header with VM stubs List-Id: Discussion and patches related to U-Boot Concept Archived-At: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: From: Simon Glass U-Boot does not have virtual memory management. The ext4l filesystem uses several VM-related types which are currently defined inline in ext4_uboot.h. Create a new linux/mm_types.h header file with stub implementations to better match the Linux kernel structure. Types moved: - struct page - vm_fault_t - VM_SHARED, VM_WRITE, VM_HUGEPAGE flags - FAULT_FLAG_WRITE - VM_FAULT_SIGBUS, VM_FAULT_NOPAGE, VM_FAULT_LOCKED - MAX_PAGECACHE_ORDER - struct vm_area_struct - struct vm_fault - struct vm_operations_struct - struct vm_area_desc Co-developed-by: Claude Opus 4.5 Signed-off-by: Simon Glass --- fs/ext4l/ext4_uboot.h | 60 ++------------------ include/linux/mm_types.h | 116 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 121 insertions(+), 55 deletions(-) create mode 100644 include/linux/mm_types.h diff --git a/fs/ext4l/ext4_uboot.h b/fs/ext4l/ext4_uboot.h index d04a843175b..6a06805329f 100644 --- a/fs/ext4l/ext4_uboot.h +++ b/fs/ext4l/ext4_uboot.h @@ -456,29 +456,15 @@ struct name_snapshot { struct qstr name; }; -/* vm_fault_t - stub */ -typedef unsigned int vm_fault_t; - -/* VM flags */ -#define VM_SHARED 0x00000008 -#define VM_WRITE 0x00000002 -#define VM_HUGEPAGE 0x01000000 -#define FAULT_FLAG_WRITE 0x01 +/* VM types - use linux/mm_types.h */ +#include /* pipe_inode_info - forward declaration */ struct pipe_inode_info; -/* vm_area_desc - for mmap_prepare */ -struct vm_area_desc { - struct file *file; - unsigned long vm_flags; - const struct vm_operations_struct *vm_ops; -}; - -/* Forward declarations for function prototypes */ +/* Forward declarations for function prototypes (vm_fault is in linux/mm_types.h) */ struct kstat; struct path; -struct vm_fault; struct file_kattr; struct dir_context; struct readahead_control; @@ -592,10 +578,7 @@ static inline int bdev_read_only(struct block_device *bdev) #define STATX_ATTR_ENCRYPTED 0x00000800 #define STATX_ATTR_VERITY 0x00100000 -/* VM fault return values */ -#define VM_FAULT_SIGBUS 0x0002 -#define VM_FAULT_NOPAGE 0x0010 -#define VM_FAULT_LOCKED 0x0200 +/* VM fault return values are in linux/mm_types.h */ /* struct path is defined in linux/fs.h */ @@ -625,44 +608,11 @@ struct kstat { u32 atomic_write_segments_max; }; -/* struct vm_area_struct - virtual memory area */ -struct vm_area_struct { - unsigned long vm_start; - unsigned long vm_end; - struct file *vm_file; - unsigned long vm_flags; -}; - -/* struct page - minimal stub */ -struct page { - unsigned long flags; -}; - -/* struct vm_fault - virtual memory fault info */ -struct vm_fault { - struct vm_area_struct *vma; - unsigned long address; - unsigned int flags; - pgoff_t pgoff; - struct folio *folio; - struct page *page; -}; - -/* vm_operations_struct - virtual memory area operations */ -struct vm_operations_struct { - vm_fault_t (*fault)(struct vm_fault *vmf); - vm_fault_t (*huge_fault)(struct vm_fault *vmf, unsigned int order); - vm_fault_t (*page_mkwrite)(struct vm_fault *vmf); - vm_fault_t (*pfn_mkwrite)(struct vm_fault *vmf); - vm_fault_t (*map_pages)(struct vm_fault *vmf, pgoff_t start, pgoff_t end); -}; +/* VM structs (vm_area_struct, page, vm_fault, vm_operations_struct) are in linux/mm_types.h */ /* Forward declaration for swap */ struct swap_info_struct; -/* MAX_PAGECACHE_ORDER - maximum order for page cache allocations */ -#define MAX_PAGECACHE_ORDER 12 - /* Process flags */ #define PF_MEMALLOC 0x00000800 diff --git a/include/linux/mm_types.h b/include/linux/mm_types.h new file mode 100644 index 00000000000..57a52769b05 --- /dev/null +++ b/include/linux/mm_types.h @@ -0,0 +1,116 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* + * Memory management types stub for U-Boot + * + * U-Boot doesn't have virtual memory management, so these are stubs. + */ +#ifndef _LINUX_MM_TYPES_H +#define _LINUX_MM_TYPES_H + +#include + +/* Forward declarations */ +struct file; +struct folio; +struct address_space; + +/** + * struct page - minimal stub for page structure + * @flags: page flags + * + * U-Boot stub - only the flags field is provided. + */ +struct page { + unsigned long flags; +}; + +/** + * typedef vm_fault_t - return type for page fault handlers + * + * Encodes the result of a page fault. + */ +typedef unsigned int vm_fault_t; + +/* VM flags for vm_area_struct */ +#define VM_SHARED 0x00000008 +#define VM_WRITE 0x00000002 +#define VM_HUGEPAGE 0x01000000 + +/* Fault flags */ +#define FAULT_FLAG_WRITE 0x01 + +/* VM fault return values */ +#define VM_FAULT_SIGBUS 0x0002 +#define VM_FAULT_NOPAGE 0x0010 +#define VM_FAULT_LOCKED 0x0200 + +/* Maximum order for page cache allocations */ +#define MAX_PAGECACHE_ORDER 12 + +struct vm_operations_struct; + +/** + * struct vm_area_struct - virtual memory area + * @vm_start: start address + * @vm_end: end address + * @vm_file: file this vma is associated with + * @vm_flags: VM flags + * + * U-Boot stub. + */ +struct vm_area_struct { + unsigned long vm_start; + unsigned long vm_end; + struct file *vm_file; + unsigned long vm_flags; +}; + +/** + * struct vm_fault - virtual memory fault info + * @vma: virtual memory area + * @address: faulting address + * @flags: fault flags + * @pgoff: page offset + * @folio: folio being faulted + * @page: page being faulted + * + * U-Boot stub. + */ +struct vm_fault { + struct vm_area_struct *vma; + unsigned long address; + unsigned int flags; + pgoff_t pgoff; + struct folio *folio; + struct page *page; +}; + +/** + * struct vm_operations_struct - virtual memory area operations + * + * Callbacks for VM operations. U-Boot stub. + */ +struct vm_operations_struct { + vm_fault_t (*fault)(struct vm_fault *vmf); + vm_fault_t (*huge_fault)(struct vm_fault *vmf, unsigned int order); + vm_fault_t (*page_mkwrite)(struct vm_fault *vmf); + vm_fault_t (*pfn_mkwrite)(struct vm_fault *vmf); + vm_fault_t (*map_pages)(struct vm_fault *vmf, pgoff_t start, + pgoff_t end); +}; + +/** + * struct vm_area_desc - for mmap_prepare + * @file: associated file + * @vm_flags: VM flags + * @vm_ops: VM operations + * + * U-Boot stub. + */ +struct vm_area_desc { + struct file *file; + unsigned long vm_flags; + const struct vm_operations_struct *vm_ops; +}; + +#endif /* _LINUX_MM_TYPES_H */