summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2025-11-21arm64: Select GENERIC_CPU_CACHE_MAINTENANCEJonathan Cameron
The generic CPU cache maintenance framework provides a way to register drivers for devices implementing the underlying support for cpu_cache_has_invalidate_memregion(). Enable it for arm64 by selecting GENERIC_CPU_CACHE_MAINTENANCE which provides the implementation for, and in turn selects, ARCH_HAS_CPU_CACHE_INVALIDATE_MEMREGION. Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com> Acked-by: Catalin Marinas <catalin.marinas@arm.com> Signed-off-by: Conor Dooley <conor.dooley@microchip.com>
2025-11-21lib: Support ARCH_HAS_CPU_CACHE_INVALIDATE_MEMREGIONYicong Yang
ARCH_HAS_CPU_CACHE_INVALIDATE_MEMREGION provides the mechanism for invalidating certain memory regions in a cache-incoherent manner. Currently this is used by NVDIMM and CXL memory drivers in cases where it is necessary to flush all data from caches by physical address range. The operations in question are effectively memory hotplug, where stale data might otherwise remain in the caches. This is separate from the invalidates done to enable use of non-coherent DMA masters, primarily in terms of when it is needed (not related to DMA mappings) and how deep the flush must push data. The flushes done for non-coherent DMA only need to reach the Point of Coherence of a single host (which is often nearer CPUs and DMA masters than the physical storage). This operation must push the data out of non architectural caches (memory-side caches, write buffers etc) and typically all the way to the memory device. In some architectures these operations are supported by system components that may become available only later in boot as they are either present on a discoverable bus, or via a firmware description of an MMIO interface (e.g. ACPI DSDT). Provide a framework to handle this case. Architectures can opt in for this support via CONFIG_GENERIC_CPU_CACHE_MAINTENANCE Add a registration framework. Each driver provides an ops structure and the first op is Write Back and Invalidate by PA Range. The driver may over invalidate. For systems that can perform this operation asynchronously an optional completion check operation is also provided. If present that must be called to ensure that the action has finished. This provides a considerable performance advantage if multiple agents are involved in the maintenance operation. When multiple agents are present in the system each should register with this framework and the core code will issue the invalidate to all of them before checking for completion on each. This is done to avoid need for filtering in the core code which can become complex when interleave, potentially across different cache coherency hardware is going on, so it is easier to tell everyone and let those who don't care do nothing. Signed-off-by: Yicong Yang <yangyicong@hisilicon.com> Co-developed-by: Jonathan Cameron <Jonathan.Cameron@huawei.com> Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com> Acked-by: Conor Dooley <conor.dooley@microchip.com> Signed-off-by: Conor Dooley <conor.dooley@microchip.com>
2025-11-21lib/crypto: tests: Fix KMSAN warning in test_sha256_finup_2x()Eric Biggers
Fully initialize *ctx, including the buf field which sha256_init() doesn't initialize, to avoid a KMSAN warning when comparing *ctx to orig_ctx. This KMSAN warning slipped in while KMSAN was not working reliably due to a stackdepot bug, which has now been fixed. Fixes: 6733968be7cb ("lib/crypto: tests: Add tests and benchmark for sha256_finup_2x()") Acked-by: Ard Biesheuvel <ardb@kernel.org> Link: https://lore.kernel.org/r/20251121033431.34406-1-ebiggers@kernel.org Signed-off-by: Eric Biggers <ebiggers@kernel.org>
2025-11-21EDAC/igen6: Fix error handling in igen6_edac driverMa Ke
The igen6_edac driver calls device_initialize() for all memory controllers in igen6_register_mci(), but misses corresponding put_device() calls in error paths and during normal shutdown in igen6_unregister_mcis(). Adding the missing put_device() calls improves code readability and ensures proper reference counting for the device structure. Found by code review. Signed-off-by: Ma Ke <make24@iscas.ac.cn> Reviewed-by: Qiuxu Zhuo <qiuxu.zhuo@intel.com> Signed-off-by: Tony Luck <tony.luck@intel.com> Link: https://patch.msgid.link/20251105090244.23327-1-make24@iscas.ac.cn
2025-11-21EDAC/imh: Setup 'imh_test' debugfs testing nodeQiuxu Zhuo
Setup the following debugfs testing node to enable fake memory error address decoding tests for the imh_edac driver. /sys/kernel/debug/edac/imh_test/addr Tested-by: Yi Lai <yi1.lai@intel.com> Signed-off-by: Qiuxu Zhuo <qiuxu.zhuo@intel.com> Signed-off-by: Tony Luck <tony.luck@intel.com> Link: https://patch.msgid.link/20251119134132.2389472-8-qiuxu.zhuo@intel.com
2025-11-21EDAC/{skx_comm,imh}: Detect 2-level memory configurationQiuxu Zhuo
Detect 2-level memory configurations and notify the 'skx_common' library to enable ADXL 2-level memory error decoding. Tested-by: Yi Lai <yi1.lai@intel.com> Signed-off-by: Qiuxu Zhuo <qiuxu.zhuo@intel.com> Signed-off-by: Tony Luck <tony.luck@intel.com> Link: https://patch.msgid.link/20251119134132.2389472-7-qiuxu.zhuo@intel.com
2025-11-21EDAC/skx_common: Extend the maximum number of DRAM chip row bitsQiuxu Zhuo
The allowed maximum number of row bits for DRAM chips in the Diamond Rapids server processor is up to 19. Extend the current maximum row bits from 18 to 19. Tested-by: Yi Lai <yi1.lai@intel.com> Signed-off-by: Qiuxu Zhuo <qiuxu.zhuo@intel.com> Signed-off-by: Tony Luck <tony.luck@intel.com> Link: https://patch.msgid.link/20251119134132.2389472-6-qiuxu.zhuo@intel.com
2025-11-21EDAC/{skx_common,imh}: Add EDAC driver for Intel Diamond Rapids serversQiuxu Zhuo
Intel Diamond Rapids CPUs include Integrated Memory and I/O Hubs (IMH). The memory controllers within the IMHs provide memory stacks to the processor. Create a new driver for this IMH-based memory controllers rather than applying additional patches to the existing i10nm_edac.c for the following reasons: 1) The memory controllers are not presented as PCI devices; instead, the detection and all their registers have been transitioned to MMIO-based memory spaces. 2) Validation processes are costly. Modifications to i10nm_edac would require extensive validation checks against multiple platforms, including Ice Lake, Sapphire Rapids, Emerald Rapids, Granite Rapids, Sierra Forest, and Grand Ridge. 3) Future Intel CPUs will likely only need patches on top of this new EDAC driver. Validation can be limited to Diamond Rapids servers and future Intel CPU generations. [Tony: Fix kerneldoc for struct local_reg] [randconfig: Added dependencies on NFIT and DMI] Tested-by: Yi Lai <yi1.lai@intel.com> Signed-off-by: Qiuxu Zhuo <qiuxu.zhuo@intel.com> Signed-off-by: Tony Luck <tony.luck@intel.com> Link: https://patch.msgid.link/20251119134132.2389472-5-qiuxu.zhuo@intel.com
2025-11-21KVM: selftests: Make sure vm->vpages_mapped is always up-to-dateYosry Ahmed
Call paths leading to __virt_pg_map() are currently: (a) virt_pg_map() -> virt_arch_pg_map() -> __virt_pg_map() (b) virt_map_level() -> __virt_pg_map() For (a), calls to virt_pg_map() from kvm_util.c make sure they update vm->vpages_mapped, but other callers do not. Move the sparsebit_set() call into virt_pg_map() to make sure all callers are captured. For (b), call sparsebit_set_num() from virt_map_level(). It's tempting to have a single the call inside __virt_pg_map(), however: - The call path in (a) is not x86-specific, while (b) is. Moving the call into __virt_pg_map() would require doing something similar for other archs implementing virt_pg_map(). - Future changes will reusue __virt_pg_map() for nested PTEs, which should not update vm->vpages_mapped, i.e. a triple underscore version that does not update vm->vpages_mapped would need to be provided. Signed-off-by: Yosry Ahmed <yosry.ahmed@linux.dev> Link: https://patch.msgid.link/20251021074736.1324328-12-yosry.ahmed@linux.dev Signed-off-by: Sean Christopherson <seanjc@google.com>
2025-11-21KVM: selftests: Stop using __virt_pg_map() directly in testsYosry Ahmed
Replace __virt_pg_map() calls in tests by high-level equivalent functions, removing some loops in the process. No functional change intended. Signed-off-by: Yosry Ahmed <yosry.ahmed@linux.dev> Link: https://patch.msgid.link/20251021074736.1324328-11-yosry.ahmed@linux.dev Signed-off-by: Sean Christopherson <seanjc@google.com>
2025-11-21Merge tag 'drm-fixes-2025-11-21' of https://gitlab.freedesktop.org/drm/kernelLinus Torvalds
Pull drm fixes from Dave Airlie: "A range of small fixes across the board, the i915 display disambiguation is probably the biggest otherwise amdgpu and xe as usual with tegra, nouveau, radeon and a core atomic fix. Looks mostly normal. atomic: - Return error codes on failed blob creation for planes nouveau: - Fix memory leak tegra: - Fix device ref counting - Fix pid ref counting - Revert booting on Pixel C xe: - Fix out-of-bounds access with BIT() - Fix kunit test checking wrong condition - Drop duplicate kconfig select - Fix guc2host irq handler with MSI-X i915: - Wildcat Lake and Panther Lake detangled for display fixes amdgpu: - DTBCLK gating fix - EDID fetching retry improvements - HDMI HPD debounce filtering - DCN 2.0 cursor fix - DP MST PBN fix - VPE fix - GC 11 fix - PRT fix - MMIO remap page fix - SR-IOV fix radeon: - Fence deadlock fix" * tag 'drm-fixes-2025-11-21' of https://gitlab.freedesktop.org/drm/kernel: (25 commits) drm/amdgpu: Add sriov vf check for VCN per queue reset support. drm/amdgpu/ttm: Fix crash when handling MMIO_REMAP in PDE flags drm/amdgpu/vm: Check PRT uAPI flag instead of PTE flag drm/amdgpu: Skip emit de meta data on gfx11 with rs64 enabled drm/amd: Skip power ungate during suspend for VPE drm/plane: Fix create_in_format_blob() return value drm/xe/irq: Handle msix vector0 interrupt drm/xe: Remove duplicate DRM_EXEC selection from Kconfig drm/xe/kunit: Fix forcewake assertion in mocs test drm/xe: Prevent BIT() overflow when handling invalid prefetch region drm/radeon: delete radeon_fence_process in is_signaled, no deadlock drm/amd/display: Fix pbn to kbps Conversion drm/amd/display: Clear the CUR_ENABLE register on DCN20 on DPP5 drm/amd/display: Add an HPD filter for HDMI drm/amd/display: Increase DPCD read retries drm/amd/display: Move sleep into each retry for retrieve_link_cap() drm/amd/display: Prevent Gating DTBCLK before It Is Properly Latched drm/i915/xe3: Restrict PTL intel_encoder_is_c10phy() to only PHY A drm/i915/display: Add definition for wcl as subplatform drm/pcids: Split PTL pciids group to make wcl subplatform ...
2025-11-21Merge branch 'mauro' into docs-mwJonathan Corbet
Mauro says: That's the final series to complete the migration of documentation build: it converts get_feat from Perl to Python. V2 is technically identical to v1: the only difference is that it now uses tools/lib/python/feat to store the library logic. With that, no Sphinx in-kernel extensions use fork anymore to call ancillary scripts: everything is now importing Python methods directly from the libraries. There's nothing special on this conversion: it is a direct translation, almost bug-compatible with the original version (*). (*) I did solve two or three caveats on patch 1. Most of the complexity of the script relies at the logic to produce ReST tables. I do have here on my internal scripts a (somewhat) generic formatter for ReST tables in Python. I was tempted to convert the logic to use it, but, as this could cause regressions, I opted to not do it right now, mainly because the matrix table logic is complex. Also, I'm tempted to modify a little bit the output there, but extra tests are required to see if PDF output would work with complex tables (I remember I had a problem with that in the past). So, I'm postponing such extra cleanup.
2025-11-21get_feat.pl: remove it, as it got replaced by get_feat.pyMauro Carvalho Chehab
Now that this was rewritten in Python, we can remove the old tool. Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org> Signed-off-by: Jonathan Corbet <corbet@lwn.net> Message-ID: <1f53e0fa48616af189ce98b45a65cc0c245e7aaf.1763492868.git.mchehab+huawei@kernel.org>
2025-11-21Documentation/sphinx/kernel_feat.py: use class directlyMauro Carvalho Chehab
Now that get_feat is in Python, we don't need to use subprocess to fork an executable file: we can use the feature classes directly. Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org> Signed-off-by: Jonathan Corbet <corbet@lwn.net> Message-ID: <c59d2542d7cc914fd5f8c84df966e63adc924cdc.1763492868.git.mchehab+huawei@kernel.org>
2025-11-21tools/docs/get_feat.py: convert get_feat.pl to PythonMauro Carvalho Chehab
As we want to call Python code directly at the Sphinx extension, convert get_feat.pl to Python. The code was made to be (almost) bug-compatible with the Perl version, with two exceptions: 1. Currently, Perl script outputs a wrong table if arch is set to a non-existing value; 2. the ReST table output when --feat is used without --arch has an invalid format, as the number of characters for the table delimiters are wrong. Those two bugs were fixed while testing the conversion. Additionally, another caveat was solved: the output when --feat is used without arch and the feature doesn't exist doesn't contain an empty table anymore. Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org> Signed-off-by: Jonathan Corbet <corbet@lwn.net> Message-ID: <03c26cee1ec567804735a33047e625ef5ab7bfa8.1763492868.git.mchehab+huawei@kernel.org>
2025-11-21serial: 8250_platform: simplify IRQF_SHARED handlingJiri Slaby (SUSE)
IRQF_SHARED is the only flag handled in __serial8250_isa_init_ports() and serial8250_probe_platform(). There is no need to precompute the flags. Instead, initialize port->irqflags directly in the for loop. Note the "if (bool)" is cheap and these are not hot paths anyway. Signed-off-by: Jiri Slaby (SUSE) <jirislaby@kernel.org> Link: https://patch.msgid.link/20251119092457.826789-7-jirislaby@kernel.org Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2025-11-21serial: 8250: make share_irqs local to 8250_platformJiri Slaby (SUSE)
share_irqs is used solely in 8250_platform. Make it local to that file. Signed-off-by: Jiri Slaby (SUSE) <jirislaby@kernel.org> Link: https://patch.msgid.link/20251119092457.826789-6-jirislaby@kernel.org Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2025-11-21serial: 8250: move skip_txen_test to coreJiri Slaby (SUSE)
8250_core is the only place where skip_txen_test is used. And platform and core end up in 8250.ko, so there is no change in module name (param prefix). Therefore, move skip_txen_test there and make it local. Signed-off-by: Jiri Slaby (SUSE) <jirislaby@kernel.org> Link: https://patch.msgid.link/20251119092457.826789-5-jirislaby@kernel.org Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2025-11-21serial: drop SERIAL_8250_DEPRECATED_OPTIONSJiri Slaby (SUSE)
In 3.7, 8250 was unintentionally renamed to 8250_core. This happened in the commit 835d844d1a28 (8250_pnp: do pnp probe before legacy probe). This made 8250.<xxxx> module options effectively defunct. Instead, 8250_core.<xxxx> worked. In 3.9, the commit f2b8dfd9e480 (serial: 8250: Keep 8250.<xxxx> module options functional after driver rename) made the original options work again by introducing a hack. Later in 3.9, the commit 9196d8acd7f9 (TTY: 8250, revert module name change) changed the module name back to 8250 (from 8250_core). Since then, the hack was there to support the transient 8250_core.<xxxx> options. Those were present only in the 3.7..3.9 range. These transient options were deprecated by 9326b047e4fd (TTY: 8250, deprecated 8250_core.* options) in v3.9 too. Now, after those 12 years, it is time to get rid of this hack completely. Signed-off-by: Jiri Slaby (SUSE) <jirislaby@kernel.org> Link: https://patch.msgid.link/20251119092457.826789-4-jirislaby@kernel.org Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2025-11-21serial: xilinx_uartps: drop cdns_uart::cdns_uart_driverJiri Slaby (SUSE)
Provided the uart driver is available globally, there is no need to store a pointer to it in struct cdns_uart. Instead, use the global cdns_uart_uart_driver in the code directly. Signed-off-by: Jiri Slaby (SUSE) <jirislaby@kernel.org> Acked-by: Michal Simek <michal.simek@amd.com> Link: https://patch.msgid.link/20251119092457.826789-3-jirislaby@kernel.org Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2025-11-21tty: vt: do not open code DIV_ROUND_UP()Jiri Slaby (SUSE)
Use the designated DIV_ROUND_UP() macro instead of explicit addition with division. Signed-off-by: Jiri Slaby (SUSE) <jirislaby@kernel.org> Link: https://patch.msgid.link/20251119092457.826789-2-jirislaby@kernel.org Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2025-11-21serial: serial_core: use guard()sJiri Slaby (SUSE)
Use guards in the serial_core code. This improves readability, makes error handling easier, and marks locked portions of code explicit. All that while being sure the lock is unlocked. Signed-off-by: Jiri Slaby (SUSE) <jirislaby@kernel.org> Link: https://patch.msgid.link/20251119100140.830761-11-jirislaby@kernel.org Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2025-11-21serial: serial_core: simplify uart_ioctl() returnsJiri Slaby (SUSE)
Neither uart_do_autoconfig(), nor uart_wait_modem_status() can return -ENOIOCTLCMD. The ENOIOCTLCMD checks are there to check if 'cmd' matched against TIOCSERCONFIG, and TIOCMIWAIT respectively. (With 0 or error in 'ret', it does not matter.) Therefore, the code can simply return from the TIOCSERCONFIG and TIOCMIWAIT spots immediately. To be more explicit, use 'if' instead of switch-case for those single values. And return without jumping to the 'out' label -- it can be removed too. Signed-off-by: Jiri Slaby (SUSE) <jirislaby@kernel.org> Link: https://patch.msgid.link/20251119100140.830761-10-jirislaby@kernel.org Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2025-11-21tty: vt/keyboard: use guard()sJiri Slaby (SUSE)
Use guards in the vt/keyboard code. This improves readability, makes error handling easier, and marks locked portions of code explicit. All that while being sure the lock is unlocked. Signed-off-by: Jiri Slaby (SUSE) <jirislaby@kernel.org> Link: https://patch.msgid.link/20251119100140.830761-9-jirislaby@kernel.org Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2025-11-21tty: vt/keyboard: simplify returns from vt_do_kbkeycode_ioctl()Jiri Slaby (SUSE)
Return immediately when something goes wrong in vt_do_kbkeycode_ioctl(). This makes the code flow more obvious. Signed-off-by: Jiri Slaby (SUSE) <jirislaby@kernel.org> Link: https://patch.msgid.link/20251119100140.830761-8-jirislaby@kernel.org Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2025-11-21tty: vt/keyboard: use __free()Jiri Slaby (SUSE)
The vt/keyboard code can use __free to ensure the temporary buffers are freed. Perform the switch. And even one non-temporary in kbd_connect(). There are fail paths, so ensure the buffer is freed in them and not when returning 0 -- by retain_and_null_ptr(). Signed-off-by: Jiri Slaby (SUSE) <jirislaby@kernel.org> Link: https://patch.msgid.link/20251119100140.830761-7-jirislaby@kernel.org Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2025-11-21tty: moxa: use guard()sJiri Slaby (SUSE)
Use guards in the moxa code. This improves readability, makes error handling easier, and marks locked portions of code explicit. All that while being sure the lock is unlocked. Signed-off-by: Jiri Slaby (SUSE) <jirislaby@kernel.org> Link: https://patch.msgid.link/20251119100140.830761-6-jirislaby@kernel.org Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2025-11-21tty: n_hdlc: use guard()sJiri Slaby (SUSE)
Use guards in the n_hdlc code. This improves readability, makes error handling easier, and marks locked portions of code explicit. All that while being sure the lock is unlocked. Signed-off-by: Jiri Slaby (SUSE) <jirislaby@kernel.org> Link: https://patch.msgid.link/20251119100140.830761-5-jirislaby@kernel.org Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2025-11-21tty: n_hdlc: simplify return from n_hdlc_tty_ioctl()Jiri Slaby (SUSE)
The cases in the switch() of n_hdlc_tty_ioctl() can return immediately -- no need to store into error and return later. Signed-off-by: Jiri Slaby (SUSE) <jirislaby@kernel.org> Link: https://patch.msgid.link/20251119100140.830761-4-jirislaby@kernel.org Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2025-11-21tty: n_tty: use guard()sJiri Slaby (SUSE)
Use guards in the n_tty code. This improves readability, makes error handling easier, and marks locked portions of code explicit. All that while being sure the lock is unlocked. Signed-off-by: Jiri Slaby (SUSE) <jirislaby@kernel.org> Link: https://patch.msgid.link/20251119100140.830761-3-jirislaby@kernel.org Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2025-11-21tty: pty: use guard()sJiri Slaby (SUSE)
Use guards in the pty code. This improves readability, makes error handling easier, and marks locked portions of code explicit. All that while being sure the lock is unlocked. pty_set_pktmode() is handled specially -- the conditions are inverted and return called if conditions unmet. This avoid double nested 'if's. The variable is renamed to want_pktmode so it is not confused with the current state of pktmode. Signed-off-by: Jiri Slaby (SUSE) <jirislaby@kernel.org> Link: https://patch.msgid.link/20251119100140.830761-2-jirislaby@kernel.org Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2025-11-21Documentation/admin-guide: fix typo and comment in cscope exampleJiakai Xu
This patch updates the Linux documentation for cscope, fixing two issues: 1. Corrects the typo in the command line: c"scope -d -p10 -> cscope -d -p10 2. Fixes the related documentation comment for clarity and correctness: cscope by default cscope.out database. -> cscope by default uses the cscope.out database. Signed-off-by: Jiakai Xu <jiakaiPeanut@gmail.com> Reviewed-by: Randy Dunlap <rdunlap@infradead.org> Tested-by: Randy Dunlap <rdunlap@infradead.org> Signed-off-by: Jonathan Corbet <corbet@lwn.net> Message-ID: <20251119065727.3500015-1-jiakaiPeanut@gmail.com>
2025-11-21samples: work around glibc redefining some of our defines wrongLinus Torvalds
Apparently as of version 2.42, glibc headers define AT_RENAME_NOREPLACE and some of the other flags for renameat2() and friends in <stdio.h>. Which would all be fine, except for inexplicable reasons glibc decided to define them _differently_ from the kernel definitions, which then makes some of our sample code that includes both kernel headers and user space headers unhappy, because the compiler will (correctly) complain about redefining things. Now, mixing kernel headers and user space headers is always a somewhat iffy proposition due to namespacing issues, but it's kind of inevitable in our sample and selftest code. And this is just glibc being stupid. Those defines come from the kernel, glibc is exposing the kernel interfaces, and glibc shouldn't make up some random new expressions for these values. It's not like glibc headers changed the actual result values, but they arbitrarily just decided to use a different expression to describe those values. The kernel just does #define AT_RENAME_NOREPLACE 0x0001 while glibc does # define RENAME_NOREPLACE (1 << 0) # define AT_RENAME_NOREPLACE RENAME_NOREPLACE instead. Same value in the end, but very different macro definition. For absolutely no reason. This has since been fixed in the glibc development tree, so eventually we'll end up with the canonical expressions and no clashes. But in the meantime the broken headers are in the glibc-2.42 release and have made it out into distributions. Do a minimal work-around to make the samples build cleanly by just undefining the affected macros in between the user space header include and the kernel header includes. Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2025-11-21drm/xe/guc_ct: Cleanup ifdef'ryLucas De Marchi
Better split CONFIG_DRM_XE_DEBUG and CONFIG_DRM_XE_DEBUG_GUC optional parts from the main code, creating smaller ct_dead_* and fast_req_* interfaces. Reviewed-by: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com> Link: https://patch.msgid.link/20251119152157.1675188-2-lucas.demarchi@intel.com Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com>
2025-11-21drm/xe/guc: Fix stack_depot usageLucas De Marchi
Add missing stack_depot_init() call when CONFIG_DRM_XE_DEBUG_GUC is enabled to fix the following call stack: [] BUG: kernel NULL pointer dereference, address: 0000000000000000 [] Workqueue: drm_sched_run_job_work [gpu_sched] [] RIP: 0010:stack_depot_save_flags+0x172/0x870 [] Call Trace: [] <TASK> [] fast_req_track+0x58/0xb0 [xe] Fixes: 16b7e65d299d ("drm/xe/guc: Track FAST_REQ H2Gs to report where errors came from") Tested-by: Sagar Ghuge <sagar.ghuge@intel.com> Cc: stable@vger.kernel.org # v6.17+ Reviewed-by: Stuart Summers <stuart.summers@intel.com> Link: https://patch.msgid.link/20251118-fix-debug-guc-v1-1-9f780c6bedf8@intel.com Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com>
2025-11-21drivers/tty/vt: use umin() instead of min_t(u16, ...) for row/col limitsDavid Laight
The row/column bounds (for a screen window box) are changed from 'offset one' to 'offset zero' and bound to the screen size using: v->xs = min_t(u16, v->xs - 1, vc->vc_cols - 1); This has the side effect of converting zero to the limit. A check I'm adding to min_t() reports that (u16)(v->xs - 1) (etc) discards signiticant bits (because v->xs is promoted to 'int' before the addition). If v->xs is zero (it comes from userspace) it converts -1 to 0xffff. This is then bounded to 'vc->vc_cols - 1' which will be fine. Replace with: v->xs = umin(v->xs - 1, vc->vc_cols - 1); which again converts a -1 to unsigned - this time to 0xffffffff, with the same overall effect. Whether zero is meant to mean the 'maximum size' is unknown. I can't find any documentation for the ioctl and it pre-dates git. Detected by an extra check added to min_t(). Signed-off-by: David Laight <david.laight.linux@gmail.com> Reviewed-by: Jiri Slaby <jirislaby@kernel.org> Link: https://patch.msgid.link/20251119224140.8616-28-david.laight.linux@gmail.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2025-11-21drm/imagination: Document pvr_device.power memberMatt Coster
Automated testing caught this missing doc comment; add something suitable (and useful). Fixes: 330e76d31697 ("drm/imagination: Add power domain control") Reported-by: Stephen Rothwell <sfr@canb.auug.org.au> Closes: https://lore.kernel.org/r/20251106152448.453b53ad@canb.auug.org.au/ Reviewed-by: Alessio Belle <alessio.belle@imgtec.com> Link: https://patch.msgid.link/20251121-device-power-doc-fix-v2-1-3417779f36c7@imgtec.com Signed-off-by: Matt Coster <matt.coster@imgtec.com>
2025-11-21platform: arm64: thinkpad-t14s-ec: sleep after EC accessSebastian Reichel
The ACPI ECRD and ECWR functions have a 10ms sleep at the end. It turns out, that this is sometimes needed to avoid I2C transmission failures, especially for functions doing regmap_update_bits (and thus read + write shortly after each other). This fixes problems like the following appearing in the kernel log: leds platform::micmute: Setting an LED's brightness failed (-6) leds platform::kbd_backlight: Setting an LED's brightness failed (-6) The ACPI QEVT function used to read the interrupt status register also has a 10ms sleep at the end. Without that there are problems with reading multiple events following directly after each other resulting in the following error message being logged: thinkpad-t14s-ec 4-0028: Failed to read event Fixes: 60b7ab6ce030 ("platform: arm64: thinkpad-t14s-ec: new driver") Signed-off-by: Sebastian Reichel <sre@kernel.org> Link: https://patch.msgid.link/20251119-thinkpad-t14s-ec-improvements-v2-2-441219857c02@kernel.org Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com> Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
2025-11-21platform: arm64: thinkpad-t14s-ec: fix IRQ race conditionSebastian Reichel
Fix a race condition, that an input key related interrupt might be triggered before the input handler has been registered, which results in a NULL pointer dereference. This can happen if the user enables the keyboard backlight shortly before the driver is being probed. This fixes the following backtrace visible in dmesg: Unable to handle kernel NULL pointer dereference at virtual address 00000000000000e0 ... Call trace: sparse_keymap_report_event+0x2c/0x978 [sparse_keymap] (P) t14s_ec_irq_handler+0x190/0x3e8 [lenovo_thinkpad_t14s] irq_thread_fn+0x30/0xb8 irq_thread+0x18c/0x3b0 kthread+0x148/0x228 ret_from_fork+0x10/0x20 Fixes: 60b7ab6ce030 ("platform: arm64: thinkpad-t14s-ec: new driver") Signed-off-by: Sebastian Reichel <sre@kernel.org> Reviewed-by: Bryan O'Donoghue <bod@kernel.org> Link: https://patch.msgid.link/20251119-thinkpad-t14s-ec-improvements-v2-1-441219857c02@kernel.org Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com> Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
2025-11-21regulator: Add FP9931/JD9930Mark Brown
Merge series from Andreas Kemnade <andreas@kemnade.info>: Add a driver for the FP9931/JD9930 regulator which provides the comparatively high voltages needed for electronic paper displays. Datasheet for the FP9931 is at https://www.fitipower.com/dl/file/flXa6hIchVeu0W3K Although it is in English, it seems to be only downloadable from the Chinese part of that website. For the JD9930 there can be a datasheet found at https://e2e.ti.com/cfs-file/__key/communityserver-discussions-components-files/196/JD9930_2D00_0.7_2D00_JUN_2D00_2019.pdf To simplify things, include the hwmon part directly which is only one register read and there are not other functions besides regulators in this chip.
2025-11-21Merge tag 'mhi-for-v6.19' of ↵Greg Kroah-Hartman
ssh://gitolite.kernel.org/pub/scm/linux/kernel/git/mani/mhi into char-misc-next Manivannan writes: MHI Host ======== - Add support for Telit FE990B40 and Foxconn T99W760 modems MHI Endpoint ============ - Make 'struct mhi_ep_bus_type' const as the driver core now handles the const bus_type. - Add WQ_PERCPU flag to alloc_workqueue() as a part of the workqueue refactoring * tag 'mhi-for-v6.19' of ssh://gitolite.kernel.org/pub/scm/linux/kernel/git/mani/mhi: bus: mhi: host: pci_generic: Add Foxconn T99W760 modem bus: mhi: ep: add WQ_PERCPU to alloc_workqueue users bus: mhi: host: pci_generic: Add Telit FE990B40 modem support bus: mhi: ep: Make mhi_ep_bus_type const
2025-11-21ASoC: Intel: avs: Replace snprintf() with scnprintf()HariKrishna Sagala
snprintf() as defined by the C99 standard,returns the number of characters that *would have been* written if enough space were available.Use scnprintf() that returns the actual number of characters written. Link: https://github.com/KSPP/linux/issues/105 Signed-off-by: HariKrishna Sagala <hariconscious@gmail.com> Link: https://patch.msgid.link/20251113142637.259737-2-hariconscious@gmail.com Signed-off-by: Mark Brown <broonie@kernel.org>
2025-11-21Merge tag 'qcom-arm64-for-6.19' of ↵Arnd Bergmann
https://git.kernel.org/pub/scm/linux/kernel/git/qcom/linux into soc/dt Qualcomm Arm64 DeviceTree updates for v6.19 Introduce support for the Redxa Dragon Q6A development board, the Huawei MateBoot E 2019, the Asus ZenFone 2 Laser/Selfie, the MSM8937 platform and the Xiaomo Redmi 3S device based on it. SoC dtsi files for Agatti, Hamoa, Kodiak, Monaco, Purwa, and Talos, are renamed in order to better facilitate the addition of new boards on the various SKUs of these. Cooling maps are introduced for the CPU cores in IPQ5424, and the network subsystem clock controller is added. On Lemans, RTC is enabled, the EVK fan controller is described and a camera mezzanine overlay is introduced. Touchscreen support is added to the BQ Aquaris M5, and the touchscreen from Samsung Galaxy Core Prime is moved to the common platform to benefit the other devices sharing common definitions. On Agatti two more UARTs are described, as well as APR and the related audio services, and the LPASS LPI pin controller. The RB1 board gets HDMI autio playback support. On Kodiak-based targets, Fairphone FP5 gains definitions of the UW camera actuator, regulator for the ToF sensor, and haptic module. The SHIFT SHIFTphone 8 gains RGB and flash LEDs, and Venus support. The Rb3Gen2 development board gets QUP firmware path defined, to support dynamic loading of the serial engine firmware. Kodiak also gains Coresight devices for AOSS and QDSS blocks. Display support is added for the Talos platform, and enabled on the Ride board. Talos also gains the definitions to scale DDR and L3 interconnects. On SC8280XP, the camera privacy indicator on Lenovo Thinkpad X13s is connected to the camera stack. Off-by-one GPI DMA channels are corrected. The SDM845-based LG and OnePlus custom defined rmtfs guard pages are replaced with the inline-support for guard pages. SDX75 DWC3 node is flattened and marked for USB role switching. On SM8550, the camera subsystem and the S5K3M5 camera sensor is introduced for the QRD, and an overlay for the "Rear Camera Card" for the Hardware Development Kit (HDK) is introduced. USB support is introduce for the SM8750 platform, and enabled in the MTP and QRD devices. On Hamoa, like on other devices the Asus Zenbook A14 definition of the eDP panel is reworked to support both LCD and OLED configurations. WiFi and Bluetooth is also enabled on the A14. The CRD gains support for controlling charge limits. The refgen regulator supplying DSI is defined and wired up on a variety of platforms. * tag 'qcom-arm64-for-6.19' of https://git.kernel.org/pub/scm/linux/kernel/git/qcom/linux: (138 commits) arm64: dts: qcom: sdx75: Add missing usb-role-switch property arm64: dts: qcom: sdx75: Flatten usb controller node arm64: dts: qcom: HAMOA-IOT-SOM: Unreserve GPIOs blocking SPI11 access arm64: dts: qcom: qrb2210-rb1: Fix UART3 wakeup IRQ storm Revert "arm64: dts: qcom: sc7280: Increase config size to 256MB for ECAM feature" arm64: dts: qcom: kodiak: add coresight nodes arm64: dts: qcom: sdm845-oneplus: Describe TE gpio arm64: dts: qcom: sdm845-oneplus: Implement panel sleep pinctrl arm64: dts: qcom: sdm845-oneplus: Group panel pinctrl arm64: dts: qcom: sdm845-oneplus: Update compatbible and add DDIC supplies arm64: dts: qcom: qcs6490-rb3gen2: Rename vph-pwr regulator node arm64: dts: qcom: qcm6490-fairphone-fp5: Add UW cam actuator arm64: dts: qcom: qcm6490-fairphone-fp5: Enable CCI pull-up arm64: dts: qcom: sm8750: Add USB support for SM8750 QRD platform arm64: dts: qcom: sm8750: Add USB support for SM8750 MTP platform arm64: dts: qcom: sm8750: Add USB support to SM8750 SoCs arm64: dts: qcom: rename x1p42100 to purwa arm64: dts: qcom: rename sc7280 to kodiak arm64: dts: qcom: rename qcm2290 to agatti arm64: dts: qcom: add gpu_zap_shader label ... Signed-off-by: Arnd Bergmann <arnd@arndb.de>
2025-11-21Merge tag 'qcom-arm32-for-6.19' of ↵Arnd Bergmann
https://git.kernel.org/pub/scm/linux/kernel/git/qcom/linux into soc/dt Qualcomm Arm32 DeviceTree updates for v6.19 In addition to a variety of cleanups and reordering of nodes, four GSBIs are added to the MSM8960 platform. On the MSM8226-based Samsung Galaxy Grand 2, a simple framebuffer is defined. * tag 'qcom-arm32-for-6.19' of https://git.kernel.org/pub/scm/linux/kernel/git/qcom/linux: ARM: dts: qcom: msm8226-samsung-ms013g: add simple-framebuffer ARM: dts: qcom: msm8960: rename msmgpio node to tlmm ARM: dts: qcom: msm8960: add I2C nodes for gsbi1 and gsbi8 ARM: dts: qcom: msm8960: add I2C nodes for gsbi10 and gsbi12 ARM: dts: qcom: msm8960: inline qcom-msm8960-pins.dtsi ARM: dts: qcom: msm8960: reorder nodes and properties Signed-off-by: Arnd Bergmann <arnd@arndb.de>
2025-11-21Merge tag 'omap-for-v6.19/dt-signed' of ↵Arnd Bergmann
git://git.kernel.org/pub/scm/linux/kernel/git/khilman/linux-omap into soc/dt Misc. DT updates, mostly for AM3 platforms. * tag 'omap-for-v6.19/dt-signed' of git://git.kernel.org/pub/scm/linux/kernel/git/khilman/linux-omap: ARM: dts: ti/omap: fix incorrect compatible string in internal eeprom node ARM: dts: omap: am335x-mba335x: Fix stray '/*' in comment ARM: dts: omap: am335x-tqma335x/mba335x: Fix MicIn routing dt-bindings: mmc: ti,omap2430-sdhci: convert to DT schema arm: dts: ti: omap: Drop unnecessary properties for SDHCI node arm: dts: ti: omap: am335x-pepper: Fix vmmc-supply property typo ARM: dts: omap3: n900: Correct obsolete TWL4030 power compatible ARM: dts: omap3: beagle-xm: Correct obsolete TWL4030 power compatible ARM: dts: omap: Add support for TQMa335x/MBa335x ARM: dts: omap: AM33xx: add cpu label dt-bindings: omap: add AM335x-based TQMa335x SOM and MBa335x board ARM: dts: am335x-netcom-plus-2xx: add missing GPIO labels ARM: dts: ti: omap: am335x-baltos: add a regulator for the mPCIe slot ARM: dts: omap: rework Baltos LED nodes ARM: dts: am33xx: Add missing serial console speed Signed-off-by: Arnd Bergmann <arnd@arndb.de>
2025-11-21Merge tag 'at91-dt-6.19' of ↵Arnd Bergmann
https://git.kernel.org/pub/scm/linux/kernel/git/at91/linux into soc/dt Microchip AT91 device tree updates for v6.19 This update includes: - FIFO size fixes for some Flexcom UARTs and SPIs * tag 'at91-dt-6.19' of https://git.kernel.org/pub/scm/linux/kernel/git/at91/linux: ARM: dts: microchip: sama5d2: fix spi flexcom fifo size to 32 ARM: dts: microchip: sama7g5: fix uart fifo size to 32 ARM: dts: microchip: sama7d65: fix uart fifo size to 32 Signed-off-by: Arnd Bergmann <arnd@arndb.de>
2025-11-21drm/i915/psr: Reject async flips when selective fetch is enabledVille Syrjälä
The selective fetch code doesn't handle asycn flips correctly. There is a nonsense check for async flips in intel_psr2_sel_fetch_config_valid() but that only gets called for modesets/fastsets and thus does nothing for async flips. Currently intel_async_flip_check_hw() is very unhappy as the selective fetch code pulls in planes that are not even async flips capable. Reject async flips when selective fetch is enabled, until someone fixes this properly (ie. disable selective fetch while async flips are being issued). Cc: stable@vger.kernel.org Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com> Link: https://patch.msgid.link/20251105171015.22234-1-ville.syrjala@linux.intel.com Reviewed-by: Jouni Högander <jouni.hogander@intel.com>
2025-11-21ASoC: codecs: wcd934x: add explicit soundwire depenencySrinivas Kandagatla
WCD934x provides register read/write interface to soundwire controller via slimbus. Eventhough there was no direct compile time dependency for this so far, however after adding common wcd functions this dependency became explict. We can either move the soundwire specific bits from wcd-common to wcd-sdw.c or something on those lines or explicity add this dependency in Kconfig. Moving this wcd-sdw can fix reported compile issue but it does not make sense to select this codec without soundwire configs. Given the fact that WCD934x is very much providing soundwire functionality it is better to specify the soundwire dependency explicity in Kconfig which should also fix the below compile time error with combination of wcd934x a built-in and soundwire a module and also allow this codec selection only when soundwire is available. Error log: wcd-common.c:undefiined reference to `sdw_write' sound/soc/codecs/wcd-common.o: in function `wcd_bus_config': Reported-by: kernel test robot <lkp@intel.com> Closes: https://lore.kernel.org/oe-kbuild-all/202511210405.zd9wig5Z-lkp@intel.com/ Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@oss.qualcomm.com> Link: https://patch.msgid.link/20251121143258.229138-1-srinivas.kandagatla@oss.qualcomm.com Signed-off-by: Mark Brown <broonie@kernel.org>
2025-11-21Merge tag 'ti-k3-dt-for-v6.19' of ↵Arnd Bergmann
https://git.kernel.org/pub/scm/linux/kernel/git/ti/linux into soc/dt TI K3 device tree updates for v6.19 Generic fixes and cleanups: * Multiple SoCs: Disable CPSW in SoC files and enable them in board files for better board-level control * Replace rgmii-rxid with rgmii-id for CPSW ports across multiple boards New Boards/SoM: * AM62L SoC and basic support for EVM * Toradex Aquila AM69 board support * Kontron SMARC-sAM67 module and ADS2 carrier board support Platform wide: * Define possible system states amd wakeup-source (AM62/AM62A/AM62P) SoC/EVM specific changes: AM62: * Add RNG node * Add OLDI support AM62P: * Move audio_refclk to common main dtsi (k3-am62p-j722s-common-main) * Fix memory ranges for GPU AM62D2: * Enable PMIC support on EVM * Misc fixes AM64: * Add DMA support for TSCADC on EVM AM69: * Add Aquila board support with Clover variant J722S: * Fix audio refclk source in main dtsi * Explicitly use PLL1_HSDIV6 audio refclk for EVM J784S4/J742S2: * Add bootph-all tag to support PCIe boot Variscite VAR-SOM-AM62P: * Add support for ADS7846 touchscreen * Add support for WM8904 audio codec * tag 'ti-k3-dt-for-v6.19' of https://git.kernel.org/pub/scm/linux/kernel/git/ti/linux: (42 commits) arm64: dts: ti: k3-am62l: add initial reference board file arm64: dts: ti: k3-am62l: add initial infrastructure dt-bindings: arm: ti: Add binding for AM62L SoCs arm64: dts: ti: am69-aquila: Add Clover arm64: dts: ti: Add Aquila AM69 Support dt-bindings: arm: ti: add Toradex Aquila AM69 arm64: dts: ti: k3-j721s2: disable "mcu_cpsw" in SoC file and enable in board files arm64: dts: ti: k3-j721e: disable "mcu_cpsw" in SoC file and enable it in board file arm64: dts: ti: k3-j7200: disable "mcu_cpsw" in SoC file and enable in board file arm64: dts: ti: k3-am65: disable "mcu_cpsw" in SoC file and enable in board file arm64: dts: ti: k3-am62: disable "cpsw3g" in SoC file and enable in board file arm64: dts: ti: k3-am62p5-sk: Set wakeup-source system-states arm64: dts: ti: k3-am62a7-sk: Set wakeup-source system-states arm64: dts: ti: k3-am62-lp-sk: Set wakeup-source system-states arm64: dts: ti: k3-am62p: Define possible system states arm64: dts: ti: k3-am62a: Define possible system states arm64: dts: ti: k3-am62: Define possible system states arm64: dts: ti: k3-am62p-j722s-common-main: move audio_refclk here arm64: dts: ti: k3-*: Replace rgmii-rxid with rgmii-id for CPSW ports arm64: dts: ti: k3-am642-tqma64xxl: add boot phase tags ... Signed-off-by: Arnd Bergmann <arnd@arndb.de>
2025-11-21Merge tag 'socfpga_dts_updates_for_v6.19' of ↵Arnd Bergmann
git://git.kernel.org/pub/scm/linux/kernel/git/dinguyen/linux into soc/dt SoCFPGA DTS updates for v6.19 - Add 4-bit SPI bus width(n5x, stratix10, agilex and agilex5) - Agilex5 updates: - Add GMAC0 for NAND daughter card - Add SMMU support - Add VGIC maintenance interrupt - Add L2 and L3 cache - Add support for the 013b board - Add I3C support - Add support for the Enclustra Mercury+ SA1 SoM based on Cyclone5 - Add support for Agilex3 board(a variant of the Agilex5 board) - dt-bindings update: - Document iommu in cdns,hp-nfc, snps,dw-axi-dmac and Agilex5 - Document Enclustra Mercury SA1 and AA1 boards - Document Agilex5 013b board - Document Agilex3 board - Fix dtbs_check warnings: - stratix10-swvp - Agilex(NAND and Clock manager) - Move sdmmc-ecc to base DTSI file(Stratix10) * tag 'socfpga_dts_updates_for_v6.19' of git://git.kernel.org/pub/scm/linux/kernel/git/dinguyen/linux: (35 commits) arm64: dts: socfpga: agilex5: update qspi partitions for 013b board arm64: dts: socfpga: add Agilex3 board dt-bindings: intel: Add Agilex3 SoCFPGA board arm64: dts: intel: agilex5: Add Altera compatible for I3C controllers arm64: dts: socfpga: Add Agilex5 SVC node with memory region dt-bindings: firmware: svc: Add IOMMU support for Agilex5 arm64: dts: socfpga: agilex5: Add SMMU-V3-PMCG nodes arm64: dts: socfpga: agilex5: Add L2 and L3 cache arm64: dts: socfpga: agilex5: fix CHECK_DTBS warning for NAND arm64: dts: socfpga: agilex5: add support for 013b board dt-bindings: intel: Add Agilex5 SoCFPGA 013b board arm64: dts: socfpga: agilex5: add VGIC maintenance interrupt arm64: dts: socfpga: agilex: fix dtbs_check warning for NAND arm64: dts: socfpga: agilex: fix dtbs_check warning for clock manager arm64: dts: socfpga: stratix10-swvp: fix dtbs_check warnings swvp arm64: dts: socfpga: move sdmmc-ecc to the base DTSI file ARM: dts: socfpga: add Enclustra SoM dts files dt-bindings: altera: removal of generic PE1 dts ARM: dts: socfpga: removal of generic PE1 dts dt-bindings: altera: add Mercury AA1 variants ... Signed-off-by: Arnd Bergmann <arnd@arndb.de>