[PATCH 4.19 00/29] 4.19.282-rc1 review

Greg Kroah-Hartman posted 29 patches 2 years, 7 months ago
Only 0 patches received!
Makefile                                           |  4 +-
arch/arm/boot/dts/rk3288.dtsi                      |  2 +-
arch/s390/kernel/ptrace.c                          |  8 +---
arch/x86/purgatory/Makefile                        |  5 ++-
drivers/iio/adc/at91-sama5d2_adc.c                 |  2 +-
drivers/iio/counter/104-quad-8.c                   | 14 +-----
drivers/input/serio/i8042-x86ia64io.h              |  8 ++++
drivers/memstick/core/memstick.c                   |  5 ++-
drivers/net/dsa/b53/b53_mmap.c                     | 14 ++++++
drivers/net/ethernet/intel/e1000e/netdev.c         | 51 +++++++++++-----------
drivers/net/ethernet/intel/i40e/i40e_main.c        |  9 ++--
.../ethernet/mellanox/mlxfw/mlxfw_mfa2_tlv_multi.c |  2 +
drivers/net/virtio_net.c                           |  8 +++-
drivers/net/xen-netback/netback.c                  |  6 +--
drivers/scsi/megaraid/megaraid_sas_base.c          |  2 +-
drivers/scsi/scsi.c                                | 11 ++++-
fs/ext4/inline.c                                   | 11 +++--
fs/ext4/xattr.c                                    | 26 +----------
fs/ext4/xattr.h                                    |  6 +--
fs/nilfs2/segment.c                                | 20 +++++++++
include/net/ipv6.h                                 |  2 +
include/net/udp.h                                  |  2 +-
include/net/udplite.h                              |  8 ----
include/trace/events/f2fs.h                        |  2 +-
net/dccp/dccp.h                                    |  1 +
net/dccp/ipv6.c                                    | 15 ++++---
net/dccp/proto.c                                   |  8 +++-
net/ipv4/udp.c                                     |  9 ++--
net/ipv4/udplite.c                                 |  8 ++++
net/ipv6/af_inet6.c                                | 15 ++++++-
net/ipv6/ipv6_sockglue.c                           | 20 ++++-----
net/ipv6/ping.c                                    |  6 ---
net/ipv6/raw.c                                     |  2 -
net/ipv6/tcp_ipv6.c                                |  8 +---
net/ipv6/udp.c                                     | 17 ++++++--
net/ipv6/udp_impl.h                                |  1 +
net/ipv6/udplite.c                                 |  9 +++-
net/l2tp/l2tp_ip6.c                                |  2 -
net/sched/sch_qfq.c                                | 13 +++---
net/sctp/socket.c                                  | 29 ++++++++----
scripts/asn1_compiler.c                            |  2 +-
.../selftests/sigaltstack/current_stack_pointer.h  | 23 ++++++++++
tools/testing/selftests/sigaltstack/sas.c          |  7 +--
43 files changed, 251 insertions(+), 172 deletions(-)
[PATCH 4.19 00/29] 4.19.282-rc1 review
Posted by Greg Kroah-Hartman 2 years, 7 months ago
This is the start of the stable review cycle for the 4.19.282 release.
There are 29 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 Wed, 26 Apr 2023 13:11:11 +0000.
Anything received after that time might be too late.

The whole patch series can be found in one patch at:
	https://www.kernel.org/pub/linux/kernel/v4.x/stable-review/patch-4.19.282-rc1.gz
or in the git tree and branch at:
	git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git linux-4.19.y
and the diffstat can be found below.

thanks,

greg k-h

-------------
Pseudo-Shortlog of commits:

Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Linux 4.19.282-rc1

Ekaterina Orlova <vorobushek.ok@gmail.com>
    ASN.1: Fix check for strdup() success

Dan Carpenter <error27@gmail.com>
    iio: adc: at91-sama5d2_adc: fix an error code in at91_adc_allocate_trigger()

William Breathitt Gray <william.gray@linaro.org>
    counter: 104-quad-8: Fix race condition between FLAG and CNTR reads

Kuniyuki Iwashima <kuniyu@amazon.com>
    sctp: Call inet6_destroy_sock() via sk->sk_destruct().

Kuniyuki Iwashima <kuniyu@amazon.com>
    dccp: Call inet6_destroy_sock() via sk->sk_destruct().

Kuniyuki Iwashima <kuniyu@amazon.com>
    inet6: Remove inet6_destroy_sock() in sk->sk_prot->destroy().

Kuniyuki Iwashima <kuniyu@amazon.com>
    tcp/udp: Call inet6_destroy_sock() in IPv6 sk->sk_destruct().

Kuniyuki Iwashima <kuniyu@amazon.com>
    udp: Call inet6_destroy_sock() in setsockopt(IPV6_ADDRFORM).

Baokun Li <libaokun1@huawei.com>
    ext4: fix use-after-free in ext4_xattr_set_entry

Ritesh Harjani <riteshh@linux.ibm.com>
    ext4: remove duplicate definition of ext4_xattr_ibody_inline_set()

Tudor Ambarus <tudor.ambarus@linaro.org>
    Revert "ext4: fix use-after-free in ext4_xattr_set_entry"

Pingfan Liu <kernelfans@gmail.com>
    x86/purgatory: Don't generate debug info for purgatory.ro

Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    memstick: fix memory leak if card device is never registered

Ryusuke Konishi <konishi.ryusuke@gmail.com>
    nilfs2: initialize unused bytes in segment summary blocks

Juergen Gross <jgross@suse.com>
    xen/netback: use same error messages for same errors

Heiko Carstens <hca@linux.ibm.com>
    s390/ptrace: fix PTRACE_GET_LAST_BREAK error handling

Álvaro Fernández Rojas <noltari@gmail.com>
    net: dsa: b53: mmap: add phy ops

Damien Le Moal <damien.lemoal@opensource.wdc.com>
    scsi: core: Improve scsi_vpd_inquiry() checks

Tomas Henzl <thenzl@redhat.com>
    scsi: megaraid_sas: Fix fw_crash_buffer_show()

Nick Desaulniers <ndesaulniers@google.com>
    selftests: sigaltstack: fix -Wuninitialized

Jonathan Denose <jdenose@chromium.org>
    Input: i8042 - add quirk for Fujitsu Lifebook A574/H

Douglas Raillard <douglas.raillard@arm.com>
    f2fs: Fix f2fs_truncate_partial_nodes ftrace event

Sebastian Basierski <sebastianx.basierski@intel.com>
    e1000e: Disable TSO on i219-LM card to increase speed

Nikita Zhandarovich <n.zhandarovich@fintech.ru>
    mlxfw: fix null-ptr-deref in mlxfw_mfa2_tlv_next()

Aleksandr Loktionov <aleksandr.loktionov@intel.com>
    i40e: fix i40e_setup_misc_vector() error handling

Aleksandr Loktionov <aleksandr.loktionov@intel.com>
    i40e: fix accessing vsi->active_filters without holding lock

Xuan Zhuo <xuanzhuo@linux.alibaba.com>
    virtio_net: bugfix overflow inside xdp_linearize_page()

Gwangun Jung <exsociety@gmail.com>
    net: sched: sch_qfq: prevent slab-out-of-bounds in qfq_activate_agg

Jianqun Xu <jay.xu@rock-chips.com>
    ARM: dts: rockchip: fix a typo error for rk3288 spdif node


-------------

Diffstat:

 Makefile                                           |  4 +-
 arch/arm/boot/dts/rk3288.dtsi                      |  2 +-
 arch/s390/kernel/ptrace.c                          |  8 +---
 arch/x86/purgatory/Makefile                        |  5 ++-
 drivers/iio/adc/at91-sama5d2_adc.c                 |  2 +-
 drivers/iio/counter/104-quad-8.c                   | 14 +-----
 drivers/input/serio/i8042-x86ia64io.h              |  8 ++++
 drivers/memstick/core/memstick.c                   |  5 ++-
 drivers/net/dsa/b53/b53_mmap.c                     | 14 ++++++
 drivers/net/ethernet/intel/e1000e/netdev.c         | 51 +++++++++++-----------
 drivers/net/ethernet/intel/i40e/i40e_main.c        |  9 ++--
 .../ethernet/mellanox/mlxfw/mlxfw_mfa2_tlv_multi.c |  2 +
 drivers/net/virtio_net.c                           |  8 +++-
 drivers/net/xen-netback/netback.c                  |  6 +--
 drivers/scsi/megaraid/megaraid_sas_base.c          |  2 +-
 drivers/scsi/scsi.c                                | 11 ++++-
 fs/ext4/inline.c                                   | 11 +++--
 fs/ext4/xattr.c                                    | 26 +----------
 fs/ext4/xattr.h                                    |  6 +--
 fs/nilfs2/segment.c                                | 20 +++++++++
 include/net/ipv6.h                                 |  2 +
 include/net/udp.h                                  |  2 +-
 include/net/udplite.h                              |  8 ----
 include/trace/events/f2fs.h                        |  2 +-
 net/dccp/dccp.h                                    |  1 +
 net/dccp/ipv6.c                                    | 15 ++++---
 net/dccp/proto.c                                   |  8 +++-
 net/ipv4/udp.c                                     |  9 ++--
 net/ipv4/udplite.c                                 |  8 ++++
 net/ipv6/af_inet6.c                                | 15 ++++++-
 net/ipv6/ipv6_sockglue.c                           | 20 ++++-----
 net/ipv6/ping.c                                    |  6 ---
 net/ipv6/raw.c                                     |  2 -
 net/ipv6/tcp_ipv6.c                                |  8 +---
 net/ipv6/udp.c                                     | 17 ++++++--
 net/ipv6/udp_impl.h                                |  1 +
 net/ipv6/udplite.c                                 |  9 +++-
 net/l2tp/l2tp_ip6.c                                |  2 -
 net/sched/sch_qfq.c                                | 13 +++---
 net/sctp/socket.c                                  | 29 ++++++++----
 scripts/asn1_compiler.c                            |  2 +-
 .../selftests/sigaltstack/current_stack_pointer.h  | 23 ++++++++++
 tools/testing/selftests/sigaltstack/sas.c          |  7 +--
 43 files changed, 251 insertions(+), 172 deletions(-)


Re: [PATCH 4.19 00/29] 4.19.282-rc1 review
Posted by Shuah Khan 2 years, 7 months ago
On 4/24/23 07:18, Greg Kroah-Hartman wrote:
> This is the start of the stable review cycle for the 4.19.282 release.
> There are 29 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 Wed, 26 Apr 2023 13:11:11 +0000.
> Anything received after that time might be too late.
> 
> The whole patch series can be found in one patch at:
> 	https://www.kernel.org/pub/linux/kernel/v4.x/stable-review/patch-4.19.282-rc1.gz
> or in the git tree and branch at:
> 	git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git linux-4.19.y
> and the diffstat can be found below.
> 
> thanks,
> 
> greg k-h
> 

Compiled and booted on my test system. No dmesg regressions.

Tested-by: Shuah Khan <skhan@linuxfoundation.org>

thanks,
-- Shuah
RE: [PATCH 4.19 00/29] 4.19.282-rc1 review
Posted by Chris Paterson 2 years, 7 months ago
Hello Greg,

> From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
> Sent: Monday, April 24, 2023 2:18 PM
> 
> This is the start of the stable review cycle for the 4.19.282 release.
> There are 29 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 Wed, 26 Apr 2023 13:11:11 +0000.
> Anything received after that time might be too late.

CIP configurations built and booted with Linux 4.19.282-rc1 (8ca3c8d28616):
https://gitlab.com/cip-project/cip-testing/linux-stable-rc-ci/-/pipelines/847551052
https://gitlab.com/cip-project/cip-testing/linux-stable-rc-ci/-/commits/linux-4.19.y

Tested-by: Chris Paterson (CIP) <chris.paterson2@renesas.com>

Kind regards, Chris
Re: [PATCH 4.19 00/29] 4.19.282-rc1 review
Posted by Jon Hunter 2 years, 7 months ago
On Mon, 24 Apr 2023 15:18:27 +0200, Greg Kroah-Hartman wrote:
> This is the start of the stable review cycle for the 4.19.282 release.
> There are 29 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 Wed, 26 Apr 2023 13:11:11 +0000.
> Anything received after that time might be too late.
> 
> The whole patch series can be found in one patch at:
> 	https://www.kernel.org/pub/linux/kernel/v4.x/stable-review/patch-4.19.282-rc1.gz
> or in the git tree and branch at:
> 	git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git linux-4.19.y
> and the diffstat can be found below.
> 
> thanks,
> 
> greg k-h

All tests passing for Tegra ...

Test results for stable-v4.19:
    10 builds:	10 pass, 0 fail
    22 boots:	22 pass, 0 fail
    40 tests:	40 pass, 0 fail

Linux version:	4.19.282-rc1-g8ca3c8d28616
Boards tested:	tegra124-jetson-tk1, tegra186-p2771-0000,
                tegra194-p2972-0000, tegra20-ventana,
                tegra210-p2371-2180, tegra30-cardhu-a04

Tested-by: Jon Hunter <jonathanh@nvidia.com>

Jon
Re: [PATCH 4.19 00/29] 4.19.282-rc1 review
Posted by Naresh Kamboju 2 years, 7 months ago
On Mon, 24 Apr 2023 at 14:39, Greg Kroah-Hartman
<gregkh@linuxfoundation.org> wrote:
>
> This is the start of the stable review cycle for the 4.19.282 release.
> There are 29 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 Wed, 26 Apr 2023 13:11:11 +0000.
> Anything received after that time might be too late.
>
> The whole patch series can be found in one patch at:
>         https://www.kernel.org/pub/linux/kernel/v4.x/stable-review/patch-4.19.282-rc1.gz
> or in the git tree and branch at:
>         git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git linux-4.19.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.

Tested-by: Linux Kernel Functional Testing <lkft@linaro.org>

FYI, This is not a show stopper but worth reporting.

NOTE:
Following kernel warning notices on stable rc  4.19.282-rc1 from the
previous releases 4.19.279-rc1 noticed on arm64, i386 and x86_64. After
this kernel warning the system is still stable and up and running.

This kernel is built with kselftest ftrace merge configs with all
required Kconfigs.

[    0.000000] Linux version 4.19.279-rc1 (tuxmake@tuxmake) (gcc
version 11.3.0 (Debian 11.3.0-11)) #1 SMP @1679324856
...
[    0.145911] ftrace: allocating 48590 entries in 190 pages
...

[    2.880223] WARNING: CPU: 0 PID: 0 at
include/trace/events/lock.h:13 lock_acquire+0x142/0x150
[    2.881454] WARNING: CPU: 1 PID: 0 at
include/trace/events/lock.h:58 lock_release+0x1af/0x280
[    2.881190] Modules linked in:
[    2.882221] Modules linked in:
[    2.881190] CPU: 0 PID: 0 Comm: swapper/0 Not tainted 4.19.279-rc1 #1
[    2.882221] CPU: 1 PID: 0 Comm: swapper/1 Not tainted 4.19.279-rc1 #1
[    2.881190] Hardware name: Supermicro SYS-5019S-ML/X11SSH-F, BIOS
2.5 11/26/2020
[    2.881190] RIP: 0010:lock_acquire+0x142/0x150
[    2.882221] Hardware name: Supermicro SYS-5019S-ML/X11SSH-F, BIOS
2.5 11/26/2020
[    2.882221] RIP: 0010:lock_release+0x1af/0x280
[    2.881190] Code: 59 48 85 c0 75 cf 45 89 cb 65 ff 0d 78 bd 23 6c
e9 24 ff ff ff 44 89 5d cc e8 9a 13 02 00 44 8b 5d cc 84 c0 0f 85 26
ff ff ff <0f> 0b e9 1f ff ff ff 0f 1f 80 00 00 00 00 8b 05 8a dc 90 01
85 c0
[    2.881190] RSP: 0000:ffffffff95603d50 EFLAGS: 00010046
[    2.882221] Code: ea 4c 89 e6 e8 42 80 02 01 48 8b 03 48 85 c0 75
e5 65 ff 0d 83 bf 23 6c e9 b1 fe ff ff e8 a9 15 02 00 84 c0 0f 85 bb
fe ff ff <0f> 0b e9 b4 fe ff ff e8 95 5e 41 00 85 c0 0f 84 52 ff ff ff
8b 35
[    2.882221] RSP: 0000:ffffbacc8193bda0 EFLAGS: 00010046
[    2.881190] RAX: 0000000000000000 RBX: 0000000000000046 RCX: 0000000000000002
[    2.881190] RDX: 0000000000000000 RSI: 0000000000000000 RDI: ffffffff9567fe08
[    2.882221] RAX: 0000000000000000 RBX: 0000000000000046 RCX: 0000000000000100
[    2.882221] RDX: ffffffff93db7bab RSI: 0000000000000001 RDI: ffffffff9567fe08
[    2.881190] RBP: ffffffff95603d90 R08: 0000000000000001 R09: 0000000000000000
[    2.881190] R10: 0000000000000000 R11: 0000000000000001 R12: ffffffff9567fe08
[    2.882221] RBP: ffffbacc8193bde8 R08: 00000000483c81c9 R09: 0000000000080000
[    2.882221] R10: 0000000000000000 R11: 0000000000000000 R12: ffffffff9567fe08
[    2.881190] R13: 0000000000000000 R14: 0000000000000000 R15: 0000000000000002
[    2.881190] FS:  0000000000000000(0000) GS:ffff8f2da7800000(0000)
knlGS:0000000000000000
[    2.882221] R13: ffffffff93db7bab R14: ffffffff956f3f20 R15: 0000000000000001
[    2.882221] FS:  0000000000000000(0000) GS:ffff8f2da7880000(0000)
knlGS:0000000000000000
[    2.881190] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[    2.881190] CR2: 0000000000000000 CR3: 00000002f621e001 CR4: 00000000003606f0
[    2.882221] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[    2.882221] CR2: 0000000000000000 CR3: 00000002f621e001 CR4: 00000000003606e0
[    2.881190] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
[    2.881190] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
[    2.882221] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
[    2.882221] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
[    2.881190] Call Trace:
[    2.882221] Call Trace:
[    2.882221]  ktime_get+0x58/0x110
[    2.881190]  ktime_get+0x43/0x110
[    2.882221]  ? sched_clock_tick+0x6b/0x90
[    2.881190]  ? sched_clock_tick+0x6b/0x90
[    2.882221]  sched_clock_tick+0x6b/0x90
[    2.881190]  sched_clock_tick+0x6b/0x90
[    2.882221]  sched_clock_idle_wakeup_event+0x22/0x50
[    2.881190]  sched_clock_idle_wakeup_event+0x22/0x50
[    2.882221]  cpuidle_enter_state+0xd6/0x2e0
[    2.881190]  cpuidle_enter_state+0xd6/0x2e0
[    2.882221]  cpuidle_enter+0x17/0x20
[    2.881190]  cpuidle_enter+0x17/0x20
[    2.882221]  call_cpuidle+0x23/0x40
[    2.881190]  call_cpuidle+0x23/0x40
[    2.882221]  do_idle+0x1b9/0x240
[    2.881190]  do_idle+0x1b9/0x240
[    2.882221]  cpu_startup_entry+0x73/0x80
[    2.881190]  cpu_startup_entry+0x73/0x80
[    2.882221]  start_secondary+0x19e/0x1f0
[    2.881190]  rest_init+0x143/0x147
[    2.882221]  secondary_startup_64+0xa4/0xb0
[    2.881190]  start_kernel+0x487/0x4a9
[    2.882221] irq event stamp: 33604
[    2.881190]  x86_64_start_reservations+0x24/0x26
[    2.882221] hardirqs last  enabled at (33603): [<ffffffff93e23771>]
tick_nohz_idle_enter+0x61/0xa0
[    2.882221] hardirqs last disabled at (33604): [<ffffffff93db8d22>]
do_idle+0x72/0x240
[    2.881190]  x86_64_start_kernel+0x87/0x8b
[    2.882221] softirqs last  enabled at (33594): [<ffffffff94e002b6>]
__do_softirq+0x2b6/0x356
[    2.882221] softirqs last disabled at (33579): [<ffffffff93d83a1b>]
irq_exit+0xab/0xe0
[    2.881190]  secondary_startup_64+0xa4/0xb0
[    2.882221] ---[ end trace 257e6b641850f405 ]---
[    2.881190] irq event stamp: 51806
[    3.190254] thermal LNXTHERM:00: registered as thermal_zone0
[    2.881190] hardirqs last  enabled at (51805): [<ffffffff94b356ad>]
poll_idle+0x2d/0xa6
[    2.881190] hardirqs last disabled at (51806): [<ffffffff93db7bed>]
sched_clock_idle_wakeup_event+0x1d/0x50
[    2.881190] softirqs last  enabled at (51790): [<ffffffff93d82d21>]
_local_bh_enable+0x21/0x40
[    2.881190] softirqs last disabled at (51789): [<ffffffff93d83948>]
irq_enter+0x48/0x70
[    3.195448] ACPI: Thermal Zone [TZ00] (28 C)
[    2.881190] ---[ end trace 257e6b641850f406 ]---

Logs:
 - https://lkft.validation.linaro.org/scheduler/job/6373184#L889

History:
-------
 - https://qa-reports.linaro.org/lkft/linux-stable-rc-linux-4.19.y/build/v4.19.279-173-g8ca3c8d28616/testrun/16488263/suite/log-parser-boot/test/check-kernel-warning-ef0018e98767c447e2908013dcfcfeefa0f9b58524308b22e25e3958891408e5/history/

 - https://qa-reports.linaro.org/lkft/linux-stable-rc-linux-4.19.y/build/v4.19.278-37-gc1beffa09ae6/testrun/15764758/suite/log-parser-boot/test/check-kernel-warning-ef0018e98767c447e2908013dcfcfeefa0f9b58524308b22e25e3958891408e5/log

 - https://qa-reports.linaro.org/lkft/linux-stable-rc-linux-4.19.y/build/v4.19.279-173-g8ca3c8d28616/testrun/16487659/suite/log-parser-boot/test/check-kernel-warning-ef0018e98767c447e2908013dcfcfeefa0f9b58524308b22e25e3958891408e5/details/

 - https://storage.tuxsuite.com/public/linaro/lkft/builds/2OsIodn7l10ciOlEtqVm8nzAJyc/config

## Build
* kernel: 4.19.282-rc1
* git: https://gitlab.com/Linaro/lkft/mirrors/stable/linux-stable-rc
* git branch: linux-4.19.y
* git commit: 8ca3c8d286160dca3bb13ae97a4a7a2d2fd4ad01
* git describe: v4.19.279-173-g8ca3c8d28616
* test details:
https://qa-reports.linaro.org/lkft/linux-stable-rc-linux-4.19.y/build/v4.19.279-173-g8ca3c8d28616

## Test Regressions (compared to v4.19.279-143-gcc0a9b81697f)

## Metric Regressions (compared to v4.19.279-143-gcc0a9b81697f)

## Test Fixes (compared to v4.19.279-143-gcc0a9b81697f)

## Metric Fixes (compared to v4.19.279-143-gcc0a9b81697f)

## Test result summary
total: 96887, pass: 72120, fail: 3496, skip: 21094, xfail: 177

## Build Summary
* arc: 10 total, 10 passed, 0 failed
* arm: 108 total, 107 passed, 1 failed
* arm64: 34 total, 33 passed, 1 failed
* i386: 20 total, 19 passed, 1 failed
* mips: 22 total, 22 passed, 0 failed
* parisc: 6 total, 6 passed, 0 failed
* powerpc: 24 total, 24 passed, 0 failed
* s390: 6 total, 6 passed, 0 failed
* sh: 12 total, 12 passed, 0 failed
* sparc: 6 total, 6 passed, 0 failed
* x86_64: 28 total, 27 passed, 1 failed

## Test suites summary
* boot
* fwts
* igt-gpu-tools
* kselftest-android
* kselftest-arm64
* kselftest-breakpoints
* kselftest-capabilities
* kselftest-cgroup
* kselftest-clone3
* kselftest-core
* kselftest-cpu-hotplug
* kselftest-cpufreq
* kselftest-drivers-dma-buf
* kselftest-efivarfs
* kselftest-filesystems
* kselftest-filesystems-binderfs
* kselftest-firmware
* kselftest-fpu
* kselftest-ftrace
* kselftest-futex
* kselftest-gpio
* kselftest-intel_pstate
* kselftest-ipc
* kselftest-ir
* kselftest-kcmp
* kselftest-kexec
* kselftest-kvm
* kselftest-lib
* kselftest-livepatch
* kselftest-membarrier
* kselftest-memfd
* kselftest-memory-hotplug
* kselftest-mincore
* kselftest-mount
* kselftest-mqueue
* kselftest-net
* kselftest-net-forwarding
* kselftest-netfilter
* kselftest-nsfs
* kselftest-openat2
* kselftest-pid_namespace
* kselftest-pidfd
* kselftest-proc
* kselftest-pstore
* kselftest-ptrace
* kselftest-rseq
* kselftest-rtc
* kselftest-seccomp
* kselftest-sigaltstack
* kselftest-size
* kselftest-splice
* kselftest-static_keys
* kselftest-sync
* kselftest-sysctl
* kselftest-tc-testing
* kselftest-timens
* kselftest-timers
* kselftest-tmpfs
* kselftest-tpm2
* kselftest-user
* kselftest-vm
* kselftest-x86
* kselftest-zram
* kunit
* kvm-unit-tests
* 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-pty
* ltp-sched
* ltp-securebits
* ltp-smoke
* ltp-syscalls
* ltp-tracing
* network-basic-tests
* rcutorture
* v4l2-compliance
* vdso

--
Linaro LKFT
https://lkft.linaro.org
Re: [PATCH 4.19 00/29] 4.19.282-rc1 review
Posted by Steven Rostedt 2 years, 7 months ago
On Tue, 25 Apr 2023 11:02:23 +0100
Naresh Kamboju <naresh.kamboju@linaro.org> wrote:

> On Mon, 24 Apr 2023 at 14:39, Greg Kroah-Hartman
> <gregkh@linuxfoundation.org> wrote:
> >
> > This is the start of the stable review cycle for the 4.19.282 release.
> > There are 29 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 Wed, 26 Apr 2023 13:11:11 +0000.
> > Anything received after that time might be too late.
> >
> > The whole patch series can be found in one patch at:
> >         https://www.kernel.org/pub/linux/kernel/v4.x/stable-review/patch-4.19.282-rc1.gz
> > or in the git tree and branch at:
> >         git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git linux-4.19.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.
> 
> Tested-by: Linux Kernel Functional Testing <lkft@linaro.org>
> 
> FYI, This is not a show stopper but worth reporting.
> 
> NOTE:
> Following kernel warning notices on stable rc  4.19.282-rc1 from the
> previous releases 4.19.279-rc1 noticed on arm64, i386 and x86_64. After
> this kernel warning the system is still stable and up and running.
> 
> This kernel is built with kselftest ftrace merge configs with all
> required Kconfigs.
> 
> [    0.000000] Linux version 4.19.279-rc1 (tuxmake@tuxmake) (gcc
> version 11.3.0 (Debian 11.3.0-11)) #1 SMP @1679324856
> ...
> [    0.145911] ftrace: allocating 48590 entries in 190 pages

Note, this has nothing to do with the ftrace allocating of pages.

> ...
> 
> [    2.880223] WARNING: CPU: 0 PID: 0 at
> include/trace/events/lock.h:13 lock_acquire+0x142/0x150

The above file is a trace event that should not be enabled at boot up.

But... I believe there was a check that wasn't working anymore, but I fixed
it, and that was backported. So this is probably detecting a bug, or needs
another fix.

Hmm, commit c2679254b9c9980d9045f0f722cf093a2b1f7590 was added in 279-rc1
which is probably what is triggering this.

That is in include/linux/tracepoint.h:

	static inline void trace_##name(proto)				\
	{								\
		if (static_key_false(&__tracepoint_##name.key))		\
			__DO_TRACE(name,				\
				TP_ARGS(args),				\
				TP_CONDITION(cond), 0);			\
		if (IS_ENABLED(CONFIG_LOCKDEP) && (cond)) {		\
			WARN_ON_ONCE(!rcu_is_watching());		\
		}							\
	}		

Where the trace event is being called when RCU is not watching (and trace
events require RCU to *be* watching!).


Now the question is, why is this triggering on 4.19 but not in latest
mainline?

-- Steve



> [    2.881454] WARNING: CPU: 1 PID: 0 at
> include/trace/events/lock.h:58 lock_release+0x1af/0x280
> [    2.881190] Modules linked in:
> [    2.882221] Modules linked in:
> [    2.881190] CPU: 0 PID: 0 Comm: swapper/0 Not tainted 4.19.279-rc1 #1
> [    2.882221] CPU: 1 PID: 0 Comm: swapper/1 Not tainted 4.19.279-rc1 #1
> [    2.881190] Hardware name: Supermicro SYS-5019S-ML/X11SSH-F, BIOS
> 2.5 11/26/2020
> [    2.881190] RIP: 0010:lock_acquire+0x142/0x150
> [    2.882221] Hardware name: Supermicro SYS-5019S-ML/X11SSH-F, BIOS
> 2.5 11/26/2020
> [    2.882221] RIP: 0010:lock_release+0x1af/0x280
> [    2.881190] Code: 59 48 85 c0 75 cf 45 89 cb 65 ff 0d 78 bd 23 6c
> e9 24 ff ff ff 44 89 5d cc e8 9a 13 02 00 44 8b 5d cc 84 c0 0f 85 26
> ff ff ff <0f> 0b e9 1f ff ff ff 0f 1f 80 00 00 00 00 8b 05 8a dc 90 01
> 85 c0
> [    2.881190] RSP: 0000:ffffffff95603d50 EFLAGS: 00010046
> [    2.882221] Code: ea 4c 89 e6 e8 42 80 02 01 48 8b 03 48 85 c0 75
> e5 65 ff 0d 83 bf 23 6c e9 b1 fe ff ff e8 a9 15 02 00 84 c0 0f 85 bb
> fe ff ff <0f> 0b e9 b4 fe ff ff e8 95 5e 41 00 85 c0 0f 84 52 ff ff ff
> 8b 35
> [    2.882221] RSP: 0000:ffffbacc8193bda0 EFLAGS: 00010046
> [    2.881190] RAX: 0000000000000000 RBX: 0000000000000046 RCX: 0000000000000002
> [    2.881190] RDX: 0000000000000000 RSI: 0000000000000000 RDI: ffffffff9567fe08
> [    2.882221] RAX: 0000000000000000 RBX: 0000000000000046 RCX: 0000000000000100
> [    2.882221] RDX: ffffffff93db7bab RSI: 0000000000000001 RDI: ffffffff9567fe08
> [    2.881190] RBP: ffffffff95603d90 R08: 0000000000000001 R09: 0000000000000000
> [    2.881190] R10: 0000000000000000 R11: 0000000000000001 R12: ffffffff9567fe08
> [    2.882221] RBP: ffffbacc8193bde8 R08: 00000000483c81c9 R09: 0000000000080000
> [    2.882221] R10: 0000000000000000 R11: 0000000000000000 R12: ffffffff9567fe08
> [    2.881190] R13: 0000000000000000 R14: 0000000000000000 R15: 0000000000000002
> [    2.881190] FS:  0000000000000000(0000) GS:ffff8f2da7800000(0000)
> knlGS:0000000000000000
> [    2.882221] R13: ffffffff93db7bab R14: ffffffff956f3f20 R15: 0000000000000001
> [    2.882221] FS:  0000000000000000(0000) GS:ffff8f2da7880000(0000)
> knlGS:0000000000000000
> [    2.881190] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
> [    2.881190] CR2: 0000000000000000 CR3: 00000002f621e001 CR4: 00000000003606f0
> [    2.882221] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
> [    2.882221] CR2: 0000000000000000 CR3: 00000002f621e001 CR4: 00000000003606e0
> [    2.881190] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
> [    2.881190] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
> [    2.882221] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
> [    2.882221] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
> [    2.881190] Call Trace:
> [    2.882221] Call Trace:
> [    2.882221]  ktime_get+0x58/0x110
> [    2.881190]  ktime_get+0x43/0x110
> [    2.882221]  ? sched_clock_tick+0x6b/0x90
> [    2.881190]  ? sched_clock_tick+0x6b/0x90
> [    2.882221]  sched_clock_tick+0x6b/0x90
> [    2.881190]  sched_clock_tick+0x6b/0x90
> [    2.882221]  sched_clock_idle_wakeup_event+0x22/0x50
> [    2.881190]  sched_clock_idle_wakeup_event+0x22/0x50
> [    2.882221]  cpuidle_enter_state+0xd6/0x2e0
> [    2.881190]  cpuidle_enter_state+0xd6/0x2e0
> [    2.882221]  cpuidle_enter+0x17/0x20
> [    2.881190]  cpuidle_enter+0x17/0x20
> [    2.882221]  call_cpuidle+0x23/0x40
> [    2.881190]  call_cpuidle+0x23/0x40
> [    2.882221]  do_idle+0x1b9/0x240
> [    2.881190]  do_idle+0x1b9/0x240
> [    2.882221]  cpu_startup_entry+0x73/0x80
> [    2.881190]  cpu_startup_entry+0x73/0x80
> [    2.882221]  start_secondary+0x19e/0x1f0
> [    2.881190]  rest_init+0x143/0x147
> [    2.882221]  secondary_startup_64+0xa4/0xb0
> [    2.881190]  start_kernel+0x487/0x4a9
> [    2.882221] irq event stamp: 33604
> [    2.881190]  x86_64_start_reservations+0x24/0x26
> [    2.882221] hardirqs last  enabled at (33603): [<ffffffff93e23771>]
> tick_nohz_idle_enter+0x61/0xa0
> [    2.882221] hardirqs last disabled at (33604): [<ffffffff93db8d22>]
> do_idle+0x72/0x240
> [    2.881190]  x86_64_start_kernel+0x87/0x8b
> [    2.882221] softirqs last  enabled at (33594): [<ffffffff94e002b6>]
> __do_softirq+0x2b6/0x356
> [    2.882221] softirqs last disabled at (33579): [<ffffffff93d83a1b>]
> irq_exit+0xab/0xe0
> [    2.881190]  secondary_startup_64+0xa4/0xb0
> [    2.882221] ---[ end trace 257e6b641850f405 ]---
> [    2.881190] irq event stamp: 51806
> [    3.190254] thermal LNXTHERM:00: registered as thermal_zone0
> [    2.881190] hardirqs last  enabled at (51805): [<ffffffff94b356ad>]
> poll_idle+0x2d/0xa6
> [    2.881190] hardirqs last disabled at (51806): [<ffffffff93db7bed>]
> sched_clock_idle_wakeup_event+0x1d/0x50
> [    2.881190] softirqs last  enabled at (51790): [<ffffffff93d82d21>]
> _local_bh_enable+0x21/0x40
> [    2.881190] softirqs last disabled at (51789): [<ffffffff93d83948>]
> irq_enter+0x48/0x70
> [    3.195448] ACPI: Thermal Zone [TZ00] (28 C)
> [    2.881190] ---[ end trace 257e6b641850f406 ]---
> 
> Logs:
>  - https://lkft.validation.linaro.org/scheduler/job/6373184#L889
> 
> History:
> -------
>  - https://qa-reports.linaro.org/lkft/linux-stable-rc-linux-4.19.y/build/v4.19.279-173-g8ca3c8d28616/testrun/16488263/suite/log-parser-boot/test/check-kernel-warning-ef0018e98767c447e2908013dcfcfeefa0f9b58524308b22e25e3958891408e5/history/
> 
>  - https://qa-reports.linaro.org/lkft/linux-stable-rc-linux-4.19.y/build/v4.19.278-37-gc1beffa09ae6/testrun/15764758/suite/log-parser-boot/test/check-kernel-warning-ef0018e98767c447e2908013dcfcfeefa0f9b58524308b22e25e3958891408e5/log
> 
>  - https://qa-reports.linaro.org/lkft/linux-stable-rc-linux-4.19.y/build/v4.19.279-173-g8ca3c8d28616/testrun/16487659/suite/log-parser-boot/test/check-kernel-warning-ef0018e98767c447e2908013dcfcfeefa0f9b58524308b22e25e3958891408e5/details/
> 
>  - https://storage.tuxsuite.com/public/linaro/lkft/builds/2OsIodn7l10ciOlEtqVm8nzAJyc/config
> 
> ## Build
> * kernel: 4.19.282-rc1
> * git: https://gitlab.com/Linaro/lkft/mirrors/stable/linux-stable-rc
> * git branch: linux-4.19.y
> * git commit: 8ca3c8d286160dca3bb13ae97a4a7a2d2fd4ad01
> * git describe: v4.19.279-173-g8ca3c8d28616
> * test details:
> https://qa-reports.linaro.org/lkft/linux-stable-rc-linux-4.19.y/build/v4.19.279-173-g8ca3c8d28616
> 
> ## Test Regressions (compared to v4.19.279-143-gcc0a9b81697f)
> 
> ## Metric Regressions (compared to v4.19.279-143-gcc0a9b81697f)
> 
> ## Test Fixes (compared to v4.19.279-143-gcc0a9b81697f)
> 
> ## Metric Fixes (compared to v4.19.279-143-gcc0a9b81697f)
> 
> ## Test result summary
> total: 96887, pass: 72120, fail: 3496, skip: 21094, xfail: 177
> 
> ## Build Summary
> * arc: 10 total, 10 passed, 0 failed
> * arm: 108 total, 107 passed, 1 failed
> * arm64: 34 total, 33 passed, 1 failed
> * i386: 20 total, 19 passed, 1 failed
> * mips: 22 total, 22 passed, 0 failed
> * parisc: 6 total, 6 passed, 0 failed
> * powerpc: 24 total, 24 passed, 0 failed
> * s390: 6 total, 6 passed, 0 failed
> * sh: 12 total, 12 passed, 0 failed
> * sparc: 6 total, 6 passed, 0 failed
> * x86_64: 28 total, 27 passed, 1 failed
> 
> ## Test suites summary
> * boot
> * fwts
> * igt-gpu-tools
> * kselftest-android
> * kselftest-arm64
> * kselftest-breakpoints
> * kselftest-capabilities
> * kselftest-cgroup
> * kselftest-clone3
> * kselftest-core
> * kselftest-cpu-hotplug
> * kselftest-cpufreq
> * kselftest-drivers-dma-buf
> * kselftest-efivarfs
> * kselftest-filesystems
> * kselftest-filesystems-binderfs
> * kselftest-firmware
> * kselftest-fpu
> * kselftest-ftrace
> * kselftest-futex
> * kselftest-gpio
> * kselftest-intel_pstate
> * kselftest-ipc
> * kselftest-ir
> * kselftest-kcmp
> * kselftest-kexec
> * kselftest-kvm
> * kselftest-lib
> * kselftest-livepatch
> * kselftest-membarrier
> * kselftest-memfd
> * kselftest-memory-hotplug
> * kselftest-mincore
> * kselftest-mount
> * kselftest-mqueue
> * kselftest-net
> * kselftest-net-forwarding
> * kselftest-netfilter
> * kselftest-nsfs
> * kselftest-openat2
> * kselftest-pid_namespace
> * kselftest-pidfd
> * kselftest-proc
> * kselftest-pstore
> * kselftest-ptrace
> * kselftest-rseq
> * kselftest-rtc
> * kselftest-seccomp
> * kselftest-sigaltstack
> * kselftest-size
> * kselftest-splice
> * kselftest-static_keys
> * kselftest-sync
> * kselftest-sysctl
> * kselftest-tc-testing
> * kselftest-timens
> * kselftest-timers
> * kselftest-tmpfs
> * kselftest-tpm2
> * kselftest-user
> * kselftest-vm
> * kselftest-x86
> * kselftest-zram
> * kunit
> * kvm-unit-tests
> * 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-pty
> * ltp-sched
> * ltp-securebits
> * ltp-smoke
> * ltp-syscalls
> * ltp-tracing
> * network-basic-tests
> * rcutorture
> * v4l2-compliance
> * vdso
> 
> --
> Linaro LKFT
> https://lkft.linaro.org

Re: [PATCH 4.19 00/29] 4.19.282-rc1 review
Posted by Steven Rostedt 2 years, 7 months ago
On Wed, 26 Apr 2023 17:09:45 -0400
Steven Rostedt <rostedt@goodmis.org> wrote:

> Now the question is, why is this triggering on 4.19 but not in latest
> mainline?

I found it, I backported this patch and the warning goes away (at least for
me). Can you add this and see if it makes the warning go away for you too?

-- Steve

From: Peter Zijlstra <peterz@infradead.org>
Date: Fri, 7 Aug 2020 20:50:19 +0200
Subject: [PATCH] sched,idle,rcu: Push rcu_idle deeper into the idle path

commit 1098582a0f6c4e8fd28da0a6305f9233d02c9c1d upstream.

Lots of things take locks, due to a wee bug, rcu_lockdep didn't notice
that the locking tracepoints were using RCU.

Push rcu_idle_{enter,exit}() as deep as possible into the idle paths,
this also resolves a lot of _rcuidle()/RCU_NONIDLE() usage.

Specifically, sched_clock_idle_wakeup_event() will use ktime which
will use seqlocks which will tickle lockdep, and
stop_critical_timings() uses lock.

Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Reviewed-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
Reviewed-by: Thomas Gleixner <tglx@linutronix.de>
Acked-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Tested-by: Marco Elver <elver@google.com>
Link: https://lkml.kernel.org/r/20200821085348.310943801@infradead.org
---
 drivers/cpuidle/cpuidle.c | 12 ++++++++----
 kernel/sched/idle.c       | 22 ++++++++--------------
 2 files changed, 16 insertions(+), 18 deletions(-)

diff --git a/drivers/cpuidle/cpuidle.c b/drivers/cpuidle/cpuidle.c
index 2d182dc1b49e..01bde6dec13a 100644
--- a/drivers/cpuidle/cpuidle.c
+++ b/drivers/cpuidle/cpuidle.c
@@ -140,13 +140,14 @@ static void enter_s2idle_proper(struct cpuidle_driver *drv,
 	 * executing it contains RCU usage regarded as invalid in the idle
 	 * context, so tell RCU about that.
 	 */
-	RCU_NONIDLE(tick_freeze());
+	tick_freeze();
 	/*
 	 * The state used here cannot be a "coupled" one, because the "coupled"
 	 * cpuidle mechanism enables interrupts and doing that with timekeeping
 	 * suspended is generally unsafe.
 	 */
 	stop_critical_timings();
+	rcu_idle_enter();
 	drv->states[index].enter_s2idle(dev, drv, index);
 	if (WARN_ON_ONCE(!irqs_disabled()))
 		local_irq_disable();
@@ -155,7 +156,8 @@ static void enter_s2idle_proper(struct cpuidle_driver *drv,
 	 * first CPU executing it calls functions containing RCU read-side
 	 * critical sections, so tell RCU about that.
 	 */
-	RCU_NONIDLE(tick_unfreeze());
+	rcu_idle_exit();
+	tick_unfreeze();
 	start_critical_timings();
 
 	time_end = ns_to_ktime(local_clock());
@@ -224,16 +226,18 @@ int cpuidle_enter_state(struct cpuidle_device *dev, struct cpuidle_driver *drv,
 	/* Take note of the planned idle state. */
 	sched_idle_set_state(target_state);
 
-	trace_cpu_idle_rcuidle(index, dev->cpu);
+	trace_cpu_idle(index, dev->cpu);
 	time_start = ns_to_ktime(local_clock());
 
 	stop_critical_timings();
+	rcu_idle_enter();
 	entered_state = target_state->enter(dev, drv, index);
+	rcu_idle_exit();
 	start_critical_timings();
 
 	sched_clock_idle_wakeup_event();
 	time_end = ns_to_ktime(local_clock());
-	trace_cpu_idle_rcuidle(PWR_EVENT_EXIT, dev->cpu);
+	trace_cpu_idle(PWR_EVENT_EXIT, dev->cpu);
 
 	/* The cpu is no longer idle or about to enter idle. */
 	sched_idle_set_state(NULL);
diff --git a/kernel/sched/idle.c b/kernel/sched/idle.c
index 44a17366c8ec..4e3d149d64ad 100644
--- a/kernel/sched/idle.c
+++ b/kernel/sched/idle.c
@@ -53,17 +53,18 @@ __setup("hlt", cpu_idle_nopoll_setup);
 
 static noinline int __cpuidle cpu_idle_poll(void)
 {
+	trace_cpu_idle(0, smp_processor_id());
+	stop_critical_timings();
 	rcu_idle_enter();
-	trace_cpu_idle_rcuidle(0, smp_processor_id());
 	local_irq_enable();
-	stop_critical_timings();
 
 	while (!tif_need_resched() &&
-		(cpu_idle_force_poll || tick_check_broadcast_expired()))
+	       (cpu_idle_force_poll || tick_check_broadcast_expired()))
 		cpu_relax();
-	start_critical_timings();
-	trace_cpu_idle_rcuidle(PWR_EVENT_EXIT, smp_processor_id());
+
 	rcu_idle_exit();
+	start_critical_timings();
+	trace_cpu_idle(PWR_EVENT_EXIT, smp_processor_id());
 
 	return 1;
 }
@@ -90,7 +91,9 @@ void __cpuidle default_idle_call(void)
 		local_irq_enable();
 	} else {
 		stop_critical_timings();
+		rcu_idle_enter();
 		arch_cpu_idle();
+		rcu_idle_exit();
 		start_critical_timings();
 	}
 }
@@ -148,7 +151,6 @@ static void cpuidle_idle_call(void)
 
 	if (cpuidle_not_available(drv, dev)) {
 		tick_nohz_idle_stop_tick();
-		rcu_idle_enter();
 
 		default_idle_call();
 		goto exit_idle;
@@ -166,19 +168,15 @@ static void cpuidle_idle_call(void)
 
 	if (idle_should_enter_s2idle() || dev->use_deepest_state) {
 		if (idle_should_enter_s2idle()) {
-			rcu_idle_enter();
 
 			entered_state = cpuidle_enter_s2idle(drv, dev);
 			if (entered_state > 0) {
 				local_irq_enable();
 				goto exit_idle;
 			}
-
-			rcu_idle_exit();
 		}
 
 		tick_nohz_idle_stop_tick();
-		rcu_idle_enter();
 
 		next_state = cpuidle_find_deepest_state(drv, dev);
 		call_cpuidle(drv, dev, next_state);
@@ -195,8 +193,6 @@ static void cpuidle_idle_call(void)
 		else
 			tick_nohz_idle_retain_tick();
 
-		rcu_idle_enter();
-
 		entered_state = call_cpuidle(drv, dev, next_state);
 		/*
 		 * Give the governor an opportunity to reflect on the outcome
@@ -212,8 +208,6 @@ static void cpuidle_idle_call(void)
 	 */
 	if (WARN_ON_ONCE(irqs_disabled()))
 		local_irq_enable();
-
-	rcu_idle_exit();
 }
 
 /*
-- 
2.39.2
Re: [PATCH 4.19 00/29] 4.19.282-rc1 review
Posted by Naresh Kamboju 2 years, 7 months ago
Hi Steven,

On Wed, 26 Apr 2023 at 23:14, Steven Rostedt <rostedt@goodmis.org> wrote:
>
> On Wed, 26 Apr 2023 17:09:45 -0400
> Steven Rostedt <rostedt@goodmis.org> wrote:
>
> > Now the question is, why is this triggering on 4.19 but not in latest
> > mainline?
>
> I found it, I backported this patch and the warning goes away (at least for
> me). Can you add this and see if it makes the warning go away for you too?

I have applied this patch on stable-rc 4.19 branch and tested on
- arm64: Juno-r2
 - x86_64 device

and the reported problem has been resolved.

Thanks for finding a quick fix patch.

>
> -- Steve
>
> From: Peter Zijlstra <peterz@infradead.org>
> Date: Fri, 7 Aug 2020 20:50:19 +0200
> Subject: [PATCH] sched,idle,rcu: Push rcu_idle deeper into the idle path
>
> commit 1098582a0f6c4e8fd28da0a6305f9233d02c9c1d upstream.
>
> Lots of things take locks, due to a wee bug, rcu_lockdep didn't notice
> that the locking tracepoints were using RCU.
>
> Push rcu_idle_{enter,exit}() as deep as possible into the idle paths,
> this also resolves a lot of _rcuidle()/RCU_NONIDLE() usage.
>
> Specifically, sched_clock_idle_wakeup_event() will use ktime which
> will use seqlocks which will tickle lockdep, and
> stop_critical_timings() uses lock.
>
> Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
> Reviewed-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
> Reviewed-by: Thomas Gleixner <tglx@linutronix.de>
> Acked-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
> Tested-by: Marco Elver <elver@google.com>
> Link: https://lkml.kernel.org/r/20200821085348.310943801@infradead.org


Tested-by: Linux Kernel Functional Testing <lkft@linaro.org>
Tested-by: Naresh Kamboju <naresh.kamboju@linaro.org>

test log:
  - https://lkft.validation.linaro.org/scheduler/job/6380295#L1418
  - https://lkft.validation.linaro.org/scheduler/job/6380303#L1443

> ---
>  drivers/cpuidle/cpuidle.c | 12 ++++++++----
>  kernel/sched/idle.c       | 22 ++++++++--------------
>  2 files changed, 16 insertions(+), 18 deletions(-)
>
> diff --git a/drivers/cpuidle/cpuidle.c b/drivers/cpuidle/cpuidle.c
> index 2d182dc1b49e..01bde6dec13a 100644
> --- a/drivers/cpuidle/cpuidle.c
> +++ b/drivers/cpuidle/cpuidle.c
> @@ -140,13 +140,14 @@ static void enter_s2idle_proper(struct cpuidle_driver *drv,
>          * executing it contains RCU usage regarded as invalid in the idle
>          * context, so tell RCU about that.
>          */
> -       RCU_NONIDLE(tick_freeze());
> +       tick_freeze();
>         /*
>          * The state used here cannot be a "coupled" one, because the "coupled"
>          * cpuidle mechanism enables interrupts and doing that with timekeeping
>          * suspended is generally unsafe.
>          */
>         stop_critical_timings();
> +       rcu_idle_enter();
>         drv->states[index].enter_s2idle(dev, drv, index);
>         if (WARN_ON_ONCE(!irqs_disabled()))
>                 local_irq_disable();
> @@ -155,7 +156,8 @@ static void enter_s2idle_proper(struct cpuidle_driver *drv,
>          * first CPU executing it calls functions containing RCU read-side
>          * critical sections, so tell RCU about that.
>          */
> -       RCU_NONIDLE(tick_unfreeze());
> +       rcu_idle_exit();
> +       tick_unfreeze();
>         start_critical_timings();
>
>         time_end = ns_to_ktime(local_clock());
> @@ -224,16 +226,18 @@ int cpuidle_enter_state(struct cpuidle_device *dev, struct cpuidle_driver *drv,
>         /* Take note of the planned idle state. */
>         sched_idle_set_state(target_state);
>
> -       trace_cpu_idle_rcuidle(index, dev->cpu);
> +       trace_cpu_idle(index, dev->cpu);
>         time_start = ns_to_ktime(local_clock());
>
>         stop_critical_timings();
> +       rcu_idle_enter();
>         entered_state = target_state->enter(dev, drv, index);
> +       rcu_idle_exit();
>         start_critical_timings();
>
>         sched_clock_idle_wakeup_event();
>         time_end = ns_to_ktime(local_clock());
> -       trace_cpu_idle_rcuidle(PWR_EVENT_EXIT, dev->cpu);
> +       trace_cpu_idle(PWR_EVENT_EXIT, dev->cpu);
>
>         /* The cpu is no longer idle or about to enter idle. */
>         sched_idle_set_state(NULL);
> diff --git a/kernel/sched/idle.c b/kernel/sched/idle.c
> index 44a17366c8ec..4e3d149d64ad 100644
> --- a/kernel/sched/idle.c
> +++ b/kernel/sched/idle.c
> @@ -53,17 +53,18 @@ __setup("hlt", cpu_idle_nopoll_setup);
>
>  static noinline int __cpuidle cpu_idle_poll(void)
>  {
> +       trace_cpu_idle(0, smp_processor_id());
> +       stop_critical_timings();
>         rcu_idle_enter();
> -       trace_cpu_idle_rcuidle(0, smp_processor_id());
>         local_irq_enable();
> -       stop_critical_timings();
>
>         while (!tif_need_resched() &&
> -               (cpu_idle_force_poll || tick_check_broadcast_expired()))
> +              (cpu_idle_force_poll || tick_check_broadcast_expired()))
>                 cpu_relax();
> -       start_critical_timings();
> -       trace_cpu_idle_rcuidle(PWR_EVENT_EXIT, smp_processor_id());
> +
>         rcu_idle_exit();
> +       start_critical_timings();
> +       trace_cpu_idle(PWR_EVENT_EXIT, smp_processor_id());
>
>         return 1;
>  }
> @@ -90,7 +91,9 @@ void __cpuidle default_idle_call(void)
>                 local_irq_enable();
>         } else {
>                 stop_critical_timings();
> +               rcu_idle_enter();
>                 arch_cpu_idle();
> +               rcu_idle_exit();
>                 start_critical_timings();
>         }
>  }
> @@ -148,7 +151,6 @@ static void cpuidle_idle_call(void)
>
>         if (cpuidle_not_available(drv, dev)) {
>                 tick_nohz_idle_stop_tick();
> -               rcu_idle_enter();
>
>                 default_idle_call();
>                 goto exit_idle;
> @@ -166,19 +168,15 @@ static void cpuidle_idle_call(void)
>
>         if (idle_should_enter_s2idle() || dev->use_deepest_state) {
>                 if (idle_should_enter_s2idle()) {
> -                       rcu_idle_enter();
>
>                         entered_state = cpuidle_enter_s2idle(drv, dev);
>                         if (entered_state > 0) {
>                                 local_irq_enable();
>                                 goto exit_idle;
>                         }
> -
> -                       rcu_idle_exit();
>                 }
>
>                 tick_nohz_idle_stop_tick();
> -               rcu_idle_enter();
>
>                 next_state = cpuidle_find_deepest_state(drv, dev);
>                 call_cpuidle(drv, dev, next_state);
> @@ -195,8 +193,6 @@ static void cpuidle_idle_call(void)
>                 else
>                         tick_nohz_idle_retain_tick();
>
> -               rcu_idle_enter();
> -
>                 entered_state = call_cpuidle(drv, dev, next_state);
>                 /*
>                  * Give the governor an opportunity to reflect on the outcome
> @@ -212,8 +208,6 @@ static void cpuidle_idle_call(void)
>          */
>         if (WARN_ON_ONCE(irqs_disabled()))
>                 local_irq_enable();
> -
> -       rcu_idle_exit();
>  }
>
>  /*
> --
> 2.39.2

- Naresh


--
Linaro LKFT
https://lkft.linaro.org
Re: [PATCH 4.19 00/29] 4.19.282-rc1 review
Posted by Naresh Kamboju 2 years, 2 months ago
Hi Steven and Greg,

On Thu, 27 Apr 2023 at 15:19, Naresh Kamboju <naresh.kamboju@linaro.org> wrote:
>
> Hi Steven,
>
> On Wed, 26 Apr 2023 at 23:14, Steven Rostedt <rostedt@goodmis.org> wrote:
> >
> > On Wed, 26 Apr 2023 17:09:45 -0400
> > Steven Rostedt <rostedt@goodmis.org> wrote:
> >
> > > Now the question is, why is this triggering on 4.19 but not in latest
> > > mainline?
> >
> > I found it, I backported this patch and the warning goes away (at least for
> > me). Can you add this and see if it makes the warning go away for you too?
>
> I have applied this patch on stable-rc 4.19 branch and tested on
> - arm64: Juno-r2
>  - x86_64 device
>
> and the reported problem has been resolved.
>
> Thanks for finding a quick fix patch.
>
> >
> > -- Steve
> >
> > From: Peter Zijlstra <peterz@infradead.org>
> > Date: Fri, 7 Aug 2020 20:50:19 +0200
> > Subject: [PATCH] sched,idle,rcu: Push rcu_idle deeper into the idle path
> >
> > commit 1098582a0f6c4e8fd28da0a6305f9233d02c9c1d upstream.

Can we expect this patch to be merged into 4.19 ?
The reason for the question is, the reported problem is still seen on
stable-rc 4.19.

> >
> > Lots of things take locks, due to a wee bug, rcu_lockdep didn't notice
> > that the locking tracepoints were using RCU.
> >
> > Push rcu_idle_{enter,exit}() as deep as possible into the idle paths,
> > this also resolves a lot of _rcuidle()/RCU_NONIDLE() usage.
> >
> > Specifically, sched_clock_idle_wakeup_event() will use ktime which
> > will use seqlocks which will tickle lockdep, and
> > stop_critical_timings() uses lock.
> >
> > Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
> > Reviewed-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
> > Reviewed-by: Thomas Gleixner <tglx@linutronix.de>
> > Acked-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
> > Tested-by: Marco Elver <elver@google.com>
> > Link: https://lkml.kernel.org/r/20200821085348.310943801@infradead.org
>
>
> Tested-by: Linux Kernel Functional Testing <lkft@linaro.org>
> Tested-by: Naresh Kamboju <naresh.kamboju@linaro.org>
>
> test log:
>   - https://lkft.validation.linaro.org/scheduler/job/6380295#L1418
>   - https://lkft.validation.linaro.org/scheduler/job/6380303#L1443
>
> > ---
> >  drivers/cpuidle/cpuidle.c | 12 ++++++++----
> >  kernel/sched/idle.c       | 22 ++++++++--------------
> >  2 files changed, 16 insertions(+), 18 deletions(-)
> >
> > diff --git a/drivers/cpuidle/cpuidle.c b/drivers/cpuidle/cpuidle.c
> > index 2d182dc1b49e..01bde6dec13a 100644
> > --- a/drivers/cpuidle/cpuidle.c
> > +++ b/drivers/cpuidle/cpuidle.c
> > @@ -140,13 +140,14 @@ static void enter_s2idle_proper(struct cpuidle_driver *drv,
> >          * executing it contains RCU usage regarded as invalid in the idle
> >          * context, so tell RCU about that.
> >          */
> > -       RCU_NONIDLE(tick_freeze());
> > +       tick_freeze();
> >         /*
> >          * The state used here cannot be a "coupled" one, because the "coupled"
> >          * cpuidle mechanism enables interrupts and doing that with timekeeping
> >          * suspended is generally unsafe.
> >          */
> >         stop_critical_timings();
> > +       rcu_idle_enter();
> >         drv->states[index].enter_s2idle(dev, drv, index);
> >         if (WARN_ON_ONCE(!irqs_disabled()))
> >                 local_irq_disable();
> > @@ -155,7 +156,8 @@ static void enter_s2idle_proper(struct cpuidle_driver *drv,
> >          * first CPU executing it calls functions containing RCU read-side
> >          * critical sections, so tell RCU about that.
> >          */
> > -       RCU_NONIDLE(tick_unfreeze());
> > +       rcu_idle_exit();
> > +       tick_unfreeze();
> >         start_critical_timings();
> >
> >         time_end = ns_to_ktime(local_clock());
> > @@ -224,16 +226,18 @@ int cpuidle_enter_state(struct cpuidle_device *dev, struct cpuidle_driver *drv,
> >         /* Take note of the planned idle state. */
> >         sched_idle_set_state(target_state);
> >
> > -       trace_cpu_idle_rcuidle(index, dev->cpu);
> > +       trace_cpu_idle(index, dev->cpu);
> >         time_start = ns_to_ktime(local_clock());
> >
> >         stop_critical_timings();
> > +       rcu_idle_enter();
> >         entered_state = target_state->enter(dev, drv, index);
> > +       rcu_idle_exit();
> >         start_critical_timings();
> >
> >         sched_clock_idle_wakeup_event();
> >         time_end = ns_to_ktime(local_clock());
> > -       trace_cpu_idle_rcuidle(PWR_EVENT_EXIT, dev->cpu);
> > +       trace_cpu_idle(PWR_EVENT_EXIT, dev->cpu);
> >
> >         /* The cpu is no longer idle or about to enter idle. */
> >         sched_idle_set_state(NULL);
> > diff --git a/kernel/sched/idle.c b/kernel/sched/idle.c
> > index 44a17366c8ec..4e3d149d64ad 100644
> > --- a/kernel/sched/idle.c
> > +++ b/kernel/sched/idle.c
> > @@ -53,17 +53,18 @@ __setup("hlt", cpu_idle_nopoll_setup);
> >
> >  static noinline int __cpuidle cpu_idle_poll(void)
> >  {
> > +       trace_cpu_idle(0, smp_processor_id());
> > +       stop_critical_timings();
> >         rcu_idle_enter();
> > -       trace_cpu_idle_rcuidle(0, smp_processor_id());
> >         local_irq_enable();
> > -       stop_critical_timings();
> >
> >         while (!tif_need_resched() &&
> > -               (cpu_idle_force_poll || tick_check_broadcast_expired()))
> > +              (cpu_idle_force_poll || tick_check_broadcast_expired()))
> >                 cpu_relax();
> > -       start_critical_timings();
> > -       trace_cpu_idle_rcuidle(PWR_EVENT_EXIT, smp_processor_id());
> > +
> >         rcu_idle_exit();
> > +       start_critical_timings();
> > +       trace_cpu_idle(PWR_EVENT_EXIT, smp_processor_id());
> >
> >         return 1;
> >  }
> > @@ -90,7 +91,9 @@ void __cpuidle default_idle_call(void)
> >                 local_irq_enable();
> >         } else {
> >                 stop_critical_timings();
> > +               rcu_idle_enter();
> >                 arch_cpu_idle();
> > +               rcu_idle_exit();
> >                 start_critical_timings();
> >         }
> >  }
> > @@ -148,7 +151,6 @@ static void cpuidle_idle_call(void)
> >
> >         if (cpuidle_not_available(drv, dev)) {
> >                 tick_nohz_idle_stop_tick();
> > -               rcu_idle_enter();
> >
> >                 default_idle_call();
> >                 goto exit_idle;
> > @@ -166,19 +168,15 @@ static void cpuidle_idle_call(void)
> >
> >         if (idle_should_enter_s2idle() || dev->use_deepest_state) {
> >                 if (idle_should_enter_s2idle()) {
> > -                       rcu_idle_enter();
> >
> >                         entered_state = cpuidle_enter_s2idle(drv, dev);
> >                         if (entered_state > 0) {
> >                                 local_irq_enable();
> >                                 goto exit_idle;
> >                         }
> > -
> > -                       rcu_idle_exit();
> >                 }
> >
> >                 tick_nohz_idle_stop_tick();
> > -               rcu_idle_enter();
> >
> >                 next_state = cpuidle_find_deepest_state(drv, dev);
> >                 call_cpuidle(drv, dev, next_state);
> > @@ -195,8 +193,6 @@ static void cpuidle_idle_call(void)
> >                 else
> >                         tick_nohz_idle_retain_tick();
> >
> > -               rcu_idle_enter();
> > -
> >                 entered_state = call_cpuidle(drv, dev, next_state);
> >                 /*
> >                  * Give the governor an opportunity to reflect on the outcome
> > @@ -212,8 +208,6 @@ static void cpuidle_idle_call(void)
> >          */
> >         if (WARN_ON_ONCE(irqs_disabled()))
> >                 local_irq_enable();
> > -
> > -       rcu_idle_exit();
> >  }
> >
> >  /*
> > --
> > 2.39.2
>
> - Naresh
>
>
> --
> Linaro LKFT
> https://lkft.linaro.org
Re: [PATCH 4.19 00/29] 4.19.282-rc1 review
Posted by Greg Kroah-Hartman 2 years, 2 months ago
On Wed, Oct 11, 2023 at 06:59:46AM +0530, Naresh Kamboju wrote:
> Hi Steven and Greg,
> 
> On Thu, 27 Apr 2023 at 15:19, Naresh Kamboju <naresh.kamboju@linaro.org> wrote:
> >
> > Hi Steven,
> >
> > On Wed, 26 Apr 2023 at 23:14, Steven Rostedt <rostedt@goodmis.org> wrote:
> > >
> > > On Wed, 26 Apr 2023 17:09:45 -0400
> > > Steven Rostedt <rostedt@goodmis.org> wrote:
> > >
> > > > Now the question is, why is this triggering on 4.19 but not in latest
> > > > mainline?
> > >
> > > I found it, I backported this patch and the warning goes away (at least for
> > > me). Can you add this and see if it makes the warning go away for you too?
> >
> > I have applied this patch on stable-rc 4.19 branch and tested on
> > - arm64: Juno-r2
> >  - x86_64 device
> >
> > and the reported problem has been resolved.
> >
> > Thanks for finding a quick fix patch.
> >
> > >
> > > -- Steve
> > >
> > > From: Peter Zijlstra <peterz@infradead.org>
> > > Date: Fri, 7 Aug 2020 20:50:19 +0200
> > > Subject: [PATCH] sched,idle,rcu: Push rcu_idle deeper into the idle path
> > >
> > > commit 1098582a0f6c4e8fd28da0a6305f9233d02c9c1d upstream.
> 
> Can we expect this patch to be merged into 4.19 ?
> The reason for the question is, the reported problem is still seen on
> stable-rc 4.19.

Ok, I'll queue it up now, I didn't realize it needed to be there, sorry.

greg k-h
Re: [PATCH 4.19 00/29] 4.19.282-rc1 review
Posted by Greg Kroah-Hartman 2 years, 2 months ago
On Wed, Oct 11, 2023 at 11:04:54AM +0200, Greg Kroah-Hartman wrote:
> On Wed, Oct 11, 2023 at 06:59:46AM +0530, Naresh Kamboju wrote:
> > Hi Steven and Greg,
> > 
> > On Thu, 27 Apr 2023 at 15:19, Naresh Kamboju <naresh.kamboju@linaro.org> wrote:
> > >
> > > Hi Steven,
> > >
> > > On Wed, 26 Apr 2023 at 23:14, Steven Rostedt <rostedt@goodmis.org> wrote:
> > > >
> > > > On Wed, 26 Apr 2023 17:09:45 -0400
> > > > Steven Rostedt <rostedt@goodmis.org> wrote:
> > > >
> > > > > Now the question is, why is this triggering on 4.19 but not in latest
> > > > > mainline?
> > > >
> > > > I found it, I backported this patch and the warning goes away (at least for
> > > > me). Can you add this and see if it makes the warning go away for you too?
> > >
> > > I have applied this patch on stable-rc 4.19 branch and tested on
> > > - arm64: Juno-r2
> > >  - x86_64 device
> > >
> > > and the reported problem has been resolved.
> > >
> > > Thanks for finding a quick fix patch.
> > >
> > > >
> > > > -- Steve
> > > >
> > > > From: Peter Zijlstra <peterz@infradead.org>
> > > > Date: Fri, 7 Aug 2020 20:50:19 +0200
> > > > Subject: [PATCH] sched,idle,rcu: Push rcu_idle deeper into the idle path
> > > >
> > > > commit 1098582a0f6c4e8fd28da0a6305f9233d02c9c1d upstream.
> > 
> > Can we expect this patch to be merged into 4.19 ?
> > The reason for the question is, the reported problem is still seen on
> > stable-rc 4.19.
> 
> Ok, I'll queue it up now, I didn't realize it needed to be there, sorry.

Nope, I can't, it doesn't apply there, so I need a backported, and
TESTED version, for 5.4.y and 4.19.y if anyone wants to see it there.

thanks,

greg k-h
Re: [PATCH 4.19 00/29] 4.19.282-rc1 review
Posted by Steven Rostedt 2 years, 2 months ago
On Wed, 11 Oct 2023 11:05:48 +0200
Greg Kroah-Hartman <gregkh@linuxfoundation.org> wrote:

> > Ok, I'll queue it up now, I didn't realize it needed to be there, sorry.  
> 
> Nope, I can't, it doesn't apply there, so I need a backported, and
> TESTED version, for 5.4.y and 4.19.y if anyone wants to see it there.

This is a quick backport for 4.19 as the conflict seemed to be due to added
code that is unrelated to this change. I built and booted it, but it should
have more testing.

Naresh, if you want this in 4.19, please run it through your tests and give
your tested by.

Greg, please do not take it until Naresh has tested it.

Thanks,

-- Steve

diff --git a/drivers/cpuidle/cpuidle.c b/drivers/cpuidle/cpuidle.c
index 2d182dc1b49e..01bde6dec13a 100644
--- a/drivers/cpuidle/cpuidle.c
+++ b/drivers/cpuidle/cpuidle.c
@@ -140,13 +140,14 @@ static void enter_s2idle_proper(struct cpuidle_driver *drv,
 	 * executing it contains RCU usage regarded as invalid in the idle
 	 * context, so tell RCU about that.
 	 */
-	RCU_NONIDLE(tick_freeze());
+	tick_freeze();
 	/*
 	 * The state used here cannot be a "coupled" one, because the "coupled"
 	 * cpuidle mechanism enables interrupts and doing that with timekeeping
 	 * suspended is generally unsafe.
 	 */
 	stop_critical_timings();
+	rcu_idle_enter();
 	drv->states[index].enter_s2idle(dev, drv, index);
 	if (WARN_ON_ONCE(!irqs_disabled()))
 		local_irq_disable();
@@ -155,7 +156,8 @@ static void enter_s2idle_proper(struct cpuidle_driver *drv,
 	 * first CPU executing it calls functions containing RCU read-side
 	 * critical sections, so tell RCU about that.
 	 */
-	RCU_NONIDLE(tick_unfreeze());
+	rcu_idle_exit();
+	tick_unfreeze();
 	start_critical_timings();
 
 	time_end = ns_to_ktime(local_clock());
@@ -224,16 +226,18 @@ int cpuidle_enter_state(struct cpuidle_device *dev, struct cpuidle_driver *drv,
 	/* Take note of the planned idle state. */
 	sched_idle_set_state(target_state);
 
-	trace_cpu_idle_rcuidle(index, dev->cpu);
+	trace_cpu_idle(index, dev->cpu);
 	time_start = ns_to_ktime(local_clock());
 
 	stop_critical_timings();
+	rcu_idle_enter();
 	entered_state = target_state->enter(dev, drv, index);
+	rcu_idle_exit();
 	start_critical_timings();
 
 	sched_clock_idle_wakeup_event();
 	time_end = ns_to_ktime(local_clock());
-	trace_cpu_idle_rcuidle(PWR_EVENT_EXIT, dev->cpu);
+	trace_cpu_idle(PWR_EVENT_EXIT, dev->cpu);
 
 	/* The cpu is no longer idle or about to enter idle. */
 	sched_idle_set_state(NULL);
diff --git a/kernel/sched/idle.c b/kernel/sched/idle.c
index 44a17366c8ec..4e3d149d64ad 100644
--- a/kernel/sched/idle.c
+++ b/kernel/sched/idle.c
@@ -53,17 +53,18 @@ __setup("hlt", cpu_idle_nopoll_setup);
 
 static noinline int __cpuidle cpu_idle_poll(void)
 {
+	trace_cpu_idle(0, smp_processor_id());
+	stop_critical_timings();
 	rcu_idle_enter();
-	trace_cpu_idle_rcuidle(0, smp_processor_id());
 	local_irq_enable();
-	stop_critical_timings();
 
 	while (!tif_need_resched() &&
-		(cpu_idle_force_poll || tick_check_broadcast_expired()))
+	       (cpu_idle_force_poll || tick_check_broadcast_expired()))
 		cpu_relax();
-	start_critical_timings();
-	trace_cpu_idle_rcuidle(PWR_EVENT_EXIT, smp_processor_id());
+
 	rcu_idle_exit();
+	start_critical_timings();
+	trace_cpu_idle(PWR_EVENT_EXIT, smp_processor_id());
 
 	return 1;
 }
@@ -90,7 +91,9 @@ void __cpuidle default_idle_call(void)
 		local_irq_enable();
 	} else {
 		stop_critical_timings();
+		rcu_idle_enter();
 		arch_cpu_idle();
+		rcu_idle_exit();
 		start_critical_timings();
 	}
 }
@@ -148,7 +151,6 @@ static void cpuidle_idle_call(void)
 
 	if (cpuidle_not_available(drv, dev)) {
 		tick_nohz_idle_stop_tick();
-		rcu_idle_enter();
 
 		default_idle_call();
 		goto exit_idle;
@@ -166,19 +168,15 @@ static void cpuidle_idle_call(void)
 
 	if (idle_should_enter_s2idle() || dev->use_deepest_state) {
 		if (idle_should_enter_s2idle()) {
-			rcu_idle_enter();
 
 			entered_state = cpuidle_enter_s2idle(drv, dev);
 			if (entered_state > 0) {
 				local_irq_enable();
 				goto exit_idle;
 			}
-
-			rcu_idle_exit();
 		}
 
 		tick_nohz_idle_stop_tick();
-		rcu_idle_enter();
 
 		next_state = cpuidle_find_deepest_state(drv, dev);
 		call_cpuidle(drv, dev, next_state);
@@ -195,8 +193,6 @@ static void cpuidle_idle_call(void)
 		else
 			tick_nohz_idle_retain_tick();
 
-		rcu_idle_enter();
-
 		entered_state = call_cpuidle(drv, dev, next_state);
 		/*
 		 * Give the governor an opportunity to reflect on the outcome
@@ -212,8 +208,6 @@ static void cpuidle_idle_call(void)
 	 */
 	if (WARN_ON_ONCE(irqs_disabled()))
 		local_irq_enable();
-
-	rcu_idle_exit();
 }
 
 /*
Re: [PATCH 4.19 00/29] 4.19.282-rc1 review
Posted by Naresh Kamboju 2 years, 2 months ago
On Wed, 11 Oct 2023 at 20:14, Steven Rostedt <rostedt@goodmis.org> wrote:
>
> On Wed, 11 Oct 2023 11:05:48 +0200
> Greg Kroah-Hartman <gregkh@linuxfoundation.org> wrote:
>
> > > Ok, I'll queue it up now, I didn't realize it needed to be there, sorry.
> >
> > Nope, I can't, it doesn't apply there, so I need a backported, and
> > TESTED version, for 5.4.y and 4.19.y if anyone wants to see it there.
>
> This is a quick backport for 4.19 as the conflict seemed to be due to added
> code that is unrelated to this change. I built and booted it, but it should
> have more testing.
>
> Naresh, if you want this in 4.19, please run it through your tests and give
> your tested by.
>
> Greg, please do not take it until Naresh has tested it.

Below patch applied and tested on top of stable rc branches
 - v4.19.296
 - v5.4.258

Tested-by: Linux Kernel Functional Testing <lkft@linaro.org>
Tested-by: Naresh Kamboju <naresh.kamboju@linaro.org>

> diff --git a/drivers/cpuidle/cpuidle.c b/drivers/cpuidle/cpuidle.c
> index 2d182dc1b49e..01bde6dec13a 100644
> --- a/drivers/cpuidle/cpuidle.c
> +++ b/drivers/cpuidle/cpuidle.c
> @@ -140,13 +140,14 @@ static void enter_s2idle_proper(struct cpuidle_driver *drv,
>          * executing it contains RCU usage regarded as invalid in the idle
>          * context, so tell RCU about that.
>          */
> -       RCU_NONIDLE(tick_freeze());
> +       tick_freeze();
>         /*
>          * The state used here cannot be a "coupled" one, because the "coupled"
>          * cpuidle mechanism enables interrupts and doing that with timekeeping
>          * suspended is generally unsafe.
>          */
>         stop_critical_timings();
> +       rcu_idle_enter();
>         drv->states[index].enter_s2idle(dev, drv, index);
>         if (WARN_ON_ONCE(!irqs_disabled()))
>                 local_irq_disable();
> @@ -155,7 +156,8 @@ static void enter_s2idle_proper(struct cpuidle_driver *drv,
>          * first CPU executing it calls functions containing RCU read-side
>          * critical sections, so tell RCU about that.
>          */
> -       RCU_NONIDLE(tick_unfreeze());
> +       rcu_idle_exit();
> +       tick_unfreeze();
>         start_critical_timings();
>
>         time_end = ns_to_ktime(local_clock());
> @@ -224,16 +226,18 @@ int cpuidle_enter_state(struct cpuidle_device *dev, struct cpuidle_driver *drv,
>         /* Take note of the planned idle state. */
>         sched_idle_set_state(target_state);
>
> -       trace_cpu_idle_rcuidle(index, dev->cpu);
> +       trace_cpu_idle(index, dev->cpu);
>         time_start = ns_to_ktime(local_clock());
>
>         stop_critical_timings();
> +       rcu_idle_enter();
>         entered_state = target_state->enter(dev, drv, index);
> +       rcu_idle_exit();
>         start_critical_timings();
>
>         sched_clock_idle_wakeup_event();
>         time_end = ns_to_ktime(local_clock());
> -       trace_cpu_idle_rcuidle(PWR_EVENT_EXIT, dev->cpu);
> +       trace_cpu_idle(PWR_EVENT_EXIT, dev->cpu);
>
>         /* The cpu is no longer idle or about to enter idle. */
>         sched_idle_set_state(NULL);
> diff --git a/kernel/sched/idle.c b/kernel/sched/idle.c
> index 44a17366c8ec..4e3d149d64ad 100644
> --- a/kernel/sched/idle.c
> +++ b/kernel/sched/idle.c
> @@ -53,17 +53,18 @@ __setup("hlt", cpu_idle_nopoll_setup);
>
>  static noinline int __cpuidle cpu_idle_poll(void)
>  {
> +       trace_cpu_idle(0, smp_processor_id());
> +       stop_critical_timings();
>         rcu_idle_enter();
> -       trace_cpu_idle_rcuidle(0, smp_processor_id());
>         local_irq_enable();
> -       stop_critical_timings();
>
>         while (!tif_need_resched() &&
> -               (cpu_idle_force_poll || tick_check_broadcast_expired()))
> +              (cpu_idle_force_poll || tick_check_broadcast_expired()))
>                 cpu_relax();
> -       start_critical_timings();
> -       trace_cpu_idle_rcuidle(PWR_EVENT_EXIT, smp_processor_id());
> +
>         rcu_idle_exit();
> +       start_critical_timings();
> +       trace_cpu_idle(PWR_EVENT_EXIT, smp_processor_id());
>
>         return 1;
>  }
> @@ -90,7 +91,9 @@ void __cpuidle default_idle_call(void)
>                 local_irq_enable();
>         } else {
>                 stop_critical_timings();
> +               rcu_idle_enter();
>                 arch_cpu_idle();
> +               rcu_idle_exit();
>                 start_critical_timings();
>         }
>  }
> @@ -148,7 +151,6 @@ static void cpuidle_idle_call(void)
>
>         if (cpuidle_not_available(drv, dev)) {
>                 tick_nohz_idle_stop_tick();
> -               rcu_idle_enter();
>
>                 default_idle_call();
>                 goto exit_idle;
> @@ -166,19 +168,15 @@ static void cpuidle_idle_call(void)
>
>         if (idle_should_enter_s2idle() || dev->use_deepest_state) {
>                 if (idle_should_enter_s2idle()) {
> -                       rcu_idle_enter();
>
>                         entered_state = cpuidle_enter_s2idle(drv, dev);
>                         if (entered_state > 0) {
>                                 local_irq_enable();
>                                 goto exit_idle;
>                         }
> -
> -                       rcu_idle_exit();
>                 }
>
>                 tick_nohz_idle_stop_tick();
> -               rcu_idle_enter();
>
>                 next_state = cpuidle_find_deepest_state(drv, dev);
>                 call_cpuidle(drv, dev, next_state);
> @@ -195,8 +193,6 @@ static void cpuidle_idle_call(void)
>                 else
>                         tick_nohz_idle_retain_tick();
>
> -               rcu_idle_enter();
> -
>                 entered_state = call_cpuidle(drv, dev, next_state);
>                 /*
>                  * Give the governor an opportunity to reflect on the outcome
> @@ -212,8 +208,6 @@ static void cpuidle_idle_call(void)
>          */
>         if (WARN_ON_ONCE(irqs_disabled()))
>                 local_irq_enable();
> -
> -       rcu_idle_exit();
>  }
>
>  /*
Re: [PATCH 4.19 00/29] 4.19.282-rc1 review
Posted by Greg Kroah-Hartman 2 years, 2 months ago
On Thu, Oct 12, 2023 at 05:23:23PM +0530, Naresh Kamboju wrote:
> On Wed, 11 Oct 2023 at 20:14, Steven Rostedt <rostedt@goodmis.org> wrote:
> >
> > On Wed, 11 Oct 2023 11:05:48 +0200
> > Greg Kroah-Hartman <gregkh@linuxfoundation.org> wrote:
> >
> > > > Ok, I'll queue it up now, I didn't realize it needed to be there, sorry.
> > >
> > > Nope, I can't, it doesn't apply there, so I need a backported, and
> > > TESTED version, for 5.4.y and 4.19.y if anyone wants to see it there.
> >
> > This is a quick backport for 4.19 as the conflict seemed to be due to added
> > code that is unrelated to this change. I built and booted it, but it should
> > have more testing.
> >
> > Naresh, if you want this in 4.19, please run it through your tests and give
> > your tested by.
> >
> > Greg, please do not take it until Naresh has tested it.
> 
> Below patch applied and tested on top of stable rc branches
>  - v4.19.296
>  - v5.4.258
> 
> Tested-by: Linux Kernel Functional Testing <lkft@linaro.org>
> Tested-by: Naresh Kamboju <naresh.kamboju@linaro.org>

Thanks, now queued up.

greg k-h
Re: [PATCH 4.19 00/29] 4.19.282-rc1 review
Posted by Pavel Machek 2 years, 7 months ago
Hi!

This should be show stopper, actually:

> FYI, This is not a show stopper but worth reporting.


> NOTE:
> Following kernel warning notices on stable rc  4.19.282-rc1 from the
> previous releases 4.19.279-rc1 noticed on arm64, i386 and x86_64. After
> this kernel warning the system is still stable and up and running.
> 
> This kernel is built with kselftest ftrace merge configs with all
> required Kconfigs.
> 
> [    0.000000] Linux version 4.19.279-rc1 (tuxmake@tuxmake) (gcc
> version 11.3.0 (Debian 11.3.0-11)) #1 SMP @1679324856
> ...
> [    0.145911] ftrace: allocating 48590 entries in 190 pages
> ...
> 
> [    2.880223] WARNING: CPU: 0 PID: 0 at
> include/trace/events/lock.h:13 lock_acquire+0x142/0x150
> [    2.881454] WARNING: CPU: 1 PID: 0 at
> include/trace/events/lock.h:58 lock_release+0x1af/0x280

This indicates locking problem somewhere in cpuidle / ftrace.

I skimmed the patches, and I do not see anything obvious there. Is
there chance to do a bisection?

Best regards,
								Pavel

-- 
DENX Software Engineering GmbH,        Managing Director: Erika Unter
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Re: [PATCH 4.19 00/29] 4.19.282-rc1 review
Posted by Guenter Roeck 2 years, 7 months ago
On Mon, Apr 24, 2023 at 03:18:27PM +0200, Greg Kroah-Hartman wrote:
> This is the start of the stable review cycle for the 4.19.282 release.
> There are 29 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 Wed, 26 Apr 2023 13:11:11 +0000.
> Anything received after that time might be too late.
> 

Build results:
	total: 155 pass: 155 fail: 0
Qemu test results:
	total: 431 pass: 431 fail: 0

Tested-by: Guenter Roeck <linux@roeck-us.net>

Guenter