From: Andrew Morton <akpm@linux-foundation.org>
To: akpm@linux-foundation.org, linux-mm@kvack.org,
mm-commits@vger.kernel.org, slyfox@gentoo.org,
torvalds@linux-foundation.org
Subject: [patch 010/178] ia64: drop marked broken DISCONTIGMEM and VIRTUAL_MEM_MAP
Date: Thu, 29 Apr 2021 22:53:45 -0700 [thread overview]
Message-ID: <20210430055345.L0PJxk-So%akpm@linux-foundation.org> (raw)
In-Reply-To: <20210429225251.02b6386d21b69255b4f6c163@linux-foundation.org>
From: Sergei Trofimovich <slyfox@gentoo.org>
Subject: ia64: drop marked broken DISCONTIGMEM and VIRTUAL_MEM_MAP
DISCONTIGMEM was marked BROKEN in 5.11. Let's remove it.
Booted SPARSEMEM successfully on rx3600.
Link: https://lkml.kernel.org/r/20210404193440.2615358-1-slyfox@gentoo.org
Signed-off-by: Sergei Trofimovich <slyfox@gentoo.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
---
arch/ia64/Kconfig | 23 --
arch/ia64/configs/bigsur_defconfig | 1
arch/ia64/include/asm/meminit.h | 11 -
arch/ia64/include/asm/page.h | 25 ---
arch/ia64/include/asm/pgtable.h | 5
arch/ia64/kernel/Makefile | 2
arch/ia64/kernel/ia64_ksyms.c | 12 -
arch/ia64/kernel/machine_kexec.c | 2
arch/ia64/mm/Makefile | 1
arch/ia64/mm/contig.c | 4
arch/ia64/mm/discontig.c | 21 --
arch/ia64/mm/fault.c | 15 -
arch/ia64/mm/init.c | 213 ---------------------------
13 files changed, 4 insertions(+), 331 deletions(-)
--- a/arch/ia64/configs/bigsur_defconfig~ia64-drop-marked-broken-discontigmem-and-virtual_mem_map
+++ a/arch/ia64/configs/bigsur_defconfig
@@ -9,7 +9,6 @@ CONFIG_SGI_PARTITION=y
CONFIG_SMP=y
CONFIG_NR_CPUS=2
CONFIG_PREEMPT=y
-# CONFIG_VIRTUAL_MEM_MAP is not set
CONFIG_IA64_PALINFO=y
CONFIG_EFI_VARS=y
CONFIG_BINFMT_MISC=m
--- a/arch/ia64/include/asm/meminit.h~ia64-drop-marked-broken-discontigmem-and-virtual_mem_map
+++ a/arch/ia64/include/asm/meminit.h
@@ -58,15 +58,4 @@ extern int reserve_elfcorehdr(u64 *start
extern int register_active_ranges(u64 start, u64 len, int nid);
-#ifdef CONFIG_VIRTUAL_MEM_MAP
- extern unsigned long VMALLOC_END;
- extern struct page *vmem_map;
- extern int create_mem_map_page_table(u64 start, u64 end, void *arg);
- extern int vmemmap_find_next_valid_pfn(int, int);
-#else
-static inline int vmemmap_find_next_valid_pfn(int node, int i)
-{
- return i + 1;
-}
-#endif
#endif /* meminit_h */
--- a/arch/ia64/include/asm/page.h~ia64-drop-marked-broken-discontigmem-and-virtual_mem_map
+++ a/arch/ia64/include/asm/page.h
@@ -95,31 +95,10 @@ do { \
#define virt_addr_valid(kaddr) pfn_valid(__pa(kaddr) >> PAGE_SHIFT)
-#ifdef CONFIG_VIRTUAL_MEM_MAP
-extern int ia64_pfn_valid (unsigned long pfn);
-#else
-# define ia64_pfn_valid(pfn) 1
-#endif
-
-#ifdef CONFIG_VIRTUAL_MEM_MAP
-extern struct page *vmem_map;
-#ifdef CONFIG_DISCONTIGMEM
-# define page_to_pfn(page) ((unsigned long) (page - vmem_map))
-# define pfn_to_page(pfn) (vmem_map + (pfn))
-# define __pfn_to_phys(pfn) PFN_PHYS(pfn)
-#else
-# include <asm-generic/memory_model.h>
-#endif
-#else
-# include <asm-generic/memory_model.h>
-#endif
+#include <asm-generic/memory_model.h>
#ifdef CONFIG_FLATMEM
-# define pfn_valid(pfn) (((pfn) < max_mapnr) && ia64_pfn_valid(pfn))
-#elif defined(CONFIG_DISCONTIGMEM)
-extern unsigned long min_low_pfn;
-extern unsigned long max_low_pfn;
-# define pfn_valid(pfn) (((pfn) >= min_low_pfn) && ((pfn) < max_low_pfn) && ia64_pfn_valid(pfn))
+# define pfn_valid(pfn) ((pfn) < max_mapnr)
#endif
#define page_to_phys(page) (page_to_pfn(page) << PAGE_SHIFT)
--- a/arch/ia64/include/asm/pgtable.h~ia64-drop-marked-broken-discontigmem-and-virtual_mem_map
+++ a/arch/ia64/include/asm/pgtable.h
@@ -223,10 +223,6 @@ ia64_phys_addr_valid (unsigned long addr
#define VMALLOC_START (RGN_BASE(RGN_GATE) + 0x200000000UL)
-#ifdef CONFIG_VIRTUAL_MEM_MAP
-# define VMALLOC_END_INIT (RGN_BASE(RGN_GATE) + (1UL << (4*PAGE_SHIFT - 9)))
-extern unsigned long VMALLOC_END;
-#else
#if defined(CONFIG_SPARSEMEM) && defined(CONFIG_SPARSEMEM_VMEMMAP)
/* SPARSEMEM_VMEMMAP uses half of vmalloc... */
# define VMALLOC_END (RGN_BASE(RGN_GATE) + (1UL << (4*PAGE_SHIFT - 10)))
@@ -234,7 +230,6 @@ extern unsigned long VMALLOC_END;
#else
# define VMALLOC_END (RGN_BASE(RGN_GATE) + (1UL << (4*PAGE_SHIFT - 9)))
#endif
-#endif
/* fs/proc/kcore.c */
#define kc_vaddr_to_offset(v) ((v) - RGN_BASE(RGN_GATE))
--- a/arch/ia64/Kconfig~ia64-drop-marked-broken-discontigmem-and-virtual_mem_map
+++ a/arch/ia64/Kconfig
@@ -286,15 +286,6 @@ config FORCE_CPEI_RETARGET
config ARCH_SELECT_MEMORY_MODEL
def_bool y
-config ARCH_DISCONTIGMEM_ENABLE
- def_bool y
- depends on BROKEN
- help
- Say Y to support efficient handling of discontiguous physical memory,
- for architectures which are either NUMA (Non-Uniform Memory Access)
- or have huge holes in the physical address space for other reasons.
- See <file:Documentation/vm/numa.rst> for more.
-
config ARCH_FLATMEM_ENABLE
def_bool y
@@ -325,22 +316,8 @@ config NODES_SHIFT
MAX_NUMNODES will be 2^(This value).
If in doubt, use the default.
-# VIRTUAL_MEM_MAP and FLAT_NODE_MEM_MAP are functionally equivalent.
-# VIRTUAL_MEM_MAP has been retained for historical reasons.
-config VIRTUAL_MEM_MAP
- bool "Virtual mem map"
- depends on !SPARSEMEM && !FLATMEM
- default y
- help
- Say Y to compile the kernel with support for a virtual mem map.
- This code also only takes effect if a memory hole of greater than
- 1 Gb is found during boot. You must turn this option on if you
- require the DISCONTIGMEM option for your machine. If you are
- unsure, say Y.
-
config HOLES_IN_ZONE
bool
- default y if VIRTUAL_MEM_MAP
config HAVE_ARCH_NODEDATA_EXTENSION
def_bool y
--- a/arch/ia64/kernel/ia64_ksyms.c
+++ /dev/null
@@ -1,12 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-/*
- * Architecture-specific kernel symbols
- */
-
-#if defined(CONFIG_VIRTUAL_MEM_MAP) || defined(CONFIG_DISCONTIGMEM)
-#include <linux/compiler.h>
-#include <linux/export.h>
-#include <linux/memblock.h>
-EXPORT_SYMBOL(min_low_pfn); /* defined by bootmem.c, but not exported by generic code */
-EXPORT_SYMBOL(max_low_pfn); /* defined by bootmem.c, but not exported by generic code */
-#endif
--- a/arch/ia64/kernel/machine_kexec.c~ia64-drop-marked-broken-discontigmem-and-virtual_mem_map
+++ a/arch/ia64/kernel/machine_kexec.c
@@ -143,7 +143,7 @@ void machine_kexec(struct kimage *image)
void arch_crash_save_vmcoreinfo(void)
{
-#if defined(CONFIG_DISCONTIGMEM) || defined(CONFIG_SPARSEMEM)
+#if defined(CONFIG_SPARSEMEM)
VMCOREINFO_SYMBOL(pgdat_list);
VMCOREINFO_LENGTH(pgdat_list, MAX_NUMNODES);
#endif
--- a/arch/ia64/kernel/Makefile~ia64-drop-marked-broken-discontigmem-and-virtual_mem_map
+++ a/arch/ia64/kernel/Makefile
@@ -9,7 +9,7 @@ endif
extra-y := head.o vmlinux.lds
-obj-y := entry.o efi.o efi_stub.o gate-data.o fsys.o ia64_ksyms.o irq.o irq_ia64.o \
+obj-y := entry.o efi.o efi_stub.o gate-data.o fsys.o irq.o irq_ia64.o \
irq_lsapic.o ivt.o pal.o patch.o process.o ptrace.o sal.o \
salinfo.o setup.o signal.o sys_ia64.o time.o traps.o unaligned.o \
unwind.o mca.o mca_asm.o topology.o dma-mapping.o iosapic.o acpi.o \
--- a/arch/ia64/mm/contig.c~ia64-drop-marked-broken-discontigmem-and-virtual_mem_map
+++ a/arch/ia64/mm/contig.c
@@ -153,11 +153,7 @@ find_memory (void)
efi_memmap_walk(find_max_min_low_pfn, NULL);
max_pfn = max_low_pfn;
-#ifdef CONFIG_VIRTUAL_MEM_MAP
- efi_memmap_walk(filter_memory, register_active_ranges);
-#else
memblock_add_node(0, PFN_PHYS(max_low_pfn), 0);
-#endif
find_initrd();
--- a/arch/ia64/mm/discontig.c~ia64-drop-marked-broken-discontigmem-and-virtual_mem_map
+++ a/arch/ia64/mm/discontig.c
@@ -585,25 +585,6 @@ void call_pernode_memory(unsigned long s
}
}
-static void __init virtual_map_init(void)
-{
-#ifdef CONFIG_VIRTUAL_MEM_MAP
- int node;
-
- VMALLOC_END -= PAGE_ALIGN(ALIGN(max_low_pfn, MAX_ORDER_NR_PAGES) *
- sizeof(struct page));
- vmem_map = (struct page *) VMALLOC_END;
- efi_memmap_walk(create_mem_map_page_table, NULL);
- printk("Virtual mem_map starts at 0x%p\n", vmem_map);
-
- for_each_online_node(node) {
- unsigned long pfn_offset = mem_data[node].min_pfn;
-
- NODE_DATA(node)->node_mem_map = vmem_map + pfn_offset;
- }
-#endif
-}
-
/**
* paging_init - setup page tables
*
@@ -619,8 +600,6 @@ void __init paging_init(void)
sparse_init();
- virtual_map_init();
-
memset(max_zone_pfns, 0, sizeof(max_zone_pfns));
max_zone_pfns[ZONE_DMA32] = max_dma;
max_zone_pfns[ZONE_NORMAL] = max_low_pfn;
--- a/arch/ia64/mm/fault.c~ia64-drop-marked-broken-discontigmem-and-virtual_mem_map
+++ a/arch/ia64/mm/fault.c
@@ -84,18 +84,6 @@ ia64_do_page_fault (unsigned long addres
if (faulthandler_disabled() || !mm)
goto no_context;
-#ifdef CONFIG_VIRTUAL_MEM_MAP
- /*
- * If fault is in region 5 and we are in the kernel, we may already
- * have the mmap_lock (pfn_valid macro is called during mmap). There
- * is no vma for region 5 addr's anyway, so skip getting the semaphore
- * and go directly to the exception handling code.
- */
-
- if ((REGION_NUMBER(address) == 5) && !user_mode(regs))
- goto bad_area_no_up;
-#endif
-
/*
* This is to handle the kprobes on user space access instructions
*/
@@ -213,9 +201,6 @@ retry:
bad_area:
mmap_read_unlock(mm);
-#ifdef CONFIG_VIRTUAL_MEM_MAP
- bad_area_no_up:
-#endif
if ((isr & IA64_ISR_SP)
|| ((isr & IA64_ISR_NA) && (isr & IA64_ISR_CODE_MASK) == IA64_ISR_CODE_LFETCH))
{
--- a/arch/ia64/mm/init.c~ia64-drop-marked-broken-discontigmem-and-virtual_mem_map
+++ a/arch/ia64/mm/init.c
@@ -43,13 +43,6 @@ extern void ia64_tlb_init (void);
unsigned long MAX_DMA_ADDRESS = PAGE_OFFSET + 0x100000000UL;
-#ifdef CONFIG_VIRTUAL_MEM_MAP
-unsigned long VMALLOC_END = VMALLOC_END_INIT;
-EXPORT_SYMBOL(VMALLOC_END);
-struct page *vmem_map;
-EXPORT_SYMBOL(vmem_map);
-#endif
-
struct page *zero_page_memmap_ptr; /* map entry for zero page */
EXPORT_SYMBOL(zero_page_memmap_ptr);
@@ -373,212 +366,6 @@ void ia64_mmu_init(void *my_cpu_data)
#endif
}
-#ifdef CONFIG_VIRTUAL_MEM_MAP
-int vmemmap_find_next_valid_pfn(int node, int i)
-{
- unsigned long end_address, hole_next_pfn;
- unsigned long stop_address;
- pg_data_t *pgdat = NODE_DATA(node);
-
- end_address = (unsigned long) &vmem_map[pgdat->node_start_pfn + i];
- end_address = PAGE_ALIGN(end_address);
- stop_address = (unsigned long) &vmem_map[pgdat_end_pfn(pgdat)];
-
- do {
- pgd_t *pgd;
- p4d_t *p4d;
- pud_t *pud;
- pmd_t *pmd;
- pte_t *pte;
-
- pgd = pgd_offset_k(end_address);
- if (pgd_none(*pgd)) {
- end_address += PGDIR_SIZE;
- continue;
- }
-
- p4d = p4d_offset(pgd, end_address);
- if (p4d_none(*p4d)) {
- end_address += P4D_SIZE;
- continue;
- }
-
- pud = pud_offset(p4d, end_address);
- if (pud_none(*pud)) {
- end_address += PUD_SIZE;
- continue;
- }
-
- pmd = pmd_offset(pud, end_address);
- if (pmd_none(*pmd)) {
- end_address += PMD_SIZE;
- continue;
- }
-
- pte = pte_offset_kernel(pmd, end_address);
-retry_pte:
- if (pte_none(*pte)) {
- end_address += PAGE_SIZE;
- pte++;
- if ((end_address < stop_address) &&
- (end_address != ALIGN(end_address, 1UL << PMD_SHIFT)))
- goto retry_pte;
- continue;
- }
- /* Found next valid vmem_map page */
- break;
- } while (end_address < stop_address);
-
- end_address = min(end_address, stop_address);
- end_address = end_address - (unsigned long) vmem_map + sizeof(struct page) - 1;
- hole_next_pfn = end_address / sizeof(struct page);
- return hole_next_pfn - pgdat->node_start_pfn;
-}
-
-int __init create_mem_map_page_table(u64 start, u64 end, void *arg)
-{
- unsigned long address, start_page, end_page;
- struct page *map_start, *map_end;
- int node;
- pgd_t *pgd;
- p4d_t *p4d;
- pud_t *pud;
- pmd_t *pmd;
- pte_t *pte;
-
- map_start = vmem_map + (__pa(start) >> PAGE_SHIFT);
- map_end = vmem_map + (__pa(end) >> PAGE_SHIFT);
-
- start_page = (unsigned long) map_start & PAGE_MASK;
- end_page = PAGE_ALIGN((unsigned long) map_end);
- node = paddr_to_nid(__pa(start));
-
- for (address = start_page; address < end_page; address += PAGE_SIZE) {
- pgd = pgd_offset_k(address);
- if (pgd_none(*pgd)) {
- p4d = memblock_alloc_node(PAGE_SIZE, PAGE_SIZE, node);
- if (!p4d)
- goto err_alloc;
- pgd_populate(&init_mm, pgd, p4d);
- }
- p4d = p4d_offset(pgd, address);
-
- if (p4d_none(*p4d)) {
- pud = memblock_alloc_node(PAGE_SIZE, PAGE_SIZE, node);
- if (!pud)
- goto err_alloc;
- p4d_populate(&init_mm, p4d, pud);
- }
- pud = pud_offset(p4d, address);
-
- if (pud_none(*pud)) {
- pmd = memblock_alloc_node(PAGE_SIZE, PAGE_SIZE, node);
- if (!pmd)
- goto err_alloc;
- pud_populate(&init_mm, pud, pmd);
- }
- pmd = pmd_offset(pud, address);
-
- if (pmd_none(*pmd)) {
- pte = memblock_alloc_node(PAGE_SIZE, PAGE_SIZE, node);
- if (!pte)
- goto err_alloc;
- pmd_populate_kernel(&init_mm, pmd, pte);
- }
- pte = pte_offset_kernel(pmd, address);
-
- if (pte_none(*pte)) {
- void *page = memblock_alloc_node(PAGE_SIZE, PAGE_SIZE,
- node);
- if (!page)
- goto err_alloc;
- set_pte(pte, pfn_pte(__pa(page) >> PAGE_SHIFT,
- PAGE_KERNEL));
- }
- }
- return 0;
-
-err_alloc:
- panic("%s: Failed to allocate %lu bytes align=0x%lx nid=%d\n",
- __func__, PAGE_SIZE, PAGE_SIZE, node);
- return -ENOMEM;
-}
-
-struct memmap_init_callback_data {
- struct page *start;
- struct page *end;
- int nid;
- unsigned long zone;
-};
-
-static int __meminit
-virtual_memmap_init(u64 start, u64 end, void *arg)
-{
- struct memmap_init_callback_data *args;
- struct page *map_start, *map_end;
-
- args = (struct memmap_init_callback_data *) arg;
- map_start = vmem_map + (__pa(start) >> PAGE_SHIFT);
- map_end = vmem_map + (__pa(end) >> PAGE_SHIFT);
-
- if (map_start < args->start)
- map_start = args->start;
- if (map_end > args->end)
- map_end = args->end;
-
- /*
- * We have to initialize "out of bounds" struct page elements that fit completely
- * on the same pages that were allocated for the "in bounds" elements because they
- * may be referenced later (and found to be "reserved").
- */
- map_start -= ((unsigned long) map_start & (PAGE_SIZE - 1)) / sizeof(struct page);
- map_end += ((PAGE_ALIGN((unsigned long) map_end) - (unsigned long) map_end)
- / sizeof(struct page));
-
- if (map_start < map_end)
- memmap_init_range((unsigned long)(map_end - map_start),
- args->nid, args->zone, page_to_pfn(map_start), page_to_pfn(map_end),
- MEMINIT_EARLY, NULL, MIGRATE_MOVABLE);
- return 0;
-}
-
-void __meminit memmap_init_zone(struct zone *zone)
-{
- int nid = zone_to_nid(zone), zone_id = zone_idx(zone);
- unsigned long start_pfn = zone->zone_start_pfn;
- unsigned long size = zone->spanned_pages;
-
- if (!vmem_map) {
- memmap_init_range(size, nid, zone_id, start_pfn, start_pfn + size,
- MEMINIT_EARLY, NULL, MIGRATE_MOVABLE);
- } else {
- struct page *start;
- struct memmap_init_callback_data args;
-
- start = pfn_to_page(start_pfn);
- args.start = start;
- args.end = start + size;
- args.nid = nid;
- args.zone = zone_id;
-
- efi_memmap_walk(virtual_memmap_init, &args);
- }
-}
-
-int
-ia64_pfn_valid (unsigned long pfn)
-{
- char byte;
- struct page *pg = pfn_to_page(pfn);
-
- return (__get_user(byte, (char __user *) pg) == 0)
- && ((((u64)pg & PAGE_MASK) == (((u64)(pg + 1) - 1) & PAGE_MASK))
- || (__get_user(byte, (char __user *) (pg + 1) - 1) == 0));
-}
-EXPORT_SYMBOL(ia64_pfn_valid);
-
-#endif /* CONFIG_VIRTUAL_MEM_MAP */
-
int __init register_active_ranges(u64 start, u64 len, int nid)
{
u64 end = start + len;
--- a/arch/ia64/mm/Makefile~ia64-drop-marked-broken-discontigmem-and-virtual_mem_map
+++ a/arch/ia64/mm/Makefile
@@ -7,6 +7,5 @@ obj-y := init.o fault.o tlb.o extable.o
obj-$(CONFIG_HUGETLB_PAGE) += hugetlbpage.o
obj-$(CONFIG_NUMA) += numa.o
-obj-$(CONFIG_DISCONTIGMEM) += discontig.o
obj-$(CONFIG_SPARSEMEM) += discontig.o
obj-$(CONFIG_FLATMEM) += contig.o
_
next prev parent reply other threads:[~2021-04-30 5:53 UTC|newest]
Thread overview: 189+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-04-30 5:52 incoming Andrew Morton
2021-04-30 5:53 ` [patch 001/178] arch/ia64/kernel/head.S: remove duplicate include Andrew Morton
2021-04-30 5:53 ` [patch 002/178] arch/ia64/kernel/fsys.S: fix typos Andrew Morton
2021-04-30 5:53 ` [patch 003/178] arch/ia64/include/asm/pgtable.h: minor typo fixes Andrew Morton
2021-04-30 5:53 ` [patch 004/178] ia64: ensure proper NUMA distance and possible map initialization Andrew Morton
2021-04-30 5:53 ` [patch 005/178] ia64: drop unused IA64_FW_EMU ifdef Andrew Morton
2021-04-30 5:53 ` [patch 006/178] ia64: simplify code flow around swiotlb init Andrew Morton
2021-04-30 5:53 ` [patch 007/178] ia64: trivial spelling fixes Andrew Morton
2021-04-30 5:53 ` [patch 008/178] ia64: fix EFI_DEBUG build Andrew Morton
2021-04-30 5:53 ` [patch 009/178] ia64: mca: always make IA64_MCA_DEBUG an expression Andrew Morton
2021-04-30 5:53 ` Andrew Morton [this message]
2021-04-30 5:53 ` [patch 011/178] ia64: module: fix symbolizer crash on fdescr Andrew Morton
2021-04-30 5:53 ` [patch 012/178] include/linux/compiler-gcc.h: sparse can do constant folding of __builtin_bswap*() Andrew Morton
2021-04-30 5:53 ` [patch 013/178] scripts/spelling.txt: add entries for recent discoveries Andrew Morton
2021-04-30 5:53 ` [patch 014/178] scripts: a new script for checking duplicate struct declaration Andrew Morton
2021-04-30 5:53 ` [patch 015/178] arch/sh/include/asm/tlb.h: remove duplicate include Andrew Morton
2021-04-30 5:54 ` [patch 016/178] ocfs2: replace DEFINE_SIMPLE_ATTRIBUTE with DEFINE_DEBUGFS_ATTRIBUTE Andrew Morton
2021-04-30 5:54 ` [patch 017/178] ocfs2: map flags directly in flags_to_o2dlm() Andrew Morton
2021-04-30 5:54 ` [patch 018/178] ocfs2: fix a typo Andrew Morton
2021-04-30 5:54 ` [patch 019/178] ocfs2/dlm: remove unused function Andrew Morton
2021-04-30 5:54 ` [patch 020/178] kfifo: fix ternary sign extension bugs Andrew Morton
2021-04-30 5:54 ` [patch 021/178] vfs: fs_parser: clean up kernel-doc warnings Andrew Morton
2021-04-30 5:54 ` [patch 022/178] watchdog: rename __touch_watchdog() to a better descriptive name Andrew Morton
2021-04-30 5:54 ` [patch 023/178] watchdog: explicitly update timestamp when reporting softlockup Andrew Morton
2021-04-30 5:54 ` [patch 024/178] watchdog/softlockup: report the overall time of softlockups Andrew Morton
2021-04-30 5:54 ` [patch 025/178] watchdog/softlockup: remove logic that tried to prevent repeated reports Andrew Morton
2021-04-30 5:54 ` [patch 026/178] watchdog: fix barriers when printing backtraces from all CPUs Andrew Morton
2021-04-30 5:54 ` [patch 027/178] watchdog: cleanup handling of false positives Andrew Morton
2021-04-30 5:54 ` [patch 028/178] mm/slab_common: provide "slab_merge" option for !IS_ENABLED(CONFIG_SLAB_MERGE_DEFAULT) builds Andrew Morton
2021-04-30 5:54 ` [patch 029/178] mm, slub: enable slub_debug static key when creating cache with explicit debug flags Andrew Morton
2021-04-30 5:54 ` [patch 030/178] kunit: add a KUnit test for SLUB debugging functionality Andrew Morton
2021-04-30 8:50 ` Vlastimil Babka
2021-04-30 16:31 ` Linus Torvalds
2021-04-30 5:54 ` [patch 031/178] slub: remove resiliency_test() function Andrew Morton
2021-04-30 5:54 ` [patch 032/178] mm/slub.c: trivial typo fixes Andrew Morton
2021-04-30 5:54 ` [patch 033/178] mm/kmemleak.c: fix a typo Andrew Morton
2021-04-30 5:54 ` [patch 034/178] mm/page_owner: record the timestamp of all pages during free Andrew Morton
2021-04-30 5:55 ` [patch 035/178] mm, page_owner: remove unused parameter in __set_page_owner_handle Andrew Morton
2021-04-30 5:55 ` [patch 036/178] mm: page_owner: fetch backtrace only for tracked pages Andrew Morton
2021-04-30 5:55 ` [patch 037/178] mm: page_owner: use kstrtobool() to parse bool option Andrew Morton
2021-04-30 5:55 ` [patch 038/178] mm: page_owner: detect page_owner recursion via task_struct Andrew Morton
2021-04-30 5:55 ` [patch 039/178] mm: page_poison: print page info when corruption is caught Andrew Morton
2021-04-30 5:55 ` [patch 040/178] mm/memtest: add ARCH_USE_MEMTEST Andrew Morton
2021-04-30 5:55 ` [patch 041/178] mm: provide filemap_range_needs_writeback() helper Andrew Morton
2021-04-30 16:50 ` Linus Torvalds
2021-05-09 19:40 ` Matthew Wilcox
2021-04-30 5:55 ` [patch 042/178] mm: use filemap_range_needs_writeback() for O_DIRECT reads Andrew Morton
2021-04-30 5:55 ` [patch 043/178] iomap: " Andrew Morton
2021-04-30 5:55 ` [patch 044/178] mm/filemap: use filemap_read_page in filemap_fault Andrew Morton
2021-04-30 5:55 ` [patch 045/178] mm/filemap: drop check for truncated page after I/O Andrew Morton
2021-04-30 5:55 ` [patch 046/178] mm: page-writeback: simplify memcg handling in test_clear_page_writeback() Andrew Morton
2021-04-30 5:55 ` [patch 047/178] mm: move page_mapping_file to pagemap.h Andrew Morton
2021-04-30 5:55 ` [patch 048/178] mm/filemap: update stale comment Andrew Morton
2021-04-30 5:55 ` [patch 049/178] mm/msync: exit early when the flags is an MS_ASYNC and start < vm_start Andrew Morton
2021-04-30 5:55 ` [patch 050/178] mm/gup: add compound page list iterator Andrew Morton
2021-04-30 5:55 ` [patch 051/178] mm/gup: decrement head page once for group of subpages Andrew Morton
2021-04-30 5:55 ` [patch 052/178] mm/gup: add a range variant of unpin_user_pages_dirty_lock() Andrew Morton
2021-04-30 5:55 ` [patch 053/178] RDMA/umem: batch page unpin in __ib_umem_release() Andrew Morton
2021-04-30 5:55 ` [patch 054/178] mm: gup: remove FOLL_SPLIT Andrew Morton
2021-04-30 5:55 ` [patch 055/178] mm/memremap.c: fix improper SPDX comment style Andrew Morton
2021-04-30 5:56 ` [patch 056/178] mm: memcontrol: fix kernel stack account Andrew Morton
2021-04-30 5:56 ` [patch 057/178] memcg: cleanup root memcg checks Andrew Morton
2021-04-30 5:56 ` [patch 058/178] memcg: enable memcg oom-kill for __GFP_NOFAIL Andrew Morton
2021-04-30 5:56 ` [patch 059/178] mm: memcontrol: fix cpuhotplug statistics flushing Andrew Morton
2021-04-30 5:56 ` [patch 060/178] mm: memcontrol: kill mem_cgroup_nodeinfo() Andrew Morton
2021-04-30 5:56 ` [patch 061/178] mm: memcontrol: privatize memcg_page_state query functions Andrew Morton
2021-04-30 5:56 ` [patch 062/178] cgroup: rstat: support cgroup1 Andrew Morton
2021-04-30 5:56 ` [patch 063/178] cgroup: rstat: punt root-level optimization to individual controllers Andrew Morton
2021-04-30 5:56 ` [patch 064/178] mm: memcontrol: switch to rstat Andrew Morton
2021-04-30 5:56 ` [patch 065/178] mm: memcontrol: consolidate lruvec stat flushing Andrew Morton
2021-04-30 5:56 ` [patch 066/178] kselftests: cgroup: update kmem test for new vmstat implementation Andrew Morton
2021-04-30 5:56 ` [patch 067/178] memcg: charge before adding to swapcache on swapin Andrew Morton
2021-04-30 5:56 ` [patch 068/178] mm: memcontrol: slab: fix obtain a reference to a freeing memcg Andrew Morton
2021-04-30 5:56 ` [patch 069/178] mm: memcontrol: introduce obj_cgroup_{un}charge_pages Andrew Morton
2021-04-30 5:56 ` [patch 070/178] mm: memcontrol: directly access page->memcg_data in mm/page_alloc.c Andrew Morton
2021-04-30 5:56 ` [patch 071/178] mm: memcontrol: change ug->dummy_page only if memcg changed Andrew Morton
2021-04-30 5:56 ` [patch 072/178] mm: memcontrol: use obj_cgroup APIs to charge kmem pages Andrew Morton
2021-04-30 5:56 ` [patch 073/178] mm: memcontrol: inline __memcg_kmem_{un}charge() into obj_cgroup_{un}charge_pages() Andrew Morton
2021-04-30 5:56 ` [patch 074/178] mm: memcontrol: move PageMemcgKmem to the scope of CONFIG_MEMCG_KMEM Andrew Morton
2021-04-30 5:57 ` [patch 075/178] linux/memcontrol.h: remove duplicate struct declaration Andrew Morton
2021-04-30 5:57 ` [patch 076/178] mm: page_counter: mitigate consequences of a page_counter underflow Andrew Morton
2021-04-30 5:57 ` [patch 077/178] mm/memory.c: do_numa_page(): delete bool "migrated" Andrew Morton
2021-04-30 5:57 ` [patch 078/178] mm/interval_tree: add comments to improve code readability Andrew Morton
2021-04-30 5:57 ` [patch 079/178] x86/vmemmap: drop handling of 4K unaligned vmemmap range Andrew Morton
2021-04-30 5:57 ` [patch 080/178] x86/vmemmap: drop handling of 1GB vmemmap ranges Andrew Morton
2021-04-30 5:57 ` [patch 081/178] x86/vmemmap: handle unpopulated sub-pmd ranges Andrew Morton
2021-04-30 5:57 ` [patch 082/178] x86/vmemmap: optimize for consecutive sections in partial populated PMDs Andrew Morton
2021-04-30 5:57 ` [patch 083/178] mm, tracing: improve rss_stat tracepoint message Andrew Morton
2021-04-30 5:57 ` [patch 084/178] mm: add remap_pfn_range_notrack Andrew Morton
2021-04-30 5:57 ` [patch 085/178] mm: add a io_mapping_map_user helper Andrew Morton
2021-04-30 5:57 ` [patch 086/178] i915: use io_mapping_map_user Andrew Morton
2021-04-30 5:57 ` [patch 087/178] i915: fix remap_io_sg to verify the pgprot Andrew Morton
2021-04-30 5:57 ` [patch 088/178] NUMA balancing: reduce TLB flush via delaying mapping on hint page fault Andrew Morton
2021-04-30 5:57 ` [patch 089/178] mm: extend MREMAP_DONTUNMAP to non-anonymous mappings Andrew Morton
2021-04-30 5:57 ` [patch 090/178] Revert "mremap: don't allow MREMAP_DONTUNMAP on special_mappings and aio" Andrew Morton
2021-04-30 5:57 ` [patch 091/178] selftests: add a MREMAP_DONTUNMAP selftest for shmem Andrew Morton
2021-04-30 5:57 ` [patch 092/178] mm/dmapool: switch from strlcpy to strscpy Andrew Morton
2021-04-30 5:57 ` [patch 093/178] mm/sparse: add the missing sparse_buffer_fini() in error branch Andrew Morton
2021-04-30 5:58 ` [patch 094/178] samples/vfio-mdev/mdpy: use remap_vmalloc_range Andrew Morton
2021-04-30 5:58 ` [patch 095/178] mm: unexport remap_vmalloc_range_partial Andrew Morton
2021-04-30 5:58 ` [patch 096/178] mm/vmalloc: use rb_tree instead of list for vread() lookups Andrew Morton
2021-04-30 5:58 ` [patch 097/178] ARM: mm: add missing pud_page define to 2-level page tables Andrew Morton
2021-04-30 5:58 ` [patch 098/178] mm/vmalloc: fix HUGE_VMAP regression by enabling huge pages in vmalloc_to_page Andrew Morton
2021-04-30 5:58 ` [patch 099/178] mm: apply_to_pte_range warn and fail if a large pte is encountered Andrew Morton
2021-04-30 5:58 ` [patch 100/178] mm/vmalloc: rename vmap_*_range vmap_pages_*_range Andrew Morton
2021-04-30 5:58 ` [patch 101/178] mm/ioremap: rename ioremap_*_range to vmap_*_range Andrew Morton
2021-04-30 5:58 ` [patch 102/178] mm: HUGE_VMAP arch support cleanup Andrew Morton
2021-04-30 5:58 ` [patch 103/178] powerpc: inline huge vmap supported functions Andrew Morton
2021-04-30 5:58 ` [patch 104/178] arm64: " Andrew Morton
2021-04-30 5:58 ` [patch 105/178] x86: " Andrew Morton
2021-04-30 5:58 ` [patch 106/178] mm/vmalloc: provide fallback arch huge vmap support functions Andrew Morton
2021-04-30 5:58 ` [patch 107/178] mm: move vmap_range from mm/ioremap.c to mm/vmalloc.c Andrew Morton
2021-04-30 5:58 ` [patch 108/178] mm/vmalloc: add vmap_range_noflush variant Andrew Morton
2021-04-30 5:58 ` [patch 109/178] mm/vmalloc: hugepage vmalloc mappings Andrew Morton
2021-04-30 5:58 ` [patch 110/178] mm/vmalloc: remove map_kernel_range Andrew Morton
2021-04-30 5:58 ` [patch 111/178] kernel/dma: remove unnecessary unmap_kernel_range Andrew Morton
2021-04-30 5:58 ` [patch 112/178] powerpc/xive: " Andrew Morton
2021-04-30 5:59 ` [patch 113/178] mm/vmalloc: remove unmap_kernel_range Andrew Morton
2021-04-30 5:59 ` [patch 114/178] mm/vmalloc: improve allocation failure error messages Andrew Morton
2021-04-30 5:59 ` [patch 115/178] mm: vmalloc: prevent use after free in _vm_unmap_aliases Andrew Morton
2021-04-30 5:59 ` [patch 116/178] lib/test_vmalloc.c: remove two kvfree_rcu() tests Andrew Morton
2021-04-30 5:59 ` [patch 117/178] lib/test_vmalloc.c: add a new 'nr_threads' parameter Andrew Morton
2021-04-30 5:59 ` [patch 118/178] vm/test_vmalloc.sh: adapt for updated driver interface Andrew Morton
2021-04-30 5:59 ` [patch 119/178] mm/vmalloc: refactor the preloading loagic Andrew Morton
2021-04-30 5:59 ` [patch 120/178] mm/vmalloc: remove an empty line Andrew Morton
2021-04-30 5:59 ` [patch 121/178] mm/doc: fix fault_flag_allow_retry_first kerneldoc Andrew Morton
2021-04-30 5:59 ` [patch 122/178] mm/doc: fix page_maybe_dma_pinned kerneldoc Andrew Morton
2021-04-30 5:59 ` [patch 123/178] mm/doc: turn fault flags into an enum Andrew Morton
2021-04-30 5:59 ` [patch 124/178] mm/doc: add mm.h and mm_types.h to the mm-api document Andrew Morton
2021-04-30 5:59 ` [patch 125/178] MAINTAINERS: assign pagewalk.h to MEMORY MANAGEMENT Andrew Morton
2021-04-30 5:59 ` [patch 126/178] pagewalk: prefix struct kernel-doc descriptions Andrew Morton
2021-04-30 5:59 ` [patch 127/178] mm/kasan: switch from strlcpy to strscpy Andrew Morton
2021-04-30 5:59 ` [patch 128/178] kasan: fix kasan_byte_accessible() to be consistent with actual checks Andrew Morton
2021-04-30 5:59 ` [patch 129/178] kasan: initialize shadow to TAG_INVALID for SW_TAGS Andrew Morton
2021-04-30 5:59 ` [patch 130/178] mm, kasan: don't poison boot memory with tag-based modes Andrew Morton
2021-04-30 5:59 ` [patch 131/178] arm64: kasan: allow to init memory when setting tags Andrew Morton
2021-04-30 5:59 ` [patch 132/178] kasan: init memory in kasan_(un)poison for HW_TAGS Andrew Morton
2021-04-30 6:00 ` [patch 133/178] kasan, mm: integrate page_alloc init with HW_TAGS Andrew Morton
2021-04-30 6:00 ` [patch 134/178] kasan, mm: integrate slab init_on_alloc " Andrew Morton
2021-04-30 6:00 ` [patch 135/178] kasan, mm: integrate slab init_on_free " Andrew Morton
2021-04-30 6:00 ` [patch 136/178] kasan: docs: clean up sections Andrew Morton
2021-04-30 6:00 ` [patch 137/178] kasan: docs: update overview section Andrew Morton
2021-04-30 6:00 ` [patch 138/178] kasan: docs: update usage section Andrew Morton
2021-04-30 6:00 ` [patch 139/178] kasan: docs: update error reports section Andrew Morton
2021-04-30 6:00 ` [patch 140/178] kasan: docs: update boot parameters section Andrew Morton
2021-04-30 6:00 ` [patch 141/178] kasan: docs: update GENERIC implementation details section Andrew Morton
2021-04-30 6:00 ` [patch 142/178] kasan: docs: update SW_TAGS " Andrew Morton
2021-04-30 6:00 ` [patch 143/178] kasan: docs: update HW_TAGS " Andrew Morton
2021-04-30 6:00 ` [patch 144/178] kasan: docs: update shadow memory section Andrew Morton
2021-04-30 6:00 ` [patch 145/178] kasan: docs: update ignoring accesses section Andrew Morton
2021-04-30 6:00 ` [patch 146/178] kasan: docs: update tests section Andrew Morton
2021-04-30 6:00 ` [patch 147/178] kasan: record task_work_add() call stack Andrew Morton
2021-04-30 6:00 ` [patch 148/178] kasan: detect false-positives in tests Andrew Morton
2021-04-30 18:32 ` Linus Torvalds
2021-05-02 18:04 ` Andrew Morton
2021-05-02 19:08 ` Linus Torvalds
2021-05-03 18:44 ` Andrew Morton
2021-04-30 6:00 ` [patch 149/178] irq_work: record irq_work_queue() call stack Andrew Morton
2021-04-30 6:00 ` [patch 150/178] mm: move mem_init_print_info() into mm_init() Andrew Morton
2021-04-30 6:00 ` [patch 151/178] mm/page_alloc: drop pr_info_ratelimited() in alloc_contig_range() Andrew Morton
2021-04-30 6:01 ` [patch 152/178] mm: remove lru_add_drain_all in alloc_contig_range Andrew Morton
2021-04-30 6:01 ` [patch 153/178] include/linux/page-flags-layout.h: correctly determine LAST_CPUPID_WIDTH Andrew Morton
2021-04-30 6:01 ` [patch 154/178] include/linux/page-flags-layout.h: cleanups Andrew Morton
2021-04-30 6:01 ` [patch 155/178] mm/page_alloc: rename alloc_mask to alloc_gfp Andrew Morton
2021-04-30 6:01 ` [patch 156/178] mm/page_alloc: rename gfp_mask to gfp Andrew Morton
2021-04-30 6:01 ` [patch 157/178] mm/page_alloc: combine __alloc_pages and __alloc_pages_nodemask Andrew Morton
2021-04-30 6:01 ` [patch 158/178] mm/mempolicy: rename alloc_pages_current to alloc_pages Andrew Morton
2021-04-30 6:01 ` [patch 159/178] mm/mempolicy: rewrite alloc_pages documentation Andrew Morton
2021-04-30 6:01 ` [patch 160/178] mm/mempolicy: rewrite alloc_pages_vma documentation Andrew Morton
2021-04-30 6:01 ` [patch 161/178] mm/mempolicy: fix mpol_misplaced kernel-doc Andrew Morton
2021-04-30 6:01 ` [patch 162/178] mm: page_alloc: dump migrate-failed pages Andrew Morton
2021-05-02 3:10 ` jim.cromie
2021-04-30 6:01 ` [patch 163/178] mm/Kconfig: remove default DISCONTIGMEM_MANUAL Andrew Morton
2021-04-30 6:01 ` [patch 164/178] mm, page_alloc: avoid page_to_pfn() in move_freepages() Andrew Morton
2021-04-30 6:01 ` [patch 165/178] mm/page_alloc: duplicate include linux/vmalloc.h Andrew Morton
2021-04-30 6:01 ` [patch 166/178] mm/page_alloc: rename alloced to allocated Andrew Morton
2021-04-30 6:01 ` [patch 167/178] mm/page_alloc: add a bulk page allocator Andrew Morton
2021-04-30 6:01 ` [patch 168/178] mm/page_alloc: add an array-based interface to the " Andrew Morton
2021-04-30 6:01 ` [patch 169/178] mm/page_alloc: optimize code layout for __alloc_pages_bulk Andrew Morton
2021-04-30 6:01 ` [patch 170/178] mm/page_alloc: inline __rmqueue_pcplist Andrew Morton
2021-04-30 6:01 ` [patch 171/178] SUNRPC: set rq_page_end differently Andrew Morton
2021-04-30 6:02 ` [patch 172/178] SUNRPC: refresh rq_pages using a bulk page allocator Andrew Morton
2021-04-30 6:02 ` [patch 173/178] net: page_pool: refactor dma_map into own function page_pool_dma_map Andrew Morton
2021-04-30 6:02 ` [patch 174/178] net: page_pool: use alloc_pages_bulk in refill code path Andrew Morton
2021-04-30 6:02 ` [patch 175/178] mm: page_alloc: ignore init_on_free=1 for debug_pagealloc=1 Andrew Morton
2021-04-30 6:02 ` [patch 176/178] mm/page_alloc: redundant definition variables of pfn in for loop Andrew Morton
2021-04-30 17:10 ` Linus Torvalds
2021-04-30 6:02 ` [patch 177/178] mm/mmzone.h: fix existing kernel-doc comments and link them to core-api Andrew Morton
2021-04-30 6:02 ` [patch 178/178] mm/memory-failure: unnecessary amount of unmapping Andrew Morton
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20210430055345.L0PJxk-So%akpm@linux-foundation.org \
--to=akpm@linux-foundation.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=mm-commits@vger.kernel.org \
--cc=slyfox@gentoo.org \
--cc=torvalds@linux-foundation.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).