5.10.86-rc1 review
Subsystems (2)
Greg Kroah-Hartman
maintainercover 5.10.86-rc1 review
This is the start of the stable review cycle for the 5.10.86 release. There are 33 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 Fri, 17 Dec 2021 17:20:14 +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/v5.x/stable-review/patch-5.10.86-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-5.10.y
and the diffstat can be found below.
thanks,
greg k-h
-------------
Pseudo-Shortlog of commits:
Greg Kroah-Hartman <[email protected]>
Linux 5.10.86-rc1
Mike Rapoport <[email protected]>
arm: ioremap: don't abuse pfn_valid() to check if pfn is in RAM
Mike Rapoport <[email protected]>
arm: extend pfn_valid to take into account freed memory map alignment
Mike Rapoport <[email protected]>
memblock: ensure there is no overflow in memblock_overlaps_region()
Mike Rapoport <[email protected]>
memblock: align freed memory map on pageblock boundaries with SPARSEMEM
Mike Rapoport <[email protected]>
memblock: free_unused_memmap: use pageblock units instead of MAX_ORDER
Adrian Hunter <[email protected]>
perf intel-pt: Fix error timestamp setting on the decoder error path
Adrian Hunter <[email protected]>
perf intel-pt: Fix missing 'instruction' events with 'q' option
Adrian Hunter <[email protected]>
perf intel-pt: Fix next 'err' value, walking trace
Adrian Hunter <[email protected]>
perf intel-pt: Fix state setting when receiving overflow (OVF) packet
Adrian Hunter <[email protected]>
perf intel-pt: Fix intel_pt_fup_event() assumptions about setting state type
Adrian Hunter <[email protected]>
perf intel-pt: Fix sync state when a PSB (synchronization) packet is found
Adrian Hunter <[email protected]>
perf intel-pt: Fix some PGE (packet generation enable/control flow packets) usage
Adrian Hunter <[email protected]>
perf inject: Fix itrace space allowed for new attributes
Antoine Tenart <[email protected]>
ethtool: do not perform operations on net devices being unregistered
Armin Wolf <[email protected]>
hwmon: (dell-smm) Fix warning on /proc/i8k creation error
Miklos Szeredi <[email protected]>
fuse: make sure reclaim doesn't write the inode
Bui Quang Minh <[email protected]>
bpf: Fix integer overflow in argument calculation for bpf_map_area_alloc
Nikita Yushchenko <[email protected]>
staging: most: dim2: use device release method
Sean Christopherson <[email protected]>
KVM: x86: Ignore sparse banks size for an "all CPUs", non-sparse IPI req
Chen Jun <[email protected]>
tracing: Fix a kmemleak false positive in tracing_map
Perry Yuan <[email protected]>
drm/amd/display: add connector type check for CRC source set
Mustapha Ghaddar <[email protected]>
drm/amd/display: Fix for the no Audio bug with Tiled Displays
Harshit Mogalapalli <[email protected]>
net: netlink: af_netlink: Prevent empty skb by adding a check on len.
Ondrej Jirman <[email protected]>
i2c: rk3x: Handle a spurious start completion interrupt flag
Helge Deller <[email protected]>
parisc/agp: Annotate parisc agp init functions with __init
Kai Vehmanen <[email protected]>
ALSA: hda/hdmi: fix HDA codec entry table order for ADL-P
Kai Vehmanen <[email protected]>
ALSA: hda: Add Intel DG2 PCI ID and HDMI codec vid
Erik Ekman <[email protected]>
net/mlx4_en: Update reported link modes for 1/10G
Alexander Stein <[email protected]>
Revert "tty: serial: fsl_lpuart: drop earlycon entry for i.MX8QXP"
Ilie Halip <[email protected]>
s390/test_unwind: use raw opcode instead of invalid instruction
Marc Zyngier <[email protected]>
KVM: arm64: Save PSTATE early on exit
Philip Chen <[email protected]>
drm/msm/dsi: set default num_data_lanes
Tadeusz Struk <[email protected]>
nfc: fix segfault in nfc_genl_dump_devices_done
-------------
Diffstat:
Makefile | 4 +- arch/arm/mm/init.c | 37 ++++++---- arch/arm/mm/ioremap.c | 4 +- arch/arm64/kvm/hyp/include/hyp/switch.h | 6 ++ arch/arm64/kvm/hyp/include/hyp/sysreg-sr.h | 7 +- arch/s390/lib/test_unwind.c | 5 +- arch/x86/kvm/hyperv.c | 7 +- drivers/char/agp/parisc-agp.c | 6 +- .../gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_crc.c | 8 +++ drivers/gpu/drm/amd/display/dc/core/dc_resource.c | 4 ++ drivers/gpu/drm/msm/dsi/dsi_host.c | 2 + drivers/hwmon/dell-smm-hwmon.c | 7 +- drivers/i2c/busses/i2c-rk3x.c | 4 +- drivers/net/ethernet/mellanox/mlx4/en_ethtool.c | 6 +- drivers/staging/most/dim2/dim2.c | 55 +++++++------- drivers/tty/serial/fsl_lpuart.c | 1 + fs/fuse/dir.c | 8 +++ fs/fuse/file.c | 15 ++++ fs/fuse/fuse_i.h | 1 + fs/fuse/inode.c | 3 + kernel/bpf/devmap.c | 4 +- kernel/trace/tracing_map.c | 3 + mm/memblock.c | 3 +- net/core/sock_map.c | 2 +- net/ethtool/netlink.h | 3 + net/netlink/af_netlink.c | 5 ++ net/nfc/netlink.c | 6 +- sound/pci/hda/hda_intel.c | 12 +++- sound/pci/hda/patch_hdmi.c | 3 +- tools/perf/builtin-inject.c | 2 +- .../perf/util/intel-pt-decoder/intel-pt-decoder.c | 83 ++++++++++++++-------- tools/perf/util/intel-pt.c | 1 + 32 files changed, 224 insertions(+), 93 deletions(-)
Greg Kroah-Hartman
maintainerPATCH 1/33 nfc: fix segfault in nfc_genl_dump_devices_done
From: Tadeusz Struk <[email protected]>
commit fd79a0cbf0b2e34bcc45b13acf962e2032a82203 upstream.
When kmalloc in nfc_genl_dump_devices() fails then nfc_genl_dump_devices_done() segfaults as below
KASAN: null-ptr-deref in range [0x0000000000000008-0x000000000000000f] CPU: 0 PID: 25 Comm: kworker/0:1 Not tainted 5.16.0-rc4-01180-g2a987e65025e-dirty #5 Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.14.0-6.fc35 04/01/2014 Workqueue: events netlink_sock_destruct_work RIP: 0010:klist_iter_exit+0x26/0x80 Call Trace: <TASK> class_dev_iter_exit+0x15/0x20 nfc_genl_dump_devices_done+0x3b/0x50 genl_lock_done+0x84/0xd0 netlink_sock_destruct+0x8f/0x270 __sk_destruct+0x64/0x3b0 sk_destruct+0xa8/0xd0 __sk_free+0x2e8/0x3d0 sk_free+0x51/0x90 netlink_sock_destruct_work+0x1c/0x20 process_one_work+0x411/0x710 worker_thread+0x6fd/0xa80
--- net/nfc/netlink.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-)
net/nfc/netlink.c +4 -2
@@ -636,8 +636,10 @@ static int nfc_genl_dump_devices_done(st {struct class_dev_iter *iter = (struct class_dev_iter *) cb->args[0 ]; -nfc_device_iter_exit (iter); -kfree (iter); +if (iter) { +nfc_device_iter_exit (iter); +kfree (iter); + }return 0 ; }
Greg Kroah-Hartman
maintainerPATCH 2/33 drm/msm/dsi: set default num_data_lanes
In reply to Greg Kroah-HartmanFrom: Philip Chen <[email protected]>
[ Upstream commit cd92cc187c053ab010a1570e2d61d68394a5c725 ]
If "data_lanes" property of the dsi output endpoint is missing in the DT, num_data_lanes would be 0 by default, which could cause dsi_host_attach() to fail if dsi->lanes is set to a non-zero value by the bridge driver.
According to the binding document of msm dsi controller, the input/output endpoint of the controller is expected to have 4 lanes. So let's set num_data_lanes to 4 by default.
--- drivers/gpu/drm/msm/dsi/dsi_host.c | 2 ++ 1 file changed, 2 insertions(+)
drivers/gpu/drm/msm/dsi/dsi_host.c +2 -0
@@ -1692,6 +1692,8 @@ static int dsi_host_parse_lane_data(struct msm_dsi_host *msm_host,if (!prop) {DRM_DEV_DEBUG (dev,"failed to find data lane mapping, using default\n" ); +/* Set the number of date lanes to 4 by default. */ + msm_host->num_data_lanes =4 ;return 0 ; }
Signature · 1 line
2.33.0
Greg Kroah-Hartman
maintainerPATCH 3/33 KVM: arm64: Save PSTATE early on exit
In reply to Greg Kroah-HartmanFrom: Marc Zyngier <[email protected]>
[ Upstream commit 83bb2c1a01d7127d5adc7d69d7aaa3f7072de2b4 ]
In order to be able to use primitives such as vcpu_mode_is_32bit(), we need to synchronize the guest PSTATE. However, this is currently done deep into the bowels of the world-switch code, and we do have helpers evaluating this much earlier (__vgic_v3_perform_cpuif_access and handle_aarch32_guest, for example).
Move the saving of the guest pstate into the early fixups, which cures the first issue. The second one will be addressed separately.
--- arch/arm64/kvm/hyp/include/hyp/switch.h | 6 ++++++ arch/arm64/kvm/hyp/include/hyp/sysreg-sr.h | 7 ++++++- 2 files changed, 12 insertions(+), 1 deletion(-)
arch/arm64/kvm/hyp/include/hyp/switch.h +6 -0
@@ -406,6 +406,12 @@ static inline bool __hyp_handle_ptrauth(struct kvm_vcpu *vcpu)*/ static inline bool fixup_guest_exit (struct kvm_vcpu *vcpu,u64 *exit_code) { +/* +* Save PSTATE early so that we can evaluate the vcpu mode +* early on. +*/ + vcpu->arch.ctxt.regs.pstate =read_sysreg_el2 (SYS_SPSR ); +if (ARM_EXCEPTION_CODE (*exit_code) !=ARM_EXCEPTION_IRQ ) vcpu->arch.fault.esr_el2 =read_sysreg_el2 (SYS_ESR );
arch/arm64/kvm/hyp/include/hyp/sysreg-sr.h +6 -1
@@ -54,7 +54,12 @@ static inline void __sysreg_save_el1_state(struct kvm_cpu_context *ctxt)static inline void __sysreg_save_el2_return_state (struct kvm_cpu_context *ctxt) { ctxt->regs.pc =read_sysreg_el2 (SYS_ELR ); - ctxt->regs.pstate =read_sysreg_el2 (SYS_SPSR ); +/* +* Guest PSTATE gets saved at guest fixup time in all +* cases. We still need to handle the nVHE host side here. +*/ +if (!has_vhe () && ctxt->__hyp_running_vcpu) + ctxt->regs.pstate =read_sysreg_el2 (SYS_SPSR );if (cpus_have_final_cap (ARM64_HAS_RAS_EXTN ))ctxt_sys_reg (ctxt,DISR_EL1 ) =read_sysreg_s (SYS_VDISR_EL2 );
Signature · 1 line
2.33.0
Greg Kroah-Hartman
maintainerPATCH 4/33 s390/test_unwind: use raw opcode instead of invalid instruction
In reply to Greg Kroah-HartmanFrom: Ilie Halip <[email protected]>
[ Upstream commit 53ae7230918154d1f4281d7aa3aae9650436eadf ]
Building with clang & LLVM_IAS=1 leads to an error:
arch/s390/lib/test_unwind.c:179:4: error: invalid register pair
" mvcl %%r1,%%r1\n"
^The test creates an invalid instruction that would trap at runtime, but the LLVM inline assembler tries to validate it at compile time too.
Use the raw instruction opcode instead.
--- arch/s390/lib/test_unwind.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-)
arch/s390/lib/test_unwind.c +3 -2
@@ -171,10 +171,11 @@ static noinline int unwindme_func4(struct unwindme *u) }/* -* trigger specification exception +* Trigger operation exception; use insn notation to bypass +* llvm's integrated assembler sanity checks. */ asmvolatile ( -" mvcl %%r1,%%r1\n" +" .insn e,0x0000\n" /* illegal opcode */ "0: nopr %%r7\n" EX_TABLE(0b, 0b) :);
Signature · 1 line
2.33.0
Greg Kroah-Hartman
maintainerPATCH 5/33 Revert "tty: serial: fsl_lpuart: drop earlycon entry for i.MX8QXP"
In reply to Greg Kroah-HartmanFrom: Alexander Stein <[email protected]>
[ Upstream commit 4e9679738a918d8a482ac6a2cb2bb871f094bb84 ]
Revert commit b4b844930f27 ("tty: serial: fsl_lpuart: drop earlycon entry for i.MX8QXP"), because this breaks earlycon support on imx8qm/imx8qxp. While it is true that for earlycon there is no difference between i.MX8QXP and i.MX7ULP (for now at least), there are differences regarding clocks and fixups for wakeup support. For that reason it was deemed unacceptable to add the imx7ulp compatible to device tree in order to get earlycon working again.
--- drivers/tty/serial/fsl_lpuart.c | 1 + 1 file changed, 1 insertion(+)
drivers/tty/serial/fsl_lpuart.c +1 -0
@@ -2559,6 +2559,7 @@ OF_EARLYCON_DECLARE(lpuart, "fsl,vf610-lpuart", lpuart_early_console_setup);OF_EARLYCON_DECLARE (lpuart32,"fsl,ls1021a-lpuart" , lpuart32_early_console_setup);OF_EARLYCON_DECLARE (lpuart32,"fsl,ls1028a-lpuart" , ls1028a_early_console_setup);OF_EARLYCON_DECLARE (lpuart32,"fsl,imx7ulp-lpuart" , lpuart32_imx_early_console_setup); +OF_EARLYCON_DECLARE (lpuart32,"fsl,imx8qxp-lpuart" , lpuart32_imx_early_console_setup);EARLYCON_DECLARE (lpuart, lpuart_early_console_setup);EARLYCON_DECLARE (lpuart32, lpuart32_early_console_setup);
Signature · 1 line
2.33.0
Greg Kroah-Hartman
maintainerPATCH 6/33 net/mlx4_en: Update reported link modes for 1/10G
In reply to Greg Kroah-HartmanFrom: Erik Ekman <[email protected]>
[ Upstream commit 2191b1dfef7d45f44b5008d2148676d9f2c82874 ]
When link modes were initially added in commit 2c762679435dc ("net/mlx4_en: Use PTYS register to query ethtool settings") and later updated for the new ethtool API in commit 3d8f7cc78d0eb ("net: mlx4: use new ETHTOOL_G/SSETTINGS API") the only 1/10G non-baseT link modes configured were 1000baseKX, 10000baseKX4 and 10000baseKR. It looks like these got picked to represent other modes since nothing better was available.
Switch to using more specific link modes added in commit 5711a98221443 ("net: ethtool: add support for 1000BaseX and missing 10G link modes").
Tested with MCX311A-XCAT connected via DAC.
Before:
% sudo ethtool enp3s0
Settings for enp3s0:
Supported ports: [ FIBRE ]
Supported link modes: 1000baseKX/Full
10000baseKR/Full
Supported pause frame use: Symmetric Receive-only Supports auto-negotiation: No
Supported FEC modes: Not reported Advertised link modes: 1000baseKX/Full
10000baseKR/Full
Advertised pause frame use: Symmetric Advertised auto-negotiation: No Advertised FEC modes: Not reported
Speed: 10000Mb/s
Duplex: Full
Auto-negotiation: off
Port: Direct Attach Copper
PHYAD: 0
Transceiver: internal
Supports Wake-on: d
Wake-on: d
Current message level: 0x00000014 (20)
link ifdown
Link detected: yes
With this change:
% sudo ethtool enp3s0
Settings for enp3s0:
Supported ports: [ FIBRE ]
Supported link modes: 1000baseX/Full
10000baseCR/Full 10000baseSR/Full
Supported pause frame use: Symmetric Receive-only Supports auto-negotiation: No
Supported FEC modes: Not reported Advertised link modes: 1000baseX/Full
10000baseCR/Full 10000baseSR/Full
Advertised pause frame use: Symmetric Advertised auto-negotiation: No Advertised FEC modes: Not reported
Speed: 10000Mb/s
Duplex: Full
Auto-negotiation: off
Port: Direct Attach Copper
PHYAD: 0
Transceiver: internal
Supports Wake-on: d
Wake-on: d
Current message level: 0x00000014 (20)
link ifdown
Link detected: yes
--- drivers/net/ethernet/mellanox/mlx4/en_ethtool.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-)
drivers/net/ethernet/mellanox/mlx4/en_ethtool.c +3 -3
@@ -663,7 +663,7 @@ void __init mlx4_en_init_ptys2ethtool_map(void)MLX4_BUILD_PTYS2ETHTOOL_CONFIG (MLX4_1000BASE_T ,SPEED_1000 , ETHTOOL_LINK_MODE_1000baseT_Full_BIT);MLX4_BUILD_PTYS2ETHTOOL_CONFIG (MLX4_1000BASE_CX_SGMII ,SPEED_1000 , - ETHTOOL_LINK_MODE_1000baseKX_Full_BIT); + ETHTOOL_LINK_MODE_1000baseX_Full_BIT);MLX4_BUILD_PTYS2ETHTOOL_CONFIG (MLX4_1000BASE_KX ,SPEED_1000 , ETHTOOL_LINK_MODE_1000baseKX_Full_BIT); MLX4_BUILD_PTYS2ETHTOOL_CONFIG(MLX4_10GBASE_T, SPEED_10000,
@@ -675,9 +675,9 @@ void __init mlx4_en_init_ptys2ethtool_map(void)MLX4_BUILD_PTYS2ETHTOOL_CONFIG (MLX4_10GBASE_KR ,SPEED_10000 , ETHTOOL_LINK_MODE_10000baseKR_Full_BIT);MLX4_BUILD_PTYS2ETHTOOL_CONFIG (MLX4_10GBASE_CR ,SPEED_10000 , - ETHTOOL_LINK_MODE_10000baseKR_Full_BIT); + ETHTOOL_LINK_MODE_10000baseCR_Full_BIT);MLX4_BUILD_PTYS2ETHTOOL_CONFIG (MLX4_10GBASE_SR ,SPEED_10000 , - ETHTOOL_LINK_MODE_10000baseKR_Full_BIT); + ETHTOOL_LINK_MODE_10000baseSR_Full_BIT);MLX4_BUILD_PTYS2ETHTOOL_CONFIG (MLX4_20GBASE_KR2 ,SPEED_20000 , ETHTOOL_LINK_MODE_20000baseMLD2_Full_BIT, ETHTOOL_LINK_MODE_20000baseKR2_Full_BIT);
Signature · 1 line
2.33.0
Greg Kroah-Hartman
maintainerPATCH 7/33 ALSA: hda: Add Intel DG2 PCI ID and HDMI codec vid
In reply to Greg Kroah-HartmanFrom: Kai Vehmanen <[email protected]>
[ Upstream commit d85ffff5302b1509efc482e8877c253b0a668b33 ]
Add HD Audio PCI ID and HDMI codec vendor ID for Intel DG2.
--- sound/pci/hda/hda_intel.c | 12 +++++++++++- sound/pci/hda/patch_hdmi.c | 1 + 2 files changed, 12 insertions(+), 1 deletion(-)
sound/pci/hda/hda_intel.c +11 -1
@@ -369,7 +369,10 @@ enum { ((pci)->device == 0x0c0c) || \ ((pci)->device == 0x0d0c) || \ ((pci)->device == 0x160c) || \ - ((pci)->device == 0x490d)) + ((pci)->device == 0x490d) || \ + ((pci)->device == 0x4f90) || \ + ((pci)->device == 0x4f91) || \ + ((pci)->device == 0x4f92))#define IS_BXT (pci) ((pci)->vendor == 0x8086 && (pci)->device == 0x5a98)
@@ -2540,6 +2543,13 @@ static const struct pci_device_id azx_ids[] = {/* DG1 */ { PCI_DEVICE(0x8086, 0x490d), .driver_data = AZX_DRIVER_SKL | AZX_DCAPS_INTEL_SKYLAKE}, + /* DG2 */ + { PCI_DEVICE(0x8086, 0x4f90), + .driver_data = AZX_DRIVER_SKL | AZX_DCAPS_INTEL_SKYLAKE}, + { PCI_DEVICE(0x8086, 0x4f91), + .driver_data = AZX_DRIVER_SKL | AZX_DCAPS_INTEL_SKYLAKE}, + { PCI_DEVICE(0x8086, 0x4f92), + .driver_data = AZX_DRIVER_SKL | AZX_DCAPS_INTEL_SKYLAKE}, /* Alderlake-S */ { PCI_DEVICE(0x8086, 0x7ad0), .driver_data = AZX_DRIVER_SKL | AZX_DCAPS_INTEL_SKYLAKE},
sound/pci/hda/patch_hdmi.c +1 -0
@@ -4364,6 +4364,7 @@ HDA_CODEC_ENTRY(0x80862814, "DG1 HDMI", patch_i915_tgl_hdmi),HDA_CODEC_ENTRY (0x80862815 ,"Alderlake HDMI" , patch_i915_tgl_hdmi),HDA_CODEC_ENTRY (0x8086281c ,"Alderlake-P HDMI" , patch_i915_tgl_hdmi),HDA_CODEC_ENTRY (0x80862816 ,"Rocketlake HDMI" , patch_i915_tgl_hdmi), +HDA_CODEC_ENTRY (0x80862819 ,"DG2 HDMI" , patch_i915_tgl_hdmi),HDA_CODEC_ENTRY (0x8086281a ,"Jasperlake HDMI" , patch_i915_icl_hdmi),HDA_CODEC_ENTRY (0x8086281b ,"Elkhartlake HDMI" , patch_i915_icl_hdmi), HDA_CODEC_ENTRY(0x80862880, "CedarTrail HDMI", patch_generic_hdmi),
Signature · 1 line
2.33.0
Greg Kroah-Hartman
maintainerPATCH 8/33 ALSA: hda/hdmi: fix HDA codec entry table order for ADL-P
In reply to Greg Kroah-HartmanFrom: Kai Vehmanen <[email protected]>
[ Upstream commit 289047db1143c42c81820352f195a393ff639a52 ]
Keep the HDA_CODEC_ENTRY entries sorted by the codec VID. ADL-P is the only misplaced Intel HDMI codec.
--- sound/pci/hda/patch_hdmi.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
sound/pci/hda/patch_hdmi.c +1 -1
@@ -4362,11 +4362,11 @@ HDA_CODEC_ENTRY(0x8086280f, "Icelake HDMI", patch_i915_icl_hdmi),HDA_CODEC_ENTRY (0x80862812 ,"Tigerlake HDMI" , patch_i915_tgl_hdmi),HDA_CODEC_ENTRY (0x80862814 ,"DG1 HDMI" , patch_i915_tgl_hdmi),HDA_CODEC_ENTRY (0x80862815 ,"Alderlake HDMI" , patch_i915_tgl_hdmi), -HDA_CODEC_ENTRY (0x8086281c ,"Alderlake-P HDMI" , patch_i915_tgl_hdmi),HDA_CODEC_ENTRY (0x80862816 ,"Rocketlake HDMI" , patch_i915_tgl_hdmi),HDA_CODEC_ENTRY (0x80862819 ,"DG2 HDMI" , patch_i915_tgl_hdmi),HDA_CODEC_ENTRY (0x8086281a ,"Jasperlake HDMI" , patch_i915_icl_hdmi),HDA_CODEC_ENTRY (0x8086281b ,"Elkhartlake HDMI" , patch_i915_icl_hdmi), +HDA_CODEC_ENTRY (0x8086281c ,"Alderlake-P HDMI" , patch_i915_tgl_hdmi),HDA_CODEC_ENTRY (0x80862880 ,"CedarTrail HDMI" , patch_generic_hdmi),HDA_CODEC_ENTRY (0x80862882 ,"Valleyview2 HDMI" , patch_i915_byt_hdmi), HDA_CODEC_ENTRY(0x80862883, "Braswell HDMI", patch_i915_byt_hdmi),
Signature · 1 line
2.33.0
Greg Kroah-Hartman
maintainerPATCH 9/33 parisc/agp: Annotate parisc agp init functions with __init
In reply to Greg Kroah-HartmanFrom: Helge Deller <[email protected]>
[ Upstream commit 8d88382b7436551a9ebb78475c546b670790cbf6 ]
--- drivers/char/agp/parisc-agp.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-)
drivers/char/agp/parisc-agp.c +3 -3
@@ -281,7 +281,7 @@ agp_ioc_init(void __iomem *ioc_regs)return 0 ; } -static int +static int __init lba_find_capability (int cap) {struct _parisc_agp_info *info = &parisc_agp_info;
@@ -366,7 +366,7 @@ parisc_agp_setup(void __iomem *ioc_hpa, void __iomem *lba_hpa)return error; } -static int +static int __init find_quicksilver (struct device *dev,void *data) {struct parisc_device **lba = data;
@@ -378,7 +378,7 @@ find_quicksilver(struct device *dev, void *data)return 0 ; } -static int +static int __init parisc_agp_init (void ) {extern struct sba_device *sba_list;
Signature · 1 line
2.33.0
Greg Kroah-Hartman
maintainerPATCH 10/33 i2c: rk3x: Handle a spurious start completion interrupt flag
In reply to Greg Kroah-HartmanFrom: Ondrej Jirman <[email protected]>
[ Upstream commit 02fe0fbd8a21e183687925c3a266ae27dda9840f ]
In a typical read transfer, start completion flag is being set after read finishes (notice ipd bit 4 being set):
trasnfer poll=0
i2c start
rk3x-i2c fdd40000.i2c: IRQ: state 1, ipd: 10
i2c read
rk3x-i2c fdd40000.i2c: IRQ: state 2, ipd: 1b
i2c stop
rk3x-i2c fdd40000.i2c: IRQ: state 4, ipd: 33
This causes I2C transfer being aborted in polled mode from a stop completion handler:
trasnfer poll=1
i2c start
rk3x-i2c fdd40000.i2c: IRQ: state 1, ipd: 10 i2c read
rk3x-i2c fdd40000.i2c: IRQ: state 2, ipd: 0 rk3x-i2c fdd40000.i2c: IRQ: state 2, ipd: 1b i2c stop
rk3x-i2c fdd40000.i2c: IRQ: state 4, ipd: 13 i2c stop
rk3x-i2c fdd40000.i2c: unexpected irq in STOP: 0x10
Clearing the START flag after read fixes the issue without any obvious side effects.
This issue was dicovered on RK3566 when adding support for powering off the RK817 PMIC.
--- drivers/i2c/busses/i2c-rk3x.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
drivers/i2c/busses/i2c-rk3x.c +2 -2
@@ -423,8 +423,8 @@ static void rk3x_i2c_handle_read(struct rk3x_i2c *i2c, unsigned int ipd)if (!(ipd ®_INT_MBRF ))return ; -/* ack interrupt */ -i2c_writel (i2c,REG_INT_MBRF ,REG_IPD ); +/* ack interrupt (read also produces a spurious START flag, clear it too) */ +i2c_writel (i2c,REG_INT_MBRF |REG_INT_START ,REG_IPD );/* Can only handle a maximum of 32 bytes at a time */ if (len >32 )
Signature · 1 line
2.33.0
Greg Kroah-Hartman
maintainerPATCH 11/33 net: netlink: af_netlink: Prevent empty skb by adding a check on len.
In reply to Greg Kroah-HartmanFrom: Harshit Mogalapalli <[email protected]>
[ Upstream commit f123cffdd8fe8ea6c7fded4b88516a42798797d0 ]
Adding a check on len parameter to avoid empty skb. This prevents a division error in netem_enqueue function which is caused when skb->len=0 and skb->data_len=0 in the randomized corruption step as shown below.
skb->data[prandom_u32() % skb_headlen(skb)] ^= 1<<(prandom_u32() % 8);
Crash Report:
[ 343.170349] netdevsim netdevsim0 netdevsim3: set [1, 0] type 2 family 0 port 6081 - 0 [ 343.216110] netem: version 1.3 [ 343.235841] divide error: 0000 [#1] PREEMPT SMP KASAN NOPTI [ 343.236680] CPU: 3 PID: 4288 Comm: reproducer Not tainted 5.16.0-rc1+ [ 343.237569] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.11.0-2.el7 04/01/2014 [ 343.238707] RIP: 0010:netem_enqueue+0x1590/0x33c0 [sch_netem] [ 343.239499] Code: 89 85 58 ff ff ff e8 5f 5d e9 d3 48 8b b5 48 ff ff ff 8b 8d 50 ff ff ff 8b 85 58 ff ff ff 48 8b bd 70 ff ff ff 31 d2 2b 4f 74 <f7> f1 48 b8 00 00 00 00 00 fc ff df 49 01 d5 4c 89 e9 48 c1 e9 03 [ 343.241883] RSP: 0018:ffff88800bcd7368 EFLAGS: 00010246 [ 343.242589] RAX: 00000000ba7c0a9c RBX: 0000000000000001 RCX: 0000000000000000 [ 343.243542] RDX: 0000000000000000 RSI: ffff88800f8edb10 RDI: ffff88800f8eda40 [ 343.244474] RBP: ffff88800bcd7458 R08: 0000000000000000 R09: ffffffff94fb8445 [ 343.245403] R10: ffffffff94fb8336 R11: ffffffff94fb8445 R12: 0000000000000000 [ 343.246355] R13: ffff88800a5a7000 R14: ffff88800a5b5800 R15: 0000000000000020 [ 343.247291] FS: 00007fdde2bd7700(0000) GS:ffff888109780000(0000) knlGS:0000000000000000 [ 343.248350] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 [ 343.249120] CR2: 00000000200000c0 CR3: 000000000ef4c000 CR4: 00000000000006e0 [ 343.250076] Call Trace: [ 343.250423] <TASK> [ 343.250713] ? memcpy+0x4d/0x60 [ 343.251162] ? netem_init+0xa0/0xa0 [sch_netem] [ 343.251795] ? __sanitizer_cov_trace_pc+0x21/0x60 [ 343.252443] netem_enqueue+0xe28/0x33c0 [sch_netem] [ 343.253102] ? stack_trace_save+0x87/0xb0 [ 343.253655] ? filter_irq_stacks+0xb0/0xb0 [ 343.254220] ? netem_init+0xa0/0xa0 [sch_netem] [ 343.254837] ? __kasan_check_write+0x14/0x20 [ 343.255418] ? _raw_spin_lock+0x88/0xd6 [ 343.255953] dev_qdisc_enqueue+0x50/0x180 [ 343.256508] __dev_queue_xmit+0x1a7e/0x3090 [ 343.257083] ? netdev_core_pick_tx+0x300/0x300 [ 343.257690] ? check_kcov_mode+0x10/0x40 [ 343.258219] ? _raw_spin_unlock_irqrestore+0x29/0x40 [ 343.258899] ? __kasan_init_slab_obj+0x24/0x30 [ 343.259529] ? setup_object.isra.71+0x23/0x90 [ 343.260121] ? new_slab+0x26e/0x4b0 [ 343.260609] ? kasan_poison+0x3a/0x50 [ 343.261118] ? kasan_unpoison+0x28/0x50 [ 343.261637] ? __kasan_slab_alloc+0x71/0x90 [ 343.262214] ? memcpy+0x4d/0x60 [ 343.262674] ? write_comp_data+0x2f/0x90 [ 343.263209] ? __kasan_check_write+0x14/0x20 [ 343.263802] ? __skb_clone+0x5d6/0x840 [ 343.264329] ? __sanitizer_cov_trace_pc+0x21/0x60 [ 343.264958] dev_queue_xmit+0x1c/0x20 [ 343.265470] netlink_deliver_tap+0x652/0x9c0 [ 343.266067] netlink_unicast+0x5a0/0x7f0 [ 343.266608] ? netlink_attachskb+0x860/0x860 [ 343.267183] ? __sanitizer_cov_trace_pc+0x21/0x60 [ 343.267820] ? write_comp_data+0x2f/0x90 [ 343.268367] netlink_sendmsg+0x922/0xe80 [ 343.268899] ? netlink_unicast+0x7f0/0x7f0 [ 343.269472] ? __sanitizer_cov_trace_pc+0x21/0x60 [ 343.270099] ? write_comp_data+0x2f/0x90 [ 343.270644] ? netlink_unicast+0x7f0/0x7f0 [ 343.271210] sock_sendmsg+0x155/0x190 [ 343.271721] ____sys_sendmsg+0x75f/0x8f0 [ 343.272262] ? kernel_sendmsg+0x60/0x60 [ 343.272788] ? write_comp_data+0x2f/0x90 [ 343.273332] ? write_comp_data+0x2f/0x90 [ 343.273869] ___sys_sendmsg+0x10f/0x190 [ 343.274405] ? sendmsg_copy_msghdr+0x80/0x80 [ 343.274984] ? slab_post_alloc_hook+0x70/0x230 [ 343.275597] ? futex_wait_setup+0x240/0x240 [ 343.276175] ? security_file_alloc+0x3e/0x170 [ 343.276779] ? write_comp_data+0x2f/0x90 [ 343.277313] ? __sanitizer_cov_trace_pc+0x21/0x60 [ 343.277969] ? write_comp_data+0x2f/0x90 [ 343.278515] ? __fget_files+0x1ad/0x260 [ 343.279048] ? __sanitizer_cov_trace_pc+0x21/0x60 [ 343.279685] ? write_comp_data+0x2f/0x90 [ 343.280234] ? __sanitizer_cov_trace_pc+0x21/0x60 [ 343.280874] ? sockfd_lookup_light+0xd1/0x190 [ 343.281481] __sys_sendmsg+0x118/0x200 [ 343.281998] ? __sys_sendmsg_sock+0x40/0x40 [ 343.282578] ? alloc_fd+0x229/0x5e0 [ 343.283070] ? write_comp_data+0x2f/0x90 [ 343.283610] ? write_comp_data+0x2f/0x90 [ 343.284135] ? __sanitizer_cov_trace_pc+0x21/0x60 [ 343.284776] ? ktime_get_coarse_real_ts64+0xb8/0xf0 [ 343.285450] __x64_sys_sendmsg+0x7d/0xc0 [ 343.285981] ? syscall_enter_from_user_mode+0x4d/0x70 [ 343.286664] do_syscall_64+0x3a/0x80 [ 343.287158] entry_SYSCALL_64_after_hwframe+0x44/0xae [ 343.287850] RIP: 0033:0x7fdde24cf289 [ 343.288344] Code: 01 00 48 81 c4 80 00 00 00 e9 f1 fe ff ff 0f 1f 00 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 8b 0d b7 db 2c 00 f7 d8 64 89 01 48 [ 343.290729] RSP: 002b:00007fdde2bd6d98 EFLAGS: 00000246 ORIG_RAX: 000000000000002e [ 343.291730] RAX: ffffffffffffffda RBX: 0000000000000000 RCX: 00007fdde24cf289 [ 343.292673] RDX: 0000000000000000 RSI: 00000000200000c0 RDI: 0000000000000004 [ 343.293618] RBP: 00007fdde2bd6e20 R08: 0000000100000001 R09: 0000000000000000 [ 343.294557] R10: 0000000100000001 R11: 0000000000000246 R12: 0000000000000000 [ 343.295493] R13: 0000000000021000 R14: 0000000000000000 R15: 00007fdde2bd7700 [ 343.296432] </TASK> [ 343.296735] Modules linked in: sch_netem ip6_vti ip_vti ip_gre ipip
sit ip_tunnel geneve macsec macvtap tap ipvlan macvlan 8021q garp mrp hsr wireguard libchacha20poly1305 chacha_x86_64 poly1305_x86_64 ip6_udp_tunnel udp_tunnel libblake2s blake2s_x86_64 libblake2s_generic curve25519_x86_64 libcurve25519_generic libchacha xfrm_interface xfrm6_tunnel tunnel4 veth netdevsim psample batman_adv nlmon dummy team bonding tls vcan ip6_gre ip6_tunnel tunnel6 gre tun ip6t_rpfilter ipt_REJECT nf_reject_ipv4 ip6t_REJECT nf_reject_ipv6 xt_conntrack ip_set ebtable_nat ebtable_broute ip6table_nat ip6table_mangle ip6table_security ip6table_raw iptable_nat nf_nat nf_conntrack nf_defrag_ipv6 nf_defrag_ipv4 iptable_mangle iptable_security iptable_raw ebtable_filter ebtables rfkill ip6table_filter ip6_tables iptable_filter ppdev bochs drm_vram_helper drm_ttm_helper ttm drm_kms_helper cec parport_pc drm joydev floppy parport sg syscopyarea sysfillrect sysimgblt i2c_piix4 qemu_fw_cfg fb_sys_fops pcspkr
[ 343.297459] ip_tables xfs virtio_net net_failover failover sd_mod sr_mod cdrom t10_pi ata_generic pata_acpi ata_piix libata virtio_pci virtio_pci_legacy_dev serio_raw virtio_pci_modern_dev dm_mirror dm_region_hash dm_log dm_mod [ 343.311074] Dumping ftrace buffer: [ 343.311532] (ftrace buffer empty) [ 343.312040] ---[ end trace a2e3db5a6ae05099 ]--- [ 343.312691] RIP: 0010:netem_enqueue+0x1590/0x33c0 [sch_netem] [ 343.313481] Code: 89 85 58 ff ff ff e8 5f 5d e9 d3 48 8b b5 48 ff ff ff 8b 8d 50 ff ff ff 8b 85 58 ff ff ff 48 8b bd 70 ff ff ff 31 d2 2b 4f 74 <f7> f1 48 b8 00 00 00 00 00 fc ff df 49 01 d5 4c 89 e9 48 c1 e9 03 [ 343.315893] RSP: 0018:ffff88800bcd7368 EFLAGS: 00010246 [ 343.316622] RAX: 00000000ba7c0a9c RBX: 0000000000000001 RCX: 0000000000000000 [ 343.317585] RDX: 0000000000000000 RSI: ffff88800f8edb10 RDI: ffff88800f8eda40 [ 343.318549] RBP: ffff88800bcd7458 R08: 0000000000000000 R09: ffffffff94fb8445 [ 343.319503] R10: ffffffff94fb8336 R11: ffffffff94fb8445 R12: 0000000000000000 [ 343.320455] R13: ffff88800a5a7000 R14: ffff88800a5b5800 R15: 0000000000000020 [ 343.321414] FS: 00007fdde2bd7700(0000) GS:ffff888109780000(0000) knlGS:0000000000000000 [ 343.322489] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 [ 343.323283] CR2: 00000000200000c0 CR3: 000000000ef4c000 CR4: 00000000000006e0 [ 343.324264] Kernel panic - not syncing: Fatal exception in interrupt [ 343.333717] Dumping ftrace buffer: [ 343.334175] (ftrace buffer empty) [ 343.334653] Kernel Offset: 0x13600000 from 0xffffffff81000000 (relocation range: 0xffffffff80000000-0xffffffffbfffffff) [ 343.336027] Rebooting in 86400 seconds..
--- net/netlink/af_netlink.c | 5 +++++ 1 file changed, 5 insertions(+)
net/netlink/af_netlink.c +5 -0
@@ -1863,6 +1863,11 @@ static int netlink_sendmsg(struct socket *sock, struct msghdr *msg, size_t len)if (msg->msg_flags &MSG_OOB )return -EOPNOTSUPP ; +if (len ==0 ) { +pr_warn_once ("Zero length message leads to an empty skb\n" ); +return -ENODATA ; + } + err =scm_send (sock, msg, &scm, true);if (err <0 )return err;
Signature · 1 line
2.33.0
Greg Kroah-Hartman
maintainerPATCH 12/33 drm/amd/display: Fix for the no Audio bug with Tiled Displays
In reply to Greg Kroah-HartmanFrom: Mustapha Ghaddar <[email protected]>
[ Upstream commit 5ceaebcda9061c04f439c93961f0819878365c0f ]
[WHY]
It seems like after a series of plug/unplugs we end up in a situation where tiled display doesnt support Audio.
[HOW]
The issue seems to be related to when we check streams changed after an HPD, we should be checking the audio_struct as well to see if any of its values changed.
--- drivers/gpu/drm/amd/display/dc/core/dc_resource.c | 4 ++++ 1 file changed, 4 insertions(+)
drivers/gpu/drm/amd/display/dc/core/dc_resource.c +4 -0
@@ -1698,6 +1698,10 @@ bool dc_is_stream_unchanged(if (old_stream->ignore_msa_timing_param != stream->ignore_msa_timing_param)return false; +// Only Have Audio left to check whether it is same or not. This is a corner case for Tiled sinks +if (old_stream->audio_info.mode_count != stream->audio_info.mode_count) +return false; +return true; }
Signature · 1 line
2.33.0
Greg Kroah-Hartman
maintainerPATCH 13/33 drm/amd/display: add connector type check for CRC source set
In reply to Greg Kroah-HartmanFrom: Perry Yuan <[email protected]>
[ Upstream commit 2da34b7bb59e1caa9a336e0e20a76b8b6a4abea2 ]
[Why]
IGT bypass test will set crc source as DPRX,and display DM didn`t check connection type, it run the test on the HDMI connector ,then the kernel will be crashed because aux->transfer is set null for HDMI connection. This patch will skip the invalid connection test and fix kernel crash issue.
[How]
Check the connector type while setting the pipe crc source as DPRX or auto,if the type is not DP or eDP, the crtc crc source will not be set and report error code to IGT test,IGT will show the this subtest as no valid crtc/connector combinations found.
116.779714] [IGT] amd_bypass: starting subtest 8bpc-bypass-mode
[ 117.730996] BUG: kernel NULL pointer dereference, address: 0000000000000000 [ 117.731001] #PF: supervisor instruction fetch in kernel mode [ 117.731003] #PF: error_code(0x0010) - not-present page [ 117.731004] PGD 0 P4D 0 [ 117.731006] Oops: 0010 [#1] SMP NOPTI [ 117.731009] CPU: 11 PID: 2428 Comm: amd_bypass Tainted: G OE 5.11.0-34-generic #36~20.04.1-Ubuntu [ 117.731011] Hardware name: AMD CZN/, BIOS AB.FD 09/07/2021 [ 117.731012] RIP: 0010:0x0 [ 117.731015] Code: Unable to access opcode bytes at RIP 0xffffffffffffffd6. [ 117.731016] RSP: 0018:ffffa8d64225bab8 EFLAGS: 00010246 [ 117.731017] RAX: 0000000000000000 RBX: 0000000000000020 RCX: ffffa8d64225bb5e [ 117.731018] RDX: ffff93151d921880 RSI: ffffa8d64225bac8 RDI: ffff931511a1a9d8 [ 117.731022] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 [ 117.731023] CR2: ffffffffffffffd6 CR3: 000000010d5a4000 CR4: 0000000000750ee0 [ 117.731023] PKRU: 55555554 [ 117.731024] Call Trace: [ 117.731027] drm_dp_dpcd_access+0x72/0x110 [drm_kms_helper] [ 117.731036] drm_dp_dpcd_read+0xb7/0xf0 [drm_kms_helper] [ 117.731040] drm_dp_start_crc+0x38/0xb0 [drm_kms_helper] [ 117.731047] amdgpu_dm_crtc_set_crc_source+0x1ae/0x3e0 [amdgpu] [ 117.731149] crtc_crc_open+0x174/0x220 [drm] [ 117.731162] full_proxy_open+0x168/0x1f0 [ 117.731165] ? open_proxy_open+0x100/0x100
--- drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_crc.c | 8 ++++++++ 1 file changed, 8 insertions(+)
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_crc.c +8 -0
@@ -226,6 +226,14 @@ int amdgpu_dm_crtc_set_crc_source(struct drm_crtc *crtc, const char *src_name) ret = -EINVAL ; goto cleanup; } + +if ((aconn->base.connector_type != DRM_MODE_CONNECTOR_DisplayPort) && + (aconn->base.connector_type != DRM_MODE_CONNECTOR_eDP)) { +DRM_DEBUG_DRIVER ("No DP connector available for CRC source\n" ); + ret = -EINVAL ; + goto cleanup; + } + }if (amdgpu_dm_crtc_configure_crc_source (crtc, crtc_state, source)) {
Signature · 1 line
2.33.0
Greg Kroah-Hartman
maintainerPATCH 14/33 tracing: Fix a kmemleak false positive in tracing_map
In reply to Greg Kroah-HartmanFrom: Chen Jun <[email protected]>
[ Upstream commit f25667e5980a4333729cac3101e5de1bb851f71a ]
Doing the command:
echo 'hist:key=common_pid.execname,common_timestamp' > /sys/kernel/debug/tracing/events/xxx/trigger
Triggers many kmemleak reports:
unreferenced object 0xffff0000c7ea4980 (size 128):
comm "bash", pid 338, jiffies 4294912626 (age 9339.324s) hex dump (first 32 bytes):
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
backtrace:
[<00000000f3469921>] kmem_cache_alloc_trace+0x4c0/0x6f0
[<0000000054ca40c3>] hist_trigger_elt_data_alloc+0x140/0x178
[<00000000633bd154>] tracing_map_init+0x1f8/0x268
[<000000007e814ab9>] event_hist_trigger_func+0xca0/0x1ad0
[<00000000bf8520ed>] trigger_process_regex+0xd4/0x128
[<00000000f549355a>] event_trigger_write+0x7c/0x120
[<00000000b80f898d>] vfs_write+0xc4/0x380
[<00000000823e1055>] ksys_write+0x74/0xf8
[<000000008a9374aa>] __arm64_sys_write+0x24/0x30
[<0000000087124017>] do_el0_svc+0x88/0x1c0
[<00000000efd0dcd1>] el0_svc+0x1c/0x28
[<00000000dbfba9b3>] el0_sync_handler+0x88/0xc0
[<00000000e7399680>] el0_sync+0x148/0x180
unreferenced object 0xffff0000c7ea4980 (size 128):
comm "bash", pid 338, jiffies 4294912626 (age 9339.324s)
hex dump (first 32 bytes):
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
backtrace:
[<00000000f3469921>] kmem_cache_alloc_trace+0x4c0/0x6f0
[<0000000054ca40c3>] hist_trigger_elt_data_alloc+0x140/0x178
[<00000000633bd154>] tracing_map_init+0x1f8/0x268
[<000000007e814ab9>] event_hist_trigger_func+0xca0/0x1ad0
[<00000000bf8520ed>] trigger_process_regex+0xd4/0x128
[<00000000f549355a>] event_trigger_write+0x7c/0x120
[<00000000b80f898d>] vfs_write+0xc4/0x380
[<00000000823e1055>] ksys_write+0x74/0xf8
[<000000008a9374aa>] __arm64_sys_write+0x24/0x30
[<0000000087124017>] do_el0_svc+0x88/0x1c0
[<00000000efd0dcd1>] el0_svc+0x1c/0x28
[<00000000dbfba9b3>] el0_sync_handler+0x88/0xc0
[<00000000e7399680>] el0_sync+0x148/0x180The reason is elts->pages[i] is alloced by get_zeroed_page. and kmemleak will not scan the area alloced by get_zeroed_page. The address stored in elts->pages will be regarded as leaked.
That is, the elts->pages[i] will have pointers loaded onto it as well, and without telling kmemleak about it, those pointers will look like memory without a reference.
To fix this, call kmemleak_alloc to tell kmemleak to scan elts->pages[i]
--- kernel/trace/tracing_map.c | 3 +++ 1 file changed, 3 insertions(+)
kernel/trace/tracing_map.c +3 -0
@@ -15,6 +15,7 @@#include <linux/jhash.h> #include <linux/slab.h> #include <linux/sort.h> +#include <linux/kmemleak.h> #include "tracing_map.h" #include "trace.h"
@@ -307,6 +308,7 @@ static void tracing_map_array_free(struct tracing_map_array *a)for (i =0 ; i < a->n_pages; i++) {if (!a->pages[i])break ; +kmemleak_free (a->pages[i]);free_page ((unsigned long )a->pages[i]); }
@@ -342,6 +344,7 @@ static struct tracing_map_array *tracing_map_array_alloc(unsigned int n_elts, a->pages[i] = (void *)get_zeroed_page (GFP_KERNEL );if (!a->pages[i]) goto free; +kmemleak_alloc (a->pages[i],PAGE_SIZE ,1 ,GFP_KERNEL ); } out:return a;
Signature · 1 line
2.33.0
Greg Kroah-Hartman
maintainerPATCH 15/33 KVM: x86: Ignore sparse banks size for an "all CPUs", non-sparse IPI req
In reply to Greg Kroah-HartmanFrom: Sean Christopherson <[email protected]>
commit 3244867af8c065e51969f1bffe732d3ebfd9a7d2 upstream.
Do not bail early if there are no bits set in the sparse banks for a non-sparse, a.k.a. "all CPUs", IPI request. Per the Hyper-V spec, it is legal to have a variable length of '0', e.g. VP_SET's BankContents in this case, if the request can be serviced without the extra info.
It is possible that for a given invocation of a hypercall that does accept variable sized input headers that all the header input fits entirely within the fixed size header. In such cases the variable sized input header is zero-sized and the corresponding bits in the hypercall input should be set to zero.
Bailing early results in KVM failing to send IPIs to all CPUs as expected by the guest.
Message-Id: <[email protected]>
--- arch/x86/kvm/hyperv.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-)
arch/x86/kvm/hyperv.c +5 -2
@@ -1641,11 +1641,13 @@ static u64 kvm_hv_send_ipi(struct kvm_vc all_cpus = send_ipi_ex.vp_set.format ==HV_GENERIC_SET_ALL ; +if (all_cpus) + goto check_and_send_ipi; +if (!sparse_banks_len) goto ret_success; -if (!all_cpus && -kvm_read_guest (kvm, +if (kvm_read_guest (kvm, ingpa + offsetof(struct hv_send_ipi_ex , vp_set.bank_contents), sparse_banks,
@@ -1653,6 +1655,7 @@ static u64 kvm_hv_send_ipi(struct kvm_vcreturn HV_STATUS_INVALID_HYPERCALL_INPUT ; } +check_and_send_ipi:if ((vector <HV_IPI_LOW_VECTOR ) || (vector >HV_IPI_HIGH_VECTOR ))return HV_STATUS_INVALID_HYPERCALL_INPUT ;
Greg Kroah-Hartman
maintainerPATCH 16/33 staging: most: dim2: use device release method
In reply to Greg Kroah-HartmanFrom: Nikita Yushchenko <[email protected]>
commit d445aa402d60014a37a199fae2bba379696b007d upstream.
Commit 723de0f9171e ("staging: most: remove device from interface structure") moved registration of driver-provided struct device to the most subsystem. This updated dim2 driver as well.
However, struct device passed to register_device() becomes refcounted, and must not be explicitly deallocated, but must provide release method instead. Which is incompatible with managing it via devres.
This patch makes the device structure allocated without devres, adds device release method, and moves device destruction there.
--- drivers/staging/most/dim2/dim2.c | 55 +++++++++++++++++++++------------------ 1 file changed, 30 insertions(+), 25 deletions(-)
drivers/staging/most/dim2/dim2.c +30 -25
@@ -723,6 +723,23 @@ static int get_dim2_clk_speed(const charreturn -EINVAL ; } +static void dim2_release (struct device *d) +{ + struct dim2_hdm *dev = container_of(d, struct dim2_hdm, dev); +unsigned long flags; + +kthread_stop (dev->netinfo_task); + +spin_lock_irqsave (&dim_lock, flags); +dim_shutdown (); +spin_unlock_irqrestore (&dim_lock, flags); + +if (dev->disable_platform) + dev->disable_platform (to_platform_device (d->parent)); + +kfree (dev); +} +/* * dim2_probe - dim2 probe handler * @pdev: platform device structure
@@ -743,7 +760,7 @@ static int dim2_probe(struct platform_deenum {MLB_INT_IDX ,AHB0_INT_IDX }; - dev =devm_kzalloc (&pdev->dev,sizeof (*dev),GFP_KERNEL ); + dev =kzalloc (sizeof (*dev),GFP_KERNEL );if (!dev)return -ENOMEM ;
@@ -755,25 +772,27 @@ static int dim2_probe(struct platform_de "microchip,clock-speed", &clock_speed);if (ret) {dev_err (&pdev->dev,"missing dt property clock-speed\n" ); -return ret; + goto err_free_dev; } ret =get_dim2_clk_speed (clock_speed, &dev->clk_speed);if (ret) {dev_err (&pdev->dev,"bad dt property clock-speed\n" ); -return ret; + goto err_free_dev; } res =platform_get_resource (pdev,IORESOURCE_MEM ,0 ); dev->io_base =devm_ioremap_resource (&pdev->dev, res); -if (IS_ERR (dev->io_base)) -return PTR_ERR (dev->io_base); +if (IS_ERR (dev->io_base)) { + ret =PTR_ERR (dev->io_base); + goto err_free_dev; + } of_id =of_match_node (dim2_of_match, pdev->dev.of_node); pdata = of_id->data; ret = pdata && pdata->enable ? pdata->enable (pdev) :0 ;if (ret) -return ret; + goto err_free_dev; dev->disable_platform = pdata ? pdata->disable :NULL ;
@@ -864,24 +883,19 @@ static int dim2_probe(struct platform_de dev->most_iface.request_netinfo = request_netinfo; dev->most_iface.driver_dev = &pdev->dev; dev->most_iface.dev = &dev->dev; - dev->dev.init_name ="dim2_state" ; + dev->dev.init_name = dev->name; dev->dev.parent = &pdev->dev; + dev->dev.release = dim2_release; - ret =most_register_interface (&dev->most_iface); -if (ret) { -dev_err (&pdev->dev,"failed to register MOST interface\n" ); - goto err_stop_thread; - } - -return 0 ; +return most_register_interface (&dev->most_iface); -err_stop_thread: -kthread_stop (dev->netinfo_task); err_shutdown_dim:dim_shutdown (); err_disable_platform:if (dev->disable_platform) dev->disable_platform (pdev); +err_free_dev: +kfree (dev);return ret; }
@@ -895,17 +909,8 @@ err_disable_platform:static int dim2_remove (struct platform_device *pdev) {struct dim2_hdm *dev =platform_get_drvdata (pdev); -unsigned long flags;most_deregister_interface (&dev->most_iface); -kthread_stop (dev->netinfo_task); - -spin_lock_irqsave (&dim_lock, flags); -dim_shutdown (); -spin_unlock_irqrestore (&dim_lock, flags); - -if (dev->disable_platform) - dev->disable_platform (pdev);return 0 ; }
Greg Kroah-Hartman
maintainerPATCH 17/33 bpf: Fix integer overflow in argument calculation for bpf_map_area_alloc
In reply to Greg Kroah-HartmanFrom: Bui Quang Minh <[email protected]>
commit 7dd5d437c258bbf4cc15b35229e5208b87b8b4e0 upstream.
In 32-bit architecture, the result of sizeof() is a 32-bit integer so the expression becomes the multiplication between 2 32-bit integer which can potentially leads to integer overflow. As a result, bpf_map_area_alloc() allocates less memory than needed.
Fix this by casting 1 operand to u64.
--- kernel/bpf/devmap.c | 4 ++-- net/core/sock_map.c | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-)
kernel/bpf/devmap.c +2 -2
@@ -92,7 +92,7 @@ static struct hlist_head *dev_map_createint i;struct hlist_head *hash; - hash =bpf_map_area_alloc (entries *sizeof (*hash), numa_node); + hash =bpf_map_area_alloc ((u64 ) entries *sizeof (*hash), numa_node);if (hash !=NULL )for (i =0 ; i < entries; i++)INIT_HLIST_HEAD (&hash[i]);
@@ -153,7 +153,7 @@ static int dev_map_init_map(struct bpf_dspin_lock_init (&dtab->index_lock); }else { - dtab->netdev_map =bpf_map_area_alloc (dtab->map.max_entries * + dtab->netdev_map =bpf_map_area_alloc ((u64 ) dtab->map.max_entries *sizeof (struct bpf_dtab_netdev *), dtab->map.numa_node);if (!dtab->netdev_map)
net/core/sock_map.c +1 -1
@@ -52,7 +52,7 @@ static struct bpf_map *sock_map_alloc(unif (err) goto free_stab; - stab->sks =bpf_map_area_alloc (stab->map.max_entries * + stab->sks =bpf_map_area_alloc ((u64 ) stab->map.max_entries *sizeof (struct sock *), stab->map.numa_node);if (stab->sks)
Greg Kroah-Hartman
maintainerPATCH 18/33 fuse: make sure reclaim doesnt write the inode
In reply to Greg Kroah-HartmanFrom: Miklos Szeredi <[email protected]>
commit 5c791fe1e2a4f401f819065ea4fc0450849f1818 upstream.
In writeback cache mode mtime/ctime updates are cached, and flushed to the server using the ->write_inode() callback.
Closing the file will result in a dirty inode being immediately written, but in other cases the inode can remain dirty after all references are dropped. This result in the inode being written back from reclaim, which can deadlock on a regular allocation while the request is being served.
The usual mechanisms (GFP_NOFS/PF_MEMALLOC*) don't work for FUSE, because serving a request involves unrelated userspace process(es).
Instead do the same as for dirty pages: make sure the inode is written before the last reference is gone.
- fallocate(2)/copy_file_range(2): these call file_update_time() or file_modified(), so flush the inode before returning from the call
- unlink(2), link(2) and rename(2): these call fuse_update_ctime(), so flush the ctime directly from this helper
--- fs/fuse/dir.c | 8 ++++++++ fs/fuse/file.c | 15 +++++++++++++++ fs/fuse/fuse_i.h | 1 + fs/fuse/inode.c | 3 +++ 4 files changed, 27 insertions(+)
fs/fuse/dir.c +8 -0
@@ -791,11 +791,19 @@ static int fuse_symlink(struct inode *direturn create_new_entry (fm, &args, dir, entry,S_IFLNK ); } +void fuse_flush_time_update (struct inode *inode) +{ +int err =sync_inode_metadata (inode,1 ); + +mapping_set_error (inode->i_mapping, err); +} +void fuse_update_ctime (struct inode *inode) {if (!IS_NOCMTIME (inode)) { inode->i_ctime =current_time (inode);mark_inode_dirty_sync (inode); +fuse_flush_time_update (inode); } }
fs/fuse/file.c +15 -0
@@ -1849,6 +1849,17 @@ int fuse_write_inode(struct inode *inodestruct fuse_file *ff;int err; +/* +* Inode is always written before the last reference is dropped and +* hence this should not be reached from reclaim. +* +* Writing back the inode from reclaim can deadlock if the request +* processing itself needs an allocation. Allocations triggering +* reclaim while serving a request can't be prevented, because it can +* involve any number of unrelated userspace processes. +*/ +WARN_ON (wbc->for_reclaim); + ff =__fuse_write_file_get (fc, fi); err =fuse_flush_times (inode, ff);if (ff)
@@ -3338,6 +3349,8 @@ out:if (lock_inode)inode_unlock (inode); +fuse_flush_time_update (inode); +return err; }
@@ -3447,6 +3460,8 @@ out:inode_unlock (inode_out);file_accessed (file_in); +fuse_flush_time_update (inode_out); +return err; }
fs/fuse/fuse_i.h +1 -0
@@ -1113,6 +1113,7 @@ int fuse_allow_current_process(struct fuu64 fuse_lock_owner_id (struct fuse_conn *fc,fl_owner_t id); +void fuse_flush_time_update (struct inode *inode);void fuse_update_ctime (struct inode *inode);int fuse_update_attributes (struct inode *inode,struct file *file);
fs/fuse/inode.c +3 -0
@@ -119,6 +119,9 @@ static void fuse_evict_inode(struct inod {struct fuse_inode *fi =get_fuse_inode (inode); +/* Will write inode on close/munmap and in all other dirtiers */ +WARN_ON (inode->i_state &I_DIRTY_INODE ); +truncate_inode_pages_final (&inode->i_data);clear_inode (inode);if (inode->i_sb->s_flags &SB_ACTIVE ) {
Greg Kroah-Hartman
maintainerPATCH 19/33 hwmon: (dell-smm) Fix warning on /proc/i8k creation error
In reply to Greg Kroah-HartmanFrom: Armin Wolf <[email protected]>
commit dbd3e6eaf3d813939b28e8a66e29d81cdc836445 upstream.
The removal function is called regardless of whether /proc/i8k was created successfully or not, the later causing a WARN() on module removal.
Fix that by only registering the removal function if /proc/i8k was created successfully.
Tested on a Inspiron 3505.
--- drivers/hwmon/dell-smm-hwmon.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-)
drivers/hwmon/dell-smm-hwmon.c +5 -2
@@ -603,15 +603,18 @@ static const struct proc_ops i8k_proc_op .proc_ioctl = i8k_ioctl, }; +static struct proc_dir_entry *entry; +static void __init i8k_init_procfs (void ) {/* Register the proc entry */ -proc_create ("i8k" ,0 ,NULL , &i8k_proc_ops); + entry =proc_create ("i8k" ,0 ,NULL , &i8k_proc_ops); } static void __exit i8k_exit_procfs(void) { -remove_proc_entry ("i8k" ,NULL ); +if (entry) +remove_proc_entry ("i8k" ,NULL ); }#else
Greg Kroah-Hartman
maintainerPATCH 20/33 ethtool: do not perform operations on net devices being unregistered
In reply to Greg Kroah-HartmanFrom: Antoine Tenart <[email protected]>
commit dde91ccfa25fd58f64c397d91b81a4b393100ffa upstream.
There is a short period between a net device starts to be unregistered and when it is actually gone. In that time frame ethtool operations could still be performed, which might end up in unwanted or undefined behaviours[1].
Do not allow ethtool operations after a net device starts its unregistration. This patch targets the netlink part as the ioctl one isn't affected: the reference to the net device is taken and the operation is executed within an rtnl lock section and the net device won't be found after unregister.
[1] For example adding Tx queues after unregister ends up in NULL
pointer exceptions and UaFs, such as:
BUG: KASAN: use-after-free in kobject_get+0x14/0x90
Read of size 1 at addr ffff88801961248c by task ethtool/755
CPU: 0 PID: 755 Comm: ethtool Not tainted 5.15.0-rc6+ #778
Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.14.0-4.fc34 04/014
Call Trace:
dump_stack_lvl+0x57/0x72
print_address_description.constprop.0+0x1f/0x140
kasan_report.cold+0x7f/0x11b
kobject_get+0x14/0x90
kobject_add_internal+0x3d1/0x450
kobject_init_and_add+0xba/0xf0
netdev_queue_update_kobjects+0xcf/0x200
netif_set_real_num_tx_queues+0xb4/0x310
veth_set_channels+0x1c3/0x550
ethnl_set_channels+0x524/0x610--- net/ethtool/netlink.h | 3 +++ 1 file changed, 3 insertions(+)
net/ethtool/netlink.h +3 -0
@@ -249,6 +249,9 @@ struct ethnl_reply_data {static inline int ethnl_ops_begin (struct net_device *dev) { +if (dev && dev->reg_state ==NETREG_UNREGISTERING ) +return -ENODEV ; +if (dev && dev->ethtool_ops->begin)return dev->ethtool_ops->begin (dev);else
Greg Kroah-Hartman
maintainerPATCH 21/33 perf inject: Fix itrace space allowed for new attributes
In reply to Greg Kroah-HartmanFrom: Adrian Hunter <[email protected]>
commit c29d9792607e67ed8a3f6e9db0d96836d885a8c5 upstream.
The space allowed for new attributes can be too small if existing header information is large. That can happen, for example, if there are very many CPUs, due to having an event ID per CPU per event being stored in the header information.
Fix by adding the existing header.data_offset. Also increase the extra space allowed to 8KiB and align to a 4KiB boundary for neatness.
--- tools/perf/builtin-inject.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
tools/perf/builtin-inject.c +1 -1
@@ -752,7 +752,7 @@ static int __cmd_inject(struct perf_inje inject->tool.ordered_events = true; inject->tool.ordering_requires_timestamps = true;/* Allow space in the header for new attributes */ - output_data_offset =4096 ; + output_data_offset =roundup (8192 + session->header.data_offset,4096 );if (inject->strip)strip_init (inject); }
Greg Kroah-Hartman
maintainerPATCH 22/33 perf intel-pt: Fix some PGE (packet generation enable/control flow packets) usage
In reply to Greg Kroah-HartmanFrom: Adrian Hunter <[email protected]>
commit 057ae59f5a1d924511beb1b09f395bdb316cfd03 upstream.
Packet generation enable (PGE) refers to whether control flow (COFI) packets are being produced.
PGE may be false even when branch-tracing is enabled, due to being out-of-context, or outside a filter address range. Fix some missing PGE usage.
--- tools/perf/util/intel-pt-decoder/intel-pt-decoder.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-)
tools/perf/util/intel-pt-decoder/intel-pt-decoder.c +3 -2
@@ -1949,6 +1949,7 @@ static int intel_pt_hop_trace(struct intreturn HOP_IGNORE ;case INTEL_PT_TIP_PGD : + decoder->pge = false;if (!decoder->packet.count)return HOP_IGNORE ;intel_pt_set_ip (decoder);
@@ -1972,7 +1973,7 @@ static int intel_pt_hop_trace(struct intintel_pt_set_ip (decoder);if (intel_pt_fup_event (decoder))return HOP_RETURN ; -if (!decoder->branch_enable) +if (!decoder->branch_enable || !decoder->pge) *no_tip = true;if (*no_tip) { decoder->state.type =INTEL_PT_INSTRUCTION ;
@@ -2124,7 +2125,7 @@ next:break ; }intel_pt_set_last_ip (decoder); -if (!decoder->branch_enable) { +if (!decoder->branch_enable || !decoder->pge) { decoder->ip = decoder->last_ip;if (intel_pt_fup_event (decoder))return 0 ;
Greg Kroah-Hartman
maintainerPATCH 23/33 perf intel-pt: Fix sync state when a PSB (synchronization) packet is found
In reply to Greg Kroah-HartmanFrom: Adrian Hunter <[email protected]>
commit ad106a26aef3a95ac7ca88d033b431661ba346ce upstream.
When syncing, it may be that branch packet generation is not enabled at that point, in which case there will not immediately be a control-flow packet, so some packets before a control flow packet turns up, get ignored. However, the decoder is in sync as soon as a PSB is found, so the state should be set accordingly.
--- tools/perf/util/intel-pt-decoder/intel-pt-decoder.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
tools/perf/util/intel-pt-decoder/intel-pt-decoder.c +1 -1
@@ -2733,7 +2733,7 @@ leap:return err; decoder->have_last_ip = true; - decoder->pkt_state =INTEL_PT_STATE_NO_IP ; + decoder->pkt_state =INTEL_PT_STATE_IN_SYNC ; err =intel_pt_walk_psb (decoder);if (err)
Greg Kroah-Hartman
maintainerPATCH 24/33 perf intel-pt: Fix intel_pt_fup_event() assumptions about setting state type
In reply to Greg Kroah-HartmanFrom: Adrian Hunter <[email protected]>
commit 4c761d805bb2d2ead1b9baaba75496152b394c80 upstream.
intel_pt_fup_event() assumes it can overwrite the state type if there has been an FUP event, but this is an unnecessary and unexpected constraint on callers.
Fix by touching only the state type flags that are affected by an FUP event.
--- tools/perf/util/intel-pt-decoder/intel-pt-decoder.c | 32 ++++++++------------ 1 file changed, 13 insertions(+), 19 deletions(-)
tools/perf/util/intel-pt-decoder/intel-pt-decoder.c +13 -19
@@ -1114,61 +1114,55 @@ out_no_progress:static bool intel_pt_fup_event (struct intel_pt_decoder *decoder) { +enum intel_pt_sample_type type = decoder->state.type;bool ret = false; + decoder->state.type &= ~INTEL_PT_BRANCH ; +if (decoder->set_fup_tx_flags) { decoder->set_fup_tx_flags = false; decoder->tx_flags = decoder->fup_tx_flags; - decoder->state.type =INTEL_PT_TRANSACTION ; + decoder->state.type |=INTEL_PT_TRANSACTION ;if (decoder->fup_tx_flags &INTEL_PT_ABORT_TX ) decoder->state.type |=INTEL_PT_BRANCH ; - decoder->state.from_ip = decoder->ip; - decoder->state.to_ip =0 ; decoder->state.flags = decoder->fup_tx_flags; -return true; + ret = true; }if (decoder->set_fup_ptw) { decoder->set_fup_ptw = false; - decoder->state.type =INTEL_PT_PTW ; + decoder->state.type |=INTEL_PT_PTW ; decoder->state.flags |=INTEL_PT_FUP_IP ; - decoder->state.from_ip = decoder->ip; - decoder->state.to_ip =0 ; decoder->state.ptw_payload = decoder->fup_ptw_payload; -return true; + ret = true; }if (decoder->set_fup_mwait) { decoder->set_fup_mwait = false; - decoder->state.type =INTEL_PT_MWAIT_OP ; - decoder->state.from_ip = decoder->ip; - decoder->state.to_ip =0 ; + decoder->state.type |=INTEL_PT_MWAIT_OP ; decoder->state.mwait_payload = decoder->fup_mwait_payload; ret = true; }if (decoder->set_fup_pwre) { decoder->set_fup_pwre = false; decoder->state.type |=INTEL_PT_PWR_ENTRY ; - decoder->state.type &= ~INTEL_PT_BRANCH ; - decoder->state.from_ip = decoder->ip; - decoder->state.to_ip =0 ; decoder->state.pwre_payload = decoder->fup_pwre_payload; ret = true; }if (decoder->set_fup_exstop) { decoder->set_fup_exstop = false; decoder->state.type |=INTEL_PT_EX_STOP ; - decoder->state.type &= ~INTEL_PT_BRANCH ; decoder->state.flags |=INTEL_PT_FUP_IP ; - decoder->state.from_ip = decoder->ip; - decoder->state.to_ip =0 ; ret = true; }if (decoder->set_fup_bep) { decoder->set_fup_bep = false; decoder->state.type |=INTEL_PT_BLK_ITEMS ; - decoder->state.type &= ~INTEL_PT_BRANCH ; + ret = true; + } +if (ret) { decoder->state.from_ip = decoder->ip; decoder->state.to_ip =0 ; - ret = true; + }else { + decoder->state.type = type; }return ret; }
Greg Kroah-Hartman
maintainerPATCH 25/33 perf intel-pt: Fix state setting when receiving overflow (OVF) packet
In reply to Greg Kroah-HartmanFrom: Adrian Hunter <[email protected]>
commit c79ee2b2160909889df67c8801352d3e69d43a1a upstream.
An overflow (OVF packet) is treated as an error because it represents a loss of trace data, but there is no loss of synchronization, so the packet state should be INTEL_PT_STATE_IN_SYNC not INTEL_PT_STATE_ERR_RESYNC.
To support that, some additional variables must be reset, and the FUP packet that may follow OVF is treated as an FUP event.
--- tools/perf/util/intel-pt-decoder/intel-pt-decoder.c | 32 +++++++++++++++++--- 1 file changed, 28 insertions(+), 4 deletions(-)
tools/perf/util/intel-pt-decoder/intel-pt-decoder.c +28 -4
@@ -1158,6 +1158,20 @@ static bool intel_pt_fup_event(struct in decoder->state.type |=INTEL_PT_BLK_ITEMS ; ret = true; } +if (decoder->overflow) { + decoder->overflow = false; +if (!ret && !decoder->pge) { +if (decoder->hop) { + decoder->state.type =0 ; + decoder->pkt_state =INTEL_PT_STATE_RESAMPLE ; + } + decoder->pge = true; + decoder->state.type |=INTEL_PT_BRANCH |INTEL_PT_TRACE_BEGIN ; + decoder->state.from_ip =0 ; + decoder->state.to_ip = decoder->ip; +return true; + } + }if (ret) { decoder->state.from_ip = decoder->ip; decoder->state.to_ip =0 ;
@@ -1480,7 +1494,16 @@ static int intel_pt_overflow(struct inteintel_pt_log ("ERROR: Buffer overflow\n" );intel_pt_clear_tx_flags (decoder); decoder->timestamp_insn_cnt =0 ; - decoder->pkt_state =INTEL_PT_STATE_ERR_RESYNC ; + decoder->pkt_state =INTEL_PT_STATE_IN_SYNC ; + decoder->state.from_ip = decoder->ip; + decoder->ip =0 ; + decoder->pge = false; + decoder->set_fup_tx_flags = false; + decoder->set_fup_ptw = false; + decoder->set_fup_mwait = false; + decoder->set_fup_pwre = false; + decoder->set_fup_exstop = false; + decoder->set_fup_bep = false; decoder->overflow = true;return -EOVERFLOW ; }
@@ -2083,6 +2106,7 @@ next:case INTEL_PT_TIP_PGE : { decoder->pge = true; + decoder->overflow = false;intel_pt_mtc_cyc_cnt_pge (decoder);if (decoder->packet.count ==0 ) { intel_pt_log_at("Skipping zero TIP.PGE",
@@ -2596,10 +2620,10 @@ static int intel_pt_sync_ip(struct intel decoder->set_fup_pwre = false; decoder->set_fup_exstop = false; decoder->set_fup_bep = false; + decoder->overflow = false;if (!decoder->branch_enable) { decoder->pkt_state =INTEL_PT_STATE_IN_SYNC ; - decoder->overflow = false; decoder->state.type =0 ;/* Do not have a sample */ return 0 ; }
@@ -2614,7 +2638,6 @@ static int intel_pt_sync_ip(struct intel decoder->pkt_state =INTEL_PT_STATE_RESAMPLE ; else decoder->pkt_state = INTEL_PT_STATE_IN_SYNC; - decoder->overflow = false; decoder->state.from_ip =0 ; decoder->state.to_ip = decoder->ip;
@@ -2823,7 +2846,8 @@ const struct intel_pt_state *intel_pt_deif (err) { decoder->state.err =intel_pt_ext_err (err); - decoder->state.from_ip = decoder->ip; +if (err != -EOVERFLOW ) + decoder->state.from_ip = decoder->ip;intel_pt_update_sample_time (decoder); decoder->sample_tot_cyc_cnt = decoder->tot_cyc_cnt; }else {
Greg Kroah-Hartman
maintainerPATCH 26/33 perf intel-pt: Fix next err value, walking trace
In reply to Greg Kroah-HartmanFrom: Adrian Hunter <[email protected]>
commit a32e6c5da599dbf49e60622a4dfb5b9b40ece029 upstream.
Code after label 'next:' in intel_pt_walk_trace() assumes 'err' is zero, but it may not be, if arrived at via a 'goto'. Ensure it is zero.
--- tools/perf/util/intel-pt-decoder/intel-pt-decoder.c | 1 + 1 file changed, 1 insertion(+)
tools/perf/util/intel-pt-decoder/intel-pt-decoder.c +1 -0
@@ -2068,6 +2068,7 @@ static int intel_pt_walk_trace(struct inif (err)return err; next: + err =0 ;if (decoder->cyc_threshold) {if (decoder->sample_cyc && last_packet_type !=INTEL_PT_CYC ) decoder->sample_cyc = false;
Greg Kroah-Hartman
maintainerPATCH 27/33 perf intel-pt: Fix missing instruction events with q option
In reply to Greg Kroah-HartmanFrom: Adrian Hunter <[email protected]>
commit a882cc94971093e146ffa1163b140ad956236754 upstream.
FUP packets contain IP information, which makes them also an 'instruction' event in 'hop' mode i.e. the itrace 'q' option. That wasn't happening, so restructure the logic so that FUP events are added along with appropriate 'instruction' and 'branch' events.
--- tools/perf/util/intel-pt-decoder/intel-pt-decoder.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-)
tools/perf/util/intel-pt-decoder/intel-pt-decoder.c +8 -3
@@ -1954,6 +1954,8 @@ static int intel_pt_scan_for_psb(struct/* Hop mode: Ignore TNT, do not walk code, but get ip from FUPs and TIPs */ static int intel_pt_hop_trace (struct intel_pt_decoder *decoder,bool *no_tip,int *err) { + *err =0 ; +/* Leap from PSB to PSB, getting ip from FUP within PSB+ */ if (decoder->leap && !decoder->in_psb && decoder->packet.type !=INTEL_PT_PSB ) { *err =intel_pt_scan_for_psb (decoder);
@@ -1988,18 +1990,21 @@ static int intel_pt_hop_trace(struct intif (!decoder->packet.count)return HOP_IGNORE ;intel_pt_set_ip (decoder); -if (intel_pt_fup_event (decoder)) -return HOP_RETURN ; +if (decoder->set_fup_mwait || decoder->set_fup_pwre) + *no_tip = true;if (!decoder->branch_enable || !decoder->pge) *no_tip = true;if (*no_tip) { decoder->state.type =INTEL_PT_INSTRUCTION ; decoder->state.from_ip = decoder->ip; decoder->state.to_ip =0 ; +intel_pt_fup_event (decoder);return HOP_RETURN ; } +intel_pt_fup_event (decoder); + decoder->state.type |=INTEL_PT_INSTRUCTION |INTEL_PT_BRANCH ; *err =intel_pt_walk_fup_tip (decoder); -if (!*err) +if (!*err && decoder->state.to_ip) decoder->pkt_state =INTEL_PT_STATE_RESAMPLE ;return HOP_RETURN ;
Greg Kroah-Hartman
maintainerPATCH 28/33 perf intel-pt: Fix error timestamp setting on the decoder error path
In reply to Greg Kroah-HartmanFrom: Adrian Hunter <[email protected]>
commit 6665b8e4836caa8023cbc7e53733acd234969c8c upstream.
An error timestamp shows the last known timestamp for the queue, but this is not updated on the error path. Fix by setting it.
--- tools/perf/util/intel-pt.c | 1 + 1 file changed, 1 insertion(+)
tools/perf/util/intel-pt.c +1 -0
@@ -2271,6 +2271,7 @@ static int intel_pt_run_decoder(struct i ptq->sync_switch = false;intel_pt_next_tid (pt, ptq); } + ptq->timestamp = state->est_timestamp;if (pt->synth_opts.errors) { err =intel_ptq_synth_error (ptq, state);if (err)
Greg Kroah-Hartman
maintainerPATCH 29/33 memblock: free_unused_memmap: use pageblock units instead of MAX_ORDER
In reply to Greg Kroah-HartmanFrom: Mike Rapoport <[email protected]>
[ Upstream commit e2a86800d58639b3acde7eaeb9eb393dca066e08 ]
The code that frees unused memory map uses rounds start and end of the holes that are freed to MAX_ORDER_NR_PAGES to preserve continuity of the memory map for MAX_ORDER regions.
Lots of core memory management functionality relies on homogeneity of the memory map within each pageblock which size may differ from MAX_ORDER in certain configurations.
Although currently, for the architectures that use free_unused_memmap(), pageblock_order and MAX_ORDER are equivalent, it is cleaner to have common notation thought mm code.
Replace MAX_ORDER_NR_PAGES with pageblock_nr_pages and update the comments to make it more clear why the alignment to pageblock boundaries is required.
--- arch/arm/mm/init.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-)
arch/arm/mm/init.c +8 -8
@@ -315,11 +315,11 @@ static void __init free_unused_memmap(vo ALIGN(prev_end, PAGES_PER_SECTION));#else /* -* Align down here since the VM subsystem insists that the -* memmap entries are valid from the bank start aligned to -* MAX_ORDER_NR_PAGES. +* Align down here since many operations in VM subsystem +* presume that there are no holes in the memory map inside +* a pageblock */ - start =round_down (start,MAX_ORDER_NR_PAGES ); + start =round_down (start, pageblock_nr_pages);#endif /* * If we had a previous bank, and there is a space
@@ -329,11 +329,11 @@ static void __init free_unused_memmap(vofree_memmap (prev_end, start);/* -* Align up here since the VM subsystem insists that the -* memmap entries are valid from the bank end aligned to -* MAX_ORDER_NR_PAGES. +* Align up here since many operations in VM subsystem +* presume that there are no holes in the memory map inside +* a pageblock */ - prev_end =ALIGN (end,MAX_ORDER_NR_PAGES ); + prev_end =ALIGN (end, pageblock_nr_pages); }#ifdef CONFIG_SPARSEMEM
Greg Kroah-Hartman
maintainerPATCH 30/33 memblock: align freed memory map on pageblock boundaries with SPARSEMEM
In reply to Greg Kroah-HartmanFrom: Mike Rapoport <[email protected]>
[ Upstream commit f921f53e089a12a192808ac4319f28727b35dc0f ]
When CONFIG_SPARSEMEM=y the ranges of the memory map that are freed are not aligned to the pageblock boundaries which breaks assumptions about homogeneity of the memory map throughout core mm code.
Make sure that the freed memory map is always aligned on pageblock boundaries regardless of the memory model selection.
--- arch/arm/mm/init.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-)
arch/arm/mm/init.c +5 -3
@@ -313,14 +313,14 @@ static void __init free_unused_memmap(vo*/ start =min (start,ALIGN (prev_end,PAGES_PER_SECTION )); -#else +#endif /* * Align down here since many operations in VM subsystem * presume that there are no holes in the memory map inside * a pageblock */ start =round_down (start, pageblock_nr_pages); -#endif +/* * If we had a previous bank, and there is a space * between the current bank and the previous, free it.
@@ -337,9 +337,11 @@ static void __init free_unused_memmap(vo }#ifdef CONFIG_SPARSEMEM -if (!IS_ALIGNED (prev_end,PAGES_PER_SECTION )) +if (!IS_ALIGNED (prev_end,PAGES_PER_SECTION )) { + prev_end =ALIGN (end, pageblock_nr_pages);free_memmap (prev_end,ALIGN (prev_end,PAGES_PER_SECTION )); + }#endif }
Greg Kroah-Hartman
maintainerPATCH 31/33 memblock: ensure there is no overflow in memblock_overlaps_region()
In reply to Greg Kroah-HartmanFrom: Mike Rapoport <[email protected]>
[ Upstream commit 023accf5cdc1e504a9b04187ec23ff156fe53d90 ]
There maybe an overflow in memblock_overlaps_region() if it is called with base and size such that
base + size > PHYS_ADDR_MAX
Make sure that memblock_overlaps_region() caps the size to prevent such overflow and remove now duplicated call to memblock_cap_size() from memblock_is_region_reserved().
--- mm/memblock.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
mm/memblock.c +2 -1
@@ -182,6 +182,8 @@ bool __init_memblock memblock_overlaps_r {unsigned long i; +memblock_cap_size (base, &size); +for (i =0 ; i < type->cnt; i++)if (memblock_addrs_overlap (base, size, type->regions[i].base, type->regions[i].size))
@@ -1792,7 +1794,6 @@ bool __init_memblock memblock_is_region_*/ bool __init_memblock memblock_is_region_reserved(phys_addr_t base, phys_addr_t size) { -memblock_cap_size (base, &size);return memblock_overlaps_region (&memblock.reserved, base, size); }
Greg Kroah-Hartman
maintainerPATCH 32/33 arm: extend pfn_valid to take into account freed memory map alignment
In reply to Greg Kroah-HartmanFrom: Mike Rapoport <[email protected]>
[ Upstream commit a4d5613c4dc6d413e0733e37db9d116a2a36b9f3 ]
When unused memory map is freed the preserved part of the memory map is extended to match pageblock boundaries because lots of core mm functionality relies on homogeneity of the memory map within pageblock boundaries.
Since pfn_valid() is used to check whether there is a valid memory map entry for a PFN, make it return true also for PFNs that have memory map entries even if there is no actual memory populated there.
--- arch/arm/mm/init.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-)
arch/arm/mm/init.c +12 -1
@@ -125,11 +125,22 @@ static void __init zone_sizes_init(unsigint pfn_valid (unsigned long pfn) {phys_addr_t addr =__pfn_to_phys (pfn); +unsigned long pageblock_size =PAGE_SIZE * pageblock_nr_pages;if (__phys_to_pfn (addr) != pfn)return 0 ; -return memblock_is_map_memory (addr); +/* +* If address less than pageblock_size bytes away from a present +* memory chunk there still will be a memory map entry for it +* because we round freed memory map to the pageblock boundaries. +*/ +if (memblock_overlaps_region (&memblock.memory, +ALIGN_DOWN (addr, pageblock_size), + pageblock_size)) +return 1 ; + +return 0 ; }EXPORT_SYMBOL (pfn_valid);#endif
Greg Kroah-Hartman
maintainerPATCH 33/33 arm: ioremap: dont abuse pfn_valid() to check if pfn is in RAM
In reply to Greg Kroah-HartmanFrom: Mike Rapoport <[email protected]>
commit 024591f9a6e0164ec23301784d1e6d8f6cacbe59 upstream. [ Upstream commit 024591f9a6e0164ec23301784d1e6d8f6cacbe59 ]
The semantics of pfn_valid() is to check presence of the memory map for a PFN and not whether a PFN is in RAM. The memory map may be present for a hole in the physical memory and if such hole corresponds to an MMIO range, __arm_ioremap_pfn_caller() will produce a WARN() and fail:
[ 2.863406] WARNING: CPU: 0 PID: 1 at arch/arm/mm/ioremap.c:287 __arm_ioremap_pfn_caller+0xf0/0x1dc [ 2.864812] CPU: 0 PID: 1 Comm: swapper/0 Not tainted 5.13.0-09882-ga180bd1d7e16 #1 [ 2.865263] Hardware name: Generic DT based system [ 2.865711] Backtrace: [ 2.866063] [<80b07e58>] (dump_backtrace) from [<80b080ac>] (show_stack+0x20/0x24) [ 2.866633] r7:00000009 r6:0000011f r5:60000153 r4:80ddd1c0 [ 2.866922] [<80b0808c>] (show_stack) from [<80b18df0>] (dump_stack_lvl+0x58/0x74) [ 2.867117] [<80b18d98>] (dump_stack_lvl) from [<80b18e20>] (dump_stack+0x14/0x1c) [ 2.867309] r5:80118cac r4:80dc6774 [ 2.867404] [<80b18e0c>] (dump_stack) from [<80122fcc>] (__warn+0xe4/0x150) [ 2.867583] [<80122ee8>] (__warn) from [<80b08850>] (warn_slowpath_fmt+0x88/0xc0) [ 2.867774] r7:0000011f r6:80dc6774 r5:00000000 r4:814c4000 [ 2.867917] [<80b087cc>] (warn_slowpath_fmt) from [<80118cac>] (__arm_ioremap_pfn_caller+0xf0/0x1dc) [ 2.868158] r9:00000001 r8:9ef00000 r7:80e8b0d4 r6:0009ef00 r5:00000000 r4:00100000 [ 2.868346] [<80118bbc>] (__arm_ioremap_pfn_caller) from [<80118df8>] (__arm_ioremap_caller+0x60/0x68) [ 2.868581] r9:9ef00000 r8:821b6dc0 r7:00100000 r6:00000000 r5:815d1010 r4:80118d98 [ 2.868761] [<80118d98>] (__arm_ioremap_caller) from [<80118fcc>] (ioremap+0x28/0x30) [ 2.868958] [<80118fa4>] (ioremap) from [<8062871c>] (__devm_ioremap_resource+0x154/0x1c8) [ 2.869169] r5:815d1010 r4:814c5d2c [ 2.869263] [<806285c8>] (__devm_ioremap_resource) from [<8062899c>] (devm_ioremap_resource+0x14/0x18) [ 2.869495] r9:9e9f57a0 r8:814c4000 r7:815d1000 r6:815d1010 r5:8177c078 r4:815cf400 [ 2.869676] [<80628988>] (devm_ioremap_resource) from [<8091c6e4>] (fsi_master_acf_probe+0x1a8/0x5d8) [ 2.869909] [<8091c53c>] (fsi_master_acf_probe) from [<80723dbc>] (platform_probe+0x68/0xc8) [ 2.870124] r9:80e9dadc r8:00000000 r7:815d1010 r6:810c1000 r5:815d1010 r4:00000000 [ 2.870306] [<80723d54>] (platform_probe) from [<80721208>] (really_probe+0x1cc/0x470) [ 2.870512] r7:815d1010 r6:810c1000 r5:00000000 r4:815d1010 [ 2.870651] [<8072103c>] (really_probe) from [<807215cc>] (__driver_probe_device+0x120/0x1fc) [ 2.870872] r7:815d1010 r6:810c1000 r5:810c1000 r4:815d1010 [ 2.871013] [<807214ac>] (__driver_probe_device) from [<807216e8>] (driver_probe_device+0x40/0xd8) [ 2.871244] r9:80e9dadc r8:00000000 r7:815d1010 r6:810c1000 r5:812feaa0 r4:812fe994 [ 2.871428] [<807216a8>] (driver_probe_device) from [<80721a58>] (__driver_attach+0xa8/0x1d4) [ 2.871647] r9:80e9dadc r8:00000000 r7:00000000 r6:810c1000 r5:815d1054 r4:815d1010 [ 2.871830] [<807219b0>] (__driver_attach) from [<8071ee8c>] (bus_for_each_dev+0x88/0xc8) [ 2.872040] r7:00000000 r6:814c4000 r5:807219b0 r4:810c1000 [ 2.872194] [<8071ee04>] (bus_for_each_dev) from [<80722208>] (driver_attach+0x28/0x30) [ 2.872418] r7:810a2aa0 r6:00000000 r5:821b6000 r4:810c1000 [ 2.872570] [<807221e0>] (driver_attach) from [<8071f80c>] (bus_add_driver+0x114/0x200) [ 2.872788] [<8071f6f8>] (bus_add_driver) from [<80722ec4>] (driver_register+0x98/0x128) [ 2.873011] r7:81011d0c r6:814c4000 r5:00000000 r4:810c1000 [ 2.873167] [<80722e2c>] (driver_register) from [<80725240>] (__platform_driver_register+0x2c/0x34) [ 2.873408] r5:814dcb80 r4:80f2a764 [ 2.873513] [<80725214>] (__platform_driver_register) from [<80f2a784>] (fsi_master_acf_init+0x20/0x28) [ 2.873766] [<80f2a764>] (fsi_master_acf_init) from [<80f014a8>] (do_one_initcall+0x108/0x290) [ 2.874007] [<80f013a0>] (do_one_initcall) from [<80f01840>] (kernel_init_freeable+0x1ac/0x230) [ 2.874248] r9:80e9dadc r8:80f3987c r7:80f3985c r6:00000007 r5:814dcb80 r4:80f627a4 [ 2.874456] [<80f01694>] (kernel_init_freeable) from [<80b19f44>] (kernel_init+0x20/0x138) [ 2.874691] r10:00000000 r9:00000000 r8:00000000 r7:00000000 r6:00000000 r5:80b19f24 [ 2.874894] r4:00000000 [ 2.874977] [<80b19f24>] (kernel_init) from [<80100170>] (ret_from_fork+0x14/0x24) [ 2.875231] Exception stack(0x814c5fb0 to 0x814c5ff8) [ 2.875535] 5fa0: 00000000 00000000 00000000 00000000 [ 2.875849] 5fc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 [ 2.876133] 5fe0: 00000000 00000000 00000000 00000000 00000013 00000000 [ 2.876363] r5:80b19f24 r4:00000000 [ 2.876683] ---[ end trace b2f74b8536829970 ]--- [ 2.876911] fsi-master-acf gpio-fsi: ioremap failed for resource [mem 0x9ef00000-0x9effffff] [ 2.877492] fsi-master-acf gpio-fsi: Error -12 mapping coldfire memory [ 2.877689] fsi-master-acf: probe of gpio-fsi failed with error -12
Use memblock_is_map_memory() instead of pfn_valid() to check if a PFN is in RAM or not.
--- arch/arm/mm/ioremap.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)
arch/arm/mm/ioremap.c +3 -1
@@ -27,6 +27,7 @@#include <linux/vmalloc.h> #include <linux/io.h> #include <linux/sizes.h> +#include <linux/memblock.h> #include <asm/cp15.h> #include <asm/cputype.h>
@@ -284,7 +285,8 @@ static void __iomem * __arm_ioremap_pfn_* Don't allow RAM to be mapped with mismatched attributes - this * causes problems with ARMv6+ */ -if (WARN_ON (pfn_valid (pfn) && mtype !=MT_MEMORY_RW )) +if (WARN_ON (memblock_is_map_memory (PFN_PHYS (pfn)) && + mtype !=MT_MEMORY_RW ))return NULL ; area =get_vm_area_caller (size,VM_IOREMAP , caller);
5.10.85 breaks CIP testing Re: [PATCH 5.10 00/33] 5.10.86-rc1 review
In reply to Greg Kroah-HartmanHi!
Quoted 4 lines
This is the start of the stable review cycle for the 5.10.86 release. There are 33 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.
I'm getting the gmp.h failures :-(.
https://gitlab.com/cip-project/cip-testing/linux-stable-rc-ci/-/pipelines/430434332
I believe we should not change build requirements in the middle of stable series.
To our testing team: 5.10.85 introduced new requirements for the build. gmp.h is now required in our configs, and maybe something else.
Easiest fix might be to add
# CONFIG_GCC_PLUGINS is not set
to our configs. Alternatively I know which patch to revert.
But I believe -stable should be the one doing the revert, as the patch does not fix serious bug and introduces problem. Faster compile is nice but let mainline have those kind of changes.
Best regards,
Pavel
Signature · 2 lines
DENX Software Engineering GmbH, Managing Director: Wolfgang Denk HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Greg Kroah-Hartman
maintainerRe: 5.10.85 breaks CIP testing Re: [PATCH 5.10 00/33] 5.10.86-rc1 review
Quoted 19 lines · Pavel Machek
Hi!
Quoted 4 lines
This is the start of the stable review cycle for the 5.10.86 release. There are 33 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.
I'm getting the
gmp.hfailures :-(.https://gitlab.com/cip-project/cip-testing/linux-stable-rc-ci/-/pipelines/430434332
I believe we should not change build requirements in the middle of stable series.
To our testing team: 5.10.85 introduced new requirements for the build.
gmp.his now required in our configs, and maybe something else.Easiest fix might be to add
Quoted 7 lines
#
CONFIG_GCC_PLUGINSis not setto our configs. Alternatively I know which patch to revert.
But I believe -stable should be the one doing the revert, as the patch does not fix serious bug and introduces problem. Faster compile is nice but let mainline have those kind of changes.
But that commit is needed to get gcc11 plugins to work with the 5.10.y kernel tree. So either we "break" it for old and obsolete gcc versions (i.e. gcc7), or newer supported versions break.
We are not in the business of keeping older versions of gcc always working, right?
thanks,
greg k-h
RE: 5.10.85 breaks CIP testing Re: [PATCH 5.10 00/33] 5.10.86-rc1 review
Hello,
Quoted 14 lines
From: Greg Kroah-Hartman <[email protected]>
Sent: 15 December 2021 18:40Quoted 10 lines · Pavel Machek
Hi!
Quoted 4 lines
This is the start of the stable review cycle for the 5.10.86 release. There are 33 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.
I'm getting the
gmp.hfailures :-(.
Quoted 14 lines
https://jpn01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgitlab
.com%2Fcip-project%2Fcip-testing%2Flinux-stable-rc-ci%2F- %2Fpipelines%2F430434332&data=04%7C01%7Cchris.paterson2%40ren esas.com%7Cef488aaeb0b84b91a25a08d9bffa5dd5%7C53d82571da1947e49c b4625a166a4a2a%7C0%7C0%7C637751904307960001%7CUnknown%7CTWFp bGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVC I6Mn0%3D%7C3000&sdata=d4fq1iITMmiW79nbbG0Tf4srDwikrnVaPW% 2BH%2FITD9sY%3D&reserved=0Quoted 6 lines
I believe we should not change build requirements in the middle of stable series.
To our testing team: 5.10.85 introduced new requirements for the build.
gmp.his now required in our configs, and maybe something else.
Hi Pavel, sorry for missing this email before now.
I can look into supporting this, depending on the answers to the comments below...
Quoted 7 lines
Quoted 7 lines
Easiest fix might be to add
#
CONFIG_GCC_PLUGINSis not setto our configs. Alternatively I know which patch to revert.
Quoted 7 lines
Quoted 3 lines
But I believe -stable should be the one doing the revert, as the patch does not fix serious bug and introduces problem. Faster compile is nice but let mainline have those kind of changes.
But that commit is needed to get gcc11 plugins to work with the 5.10.y kernel tree. So either we "break" it for old and obsolete gcc versions (i.e. gcc7), or newer supported versions break.
Well this leads us to an interesting point.
At the moment we use GCC v8.1.0 for building all of our kernel trees (cip & stable).
What does CIP want to do mid/long term? Keep upgrading the version we use? Or try and support a specific version of GCC for 10 years? If the former, when do we want to upgrade?
If the latter, which version?
Kind regards, Chris
Quoted 7 lines
We are not in the business of keeping older versions of gcc always working, right?
thanks,
greg k-h
Re: 5.10.85 breaks CIP testing Re: [PATCH 5.10 00/33] 5.10.86-rc1 review
Hi!
Quoted 8 lines
Quoted 5 lines
Quoted 5 lines
I believe we should not change build requirements in the middle of stable series.
To our testing team: 5.10.85 introduced new requirements for the build.
gmp.his now required in our configs, and maybe something else.Hi Pavel, sorry for missing this email before now.
I can look into supporting this, depending on the answers to the comments below...
Thank you.
Quoted 14 lines
Quoted 6 lines
Quoted 6 lines
Easiest fix might be to add
#
CONFIG_GCC_PLUGINSis not setto our configs. Alternatively I know which patch to revert.
Quoted 7 lines
Quoted 3 lines
But I believe -stable should be the one doing the revert, as the patch does not fix serious bug and introduces problem. Faster compile is nice but let mainline have those kind of changes.
But that commit is needed to get gcc11 plugins to work with the 5.10.y kernel tree. So either we "break" it for old and obsolete gcc versions (i.e. gcc7), or newer supported versions break.
Quoted 6 lines
Well this leads us to an interesting point.
At the moment we use GCC v8.1.0 for building all of our kernel trees (cip & stable).
What does CIP want to do mid/long term? Keep upgrading the version we use? Or try and support a specific version of GCC for 10 years? If the former, when do we want to upgrade?
If the latter, which version?
We should do what our users are likely to do... they want stable kernel, and will not update toolchain in middle of product maintainance. [Updating toolchain when starting new product with given -cip kernel is more likely].
I believe that means we should stick to specific version, but I'm not sure what version it is. We support Debian distro, likely gcc version from that distro would be a good option? Perhaps we should ask on TSC meeting tommorow?
5.10 kernel was released in Dec 2020. At that time, gcc 8 and 9 were maintained, and gcc 10 was new (https://gcc.gnu.org/releases.html).
To get some results for -stable testing, easiest options might be to disable gcc plugin support in Kconfig.
Best regards,
Pavel
Signature · 2 lines
DENX Software Engineering GmbH, Managing Director: Wolfgang Denk HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Re: 5.10.85 breaks CIP testing Re: [PATCH 5.10 00/33] 5.10.86-rc1 review
Quoted 44 lines · Pavel Machek
Hi!
Quoted 8 lines
Quoted 5 lines
Quoted 5 lines
I believe we should not change build requirements in the middle of stable series.
To our testing team: 5.10.85 introduced new requirements for the build.
gmp.his now required in our configs, and maybe something else.Hi Pavel, sorry for missing this email before now.
I can look into supporting this, depending on the answers to the comments below...Thank you.
Quoted 14 lines
Quoted 6 lines
Quoted 6 lines
Easiest fix might be to add
#
CONFIG_GCC_PLUGINSis not setto our configs. Alternatively I know which patch to revert.
Quoted 7 lines
Quoted 3 lines
But I believe -stable should be the one doing the revert, as the patch does not fix serious bug and introduces problem. Faster compile is nice but let mainline have those kind of changes.
But that commit is needed to get gcc11 plugins to work with the 5.10.y kernel tree. So either we "break" it for old and obsolete gcc versions (i.e. gcc7), or newer supported versions break.
Quoted 6 lines
Well this leads us to an interesting point.
At the moment we use GCC v8.1.0 for building all of our kernel trees (cip & stable).
What does CIP want to do mid/long term? Keep upgrading the version we use? Or try and support a specific version of GCC for 10 years? If the former, when do we want to upgrade?
If the latter, which version?We should do what our users are likely to do... they want stable kernel, and will not update toolchain in middle of product maintainance. [Updating toolchain when starting new product with given -cip kernel is more likely].
I believe that means we should stick to specific version, but I'm not sure what version it is. We support Debian distro, likely gcc version from that distro would be a good option? Perhaps we should ask on TSC meeting tommorow?
Quoted 9 lines
5.10 kernel was released in Dec 2020. At that time, gcc 8 and 9 were maintained, and gcc 10 was new (https://gcc.gnu.org/releases.html).
To get some results for -stable testing, easiest options might be to disable gcc plugin support in
Kconfig.Best regards,
Pavel
The natural pairing would be "buster/kernel 4.19/gcc-8" and "bullseye/kernel 5.10/gcc-10", indeed.
I'm definitely not able to attend the TSC call tomorrow. If you want to discuss this topic, someone would have to pick up the kernel WG representation.
Jan
Re: [cip-dev] 5.10.85 breaks CIP testing Re: [PATCH 5.10 00/33] 5.10.86-rc1 review
In reply to Pavel MachekHi,
Quoted 9 lines
We should do what our users are likely to do... they want stable kernel, and will not update toolchain in middle of product maintainance. [Updating toolchain when starting new product with given -cip kernel is more likely].
I believe that means we should stick to specific version, but I'm not sure what version it is. We support Debian distro, likely gcc version from that distro would be a good option? Perhaps we should ask on TSC meeting tommorow?
Yes, we recommend using GCC with the rootfs environment. And weare using the same container at compile time.
Quoted 6 lines
5.10 kernel was released in Dec 2020. At that time, gcc 8 and 9 were maintained, and gcc 10 was new (https://gcc.gnu.org/releases.html).
To get some results for -stable testing, easiest options might be to disable gcc plugin support in
Kconfig.
+1.
Also, I think that this will not be necessary by preparing a build container that matches the kernel.
Best regards,
Nobuhiro
________________________________________
差出人: [email protected] <[email protected]> が Pavel Machek <[email protected]> の代理で送信 送信日時: 2021年12月20日 18:58
宛先: Chris Paterson
CC: Pavel Machek; [email protected]
件名: Re: [cip-dev] 5.10.85 breaks CIP testing Re: [PATCH 5.10 00/33] 5.10.86-rc1 review
Hi!
Quoted 8 lines
Quoted 5 lines
Quoted 5 lines
I believe we should not change build requirements in the middle of stable series.
To our testing team: 5.10.85 introduced new requirements for the build.
gmp.his now required in our configs, and maybe something else.Hi Pavel, sorry for missing this email before now.
I can look into supporting this, depending on the answers to the comments below...
Thank you.
Quoted 14 lines
Quoted 6 lines
Quoted 6 lines
Easiest fix might be to add
#
CONFIG_GCC_PLUGINSis not setto our configs. Alternatively I know which patch to revert.
Quoted 7 lines
Quoted 3 lines
But I believe -stable should be the one doing the revert, as the patch does not fix serious bug and introduces problem. Faster compile is nice but let mainline have those kind of changes.
But that commit is needed to get gcc11 plugins to work with the 5.10.y kernel tree. So either we "break" it for old and obsolete gcc versions (i.e. gcc7), or newer supported versions break.
Quoted 6 lines
Well this leads us to an interesting point.
At the moment we use GCC v8.1.0 for building all of our kernel trees (cip & stable).
What does CIP want to do mid/long term? Keep upgrading the version we use? Or try and support a specific version of GCC for 10 years? If the former, when do we want to upgrade?
If the latter, which version?
We should do what our users are likely to do... they want stable kernel, and will not update toolchain in middle of product maintainance. [Updating toolchain when starting new product with given -cip kernel is more likely].
I believe that means we should stick to specific version, but I'm not sure what version it is. We support Debian distro, likely gcc version from that distro would be a good option? Perhaps we should ask on TSC meeting tommorow?
5.10 kernel was released in Dec 2020. At that time, gcc 8 and 9 were maintained, and gcc 10 was new (https://gcc.gnu.org/releases.html).
To get some results for -stable testing, easiest options might be to disable gcc plugin support in Kconfig.
Best regards,
Pavel
--
DENX Software Engineering GmbH, Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
A message that is not in the archive (sent off-list or not yet received): [email protected]
RE: [cip-dev] 5.10.85 breaks CIP testing Re: [PATCH 5.10 00/33] 5.10.86-rc1 review
Quoted 60 lines
From: [email protected] <[email protected]> On Behalf Of Chris Paterson via lists.cip-project.org
Sent: 20 December 2021 07:17Hello,
Quoted 15 lines
From: Greg Kroah-Hartman <[email protected]>
Sent: 15 December 2021 18:40Quoted 10 lines · Pavel Machek
Hi!
Quoted 4 lines
This is the start of the stable review cycle for the 5.10.86 release. There are 33 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.
I'm getting the
gmp.hfailures :-(.https://jpn01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgitlab
Quoted 2 lines
.com%2Fcip-project%2Fcip-testing%2Flinux-stable-rc-ci%2F-
%2Fpipelines%2F430434332&data=04%7C01%7Cchris.paterson2%40ren
Quoted 1 line
esas.com%7Cef488aaeb0b84b91a25a08d9bffa5dd5%7C53d82571da1947e49c
Quoted 1 line
b4625a166a4a2a%7C0%7C0%7C637751904307960001%7CUnknown%7CTWFp
Quoted 1 line
bGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVC
Quoted 1 line
I6Mn0%3D%7C3000&sdata=d4fq1iITMmiW79nbbG0Tf4srDwikrnVaPW%
Quoted 7 lines
2BH%2FITD9sY%3D&reserved=0
Quoted 6 lines
I believe we should not change build requirements in the middle of stable series.
To our testing team: 5.10.85 introduced new requirements for the build.
gmp.his now required in our configs, and maybe something else.Hi Pavel, sorry for missing this email before now.
I can look into supporting this, depending on the answers to the comments below...Quoted 7 lines
Quoted 7 lines
Easiest fix might be to add
#
CONFIG_GCC_PLUGINSis not setto our configs. Alternatively I know which patch to revert.
Quoted 7 lines
Quoted 3 lines
But I believe -stable should be the one doing the revert, as the patch does not fix serious bug and introduces problem. Faster compile is nice but let mainline have those kind of changes.
But that commit is needed to get gcc11 plugins to work with the 5.10.y kernel tree. So either we "break" it for old and obsolete gcc versions (i.e. gcc7), or newer supported versions break.
Quoted 7 lines
Well this leads us to an interesting point.
At the moment we use GCC v8.1.0 for building all of our kernel trees (cip & stable).
What does CIP want to do mid/long term? Keep upgrading the version we use? Or try and support a specific version of GCC for 10 years? If the former, when do we want to upgrade?
If the latter, which version?
Note that I've done a quick build test [0] with GCC v11.1.0 and 5.10.y-cip seems to build okay. If anyone wants to do something similar in their tests, edit your .gitlab-ci.yml as in [1].
[0] https://gitlab.com/cip-project/cip-kernel/linux-cip/-/pipelines/433007310
[1] https://gitlab.com/cip-project/cip-kernel/linux-cip/-/commit/3185529010dfa5cd4ebe80d55b5c1c1ed23da4ce
Kind regards, Chris
Quoted 10 lines
Kind regards, Chris
Quoted 7 lines
We are not in the business of keeping older versions of gcc always working, right?
thanks,
greg k-h
Quoted 9 lines · Greg Kroah-Hartman
This is the start of the stable review cycle for the 5.10.86 release. There are 33 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 Fri, 17 Dec 2021 17:20:14 +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.10.86-rc1.gzor in the git tree and branch at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.gitlinux-5.10.y
and the diffstat can be found below.thanks,
greg k-h
All tests passing for Tegra ...
Test results for stable-v5.10:
10 builds: 10 pass, 0 fail
28 boots: 28 pass, 0 fail
75 tests: 75 pass, 0 failLinux version: 5.10.86-rc1-gfb04daaadf03
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 9 lines · Greg Kroah-Hartman
This is the start of the stable review cycle for the 5.10.86 release. There are 33 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 Fri, 17 Dec 2021 17:20:14 +0000. Anything received after that time might be too late.
The whole patch series can be found in one patch at:
Quoted 9 lines
https://www.kernel.org/pub/linux/kernel/v5.x/stable-review/patch-5.10.86-rc1.gzor in the git tree and branch at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.gitlinux-5.10.y
and the diffstat can be found below.thanks,
greg k-h
Compiled and booted on my test system. No dmesg regressions.
thanks,
-- Shuah
Quoted 9 lines · Greg Kroah-Hartman
This is the start of the stable review cycle for the 5.10.86 release. There are 33 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 Fri, 17 Dec 2021 17:20:14 +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.10.86-rc1.gzor in the git tree and branch at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.gitlinux-5.10.y
and the diffstat can be found below.thanks,
greg k-h
On ARCH_BRCMSTB using 32-bit and 64-bit ARM kernels:
Signature · 1 line
Florian
Quoted 9 lines · Greg Kroah-Hartman
This is the start of the stable review cycle for the 5.10.86 release. There are 33 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 Fri, 17 Dec 2021 17:20:14 +0000. Anything received after that time might be too late.
The whole patch series can be found in one patch at:
Quoted 9 lines
https://www.kernel.org/pub/linux/kernel/v5.x/stable-review/patch-5.10.86-rc1.gzor in the git tree and branch at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.gitlinux-5.10.y
and the diffstat can be found below.thanks,
greg k-h
5.10.86-rc1 Successfully Compiled and booted on my Raspberry PI 4b (8g) (bcm2711)
Quoted 9 lines · Greg Kroah-Hartman
This is the start of the stable review cycle for the 5.10.86 release. There are 33 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 Fri, 17 Dec 2021 17:20:14 +0000. Anything received after that time might be too late.
The whole patch series can be found in one patch at:
Quoted 9 lines
https://www.kernel.org/pub/linux/kernel/v5.x/stable-review/patch-5.10.86-rc1.gzor in the git tree and branch at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.gitlinux-5.10.y
and the diffstat can be found below.thanks,
greg k-h
Tested on arm64 and x86 for 5.10.86-rc1,
Kernel repo:
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git
Branch: linux-5.10.y
Version: 5.10.86-rc1
Commit: fb04daaadf03a67265eaa54966f45e30b83f1049
Compiler: gcc version 7.3.0 (GCC)
arm64:
--------------------------------------------------------------------
Testcase Result Summary:
total: 9018
passed: 9018
failed: 0
timeout: 0
--------------------------------------------------------------------
x86:
--------------------------------------------------------------------
Testcase Result Summary:
total: 9018
passed: 9018
failed: 0
timeout: 0
--------------------------------------------------------------------
Quoted 10 lines · Greg Kroah-Hartman
This is the start of the stable review cycle for the 5.10.86 release. There are 33 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 Fri, 17 Dec 2021 17:20:14 +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.10.86-rc1.gzor in the git tree and branch at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.gitlinux-5.10.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.10.86-rc1
* git: https://gitlab.com/Linaro/lkft/mirrors/stable/linux-stable-rc
* git branch: linux-5.10.y
* git commit: fb04daaadf03a67265eaa54966f45e30b83f1049
* git describe: v5.10.85-34-gfb04daaadf03
* test details:
https://qa-reports.linaro.org/lkft/linux-stable-rc-linux-5.10.y/build/v5.10.85-34-gfb04daaadf03
## No Test Regressions (compared to v5.10.84-128-g24961377099e)
## No Test Fixes (compared to v5.10.84-128-g24961377099e)
## Test result summary
total: 91173, pass: 78137, fail: 562, skip: 11764, xfail: 710
## Build Summary
* arc: 10 total, 10 passed, 0 failed
* arm: 259 total, 255 passed, 4 failed
* arm64: 37 total, 37 passed, 0 failed
* dragonboard-410c: 1 total, 1 passed, 0 failed
* hi6220-hikey: 1 total, 1 passed, 0 failed
* i386: 36 total, 36 passed, 0 failed
* juno-r2: 1 total, 1 passed, 0 failed
* mips: 34 total, 30 passed, 4 failed
* parisc: 12 total, 12 passed, 0 failed
* powerpc: 52 total, 46 passed, 6 failed
* riscv: 24 total, 16 passed, 8 failed
* s390: 18 total, 18 passed, 0 failed
* sh: 24 total, 24 passed, 0 failed
* sparc: 12 total, 12 passed, 0 failed
* x15: 1 total, 1 passed, 0 failed
* x86: 2 total, 1 passed, 1 failed
* x86_64: 37 total, 37 passed, 0 failed
## Test suites summary
* fwts
* kselftest-android
* kselftest-arm64
* kselftest-arm64/arm64.btitest.bti_c_func
* kselftest-arm64/arm64.btitest.bti_j_func
* kselftest-arm64/arm64.btitest.bti_jc_func
* kselftest-arm64/arm64.btitest.bti_none_func
* kselftest-arm64/arm64.btitest.nohint_func
* kselftest-arm64/arm64.btitest.paciasp_func
* kselftest-arm64/arm64.nobtitest.bti_c_func
* kselftest-arm64/arm64.nobtitest.bti_j_func
* kselftest-arm64/arm64.nobtitest.bti_jc_func
* kselftest-arm64/arm64.nobtitest.bti_none_func
* kselftest-arm64/arm64.nobtitest.nohint_func
* kselftest-arm64/arm64.nobtitest.paciasp_func
* kselftest-bpf
* kselftest-breakpoints
* kselftest-capabilities
* kselftest-cgroup
* kselftest-clone3
* kselftest-core
* kselftest-cpu-hotplug
* kselftest-cpufreq
* kselftest-drivers
* kselftest-efivarfs
* kselftest-filesystems
* kselftest-firmware
* kselftest-fpu
* 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-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
* libgpiod
* libhugetlbfs
* linux-log-parser
* ltp-cap_bounds-tests
* ltp-commands-tests
* ltp-containers-tests
* ltp-controllers-tests
* ltp-cpuhotplug-tests
* ltp-crypto-tests
* ltp-cve-tests
* ltp-dio-tests
* ltp-fcntl-locktests-tests
* ltp-filecaps-tests
* ltp-fs-tests
* ltp-fs_bind-tests
* ltp-fs_perms_simple-tests
* ltp-fsx-tests
* ltp-hugetlb-tests
* ltp-io-tests
* ltp-ipc-tests
* ltp-math-tests
* ltp-mm-tests
* ltp-nptl-tests
* ltp-open-posix-tests
* ltp-pty-tests
* ltp-sched-tests
* ltp-securebits-tests
* ltp-syscalls-tests
* ltp-tracing-tests
* network-basic-tests
* packetdrill
* perf
* rcutorture
* ssuite
* v4l2-compliance
--
Linaro LKFT
https://lkft.linaro.org
Quoted 8 lines · Greg Kroah-Hartman
This is the start of the stable review cycle for the 5.10.86 release. There are 33 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 Fri, 17 Dec 2021 17:20:14 +0000. Anything received after that time might be too late.
Build results:
total: 159 pass: 159 fail: 0 Qemu test results: total: 472 pass: 472 fail: 0
Guenter