2018-08-24 00:29:45

by Andrew Morton

[permalink] [raw]
Subject: mmotm 2018-08-23-17-26 uploaded

The mm-of-the-moment snapshot 2018-08-23-17-26 has been uploaded to

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

mmotm-readme.txt says

README for mm-of-the-moment:

http://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 (4.x
or 4.x-rcY). The series file is in broken-out.tar.gz and is duplicated in
http://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 git tree which contains the memory management portion of this tree is
maintained at git://git.kernel.org/pub/scm/linux/kernel/git/mhocko/mm.git
by Michal Hocko. It contains the patches which are between the
"#NEXT_PATCHES_START mm" and "#NEXT_PATCHES_END" markers, from the series
file, http://www.ozlabs.org/~akpm/mmotm/series.


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.

http://git.cmpxchg.org/cgit.cgi/linux-mmotm.git/

To develop on top of mmotm git:

$ git remote add mmotm git://git.kernel.org/pub/scm/linux/kernel/git/mhocko/mm.git
$ git remote update mmotm
$ git checkout -b topic mmotm/master
<make changes, commit>
$ git send-email mmotm/master.. [...]

To rebase a branch with older patches to a new mmotm release:

$ git remote update mmotm
$ git rebase --onto mmotm/master <topic base> topic




The directory http://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 available at

http://git.cmpxchg.org/cgit.cgi/linux-mmots.git/

and use of this tree is similar to
http://git.cmpxchg.org/cgit.cgi/linux-mmotm.git/, described above.


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

origin.patch
* hfsplus-fix-null-dereference-in-hfsplus_lookup.patch
* hfsplus-prevent-crash-on-exit-from-failed-search.patch
* hfs-prevent-crash-on-exit-from-failed-search.patch
* namei-allow-restricted-o_creat-of-fifos-and-regular-files.patch
* mm-fix-race-on-soft-offlining-free-huge-pages.patch
* mm-soft-offline-close-the-race-against-page-allocation.patch
* hwtracing-intel_th-change-return-type-to-vm_fault_t.patch
* fs-afs-adding-new-return-type-vm_fault_t.patch
* treewide-correct-differenciate-and-instanciate-typos.patch
* vmcore-hide-vmcoredd_mmap_dumps-for-nommu-builds.patch
* mm-util-make-strndup_user-description-a-kernel-doc-comment.patch
* mm-util-add-kernel-doc-for-kvfree.patch
* docs-core-api-kill-trailing-whitespace-in-kernel-apirst.patch
* docs-core-api-move-strmemdup-to-string-manipulation.patch
* docs-core-api-split-memory-management-api-to-a-separate-file.patch
* docs-mm-make-gfp-flags-descriptions-usable-as-kernel-doc.patch
* docs-core-api-mm-api-add-section-about-gfp-flags.patch
* gpu-drm-gma500-change-return-type-to-vm_fault_t.patch
* treewide-convert-iso_8859-1-text-comments-to-utf-8.patch
* s390-ebcdic-convert-comments-to-utf-8.patch
* lib-fonts-convert-comments-to-utf-8.patch
* mm-change-return-type-int-to-vm_fault_t-for-fault-handlers.patch
* mm-memcontrol-print-proper-oom-header-when-no-eligible-victim-left.patch
* mm-migration-fix-migration-of-huge-pmd-shared-pages.patch
* hugetlb-take-pmd-sharing-into-account-when-flushing-tlb-caches.patch
* mm-oom-fix-missing-tlb_finish_mmu-in-__oom_reap_task_mm.patch
* mm-respect-arch_dup_mmap-return-value.patch
* arm-arch-arm-include-asm-pageh-needs-personalityh.patch
* ocfs2-get-rid-of-ocfs2_is_o2cb_active-function.patch
* ocfs2-without-quota-support-try-to-avoid-calling-quota-recovery.patch
* ocfs2-dont-use-iocb-when-eiocbqueued-returns.patch
* ocfs2-fix-a-misuse-a-of-brelse-after-failing-ocfs2_check_dir_entry.patch
* ocfs2-dont-put-and-assigning-null-to-bh-allocated-outside.patch
* ocfs2-dlmglue-clean-up-timestamp-handling.patch
* block-restore-proc-partitions-to-not-display-non-partitionable-removable-devices.patch
mm.patch
* arm-arm64-introduce-config_have_memblock_pfn_valid.patch
* mm-page_alloc-remain-memblock_next_valid_pfn-on-arm-arm64.patch
* mm-page_alloc-reduce-unnecessary-binary-search-in-memblock_next_valid_pfn.patch
* mm-page_alloc-reduce-unnecessary-binary-search-in-memblock_next_valid_pfn-fix.patch
* mm-page_alloc-reduce-unnecessary-binary-search-in-memblock_next_valid_pfn-fix-fix.patch
* mm-memblock-introduce-memblock_search_pfn_regions.patch
* mm-memblock-introduce-memblock_search_pfn_regions-fix.patch
* mm-memblock-introduce-pfn_valid_region.patch
* mm-page_alloc-reduce-unnecessary-binary-search-in-early_pfn_valid.patch
* z3fold-fix-wrong-handling-of-headless-pages.patch
* mm-adjust-max-read-count-in-generic_file_buffered_read.patch
* mm-make-memmap_init-a-proper-function.patch
* mm-calculate-deferred-pages-after-skipping-mirrored-memory.patch
* mm-calculate-deferred-pages-after-skipping-mirrored-memory-v2.patch
* mm-calculate-deferred-pages-after-skipping-mirrored-memory-fix.patch
* mm-move-mirrored-memory-specific-code-outside-of-memmap_init_zone.patch
* mm-move-mirrored-memory-specific-code-outside-of-memmap_init_zone-v2.patch
* mm-swap-fix-race-between-swapoff-and-some-swap-operations.patch
* mm-swap-fix-race-between-swapoff-and-some-swap-operations-v6.patch
* mm-fix-race-between-swapoff-and-mincore.patch
* list_lru-prefetch-neighboring-list-entries-before-acquiring-lock.patch
* list_lru-prefetch-neighboring-list-entries-before-acquiring-lock-fix.patch
* mm-add-strictlimit-knob-v2.patch
* mm-dont-expose-page-to-fast-gup-before-its-ready.patch
* mm-page_owner-align-with-pageblock_nr_pages.patch
* mm-page_owner-align-with-pageblock_nr-pages.patch
* info-task-hung-in-generic_file_write_iter.patch
* bfs-add-sanity-check-at-bfs_fill_super.patch
linux-next.patch
linux-next-git-rejects.patch
* vfs-replace-current_kernel_time64-with-ktime-equivalent.patch
* fix-read-buffer-overflow-in-delta-ipc.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
slab-leaks3-default-y.patch
workaround-for-a-pci-restoring-bug.patch


2018-08-24 15:28:35

by Randy Dunlap

[permalink] [raw]
Subject: Re: mmotm 2018-08-23-17-26 uploaded (netfilter: undefined reference)

On 08/23/2018 05:27 PM, [email protected] wrote:
> The mm-of-the-moment snapshot 2018-08-23-17-26 has been uploaded to
>
> http://www.ozlabs.org/~akpm/mmotm/
>
> mmotm-readme.txt says
>
> README for mm-of-the-moment:
>
> http://www.ozlabs.org/~akpm/mmotm/
>
> This is a snapshot of my -mm patch queue. Uploaded at random hopefully
> more than once a week.

(found in mmotm, but there are no netfilter patches there other than
linux-next patches)


on x86_64:

net/ipv4/netfilter/nft_chain_nat_ipv4.o: In function `nft_nat_do_chain':
nft_chain_nat_ipv4.c:(.text+0x6d): undefined reference to `nft_do_chain'
net/ipv4/netfilter/nft_chain_nat_ipv4.o: In function `nft_chain_nat_exit':
nft_chain_nat_ipv4.c:(.exit.text+0x8): undefined reference to `nft_unregister_chain_type'
net/ipv4/netfilter/nft_chain_nat_ipv4.o: In function `nft_chain_nat_init':
nft_chain_nat_ipv4.c:(.init.text+0x8): undefined reference to `nft_register_chain_type'


Full randconfig file is attached.


--
~Randy


Attachments:
config-r1486 (137.84 kB)

2018-08-28 04:22:09

by Jia He

[permalink] [raw]
Subject: Re: mmotm 2018-08-23-17-26 uploaded

Hi Andrew
FYI,I watched a lockdep warning based on your mmotm master branch[1]

[ 6.692731] ------------[ cut here ]------------
[ 6.696391] DEBUG_LOCKS_WARN_ON(!current->hardirqs_enabled)
[ 6.696404] WARNING: CPU: 3 PID: 320 at kernel/locking/lockdep.c:3845
check_flags.part.38+0x9c/0x16c
[ 6.711082] Modules linked in:
[ 6.714101] CPU: 3 PID: 320 Comm: modprobe Not tainted 4.18.0-rc4-mm1+ #56
[ 6.720956] Hardware name: WIWYNN HXT REP-1 System H001-00001-0/HXT REP-1
CRB, BIOS 0ACJA530 03/20/2018
[ 6.730332] pstate: 60400085 (nZCv daIf +PAN -UAO)
[ 6.735106] pc : check_flags.part.38+0x9c/0x16c
[ 6.739619] lr : check_flags.part.38+0x9c/0x16c
[ 6.744133] sp : ffff80178536fbf0
[ 6.747432] x29: ffff80178536fbf0 x28: ffff8017905a1b00
[ 6.752727] x27: 0000000000000002 x26: 0000000000000000
[ 6.758022] x25: ffff000008abeb14 x24: 0000000000000000
[ 6.763317] x23: 0000000000000001 x22: 0000000000000001
[ 6.768612] x21: 0000000000000001 x20: 0000000000000000
[ 6.773908] x19: ffff00000a041000 x18: 0000000000000000
[ 6.779202] x17: 0000000000000000 x16: 0000000000000000
[ 6.784498] x15: 0000000000000000 x14: 0000000000000000
[ 6.789793] x13: ffff000008d6b190 x12: 752ce9eb60de3f00
[ 6.795088] x11: ffff80178536f7f0 x10: ffff80178536f7f0
[ 6.800383] x9 : 00000000ffffffd0 x8 : 0000000000000000
[ 6.805678] x7 : ffff00000816fe48 x6 : ffff801794ba62b8
[ 6.810973] x5 : 0000000000000000 x4 : 0000000000000000
[ 6.816269] x3 : ffffffffffffffff x2 : ffff0000091ed988
[ 6.821564] x1 : 752ce9eb60de3f00 x0 : 752ce9eb60de3f00
[ 6.826859] Call trace:
[ 6.829290] check_flags.part.38+0x9c/0x16c
[ 6.833457] lock_acquire+0x12c/0x280
[ 6.837104] down_read_trylock+0x78/0x98
[ 6.841011] do_page_fault+0x150/0x480
[ 6.844742] do_translation_fault+0x74/0x80
[ 6.848909] do_mem_abort+0x60/0x108
[ 6.852467] el0_da+0x24/0x28
[ 6.855418] irq event stamp: 250
[ 6.858633] hardirqs last enabled at (249): [<ffff00000830e518>]
mem_cgroup_commit_charge+0x9c/0x13c
[ 6.867833] hardirqs last disabled at (250): [<ffff000008095f40>]
el0_svc_handler+0xc4/0x16c
[ 6.876252] softirqs last enabled at (242): [<ffff000008081c48>]
__do_softirq+0x2f8/0x554
[ 6.884501] softirqs last disabled at (229): [<ffff0000080f1bec>]
irq_exit+0x180/0x194
[ 6.892399] ---[ end trace b45768f94a7b7d9f ]---
[ 6.896998] possible reason: unannotated irqs-on.
[ 6.901685] irq event stamp: 250
[ 6.904898] hardirqs last enabled at (249): [<ffff00000830e518>]
mem_cgroup_commit_charge+0x9c/0x13c
[ 6.914100] hardirqs last disabled at (250): [<ffff000008095f40>]
el0_svc_handler+0xc4/0x16c
[ 6.922519] softirqs last enabled at (242): [<ffff000008081c48>]
__do_softirq+0x2f8/0x554
[ 6.930766] softirqs last disabled at (229): [<ffff0000080f1bec>]
irq_exit+0x180/0x194
[ 7.023827] Initialise system trusted keyrings
[ 7.027414] workingset: timestamp_bits=45 max_order=25 bucket_order=0

I thought the root cause might be at [2] which seems not in your branch yet.

[1] http://git.cmpxchg.org/cgit.cgi/linux-mmotm.git
[2]
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit?id=efd112

---
Cheers,
Jia

On 8/24/2018 8:27 AM, [email protected] Wrote:
> The mm-of-the-moment snapshot 2018-08-23-17-26 has been uploaded to
>
> http://www.ozlabs.org/~akpm/mmotm/
>
> mmotm-readme.txt says
>
> README for mm-of-the-moment:
>
> http://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 (4.x
> or 4.x-rcY). The series file is in broken-out.tar.gz and is duplicated in
> http://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 git tree which contains the memory management portion of this tree is
> maintained at git://git.kernel.org/pub/scm/linux/kernel/git/mhocko/mm.git
> by Michal Hocko. It contains the patches which are between the
> "#NEXT_PATCHES_START mm" and "#NEXT_PATCHES_END" markers, from the series
> file, http://www.ozlabs.org/~akpm/mmotm/series.
>
>
> 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.
>
> http://git.cmpxchg.org/cgit.cgi/linux-mmotm.git/
>
> To develop on top of mmotm git:
>
> $ git remote add mmotm git://git.kernel.org/pub/scm/linux/kernel/git/mhocko/mm.git
> $ git remote update mmotm
> $ git checkout -b topic mmotm/master
> <make changes, commit>
> $ git send-email mmotm/master.. [...]
>
> To rebase a branch with older patches to a new mmotm release:
>
> $ git remote update mmotm
> $ git rebase --onto mmotm/master <topic base> topic
>
>
>
>
> The directory http://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 available at
>
> http://git.cmpxchg.org/cgit.cgi/linux-mmots.git/
>
> and use of this tree is similar to
> http://git.cmpxchg.org/cgit.cgi/linux-mmotm.git/, described above.
>
>
> This mmotm tree contains the following patches against 4.18:
> (patches marked "*" will be included in linux-next)
>
> origin.patch
> * hfsplus-fix-null-dereference-in-hfsplus_lookup.patch
> * hfsplus-prevent-crash-on-exit-from-failed-search.patch
> * hfs-prevent-crash-on-exit-from-failed-search.patch
> * namei-allow-restricted-o_creat-of-fifos-and-regular-files.patch
> * mm-fix-race-on-soft-offlining-free-huge-pages.patch
> * mm-soft-offline-close-the-race-against-page-allocation.patch
> * hwtracing-intel_th-change-return-type-to-vm_fault_t.patch
> * fs-afs-adding-new-return-type-vm_fault_t.patch
> * treewide-correct-differenciate-and-instanciate-typos.patch
> * vmcore-hide-vmcoredd_mmap_dumps-for-nommu-builds.patch
> * mm-util-make-strndup_user-description-a-kernel-doc-comment.patch
> * mm-util-add-kernel-doc-for-kvfree.patch
> * docs-core-api-kill-trailing-whitespace-in-kernel-apirst.patch
> * docs-core-api-move-strmemdup-to-string-manipulation.patch
> * docs-core-api-split-memory-management-api-to-a-separate-file.patch
> * docs-mm-make-gfp-flags-descriptions-usable-as-kernel-doc.patch
> * docs-core-api-mm-api-add-section-about-gfp-flags.patch
> * gpu-drm-gma500-change-return-type-to-vm_fault_t.patch
> * treewide-convert-iso_8859-1-text-comments-to-utf-8.patch
> * s390-ebcdic-convert-comments-to-utf-8.patch
> * lib-fonts-convert-comments-to-utf-8.patch
> * mm-change-return-type-int-to-vm_fault_t-for-fault-handlers.patch
> * mm-memcontrol-print-proper-oom-header-when-no-eligible-victim-left.patch
> * mm-migration-fix-migration-of-huge-pmd-shared-pages.patch
> * hugetlb-take-pmd-sharing-into-account-when-flushing-tlb-caches.patch
> * mm-oom-fix-missing-tlb_finish_mmu-in-__oom_reap_task_mm.patch
> * mm-respect-arch_dup_mmap-return-value.patch
> * arm-arch-arm-include-asm-pageh-needs-personalityh.patch
> * ocfs2-get-rid-of-ocfs2_is_o2cb_active-function.patch
> * ocfs2-without-quota-support-try-to-avoid-calling-quota-recovery.patch
> * ocfs2-dont-use-iocb-when-eiocbqueued-returns.patch
> * ocfs2-fix-a-misuse-a-of-brelse-after-failing-ocfs2_check_dir_entry.patch
> * ocfs2-dont-put-and-assigning-null-to-bh-allocated-outside.patch
> * ocfs2-dlmglue-clean-up-timestamp-handling.patch
> * block-restore-proc-partitions-to-not-display-non-partitionable-removable-devices.patch
> mm.patch
> * arm-arm64-introduce-config_have_memblock_pfn_valid.patch
> * mm-page_alloc-remain-memblock_next_valid_pfn-on-arm-arm64.patch
> * mm-page_alloc-reduce-unnecessary-binary-search-in-memblock_next_valid_pfn.patch
> * mm-page_alloc-reduce-unnecessary-binary-search-in-memblock_next_valid_pfn-fix.patch
> * mm-page_alloc-reduce-unnecessary-binary-search-in-memblock_next_valid_pfn-fix-fix.patch
> * mm-memblock-introduce-memblock_search_pfn_regions.patch
> * mm-memblock-introduce-memblock_search_pfn_regions-fix.patch
> * mm-memblock-introduce-pfn_valid_region.patch
> * mm-page_alloc-reduce-unnecessary-binary-search-in-early_pfn_valid.patch
> * z3fold-fix-wrong-handling-of-headless-pages.patch
> * mm-adjust-max-read-count-in-generic_file_buffered_read.patch
> * mm-make-memmap_init-a-proper-function.patch
> * mm-calculate-deferred-pages-after-skipping-mirrored-memory.patch
> * mm-calculate-deferred-pages-after-skipping-mirrored-memory-v2.patch
> * mm-calculate-deferred-pages-after-skipping-mirrored-memory-fix.patch
> * mm-move-mirrored-memory-specific-code-outside-of-memmap_init_zone.patch
> * mm-move-mirrored-memory-specific-code-outside-of-memmap_init_zone-v2.patch
> * mm-swap-fix-race-between-swapoff-and-some-swap-operations.patch
> * mm-swap-fix-race-between-swapoff-and-some-swap-operations-v6.patch
> * mm-fix-race-between-swapoff-and-mincore.patch
> * list_lru-prefetch-neighboring-list-entries-before-acquiring-lock.patch
> * list_lru-prefetch-neighboring-list-entries-before-acquiring-lock-fix.patch
> * mm-add-strictlimit-knob-v2.patch
> * mm-dont-expose-page-to-fast-gup-before-its-ready.patch
> * mm-page_owner-align-with-pageblock_nr_pages.patch
> * mm-page_owner-align-with-pageblock_nr-pages.patch
> * info-task-hung-in-generic_file_write_iter.patch
> * bfs-add-sanity-check-at-bfs_fill_super.patch
> linux-next.patch
> linux-next-git-rejects.patch
> * vfs-replace-current_kernel_time64-with-ktime-equivalent.patch
> * fix-read-buffer-overflow-in-delta-ipc.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
> slab-leaks3-default-y.patch
> workaround-for-a-pci-restoring-bug.patch
>
>

2018-08-29 23:23:47

by Andrew Morton

[permalink] [raw]
Subject: Re: mmotm 2018-08-23-17-26 uploaded

On Tue, 28 Aug 2018 12:20:46 +0800 Jia He <[email protected]> wrote:

> Hi Andrew
> FYI,I watched a lockdep warning based on your mmotm master branch[1]

Thanks. We'll need help from ARM peeps on this please.

> [ 6.692731] ------------[ cut here ]------------
> [ 6.696391] DEBUG_LOCKS_WARN_ON(!current->hardirqs_enabled)
> [ 6.696404] WARNING: CPU: 3 PID: 320 at kernel/locking/lockdep.c:3845
> check_flags.part.38+0x9c/0x16c
> [ 6.711082] Modules linked in:
> [ 6.714101] CPU: 3 PID: 320 Comm: modprobe Not tainted 4.18.0-rc4-mm1+ #56
> [ 6.720956] Hardware name: WIWYNN HXT REP-1 System H001-00001-0/HXT REP-1
> CRB, BIOS 0ACJA530 03/20/2018
> [ 6.730332] pstate: 60400085 (nZCv daIf +PAN -UAO)
> [ 6.735106] pc : check_flags.part.38+0x9c/0x16c
> [ 6.739619] lr : check_flags.part.38+0x9c/0x16c
> [ 6.744133] sp : ffff80178536fbf0
> [ 6.747432] x29: ffff80178536fbf0 x28: ffff8017905a1b00
> [ 6.752727] x27: 0000000000000002 x26: 0000000000000000
> [ 6.758022] x25: ffff000008abeb14 x24: 0000000000000000
> [ 6.763317] x23: 0000000000000001 x22: 0000000000000001
> [ 6.768612] x21: 0000000000000001 x20: 0000000000000000
> [ 6.773908] x19: ffff00000a041000 x18: 0000000000000000
> [ 6.779202] x17: 0000000000000000 x16: 0000000000000000
> [ 6.784498] x15: 0000000000000000 x14: 0000000000000000
> [ 6.789793] x13: ffff000008d6b190 x12: 752ce9eb60de3f00
> [ 6.795088] x11: ffff80178536f7f0 x10: ffff80178536f7f0
> [ 6.800383] x9 : 00000000ffffffd0 x8 : 0000000000000000
> [ 6.805678] x7 : ffff00000816fe48 x6 : ffff801794ba62b8
> [ 6.810973] x5 : 0000000000000000 x4 : 0000000000000000
> [ 6.816269] x3 : ffffffffffffffff x2 : ffff0000091ed988
> [ 6.821564] x1 : 752ce9eb60de3f00 x0 : 752ce9eb60de3f00
> [ 6.826859] Call trace:
> [ 6.829290] check_flags.part.38+0x9c/0x16c
> [ 6.833457] lock_acquire+0x12c/0x280
> [ 6.837104] down_read_trylock+0x78/0x98
> [ 6.841011] do_page_fault+0x150/0x480
> [ 6.844742] do_translation_fault+0x74/0x80
> [ 6.848909] do_mem_abort+0x60/0x108
> [ 6.852467] el0_da+0x24/0x28
> [ 6.855418] irq event stamp: 250
> [ 6.858633] hardirqs last enabled at (249): [<ffff00000830e518>]
> mem_cgroup_commit_charge+0x9c/0x13c
> [ 6.867833] hardirqs last disabled at (250): [<ffff000008095f40>]
> el0_svc_handler+0xc4/0x16c
> [ 6.876252] softirqs last enabled at (242): [<ffff000008081c48>]
> __do_softirq+0x2f8/0x554
> [ 6.884501] softirqs last disabled at (229): [<ffff0000080f1bec>]
> irq_exit+0x180/0x194
> [ 6.892399] ---[ end trace b45768f94a7b7d9f ]---
> [ 6.896998] possible reason: unannotated irqs-on.
> [ 6.901685] irq event stamp: 250
> [ 6.904898] hardirqs last enabled at (249): [<ffff00000830e518>]
> mem_cgroup_commit_charge+0x9c/0x13c
> [ 6.914100] hardirqs last disabled at (250): [<ffff000008095f40>]
> el0_svc_handler+0xc4/0x16c
> [ 6.922519] softirqs last enabled at (242): [<ffff000008081c48>]
> __do_softirq+0x2f8/0x554
> [ 6.930766] softirqs last disabled at (229): [<ffff0000080f1bec>]
> irq_exit+0x180/0x194
> [ 7.023827] Initialise system trusted keyrings
> [ 7.027414] workingset: timestamp_bits=45 max_order=25 bucket_order=0

Lockdep says current->hardirqs_enabled is false and that is indeed an
error. arch/arm64/kernel/entry.S:el0_da does enable_daif which might
be an attempt to enable hardirqs, but how does that get propagated into
lockdep's ->hardirqs_enabled? By calling
local_irq_enable()->trace_hardirqs_on(), but that's C, not assembler.

And what changed to cause this?

I dunno anything. Help!

> I thought the root cause might be at [2] which seems not in your branch yet.
>
> [1] http://git.cmpxchg.org/cgit.cgi/linux-mmotm.git
> [2]
> https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit?id=efd112

I agree, that doesn't look like the culprit. But something may well
have gone wrong in "the recent conversion of the syscall entry/exit
code to C".

>
> ...
>

2018-08-30 01:01:51

by Jia He

[permalink] [raw]
Subject: Re: mmotm 2018-08-23-17-26 uploaded



On 8/30/2018 7:22 AM, Andrew Morton Wrote:
> On Tue, 28 Aug 2018 12:20:46 +0800 Jia He <[email protected]> wrote:
>
>> Hi Andrew
>> FYI,I watched a lockdep warning based on your mmotm master branch[1]
>
> Thanks. We'll need help from ARM peeps on this please.
>
>> [ 6.692731] ------------[ cut here ]------------
>> [ 6.696391] DEBUG_LOCKS_WARN_ON(!current->hardirqs_enabled)
>> [ 6.696404] WARNING: CPU: 3 PID: 320 at kernel/locking/lockdep.c:3845
>> check_flags.part.38+0x9c/0x16c
>> [ 6.711082] Modules linked in:
>> [ 6.714101] CPU: 3 PID: 320 Comm: modprobe Not tainted 4.18.0-rc4-mm1+ #56
>> [ 6.720956] Hardware name: WIWYNN HXT REP-1 System H001-00001-0/HXT REP-1
>> CRB, BIOS 0ACJA530 03/20/2018
>> [ 6.730332] pstate: 60400085 (nZCv daIf +PAN -UAO)
>> [ 6.735106] pc : check_flags.part.38+0x9c/0x16c
>> [ 6.739619] lr : check_flags.part.38+0x9c/0x16c
>> [ 6.744133] sp : ffff80178536fbf0
>> [ 6.747432] x29: ffff80178536fbf0 x28: ffff8017905a1b00
>> [ 6.752727] x27: 0000000000000002 x26: 0000000000000000
>> [ 6.758022] x25: ffff000008abeb14 x24: 0000000000000000
>> [ 6.763317] x23: 0000000000000001 x22: 0000000000000001
>> [ 6.768612] x21: 0000000000000001 x20: 0000000000000000
>> [ 6.773908] x19: ffff00000a041000 x18: 0000000000000000
>> [ 6.779202] x17: 0000000000000000 x16: 0000000000000000
>> [ 6.784498] x15: 0000000000000000 x14: 0000000000000000
>> [ 6.789793] x13: ffff000008d6b190 x12: 752ce9eb60de3f00
>> [ 6.795088] x11: ffff80178536f7f0 x10: ffff80178536f7f0
>> [ 6.800383] x9 : 00000000ffffffd0 x8 : 0000000000000000
>> [ 6.805678] x7 : ffff00000816fe48 x6 : ffff801794ba62b8
>> [ 6.810973] x5 : 0000000000000000 x4 : 0000000000000000
>> [ 6.816269] x3 : ffffffffffffffff x2 : ffff0000091ed988
>> [ 6.821564] x1 : 752ce9eb60de3f00 x0 : 752ce9eb60de3f00
>> [ 6.826859] Call trace:
>> [ 6.829290] check_flags.part.38+0x9c/0x16c
>> [ 6.833457] lock_acquire+0x12c/0x280
>> [ 6.837104] down_read_trylock+0x78/0x98
>> [ 6.841011] do_page_fault+0x150/0x480
>> [ 6.844742] do_translation_fault+0x74/0x80
>> [ 6.848909] do_mem_abort+0x60/0x108
>> [ 6.852467] el0_da+0x24/0x28
>> [ 6.855418] irq event stamp: 250
>> [ 6.858633] hardirqs last enabled at (249): [<ffff00000830e518>]
>> mem_cgroup_commit_charge+0x9c/0x13c
>> [ 6.867833] hardirqs last disabled at (250): [<ffff000008095f40>]
>> el0_svc_handler+0xc4/0x16c
>> [ 6.876252] softirqs last enabled at (242): [<ffff000008081c48>]
>> __do_softirq+0x2f8/0x554
>> [ 6.884501] softirqs last disabled at (229): [<ffff0000080f1bec>]
>> irq_exit+0x180/0x194
>> [ 6.892399] ---[ end trace b45768f94a7b7d9f ]---
>> [ 6.896998] possible reason: unannotated irqs-on.
>> [ 6.901685] irq event stamp: 250
>> [ 6.904898] hardirqs last enabled at (249): [<ffff00000830e518>]
>> mem_cgroup_commit_charge+0x9c/0x13c
>> [ 6.914100] hardirqs last disabled at (250): [<ffff000008095f40>]
>> el0_svc_handler+0xc4/0x16c
>> [ 6.922519] softirqs last enabled at (242): [<ffff000008081c48>]
>> __do_softirq+0x2f8/0x554
>> [ 6.930766] softirqs last disabled at (229): [<ffff0000080f1bec>]
>> irq_exit+0x180/0x194
>> [ 7.023827] Initialise system trusted keyrings
>> [ 7.027414] workingset: timestamp_bits=45 max_order=25 bucket_order=0
>
> Lockdep says current->hardirqs_enabled is false and that is indeed an
> error. arch/arm64/kernel/entry.S:el0_da does enable_daif which might
> be an attempt to enable hardirqs, but how does that get propagated into
> lockdep's ->hardirqs_enabled? By calling
> local_irq_enable()->trace_hardirqs_on(), but that's C, not assembler.
>
> And what changed to cause this?
>
> I dunno anything. Help!
>
>> I thought the root cause might be at [2] which seems not in your branch yet.
>>
>> [1] http://git.cmpxchg.org/cgit.cgi/linux-mmotm.git
>> [2]
>> https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit?id=efd112
>
> I agree, that doesn't look like the culprit. But something may well
> have gone wrong in "the recent conversion of the syscall entry/exit
> code to C".
Sorry for my unclearly previously description.
1. no such lockdep warning in latest mainline kernel git tree.
2. there is a 100% producible warning based on your latest mmotm tree
3. after applying the commit efd112 based on your mmotm tree, the warning
disappearred

I will do some further digging to answer your question if no other experts' help

--
Cheers,
Jia

2018-08-30 06:29:15

by Jia He

[permalink] [raw]
Subject: Re: mmotm 2018-08-23-17-26 uploaded

Hi Andrew

On 8/30/2018 9:00 AM, Jia He Wrote:
>
>
> On 8/30/2018 7:22 AM, Andrew Morton Wrote:
>> On Tue, 28 Aug 2018 12:20:46 +0800 Jia He <[email protected]> wrote:
>>
>>> Hi Andrew
>>> FYI,I watched a lockdep warning based on your mmotm master branch[1]
>>
>> Thanks. We'll need help from ARM peeps on this please.
>>
>>> [ 6.692731] ------------[ cut here ]------------
>>> [ 6.696391] DEBUG_LOCKS_WARN_ON(!current->hardirqs_enabled)
>>> [ 6.696404] WARNING: CPU: 3 PID: 320 at kernel/locking/lockdep.c:3845
>>> check_flags.part.38+0x9c/0x16c
>>> [ 6.711082] Modules linked in:
>>> [ 6.714101] CPU: 3 PID: 320 Comm: modprobe Not tainted 4.18.0-rc4-mm1+ #56
>>> [ 6.720956] Hardware name: WIWYNN HXT REP-1 System H001-00001-0/HXT REP-1
>>> CRB, BIOS 0ACJA530 03/20/2018
>>> [ 6.730332] pstate: 60400085 (nZCv daIf +PAN -UAO)
>>> [ 6.735106] pc : check_flags.part.38+0x9c/0x16c
>>> [ 6.739619] lr : check_flags.part.38+0x9c/0x16c
>>> [ 6.744133] sp : ffff80178536fbf0
>>> [ 6.747432] x29: ffff80178536fbf0 x28: ffff8017905a1b00
>>> [ 6.752727] x27: 0000000000000002 x26: 0000000000000000
>>> [ 6.758022] x25: ffff000008abeb14 x24: 0000000000000000
>>> [ 6.763317] x23: 0000000000000001 x22: 0000000000000001
>>> [ 6.768612] x21: 0000000000000001 x20: 0000000000000000
>>> [ 6.773908] x19: ffff00000a041000 x18: 0000000000000000
>>> [ 6.779202] x17: 0000000000000000 x16: 0000000000000000
>>> [ 6.784498] x15: 0000000000000000 x14: 0000000000000000
>>> [ 6.789793] x13: ffff000008d6b190 x12: 752ce9eb60de3f00
>>> [ 6.795088] x11: ffff80178536f7f0 x10: ffff80178536f7f0
>>> [ 6.800383] x9 : 00000000ffffffd0 x8 : 0000000000000000
>>> [ 6.805678] x7 : ffff00000816fe48 x6 : ffff801794ba62b8
>>> [ 6.810973] x5 : 0000000000000000 x4 : 0000000000000000
>>> [ 6.816269] x3 : ffffffffffffffff x2 : ffff0000091ed988
>>> [ 6.821564] x1 : 752ce9eb60de3f00 x0 : 752ce9eb60de3f00
>>> [ 6.826859] Call trace:
>>> [ 6.829290] check_flags.part.38+0x9c/0x16c
>>> [ 6.833457] lock_acquire+0x12c/0x280
>>> [ 6.837104] down_read_trylock+0x78/0x98
>>> [ 6.841011] do_page_fault+0x150/0x480
>>> [ 6.844742] do_translation_fault+0x74/0x80
>>> [ 6.848909] do_mem_abort+0x60/0x108
>>> [ 6.852467] el0_da+0x24/0x28
>>> [ 6.855418] irq event stamp: 250
>>> [ 6.858633] hardirqs last enabled at (249): [<ffff00000830e518>]
>>> mem_cgroup_commit_charge+0x9c/0x13c
>>> [ 6.867833] hardirqs last disabled at (250): [<ffff000008095f40>]
>>> el0_svc_handler+0xc4/0x16c
>>> [ 6.876252] softirqs last enabled at (242): [<ffff000008081c48>]
>>> __do_softirq+0x2f8/0x554
>>> [ 6.884501] softirqs last disabled at (229): [<ffff0000080f1bec>]
>>> irq_exit+0x180/0x194
>>> [ 6.892399] ---[ end trace b45768f94a7b7d9f ]---
>>> [ 6.896998] possible reason: unannotated irqs-on.
>>> [ 6.901685] irq event stamp: 250
>>> [ 6.904898] hardirqs last enabled at (249): [<ffff00000830e518>]
>>> mem_cgroup_commit_charge+0x9c/0x13c
>>> [ 6.914100] hardirqs last disabled at (250): [<ffff000008095f40>]
>>> el0_svc_handler+0xc4/0x16c
>>> [ 6.922519] softirqs last enabled at (242): [<ffff000008081c48>]
>>> __do_softirq+0x2f8/0x554
>>> [ 6.930766] softirqs last disabled at (229): [<ffff0000080f1bec>]
>>> irq_exit+0x180/0x194
>>> [ 7.023827] Initialise system trusted keyrings
>>> [ 7.027414] workingset: timestamp_bits=45 max_order=25 bucket_order=0
>>
>> Lockdep says current->hardirqs_enabled is false and that is indeed an
>> error. arch/arm64/kernel/entry.S:el0_da does enable_daif which might
>> be an attempt to enable hardirqs, but how does that get propagated into
>> lockdep's ->hardirqs_enabled? By calling
>> local_irq_enable()->trace_hardirqs_on(), but that's C, not assembler.
>>
>> And what changed to cause this?
>>
>> I dunno anything. Help!
>>
>>> I thought the root cause might be at [2] which seems not in your branch yet.
>>>
>>> [1] http://git.cmpxchg.org/cgit.cgi/linux-mmotm.git
>>> [2]
>>> https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit?id=efd112
>>
>> I agree, that doesn't look like the culprit. But something may well
>> have gone wrong in "the recent conversion of the syscall entry/exit
>> code to C".
> Sorry for my unclearly previously description.
> 1. no such lockdep warning in latest mainline kernel git tree.
> 2. there is a 100% producible warning based on your latest mmotm tree
> 3. after applying the commit efd112 based on your mmotm tree, the warning
> disappearred
>
> I will do some further digging to answer your question if no other experts' help
>
1. in el0_svc->el0_svc_common, without commit efd112
local_daif_mask(); //disable the irq and trace irq off
flags = current_thread_info()->flags;
if (!has_syscall_work(flags))
------------ //1
return;
If el0_svc_common enters the logic at line 1, the irq is disabled and
current->hardirqs_enabled is 0.

2. then it goes to el0_da
in el0_da, it enables the irq without changing current->hardirqs_enabled to 1

3. goes to el0_da->do_mem_abort->... the lockdep warning happens

The commit efd112 fixes it by invoking trace_hardirqs_off at line 1.
It closes the inconsistency window.

Cheers,
Jia

--
Cheers,
Jia

2018-08-30 09:23:35

by Will Deacon

[permalink] [raw]
Subject: Re: mmotm 2018-08-23-17-26 uploaded

On Thu, Aug 30, 2018 at 02:26:51PM +0800, Jia He wrote:
> On 8/30/2018 9:00 AM, Jia He Wrote:
> > On 8/30/2018 7:22 AM, Andrew Morton Wrote:
> >> On Tue, 28 Aug 2018 12:20:46 +0800 Jia He <[email protected]> wrote:
> >>> FYI,I watched a lockdep warning based on your mmotm master branch[1]
> >>
> >> Thanks. We'll need help from ARM peeps on this please.
> >>
> >>> [ 6.692731] ------------[ cut here ]------------
> >>> [ 6.696391] DEBUG_LOCKS_WARN_ON(!current->hardirqs_enabled)

[...]

> >>> I thought the root cause might be at [2] which seems not in your branch yet.
> >>>
> >>> [1] http://git.cmpxchg.org/cgit.cgi/linux-mmotm.git
> >>> [2]
> >>> https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit?id=efd112
> >>
> >> I agree, that doesn't look like the culprit. But something may well
> >> have gone wrong in "the recent conversion of the syscall entry/exit
> >> code to C".
> > Sorry for my unclearly previously description.
> > 1. no such lockdep warning in latest mainline kernel git tree.
> > 2. there is a 100% producible warning based on your latest mmotm tree
> > 3. after applying the commit efd112 based on your mmotm tree, the warning
> > disappearred
> >
> > I will do some further digging to answer your question if no other experts' help
> >
> 1. in el0_svc->el0_svc_common, without commit efd112
> local_daif_mask(); //disable the irq and trace irq off
> flags = current_thread_info()->flags;
> if (!has_syscall_work(flags))
> ------------ //1
> return;
> If el0_svc_common enters the logic at line 1, the irq is disabled and
> current->hardirqs_enabled is 0.
>
> 2. then it goes to el0_da
> in el0_da, it enables the irq without changing current->hardirqs_enabled to 1
>
> 3. goes to el0_da->do_mem_abort->... the lockdep warning happens
>
> The commit efd112 fixes it by invoking trace_hardirqs_off at line 1.
> It closes the inconsistency window.

Right, we fixed this last month in commit efd112353bf7 ("arm64: svc: Ensure
hardirq tracing is updated before return"). Is there anything more you need
from us on the Arm side?

Will