Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merge/sound upstream 20210914 #3153

Merged
merged 10,000 commits into from
Sep 15, 2021

Conversation

ujfalusi
Copy link
Collaborator

5.15-rc1 is out, it is time for catching up.

sunnanyong and others added 30 commits September 8, 2021 11:50
If kobject_init_and_add return with error, kobject_put() is needed here to
avoid memory leak, because kobject_init_and_add may return error without
freeing the memory associated with the kobject it allocated.

Link: https://lkml.kernel.org/r/[email protected]
Link: https://lkml.kernel.org/r/[email protected]
Signed-off-by: Nanyong Sun <[email protected]>
Signed-off-by: Ryusuke Konishi <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
The kobject_put() should be used to cleanup the memory associated with the
kobject instead of kobject_del.  See the section "Kobject removal" of
"Documentation/core-api/kobject.rst".

Link: https://lkml.kernel.org/r/[email protected]
Link: https://lkml.kernel.org/r/[email protected]
Signed-off-by: Nanyong Sun <[email protected]>
Signed-off-by: Ryusuke Konishi <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
If kobject_init_and_add returns with error, kobject_put() is needed here
to avoid memory leak, because kobject_init_and_add may return error
without freeing the memory associated with the kobject it allocated.

Link: https://lkml.kernel.org/r/[email protected]
Link: https://lkml.kernel.org/r/[email protected]
Signed-off-by: Nanyong Sun <[email protected]>
Signed-off-by: Ryusuke Konishi <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
kobject_put() should be used to cleanup the memory associated with the
kobject instead of kobject_del().  See the section "Kobject removal" of
"Documentation/core-api/kobject.rst".

Link: https://lkml.kernel.org/r/[email protected]
Link: https://lkml.kernel.org/r/[email protected]
Signed-off-by: Nanyong Sun <[email protected]>
Signed-off-by: Ryusuke Konishi <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
When the refcount is decreased to 0, the resource reclamation branch is
entered.  Before CPU0 reaches the race point (1), CPU1 may obtain the
spinlock and traverse the rbtree to find 'root', see
nilfs_lookup_root().

Although CPU1 will call refcount_inc() to increase the refcount, it is
obviously too late.  CPU0 will release 'root' directly, CPU1 then
accesses 'root' and triggers UAF.

Use refcount_dec_and_lock() to ensure that both the operations of
decrease refcount to 0 and link deletion are lock protected eliminates
this risk.

	     CPU0                      CPU1
	nilfs_put_root():
		    <-------- (1)
				spin_lock(&nilfs->ns_cptree_lock);
				rb_erase(&root->rb_node, &nilfs->ns_cptree);
				spin_unlock(&nilfs->ns_cptree_lock);

	kfree(root);
		    <-------- use-after-free

  refcount_t: underflow; use-after-free.
  WARNING: CPU: 2 PID: 9476 at lib/refcount.c:28 \
  refcount_warn_saturate+0x1cf/0x210 lib/refcount.c:28
  Modules linked in:
  CPU: 2 PID: 9476 Comm: syz-executor.0 Not tainted 5.10.45-rc1+ thesofproject#3
  Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), ...
  RIP: 0010:refcount_warn_saturate+0x1cf/0x210 lib/refcount.c:28
  ... ...
  Call Trace:
     __refcount_sub_and_test include/linux/refcount.h:283 [inline]
     __refcount_dec_and_test include/linux/refcount.h:315 [inline]
     refcount_dec_and_test include/linux/refcount.h:333 [inline]
     nilfs_put_root+0xc1/0xd0 fs/nilfs2/the_nilfs.c:795
     nilfs_segctor_destroy fs/nilfs2/segment.c:2749 [inline]
     nilfs_detach_log_writer+0x3fa/0x570 fs/nilfs2/segment.c:2812
     nilfs_put_super+0x2f/0xf0 fs/nilfs2/super.c:467
     generic_shutdown_super+0xcd/0x1f0 fs/super.c:464
     kill_block_super+0x4a/0x90 fs/super.c:1446
     deactivate_locked_super+0x6a/0xb0 fs/super.c:335
     deactivate_super+0x85/0x90 fs/super.c:366
     cleanup_mnt+0x277/0x2e0 fs/namespace.c:1118
     __cleanup_mnt+0x15/0x20 fs/namespace.c:1125
     task_work_run+0x8e/0x110 kernel/task_work.c:151
     tracehook_notify_resume include/linux/tracehook.h:188 [inline]
     exit_to_user_mode_loop kernel/entry/common.c:164 [inline]
     exit_to_user_mode_prepare+0x13c/0x170 kernel/entry/common.c:191
     syscall_exit_to_user_mode+0x16/0x30 kernel/entry/common.c:266
     do_syscall_64+0x45/0x80 arch/x86/entry/common.c:56
     entry_SYSCALL_64_after_hwframe+0x44/0xa9

There is no reproduction program, and the above is only theoretical
analysis.

Link: https://lkml.kernel.org/r/[email protected]
Fixes: ba65ae4 ("nilfs2: add checkpoint tree to nilfs object")
Link: https://lkml.kernel.org/r/[email protected]
Signed-off-by: Zhen Lei <[email protected]>
Signed-off-by: Ryusuke Konishi <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
…issions

For obvious security reasons, a core dump is aborted if the filesystem
cannot preserve ownership or permissions of the dump file.

This affects filesystems like e.g.  vfat, but also something like a 9pfs
share in a Qemu test setup, running as a regular user, depending on the
security model used.  In those cases, the result is an empty core file and
a confused user.

To hopefully save other people a lot of time figuring out the cause, this
patch adds a simple log message for those specific cases.

[[email protected]: s/|%s/%s/ in printk text]

Link: https://lkml.kernel.org/r/[email protected]
Signed-off-by: David Oberhollenzer <[email protected]>
Cc: Al Viro <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
dump_vma_snapshot() allocs memory for *vma_meta, when dump_vma_snapshot()
returns -EFAULT, the memory will be leaked, so we free it correctly.

Link: https://lkml.kernel.org/r/[email protected]
Fixes: a07279c ("binfmt_elf, binfmt_elf_fdpic: use a VMA list snapshot")
Signed-off-by: QiuXi <[email protected]>
Cc: Al Viro <[email protected]>
Cc: Jann Horn <[email protected]>
Cc: Greg Kroah-Hartman <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
Only used by core code and the tomoyo which can't be a module either.

Link: https://lkml.kernel.org/r/[email protected]
Signed-off-by: Christoph Hellwig <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
pidmap_init() has already been replaced with pid_idr_init() in the commit
95846ec ("pid: replace pid bitmap implementation with IDR API").
Cleanup the stale comment which still mentions it.

Link: https://lkml.kernel.org/r/[email protected]
Signed-off-by: Takahiro Itazuri <[email protected]>
Cc: Kuniyuki Iwashima <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
Keno Fischer reported that when a binray loaded via ld-linux-x the
prctl(PR_SET_MM_MAP) doesn't allow to setup brk value because it lays
before mm:end_data.

For example a test program shows

 | # ~/t
 |
 | start_code      401000
 | end_code        401a15
 | start_stack     7ffce4577dd0
 | start_data	   403e10
 | end_data        40408c
 | start_brk	   b5b000
 | sbrk(0)         b5b000

and when executed via ld-linux

 | # /lib64/ld-linux-x86-64.so.2 ~/t
 |
 | start_code      7fc25b0a4000
 | end_code        7fc25b0c4524
 | start_stack     7fffcc6b2400
 | start_data	   7fc25b0ce4c0
 | end_data        7fc25b0cff98
 | start_brk	   55555710c000
 | sbrk(0)         55555710c000

This of course prevent criu from restoring such programs.  Looking into
how kernel operates with brk/start_brk inside brk() syscall I don't see
any problem if we allow to setup brk/start_brk without checking for
end_data.  Even if someone pass some weird address here on a purpose then
the worst possible result will be an unexpected unmapping of existing vma
(own vma, since prctl works with the callers memory) but test for
RLIMIT_DATA is still valid and a user won't be able to gain more memory in
case of expanding VMAs via new values shipped with prctl call.

Link: https://lkml.kernel.org/r/20210121221207.GB2174@grain
Fixes: bbdc607 ("binfmt_elf: move brk out of mmap when doing direct loader exec")
Signed-off-by: Cyrill Gorcunov <[email protected]>
Reported-by: Keno Fischer <[email protected]>
Acked-by: Andrey Vagin <[email protected]>
Tested-by: Andrey Vagin <[email protected]>
Cc: Dmitry Safonov <[email protected]>
Cc: Kirill Tkhai <[email protected]>
Cc: Eric W. Biederman <[email protected]>
Cc: Pavel Tikhomirov <[email protected]>
Cc: Alexander Mikhalitsyn <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
This CONFIG option was removed in commit 278b13c ("Input: remove
input_polled_dev implementation") so there's no point to keep it in
defconfigs any longer.

Get rid of the leftover for all arches.

Link: https://lkml.kernel.org/r/[email protected]
Signed-off-by: Zenghui Yu <[email protected]>
Cc: Dmitry Torokhov <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
Commit 05a4a95 ("kernel/watchdog: split up config options") adds a
new config HARDLOCKUP_DETECTOR, which selects the non-existing config
HARDLOCKUP_DETECTOR_ARCH.

Hence, ./scripts/checkkconfigsymbols.py warns:

HARDLOCKUP_DETECTOR_ARCH Referencing files: lib/Kconfig.debug

Simply drop selecting the non-existing HARDLOCKUP_DETECTOR_ARCH.

Link: https://lkml.kernel.org/r/[email protected]
Fixes: 05a4a95 ("kernel/watchdog: split up config options")
Signed-off-by: Lukas Bulwahn <[email protected]>
Cc: Nicholas Piggin <[email protected]>
Cc: Masahiro Yamada <[email protected]>
Cc: Babu Moger <[email protected]>
Cc: Don Zickus <[email protected]>
Cc: Randy Dunlap <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
Commit 5440298 ("selftests/memfd: add tests for F_SEAL_FUTURE_WRITE
seal") added an unused variable to mfd_assert_reopen_fd().

Delete the unused variable.

Link: https://lkml.kernel.org/r/[email protected]
Fixes: 5440298 ("selftests/memfd: add tests for F_SEAL_FUTURE_WRITE seal")
Signed-off-by: Greg Thelen <[email protected]>
Cc: Shuah Khan <[email protected]>
Cc: Michael Ellerman <[email protected]>
Cc: "Joel Fernandes (Google)" <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
sysvipc_find_ipc() was left with a costly way to check if the offset
position fed to it is bigger than the total number of IPC IDs in use.  So
much so that the time it takes to iterate over /proc/sysvipc/* files grows
exponentially for a custom benchmark that creates "N" SYSV shm segments
and then times the read of /proc/sysvipc/shm (milliseconds):

    12 msecs to read   1024 segs from /proc/sysvipc/shm
    18 msecs to read   2048 segs from /proc/sysvipc/shm
    65 msecs to read   4096 segs from /proc/sysvipc/shm
   325 msecs to read   8192 segs from /proc/sysvipc/shm
  1303 msecs to read  16384 segs from /proc/sysvipc/shm
  5182 msecs to read  32768 segs from /proc/sysvipc/shm

The root problem lies with the loop that computes the total amount of ids
in use to check if the "pos" feeded to sysvipc_find_ipc() grew bigger than
"ids->in_use".  That is a quite inneficient way to get to the maximum
index in the id lookup table, specially when that value is already
provided by struct ipc_ids.max_idx.

This patch follows up on the optimization introduced via commit
15df03c ("sysvipc: make get_maxid O(1) again") and gets rid of the
aforementioned costly loop replacing it by a simpler checkpoint based on
ipc_get_maxidx() returned value, which allows for a smooth linear increase
in time complexity for the same custom benchmark:

     2 msecs to read   1024 segs from /proc/sysvipc/shm
     2 msecs to read   2048 segs from /proc/sysvipc/shm
     4 msecs to read   4096 segs from /proc/sysvipc/shm
     9 msecs to read   8192 segs from /proc/sysvipc/shm
    19 msecs to read  16384 segs from /proc/sysvipc/shm
    39 msecs to read  32768 segs from /proc/sysvipc/shm

Link: https://lkml.kernel.org/r/[email protected]
Signed-off-by: Rafael Aquini <[email protected]>
Acked-by: Davidlohr Bueso <[email protected]>
Acked-by: Manfred Spraul <[email protected]>
Cc: Waiman Long <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
Use the documented kernel-doc format to prevent kernel-doc warnings.

mm/workingset.c:256: warning: No description found for return value of 'workingset_eviction'
mm/workingset.c:285: warning: Function parameter or member 'folio' not described in 'workingset_refault'
mm/workingset.c:285: warning: Excess function parameter 'page' description in 'workingset_refault'

Link: https://lkml.kernel.org/r/[email protected]
Signed-off-by: Randy Dunlap <[email protected]>
Cc: Matthew Wilcox (Oracle) <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
Fix typo ("and" should be "an") in an error message.

Link: https://lkml.kernel.org/r/[email protected]
Signed-off-by: Randy Dunlap <[email protected]>
Cc: Quentin Casasnovas <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
Find and verify PRMT before parsing it, which eliminates a
warning on machines without PRMT:

	[    7.197173] ACPI: PRMT not present

Fixes: cefc7ca ("ACPI: PRM: implement OperationRegion handler for the PlatformRtMechanism subtype")
Signed-off-by: Aubrey Li <[email protected]>
Tested-by: Paul Menzel <[email protected]>
Cc: 5.14+ <[email protected]> # 5.14+
[ rjw: Subject and changelog edits ]
Signed-off-by: Rafael J. Wysocki <[email protected]>
…ads()

When start_kthread() return error, the cpus_read_unlock() need
to be called.

Link: https://lkml.kernel.org/r/[email protected]

Cc: <[email protected]>
Fixes: c8895e2 ("trace/osnoise: Support hotplug operations")
Acked-by: Daniel Bristot de Oliveira <[email protected]>
Signed-off-by: Qiang.Zhang <[email protected]>
Signed-off-by: Steven Rostedt (VMware) <[email protected]>
…removed

Since the bootconfig is used only in the init functions,
it doesn't need to keep the data after boot. Free it when
the init memory is removed.

Link: https://lkml.kernel.org/r/163077084958.222577.5924961258513004428.stgit@devnote2

Signed-off-by: Masami Hiramatsu <[email protected]>
Signed-off-by: Steven Rostedt (VMware) <[email protected]>
Reorder the init parameters from bootconfig and kernel cmdline
so that the kernel cmdline always be the last part of the
parameters as below.

 " -- "[bootconfig init params][cmdline init params]

This change will help us to prevent that bootconfig init params
overwrite the init params which user gives in the command line.

Link: https://lkml.kernel.org/r/163077085675.222577.5665176468023636160.stgit@devnote2

Signed-off-by: Masami Hiramatsu <[email protected]>
Signed-off-by: Steven Rostedt (VMware) <[email protected]>
Add a section to describe how to use the bootconfig for
specifying kernel and init parameters. This is an important
section because it is the reason why this document is under
the admin-guide.

Link: https://lkml.kernel.org/r/163077086399.222577.5881779375643977991.stgit@devnote2

Signed-off-by: Masami Hiramatsu <[email protected]>
Cc: Jonathan Corbet <[email protected]>
Cc: [email protected]
Signed-off-by: Steven Rostedt (VMware) <[email protected]>
Since tracing_on indicates only "1" (default) or "0", ftrace2bconf.sh
only need to check the value is "0".

Link: https://lkml.kernel.org/r/163077087144.222577.6888011847727968737.stgit@devnote2

Fixes: 55ed456 ("tools/bootconfig: Add tracing_on support to helper scripts")
Signed-off-by: Masami Hiramatsu <[email protected]>
Signed-off-by: Steven Rostedt (VMware) <[email protected]>
The function `xbc_show_list should` handle the keys during the
composition. Even the errors returned by the compose function. Instead
of removing the `ret` variable, it should save the value and show the
exact error. This missing variable is causing a compilation issue also.

Link: https://lkml.kernel.org/r/163077087861.222577.12884543474750968146.stgit@devnote2

Fixes: e5efaeb ("bootconfig: Support mixing a value and subkeys under a key")
Signed-off-by: Julio Faracco <[email protected]>
Acked-by: Masami Hiramatsu <[email protected]>
Cc: [email protected]
Signed-off-by: Steven Rostedt (VMware) <[email protected]>
Show whole test command instead of only the 3rd argument.
This will clear to show what will be actually tested by
each test case.

Link: https://lkml.kernel.org/r/163077088607.222577.14786016266462495017.stgit@devnote2

Signed-off-by: Masami Hiramatsu <[email protected]>
Signed-off-by: Steven Rostedt (VMware) <[email protected]>
Sometimes it is useful to construct larger synthetic trace events. Increase
'SYNTH_FIELDS_MAX' (maximum number of fields in a synthetic event) from 32 to
64.

Link: https://lkml.kernel.org/r/[email protected]

Signed-off-by: Artem Bityutskiy <[email protected]>
Acked-by: Tom Zanussi <[email protected]>
Signed-off-by: Steven Rostedt (VMware) <[email protected]>
Setting the hist_elt_data.field_var_str[] array unconditionally to a
size of SYNTH_FIELD_MAX elements wastes space unnecessarily.  The
actual number of elements needed can be calculated at run-time
instead.

In most cases, this will save a lot of space since it's a per-elt
array which isn't normally close to being full.  It also allows us to
increase SYNTH_FIELD_MAX without worrying about even more wastage when
we do that.

Link: https://lkml.kernel.org/r/[email protected]

Signed-off-by: Tom Zanussi <[email protected]>
Tested-by: Artem Bityutskiy <[email protected]>
Signed-off-by: Steven Rostedt (VMware) <[email protected]>
The original test for adding and removing eprobes used synthetic events
and retrieved the filename from the open system call at the end of the
system call. This would allow it to always be loaded into the page tables
when accessed.

Masami suggested that the test was too complex for just testing add and
remove, so it was changed to test just adding and removing an event probe
on top of the start of the open system call event. Now it is possible that
the filename will not be loaded into memory at the time the eprobe is
triggered, and will result in "(fault)" being displayed in the event. This
causes the test to fail.

Account for "(fault)" also being one of the values of the filename field
of the event probe.

Link: https://lkml.kernel.org/r/[email protected]

Fixes: 079db70 ("selftests/ftrace: Add test case to test adding and removing of event probe")
Acked-by: Masami Hiramatsu <[email protected]>
Signed-off-by: Steven Rostedt (VMware) <[email protected]>
…rnel/git/vbabka/linux

Pull SLUB updates from Vlastimil Babka:
 "SLUB: reduce irq disabled scope and make it RT compatible

  This series was initially inspired by Mel's pcplist local_lock
  rewrite, and also interest to better understand SLUB's locking and the
  new primitives and RT variants and implications. It makes SLUB
  compatible with PREEMPT_RT and generally more preemption-friendly,
  apparently without significant regressions, as the fast paths are not
  affected.

  The main changes to SLUB by this series:

   - irq disabling is now only done for minimum amount of time needed to
     protect the strict kmem_cache_cpu fields, and as part of spin lock,
     local lock and bit lock operations to make them irq-safe

   - SLUB is fully PREEMPT_RT compatible

  The series should now be sufficiently tested in both RT and !RT
  configs, mainly thanks to Mike.

  The RFC/v1 version also got basic performance screening by Mel that
  didn't show major regressions. Mike's testing with hackbench of v2 on
  !RT reported negligible differences [6]:

    virgin(ish) tip
    5.13.0.g60ab3ed-tip
              7,320.67 msec task-clock                #    7.792 CPUs utilized            ( +-  0.31% )
               221,215      context-switches          #    0.030 M/sec                    ( +-  3.97% )
                16,234      cpu-migrations            #    0.002 M/sec                    ( +-  4.07% )
                13,233      page-faults               #    0.002 M/sec                    ( +-  0.91% )
        27,592,205,252      cycles                    #    3.769 GHz                      ( +-  0.32% )
         8,309,495,040      instructions              #    0.30  insn per cycle           ( +-  0.37% )
         1,555,210,607      branches                  #  212.441 M/sec                    ( +-  0.42% )
             5,484,209      branch-misses             #    0.35% of all branches          ( +-  2.13% )

               0.93949 +- 0.00423 seconds time elapsed  ( +-  0.45% )
               0.94608 +- 0.00384 seconds time elapsed  ( +-  0.41% ) (repeat)
               0.94422 +- 0.00410 seconds time elapsed  ( +-  0.43% )

    5.13.0.g60ab3ed-tip +slub-local-lock-v2r3
              7,343.57 msec task-clock                #    7.776 CPUs utilized            ( +-  0.44% )
               223,044      context-switches          #    0.030 M/sec                    ( +-  3.02% )
                16,057      cpu-migrations            #    0.002 M/sec                    ( +-  4.03% )
                13,164      page-faults               #    0.002 M/sec                    ( +-  0.97% )
        27,684,906,017      cycles                    #    3.770 GHz                      ( +-  0.45% )
         8,323,273,871      instructions              #    0.30  insn per cycle           ( +-  0.28% )
         1,556,106,680      branches                  #  211.901 M/sec                    ( +-  0.31% )
             5,463,468      branch-misses             #    0.35% of all branches          ( +-  1.33% )

               0.94440 +- 0.00352 seconds time elapsed  ( +-  0.37% )
               0.94830 +- 0.00228 seconds time elapsed  ( +-  0.24% ) (repeat)
               0.93813 +- 0.00440 seconds time elapsed  ( +-  0.47% ) (repeat)

  RT configs showed some throughput regressions, but that's expected
  tradeoff for the preemption improvements through the RT mutex. It
  didn't prevent the v2 to be incorporated to the 5.13 RT tree [7],
  leading to testing exposure and bugfixes.

  Before the series, SLUB is lockless in both allocation and free fast
  paths, but elsewhere, it's disabling irqs for considerable periods of
  time - especially in allocation slowpath and the bulk allocation,
  where IRQs are re-enabled only when a new page from the page allocator
  is needed, and the context allows blocking. The irq disabled sections
  can then include deactivate_slab() which walks a full freelist and
  frees the slab back to page allocator or unfreeze_partials() going
  through a list of percpu partial slabs. The RT tree currently has some
  patches mitigating these, but we can do much better in mainline too.

  Patches 1-6 are straightforward improvements or cleanups that could
  exist outside of this series too, but are prerequsities.

  Patches 7-9 are also preparatory code changes without functional
  changes, but not so useful without the rest of the series.

  Patch 10 simplifies the fast paths on systems with preemption, based
  on (hopefully correct) observation that the current loops to verify
  tid are unnecessary.

  Patches 11-20 focus on reducing irq disabled scope in the allocation
  slowpath:

   - patch 11 moves disabling of irqs into ___slab_alloc() from its
     callers, which are the allocation slowpath, and bulk allocation.
     Instead these callers only disable preemption to stabilize the cpu.

   - The following patches then gradually reduce the scope of disabled
     irqs in ___slab_alloc() and the functions called from there. As of
     patch 14, the re-enabling of irqs based on gfp flags before calling
     the page allocator is removed from allocate_slab(). As of patch 17,
     it's possible to reach the page allocator (in case of existing
     slabs depleted) without disabling and re-enabling irqs a single
     time.

  Pathces 21-26 reduce the scope of disabled irqs in functions related
  to unfreezing percpu partial slab.

  Patch 27 is preparatory. Patch 28 is adopted from the RT tree and
  converts the flushing of percpu slabs on all cpus from using IPI to
  workqueue, so that the processing isn't happening with irqs disabled
  in the IPI handler. The flushing is not performance critical so it
  should be acceptable.

  Patch 29 also comes from RT tree and makes object_map_lock RT
  compatible.

  Patch 30 make slab_lock irq-safe on RT where we cannot rely on having
  irq disabled from the list_lock spin lock usage.

  Patch 31 changes kmem_cache_cpu->partial handling in put_cpu_partial()
  from cmpxchg loop to a short irq disabled section, which is used by
  all other code modifying the field. This addresses a theoretical race
  scenario pointed out by Jann, and makes the critical section safe wrt
  with RT local_lock semantics after the conversion in patch 35.

  Patch 32 changes preempt disable to migrate disable, so that the
  nested list_lock spinlock is safe to take on RT. Because
  migrate_disable() is a function call even on !RT, a small set of
  private wrappers is introduced to keep using the cheaper
  preempt_disable() on !PREEMPT_RT configurations. As of this patch,
  SLUB should be already compatible with RT's lock semantics.

  Finally, patch 33 changes irq disabled sections that protect
  kmem_cache_cpu fields in the slow paths, with a local lock. However on
  PREEMPT_RT it means the lockless fast paths can now preempt slow paths
  which don't expect that, so the local lock has to be taken also in the
  fast paths and they are no longer lockless. RT folks seem to not mind
  this tradeoff. The patch also updates the locking documentation in the
  file's comment"

Mike Galbraith and Mel Gorman verified that their earlier testing
observations still hold for the final series:

Link: https://lore.kernel.org/lkml/[email protected]/
Link: https://lore.kernel.org/lkml/[email protected]/

* tag 'mm-slub-5.15-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/vbabka/linux: (33 commits)
  mm, slub: convert kmem_cpu_slab protection to local_lock
  mm, slub: use migrate_disable() on PREEMPT_RT
  mm, slub: protect put_cpu_partial() with disabled irqs instead of cmpxchg
  mm, slub: make slab_lock() disable irqs with PREEMPT_RT
  mm: slub: make object_map_lock a raw_spinlock_t
  mm: slub: move flush_cpu_slab() invocations __free_slab() invocations out of IRQ context
  mm, slab: split out the cpu offline variant of flush_slab()
  mm, slub: don't disable irqs in slub_cpu_dead()
  mm, slub: only disable irq with spin_lock in __unfreeze_partials()
  mm, slub: separate detaching of partial list in unfreeze_partials() from unfreezing
  mm, slub: detach whole partial list at once in unfreeze_partials()
  mm, slub: discard slabs in unfreeze_partials() without irqs disabled
  mm, slub: move irq control into unfreeze_partials()
  mm, slub: call deactivate_slab() without disabling irqs
  mm, slub: make locking in deactivate_slab() irq-safe
  mm, slub: move reset of c->page and freelist out of deactivate_slab()
  mm, slub: stop disabling irqs around get_partial()
  mm, slub: check new pages with restored irqs
  mm, slub: validate slab from partial list or page allocator before making it cpu slab
  mm, slub: restore irqs around calling new_slab()
  ...
Since the commit e5efaeb ("bootconfig: Support mixing
a value and subkeys under a key") allows to co-exist a value
node and key nodes under a node, xbc_node_for_each_child()
is not only returning key node but also a value node.
In the boot-time tracing using xbc_node_for_each_child() to
iterate the events, groups and instances, but those must be
key nodes. Thus it must use xbc_node_for_each_subkey().

Link: https://lkml.kernel.org/r/163112988361.74896.2267026262061819145.stgit@devnote2

Fixes: e5efaeb ("bootconfig: Support mixing a value and subkeys under a key")
Signed-off-by: Masami Hiramatsu <[email protected]>
Signed-off-by: Steven Rostedt (VMware) <[email protected]>
Merge more updates from Andrew Morton:
 "147 patches, based on 7d2a07b.

  Subsystems affected by this patch series: mm (memory-hotplug, rmap,
  ioremap, highmem, cleanups, secretmem, kfence, damon, and vmscan),
  alpha, percpu, procfs, misc, core-kernel, MAINTAINERS, lib,
  checkpatch, epoll, init, nilfs2, coredump, fork, pids, criu, kconfig,
  selftests, ipc, and scripts"

* emailed patches from Andrew Morton <[email protected]>: (94 commits)
  scripts: check_extable: fix typo in user error message
  mm/workingset: correct kernel-doc notations
  ipc: replace costly bailout check in sysvipc_find_ipc()
  selftests/memfd: remove unused variable
  Kconfig.debug: drop selecting non-existing HARDLOCKUP_DETECTOR_ARCH
  configs: remove the obsolete CONFIG_INPUT_POLLDEV
  prctl: allow to setup brk for et_dyn executables
  pid: cleanup the stale comment mentioning pidmap_init().
  kernel/fork.c: unexport get_{mm,task}_exe_file
  coredump: fix memleak in dump_vma_snapshot()
  fs/coredump.c: log if a core dump is aborted due to changed file permissions
  nilfs2: use refcount_dec_and_lock() to fix potential UAF
  nilfs2: fix memory leak in nilfs_sysfs_delete_snapshot_group
  nilfs2: fix memory leak in nilfs_sysfs_create_snapshot_group
  nilfs2: fix memory leak in nilfs_sysfs_delete_##name##_group
  nilfs2: fix memory leak in nilfs_sysfs_create_##name##_group
  nilfs2: fix NULL pointer in nilfs_##name##_attr_release
  nilfs2: fix memory leak in nilfs_sysfs_create_device_group
  trap: cleanup trap_init()
  init: move usermodehelper_enable() to populate_rootfs()
  ...
wenliangwu and others added 15 commits September 13, 2021 01:59
The unnecessary conditional inclusion caused the following warning.

>> sound/soc/mediatek/mt8195/mt8195-afe-pcm.c:3260:32: warning: unused
>> variable 'mt8195_afe_pm_ops' [-Wunused-const-variable]
   static const struct dev_pm_ops mt8195_afe_pm_ops = {
                                  ^
   1 warning generated.

Because runtime_pm already handles the case without CONFIG_PM, we
can remove CONFIG_PM condition.

Fixes: 6746cc8 ("ASoC: mediatek: mt8195: add platform driver")
Signed-off-by: Trevor Wu <[email protected]>
Reported-by: kernel test robot <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Mark Brown <[email protected]>
If the value/data associated with a control changes in SOF it will send a
notification (SOF_IPC_GLB_COMP_MSG with SOF_IPC_COMP_GET_VALUE/DATA).

We have support for binary volatile control type, but we might have
features where enum/switch/volume changes. Re-implementing everything as
volatile as well would be not much of a gain for several reasons:
- volatile controls would do an IPC all the time, regardless if there is a
  need or not.
- We still don't have notification which forces userspace to continuously
  poll.

When such notification arrives we use snd_ctl_notify_one() to signal
userspace about the change.

The kernel is prepared for two types of notification:
- the notification carries the new data for the control (num_elems != 0)
The new value/data is copied to the control's local data

- blank message about a change
The new flag for the scontrol (comp_data_dirty) is set and when next
time user space reads the value via the kcontrol's get callback we will
refresh the control's local data from the firmware.

Signed-off-by: Peter Ujfalusi <[email protected]>
Reviewed-by: Kai Vehmanen <[email protected]>
Reviewed-by: Pierre-Louis Bossart <[email protected]>
Reviewed-by: Guennadi Liakhovetski <[email protected]>
Tested-by: Seppo Ingalsuo <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Mark Brown <[email protected]>
Add i2s reference control for rt1011 amp.

Signed-off-by: Jack Yu <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Mark Brown <[email protected]>
the pcm5102a is capable of 384k, but the current code limits it to 192k.
This commit extends to 384k

Signed-off-by: gearhead <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Mark Brown <[email protected]>
Loud Technologies Mackie Onyx 1640i (former model) is identified as
the model which uses OXFW971. The analysis of packet dump shows that
it transfers events in blocking method of IEC 61883-6, however the
default behaviour of ALSA oxfw driver is for non-blocking method.

This commit adds code to detect it assuming that all of loud models
based on OXFW971 have such quirk. It brings no functional change
except for alignment rule of PCM buffer.

Signed-off-by: Takashi Sakamoto <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Takashi Iwai <[email protected]>
…ar <[email protected]>:

Following are the changes:
  - Add json-schema for 'sound-name-prefix' documentation under
    'name-perfix.yaml'
  - Use schema references wherever needed.
  - Remove txt based doc

Changelog
=========

v2 -> v3
--------
 * Removed examples in patch 1/3 as suggested by Rob
 * Added reviewed tag from Jerome for the series
 * Added reviewed tag from Rob for patch 2/3

v1 -> v2
--------
 * Provide top reference to name-prefix.yaml as suggested by Rob
   for patch 2/3
 * Dropped couple of unreachable email ids from Cc list in commit
   message of patch 2/3
 * No changes in remaining patches

Sameer Pujar (3):
  ASoC: Add json-schema documentation for sound-name-prefix
  ASoC: Use schema reference for sound-name-prefix
  ASoC: Remove name-prefix.txt

 .../devicetree/bindings/sound/name-prefix.txt      | 24 ----------------------
 .../devicetree/bindings/sound/name-prefix.yaml     | 21 +++++++++++++++++++
 .../bindings/sound/nvidia,tegra186-dspk.yaml       |  9 +++-----
 .../bindings/sound/nvidia,tegra210-dmic.yaml       |  9 +++-----
 .../bindings/sound/nvidia,tegra210-i2s.yaml        |  9 +++-----
 .../devicetree/bindings/sound/nxp,tfa989x.yaml     |  9 +++-----
 Documentation/devicetree/bindings/sound/rt5659.txt |  2 +-
 .../bindings/sound/simple-audio-mux.yaml           |  9 +++-----
 8 files changed, 37 insertions(+), 55 deletions(-)
 delete mode 100644 Documentation/devicetree/bindings/sound/name-prefix.txt
 create mode 100644 Documentation/devicetree/bindings/sound/name-prefix.yaml

--
2.7.4
…pard <[email protected]>:

Hi,

Here's another round of schema warnings fixes for the Allwinner platform.

There's a fair share of new schemas in there since the schema tools now warn
when a compatible is not documented in a schema.

We don't have any warning anymore if we use the OPP binding Rob submitted, and
since that means we have all our devices properly validated I don't expect more
fixes now, aside from the usual bunch of regressions.

Let me know what you think,
Maxime

Maxime Ripard (52):
  ASoC: dt-bindings: Add WM8978 Binding
  ASoC: dt-bindings: Convert Bluetooth SCO Link binding to a schema
  ASoC: dt-bindings: Convert SPDIF Transmitter binding to a schema
  ASoC: dt-bindings: Convert Simple Amplifier binding to a schema
  dt-bindings: Convert Reserved Memory binding to a schema
  dt-bindings: arm: Convert ARM CCI-400 binding to a schema
  dt-bindings: bluetooth: broadcom: Fix clocks check
  dt-bindings: bluetooth: realtek: Add missing max-speed
  dt-bindings: clocks: Fix typo in the H6 compatible
  dt-bindings: display: Move idk-1110wr to panel-lvds
  dt-bindings: display: Move idk-2121wr to panel-lvds
  dt-bindings: display: Move ee101ia-01d to panel-lvds
  dt-bindings: display: aa104xd12: Remove unused vcc-supply
  dt-bindings: display: aa104xd12: Fix data-mapping
  dt-bindings: display: Move aa104xd12 to panel-lvds
  dt-bindings: display: aa121td01: Remove unused vcc-supply
  dt-bindings: display: aa121td01: Fix data-mapping
  dt-bindings: display: Move aa121td01 to panel-lvds
  dt-bindings: display: Move gktw70sdae4se to panel-lvds
  dt-bindings: display: panel-lvds: Document missing panel compatibles
  dt-bindings: gnss: Convert UBlox Neo-6M binding to a schema
  dt-bindings: gpio: Convert X-Powers AXP209 GPIO binding to a schema
  dt-bindings: hwmon: Add IIO HWMON binding
  dt-bindings: input: Convert Silead GSL1680 binding to a schema
  dt-bindings: interconnect: sunxi: Add R40 MBUS compatible
  dt-bindings: media: ti,cal: Fix example
  dt-bindings: media: Convert OV5640 binding to a schema
  dt-bindings: mfd: Convert X-Powers AC100 binding to a schema
  dt-bindings: mfd: Convert X-Powers AXP binding to a schema
  dt-bindings: mmc: Convert MMC Card binding to a schema
  dt-bindings: net: dwmac: Fix typo in the R40 compatible
  dt-bindings: net: wireless: Convert ESP ESP8089 binding to a schema
  dt-bindings: regulator: Convert SY8106A binding to a schema
  dt-bindings: sunxi: Add CPU Configuration Controller Binding
  dt-bindings: sunxi: Add Allwinner A80 PRCM Binding
  dt-bindings: usb: Convert SMSC USB3503 binding to a schema
  dt-bindings: usb: dwc3: Fix usb-phy check
  dt-bindings: w1: Convert 1-Wire GPIO binding to a schema
  ARM: dts: sunxi: Rename power-supply names
  ARM: dts: sunxi: Rename gpio pinctrl names
  ARM: dts: sunxi: Fix OPP arrays
  ARM: dts: sunxi: Fix OPPs node name
  ARM: dts: sunxi: Fix the SPI NOR node names
  ARM: dts: v3s: Remove useless DMA properties
  ARM: dts: tbs711: Fix touchscreen compatible
  ARM: dts: cubieboard4: Remove the dumb-vga-dac compatible
  arm64: dts: allwinner: h5: Fix GPU thermal zone node name
  arm64: dts: allwinner: h6: Fix de3 parent clocks ordering
  arm64: dts: allwinner: a100: Fix thermal zone node name
  arm64: dts: allwinner: pinetab: Change regulator node name to avoid
    warning
  arm64: dts: allwinner: teres-i: Add missing reg
  arm64: dts: allwinner: teres-i: Remove wakekup-source from the PMIC

 .../devicetree/bindings/arm/arm,cci-400.yaml  | 216 ++++++++++
 .../bindings/arm/cci-control-port.yaml        |  38 ++
 Documentation/devicetree/bindings/arm/cci.txt | 224 ----------
 .../devicetree/bindings/arm/cpus.yaml         |   2 +
 .../arm/sunxi/allwinner,sun4i-a10-mbus.yaml   |   1 +
 .../sunxi/allwinner,sun6i-a31-cpuconfig.yaml  |  38 ++
 .../arm/sunxi/allwinner,sun9i-a80-prcm.yaml   |  33 ++
 .../clock/allwinner,sun8i-a83t-de2-clk.yaml   |   2 +-
 .../display/panel/advantech,idk-1110wr.yaml   |  69 ---
 .../display/panel/advantech,idk-2121wr.yaml   | 121 ------
 .../display/panel/innolux,ee101ia-01d.yaml    |  31 --
 .../bindings/display/panel/lvds.yaml          | 130 +++++-
 .../display/panel/mitsubishi,aa104xd12.yaml   |  75 ----
 .../display/panel/mitsubishi,aa121td01.yaml   |  74 ----
 .../display/panel/sgd,gktw70sdae4se.yaml      |  68 ---
 .../bindings/gnss/u-blox,neo-6m.yaml          |  62 +++
 .../devicetree/bindings/gnss/u-blox.txt       |  45 --
 .../devicetree/bindings/gpio/gpio-axp209.txt  |  75 ----
 .../bindings/gpio/x-powers,axp209-gpio.yaml   |  55 +++
 .../devicetree/bindings/hwmon/iio-hwmon.yaml  |  37 ++
 .../i2c/allwinner,sun6i-a31-p2wi.yaml         |   2 +-
 .../input/touchscreen/silead,gsl1680.yaml     |  91 ++++
 .../input/touchscreen/silead_gsl1680.txt      |  44 --
 .../devicetree/bindings/media/i2c/ov5640.txt  |  92 ----
 .../bindings/media/i2c/ovti,ov5640.yaml       | 154 +++++++
 .../devicetree/bindings/media/ti,cal.yaml     |   4 +-
 .../devicetree/bindings/mfd/ac100.txt         |  50 ---
 .../devicetree/bindings/mfd/axp20x.txt        | 273 ------------
 .../bindings/mfd/x-powers,ac100.yaml          | 116 +++++
 .../bindings/mfd/x-powers,axp152.yaml         | 400 ++++++++++++++++++
 .../devicetree/bindings/mmc/mmc-card.txt      |  30 --
 .../devicetree/bindings/mmc/mmc-card.yaml     |  48 +++
 .../bindings/mmc/mmc-controller.yaml          |   6 -
 .../net/allwinner,sun8i-a83t-emac.yaml        |   4 +-
 .../bindings/net/broadcom-bluetooth.yaml      |  17 +-
 .../bindings/net/realtek-bluetooth.yaml       |   2 +
 .../devicetree/bindings/net/snps,dwmac.yaml   |   6 +-
 .../bindings/net/wireless/esp,esp8089.txt     |  30 --
 .../bindings/net/wireless/esp,esp8089.yaml    |  43 ++
 .../bindings/regulator/silergy,sy8106a.yaml   |  52 +++
 .../bindings/regulator/sy8106a-regulator.txt  |  23 -
 .../reserved-memory/memory-region.yaml        |  40 ++
 .../reserved-memory/reserved-memory.txt       | 172 +-------
 .../reserved-memory/reserved-memory.yaml      |  96 +++++
 .../reserved-memory/shared-dma-pool.yaml      |  87 ++++
 .../devicetree/bindings/sound/bt-sco.txt      |  13 -
 .../bindings/sound/linux,bt-sco.yaml          |  38 ++
 .../bindings/sound/linux,spdif-dit.yaml       |  32 ++
 .../bindings/sound/simple-amplifier.txt       |  17 -
 .../sound/simple-audio-amplifier.yaml         |  45 ++
 .../bindings/sound/spdif-transmitter.txt      |  10 -
 .../devicetree/bindings/sound/wlf,wm8978.yaml |  58 +++
 .../devicetree/bindings/usb/smsc,usb3503.yaml | 108 +++++
 .../devicetree/bindings/usb/snps,dwc3.yaml    |  10 +-
 .../devicetree/bindings/usb/usb3503.txt       |  39 --
 .../devicetree/bindings/w1/w1-gpio.txt        |  27 --
 .../devicetree/bindings/w1/w1-gpio.yaml       |  44 ++
 arch/arm/boot/dts/axp209.dtsi                 |   6 +-
 arch/arm/boot/dts/axp22x.dtsi                 |   6 +-
 arch/arm/boot/dts/axp81x.dtsi                 |  10 +-
 .../arm/boot/dts/sun4i-a10-olinuxino-lime.dts |  11 +-
 arch/arm/boot/dts/sun4i-a10.dtsi              |  11 +-
 arch/arm/boot/dts/sun5i-a13.dtsi              |  15 +-
 arch/arm/boot/dts/sun6i-a31.dtsi              |  44 +-
 arch/arm/boot/dts/sun7i-a20-bananapi.dts      |  17 +-
 arch/arm/boot/dts/sun7i-a20.dtsi              |  34 +-
 arch/arm/boot/dts/sun8i-a33.dtsi              |   4 +-
 arch/arm/boot/dts/sun8i-a83t-tbs-a711.dts     |   2 +-
 arch/arm/boot/dts/sun8i-a83t.dtsi             |   4 +-
 arch/arm/boot/dts/sun8i-h3.dtsi               |   4 +-
 arch/arm/boot/dts/sun8i-v3-sl631.dtsi         |   2 +-
 arch/arm/boot/dts/sun8i-v3s.dtsi              |   2 -
 arch/arm/boot/dts/sun9i-a80-cubieboard4.dts   |   2 +-
 .../boot/dts/sunxi-libretech-all-h3-it.dtsi   |   2 +-
 arch/arm64/boot/dts/allwinner/axp803.dtsi     |  10 +-
 .../arm64/boot/dts/allwinner/sun50i-a100.dtsi |   6 +-
 .../dts/allwinner/sun50i-a64-cpu-opp.dtsi     |   2 +-
 .../dts/allwinner/sun50i-a64-orangepi-win.dts |   2 +-
 .../boot/dts/allwinner/sun50i-a64-pinetab.dts |   2 +-
 .../boot/dts/allwinner/sun50i-a64-teres-i.dts |   3 +-
 .../boot/dts/allwinner/sun50i-h5-cpu-opp.dtsi |   2 +-
 arch/arm64/boot/dts/allwinner/sun50i-h5.dtsi  |   2 +-
 .../boot/dts/allwinner/sun50i-h6-cpu-opp.dtsi |   2 +-
 arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi  |   8 +-
 84 files changed, 2191 insertions(+), 1743 deletions(-)
 create mode 100644 Documentation/devicetree/bindings/arm/arm,cci-400.yaml
 create mode 100644 Documentation/devicetree/bindings/arm/cci-control-port.yaml
 delete mode 100644 Documentation/devicetree/bindings/arm/cci.txt
 create mode 100644 Documentation/devicetree/bindings/arm/sunxi/allwinner,sun6i-a31-cpuconfig.yaml
 create mode 100644 Documentation/devicetree/bindings/arm/sunxi/allwinner,sun9i-a80-prcm.yaml
 delete mode 100644 Documentation/devicetree/bindings/display/panel/advantech,idk-1110wr.yaml
 delete mode 100644 Documentation/devicetree/bindings/display/panel/advantech,idk-2121wr.yaml
 delete mode 100644 Documentation/devicetree/bindings/display/panel/innolux,ee101ia-01d.yaml
 delete mode 100644 Documentation/devicetree/bindings/display/panel/mitsubishi,aa104xd12.yaml
 delete mode 100644 Documentation/devicetree/bindings/display/panel/mitsubishi,aa121td01.yaml
 delete mode 100644 Documentation/devicetree/bindings/display/panel/sgd,gktw70sdae4se.yaml
 create mode 100644 Documentation/devicetree/bindings/gnss/u-blox,neo-6m.yaml
 delete mode 100644 Documentation/devicetree/bindings/gnss/u-blox.txt
 delete mode 100644 Documentation/devicetree/bindings/gpio/gpio-axp209.txt
 create mode 100644 Documentation/devicetree/bindings/gpio/x-powers,axp209-gpio.yaml
 create mode 100644 Documentation/devicetree/bindings/hwmon/iio-hwmon.yaml
 create mode 100644 Documentation/devicetree/bindings/input/touchscreen/silead,gsl1680.yaml
 delete mode 100644 Documentation/devicetree/bindings/input/touchscreen/silead_gsl1680.txt
 delete mode 100644 Documentation/devicetree/bindings/media/i2c/ov5640.txt
 create mode 100644 Documentation/devicetree/bindings/media/i2c/ovti,ov5640.yaml
 delete mode 100644 Documentation/devicetree/bindings/mfd/ac100.txt
 delete mode 100644 Documentation/devicetree/bindings/mfd/axp20x.txt
 create mode 100644 Documentation/devicetree/bindings/mfd/x-powers,ac100.yaml
 create mode 100644 Documentation/devicetree/bindings/mfd/x-powers,axp152.yaml
 delete mode 100644 Documentation/devicetree/bindings/mmc/mmc-card.txt
 create mode 100644 Documentation/devicetree/bindings/mmc/mmc-card.yaml
 delete mode 100644 Documentation/devicetree/bindings/net/wireless/esp,esp8089.txt
 create mode 100644 Documentation/devicetree/bindings/net/wireless/esp,esp8089.yaml
 create mode 100644 Documentation/devicetree/bindings/regulator/silergy,sy8106a.yaml
 delete mode 100644 Documentation/devicetree/bindings/regulator/sy8106a-regulator.txt
 create mode 100644 Documentation/devicetree/bindings/reserved-memory/memory-region.yaml
 create mode 100644 Documentation/devicetree/bindings/reserved-memory/reserved-memory.yaml
 create mode 100644 Documentation/devicetree/bindings/reserved-memory/shared-dma-pool.yaml
 delete mode 100644 Documentation/devicetree/bindings/sound/bt-sco.txt
 create mode 100644 Documentation/devicetree/bindings/sound/linux,bt-sco.yaml
 create mode 100644 Documentation/devicetree/bindings/sound/linux,spdif-dit.yaml
 delete mode 100644 Documentation/devicetree/bindings/sound/simple-amplifier.txt
 create mode 100644 Documentation/devicetree/bindings/sound/simple-audio-amplifier.yaml
 delete mode 100644 Documentation/devicetree/bindings/sound/spdif-transmitter.txt
 create mode 100644 Documentation/devicetree/bindings/sound/wlf,wm8978.yaml
 create mode 100644 Documentation/devicetree/bindings/usb/smsc,usb3503.yaml
 delete mode 100644 Documentation/devicetree/bindings/usb/usb3503.txt
 delete mode 100644 Documentation/devicetree/bindings/w1/w1-gpio.txt
 create mode 100644 Documentation/devicetree/bindings/w1/w1-gpio.yaml

--
2.31.1
[email protected]>:

ASoC driver and devicetree documentation for a new
Cirrus Logic amplifier CS35L41

v7 changes:
Remove property 'classh-bst-max-limit'

David Rhodes (2):
  ASoC: cs35l41: CS35L41 Boosted Smart Amplifier
  ASoC: cs35l41: Add bindings for CS35L41

 .../devicetree/bindings/sound/cs35l41.yaml    |  151 ++
 include/sound/cs35l41.h                       |   34 +
 sound/soc/codecs/Kconfig                      |   12 +
 sound/soc/codecs/Makefile                     |    4 +
 sound/soc/codecs/cs35l41-i2c.c                |  114 ++
 sound/soc/codecs/cs35l41-spi.c                |  143 ++
 sound/soc/codecs/cs35l41-tables.c             |  597 +++++++
 sound/soc/codecs/cs35l41.c                    | 1545 +++++++++++++++++
 sound/soc/codecs/cs35l41.h                    |  775 +++++++++
 9 files changed, 3375 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/sound/cs35l41.yaml
 create mode 100644 include/sound/cs35l41.h
 create mode 100644 sound/soc/codecs/cs35l41-i2c.c
 create mode 100644 sound/soc/codecs/cs35l41-spi.c
 create mode 100644 sound/soc/codecs/cs35l41-tables.c
 create mode 100644 sound/soc/codecs/cs35l41.c
 create mode 100644 sound/soc/codecs/cs35l41.h

--
2.25.1
[email protected]>:

These patches fixup or update for rockchip pdm.

Changes in v4:
- Acked by Rob Herring

Changes in v3:
- Fix property 'path-map' suggested by Rob Herring.

Changes in v2:
- Fix yamllint errors.

Sugar Zhang (7):
  ASoC: rockchip: Add support for rv1126 pdm
  ASoC: dt-bindings: rockchip: Add binding for rv1126 pdm
  ASoC: rockchip: pdm: Add support for rk3568 pdm
  ASoC: dt-bindings: rockchip: Add binding for rk3568 pdm
  ASoC: rockchip: pdm: Add support for path map
  ASoC: dt-bindings: rockchip: pdm: Document property
    'rockchip,path-map'
  ASoC: dt-bindings: rockchip: Convert pdm bindings to yaml

 .../devicetree/bindings/sound/rockchip,pdm.txt     |  46 --------
 .../devicetree/bindings/sound/rockchip,pdm.yaml    | 120 +++++++++++++++++++++
 sound/soc/rockchip/rockchip_pdm.c                  | 112 +++++++++++++++++--
 sound/soc/rockchip/rockchip_pdm.h                  |   6 ++
 4 files changed, 232 insertions(+), 52 deletions(-)
 delete mode 100644 Documentation/devicetree/bindings/sound/rockchip,pdm.txt
 create mode 100644 Documentation/devicetree/bindings/sound/rockchip,pdm.yaml

--
2.7.4
This reverts commit 8fc8e90.

It was expected that the fixes in HD-audio codec side would make the
workaround redundant, but unfortunately it doesn't seem sufficing.
Resurrect the workaround for now.

Fixes: 8fc8e90 ("ALSA: hda: Drop workaround for a hang at shutdown again")
BugLink: https://bugzilla.kernel.org/show_bug.cgi?id=214045
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Takashi Iwai <[email protected]>
USB-audio driver assumes that the normal resume would preserve the
device configuration while reset_resume wouldn't, and tries to restore
the mixer elements only at reset_resume callback.  However, this seems
too naive, and some devices do behave differently, resetting the
volume at the normal resume; this resulted in the inconsistent volume
that surprised users.

This patch changes the mixer resume code to handle both the normal and
reset resume in the same way, always restoring the original mixer
element values.  This allows us to unify the both callbacks as well as
dropping the no longer used reset_resume field, which ends up with a
good code reduction.

A slight behavior change by this patch is that now we assign
restore_mixer_value() as the default resume callback, and the function
is no longer called at reset-resume when the resume callback is
overridden by the quirk function.  That is, if needed, the quirk
resume function would have to handle similarly as
restore_mixer_value() by itself.

Reported-by: En-Shuo Hsu <[email protected]>
Cc: Yu-Hsuan Hsu <[email protected]>
Link: https://lore.kernel.org/r/CADDZ45UPsbpAAqP6=ZkTT8BE-yLii4Y7xSDnjK550G2DhQsMew@mail.gmail.com
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Takashi Iwai <[email protected]>
Copy link
Collaborator

@kv2019i kv2019i left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Local test on a TGL SDW device running Ubuntu 21.04 did not pick up anything new. I'm still running some extra tests on JSL, but good so far. UPDATE: test runs on HDA JSL system also look good.

@ujfalusi
Copy link
Collaborator Author

@kv2019i, but we have also curious boot log errors on ADLP reported by SOF CI...

@kv2019i
Copy link
Collaborator

kv2019i commented Sep 14, 2021

@ujfalusi wrote:

@kv2019i, but we have also curious boot log errors on ADLP reported by SOF CI...

Hmmm. Nothing really worrying in the log. We'll need to add some new ignore statements and perhaps and some missing fw files to the DUTs.

@marc-hb
Copy link
Collaborator

marc-hb commented Dec 2, 2021

After a lot of "data-mining", https://sof-ci.01.org/linuxpr/PR3153/build6340/devicetest/?model=APL_UP2_NOCODEC&testcase=check-suspend-resume-with-playback is apparently the very first time the Interrupts enabled... syscore_resume warnings appeared:

[ 1310.243035] kernel: sof-audio-pci-intel-apl 0000:00:0e.0: Debug PCIW: 00000010 at  00000044
[ 1310.244151] kernel: sof-audio-pci-intel-apl 0000:00:0e.0: Current DSP power state: D3
[ 1310.303552] kernel: ACPI: PM: Preparing to enter system sleep state S3
[ 1310.304029] kernel: ACPI: PM: Saving platform NVS memory
[ 1310.304036] kernel: Disabling non-boot CPUs ...
[ 1310.306051] kernel: smpboot: CPU 1 is now offline
[ 1310.308507] kernel: smpboot: CPU 2 is now offline
[ 1310.310910] kernel: smpboot: CPU 3 is now offline
[ 1310.313049] kernel: ACPI: PM: Low-level resume complete
[ 1310.313396] kernel: ACPI: PM: Restoring platform NVS memory
[ 1310.313406] kernel: ------------[ cut here ]------------
[ 1310.313409] kernel: Interrupts enabled before system core resume.
[ 1310.313445] kernel: WARNING: CPU: 0 PID: 24845 at drivers/base/syscore.c:96 syscore_resume+0x190/0x1a0
[ 1310.313468] kernel: Modules linked in: snd_usb_audio snd_hwdep snd_sof_pci_intel_tgl snd_sof_pci_intel_icl snd_sof_pci_intel_cnl snd_sof_nocodec snd_sof_pci_intel_apl snd_sof_intel_hda_common snd_sof_pci_intel_tng snd_sof_pci snd_sof_acpi_intel_bdw snd_sof_acpi_intel_byt snd_sof_acpi snd_sof_intel_atom snd_sof snd_sof_xtensa_dsp snd_soc_core snd_compress snd_soc_acpi_intel_match snd_soc_acpi snd_intel_dspcfg snd_pcm snd_usbmidi_lib fuse ledtrig_audio snd_soc_sst_ipc snd_soc_sst_dsp snd_seq_midi snd_seq_midi_event x86_pkg_temp_thermal snd_rawmidi snd_seq snd_seq_device snd_timer snd i915 i2c_algo_bit ttm drm_kms_helper soundcore mei_me mei drm drm_panel_orientation_quirks efivarfs mmc_block sdhci_pci cqhci sdhci intel_lpss_pci intel_lpss idma64 xhci_pci mfd_core xhci_hcd [last unloaded: snd_pcm]
[ 1310.313678] kernel: CPU: 0 PID: 24845 Comm: rtcwake Not tainted 5.15.0-rc1-pr3153-6340-nocodec #9216e106
[ 1310.313688] kernel: Hardware name: AAEON UP-APL01/UP-APL01, BIOS UPA1AM36 04/10/2018
[ 1310.313693] kernel: RIP: 0010:syscore_resume+0x190/0x1a0
[ 1310.313704] kernel: Code: 58 4e 00 0f 0b e9 f3 fe ff ff 80 3d b3 fc 21 01 00 0f 85 ab fe ff ff 48 c7 c7 e8 b4 de 96 c6 05 9f fc 21 01 01 e8 54 58 4e 00 <0f> 0b e9 91 fe ff ff 66 0f 1f 84 00 00 00 00 00 41 54 53 0f 1f 44
[ 1310.313712] kernel: RSP: 0018:ffffa6ca01923d50 EFLAGS: 00010282
[ 1310.313720] kernel: RAX: 0000000000000000 RBX: 0000000000000000 RCX: 0000000000000027
[ 1310.313726] kernel: RDX: 0000000000000027 RSI: 0000000074f5853d RDI: ffff96567b7d7778
[ 1310.313731] kernel: RBP: 0000000000000003 R08: ffff96567b7d7770 R09: 0000000000000000
[ 1310.313736] kernel: R10: 0000000000000001 R11: 00000000006d91b0 R12: 0000000000000000
[ 1310.313741] kernel: R13: ffffa6ca01923d68 R14: 0000000000000000 R15: 0000000000000003
[ 1310.313747] kernel: FS:  00007f4f330f1580(0000) GS:ffff96567b600000(0000) knlGS:0000000000000000
[ 1310.313753] kernel: CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[ 1310.313759] kernel: CR2: 00005620e3e11478 CR3: 0000000109ae0000 CR4: 00000000003506f0
[ 1310.313764] kernel: Call Trace:
[ 1310.313776] kernel:  suspend_devices_and_enter+0x72c/0x880
[ 1310.313795] kernel:  pm_suspend.cold+0x329/0x374
[ 1310.313809] kernel:  state_store+0x6c/0xd0
[ 1310.313821] kernel:  kernfs_fop_write_iter+0x124/0x1c0
[ 1310.313836] kernel:  new_sync_write+0x120/0x1b0
[ 1310.313859] kernel:  vfs_write+0x223/0x300
[ 1310.313872] kernel:  ksys_write+0x63/0xe0
[ 1310.313884] kernel:  do_syscall_64+0x3b/0x90
[ 1310.313896] kernel:  entry_SYSCALL_64_after_hwframe+0x44/0xae
[ 1310.313906] kernel: RIP: 0033:0x7f4f3300f057
[ 1310.313914] kernel: Code: 64 89 02 48 c7 c0 ff ff ff ff eb bb 0f 1f 80 00 00 00 00 f3 0f 1e fa 64 8b 04 25 18 00 00 00 85 c0 75 10 b8 01 00 00 00 0f 05 <48> 3d 00 f0 ff ff 77 51 c3 48 83 ec 28 48 89 54 24 18 48 89 74 24
[ 1310.313921] kernel: RSP: 002b:00007ffd08e3c9c8 EFLAGS: 00000246 ORIG_RAX: 0000000000000001
[ 1310.313930] kernel: RAX: ffffffffffffffda RBX: 0000000000000004 RCX: 00007f4f3300f057
[ 1310.313936] kernel: RDX: 0000000000000004 RSI: 000055b079455640 RDI: 0000000000000004
[ 1310.313940] kernel: RBP: 000055b079455640 R08: 0000000000000000 R09: 0000000000000004
[ 1310.313946] kernel: R10: 000055b07758f2a6 R11: 0000000000000246 R12: 0000000000000004
[ 1310.313950] kernel: R13: 000055b0794525e0 R14: 00007f4f330eb4a0 R15: 00007f4f330ea8a0
[ 1310.313973] kernel: ---[ end trace a96540680a4e8096 ]---
[ 1310.313979] kernel: ------------[ cut here ]------------
[ 1310.313982] kernel: Interrupts enabled after init_counter_refs+0x0/0x60
[ 1310.314015] kernel: WARNING: CPU: 0 PID: 24845 at drivers/base/syscore.c:103 syscore_resume+0x169/0x1a0
[ 1310.314026] kernel: Modules linked in: snd_usb_audio snd_hwdep snd_sof_pci_intel_tgl snd_sof_pci_intel_icl snd_sof_pci_intel_cnl snd_sof_nocodec snd_sof_pci_intel_apl snd_sof_intel_hda_common snd_sof_pci_intel_tng snd_sof_pci snd_sof_acpi_intel_bdw snd_sof_acpi_intel_byt snd_sof_acpi snd_sof_intel_atom snd_sof snd_sof_xtensa_dsp snd_soc_core snd_compress snd_soc_acpi_intel_match snd_soc_acpi snd_intel_dspcfg snd_pcm snd_usbmidi_lib fuse ledtrig_audio snd_soc_sst_ipc snd_soc_sst_dsp snd_seq_midi snd_seq_midi_event x86_pkg_temp_thermal snd_rawmidi snd_seq snd_seq_device snd_timer snd i915 i2c_algo_bit ttm drm_kms_helper soundcore mei_me mei drm drm_panel_orientation_quirks efivarfs mmc_block sdhci_pci cqhci sdhci intel_lpss_pci intel_lpss idma64 xhci_pci mfd_core xhci_hcd [last unloaded: snd_pcm]
[ 1310.314208] kernel: CPU: 0 PID: 24845 Comm: rtcwake Tainted: G        W         5.15.0-rc1-pr3153-6340-nocodec #9216e106
[ 1310.314216] kernel: Hardware name: AAEON UP-APL01/UP-APL01, BIOS UPA1AM36 04/10/2018
[ 1310.314220] kernel: RIP: 0010:syscore_resume+0x169/0x1a0
[ 1310.314228] kernel: Code: 69 e9 d8 fe ff ff 80 3d dd fc 21 01 00 0f 85 11 ff ff ff 48 8b 73 18 48 c7 c7 8f b5 de 96 c6 05 c5 fc 21 01 01 e8 7b 58 4e 00 <0f> 0b e9 f3 fe ff ff 80 3d b3 fc 21 01 00 0f 85 ab fe ff ff 48 c7
[ 1310.314235] kernel: RSP: 0018:ffffa6ca01923d50 EFLAGS: 00010282
[ 1310.314243] kernel: RAX: 0000000000000000 RBX: ffffffff97055e00 RCX: 0000000000000027
[ 1310.314248] kernel: RDX: 0000000000000027 RSI: 0000000074f5853d RDI: ffff96567b7d7778
[ 1310.314253] kernel: RBP: 0000000000000003 R08: ffff96567b7d7770 R09: 0000000000000000
[ 1310.314258] kernel: R10: 0000000000000001 R11: 0000000097ef0fd8 R12: 0000000000000000
[ 1310.314263] kernel: R13: ffffa6ca01923d68 R14: 0000000000000000 R15: 0000000000000003
[ 1310.314268] kernel: FS:  00007f4f330f1580(0000) GS:ffff96567b600000(0000) knlGS:0000000000000000
[ 1310.314274] kernel: CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[ 1310.314279] kernel: CR2: 00005620e3e11478 CR3: 0000000109ae0000 CR4: 00000000003506f0
[ 1310.314284] kernel: Call Trace:
[ 1310.314289] kernel:  suspend_devices_and_enter+0x72c/0x880
[ 1310.314305] kernel:  pm_suspend.cold+0x329/0x374
[ 1310.314316] kernel:  state_store+0x6c/0xd0
[ 1310.314327] kernel:  kernfs_fop_write_iter+0x124/0x1c0
[ 1310.314341] kernel:  new_sync_write+0x120/0x1b0
[ 1310.314361] kernel:  vfs_write+0x223/0x300
[ 1310.314374] kernel:  ksys_write+0x63/0xe0
[ 1310.314387] kernel:  do_syscall_64+0x3b/0x90
[ 1310.314397] kernel:  entry_SYSCALL_64_after_hwframe+0x44/0xae
[ 1310.314406] kernel: RIP: 0033:0x7f4f3300f057
[ 1310.314411] kernel: Code: 64 89 02 48 c7 c0 ff ff ff ff eb bb 0f 1f 80 00 00 00 00 f3 0f 1e fa 64 8b 04 25 18 00 00 00 85 c0 75 10 b8 01 00 00 00 0f 05 <48> 3d 00 f0 ff ff 77 51 c3 48 83 ec 28 48 89 54 24 18 48 89 74 24
[ 1310.314418] kernel: RSP: 002b:00007ffd08e3c9c8 EFLAGS: 00000246 ORIG_RAX: 0000000000000001
[ 1310.314426] kernel: RAX: ffffffffffffffda RBX: 0000000000000004 RCX: 00007f4f3300f057
[ 1310.314431] kernel: RDX: 0000000000000004 RSI: 000055b079455640 RDI: 0000000000000004
[ 1310.314436] kernel: RBP: 000055b079455640 R08: 0000000000000000 R09: 0000000000000004
[ 1310.314441] kernel: R10: 000055b07758f2a6 R11: 0000000000000246 R12: 0000000000000004
[ 1310.314446] kernel: R13: 000055b0794525e0 R14: 00007f4f330eb4a0 R15: 00007f4f330ea8a0
[ 1310.314467] kernel: ---[ end trace a96540680a4e8097 ]---
[ 1310.319741] kernel: Enabling non-boot CPUs ...
[ 1310.319928] kernel: x86: Booting SMP configuration:
[ 1310.319933] kernel: smpboot: Booting Node 0 Processor 1 APIC 0x2
[ 1310.322489] kernel: ACPI: \_PR_.CPU1: Found 3 idle states
[ 1310.323323] kernel: CPU1 is up
[ 1310.323488] kernel: smpboot: Booting Node 0 Processor 2 APIC 0x4
[ 1310.330333] kernel: ACPI: \_PR_.CPU2: Found 3 idle states
[ 1310.331121] kernel: CPU2 is up
[ 1310.331314] kernel: smpboot: Booting Node 0 Processor 3 APIC 0x6
[ 1310.334276] kernel: ACPI: \_PR_.CPU3: Found 3 idle states
[ 1310.335073] kernel: CPU3 is up
[ 1310.335425] kernel: ACPI: PM: Waking up from system sleep state S3
[ 1310.365081] kernel: sof-audio-pci-intel-apl 0000:00:0e.0: Debug PCIR: 00000000 at  00000044
[ 1310.365129] kernel: sof-audio-pci-intel-apl 0000:00:0e.0: Debug PCIR: 00000040 at  00000048
[ 1310.365140] kernel: sof-audio-pci-intel-apl 0000:00:0e.0: Debug PCIW: 00000000 at  00000048
[ 1310.368167] kernel: sof-audio-pci-intel-apl 0000:00:0e.0: Debug PCIR: 00000000 at  00000048
[ 1310.368185] kernel: sof-audio-pci-intel-apl 0000:00:0e.0: Debug PCIW: 00000040 at  00000048

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.