-
Notifications
You must be signed in to change notification settings - Fork 133
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
Merge/sound upstream 20210914 #3153
Conversation
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() ...
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]>
…0914 Signed-off-by: Peter Ujfalusi <[email protected]>
There was a problem hiding this 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.
@kv2019i, but we have also curious boot log errors on ADLP reported by SOF CI... |
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
|
5.15-rc1 is out, it is time for catching up.