mmotm 2021-08-05-19-46 uploaded

7 messages, 3 authors, 2021-08-07 · open the first message on its own page

mmotm 2021-08-05-19-46 uploaded

From: akpm@linux-foundation.org
Date: 2021-08-06 02:46:51

The mm-of-the-moment snapshot 2021-08-05-19-46 has been uploaded to

   https://www.ozlabs.org/~akpm/mmotm/

mmotm-readme.txt says

README for mm-of-the-moment:

https://www.ozlabs.org/~akpm/mmotm/

This is a snapshot of my -mm patch queue.  Uploaded at random hopefully
more than once a week.

You will need quilt to apply these patches to the latest Linus release (5.x
or 5.x-rcY).  The series file is in broken-out.tar.gz and is duplicated in
https://ozlabs.org/~akpm/mmotm/series

The file broken-out.tar.gz contains two datestamp files: .DATE and
.DATE-yyyy-mm-dd-hh-mm-ss.  Both contain the string yyyy-mm-dd-hh-mm-ss,
followed by the base kernel version against which this patch series is to
be applied.

This tree is partially included in linux-next.  To see which patches are
included in linux-next, consult the `series' file.  Only the patches
within the #NEXT_PATCHES_START/#NEXT_PATCHES_END markers are included in
linux-next.


A full copy of the full kernel tree with the linux-next and mmotm patches
already applied is available through git within an hour of the mmotm
release.  Individual mmotm releases are tagged.  The master branch always
points to the latest release, so it's constantly rebasing.

	https://github.com/hnaz/linux-mm

The directory https://www.ozlabs.org/~akpm/mmots/ (mm-of-the-second)
contains daily snapshots of the -mm tree.  It is updated more frequently
than mmotm, and is untested.

A git copy of this tree is also available at

	https://github.com/hnaz/linux-mm



This mmotm tree contains the following patches against 5.14-rc4:
(patches marked "*" will be included in linux-next)

  origin.patch
* procfs-prevent-unpriveleged-processes-accessing-fdinfo-dir.patch
* slub-fix-kmalloc_pagealloc_invalid_free-unit-test.patch
* mm-slub-fix-slub_debug-disablement-for-list-of-slabs.patch
* mm-madvise-report-sigbus-as-efault-for-madv_populate_readwrite.patch
* mm-memcg-fix-incorrect-flushing-of-lruvec-data-in-obj_stock.patch
* lib-use-pfn_phys-in-devmem_is_allowed.patch
* shmem_swapin_page-fix-error-processing-for-get_swap_device.patch
* kasan-kmemleak-reset-tags-when-scanning-block.patch
* kasan-slub-reset-tag-when-printing-address.patch
* proc-kpageflags-prevent-an-integer-overflow-in-stable_page_flags.patch
* proc-kpageflags-do-not-use-uninitialized-struct-pages.patch
* init-move-usermodehelper_enable-to-populate_rootfs.patch
* ocfs2-remove-an-unnecessary-condition.patch
* ocfs2-reflink-deadlock-when-clone-file-to-the-same-directory-simultaneously.patch
* ocfs2-clear-links-count-in-ocfs2_mknod-if-an-error-occurs.patch
* ocfs2-fix-ocfs2-corrupt-when-iputting-an-inode.patch
* lib-fix-bugoncocci-warnings.patch
  mm.patch
* mm-move-kvmalloc-related-functions-to-slabh.patch
* mm-slub-dont-call-flush_all-from-slab_debug_trace_open.patch
* mm-slub-allocate-private-object-map-for-debugfs-listings.patch
* mm-slub-allocate-private-object-map-for-validate_slab_cache.patch
* mm-slub-dont-disable-irq-for-debug_check_no_locks_freed.patch
* mm-slub-remove-redundant-unfreeze_partials-from-put_cpu_partial.patch
* mm-slub-unify-cmpxchg_double_slab-and-__cmpxchg_double_slab.patch
* mm-slub-extract-get_partial-from-new_slab_objects.patch
* mm-slub-dissolve-new_slab_objects-into-___slab_alloc.patch
* mm-slub-return-slab-page-from-get_partial-and-set-c-page-afterwards.patch
* mm-slub-restructure-new-page-checks-in-___slab_alloc.patch
* mm-slub-simplify-kmem_cache_cpu-and-tid-setup.patch
* mm-slub-move-disabling-enabling-irqs-to-___slab_alloc.patch
* mm-slub-do-initial-checks-in-___slab_alloc-with-irqs-enabled.patch
* mm-slub-move-disabling-irqs-closer-to-get_partial-in-___slab_alloc.patch
* mm-slub-restore-irqs-around-calling-new_slab.patch
* mm-slub-validate-slab-from-partial-list-or-page-allocator-before-making-it-cpu-slab.patch
* mm-slub-check-new-pages-with-restored-irqs.patch
* mm-slub-stop-disabling-irqs-around-get_partial.patch
* mm-slub-move-reset-of-c-page-and-freelist-out-of-deactivate_slab.patch
* mm-slub-make-locking-in-deactivate_slab-irq-safe.patch
* mm-slub-call-deactivate_slab-without-disabling-irqs.patch
* mm-slub-move-irq-control-into-unfreeze_partials.patch
* mm-slub-discard-slabs-in-unfreeze_partials-without-irqs-disabled.patch
* mm-slub-detach-whole-partial-list-at-once-in-unfreeze_partials.patch
* mm-slub-separate-detaching-of-partial-list-in-unfreeze_partials-from-unfreezing.patch
* mm-slub-only-disable-irq-with-spin_lock-in-__unfreeze_partials.patch
* mm-slub-dont-disable-irqs-in-slub_cpu_dead.patch
* mm-slab-make-flush_slab-possible-to-call-with-irqs-enabled.patch
* mm-slub-move-flush_cpu_slab-invocations-__free_slab-invocations-out-of-irq-context.patch
* mm-slub-make-object_map_lock-a-raw_spinlock_t.patch
* mm-slub-optionally-save-restore-irqs-in-slab_lock.patch
* mm-slub-make-slab_lock-disable-irqs-with-preempt_rt.patch
* mm-slub-protect-put_cpu_partial-with-disabled-irqs-instead-of-cmpxchg.patch
* mm-slub-use-migrate_disable-on-preempt_rt.patch
* mm-slub-convert-kmem_cpu_slab-protection-to-local_lock.patch
* mm-debug_vm_pgtable-introduce-struct-pgtable_debug_args.patch
* mm-debug_vm_pgtable-use-struct-pgtable_debug_args-in-basic-tests.patch
* mm-debug_vm_pgtable-use-struct-pgtable_debug_args-in-leaf-and-savewrite-tests.patch
* mm-debug_vm_pgtable-use-struct-pgtable_debug_args-in-protnone-and-devmap-tests.patch
* mm-debug_vm_pgtable-use-struct-pgtable_debug_args-in-soft_dirty-and-swap-tests.patch
* mm-debug_vm_pgtable-use-struct-pgtable_debug_args-in-migration-and-thp-tests.patch
* mm-debug_vm_pgtable-use-struct-pgtable_debug_args-in-pte-modifying-tests.patch
* mm-debug_vm_pgtable-use-struct-pgtable_debug_args-in-pmd-modifying-tests.patch
* mm-debug_vm_pgtable-use-struct-pgtable_debug_args-in-pud-modifying-tests.patch
* mm-debug_vm_pgtable-use-struct-pgtable_debug_args-in-pgd-and-p4d-modifying-tests.patch
* mm-debug_vm_pgtable-remove-unused-code.patch
* mm-debug_vm_pgtable-fix-corrupted-page-flag.patch
* mm-report-a-more-useful-address-for-reclaim-acquisition.patch
* mm-mark-idle-page-tracking-as-broken.patch
* writeback-track-number-of-inodes-under-writeback.patch
* writeback-reliably-update-bandwidth-estimation.patch
* writeback-fix-bandwidth-estimate-for-spiky-workload.patch
* writeback-fix-bandwidth-estimate-for-spiky-workload-fix.patch
* writeback-rename-domain_update_bandwidth.patch
* writeback-use-read_once-for-unlocked-reads-of-writeback-stats.patch
* mm-remove-irqsave-restore-locking-from-contexts-with-irqs-enabled.patch
* fs-drop_caches-fix-skipping-over-shadow-cache-inodes.patch
* fs-inode-count-invalidated-shadow-pages-in-pginodesteal.patch
* vfs-keep-inodes-with-page-cache-off-the-inode-shrinker-lru.patch
* writeback-memcg-simplify-cgroup_writeback_by_id.patch
* fs-mm-fix-race-in-unlinking-swapfile.patch
* mm-delete-unused-get_kernel_page.patch
* mm-memcg-add-mem_cgroup_disabled-checks-in-vmpressure-and-swap-related-functions.patch
* mm-memcg-inline-mem_cgroup_charge-uncharge-to-improve-disabled-memcg-config.patch
* mm-memcg-inline-swap-related-functions-to-improve-disabled-memcg-config.patch
* memcg-enable-accounting-for-pids-in-nested-pid-namespaces.patch
* memcg-switch-lruvec-stats-to-rstat.patch
* memcg-infrastructure-to-flush-memcg-stats.patch
* memcg-infrastructure-to-flush-memcg-stats-v5.patch
* memcg-charge-fs_context-and-legacy_fs_context.patch
* memcg-enable-accounting-for-mnt_cache-entries.patch
* memcg-enable-accounting-for-pollfd-and-select-bits-arrays.patch
* memcg-enable-accounting-for-file-lock-caches.patch
* memcg-enable-accounting-for-fasync_cache.patch
* memcg-enable-accounting-for-new-namesapces-and-struct-nsproxy.patch
* memcg-enable-accounting-of-ipc-resources.patch
* memcg-enable-accounting-for-signals.patch
* memcg-enable-accounting-for-posix_timers_cache-slab.patch
* memcg-enable-accounting-for-ldt_struct-objects.patch
* memcg-cleanup-racy-sum-avoidance-code.patch
* memcg-replace-in_interrupt-by-in_task-in-active_memcg.patch
* mm-memcontrol-set-the-correct-memcg-swappiness-restriction.patch
* lazy-tlb-introduce-lazy-mm-refcount-helper-functions.patch
* lazy-tlb-introduce-lazy-mm-refcount-helper-functions-fix.patch
* lazy-tlb-allow-lazy-tlb-mm-refcounting-to-be-configurable.patch
* lazy-tlb-allow-lazy-tlb-mm-refcounting-to-be-configurable-fix.patch
* lazy-tlb-allow-lazy-tlb-mm-refcounting-to-be-configurable-fix-2.patch
* lazy-tlb-shoot-lazies-a-non-refcounting-lazy-tlb-option.patch
* lazy-tlb-shoot-lazies-a-non-refcounting-lazy-tlb-option-fix.patch
* powerpc-64s-enable-mmu_lazy_tlb_shootdown.patch
* mmc-jz4740-remove-the-flush_kernel_dcache_page-call-in-jz4740_mmc_read_data.patch
* mmc-mmc_spi-replace-flush_kernel_dcache_page-with-flush_dcache_page.patch
* scatterlist-replace-flush_kernel_dcache_page-with-flush_dcache_page.patch
* mm-remove-flush_kernel_dcache_page.patch
* mmdo_huge_pmd_numa_page-remove-unnecessary-tlb-flushing-code.patch
* mm-change-fault_in_pages_-to-have-an-unsigned-size-parameter.patch
* add-mmap_assert_locked-annotations-to-find_vma.patch
* add-mmap_assert_locked-annotations-to-find_vma-fix.patch
* mm-mremap-fix-memory-account-on-do_munmap-failure.patch
* mm-mremap-dont-account-pages-in-vma_to_resize.patch
* mm-sparse-pass-section_nr-to-section_mark_present.patch
* mm-sparse-pass-section_nr-to-find_memory_block.patch
* mm-sparse-remove-__section_nr-function.patch
* mm-sparse-set-section_nid_shift-to-6.patch
* avoid-a-warning-in-sparse-memory-support.patch
* mm-sparse-clarify-pgdat_to_phys.patch
* mm-vmalloc-use-batched-page-requests-in-bulk-allocator.patch
* mm-vmalloc-remove-gfpflags_allow_blocking-check.patch
* lib-test_vmallocc-add-a-new-nr_pages-parameter.patch
* mm-vmalloc-fix-wrong-behavior-in-vread.patch
* mm-kasan-move-kasanfault-to-mm-kasan-reportc.patch
* mm-page_alloc-always-initialize-memory-map-for-the-holes.patch
* mm-page_alloc-always-initialize-memory-map-for-the-holes-fix.patch
* microblaze-simplify-pte_alloc_one_kernel.patch
* mm-introduce-memmap_alloc-to-unify-memory-map-allocation.patch
* memblock-stop-poisoning-raw-allocations.patch
* fix-zone_id-may-be-used-uninitialized-in-this-function-warning.patch
* mm-page_alloc-make-alloc_node_mem_map-__init-rather-than-__ref.patch
* hugetlb-simplify-prep_compound_gigantic_page-ref-count-racing-code.patch
* hugetlb-drop-ref-count-earlier-after-page-allocation.patch
* hugetlb-before-freeing-hugetlb-page-set-dtor-to-appropriate-value.patch
* mm-numa-automatically-generate-node-migration-order.patch
* mm-migrate-update-node-demotion-order-on-hotplug-events.patch
* mm-migrate-enable-returning-precise-migrate_pages-success-count.patch
* mm-migrate-demote-pages-during-reclaim.patch
* mm-migrate-demote-pages-during-reclaim-v11.patch
* mm-vmscan-add-page-demotion-counter.patch
* mm-vmscan-add-helper-for-querying-ability-to-age-anonymous-pages.patch
* mm-vmscan-add-helper-for-querying-ability-to-age-anonymous-pages-v11.patch
* mm-vmscan-consider-anonymous-pages-without-swap.patch
* mm-vmscan-consider-anonymous-pages-without-swap-v11.patch
* mm-vmscan-never-demote-for-memcg-reclaim.patch
* mm-migrate-add-sysfs-interface-to-enable-reclaim-migration.patch
* mm-vmpressure-replace-vmpressure_to_css-with-vmpressure_to_memcg.patch
* mm-vmscan-remove-the-pagedirty-check-after-madv_free-pages-are-page_ref_freezed.patch
* mm-vmscan-remove-misleading-setting-to-sc-priority.patch
* mm-vmscan-remove-unneeded-return-value-of-kswapd_run.patch
* mm-vmscan-add-else-to-remove-check_pending-label.patch
* mm-compaction-optimize-proactive-compaction-deferrals.patch
* mm-compaction-optimize-proactive-compaction-deferrals-fix.patch
* mm-compaction-support-triggering-of-proactive-compaction-by-user.patch
* mm-compaction-support-triggering-of-proactive-compaction-by-user-fix.patch
* mm-mempolicy-convert-from-atomic_t-to-refcount_t-on-mempolicy-refcnt.patch
* mm-mempolicy-convert-from-atomic_t-to-refcount_t-on-mempolicy-refcnt-fix.patch
* mm-mempolicy-use-readable-numa_no_node-macro-instead-of-magic-numer.patch
* mm-mempolicy-add-mpol_preferred_many-for-multiple-preferred-nodes.patch
* mm-memplicy-add-page-allocation-function-for-mpol_preferred_many-policy.patch
* mm-hugetlb-add-support-for-mempolicy-mpol_preferred_many.patch
* mm-mempolicy-advertise-new-mpol_preferred_many.patch
* mm-mempolicy-unify-the-create-func-for-bind-interleave-prefer-many-policies.patch
* memblock-make-memblock_find_in_range-method-private.patch
* oom_kill-oom_score_adj-broken-for-processes-with-small-memory-usage.patch
* mm-thp-make-alloc_split_ptlocks-dependent-on-use_split_pte_ptlocks.patch
* selftests-vm-add-ksm-merge-test.patch
* selftests-vm-add-ksm-unmerge-test.patch
* selftests-vm-add-ksm-zero-page-merging-test.patch
* selftests-vm-add-ksm-merging-across-nodes-test.patch
* selftests-vm-add-ksm-merging-time-test.patch
* selftests-vm-add-cow-time-test-for-ksm-pages.patch
* mm-vmstat-correct-some-wrong-comments.patch
* mm-vmstat-simplify-the-array-size-calculation.patch
* mm-vmstat-remove-unneeded-return-value.patch
* preempt-provide-preempt__nort-variants.patch
* mm-madvise-add-madv_willneed-to-process_madvise.patch
* memory-hotplugrst-remove-locking-details-from-admin-guide.patch
* memory-hotplugrst-complete-admin-guide-overhaul.patch
* mm-remove-pfn_valid_within-and-config_holes_in_zone.patch
* mm-memory_hotplug-cleanup-after-removal-of-pfn_valid_within.patch
* mm-memory_hotplug-use-unsigned-long-for-pfn-in-zone_for_pfn_range.patch
* mm-memory_hotplug-remove-nid-parameter-from-arch_remove_memory.patch
* mm-memory_hotplug-remove-nid-parameter-from-remove_memory-and-friends.patch
* acpi-memhotplug-memory-resources-cannot-be-enabled-yet.patch
* mm-track-present-early-pages-per-zone.patch
* mm-memory_hotplug-introduce-auto-movable-online-policy.patch
* drivers-base-memory-introduce-memory-groups-to-logically-group-memory-blocks.patch
* mm-memory_hotplug-track-present-pages-in-memory-groups.patch
* acpi-memhotplug-use-a-single-static-memory-group-for-a-single-memory-device.patch
* dax-kmem-use-a-single-static-memory-group-for-a-single-probed-unit.patch
* virtio-mem-use-a-single-dynamic-memory-group-for-a-single-virtio-mem-device.patch
* mm-memory_hotplug-memory-group-aware-auto-movable-online-policy.patch
* mm-memory_hotplug-memory-group-aware-auto-movable-online-policy-fix.patch
* mm-memory_hotplug-improved-dynamic-memory-group-aware-auto-movable-online-policy.patch
* mm-rmap-convert-from-atomic_t-to-refcount_t-on-anon_vma-refcount.patch
* mm-zsmallocc-close-race-window-between-zs_pool_dec_isolated-and-zs_unregister_migration.patch
* mm-zsmallocc-combine-two-atomic-ops-in-zs_pool_dec_isolated.patch
* mm-highmem-remove-deprecated-kmap_atomic.patch
* kfence-show-cpu-and-timestamp-in-alloc-free-info.patch
* mm-introduce-data-access-monitor-damon.patch
* mm-damon-core-implement-region-based-sampling.patch
* mm-damon-adaptively-adjust-regions.patch
* mm-idle_page_tracking-make-pg_idle-reusable.patch
* mm-damon-implement-primitives-for-the-virtual-memory-address-spaces.patch
* mm-damon-implement-primitives-for-the-virtual-memory-address-spaces-fix.patch
* mm-damon-add-a-tracepoint.patch
* mm-damon-implement-a-debugfs-based-user-space-interface.patch
* mm-damon-implement-a-debugfs-based-user-space-interface-fix.patch
* mm-damon-implement-a-debugfs-based-user-space-interface-fix-fix.patch
* mm-damon-dbgfs-export-kdamond-pid-to-the-user-space.patch
* mm-damon-dbgfs-support-multiple-contexts.patch
* documentation-add-documents-for-damon.patch
* mm-damon-add-kunit-tests.patch
* mm-damon-add-user-space-selftests.patch
* maintainers-update-for-damon.patch
* info-task-hung-in-generic_file_write_iter.patch
* info-task-hung-in-generic_file_write-fix.patch
* kernel-hung_taskc-monitor-killed-tasks.patch
* percpu-remove-export-of-pcpu_base_addr.patch
* fs-proc-kcorec-add-mmap-interface.patch
* connector-send-event-on-write-to-proc-comm.patch
* proc-sysctl-make-protected_-world-readable.patch
* arch-kconfig-fix-spelling-mistake-seperate-separate.patch
* once-fix-trivia-typo-not-note.patch
* acct-use-dedicated-helper-to-access-rlimit-values.patch
* math-make-rational-tristate.patch
* math-rational_kunit_test-should-depend-on-rational-instead-of-selecting-it.patch
* lib-string-optimized-memcpy.patch
* lib-string-optimized-memmove.patch
* lib-string-optimized-memset.patch
* lib-test-convert-test_sortc-to-use-kunit.patch
* checkpatch-support-wide-strings.patch
* fs-epoll-use-a-per-cpu-counter-for-users-watches-count.patch
* fs-epoll-use-a-per-cpu-counter-for-users-watches-count-fix.patch
* fs-epoll-use-a-per-cpu-counter-for-users-watches-count-fix-fix.patch
* init-mainc-silence-some-wunused-parameter-warnings.patch
* nilfs2-fix-memory-leak-in-nilfs_sysfs_create_device_group.patch
* nilfs2-fix-null-pointer-in-nilfs_name_attr_release.patch
* nilfs2-fix-memory-leak-in-nilfs_sysfs_create_name_group.patch
* nilfs2-fix-memory-leak-in-nilfs_sysfs_delete_name_group.patch
* nilfs2-fix-memory-leak-in-nilfs_sysfs_create_snapshot_group.patch
* nilfs2-fix-memory-leak-in-nilfs_sysfs_delete_snapshot_group.patch
* hfsplus-fix-out-of-bounds-warnings-in-__hfsplus_setxattr.patch
* log-if-a-core-dump-is-aborted-due-to-changed-file-permissions.patch
* log-if-a-core-dump-is-aborted-due-to-changed-file-permissions-fix.patch
* pid-cleanup-the-stale-comment-mentioning-pidmap_init.patch
* prctl-allow-to-setup-brk-for-et_dyn-executables.patch
* configs-remove-the-obsolete-config_input_polldev.patch
* selftests-memfd-remove-unused-variable.patch
  linux-next.patch
  linux-next-rejects.patch
  linux-next-git-rejects.patch
* scripts-check_extable-fix-typo-in-user-error-message.patch
* kexec-move-locking-into-do_kexec_load.patch
* kexec-avoid-compat_alloc_user_space.patch
* mm-simplify-compat_sys_move_pages.patch
* mm-simplify-compat-numa-syscalls.patch
* mm-simplify-compat-numa-syscalls-fix.patch
* compat-remove-some-compat-entry-points.patch
* arch-remove-compat_alloc_user_space.patch
  make-sure-nobodys-leaking-resources.patch
  releasing-resources-with-children.patch
  mutex-subsystem-synchro-test-module.patch
  kernel-forkc-export-kernel_thread-to-modules.patch
  workaround-for-a-pci-restoring-bug.patch

Re: mmotm 2021-08-05-19-46 uploaded (mm/filemap.c)

From: Randy Dunlap <hidden>
Date: 2021-08-06 05:00:40

On 8/5/21 7:46 PM, akpm@linux-foundation.org wrote:
The mm-of-the-moment snapshot 2021-08-05-19-46 has been uploaded to

    https://www.ozlabs.org/~akpm/mmotm/

mmotm-readme.txt says

README for mm-of-the-moment:

https://www.ozlabs.org/~akpm/mmotm/

This is a snapshot of my -mm patch queue.  Uploaded at random hopefully
more than once a week.

You will need quilt to apply these patches to the latest Linus release (5.x
or 5.x-rcY).  The series file is in broken-out.tar.gz and is duplicated in
https://ozlabs.org/~akpm/mmotm/series

The file broken-out.tar.gz contains two datestamp files: .DATE and
.DATE-yyyy-mm-dd-hh-mm-ss.  Both contain the string yyyy-mm-dd-hh-mm-ss,
followed by the base kernel version against which this patch series is to
be applied.
on i386, I am seeing lots of build errors due to references to
some PAGE_ flags that are only defined for 64BIT:

In file included from ../mm/filemap.c:44:0:
../include/linux/page_idle.h: In function ‘folio_test_young’:
../include/linux/page_idle.h:25:18: error: ‘PAGE_EXT_YOUNG’ undeclared (first use in this function); did you mean ‘PAGEOUTRUN’?
   return test_bit(PAGE_EXT_YOUNG, &page_ext->flags);
                   ^~~~~~~~~~~~~~
                   PAGEOUTRUN
../include/linux/page_idle.h:25:18: note: each undeclared identifier is reported only once for each function it appears in
../include/linux/page_idle.h:25:43: error: dereferencing pointer to incomplete type ‘struct page_ext’
   return test_bit(PAGE_EXT_YOUNG, &page_ext->flags);
                                            ^~
../include/linux/page_idle.h: In function ‘folio_set_young’:
../include/linux/page_idle.h:35:10: error: ‘PAGE_EXT_YOUNG’ undeclared (first use in this function); did you mean ‘PAGEOUTRUN’?
   set_bit(PAGE_EXT_YOUNG, &page_ext->flags);
           ^~~~~~~~~~~~~~
           PAGEOUTRUN
../include/linux/page_idle.h: In function ‘folio_test_clear_young’:
../include/linux/page_idle.h:45:28: error: ‘PAGE_EXT_YOUNG’ undeclared (first use in this function); did you mean ‘PAGEOUTRUN’?
   return test_and_clear_bit(PAGE_EXT_YOUNG, &page_ext->flags);
                             ^~~~~~~~~~~~~~
                             PAGEOUTRUN
../include/linux/page_idle.h: In function ‘folio_test_idle’:
../include/linux/page_idle.h:55:18: error: ‘PAGE_EXT_IDLE’ undeclared (first use in this function); did you mean ‘CPU_NOT_IDLE’?
   return test_bit(PAGE_EXT_IDLE, &page_ext->flags);
                   ^~~~~~~~~~~~~
                   CPU_NOT_IDLE
   AS      arch/x86/crypto/twofish-i586-asm_32.o
   AR      arch/x86/events/zhaoxin/built-in.a
../include/linux/page_idle.h: In function ‘folio_set_idle’:
../include/linux/page_idle.h:65:10: error: ‘PAGE_EXT_IDLE’ undeclared (first use in this function); did you mean ‘CPU_NOT_IDLE’?
   set_bit(PAGE_EXT_IDLE, &page_ext->flags);
           ^~~~~~~~~~~~~
           CPU_NOT_IDLE
../include/linux/page_idle.h: In function ‘folio_clear_idle’:
../include/linux/page_idle.h:75:12: error: ‘PAGE_EXT_IDLE’ undeclared (first use in this function); did you mean ‘CPU_NOT_IDLE’?
   clear_bit(PAGE_EXT_IDLE, &page_ext->flags);
             ^~~~~~~~~~~~~
             CPU_NOT_IDLE
   CC      mm/kfence/kfence_test.o
   CC      arch/x86/events/intel/uncore_nhmex.o
   CC      arch/x86/platform/atom/punit_atom_debug.o
../include/linux/page_idle.h: In function ‘folio_test_idle’:
../include/linux/page_idle.h:56:1: error: control reaches end of non-void function [-Werror=return-type]
  }

See:
--- a/include/linux/page_ext.h~mm-idle_page_tracking-make-pg_idle-reusable
+++ a/include/linux/page_ext.h
@@ -19,7 +19,7 @@ struct page_ext_operations {
  enum page_ext_flags {
  	PAGE_EXT_OWNER,
  	PAGE_EXT_OWNER_ALLOCATED,
-#if defined(CONFIG_IDLE_PAGE_TRACKING) && !defined(CONFIG_64BIT)
+#if defined(CONFIG_PAGE_IDLE_FLAG) && !defined(CONFIG_64BIT)
  	PAGE_EXT_YOUNG,
  	PAGE_EXT_IDLE,
  #endif

-- 
~Randy
Reported-by: Randy Dunlap <rdunlap@infradead.org>

Re: mmotm 2021-08-05-19-46 uploaded (mm/filemap.c)

From: SeongJae Park <hidden>
Date: 2021-08-06 09:22:58

From: SeongJae Park <redacted>

Hello Randy,

On Thu, 5 Aug 2021 22:00:11 -0700 Randy Dunlap [off-list ref] wrote:

[...]
on i386, I am seeing lots of build errors due to references to
some PAGE_ flags that are only defined for 64BIT:

In file included from ../mm/filemap.c:44:0:
../include/linux/page_idle.h: In function ‘folio_test_young’:
../include/linux/page_idle.h:25:18: error: ‘PAGE_EXT_YOUNG’ undeclared (first use in this function); did you mean ‘PAGEOUTRUN’?
   return test_bit(PAGE_EXT_YOUNG, &page_ext->flags);
                   ^~~~~~~~~~~~~~
                   PAGEOUTRUN
[...]
quoted hunk
See:
--- a/include/linux/page_ext.h~mm-idle_page_tracking-make-pg_idle-reusable
+++ a/include/linux/page_ext.h
@@ -19,7 +19,7 @@ struct page_ext_operations {
  enum page_ext_flags {
  	PAGE_EXT_OWNER,
  	PAGE_EXT_OWNER_ALLOCATED,
-#if defined(CONFIG_IDLE_PAGE_TRACKING) && !defined(CONFIG_64BIT)
+#if defined(CONFIG_PAGE_IDLE_FLAG) && !defined(CONFIG_64BIT)
  	PAGE_EXT_YOUNG,
  	PAGE_EXT_IDLE,
  #endif
Thanks for this report!  However, the flag is not defined for only-64BIT but
none-64BIT.

'enum page_ext_flags' is defined when 'CONFIG_PAGE_EXTENSION' is set.  It is
automatically set for non-64BIT when 'CONFIG_IDLE_PAGE_TRACKING' or
'CONFIG_DAMON_VADDR' is set.  However, 'CONFIG_PAGE_IDLE_FLAG' doesn't.  So, if
'CONFIG_PAGE_IDLE_FLAG' is set but 'CONFIG_PAGE_EXTENSION' is not, this issue
can be reproduced.

I was able to reproduce this issue with:

    make ARCH=i386 allnoconfig
    echo 'CONFIG_PAGE_IDLE_FLAG=y' >> .config
    make olddefconfig
    make ARCH=i386

And, confirmed below change fixes it.
--- a/mm/Kconfig
+++ b/mm/Kconfig
@@ -741,6 +741,7 @@ config DEFERRED_STRUCT_PAGE_INIT
 
 config PAGE_IDLE_FLAG
 	bool "Add PG_idle and PG_young flags"
+	select PAGE_EXTENSION if !64BIT
 	help
 	  This feature adds PG_idle and PG_young flags in 'struct page'.  PTE
 	  Accessed bit writers can set the state of the bit in the flags to let
Also, below change would make more sense:
@@ -749,7 +750,6 @@ config PAGE_IDLE_FLAG
 config IDLE_PAGE_TRACKING
 	bool "Enable idle page tracking"
 	depends on SYSFS && MMU && BROKEN
-	select PAGE_EXTENSION if !64BIT
 	select PAGE_IDLE_FLAG
 	help
 	  This feature allows to estimate the amount of user pages that have
diff --git a/mm/damon/Kconfig b/mm/damon/Kconfig
index 455995152697..37024798a97c 100644
--- a/mm/damon/Kconfig
+++ b/mm/damon/Kconfig
@@ -27,7 +27,6 @@ config DAMON_KUNIT_TEST
 config DAMON_VADDR
 	bool "Data access monitoring primitives for virtual address spaces"
 	depends on DAMON && MMU
-	select PAGE_EXTENSION if !64BIT
 	select PAGE_IDLE_FLAG
 	help
 	  This builds the default data access monitoring primitives for DAMON
I will format these as patches and post soon.


Thanks,
SeongJae Park

-- 
~Randy
Reported-by: Randy Dunlap <redacted>

[PATCH 1/2] mm/PAGE_IDLE_FLAG: Set PAGE_EXTENSION for none-64BIT

From: SeongJae Park <hidden>
Date: 2021-08-06 09:52:15

From: SeongJae Park <redacted>

Commit 128fd80c4c07 ("mm/idle_page_tracking: Make PG_idle reusable") of
linux-mm[1] allows PAGE_IDLE_FLAG to be set without PAGE_EXTENSION
while 64BIT is not set.  This makes 'enum page_ext_flags' undefined, so
build fails as below for the config (!64BIT, !PAGE_EXTENSION, and
IDLE_PAGE_FLAG).

    $ make ARCH=i386 allnoconfig
    $ echo 'CONFIG_PAGE_IDLE_FLAG=y' >> .config
    $ make olddefconfig
    $ make ARCH=i386
    [...]
    ../include/linux/page_idle.h: In function ‘folio_test_young’:
    ../include/linux/page_idle.h:25:18: error: ‘PAGE_EXT_YOUNG’ undeclared (first use in this function); did you mean ‘PAGEOUTRUN’?
       return test_bit(PAGE_EXT_YOUNG, &page_ext->flags);
    [...]

This commit fixes this issue by making PAGE_EXTENSION to be set when
64BIT is not set and PAGE_IDLE_FLAG is set.

[1] https://github.com/hnaz/linux-mm/commit/128fd80c4c07

Fixes: 128fd80c4c07 ("mm/idle_page_tracking: Make PG_idle reusable")
Reported-by: Randy Dunlap <redacted>
Signed-off-by: SeongJae Park <redacted>
---
 mm/Kconfig | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/mm/Kconfig b/mm/Kconfig
index d0b85dc12429..50ca602edeb6 100644
--- a/mm/Kconfig
+++ b/mm/Kconfig
@@ -741,6 +741,7 @@ config DEFERRED_STRUCT_PAGE_INIT
 
 config PAGE_IDLE_FLAG
 	bool "Add PG_idle and PG_young flags"
+	select PAGE_EXTENSION if !64BIT
 	help
 	  This feature adds PG_idle and PG_young flags in 'struct page'.  PTE
 	  Accessed bit writers can set the state of the bit in the flags to let
@@ -749,7 +750,6 @@ config PAGE_IDLE_FLAG
 config IDLE_PAGE_TRACKING
 	bool "Enable idle page tracking"
 	depends on SYSFS && MMU && BROKEN
-	select PAGE_EXTENSION if !64BIT
 	select PAGE_IDLE_FLAG
 	help
 	  This feature allows to estimate the amount of user pages that have
-- 
2.17.1

[PATCH 2/2] mm/damon/Kconfig: Remove unnecessary PAGE_EXTENSION setup

From: SeongJae Park <hidden>
Date: 2021-08-06 09:52:20

From: SeongJae Park <redacted>

Commit 13d49dbd0123 ("mm/damon: implement primitives for the virtual
memory address spaces") of linux-mm[1] makes DAMON_VADDR to set
PAGE_IDLE_FLAG.  PAGE_IDLE_FLAG sets PAGE_EXTENSION if !64BIT.  However,
DAMON_VADDR do the same work again.  This commit removes the unnecessary
duplicate.

[1] https://github.com/hnaz/linux-mm/commit/13d49dbd0123

Fixes: 13d49dbd0123 ("mm/damon: implement primitives for the virtual memory address spaces")
Reported-by: Randy Dunlap <redacted>
Signed-off-by: SeongJae Park <redacted>
---
 mm/damon/Kconfig | 1 -
 1 file changed, 1 deletion(-)
diff --git a/mm/damon/Kconfig b/mm/damon/Kconfig
index 455995152697..37024798a97c 100644
--- a/mm/damon/Kconfig
+++ b/mm/damon/Kconfig
@@ -27,7 +27,6 @@ config DAMON_KUNIT_TEST
 config DAMON_VADDR
 	bool "Data access monitoring primitives for virtual address spaces"
 	depends on DAMON && MMU
-	select PAGE_EXTENSION if !64BIT
 	select PAGE_IDLE_FLAG
 	help
 	  This builds the default data access monitoring primitives for DAMON
-- 
2.17.1

Re: [PATCH 2/2] mm/damon/Kconfig: Remove unnecessary PAGE_EXTENSION setup

From: Randy Dunlap <hidden>
Date: 2021-08-07 02:02:04

On 8/6/21 2:51 AM, SeongJae Park wrote:
From: SeongJae Park <redacted>

Commit 13d49dbd0123 ("mm/damon: implement primitives for the virtual
memory address spaces") of linux-mm[1] makes DAMON_VADDR to set
PAGE_IDLE_FLAG.  PAGE_IDLE_FLAG sets PAGE_EXTENSION if !64BIT.  However,
DAMON_VADDR do the same work again.  This commit removes the unnecessary
duplicate.

[1] https://github.com/hnaz/linux-mm/commit/13d49dbd0123

Fixes: 13d49dbd0123 ("mm/damon: implement primitives for the virtual memory address spaces")
Reported-by: Randy Dunlap <redacted>
Signed-off-by: SeongJae Park <redacted>
Acked-by: Randy Dunlap <redacted> # build-tested

Thanks.
quoted hunk
---
  mm/damon/Kconfig | 1 -
  1 file changed, 1 deletion(-)
diff --git a/mm/damon/Kconfig b/mm/damon/Kconfig
index 455995152697..37024798a97c 100644
--- a/mm/damon/Kconfig
+++ b/mm/damon/Kconfig
@@ -27,7 +27,6 @@ config DAMON_KUNIT_TEST
  config DAMON_VADDR
  	bool "Data access monitoring primitives for virtual address spaces"
  	depends on DAMON && MMU
-	select PAGE_EXTENSION if !64BIT
  	select PAGE_IDLE_FLAG
  	help
  	  This builds the default data access monitoring primitives for DAMON

-- 
~Randy

Re: [PATCH 1/2] mm/PAGE_IDLE_FLAG: Set PAGE_EXTENSION for none-64BIT

From: Randy Dunlap <hidden>
Date: 2021-08-07 02:02:03

On 8/6/21 2:51 AM, SeongJae Park wrote:
From: SeongJae Park <redacted>

Commit 128fd80c4c07 ("mm/idle_page_tracking: Make PG_idle reusable") of
linux-mm[1] allows PAGE_IDLE_FLAG to be set without PAGE_EXTENSION
while 64BIT is not set.  This makes 'enum page_ext_flags' undefined, so
build fails as below for the config (!64BIT, !PAGE_EXTENSION, and
IDLE_PAGE_FLAG).

     $ make ARCH=i386 allnoconfig
     $ echo 'CONFIG_PAGE_IDLE_FLAG=y' >> .config
     $ make olddefconfig
     $ make ARCH=i386
     [...]
     ../include/linux/page_idle.h: In function ‘folio_test_young’:
     ../include/linux/page_idle.h:25:18: error: ‘PAGE_EXT_YOUNG’ undeclared (first use in this function); did you mean ‘PAGEOUTRUN’?
        return test_bit(PAGE_EXT_YOUNG, &page_ext->flags);
     [...]

This commit fixes this issue by making PAGE_EXTENSION to be set when
64BIT is not set and PAGE_IDLE_FLAG is set.

[1] https://github.com/hnaz/linux-mm/commit/128fd80c4c07

Fixes: 128fd80c4c07 ("mm/idle_page_tracking: Make PG_idle reusable")
Reported-by: Randy Dunlap <redacted>
Signed-off-by: SeongJae Park <redacted>
Acked-by: Randy Dunlap <redacted> # build-tested

Thanks.
quoted hunk
---
  mm/Kconfig | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/mm/Kconfig b/mm/Kconfig
index d0b85dc12429..50ca602edeb6 100644
--- a/mm/Kconfig
+++ b/mm/Kconfig
@@ -741,6 +741,7 @@ config DEFERRED_STRUCT_PAGE_INIT
  
  config PAGE_IDLE_FLAG
  	bool "Add PG_idle and PG_young flags"
+	select PAGE_EXTENSION if !64BIT
  	help
  	  This feature adds PG_idle and PG_young flags in 'struct page'.  PTE
  	  Accessed bit writers can set the state of the bit in the flags to let
@@ -749,7 +750,6 @@ config PAGE_IDLE_FLAG
  config IDLE_PAGE_TRACKING
  	bool "Enable idle page tracking"
  	depends on SYSFS && MMU && BROKEN
-	select PAGE_EXTENSION if !64BIT
  	select PAGE_IDLE_FLAG
  	help
  	  This feature allows to estimate the amount of user pages that have

-- 
~Randy
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help