5.15.56-rc1 review
Subsystems (2)
Greg Kroah-Hartman
maintainerPATCH 165/167 serial: pl011: UPSTAT_AUTORTS requires .throttle/unthrottle
In reply to Greg Kroah-HartmanFrom: Ilpo Järvinen <[email protected]>
commit 211565b100993c90b53bf40851eacaefc830cfe0 upstream.
The driver must provide throttle and unthrottle in uart_ops when it sets UPSTAT_AUTORTS. Add them using existing stop_rx & enable_interrupts functions.
--- drivers/tty/serial/amba-pl011.c | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-)
drivers/tty/serial/amba-pl011.c +21 -2
@@ -1372,6 +1372,15 @@ static void pl011_stop_rx(struct uart_popl011_dma_rx_stop (uap); } +static void pl011_throttle_rx (struct uart_port *port) +{ +unsigned long flags; + +spin_lock_irqsave (&port->lock, flags); +pl011_stop_rx (port); +spin_unlock_irqrestore (&port->lock, flags); +} +static void pl011_enable_ms (struct uart_port *port) { struct uart_amba_port *uap =
@@ -1793,9 +1802,10 @@ static int pl011_allocate_irq(struct uar*/ static void pl011_enable_interrupts (struct uart_amba_port *uap) { +unsigned long flags;unsigned int i; -spin_lock_irq (&uap->port.lock); +spin_lock_irqsave (&uap->port.lock, flags);/* Clear out any spuriously appearing RX interrupts */ pl011_write (UART011_RTIS |UART011_RXIS , uap,REG_ICR );
@@ -1817,7 +1827,14 @@ static void pl011_enable_interrupts(struif (!pl011_dma_rx_running (uap)) uap->im |=UART011_RXIM ;pl011_write (uap->im, uap,REG_IMSC ); -spin_unlock_irq (&uap->port.lock); +spin_unlock_irqrestore (&uap->port.lock, flags); +} + +static void pl011_unthrottle_rx (struct uart_port *port) +{ + struct uart_amba_port *uap = container_of(port, struct uart_amba_port, port); + +pl011_enable_interrupts (uap); }static int pl011_startup (struct uart_port *port)
@@ -2245,6 +2262,8 @@ static const struct uart_ops amba_pl011_ .stop_tx = pl011_stop_tx, .start_tx = pl011_start_tx, .stop_rx = pl011_stop_rx, + .throttle = pl011_throttle_rx, + .unthrottle = pl011_unthrottle_rx, .enable_ms = pl011_enable_ms, .break_ctl = pl011_break_ctl, .startup = pl011_startup,
Greg Kroah-Hartman
maintainerPATCH 166/167 serial: 8250: Fix PM usage_count for console handover
In reply to Greg Kroah-HartmanFrom: Ilpo Järvinen <[email protected]>
commit f9b11229b79c0fb2100b5bb4628a101b1d37fbf6 upstream.
When console is enabled, univ8250_console_setup() calls serial8250_console_setup() before .dev is set to uart_port. Therefore, it will not call pm_runtime_get_sync(). Later, when the actual driver is going to take over univ8250_console_exit() is called. As .dev is already set, serial8250_console_exit() makes pm_runtime_put_sync() call with usage count being zero triggering PM usage count warning (extra debug for univ8250_console_setup(), univ8250_console_exit(), and serial8250_register_ports()):
[ 0.068987] univ8250_console_setup ttyS0 nodev [ 0.499670] printk: console [ttyS0] enabled [ 0.717955] printk: console [ttyS0] printing thread started [ 1.960163] serial8250_register_ports assigned dev for ttyS0 [ 1.976830] printk: console [ttyS0] disabled [ 1.976888] printk: console [ttyS0] printing thread stopped [ 1.977073] univ8250_console_exit ttyS0 usage:0 [ 1.977075] serial8250 serial8250: Runtime PM usage count underflow! [ 1.977429] dw-apb-uart.6: ttyS0 at MMIO 0x4010006000 (irq = 33, base_baud = 115200) is a 16550A [ 1.977812] univ8250_console_setup ttyS0 usage:2 [ 1.978167] printk: console [ttyS0] printing thread started [ 1.978203] printk: console [ttyS0] enabled
To fix the issue, call pm_runtime_get_sync() in serial8250_register_ports() as soon as .dev is set for an uart_port if it has console enabled.
This problem became apparent only recently because 82586a721595 ("PM:
runtime: Avoid device usage count underflows") added the warning printout. I confirmed this problem also occurs with v5.18 (w/o the warning printout, obviously).
--- drivers/tty/serial/8250/8250_core.c | 4 ++++ drivers/tty/serial/serial_core.c | 5 ----- include/linux/serial_core.h | 5 +++++ 3 files changed, 9 insertions(+), 5 deletions(-)
drivers/tty/serial/8250/8250_core.c +4 -0
@@ -23,6 +23,7 @@#include <linux/sysrq.h> #include <linux/delay.h> #include <linux/platform_device.h> +#include <linux/pm_runtime.h> #include <linux/tty.h> #include <linux/ratelimit.h> #include <linux/tty_flip.h>
@@ -561,6 +562,9 @@ serial8250_register_ports(struct uart_dr up->port.dev = dev; +if (uart_console_enabled (&up->port)) +pm_runtime_get_sync (up->port.dev); +serial8250_apply_quirks (up);uart_add_one_port (drv, &up->port); }
drivers/tty/serial/serial_core.c +0 -5
@@ -1912,11 +1912,6 @@ static int uart_proc_show(struct seq_fil }#endif -static inline bool uart_console_enabled (struct uart_port *port) -{ -return uart_console (port) && (port->cons->flags &CON_ENABLED ); -} -static void uart_port_spin_lock_init (struct uart_port *port) {spin_lock_init (&port->lock);
include/linux/serial_core.h +5 -0
@@ -388,6 +388,11 @@ static const bool earlycon_acpi_spcr_enastatic inline int setup_earlycon (char *buf) {return 0 ; }#endif +static inline bool uart_console_enabled (struct uart_port *port) +{ +return uart_console (port) && (port->cons->flags &CON_ENABLED ); +} +struct uart_port *uart_get_console (struct uart_port *ports,int nr,struct console *c); int uart_parse_earlycon(char *p, unsigned char *iotype, resource_size_t *addr,
Greg Kroah-Hartman
maintainerPATCH 167/167 x86/pat: Fix x86_has_pat_wp()
In reply to Greg Kroah-HartmanFrom: Juergen Gross <[email protected]>
commit 230ec83d4299b30c51a1c133b4f2a669972cc08a upstream.
x86_has_pat_wp() is using a wrong test, as it relies on the normal PAT configuration used by the kernel. In case the PAT MSR has been setup by another entity (e.g. Xen hypervisor) it might return false even if the PAT configuration is allowing WP mappings. This due to the fact that when running as Xen PV guest the PAT MSR is setup by the hypervisor and cannot be changed by the guest. This results in the WP related entry to be at a different position when running as Xen PV guest compared to the bare metal or fully virtualized case.
The correct way to test for WP support is:
1. Get the PTE protection bits needed to select WP mode by reading __cachemode2pte_tbl[_PAGE_CACHE_MODE_WP] (depending on the PAT MSR setting this might return protection bits for a stronger mode, e.g. UC-)
2. Translate those bits back into the real cache mode selected by those PTE bits by reading __pte2cachemode_tbl[__pte2cm_idx(prot)]
3. Test for the cache mode to be _PAGE_CACHE_MODE_WP
--- arch/x86/mm/init.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-)
arch/x86/mm/init.c +12 -2
@@ -78,10 +78,20 @@ static uint8_t __pte2cachemode_tbl[8] = [__pte2cm_idx(_PAGE_PWT | _PAGE_PCD | _PAGE_PAT)] = _PAGE_CACHE_MODE_UC, }; -/* Check that the write-protect PAT entry is set for write-protect */ +/* +* Check that the write-protect PAT entry is set for write-protect. +* To do this without making assumptions how PAT has been set up (Xen has +* another layout than the kernel), translate the _PAGE_CACHE_MODE_WP cache +* mode via the __cachemode2pte_tbl[] into protection bits (those protection +* bits will select a cache mode of WP or better), and then translate the +* protection bits back into the cache mode using __pte2cm_idx() and the +* __pte2cachemode_tbl[] array. This will return the really used cache mode. +*/ bool x86_has_pat_wp (void ) { -return __pte2cachemode_tbl[_PAGE_CACHE_MODE_WP] == _PAGE_CACHE_MODE_WP; +uint16_t prot = __cachemode2pte_tbl[_PAGE_CACHE_MODE_WP]; + +return __pte2cachemode_tbl[__pte2cm_idx (prot)] == _PAGE_CACHE_MODE_WP; }enum page_cache_mode pgprot2cachemode (pgprot_t pgprot)
Quoted 9 lines · Greg Kroah-Hartman
This is the start of the stable review cycle for the 5.15.56 release. There are 167 patches in this series, all will be posted as a response to this one. If anyone has any issues with these being applied, please let me know.
Responses should be made by Thu, 21 Jul 2022 11:43:40 +0000. Anything received after that time might be too late.
The whole patch series can be found in one patch at:
Quoted 8 lines
https://www.kernel.org/pub/linux/kernel/v5.x/stable-review/patch-5.15.56-rc1.gzor in the git tree and branch at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.gitlinux-5.15.y
and the diffstat can be found below.thanks,
greg k-h
On ARCH_BRCMSTB using 32-bit and 64-bit ARM kernels and built tested with BMIPS_GENERIC (bmips_stb_defconfig):
Signature · 1 line
Florian
Quoted 8 lines · Greg Kroah-Hartman
This is the start of the stable review cycle for the 5.15.56 release. There are 167 patches in this series, all will be posted as a response to this one. If anyone has any issues with these being applied, please let me know.
Responses should be made by Thu, 21 Jul 2022 11:43:40 +0000. Anything received after that time might be too late.
Build results:
total: 159 pass: 159 fail: 0 Qemu test results: total: 488 pass: 488 fail: 0
Guenter
Quoted 9 lines · Greg Kroah-Hartman
This is the start of the stable review cycle for the 5.15.56 release. There are 167 patches in this series, all will be posted as a response to this one. If anyone has any issues with these being applied, please let me know.
Responses should be made by Thu, 21 Jul 2022 11:43:40 +0000. Anything received after that time might be too late.
The whole patch series can be found in one patch at:
Quoted 8 lines
https://www.kernel.org/pub/linux/kernel/v5.x/stable-review/patch-5.15.56-rc1.gzor in the git tree and branch at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.gitlinux-5.15.y
and the diffstat can be found below.thanks,
greg k-h
Built and booted successfully on RISC-V RV64 (HiFive Unmatched).
Quoted 9 lines · Greg Kroah-Hartman
This is the start of the stable review cycle for the 5.15.56 release. There are 167 patches in this series, all will be posted as a response to this one. If anyone has any issues with these being applied, please let me know.
Responses should be made by Thu, 21 Jul 2022 11:43:40 +0000. Anything received after that time might be too late.
The whole patch series can be found in one patch at:
Quoted 8 lines
https://www.kernel.org/pub/linux/kernel/v5.x/stable-review/patch-5.15.56-rc1.gzor in the git tree and branch at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.gitlinux-5.15.y
and the diffstat can be found below.thanks,
greg k-h
All tests passing for Tegra ...
Test results for stable-v5.15:
10 builds: 10 pass, 0 fail
28 boots: 28 pass, 0 fail
114 tests: 114 pass, 0 failLinux version: 5.15.56-rc1-g91c6070d5ced
Boards tested: tegra124-jetson-tk1, tegra186-p2771-0000,
tegra194-p2972-0000, tegra194-p3509-0000+p3668-0000,
tegra20-ventana, tegra210-p2371-2180,
tegra210-p3450-0000, tegra30-cardhu-a04Jon
Quoted 5 lines · Greg Kroah-Hartman
This is the start of the stable review cycle for the 5.15.56 release. There are 167 patches in this series, all will be posted as a response to this one. If anyone has any issues with these being applied, please let me know.
Successfully cross-compiled for arm64 (bcm2711_defconfig, GCC 10.2.0) and powerpc (ps3_defconfig, GCC 12.1.0).
Signature · 1 line
An old man doll... just what I always wanted! - Clara
Quoted 10 lines · Greg Kroah-Hartman
This is the start of the stable review cycle for the 5.15.56 release. There are 167 patches in this series, all will be posted as a response to this one. If anyone has any issues with these being applied, please let me know.
Responses should be made by Thu, 21 Jul 2022 11:43:40 +0000. Anything received after that time might be too late.
The whole patch series can be found in one patch at:
Quoted 8 lines
https://www.kernel.org/pub/linux/kernel/v5.x/stable-review/patch-5.15.56-rc1.gzor in the git tree and branch at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.gitlinux-5.15.y
and the diffstat can be found below.thanks,
greg k-h
Results from Linaro’s test farm.
No regressions on arm64, arm, x86_64, and i386.
## Build
* kernel: 5.15.56-rc1
* git: https://gitlab.com/Linaro/lkft/mirrors/stable/linux-stable-rc
* git branch: linux-5.15.y
* git commit: 91c6070d5cedab812864b5440077d94efc003953
* git describe: v5.15.55-168-g91c6070d5ced
* test details:
https://qa-reports.linaro.org/lkft/linux-stable-rc-linux-5.15.y/build/v5.15.55-168-g91c6070d5ced
## Test Regressions (compared to v5.15.55)
No test regressions found.
## Metric Regressions (compared to v5.15.55)
No metric regressions found.
## Test Fixes (compared to v5.15.55)
No test fixes found.
## Metric Fixes (compared to v5.15.55)
No metric fixes found.
## Test result summary
total: 139212, pass: 125349, fail: 352, skip: 12676, xfail: 835
## Build Summary
* arc: 10 total, 10 passed, 0 failed
* arm: 308 total, 308 passed, 0 failed
* arm64: 62 total, 60 passed, 2 failed
* i386: 52 total, 50 passed, 2 failed
* mips: 45 total, 45 passed, 0 failed
* parisc: 12 total, 12 passed, 0 failed
* powerpc: 54 total, 54 passed, 0 failed
* riscv: 22 total, 22 passed, 0 failed
* s390: 21 total, 21 passed, 0 failed
* sh: 24 total, 24 passed, 0 failed
* sparc: 12 total, 12 passed, 0 failed
* x86_64: 56 total, 54 passed, 2 failed
## Test suites summary
* fwts
* igt-gpu-tools
* kunit
* kvm-unit-tests
* libgpiod
* libhugetlbfs
* log-parser-boot
* log-parser-test
* ltp-cap_bounds
* ltp-commands
* ltp-containers
* ltp-controllers
* ltp-cpuhotplug
* ltp-crypto
* ltp-cve
* ltp-dio
* ltp-fcntl-locktests
* ltp-filecaps
* ltp-fs
* ltp-fs_bind
* ltp-fs_perms_simple
* ltp-fsx
* ltp-hugetlb
* ltp-io
* ltp-ipc
* ltp-math
* ltp-mm
* ltp-nptl
* ltp-open-posix-tests
* ltp-pty
* ltp-sched
* ltp-securebits
* ltp-smoke
* ltp-syscalls
* ltp-tracing
* network-basic-tests
* packetdrill
* perf
* perf/Zstd-perf.data-compression
* rcutorture
* ssuite
* v4l2-compliance
* vdso
--
Linaro LKFT
https://lkft.linaro.org
Hi Greg,
Quoted 7 lines · Greg Kroah-Hartman
This is the start of the stable review cycle for the 5.15.56 release. There are 167 patches in this series, all will be posted as a response to this one. If anyone has any issues with these being applied, please let me know.
Responses should be made by Thu, 21 Jul 2022 11:43:40 +0000. Anything received after that time might be too late.
Build test (gcc version 11.3.1 20220706):
mips: 62 configs -> no failure
arm: 99 configs -> no failure
arm64: 3 configs -> no failurex86_64: 4 configs -> no failure
alpha allmodconfig -> no failure
csky allmodconfig -> no failure
powerpc allmodconfig -> no failure
riscv allmodconfig -> no failure
s390 allmodconfig -> no failure
xtensa allmodconfig -> no failure
Boot test:x86_64: Booted on my test laptop. No regression.x86_64: Booted on qemu. No regression. [1]
arm64: Booted on rpi4b (4GB model). No regression. [2]
mips: Booted on ci20 board. No regression. [3]
[1]. https://openqa.qa.codethink.co.uk/tests/1528
[2]. https://openqa.qa.codethink.co.uk/tests/1531
[3]. https://openqa.qa.codethink.co.uk/tests/1533
--
Regards
Sudip