2021-08-06 11:21:10

by Andrew Morton

[permalink] [raw]
Subject: mmotm 2021-08-05-19-46 uploaded

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


2021-08-06 11:38:35

by Randy Dunlap

[permalink] [raw]
Subject: Re: mmotm 2021-08-05-19-46 uploaded (mm/filemap.c)

On 8/5/21 7:46 PM, [email protected] 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 <[email protected]>

2021-08-06 15:03:11

by SeongJae Park

[permalink] [raw]
Subject: Re: mmotm 2021-08-05-19-46 uploaded (mm/filemap.c)

From: SeongJae Park <[email protected]>

Hello Randy,

On Thu, 5 Aug 2021 22:00:11 -0700 Randy Dunlap <[email protected]> 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
[...]
>
> 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 <[email protected]>