Linux 5.15.91
Greg Kroah-Hartman
maintainerI'm announcing the release of the 5.15.91 kernel.
All users of the 5.15 kernel series must upgrade.
The updated 5.15.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-5.15.y
and can be browsed at the normal kernel.org git web browser:
https://git.kernel.org/?p=linux/kernel/git/stable/linux-stable.git;a=summary
thanks,
greg k-h
------------
Documentation/ABI/testing/sysfs-kernel-oops_count | 6 Documentation/ABI/testing/sysfs-kernel-warn_count | 6 Documentation/admin-guide/sysctl/kernel.rst | 19 Makefile | 5 arch/alpha/kernel/traps.c | 6 arch/alpha/mm/fault.c | 2 arch/arm/boot/dts/imx6qdl-gw560x.dtsi | 1 arch/arm/boot/dts/imx6ul-pico-dwarf.dts | 2 arch/arm/boot/dts/imx7d-pico-dwarf.dts | 4 arch/arm/boot/dts/imx7d-pico-nymph.dts | 4 arch/arm/boot/dts/sam9x60.dtsi | 2 arch/arm/kernel/traps.c | 2 arch/arm/mach-imx/cpu-imx25.c | 1 arch/arm/mach-imx/cpu-imx27.c | 1 arch/arm/mach-imx/cpu-imx31.c | 1 arch/arm/mach-imx/cpu-imx35.c | 1 arch/arm/mach-imx/cpu-imx5.c | 1 arch/arm/mm/fault.c | 2 arch/arm/mm/nommu.c | 2 arch/arm64/boot/dts/freescale/imx8mm-beacon-baseboard.dtsi | 4 arch/arm64/boot/dts/freescale/imx8mm-venice-gw7901.dts | 1 arch/arm64/boot/dts/freescale/imx8mp-phycore-som.dtsi | 10 arch/arm64/boot/dts/qcom/msm8992-xiaomi-libra.dts | 90 ++ arch/arm64/boot/dts/qcom/msm8992.dtsi | 4 arch/arm64/kernel/traps.c | 2 arch/arm64/kvm/vgic/vgic-v3.c | 25 arch/arm64/kvm/vgic/vgic-v4.c | 8 arch/arm64/kvm/vgic/vgic.h | 1 arch/arm64/mm/fault.c | 2 arch/csky/abiv1/alignment.c | 2 arch/csky/kernel/traps.c | 2 arch/csky/mm/fault.c | 2 arch/h8300/kernel/traps.c | 3 arch/h8300/mm/fault.c | 2 arch/hexagon/kernel/traps.c | 2 arch/ia64/Kconfig | 2 arch/ia64/kernel/mca_drv.c | 2 arch/ia64/kernel/traps.c | 2 arch/ia64/mm/fault.c | 2 arch/m68k/kernel/traps.c | 2 arch/m68k/mm/fault.c | 2 arch/microblaze/kernel/exceptions.c | 4 arch/mips/kernel/traps.c | 2 arch/nds32/kernel/fpu.c | 2 arch/nds32/kernel/traps.c | 8 arch/nios2/kernel/traps.c | 4 arch/openrisc/kernel/traps.c | 2 arch/parisc/kernel/traps.c | 2 arch/powerpc/kernel/traps.c | 8 arch/riscv/kernel/probes/simulate-insn.c | 4 arch/riscv/kernel/traps.c | 2 arch/riscv/mm/fault.c | 2 arch/s390/include/asm/debug.h | 6 arch/s390/kernel/dumpstack.c | 2 arch/s390/kernel/nmi.c | 2 arch/s390/kernel/vmlinux.lds.S | 2 arch/s390/kvm/interrupt.c | 12 arch/sh/kernel/traps.c | 2 arch/sparc/kernel/traps_32.c | 4 arch/sparc/kernel/traps_64.c | 4 arch/x86/entry/entry_32.S | 6 arch/x86/entry/entry_64.S | 6 arch/x86/events/amd/core.c | 2 arch/x86/events/intel/uncore.c | 1 arch/x86/events/msr.c | 1 arch/x86/kernel/acpi/cstate.c | 15 arch/x86/kernel/dumpstack.c | 4 arch/x86/kernel/i8259.c | 1 arch/x86/kernel/irqinit.c | 4 arch/x86/kvm/svm/svm.c | 34 - arch/x86/kvm/svm/svm.h | 1 arch/x86/kvm/vmx/vmx.c | 21 arch/xtensa/kernel/traps.c | 2 block/blk-core.c | 8 drivers/base/property.c | 18 drivers/base/test/test_async_driver_probe.c | 2 drivers/cpufreq/armada-37xx-cpufreq.c | 2 drivers/cpufreq/cpufreq-dt-platdev.c | 2 drivers/cpufreq/cpufreq_governor.c | 20 drivers/cpufreq/cpufreq_governor.h | 1 drivers/cpufreq/cpufreq_governor_attr_set.c | 5 drivers/dma/dmaengine.c | 7 drivers/dma/ptdma/ptdma-dev.c | 7 drivers/dma/ptdma/ptdma.h | 2 drivers/dma/ti/k3-udma.c | 5 drivers/dma/xilinx/xilinx_dma.c | 4 drivers/edac/edac_device.c | 15 drivers/edac/highbank_mc_edac.c | 7 drivers/edac/qcom_edac.c | 5 drivers/firmware/arm_scmi/shmem.c | 9 drivers/firmware/google/coreboot_table.c | 9 drivers/firmware/google/coreboot_table.h | 1 drivers/gpio/gpio-amdpt.c | 10 drivers/gpio/gpio-brcmstb.c | 12 drivers/gpio/gpio-cadence.c | 12 drivers/gpio/gpio-dwapb.c | 36 - drivers/gpio/gpio-grgpio.c | 30 drivers/gpio/gpio-hlwd.c | 18 drivers/gpio/gpio-idt3243x.c | 12 drivers/gpio/gpio-ixp4xx.c | 4 drivers/gpio/gpio-loongson1.c | 8 drivers/gpio/gpio-menz127.c | 8 drivers/gpio/gpio-mlxbf2.c | 6 drivers/gpio/gpio-mmio.c | 22 drivers/gpio/gpio-mxc.c | 16 drivers/gpio/gpio-sifive.c | 12 drivers/gpio/gpio-tb10x.c | 4 drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c | 10 drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 4 drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c | 1 drivers/gpu/drm/drm_panel_orientation_quirks.c | 6 drivers/gpu/drm/i915/i915_drv.c | 5 drivers/gpu/drm/i915/i915_switcheroo.c | 6 drivers/gpu/drm/i915/selftests/intel_scheduler_helpers.c | 3 drivers/gpu/drm/panfrost/Kconfig | 3 drivers/hid/hid-betopff.c | 17 drivers/hid/hid-bigbenff.c | 5 drivers/hid/hid-core.c | 4 drivers/hid/hid-ids.h | 1 drivers/hid/hid-quirks.c | 1 drivers/hid/intel-ish-hid/ishtp/dma-if.c | 10 drivers/i2c/busses/i2c-designware-common.c | 9 drivers/i2c/busses/i2c-mv64xxx.c | 61 +- drivers/infiniband/core/verbs.c | 7 drivers/infiniband/hw/hfi1/user_exp_rcv.c | 200 ++++-- drivers/infiniband/hw/hfi1/user_exp_rcv.h | 3 drivers/input/mouse/synaptics.c | 1 drivers/memory/atmel-sdramc.c | 6 drivers/memory/mvebu-devbus.c | 3 drivers/memory/tegra/tegra186.c | 36 - drivers/net/dsa/microchip/ksz9477.c | 4 drivers/net/ethernet/amd/xgbe/xgbe-dev.c | 23 drivers/net/ethernet/amd/xgbe/xgbe-mdio.c | 24 drivers/net/ethernet/amd/xgbe/xgbe.h | 2 drivers/net/ethernet/broadcom/tg3.c | 8 drivers/net/ethernet/cadence/macb_main.c | 9 drivers/net/ethernet/freescale/enetc/enetc.c | 4 drivers/net/ethernet/marvell/octeontx2/nic/otx2_common.c | 11 drivers/net/ethernet/marvell/octeontx2/nic/otx2_common.h | 2 drivers/net/ethernet/mellanox/mlx5/core/esw/qos.c | 18 drivers/net/ethernet/mellanox/mlx5/core/main.c | 8 drivers/net/ethernet/microsoft/mana/gdma.h | 3 drivers/net/ethernet/microsoft/mana/gdma_main.c | 9 drivers/net/ethernet/renesas/ravb.h | 4 drivers/net/ethernet/renesas/ravb_main.c | 36 - drivers/net/ethernet/stmicro/stmmac/dwmac5.c | 14 drivers/net/ethernet/stmicro/stmmac/stmmac_ethtool.c | 8 drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 5 drivers/net/ipa/ipa_interrupt.c | 10 drivers/net/ipa/ipa_interrupt.h | 16 drivers/net/ipa/ipa_power.c | 17 drivers/net/mdio/mdio-mux-meson-g12a.c | 23 drivers/net/phy/mdio_bus.c | 7 drivers/net/usb/cdc_ether.c | 6 drivers/net/usb/r8152.c | 1 drivers/net/usb/sr9700.c | 2 drivers/net/virtio_net.c | 6 drivers/net/wan/fsl_ucc_hdlc.c | 6 drivers/net/wireless/rndis_wlan.c | 19 drivers/nvme/host/core.c | 2 drivers/nvme/host/pci.c | 2 drivers/phy/phy-can-transceiver.c | 5 drivers/phy/rockchip/phy-rockchip-inno-usb2.c | 4 drivers/phy/ti/Kconfig | 4 drivers/pinctrl/nuvoton/pinctrl-npcm7xx.c | 8 drivers/pinctrl/pinctrl-rockchip.c | 315 +++++----- drivers/pinctrl/pinctrl-rockchip.h | 4 drivers/platform/x86/asus-nb-wmi.c | 1 drivers/platform/x86/touchscreen_dmi.c | 25 drivers/reset/reset-uniphier-glue.c | 37 - drivers/scsi/hisi_sas/hisi_sas_main.c | 2 drivers/scsi/hpsa.c | 2 drivers/scsi/scsi_transport_iscsi.c | 50 + drivers/scsi/ufs/ufshcd.c | 26 drivers/scsi/ufs/ufshcd.h | 2 drivers/soc/imx/soc-imx8m.c | 4 drivers/soc/qcom/cpr.c | 6 drivers/spi/spidev.c | 2 drivers/thermal/gov_fair_share.c | 10 drivers/thermal/gov_power_allocator.c | 4 drivers/thermal/intel/int340x_thermal/int340x_thermal_zone.c | 28 drivers/thermal/intel/int340x_thermal/int340x_thermal_zone.h | 1 drivers/thermal/tegra/tegra30-tsensor.c | 2 drivers/thermal/thermal_core.c | 53 - drivers/thermal/thermal_helpers.c | 4 drivers/thermal/thermal_netlink.c | 2 drivers/thermal/thermal_sysfs.c | 33 - drivers/usb/gadget/function/f_fs.c | 7 drivers/w1/w1.c | 6 drivers/w1/w1_int.c | 5 fs/affs/file.c | 2 fs/cifs/dfs_cache.c | 42 - fs/cifs/smbdirect.c | 1 fs/ksmbd/connection.c | 17 fs/ksmbd/ksmbd_netlink.h | 4 fs/ksmbd/ndr.c | 8 fs/ksmbd/server.h | 1 fs/ksmbd/smb2pdu.c | 2 fs/ksmbd/smb2pdu.h | 5 fs/ksmbd/transport_ipc.c | 6 fs/ksmbd/transport_rdma.c | 8 fs/ksmbd/transport_rdma.h | 6 fs/ksmbd/transport_tcp.c | 17 fs/nfsd/nfs4proc.c | 1 fs/overlayfs/copy_up.c | 4 fs/proc/proc_sysctl.c | 33 + fs/reiserfs/super.c | 6 include/linux/cpufreq.h | 5 include/linux/gpio/driver.h | 2 include/linux/panic.h | 7 include/linux/sched/task.h | 1 include/linux/sysctl.h | 3 include/linux/thermal.h | 5 include/net/sch_generic.h | 7 include/net/sock.h | 2 include/scsi/scsi_transport_iscsi.h | 9 include/uapi/linux/netfilter/nf_conntrack_sctp.h | 2 include/uapi/linux/netfilter/nfnetlink_cttimeout.h | 2 kernel/bpf/verifier.c | 4 kernel/exit.c | 72 ++ kernel/kcsan/kcsan_test.c | 7 kernel/kcsan/report.c | 3 kernel/module.c | 26 kernel/panic.c | 90 ++ kernel/sched/core.c | 3 kernel/sysctl.c | 11 kernel/trace/trace.c | 2 kernel/trace/trace.h | 1 kernel/trace/trace_events_hist.c | 2 kernel/trace/trace_output.c | 3 lib/lockref.c | 1 lib/nlattr.c | 3 lib/ubsan.c | 11 mm/kasan/report.c | 12 mm/kfence/report.c | 3 net/bluetooth/hci_core.c | 1 net/bluetooth/rfcomm/sock.c | 7 net/core/net_namespace.c | 2 net/ipv4/fib_semantics.c | 2 net/ipv4/inet_hashtables.c | 17 net/ipv4/inet_timewait_sock.c | 8 net/ipv4/metrics.c | 2 net/ipv4/tcp.c | 2 net/ipv6/ip6_output.c | 15 net/l2tp/l2tp_core.c | 116 ++- net/mctp/af_mctp.c | 1 net/mctp/route.c | 6 net/netfilter/nf_conntrack_proto_sctp.c | 118 +-- net/netfilter/nf_conntrack_standalone.c | 8 net/netfilter/nft_set_rbtree.c | 332 ++++++----- net/netlink/af_netlink.c | 38 - net/netrom/nr_timer.c | 1 net/nfc/llcp_core.c | 1 net/sched/sch_htb.c | 27 net/sched/sch_taprio.c | 2 net/sctp/bind_addr.c | 6 scripts/Makefile | 4 scripts/dtc/Makefile | 6 scripts/kconfig/gconf-cfg.sh | 12 scripts/kconfig/mconf-cfg.sh | 16 scripts/kconfig/nconf-cfg.sh | 16 scripts/kconfig/qconf-cfg.sh | 14 scripts/tracing/ftrace-bisect.sh | 34 - security/tomoyo/Makefile | 2 sound/soc/fsl/fsl-asoc-card.c | 8 sound/soc/fsl/fsl_micfil.c | 16 sound/soc/fsl/fsl_ssi.c | 4 tools/gpio/gpio-event-mon.c | 1 tools/objtool/Makefile | 4 tools/objtool/check.c | 3 tools/testing/selftests/bpf/prog_tests/jeq_infer_not_null.c | 9 tools/testing/selftests/bpf/progs/jeq_infer_not_null_fail.c | 42 - tools/testing/selftests/net/toeplitz.c | 12 273 files changed, 2172 insertions(+), 1319 deletions(-)
Adam Ford (1):
arm64: dts: imx8mm-beacon: Fix ecspi2 pinmux
Alexander Gordeev (1):
s390: expicitly align _edata and _end symbols on page boundary
Alexander Potapenko (1):
affs: initialize fsdata in affs_truncate()
Alexey V. Vissarionov (1):
scsi: hpsa: Fix allocation size for scsi_host_alloc()
Andre Przywara (1):
r8152: add vendor/device ID pair for Microsoft Devkit
Andrew Halaney (1):
net: stmmac: enable all safety features by default
Andy Shevchenko (1):
pinctrl/rockchip: Use temporary variable for struct device
Archie Pusaka (1):
Bluetooth: hci_sync: cancel cmd_timer if hci_open failed
Arnd Bergmann (2):
drm/panfrost: fix GENERIC_ATOMIC64 dependency drm/i915/selftest: fix intel_selftest_modify_policy argument types
Ashish Mhetre (1):
memory: tegra: Remove clients SID override programming
Bartosz Golaszewski (1):
spi: spidev: remove debug messages that access spidev->spi without locking
Biju Das (1):
ravb: Rename "no_ptp_cfg_active" and "ptp_cfg_active" variables
Caleb Connolly (1):
net: ipa: disable ipa interrupt during suspend
Chancel Liu (1):
ASoC: fsl_micfil: Correct the number of steps on SX controls
Chen Zhongjin (1):
driver core: Fix test_async_probe_init saves device in wrong array
Chris Morgan (2):
i2c: mv64xxx: Remove shutdown method from driver
i2c: mv64xxx: Add atomic_xfer method to driver
Christoph Hellwig (1):
block: fix and cleanup bio_check_ro
Christophe JAILLET (1):
PM: AVS: qcom-cpr: Fix an error handling path in cpr_probe()
Chun-Tse Shao (1):
kbuild: Allow kernel installation packaging to override pkg-config
Claudiu Beznea (1):
ARM: dts: at91: sam9x60: fix the ddr clock for sam9x60
Colin Ian King (1):
perf/x86/amd: fix potential integer overflow on shift of a int
Cong Wang (2):
l2tp: convert l2tp_tunnel_list to idr
l2tp: close all race conditions in l2tp_tunnel_register()
Cristian Marussi (2):
firmware: arm_scmi: Harden shared memory access in fetch_response
firmware: arm_scmi: Harden shared memory access in fetch_notification
Dan Carpenter (2):
thermal/core: fix error code in __thermal_cooling_device_register()
gpio: mxc: Unlock on error path in mxc_flip_edge()
Daniel Lezcano (2):
thermal/core: Remove duplicate information when an error occurs thermal/core: Rename 'trips' to 'num_trips'
Dario Binacchi (1):
ARM: imx: add missing of_node_put()
David Christensen (1):
net/tg3: resolve deadlock in tg3_reset_task() during EEH
David Howells (1):
cifs: Fix oops due to uncleared server->smbd_conn in reconnect
David Morley (1):
tcp: fix rate_app_limited to default to 1
Dean Luick (5):
IB/hfi1: Reject a zero-length user expected buffer IB/hfi1: Reserve user expected TIDs
IB/hfi1: Fix expected receive setup error exit issues IB/hfi1: Immediately remove invalid memory from hardware IB/hfi1: Remove user expected buffer invalidate race
Deepak Sharma (1):
x86: ACPI: cstate: Optimize C3 entry on AMD CPUs
Dmitry Torokhov (1):
Revert "Input: synaptics - switch touchpad on HP Laptop 15-da3001TU to RMI mode"
Dongliang Mu (1):
fs: reiserfs: remove useless new_opts in reiserfs_remount
Eric Dumazet (9):
net/sched: sch_taprio: fix possible use-after-free
l2tp: prevent lockdep issue in l2tp_tunnel_register()
netlink: prevent potential spectre v1 gadgets
netlink: annotate data races around nlk->portid
netlink: annotate data races around dst_portid and dst_group
netlink: annotate data races around sk_state
ipv4: prevent potential spectre v1 gadget in ip_metrics_convert()
ipv4: prevent potential spectre v1 gadget in fib_metrics_match() net/sched: sch_taprio: do not schedule in taprio_reset()
Eric Pilmore (1):
ptdma: pt_core_execute_cmd() should use spinlock
Eric W. Biederman (2):
exit: Add and use make_task_dead.
objtool: Add a missing comma to avoid string concatenation
Esina Ekaterina (1):
net: wan: Add checks for NULL for utdm in undo_uhdlc_init and unmap_si_regs
Fabio Estevam (4):
arm64: dts: imx8mp-phycore-som: Remove invalid PMIC property
ARM: dts: imx6ul-pico-dwarf: Use 'clock-frequency'
ARM: dts: imx7d-pico: Use 'clock-frequency'
ARM: dts: imx6qdl-gw560x: Remove incorrect 'uart-has-rtscts'
Gaosheng Cui (2):
memory: atmel-sdramc: Fix missing clk_disable_unprepare in atmel_ramc_probe()
memory: mvebu-devbus: Fix missing clk_disable_unprepare in mvebu_devbus_probe()
Geert Uytterhoeven (1):
phy: phy-can-transceiver: Skip warning if no "max-bitrate"
Geetha sowjanya (1):
octeontx2-pf: Avoid use of GFP_KERNEL in atomic context
Gergely Risko (1):
ipv6: fix reachability confirmation with proxy_ndp
Giulio Benetti (1):
ARM: 9280/1: mm: fix warning on phys_addr_t to void pointer assignment
Greg Kroah-Hartman (1):
Linux 5.15.91
Haiyang Zhang (1):
net: mana: Fix IRQ name - add PCI and queue number
Hamza Mahfooz (1):
drm/amd/display: fix issues with driver unload
Hans de Goede (1):
platform/x86: asus-nb-wmi: Add alternate mapping for KEY_SCREENLOCK
Harsh Jain (1):
drm/amdgpu: complete gfxoff allow signal during suspend without delay
Heiko Carstens (1):
KVM: s390: interrupt: use READ_ONCE() before cmpxchg()
Heiner Kallweit (2):
net: mdio: validate parameter addr in mdiobus_get_phy()
net: stmmac: fix invalid call to mdiobus_get_phy()
Hendrik Borghorst (1):
KVM: x86/vmx: Do not skip segment attributes if unusable bit is set
Hui Tang (1):
reset: uniphier-glue: Fix possible null-ptr-deref
Hui Wang (1):
net: usb: cdc_ether: add support for Thales Cinterion PLS62-W modem
Ivo Borisov Shopov (1):
tools: gpio: fix -c option of gpio-event-mon
Jakub Sitnicki (2):
l2tp: Serialize access to sk_user_data with sk_callback_lock
l2tp: Don't sleep and disable BH under writer-side sk_callback_lock
Jann Horn (1):
exit: Put an upper limit on how often we can oops
Jason Wang (1):
virtio-net: correctly enable callback during start_xmit
Jason Xing (1):
tcp: avoid the lookup process failing to get sk in ehash table
Jayesh Choudhary (1):
dmaengine: ti: k3-udma: Do conditional decrement of UDMA_CHAN_RT_PEER_BCNT_REG
Jeremy Kerr (1):
net: mctp: mark socks as dead on unhash, prevent re-add
Jerome Brunet (1):
net: mdio-mux-meson-g12a: force internal PHY off on mux switch
Jiasheng Jiang (1):
HID: intel_ish-hid: Add check for ishtp_dma_tx_map
Jiri Kosina (1):
HID: revert CHERRY_MOUSE_000C quirk
Jisoo Jang (1):
net: nfc: Fix use-after-free in local_cleanup()
Johan Hovold (1):
scsi: ufs: core: Fix devfreq deadlocks
Jonas Karlman (2):
pinctrl: rockchip: fix reading pull type on rk3568
pinctrl: rockchip: fix mux route data for rk3568
Kan Liang (2):
perf/x86/msr: Add Emerald Rapids
perf/x86/intel/uncore: Add Emerald Rapids
Kees Cook (9):
firmware: coreboot: Check size of table entry and use flex-array
panic: Separate sysctl logic from CONFIG_SMP
exit: Expose "oops_count" to sysfs
exit: Allow oops_limit to be disabled
panic: Consolidate open-coded panic_on_warn checks
panic: Introduce warn_limit
panic: Expose "warn_count" to sysfs
docs: Fix path paste-o for /sys/kernel/warn_count
exit: Use READ_ONCE() for all oops/warn limit reads
Keith Busch (2):
nvme-pci: fix timeout request state check
nvme: fix passthrough csi check
Kevin Hao (3):
octeontx2-pf: Fix the use of GFP_KERNEL in atomic context on rt
cpufreq: Move to_gov_attr_set() to cpufreq.h
cpufreq: governor: Use kobject release() method to free dbs_data
Koba Ko (1):
dmaengine: Fix double increment of client_count in dma_chan_get()
Konrad Dybcio (4):
arm64: dts: qcom: msm8992: Don't use sfpb mutex
arm64: dts: qcom: msm8992-libra: Add CPU regulators
arm64: dts: qcom: msm8992-libra: Fix the memory map
cpufreq: Add SM6375 to cpufreq-dt-platdev blocklist
Kuniyuki Iwashima (1):
netrom: Fix use-after-free of a listening socket.
Kurt Kanzenbach (1):
net: stmmac: Fix queue statistics reading
Lareine Khawaly (1):
i2c: designware: use casting of u64 in clock multiplication to avoid overflow
Liao Chang (1):
riscv/kprobe: Fix instruction simulation of JALR
Linus Torvalds (1):
treewide: fix up files incorrectly marked executable
Liu Shixin (1):
dmaengine: xilinx_dma: call of_node_put() when breaking out of for_each_child_of_node()
Luis Gerhorst (1):
bpf: Fix pointer-leak due to insufficient speculative store bypass mitigation
Manivannan Sadhasivam (2):
EDAC/device: Respect any driver-supplied workqueue polling value EDAC/qcom: Do not pass llcc_driv_data as edac_device_ctl_info's pvt_info
Maor Dickman (1):
net/mlx5: E-switch, Fix setting of reserved fields on MODIFY_SCHEDULING_ELEMENT
Marc Zyngier (1):
KVM: arm64: GICv4.1: Fix race with doorbell on VPE activation/deactivation
Marcelo Ricardo Leitner (1):
sctp: fail if no bound addresses can be used for a given scope
Marek Vasut (2):
gpio: mxc: Protect GPIO irqchip RMW with bgpio spinlock
gpio: mxc: Always set GPIOs used as interrupt source to INPUT mode
Marios Makassikis (1):
ksmbd: do not sign response to session request for guest login
Mark Brown (2):
ASoC: fsl_ssi: Rename AC'97 streams to avoid collisions with AC'97 CODEC
ASoC: fsl-asoc-card: Fix naming of AC'97 CODEC widgets
Masahiro Yamada (1):
tomoyo: fix broken dependency on *.conf.default
Mateusz Guzik (1):
lockref: stop doing cpu_relax in the cmpxchg loop
Max Filippov (1):
kcsan: test: don't put the expect array on the stack
Maxim Levitsky (1):
KVM: SVM: fix tsc scaling cache logic
Miaoqian Lin (2):
soc: imx8m: Fix incorrect check for of_clk_get_by_name() EDAC/highbank: Fix memory leak in highbank_mc_probe()
Michael Klein (1):
platform/x86: touchscreen_dmi: Add info for the CSL Panther Tab HD
Miklos Szeredi (1):
ovl: fail on invalid uid/gid mapping at copy up
Miles Chen (1):
cpufreq: armada-37xx: stop using 0 as NULL pointer
Namjae Jeon (4):
ksmbd: add smbd max io size parameter
ksmbd: add max connections parameter
ksmbd: downgrade ndr version error message to debug
ksmbd: limit pdu length size according to connection status
Natalia Petrova (1):
trace_events_hist: add check for return value of 'create_hist_field'
Nathan Chancellor (3):
hexagon: Fix function name in die()
h8300: Fix build errors from do_exit() to make_task_dead() transition
csky: Fix function name in csky_alignment() and die()
Niklas Schnelle (1):
s390/debug: add _ASM_S390_ prefix to header guard
Nirmoy Das (1):
drm/i915: Remove unused variable
Pablo Neira Ayuso (2):
netfilter: nft_set_rbtree: Switch to node list walk for overlap detection
netfilter: nft_set_rbtree: skip elements in transaction from garbage collection
Paolo Abeni (1):
net: fix UaF in netns ops registration error path
Patrick Thompson (1):
drm: Add orientation quirk for Lenovo ideapad D330-10IGL
Paulo Alcantara (1):
cifs: fix potential deadlock in cache_refresh_path()
Petr Pavlu (1):
module: Don't wait for GOING modules
Philipp Zabel (1):
reset: uniphier-glue: Use reset_control_bulk API
Pietro Borrello (3):
HID: check empty report_list in hid_validate_values()
HID: check empty report_list in bigben_probe()
HID: betop: check shape of output reports
Rafael J. Wysocki (1):
thermal: intel: int340x: Add locking to int340x_thermal_get_trip_type()
Rahul Rameshbabu (1):
sch_htb: Avoid grafting on htb_destroy_class_offload when destroying htb
Raju Rangoju (2):
amd-xgbe: TX Flow Ctrl Registers are h/w ver dependent
amd-xgbe: Delay AN timeout during KR training
Rakesh Sankaranarayanan (1):
net: dsa: microchip: ksz9477: port map correction in ALU table entry register
Randy Dunlap (3):
phy: ti: fix Kconfig warning and operator precedence
net: mlx5: eliminate anonymous module_init & module_exit
ia64: make IA64_MCA_RECOVERY bool instead of tristate
Robert Hancock (1):
net: macb: fix PTP TX timestamp failure due to packet padding
Sasha Levin (1):
Revert "selftests/bpf: check null propagation only neither reg is PTR_TO_BTF_ID"
Schspa Shi (1):
gpio: use raw spinlock for gpio chip shadowed data
Sebastian Reichel (1):
pinctrl/rockchip: add error handling for pull/drive register getters
Shang XiaoJing (1):
phy: rockchip-inno-usb2: Fix missing clk_disable_unprepare() in rockchip_usb2phy_power_on()
Srinivas Pandruvada (1):
thermal: intel: int340x: Protect trip temperature from concurrent updates
Sriram Yagnaraman (2):
netfilter: conntrack: fix vtag checks for ABORT/SHUTDOWN_COMPLETE
netfilter: conntrack: unify established states for SCTP paths
Steven Rostedt (Google) (2):
tracing: Make sure trace_printk() can output as soon as it can be used ftrace/scripts: Update the instructions for ftrace-bisect.sh
Sumit Gupta (1):
cpufreq: Add Tegra234 to cpufreq-dt-platdev blocklist
Szymon Heidrich (2):
wifi: rndis_wlan: Prevent buffer overflow in rndis_query_oid
net: usb: sr9700: Handle negative len
Thomas Gleixner (1):
x86/i8259: Mark legacy PIC interrupts with IRQ_LEVEL
Thomas Zimmermann (1):
drm/i915: Allow switching away via vga-switcheroo if uninitialized
Tiezhu Yang (3):
panic: unset panic_on_warn inside panic()
ubsan: no need to unset panic_on_warn in ubsan_epilogue()
kasan: no need to unset panic_on_warn in end_report()
Tim Harvey (1):
arm64: dts: imx8mm-venice-gw7901: fix USB2 controller OC polarity
Udipto Goswami (2):
usb: gadget: f_fs: Prevent race during ffs_ep0_queue_wait
usb: gadget: f_fs: Ensure ep0req is dequeued before free_request
Viresh Kumar (2):
thermal: Validate new state in cur_state_store()
thermal: core: call put_device() only after device_register() fails
Vladimir Oltean (1):
net: enetc: avoid deadlock in enetc_tx_onestep_tstamp()
Wenchao Hao (1):
scsi: iscsi: Fix multiple iSCSI session unbind events sent to userspace
Willem de Bruijn (1):
selftests/net: toeplitz: fix race on tpacket_v3 block close
Xiaoming Ni (1):
sysctl: add a new register_sysctl_init() interface
Xingyuan Mo (1):
NFSD: fix use-after-free in nfsd4_ssc_setup_dul()
Yang Yingliang (3):
device property: fix of node refcount leak in fwnode_graph_get_next_endpoint()
w1: fix deadloop in __w1_remove_master_device()
w1: fix WARNING after calling w1_process()
Yihang Li (1):
scsi: hisi_sas: Set a port invalid only if there are no devices attached when refreshing port id
Ying Hsu (1):
Bluetooth: Fix possible deadlock in rfcomm_sk_state_change
Yonatan Nachum (1):
RDMA/core: Fix ib block iterator counter overflow
Yoshihiro Shimoda (2):
net: ravb: Fix lack of register setting after system resumed for Gen3
net: ravb: Fix possible hang if RIS2_QFF1 happen
tangmeng (1):
kernel/panic: move panic sysctls to its own file
Greg Kroah-Hartman
maintainerDocumentation/ABI/testing/sysfs-kernel-oops_count new file +6 -0
@@ -0,0 +1,6 @@ +What: /sys/kernel/oops_count +Date: November 2022 +KernelVersion: 6.2.0 +Contact: Linux Kernel Hardening List <[email protected]> +Description: + Shows how many times the system has Oopsed since last boot.
Documentation/ABI/testing/sysfs-kernel-warn_count new file +6 -0
@@ -0,0 +1,6 @@ +What: /sys/kernel/warn_count +Date: November 2022 +KernelVersion: 6.2.0 +Contact: Linux Kernel Hardening List <[email protected]> +Description: + Shows how many times the system has Warned since last boot.
Documentation/admin-guide/sysctl/kernel.rst +19 -0
@@ -671,6 +671,15 @@ This is the default behavior. an oops event is detected. +oops_limit +========== + +Number of kernel oopses after which the kernel should panic when +``panic_on_oops`` is not set. Setting this to 0 disables checking +the count. Setting this to 1 has the same effect as setting +``panic_on_oops=1``. The default value is 10000. + + osrelease, ostype & version ===========================
@@ -1485,6 +1494,16 @@ entry will default to 2 instead of 0. 2 Unprivileged calls to ``bpf()`` are disabled = ============================================================= + +warn_limit +========== + +Number of kernel warnings after which the kernel should panic when +``panic_on_warn`` is not set. Setting this to 0 disables checking +the warning count. Setting this to 1 has the same effect as setting +``panic_on_warn=1``. The default value is 0. + + watchdog ========
Makefile +3 -2
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 5 PATCHLEVEL = 15 -SUBLEVEL = 90 +SUBLEVEL = 91 EXTRAVERSION = NAME = Trick or Treat
@@ -430,6 +430,7 @@ else HOSTCC = gcc HOSTCXX = g++ endif +HOSTPKG_CONFIG = pkg-config export KBUILD_USERCFLAGS := -Wall -Wmissing-prototypes -Wstrict-prototypes \ -O2 -fomit-frame-pointer -std=gnu89
@@ -525,7 +526,7 @@ KBUILD_LDFLAGS_MODULE := KBUILD_LDFLAGS := CLANG_FLAGS := -export ARCH SRCARCH CONFIG_SHELL BASH HOSTCC KBUILD_HOSTCFLAGS CROSS_COMPILE LD CC +export ARCH SRCARCH CONFIG_SHELL BASH HOSTCC KBUILD_HOSTCFLAGS CROSS_COMPILE LD CC HOSTPKG_CONFIG export CPP AR NM STRIP OBJCOPY OBJDUMP READELF PAHOLE RESOLVE_BTFIDS LEX YACC AWK INSTALLKERNEL export PERL PYTHON3 CHECK CHECKFLAGS MAKE UTS_MACHINE HOSTCXX export KGZIP KBZIP2 KLZOP LZMA LZ4 XZ ZSTD
arch/alpha/kernel/traps.c +3 -3
@@ -192,7 +192,7 @@ die_if_kernel(char * str, struct pt_regs *regs, long err, unsigned long *r9_15)local_irq_enable ();while (1 ); } -do_exit (SIGSEGV ); +make_task_dead (SIGSEGV ); }#ifndef CONFIG_MATHEMU
@@ -577,7 +577,7 @@ do_entUna(void * va, unsigned long opcode, unsigned long reg,printk ("Bad unaligned kernel access at %016lx: %p %lx %lu\n" , pc, va, opcode, reg); -do_exit (SIGSEGV ); +make_task_dead (SIGSEGV ); got_exception:/* Ok, we caught the exception, but we don't want it. Is there
@@ -632,7 +632,7 @@ do_entUna(void * va, unsigned long opcode, unsigned long reg,local_irq_enable ();while (1 ); } -do_exit (SIGSEGV ); +make_task_dead (SIGSEGV ); }/*
arch/alpha/mm/fault.c +1 -1
@@ -204,7 +204,7 @@ do_page_fault(unsigned long address, unsigned long mmcsr,printk (KERN_ALERT "Unable to handle kernel paging request at " "virtual address %016lx\n" , address);die_if_kernel ("Oops" , regs, cause, (unsigned long *)regs -16 ); -do_exit (SIGKILL ); +make_task_dead (SIGKILL );/* We ran out of memory, or some other thing happened to us that made us unable to handle the page fault gracefully. */
arch/arm/boot/dts/imx6qdl-gw560x.dtsi +0 -1
@@ -632,7 +632,6 @@ &ssi1 { &uart1 { pinctrl-names = "default"; pinctrl-0 = <&pinctrl_uart1>; - uart-has-rtscts; rts-gpios = <&gpio7 1 GPIO_ACTIVE_HIGH>; status = "okay"; };
arch/arm/boot/dts/imx6ul-pico-dwarf.dts +1 -1
@@ -32,7 +32,7 @@ sys_mclk: clock-sys-mclk { }; &i2c2 { - clock_frequency = <100000>; + clock-frequency = <100000>; pinctrl-names = "default"; pinctrl-0 = <&pinctrl_i2c2>; status = "okay";
arch/arm/boot/dts/imx7d-pico-dwarf.dts +2 -2
@@ -32,7 +32,7 @@ sys_mclk: clock-sys-mclk { }; &i2c1 { - clock_frequency = <100000>; + clock-frequency = <100000>; pinctrl-names = "default"; pinctrl-0 = <&pinctrl_i2c1>; status = "okay";
@@ -52,7 +52,7 @@ pressure-sensor@60 { }; &i2c4 { - clock_frequency = <100000>; + clock-frequency = <100000>; pinctrl-names = "default"; pinctrl-0 = <&pinctrl_i2c1>; status = "okay";
arch/arm/boot/dts/imx7d-pico-nymph.dts +2 -2
@@ -43,7 +43,7 @@ sys_mclk: clock-sys-mclk { }; &i2c1 { - clock_frequency = <100000>; + clock-frequency = <100000>; pinctrl-names = "default"; pinctrl-0 = <&pinctrl_i2c1>; status = "okay";
@@ -64,7 +64,7 @@ adc@52 { }; &i2c2 { - clock_frequency = <100000>; + clock-frequency = <100000>; pinctrl-names = "default"; pinctrl-0 = <&pinctrl_i2c2>; status = "okay";
arch/arm/boot/dts/sam9x60.dtsi +1 -1
@@ -567,7 +567,7 @@ pmecc: ecc-engine@ffffe000 { mpddrc: mpddrc@ffffe800 { compatible = "microchip,sam9x60-ddramc", "atmel,sama5d3-ddramc"; reg = <0xffffe800 0x200>; - clocks = <&pmc PMC_TYPE_SYSTEM 2>, <&pmc PMC_TYPE_CORE PMC_MCK>; + clocks = <&pmc PMC_TYPE_SYSTEM 2>, <&pmc PMC_TYPE_PERIPHERAL 49>; clock-names = "ddrck", "mpddr"; };
arch/arm/kernel/traps.c +1 -1
@@ -334,7 +334,7 @@ static void oops_end(unsigned long flags, struct pt_regs *regs, int signr)if (panic_on_oops)panic ("Fatal exception" );if (signr) -do_exit (signr); +make_task_dead (signr); }/*
arch/arm/mach-imx/cpu-imx25.c +1 -0
@@ -23,6 +23,7 @@ static int mx25_read_cpu_rev(void) np =of_find_compatible_node (NULL ,NULL ,"fsl,imx25-iim" ); iim_base =of_iomap (np,0 ); +of_node_put (np);BUG_ON (!iim_base); rev =readl (iim_base +MXC_IIMSREV );iounmap (iim_base);
arch/arm/mach-imx/cpu-imx27.c +1 -0
@@ -28,6 +28,7 @@ static int mx27_read_cpu_rev(void) np =of_find_compatible_node (NULL ,NULL ,"fsl,imx27-ccm" ); ccm_base =of_iomap (np,0 ); +of_node_put (np);BUG_ON (!ccm_base);/* * now we have access to the IO registers. As we need
arch/arm/mach-imx/cpu-imx31.c +1 -0
@@ -39,6 +39,7 @@ static int mx31_read_cpu_rev(void) np =of_find_compatible_node (NULL ,NULL ,"fsl,imx31-iim" ); iim_base =of_iomap (np,0 ); +of_node_put (np);BUG_ON (!iim_base);/* read SREV register from IIM module */
arch/arm/mach-imx/cpu-imx35.c +1 -0
@@ -21,6 +21,7 @@ static int mx35_read_cpu_rev(void) np =of_find_compatible_node (NULL ,NULL ,"fsl,imx35-iim" ); iim_base =of_iomap (np,0 ); +of_node_put (np);BUG_ON (!iim_base); rev =imx_readl (iim_base +MXC_IIMSREV );
arch/arm/mach-imx/cpu-imx5.c +1 -0
@@ -28,6 +28,7 @@ static u32 imx5_read_srev_reg(const char *compat) np =of_find_compatible_node (NULL ,NULL , compat); iim_base =of_iomap (np,0 ); +of_node_put (np);WARN_ON (!iim_base); srev =readl (iim_base +IIM_SREV ) &0xff ;
arch/arm/mm/fault.c +1 -1
@@ -125,7 +125,7 @@ __do_kernel_fault(struct mm_struct *mm, unsigned long addr, unsigned int fsr,show_pte (KERN_ALERT , mm, addr);die ("Oops" , regs, fsr);bust_spinlocks (0 ); -do_exit (SIGKILL ); +make_task_dead (SIGKILL ); }/*
arch/arm/mm/nommu.c +1 -1
@@ -161,7 +161,7 @@ void __init paging_init(const struct machine_desc *mdesc)mpu_setup ();/* allocate the zero page. */ - zero_page =memblock_alloc (PAGE_SIZE ,PAGE_SIZE ); + zero_page = (void *)memblock_alloc (PAGE_SIZE ,PAGE_SIZE );if (!zero_page)panic ("%s: Failed to allocate %lu bytes align=0x%lx\n" , __func__,PAGE_SIZE ,PAGE_SIZE );
arch/arm64/boot/dts/freescale/imx8mm-beacon-baseboard.dtsi +2 -2
@@ -70,7 +70,7 @@ sound { &ecspi2 { pinctrl-names = "default"; pinctrl-0 = <&pinctrl_espi2>; - cs-gpios = <&gpio5 9 GPIO_ACTIVE_LOW>; + cs-gpios = <&gpio5 13 GPIO_ACTIVE_LOW>; status = "okay"; eeprom@0 {
@@ -186,7 +186,7 @@ pinctrl_espi2: espi2grp { MX8MM_IOMUXC_ECSPI2_SCLK_ECSPI2_SCLK 0x82 MX8MM_IOMUXC_ECSPI2_MOSI_ECSPI2_MOSI 0x82 MX8MM_IOMUXC_ECSPI2_MISO_ECSPI2_MISO 0x82 - MX8MM_IOMUXC_ECSPI1_SS0_GPIO5_IO9 0x41 + MX8MM_IOMUXC_ECSPI2_SS0_GPIO5_IO13 0x41 >; };
arch/arm64/boot/dts/freescale/imx8mm-venice-gw7901.dts +1 -0
@@ -675,6 +675,7 @@ &usbotg1 { &usbotg2 { dr_mode = "host"; vbus-supply = <®_usb2_vbus>; + over-current-active-low; status = "okay"; };
arch/arm64/boot/dts/freescale/imx8mp-phycore-som.dtsi +0 -10
@@ -98,7 +98,6 @@ pmic: pmic@25 { regulators { buck1: BUCK1 { - regulator-compatible = "BUCK1"; regulator-min-microvolt = <600000>; regulator-max-microvolt = <2187500>; regulator-boot-on;
@@ -107,7 +106,6 @@ buck1: BUCK1 { }; buck2: BUCK2 { - regulator-compatible = "BUCK2"; regulator-min-microvolt = <600000>; regulator-max-microvolt = <2187500>; regulator-boot-on;
@@ -116,7 +114,6 @@ buck2: BUCK2 { }; buck4: BUCK4 { - regulator-compatible = "BUCK4"; regulator-min-microvolt = <600000>; regulator-max-microvolt = <3400000>; regulator-boot-on;
@@ -124,7 +121,6 @@ buck4: BUCK4 { }; buck5: BUCK5 { - regulator-compatible = "BUCK5"; regulator-min-microvolt = <600000>; regulator-max-microvolt = <3400000>; regulator-boot-on;
@@ -132,7 +128,6 @@ buck5: BUCK5 { }; buck6: BUCK6 { - regulator-compatible = "BUCK6"; regulator-min-microvolt = <600000>; regulator-max-microvolt = <3400000>; regulator-boot-on;
@@ -140,7 +135,6 @@ buck6: BUCK6 { }; ldo1: LDO1 { - regulator-compatible = "LDO1"; regulator-min-microvolt = <1600000>; regulator-max-microvolt = <3300000>; regulator-boot-on;
@@ -148,7 +142,6 @@ ldo1: LDO1 { }; ldo2: LDO2 { - regulator-compatible = "LDO2"; regulator-min-microvolt = <800000>; regulator-max-microvolt = <1150000>; regulator-boot-on;
@@ -156,7 +149,6 @@ ldo2: LDO2 { }; ldo3: LDO3 { - regulator-compatible = "LDO3"; regulator-min-microvolt = <800000>; regulator-max-microvolt = <3300000>; regulator-boot-on;
@@ -164,7 +156,6 @@ ldo3: LDO3 { }; ldo4: LDO4 { - regulator-compatible = "LDO4"; regulator-min-microvolt = <800000>; regulator-max-microvolt = <3300000>; regulator-boot-on;
@@ -172,7 +163,6 @@ ldo4: LDO4 { }; ldo5: LDO5 { - regulator-compatible = "LDO5"; regulator-min-microvolt = <1800000>; regulator-max-microvolt = <3300000>; };
arch/arm64/boot/dts/qcom/msm8992-xiaomi-libra.dts +75 -15
114 lines not on this page · raw message
arch/arm64/boot/dts/qcom/msm8992.dtsi +0 -4
@@ -14,10 +14,6 @@ &rpmcc { compatible = "qcom,rpmcc-msm8992"; }; -&tcsr_mutex { - compatible = "qcom,sfpb-mutex"; -}; - &timer { interrupts = <GIC_PPI 2 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>, <GIC_PPI 3 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
arch/arm64/kernel/traps.c +1 -1
@@ -235,7 +235,7 @@ void die(const char *str, struct pt_regs *regs, int err)raw_spin_unlock_irqrestore (&die_lock, flags);if (ret !=NOTIFY_STOP ) -do_exit (SIGSEGV ); +make_task_dead (SIGSEGV ); }static void arm64_show_signal (int signo,const char *str)
arch/arm64/kvm/vgic/vgic-v3.c +11 -14
@@ -347,26 +347,23 @@ int vgic_v3_lpi_sync_pending_status(struct kvm *kvm, struct vgic_irq *irq)* The deactivation of the doorbell interrupt will trigger the * unmapping of the associated vPE. */ -static void unmap_all_vpes (struct vgic_dist *dist) +static void unmap_all_vpes (struct kvm *kvm) { -struct irq_desc *desc; +struct vgic_dist *dist = &kvm->arch.vgic;int i; -for (i =0 ; i < dist->its_vm.nr_vpes; i++) { - desc =irq_to_desc (dist->its_vm.vpes[i]->irq); -irq_domain_deactivate_irq (irq_desc_get_irq_data (desc)); - } +for (i =0 ; i < dist->its_vm.nr_vpes; i++) +free_irq (dist->its_vm.vpes[i]->irq,kvm_get_vcpu (kvm, i)); } -static void map_all_vpes (struct vgic_dist *dist) +static void map_all_vpes (struct kvm *kvm) { -struct irq_desc *desc; +struct vgic_dist *dist = &kvm->arch.vgic;int i; -for (i =0 ; i < dist->its_vm.nr_vpes; i++) { - desc =irq_to_desc (dist->its_vm.vpes[i]->irq); -irq_domain_activate_irq (irq_desc_get_irq_data (desc), false); - } +for (i =0 ; i < dist->its_vm.nr_vpes; i++) +WARN_ON (vgic_v4_request_vpe_irq (kvm_get_vcpu (kvm, i), + dist->its_vm.vpes[i]->irq)); }/**
@@ -391,7 +388,7 @@ int vgic_v3_save_pending_tables(struct kvm *kvm)* and enabling of the doorbells have already been done. */ if (kvm_vgic_global_state.has_gicv4_1) { -unmap_all_vpes (dist); +unmap_all_vpes (kvm); vlpi_avail = true; }
@@ -441,7 +438,7 @@ int vgic_v3_save_pending_tables(struct kvm *kvm) out:if (vlpi_avail) -map_all_vpes (dist); +map_all_vpes (kvm);return ret; }
arch/arm64/kvm/vgic/vgic-v4.c +6 -2
@@ -222,6 +222,11 @@ void vgic_v4_get_vlpi_state(struct vgic_irq *irq, bool *val) *val = !!(*ptr & mask); } +int vgic_v4_request_vpe_irq (struct kvm_vcpu *vcpu,int irq) +{ +return request_irq (irq, vgic_v4_doorbell_handler,0 ,"vcpu" , vcpu); +} +/** * vgic_v4_init - Initialize the GICv4 data structures * @kvm: Pointer to the VM being initialized
@@ -282,8 +287,7 @@ int vgic_v4_init(struct kvm *kvm) irq_flags &= ~IRQ_NOAUTOEN ;irq_set_status_flags (irq, irq_flags); - ret =request_irq (irq, vgic_v4_doorbell_handler, -0 ,"vcpu" , vcpu); + ret =vgic_v4_request_vpe_irq (vcpu, irq);if (ret) {kvm_err ("failed to allocate vcpu IRQ%d\n" , irq);/*
arch/arm64/kvm/vgic/vgic.h +1 -0
@@ -321,5 +321,6 @@ int vgic_v4_init(struct kvm *kvm);void vgic_v4_teardown (struct kvm *kvm);void vgic_v4_configure_vsgis (struct kvm *kvm);void vgic_v4_get_vlpi_state (struct vgic_irq *irq,bool *val); +int vgic_v4_request_vpe_irq (struct kvm_vcpu *vcpu,int irq);#endif
arch/arm64/mm/fault.c +1 -1
@@ -302,7 +302,7 @@ static void die_kernel_fault(const char *msg, unsigned long addr,show_pte (addr);die ("Oops" , regs, esr);bust_spinlocks (0 ); -do_exit (SIGKILL ); +make_task_dead (SIGKILL ); }#ifdef CONFIG_KASAN_HW_TAGS
arch/csky/abiv1/alignment.c +1 -1
@@ -294,7 +294,7 @@ void csky_alignment(struct pt_regs *regs) __func__, opcode, rz, rx, imm, addr);show_regs (regs);bust_spinlocks (0 ); -do_exit (SIGKILL ); +make_task_dead (SIGKILL ); }force_sig_fault (SIGBUS ,BUS_ADRALN , (void __user *)addr);
arch/csky/kernel/traps.c +1 -1
@@ -109,7 +109,7 @@ void die(struct pt_regs *regs, const char *str)if (panic_on_oops)panic ("Fatal exception" );if (ret !=NOTIFY_STOP ) -do_exit (SIGSEGV ); +make_task_dead (SIGSEGV ); }void do_trap (struct pt_regs *regs,int signo,int code,unsigned long addr)
arch/csky/mm/fault.c +1 -1
@@ -67,7 +67,7 @@ static inline void no_context(struct pt_regs *regs, unsigned long addr)pr_alert ("Unable to handle kernel paging request at virtual " "addr 0x%08lx, pc: 0x%08lx\n" , addr, regs->pc);die (regs,"Oops" ); -do_exit (SIGKILL ); +make_task_dead (SIGKILL ); }static inline void mm_fault_error (struct pt_regs *regs,unsigned long addr,vm_fault_t fault)
arch/h8300/kernel/traps.c +2 -1
@@ -17,6 +17,7 @@#include <linux/types.h> #include <linux/sched.h> #include <linux/sched/debug.h> +#include <linux/sched/task.h> #include <linux/mm_types.h> #include <linux/kernel.h> #include <linux/errno.h>
@@ -106,7 +107,7 @@ void die(const char *str, struct pt_regs *fp, unsigned long err)dump (fp);spin_unlock_irq (&die_lock); -do_exit (SIGSEGV ); +make_task_dead (SIGSEGV ); }static int kstack_depth_to_print =24 ;
arch/h8300/mm/fault.c +1 -1
@@ -51,7 +51,7 @@ asmlinkage int do_page_fault(struct pt_regs *regs, unsigned long address,printk (" at virtual address %08lx\n" , address);if (!user_mode (regs))die ("Oops" , regs, error_code); -do_exit (SIGKILL ); +make_task_dead (SIGKILL );return 1 ; }
arch/hexagon/kernel/traps.c +1 -1
@@ -214,7 +214,7 @@ int die(const char *str, struct pt_regs *regs, long err)panic ("Fatal exception" );oops_exit (); -do_exit (err); +make_task_dead (err);return 0 ; }
arch/ia64/Kconfig +1 -1
@@ -323,7 +323,7 @@ config ARCH_PROC_KCORE_TEXT depends on PROC_KCORE config IA64_MCA_RECOVERY - tristate "MCA recovery from errors other than TLB." + bool "MCA recovery from errors other than TLB." config IA64_PALINFO tristate "/proc/pal support"
arch/ia64/kernel/mca_drv.c +1 -1
@@ -176,7 +176,7 @@ mca_handler_bh(unsigned long paddr, void *iip, unsigned long ipsr)spin_unlock (&mca_bh_lock);/* This process is about to be killed itself */ -do_exit (SIGKILL ); +make_task_dead (SIGKILL ); }/**
arch/ia64/kernel/traps.c +1 -1
@@ -85,7 +85,7 @@ die (const char *str, struct pt_regs *regs, long err)if (panic_on_oops)panic ("Fatal exception" ); -do_exit (SIGSEGV ); +make_task_dead (SIGSEGV );return 0 ; }
arch/ia64/mm/fault.c +1 -1
@@ -259,7 +259,7 @@ ia64_do_page_fault (unsigned long address, unsigned long isr, struct pt_regs *re regs =NULL ;bust_spinlocks (0 );if (regs) -do_exit (SIGKILL ); +make_task_dead (SIGKILL );return ; out_of_memory:
arch/m68k/kernel/traps.c +1 -1
@@ -1131,7 +1131,7 @@ void die_if_kernel (char *str, struct pt_regs *fp, int nr)pr_crit ("%s: %08x\n" , str, nr);show_registers (fp);add_taint (TAINT_DIE ,LOCKDEP_NOW_UNRELIABLE ); -do_exit (SIGSEGV ); +make_task_dead (SIGSEGV ); } asmlinkage void set_esp0(unsigned long ssp)
arch/m68k/mm/fault.c +1 -1
@@ -48,7 +48,7 @@ int send_fault_sig(struct pt_regs *regs)pr_alert ("Unable to handle kernel access" );pr_cont (" at virtual address %p\n" , addr);die_if_kernel ("Oops" , regs,0 /*error_code*/ ); -do_exit (SIGKILL ); +make_task_dead (SIGKILL ); }return 1 ;
arch/microblaze/kernel/exceptions.c +2 -2
@@ -44,10 +44,10 @@ void die(const char *str, struct pt_regs *fp, long err)pr_warn ("Oops: %s, sig: %ld\n" , str, err);show_regs (fp);spin_unlock_irq (&die_lock); -/* do_exit() should take care of panic'ing from an interrupt +/* make_task_dead() should take care of panic'ing from an interrupt * context so we don't handle it here */ -do_exit (err); +make_task_dead (err); }/* for user application debugging */
arch/mips/kernel/traps.c +1 -1
@@ -416,7 +416,7 @@ void __noreturn die(const char *str, struct pt_regs *regs)if (regs &&kexec_should_crash (current))crash_kexec (regs); -do_exit (sig); +make_task_dead (sig); }extern struct exception_table_entry __start___dbe_table[];
arch/nds32/kernel/fpu.c +1 -1
@@ -223,7 +223,7 @@ inline void handle_fpu_exception(struct pt_regs *regs) } }else if (fpcsr & FPCSR_mskRIT) {if (!user_mode (regs)) -do_exit (SIGILL ); +make_task_dead (SIGILL ); si_signo =SIGILL ; }
arch/nds32/kernel/traps.c +4 -4
@@ -141,7 +141,7 @@ void die(const char *str, struct pt_regs *regs, int err)bust_spinlocks (0 );spin_unlock_irq (&die_lock); -do_exit (SIGSEGV ); +make_task_dead (SIGSEGV ); }EXPORT_SYMBOL (die);
@@ -240,7 +240,7 @@ void unhandled_interruption(struct pt_regs *regs)pr_emerg ("unhandled_interruption\n" );show_regs (regs);if (!user_mode (regs)) -do_exit (SIGKILL ); +make_task_dead (SIGKILL );force_sig (SIGKILL ); }
@@ -251,7 +251,7 @@ void unhandled_exceptions(unsigned long entry, unsigned long addr, addr, type);show_regs (regs);if (!user_mode (regs)) -do_exit (SIGKILL ); +make_task_dead (SIGKILL );force_sig (SIGKILL ); }
@@ -278,7 +278,7 @@ void do_revinsn(struct pt_regs *regs)pr_emerg ("Reserved Instruction\n" );show_regs (regs);if (!user_mode (regs)) -do_exit (SIGILL ); +make_task_dead (SIGILL );force_sig (SIGILL ); }
arch/nios2/kernel/traps.c +2 -2
@@ -37,10 +37,10 @@ void die(const char *str, struct pt_regs *regs, long err)show_regs (regs);spin_unlock_irq (&die_lock);/* -* do_exit() should take care of panic'ing from an interrupt +* make_task_dead() should take care of panic'ing from an interrupt * context so we don't handle it here */ -do_exit (err); +make_task_dead (err); }void _exception (int signo,struct pt_regs *regs,int code,unsigned long addr)
arch/openrisc/kernel/traps.c +1 -1
@@ -212,7 +212,7 @@ void die(const char *str, struct pt_regs *regs, long err) __asm__ __volatile__("l.nop 1" );do {}while (1 );#endif -do_exit (SIGSEGV ); +make_task_dead (SIGSEGV ); }/* This is normally the 'Oops' routine */
arch/parisc/kernel/traps.c +1 -1
@@ -268,7 +268,7 @@ void die_if_kernel(char *str, struct pt_regs *regs, long err)panic ("Fatal exception" );oops_exit (); -do_exit (SIGSEGV ); +make_task_dead (SIGSEGV ); }/* gdb uses break 4,8 */
arch/powerpc/kernel/traps.c +4 -4
@@ -245,7 +245,7 @@ static void oops_end(unsigned long flags, struct pt_regs *regs,if (panic_on_oops)panic ("Fatal exception" ); -do_exit (signr); +make_task_dead (signr); }NOKPROBE_SYMBOL (oops_end);
@@ -792,9 +792,9 @@ int machine_check_generic(struct pt_regs *regs)void die_mce (const char *str,struct pt_regs *regs,long err) {/* -* The machine check wants to kill the interrupted context, but -* do_exit() checks for in_interrupt() and panics in that case, so -* exit the irq/nmi before calling die. +* The machine check wants to kill the interrupted context, +* but make_task_dead() checks for in_interrupt() and panics +* in that case, so exit the irq/nmi before calling die. */ if (in_nmi ())nmi_exit ();
arch/riscv/kernel/probes/simulate-insn.c +2 -2
@@ -71,11 +71,11 @@ bool __kprobes simulate_jalr(u32 opcode, unsigned long addr, struct pt_regs *regu32 rd_index = (opcode >>7 ) &0x1f ;u32 rs1_index = (opcode >>15 ) &0x1f ; - ret =rv_insn_reg_set_val (regs, rd_index, addr +4 ); + ret =rv_insn_reg_get_val (regs, rs1_index, &base_addr);if (!ret)return ret; - ret =rv_insn_reg_get_val (regs, rs1_index, &base_addr); + ret =rv_insn_reg_set_val (regs, rd_index, addr +4 );if (!ret)return ret;
arch/riscv/kernel/traps.c +1 -1
@@ -59,7 +59,7 @@ void die(struct pt_regs *regs, const char *str)if (panic_on_oops)panic ("Fatal exception" );if (ret !=NOTIFY_STOP ) -do_exit (SIGSEGV ); +make_task_dead (SIGSEGV ); }void do_trap (struct pt_regs *regs,int signo,int code,unsigned long addr)
arch/riscv/mm/fault.c +1 -1
@@ -31,7 +31,7 @@ static void die_kernel_fault(const char *msg, unsigned long addr,bust_spinlocks (0 );die (regs,"Oops" ); -do_exit (SIGKILL ); +make_task_dead (SIGKILL ); }static inline void no_context (struct pt_regs *regs,unsigned long addr)
arch/s390/include/asm/debug.h +3 -3
@@ -4,8 +4,8 @@* * Copyright IBM Corp. 1999, 2020 */ -#ifndef DEBUG_H -#define DEBUG_H +#ifndef _ASM_S390_DEBUG_H +#define _ASM_S390_DEBUG_H#include <linux/string.h> #include <linux/spinlock.h>
@@ -487,4 +487,4 @@ void debug_register_static(debug_info_t *id, int pages_per_area, int nr_areas);#endif /* MODULE */ -#endif /* DEBUG_H */ +#endif /* _ASM_S390_DEBUG_H */
arch/s390/kernel/dumpstack.c +1 -1
@@ -224,5 +224,5 @@ void die(struct pt_regs *regs, const char *str)if (panic_on_oops)panic ("Fatal exception: panic_on_oops" );oops_exit (); -do_exit (SIGSEGV ); +make_task_dead (SIGSEGV ); }
arch/s390/kernel/nmi.c +1 -1
@@ -175,7 +175,7 @@ void __s390_handle_mcck(void) "malfunction (code 0x%016lx).\n", mcck.mcck_code);printk (KERN_EMERG "mcck: task: %s, pid: %d.\n" , current->comm, current->pid); -do_exit (SIGSEGV ); +make_task_dead (SIGSEGV ); } }
arch/s390/kernel/vmlinux.lds.S +2 -0
@@ -80,6 +80,7 @@ SECTIONS _end_amode31_refs = .; } + . = ALIGN(PAGE_SIZE); _edata = .; /* End of data section */ /* will be freed after init */
@@ -194,6 +195,7 @@ SECTIONS BSS_SECTION(PAGE_SIZE, 4 * PAGE_SIZE, PAGE_SIZE) + . = ALIGN(PAGE_SIZE); _end = . ; /*
arch/s390/kvm/interrupt.c +8 -4
@@ -81,8 +81,9 @@ static int sca_inject_ext_call(struct kvm_vcpu *vcpu, int src_id)struct esca_block *sca = vcpu->kvm->arch.sca;union esca_sigp_ctrl *sigp_ctrl = &(sca->cpu[vcpu->vcpu_id].sigp_ctrl); -union esca_sigp_ctrl new_val = {0 }, old_val = *sigp_ctrl; +union esca_sigp_ctrl new_val = {0 }, old_val; + old_val =READ_ONCE (*sigp_ctrl); new_val.scn = src_id; new_val.c =1 ; old_val.c =0 ;
@@ -93,8 +94,9 @@ static int sca_inject_ext_call(struct kvm_vcpu *vcpu, int src_id)struct bsca_block *sca = vcpu->kvm->arch.sca;union bsca_sigp_ctrl *sigp_ctrl = &(sca->cpu[vcpu->vcpu_id].sigp_ctrl); -union bsca_sigp_ctrl new_val = {0 }, old_val = *sigp_ctrl; +union bsca_sigp_ctrl new_val = {0 }, old_val; + old_val =READ_ONCE (*sigp_ctrl); new_val.scn = src_id; new_val.c =1 ; old_val.c =0 ;
@@ -124,16 +126,18 @@ static void sca_clear_ext_call(struct kvm_vcpu *vcpu)struct esca_block *sca = vcpu->kvm->arch.sca;union esca_sigp_ctrl *sigp_ctrl = &(sca->cpu[vcpu->vcpu_id].sigp_ctrl); -union esca_sigp_ctrl old = *sigp_ctrl; +union esca_sigp_ctrl old; + old =READ_ONCE (*sigp_ctrl); expect = old.value; rc =cmpxchg (&sigp_ctrl->value, old.value,0 ); }else {struct bsca_block *sca = vcpu->kvm->arch.sca;union bsca_sigp_ctrl *sigp_ctrl = &(sca->cpu[vcpu->vcpu_id].sigp_ctrl); -union bsca_sigp_ctrl old = *sigp_ctrl; +union bsca_sigp_ctrl old; + old =READ_ONCE (*sigp_ctrl); expect = old.value; rc =cmpxchg (&sigp_ctrl->value, old.value,0 ); }
arch/sh/kernel/traps.c +1 -1
@@ -57,7 +57,7 @@ void die(const char *str, struct pt_regs *regs, long err)if (panic_on_oops)panic ("Fatal exception" ); -do_exit (SIGSEGV ); +make_task_dead (SIGSEGV ); }void die_if_kernel (const char *str,struct pt_regs *regs,long err)
arch/sparc/kernel/traps_32.c +1 -3
@@ -86,9 +86,7 @@ void __noreturn die_if_kernel(char *str, struct pt_regs *regs) }printk ("Instruction DUMP:" );instruction_dump ((unsigned long *) regs->pc); -if (regs->psr &PSR_PS ) -do_exit (SIGKILL ); -do_exit (SIGSEGV ); +make_task_dead ((regs->psr &PSR_PS ) ?SIGKILL :SIGSEGV ); }void do_hw_interrupt (struct pt_regs *regs,unsigned long type)
arch/sparc/kernel/traps_64.c +1 -3
@@ -2559,9 +2559,7 @@ void __noreturn die_if_kernel(char *str, struct pt_regs *regs) }if (panic_on_oops)panic ("Fatal exception" ); -if (regs->tstate &TSTATE_PRIV ) -do_exit (SIGKILL ); -do_exit (SIGSEGV ); +make_task_dead ((regs->tstate &TSTATE_PRIV )?SIGKILL :SIGSEGV ); }EXPORT_SYMBOL (die_if_kernel);
arch/x86/entry/entry_32.S +3 -3
@@ -1239,14 +1239,14 @@ SYM_CODE_START(asm_exc_nmi) SYM_CODE_END(asm_exc_nmi) .pushsection .text, "ax" -SYM_CODE_START(rewind_stack_do_exit) +SYM_CODE_START(rewind_stack_and_make_dead) /* Prevent any naive code from trying to unwind to our caller. */ xorl %ebp, %ebp movl PER_CPU_VAR(cpu_current_top_of_stack), %esi leal -TOP_OF_KERNEL_STACK_PADDING-PTREGS_SIZE(%esi), %esp - call do_exit + call make_task_dead 1: jmp 1b -SYM_CODE_END(rewind_stack_do_exit) +SYM_CODE_END(rewind_stack_and_make_dead) .popsection
arch/x86/entry/entry_64.S +3 -3
@@ -1487,7 +1487,7 @@ SYM_CODE_END(ignore_sysret) #endif .pushsection .text, "ax" -SYM_CODE_START(rewind_stack_do_exit) +SYM_CODE_START(rewind_stack_and_make_dead) UNWIND_HINT_FUNC /* Prevent any naive code from trying to unwind to our caller. */ xorl %ebp, %ebp
@@ -1496,6 +1496,6 @@ SYM_CODE_START(rewind_stack_do_exit) leaq -PTREGS_SIZE(%rax), %rsp UNWIND_HINT_REGS - call do_exit -SYM_CODE_END(rewind_stack_do_exit) + call make_task_dead +SYM_CODE_END(rewind_stack_and_make_dead) .popsection
arch/x86/events/amd/core.c +1 -1
@@ -976,7 +976,7 @@ static int __init amd_core_pmu_init(void)* numbered counter following it. */ for (i =0 ; i < x86_pmu.num_counters -1 ; i +=2 ) - even_ctr_mask |=1 << i; + even_ctr_mask |=BIT_ULL (i); pair_constraint = (struct event_constraint ) __EVENT_CONSTRAINT(0, even_ctr_mask, 0,
arch/x86/events/intel/uncore.c +1 -0
@@ -1829,6 +1829,7 @@ static const struct x86_cpu_id intel_uncore_match[] __initconst = {X86_MATCH_INTEL_FAM6_MODEL (ALDERLAKE , &adl_uncore_init),X86_MATCH_INTEL_FAM6_MODEL (ALDERLAKE_L , &adl_uncore_init),X86_MATCH_INTEL_FAM6_MODEL (SAPPHIRERAPIDS_X , &spr_uncore_init), +X86_MATCH_INTEL_FAM6_MODEL (EMERALDRAPIDS_X , &spr_uncore_init), X86_MATCH_INTEL_FAM6_MODEL(ATOM_TREMONT_D, &snr_uncore_init), {}, };
arch/x86/events/msr.c +1 -0
@@ -69,6 +69,7 @@ static bool test_intel(int idx, void *data)case INTEL_FAM6_BROADWELL_G :case INTEL_FAM6_BROADWELL_X :case INTEL_FAM6_SAPPHIRERAPIDS_X : +case INTEL_FAM6_EMERALDRAPIDS_X :case INTEL_FAM6_ATOM_SILVERMONT :case INTEL_FAM6_ATOM_SILVERMONT_D :
arch/x86/kernel/acpi/cstate.c +15 -0
@@ -79,6 +79,21 @@ void acpi_processor_power_init_bm_check(struct acpi_processor_flags *flags,*/ flags->bm_control =0 ; } +if (c->x86_vendor ==X86_VENDOR_AMD && c->x86 >=0x17 ) { +/* +* For all AMD Zen or newer CPUs that support C3, caches +* should not be flushed by software while entering C3 +* type state. Set bm->check to 1 so that kernel doesn't +* need to execute cache flush operation. +*/ + flags->bm_check =1 ; +/* +* In current AMD C state implementation ARB_DIS is no longer +* used. So set bm_control to zero to indicate ARB_DIS is not +* required while entering C3 type state. +*/ + flags->bm_control =0 ; + } }EXPORT_SYMBOL (acpi_processor_power_init_bm_check);
arch/x86/kernel/dumpstack.c +2 -2
@@ -351,7 +351,7 @@ unsigned long oops_begin(void) }NOKPROBE_SYMBOL (oops_begin); -void __noreturn rewind_stack_do_exit (int signr); +void __noreturn rewind_stack_and_make_dead (int signr);void oops_end (unsigned long flags,struct pt_regs *regs,int signr) {
@@ -386,7 +386,7 @@ void oops_end(unsigned long flags, struct pt_regs *regs, int signr)* reuse the task stack and that existing poisons are invalid. */ kasan_unpoison_task_stack (current); -rewind_stack_do_exit (signr); +rewind_stack_and_make_dead (signr); }NOKPROBE_SYMBOL (oops_end);
arch/x86/kernel/i8259.c +1 -0
@@ -114,6 +114,7 @@ static void make_8259A_irq(unsigned int irq)disable_irq_nosync (irq); io_apic_irqs &= ~(1 <<irq);irq_set_chip_and_handler (irq, &i8259A_chip, handle_level_irq); +irq_set_status_flags (irq,IRQ_LEVEL );enable_irq (irq);lapic_assign_legacy_vector (irq, true); }
arch/x86/kernel/irqinit.c +3 -1
@@ -65,8 +65,10 @@ void __init init_ISA_irqs(void) legacy_pic->init (0 ); -for (i =0 ; i <nr_legacy_irqs (); i++) +for (i =0 ; i <nr_legacy_irqs (); i++) {irq_set_chip_and_handler (i, chip, handle_level_irq); +irq_set_status_flags (i,IRQ_LEVEL ); + } }void __init init_IRQ (void )
arch/x86/kvm/svm/svm.c +23 -11
@@ -465,11 +465,24 @@ static int has_svm(void)return 1 ; } +void __svm_write_tsc_multiplier (u64 multiplier) +{ +preempt_disable (); + +if (multiplier ==__this_cpu_read (current_tsc_ratio)) + goto out; + +wrmsrl (MSR_AMD64_TSC_RATIO , multiplier); +__this_cpu_write (current_tsc_ratio, multiplier); +out: +preempt_enable (); +} +static void svm_hardware_disable (void ) {/* Make sure we clean up behind us */ if (static_cpu_has (X86_FEATURE_TSCRATEMSR )) -wrmsrl (MSR_AMD64_TSC_RATIO ,TSC_RATIO_DEFAULT ); +__svm_write_tsc_multiplier (TSC_RATIO_DEFAULT );cpu_svm_disable ();
@@ -511,8 +524,11 @@ static int svm_hardware_enable(void)wrmsrl (MSR_VM_HSAVE_PA ,__sme_page_pa (sd->save_area));if (static_cpu_has (X86_FEATURE_TSCRATEMSR )) { -wrmsrl (MSR_AMD64_TSC_RATIO ,TSC_RATIO_DEFAULT ); -__this_cpu_write (current_tsc_ratio,TSC_RATIO_DEFAULT ); +/* +* Set the default value, even if we don't use TSC scaling +* to avoid having stale value in the msr +*/ +__svm_write_tsc_multiplier (TSC_RATIO_DEFAULT ); }
@@ -1125,9 +1141,10 @@ static void svm_write_tsc_offset(struct kvm_vcpu *vcpu, u64 offset)static void svm_write_tsc_multiplier (struct kvm_vcpu *vcpu,u64 multiplier) { -wrmsrl (MSR_AMD64_TSC_RATIO , multiplier); +__svm_write_tsc_multiplier (multiplier); } +/* Evaluate instruction intercepts that depend on guest CPUID features. */ static void svm_recalc_instruction_intercepts (struct kvm_vcpu *vcpu,struct vcpu_svm *svm)
@@ -1451,13 +1468,8 @@ static void svm_prepare_guest_switch(struct kvm_vcpu *vcpu)vmsave (__sme_page_pa (sd->save_area)); } -if (static_cpu_has (X86_FEATURE_TSCRATEMSR )) { -u64 tsc_ratio = vcpu->arch.tsc_scaling_ratio; -if (tsc_ratio !=__this_cpu_read (current_tsc_ratio)) { -__this_cpu_write (current_tsc_ratio, tsc_ratio); -wrmsrl (MSR_AMD64_TSC_RATIO , tsc_ratio); - } - } +if (static_cpu_has (X86_FEATURE_TSCRATEMSR )) +__svm_write_tsc_multiplier (vcpu->arch.tsc_scaling_ratio);if (likely (tsc_aux_uret_slot >=0 ))kvm_set_user_return_msr (tsc_aux_uret_slot, svm->tsc_aux,-1ull );
arch/x86/kvm/svm/svm.h +1 -0
@@ -487,6 +487,7 @@ int nested_svm_check_exception(struct vcpu_svm *svm, unsigned nr,int nested_svm_exit_special (struct vcpu_svm *svm);void nested_load_control_from_vmcb12 (struct vcpu_svm *svm,struct vmcb_control_area *control); +void __svm_write_tsc_multiplier (u64 multiplier);void nested_sync_control_from_vmcb02 (struct vcpu_svm *svm);void nested_vmcb02_compute_g_pat (struct vcpu_svm *svm);void svm_switch_vmcb (struct vcpu_svm *svm,struct kvm_vmcb_info *target_vmcb);
arch/x86/kvm/vmx/vmx.c +9 -12
@@ -3361,18 +3361,15 @@ static u32 vmx_segment_access_rights(struct kvm_segment *var) {u32 ar; -if (var->unusable || !var->present) - ar =1 <<16 ; -else { - ar = var->type &15 ; - ar |= (var->s &1 ) <<4 ; - ar |= (var->dpl &3 ) <<5 ; - ar |= (var->present &1 ) <<7 ; - ar |= (var->avl &1 ) <<12 ; - ar |= (var->l &1 ) <<13 ; - ar |= (var->db &1 ) <<14 ; - ar |= (var->g &1 ) <<15 ; - } + ar = var->type &15 ; + ar |= (var->s &1 ) <<4 ; + ar |= (var->dpl &3 ) <<5 ; + ar |= (var->present &1 ) <<7 ; + ar |= (var->avl &1 ) <<12 ; + ar |= (var->l &1 ) <<13 ; + ar |= (var->db &1 ) <<14 ; + ar |= (var->g &1 ) <<15 ; + ar |= (var->unusable || !var->present) <<16 ;return ar; }
arch/xtensa/kernel/traps.c +1 -1
@@ -552,5 +552,5 @@ void die(const char * str, struct pt_regs * regs, long err)if (panic_on_oops)panic ("Fatal exception" ); -do_exit (err); +make_task_dead (err); }
block/blk-core.c +2 -6
@@ -698,14 +698,10 @@ static inline bool should_fail_request(struct block_device *part,static inline bool bio_check_ro (struct bio *bio) {if (op_is_write (bio_op (bio)) &&bdev_read_only (bio->bi_bdev)) { -char b[BDEVNAME_SIZE ]; -if (op_is_flush (bio->bi_opf) && !bio_sectors (bio))return false; - -WARN_ONCE (1 , -"Trying to write to read-only block-device %s (partno %d)\n" , -bio_devname (bio, b), bio->bi_bdev->bd_partno); +pr_warn ("Trying to write to read-only block-device %pg\n" , + bio->bi_bdev);/* Older lvm-tools actually trigger this */ return false; }
drivers/base/property.c +12 -6
@@ -1055,26 +1055,32 @@ struct fwnode_handle * fwnode_graph_get_next_endpoint(const struct fwnode_handle *fwnode, struct fwnode_handle *prev) { + struct fwnode_handle *ep, *port_parent = NULL;const struct fwnode_handle *parent; -struct fwnode_handle *ep;/* * If this function is in a loop and the previous iteration returned * an endpoint from fwnode->secondary, then we need to use the secondary * as parent rather than @fwnode. */ -if (prev) - parent =fwnode_graph_get_port_parent (prev); -else +if (prev) { + port_parent =fwnode_graph_get_port_parent (prev); + parent = port_parent; + }else { parent = fwnode; + }if (IS_ERR_OR_NULL (parent))return NULL ; ep =fwnode_call_ptr_op (parent, graph_get_next_endpoint, prev);if (ep) -return ep; + goto out_put_port_parent; + + ep =fwnode_graph_get_next_endpoint (parent->secondary,NULL ); -return fwnode_graph_get_next_endpoint (parent->secondary,NULL ); +out_put_port_parent: +fwnode_handle_put (port_parent); +return ep; }EXPORT_SYMBOL_GPL (fwnode_graph_get_next_endpoint);
drivers/base/test/test_async_driver_probe.c +1 -1
@@ -146,7 +146,7 @@ static int __init test_async_probe_init(void) calltime =ktime_get ();for_each_online_cpu (cpu) { nid =cpu_to_node (cpu); - pdev = &sync_dev[sync_id]; + pdev = &async_dev[async_id]; *pdev = test_platform_device_register_node("test_async_driver", async_id,
drivers/cpufreq/armada-37xx-cpufreq.c +1 -1
@@ -445,7 +445,7 @@ static int __init armada37xx_cpufreq_driver_init(void)return -ENODEV ; } - clk =clk_get (cpu_dev,0 ); + clk =clk_get (cpu_dev,NULL );if (IS_ERR (clk)) {dev_err (cpu_dev,"Cannot get clock for CPU0\n" );return PTR_ERR (clk);
drivers/cpufreq/cpufreq-dt-platdev.c +2 -0
@@ -133,6 +133,7 @@ static const struct of_device_id blocklist[] __initconst = { { .compatible = "nvidia,tegra30", }, { .compatible = "nvidia,tegra124", }, { .compatible = "nvidia,tegra210", }, + { .compatible = "nvidia,tegra234", }, { .compatible = "qcom,apq8096", }, { .compatible = "qcom,msm8996", },
@@ -143,6 +144,7 @@ static const struct of_device_id blocklist[] __initconst = { { .compatible = "qcom,sc8180x", }, { .compatible = "qcom,sdm845", }, { .compatible = "qcom,sm6350", }, + { .compatible = "qcom,sm6375", }, { .compatible = "qcom,sm8150", }, { .compatible = "qcom,sm8250", }, { .compatible = "qcom,sm8350", },
drivers/cpufreq/cpufreq_governor.c +13 -7
@@ -388,6 +388,15 @@ static void free_policy_dbs_info(struct policy_dbs_info *policy_dbs, gov->free (policy_dbs); } +static void cpufreq_dbs_data_release (struct kobject *kobj) +{ +struct dbs_data *dbs_data =to_dbs_data (to_gov_attr_set (kobj)); +struct dbs_governor *gov = dbs_data->gov; + + gov->exit (dbs_data); +kfree (dbs_data); +} +int cpufreq_dbs_governor_init (struct cpufreq_policy *policy) {struct dbs_governor *gov =dbs_governor_of (policy);
@@ -425,6 +434,7 @@ int cpufreq_dbs_governor_init(struct cpufreq_policy *policy) goto free_policy_dbs_info; } + dbs_data->gov = gov;gov_attr_set_init (&dbs_data->attr_set, &policy_dbs->list); ret = gov->init (dbs_data);
@@ -447,6 +457,7 @@ int cpufreq_dbs_governor_init(struct cpufreq_policy *policy) policy->governor_data = policy_dbs; gov->kobj_type.sysfs_ops = &governor_sysfs_ops; + gov->kobj_type.release = cpufreq_dbs_data_release; ret =kobject_init_and_add (&dbs_data->attr_set.kobj, &gov->kobj_type,get_governor_parent_kobj (policy),"%s" , gov->gov.name);
@@ -488,13 +499,8 @@ void cpufreq_dbs_governor_exit(struct cpufreq_policy *policy) policy->governor_data =NULL ; -if (!count) { -if (!have_governor_per_policy ()) - gov->gdbs_data =NULL ; - - gov->exit (dbs_data); -kfree (dbs_data); - } +if (!count && !have_governor_per_policy ()) + gov->gdbs_data =NULL ;free_policy_dbs_info (policy_dbs, gov);
drivers/cpufreq/cpufreq_governor.h +1 -0
@@ -37,6 +37,7 @@ enum {OD_NORMAL_SAMPLE, OD_SUB_SAMPLE};/* Governor demand based switching data (per-policy or global). */ struct dbs_data {struct gov_attr_set attr_set; +struct dbs_governor *gov;void *tuners;unsigned int ignore_nice_load;unsigned int sampling_rate;
drivers/cpufreq/cpufreq_governor_attr_set.c +0 -5
@@ -8,11 +8,6 @@#include "cpufreq_governor.h" -static inline struct gov_attr_set *to_gov_attr_set (struct kobject *kobj) -{ - return container_of(kobj, struct gov_attr_set, kobj); -} -static inline struct governor_attr *to_gov_attr (struct attribute *attr) { return container_of(attr, struct governor_attr, attr);
drivers/dma/dmaengine.c +4 -3
@@ -451,7 +451,8 @@ static int dma_chan_get(struct dma_chan *chan)/* The channel is already in use, update client count */ if (chan->client_count) {__module_get (owner); - goto out; + chan->client_count++; +return 0 ; }if (!try_module_get (owner))
@@ -470,11 +471,11 @@ static int dma_chan_get(struct dma_chan *chan) goto err_out; } + chan->client_count++; +if (!dma_has_cap (DMA_PRIVATE , chan->device->cap_mask))balance_ref_count (chan); -out: - chan->client_count++;return 0 ; err_out:
drivers/dma/ptdma/ptdma-dev.c +4 -3
@@ -71,12 +71,13 @@ static int pt_core_execute_cmd(struct ptdma_desc *desc, struct pt_cmd_queue *cmdbool soc =FIELD_GET (DWORD0_SOC , desc->dw0);u8 *q_desc = (u8 *)&cmd_q->qbase[cmd_q->qidx];u32 tail; +unsigned long flags;if (soc) { desc->dw0 |=FIELD_PREP (DWORD0_IOC , desc->dw0); desc->dw0 &= ~DWORD0_SOC ; } -mutex_lock (&cmd_q->q_mutex); +spin_lock_irqsave (&cmd_q->q_lock, flags);/* Copy 32-byte command descriptor to hw queue. */ memcpy (q_desc, desc,32 );
@@ -91,7 +92,7 @@ static int pt_core_execute_cmd(struct ptdma_desc *desc, struct pt_cmd_queue *cmd/* Turn the queue back on using our cached control register */ pt_start_queue (cmd_q); -mutex_unlock (&cmd_q->q_mutex); +spin_unlock_irqrestore (&cmd_q->q_lock, flags);return 0 ; }
@@ -197,7 +198,7 @@ int pt_core_init(struct pt_device *pt) cmd_q->pt = pt; cmd_q->dma_pool = dma_pool; -mutex_init (&cmd_q->q_mutex); +spin_lock_init (&cmd_q->q_lock);/* Page alignment satisfies our needs for N <= 128 */ cmd_q->qsize =Q_SIZE (Q_DESC_SIZE );
drivers/dma/ptdma/ptdma.h +1 -1
@@ -196,7 +196,7 @@ struct pt_cmd_queue {struct ptdma_desc *qbase;/* Aligned queue start address (per requirement) */ -struct mutex q_mutex____cacheline_aligned ; +spinlock_t q_lock____cacheline_aligned ;unsigned int qidx;unsigned int qsize;
drivers/dma/ti/k3-udma.c +3 -2
@@ -760,11 +760,12 @@ static void udma_decrement_byte_counters(struct udma_chan *uc, u32 val)if (uc->desc->dir ==DMA_DEV_TO_MEM ) {udma_rchanrt_write (uc,UDMA_CHAN_RT_BCNT_REG , val);udma_rchanrt_write (uc,UDMA_CHAN_RT_SBCNT_REG , val); -udma_rchanrt_write (uc,UDMA_CHAN_RT_PEER_BCNT_REG , val); +if (uc->config.ep_type !=PSIL_EP_NATIVE ) +udma_rchanrt_write (uc,UDMA_CHAN_RT_PEER_BCNT_REG , val); }else {udma_tchanrt_write (uc,UDMA_CHAN_RT_BCNT_REG , val);udma_tchanrt_write (uc,UDMA_CHAN_RT_SBCNT_REG , val); -if (!uc->bchan) +if (!uc->bchan && uc->config.ep_type !=PSIL_EP_NATIVE )udma_tchanrt_write (uc,UDMA_CHAN_RT_PEER_BCNT_REG , val); } }
drivers/dma/xilinx/xilinx_dma.c +3 -1
@@ -3138,8 +3138,10 @@ static int xilinx_dma_probe(struct platform_device *pdev)/* Initialize the channels */ for_each_child_of_node (node, child) { err =xilinx_dma_child_probe (xdev, child); -if (err <0 ) +if (err <0 ) { +of_node_put (child); goto error; + } }if (xdev->dma_config->dmatype ==XDMA_TYPE_VDMA ) {
drivers/edac/edac_device.c +7 -8
@@ -34,6 +34,9 @@static DEFINE_MUTEX (device_ctls_mutex);static LIST_HEAD (edac_device_list); +/* Default workqueue processing interval on this instance, in msecs */ +#define DEFAULT_POLL_INTERVAL 1000 +#ifdef CONFIG_EDAC_DEBUG static void edac_device_dump_device (struct edac_device_ctl_info *edac_dev) {
@@ -366,7 +369,7 @@ static void edac_device_workq_function(struct work_struct *work_req)* whole one second to save timers firing all over the period * between integral seconds */ -if (edac_dev->poll_msec ==1000 ) +if (edac_dev->poll_msec ==DEFAULT_POLL_INTERVAL )edac_queue_work (&edac_dev->work,round_jiffies_relative (edac_dev->delay));else edac_queue_work (&edac_dev->work, edac_dev->delay);
@@ -396,7 +399,7 @@ static void edac_device_workq_setup(struct edac_device_ctl_info *edac_dev,* timers firing on sub-second basis, while they are happy * to fire together on the 1 second exactly */ -if (edac_dev->poll_msec ==1000 ) +if (edac_dev->poll_msec ==DEFAULT_POLL_INTERVAL )edac_queue_work (&edac_dev->work,round_jiffies_relative (edac_dev->delay));else edac_queue_work (&edac_dev->work, edac_dev->delay);
@@ -430,7 +433,7 @@ void edac_device_reset_delay_period(struct edac_device_ctl_info *edac_dev, edac_dev->delay =msecs_to_jiffies (msec);/* See comment in edac_device_workq_setup() above */ -if (edac_dev->poll_msec ==1000 ) +if (edac_dev->poll_msec ==DEFAULT_POLL_INTERVAL )edac_mod_work (&edac_dev->work,round_jiffies_relative (edac_dev->delay));else edac_mod_work (&edac_dev->work, edac_dev->delay);
@@ -472,11 +475,7 @@ int edac_device_add_device(struct edac_device_ctl_info *edac_dev)/* This instance is NOW RUNNING */ edac_dev->op_state =OP_RUNNING_POLL ; -/* -* enable workq processing on this instance, -* default = 1000 msec -*/ -edac_device_workq_setup (edac_dev,1000 ); +edac_device_workq_setup (edac_dev, edac_dev->poll_msec ?:DEFAULT_POLL_INTERVAL ); }else { edac_dev->op_state =OP_RUNNING_INTERRUPT ; }
drivers/edac/highbank_mc_edac.c +5 -2
@@ -174,8 +174,10 @@ static int highbank_mc_probe(struct platform_device *pdev) drvdata = mci->pvt_info;platform_set_drvdata (pdev, mci); -if (!devres_open_group (&pdev->dev,NULL ,GFP_KERNEL )) -return -ENOMEM ; +if (!devres_open_group (&pdev->dev,NULL ,GFP_KERNEL )) { + res = -ENOMEM ; + goto free; + } r =platform_get_resource (pdev,IORESOURCE_MEM ,0 );if (!r) {
@@ -243,6 +245,7 @@ static int highbank_mc_probe(struct platform_device *pdev)edac_mc_del_mc (&pdev->dev); err:devres_release_group (&pdev->dev,NULL ); +free:edac_mc_free (mci);return res; }
drivers/edac/qcom_edac.c +2 -3
@@ -252,7 +252,7 @@ dump_syn_reg_values(struct llcc_drv_data *drv, u32 bank, int err_type)static int dump_syn_reg (struct edac_device_ctl_info *edev_ctl,int err_type,u32 bank) { -struct llcc_drv_data *drv = edev_ctl->pvt_info; +struct llcc_drv_data *drv = edev_ctl->dev->platform_data;int ret; ret =dump_syn_reg_values (drv, bank, err_type);
@@ -289,7 +289,7 @@ static irqreturn_t llcc_ecc_irq_handler(int irq, void *edev_ctl) { struct edac_device_ctl_info *edac_dev_ctl = edev_ctl; -struct llcc_drv_data *drv = edac_dev_ctl->pvt_info; +struct llcc_drv_data *drv = edac_dev_ctl->dev->platform_data;irqreturn_t irq_rc =IRQ_NONE ;u32 drp_error, trp_error, i;int ret;
@@ -358,7 +358,6 @@ static int qcom_llcc_edac_probe(struct platform_device *pdev) edev_ctl->dev_name =dev_name (dev); edev_ctl->ctl_name ="llcc" ; edev_ctl->panic_on_ue =LLCC_ERP_PANIC_ON_UE ; - edev_ctl->pvt_info = llcc_driv_data; rc =edac_device_add_device (edev_ctl);if (rc)
drivers/firmware/arm_scmi/shmem.c +6 -3
@@ -58,10 +58,11 @@ u32 shmem_read_header(struct scmi_shared_mem __iomem *shmem)void shmem_fetch_response (struct scmi_shared_mem __iomem *shmem,struct scmi_xfer *xfer) { +size_t len =ioread32 (&shmem->length); + xfer->hdr.status =ioread32 (shmem->msg_payload);/* Skip the length of header and status in shmem area i.e 8 bytes */ - xfer->rx.len =min_t (size_t, xfer->rx.len, -ioread32 (&shmem->length) -8 ); + xfer->rx.len =min_t (size_t, xfer->rx.len, len >8 ? len -8 :0 );/* Take a copy to the rx buffer.. */ memcpy_fromio (xfer->rx.buf, shmem->msg_payload +4 , xfer->rx.len);
@@ -70,8 +71,10 @@ void shmem_fetch_response(struct scmi_shared_mem __iomem *shmem,void shmem_fetch_notification (struct scmi_shared_mem __iomem *shmem,size_t max_len,struct scmi_xfer *xfer) { +size_t len =ioread32 (&shmem->length); +/* Skip only the length of header in shmem area i.e 4 bytes */ - xfer->rx.len =min_t (size_t, max_len,ioread32 (&shmem->length) -4 ); + xfer->rx.len =min_t (size_t, max_len, len >4 ? len -4 :0 );/* Take a copy to the rx buffer.. */ memcpy_fromio (xfer->rx.buf, shmem->msg_payload, xfer->rx.len);
drivers/firmware/google/coreboot_table.c +7 -2
@@ -93,7 +93,12 @@ static int coreboot_table_populate(struct device *dev, void *ptr)for (i =0 ; i < header->table_entries; i++) { entry = ptr_entry; - device =kzalloc (sizeof (struct device ) + entry->size,GFP_KERNEL ); +if (entry->size <sizeof (*entry)) { +dev_warn (dev,"coreboot table entry too small!\n" ); +return -EINVAL ; + } + + device =kzalloc (sizeof (device->dev) + entry->size,GFP_KERNEL );if (!device)return -ENOMEM ;
@@ -101,7 +106,7 @@ static int coreboot_table_populate(struct device *dev, void *ptr) device->dev.parent = dev; device->dev.bus = &coreboot_bus_type; device->dev.release = coreboot_device_release; -memcpy (&device->entry, ptr_entry, entry->size); +memcpy (device->raw, ptr_entry, entry->size); ret =device_register (&device->dev);if (ret) {
drivers/firmware/google/coreboot_table.h +1 -0
@@ -66,6 +66,7 @@ struct coreboot_device {struct coreboot_table_entry entry;struct lb_cbmem_ref cbmem_ref;struct lb_framebuffer framebuffer; +DECLARE_FLEX_ARRAY (u8, raw); }; };
drivers/gpio/gpio-amdpt.c +5 -5
@@ -35,19 +35,19 @@ static int pt_gpio_request(struct gpio_chip *gc, unsigned offset)dev_dbg (gc->parent,"pt_gpio_request offset=%x\n" , offset); -spin_lock_irqsave (&gc->bgpio_lock, flags); +raw_spin_lock_irqsave (&gc->bgpio_lock, flags); using_pins =readl (pt_gpio->reg_base +PT_SYNC_REG );if (using_pins &BIT (offset)) {dev_warn (gc->parent,"PT GPIO pin %x reconfigured\n" , offset); -spin_unlock_irqrestore (&gc->bgpio_lock, flags); +raw_spin_unlock_irqrestore (&gc->bgpio_lock, flags);return -EINVAL ; }writel (using_pins |BIT (offset), pt_gpio->reg_base +PT_SYNC_REG ); -spin_unlock_irqrestore (&gc->bgpio_lock, flags); +raw_spin_unlock_irqrestore (&gc->bgpio_lock, flags);return 0 ; }
@@ -58,13 +58,13 @@ static void pt_gpio_free(struct gpio_chip *gc, unsigned offset)unsigned long flags;u32 using_pins; -spin_lock_irqsave (&gc->bgpio_lock, flags); +raw_spin_lock_irqsave (&gc->bgpio_lock, flags); using_pins =readl (pt_gpio->reg_base +PT_SYNC_REG ); using_pins &= ~BIT (offset);writel (using_pins, pt_gpio->reg_base +PT_SYNC_REG ); -spin_unlock_irqrestore (&gc->bgpio_lock, flags); +raw_spin_unlock_irqrestore (&gc->bgpio_lock, flags);dev_dbg (gc->parent,"pt_gpio_free offset=%x\n" , offset); }
drivers/gpio/gpio-brcmstb.c +6 -6
@@ -92,9 +92,9 @@ brcmstb_gpio_get_active_irqs(struct brcmstb_gpio_bank *bank)unsigned long status;unsigned long flags; -spin_lock_irqsave (&bank->gc.bgpio_lock, flags); +raw_spin_lock_irqsave (&bank->gc.bgpio_lock, flags); status =__brcmstb_gpio_get_active_irqs (bank); -spin_unlock_irqrestore (&bank->gc.bgpio_lock, flags); +raw_spin_unlock_irqrestore (&bank->gc.bgpio_lock, flags);return status; }
@@ -114,14 +114,14 @@ static void brcmstb_gpio_set_imask(struct brcmstb_gpio_bank *bank,u32 imask;unsigned long flags; -spin_lock_irqsave (&gc->bgpio_lock, flags); +raw_spin_lock_irqsave (&gc->bgpio_lock, flags); imask = gc->read_reg (priv->reg_base +GIO_MASK (bank->id));if (enable) imask |= mask;else imask &= ~mask; gc->write_reg (priv->reg_base +GIO_MASK (bank->id), imask); -spin_unlock_irqrestore (&gc->bgpio_lock, flags); +raw_spin_unlock_irqrestore (&gc->bgpio_lock, flags); }static int brcmstb_gpio_to_irq (struct gpio_chip *gc,unsigned offset)
@@ -204,7 +204,7 @@ static int brcmstb_gpio_irq_set_type(struct irq_data *d, unsigned int type)return -EINVAL ; } -spin_lock_irqsave (&bank->gc.bgpio_lock, flags); +raw_spin_lock_irqsave (&bank->gc.bgpio_lock, flags); iedge_config = bank->gc.read_reg (priv->reg_base +GIO_EC (bank->id)) & ~mask;
@@ -220,7 +220,7 @@ static int brcmstb_gpio_irq_set_type(struct irq_data *d, unsigned int type) bank->gc.write_reg (priv->reg_base +GIO_LEVEL (bank->id), ilevel | level); -spin_unlock_irqrestore (&bank->gc.bgpio_lock, flags); +raw_spin_unlock_irqrestore (&bank->gc.bgpio_lock, flags);return 0 ; }
drivers/gpio/gpio-cadence.c +6 -6
@@ -41,12 +41,12 @@ static int cdns_gpio_request(struct gpio_chip *chip, unsigned int offset)struct cdns_gpio_chip *cgpio =gpiochip_get_data (chip);unsigned long flags; -spin_lock_irqsave (&chip->bgpio_lock, flags); +raw_spin_lock_irqsave (&chip->bgpio_lock, flags);iowrite32 (ioread32 (cgpio->regs +CDNS_GPIO_BYPASS_MODE ) & ~BIT (offset), cgpio->regs +CDNS_GPIO_BYPASS_MODE ); -spin_unlock_irqrestore (&chip->bgpio_lock, flags); +raw_spin_unlock_irqrestore (&chip->bgpio_lock, flags);return 0 ; }
@@ -55,13 +55,13 @@ static void cdns_gpio_free(struct gpio_chip *chip, unsigned int offset)struct cdns_gpio_chip *cgpio =gpiochip_get_data (chip);unsigned long flags; -spin_lock_irqsave (&chip->bgpio_lock, flags); +raw_spin_lock_irqsave (&chip->bgpio_lock, flags);iowrite32 (ioread32 (cgpio->regs +CDNS_GPIO_BYPASS_MODE ) | (BIT (offset) & cgpio->bypass_orig), cgpio->regs +CDNS_GPIO_BYPASS_MODE ); -spin_unlock_irqrestore (&chip->bgpio_lock, flags); +raw_spin_unlock_irqrestore (&chip->bgpio_lock, flags); }static void cdns_gpio_irq_mask (struct irq_data *d)
@@ -90,7 +90,7 @@ static int cdns_gpio_irq_set_type(struct irq_data *d, unsigned int type)u32 mask =BIT (d->hwirq);int ret =0 ; -spin_lock_irqsave (&chip->bgpio_lock, flags); +raw_spin_lock_irqsave (&chip->bgpio_lock, flags); int_value =ioread32 (cgpio->regs +CDNS_GPIO_IRQ_VALUE ) & ~mask; int_type =ioread32 (cgpio->regs +CDNS_GPIO_IRQ_TYPE ) & ~mask;
@@ -115,7 +115,7 @@ static int cdns_gpio_irq_set_type(struct irq_data *d, unsigned int type)iowrite32 (int_type, cgpio->regs +CDNS_GPIO_IRQ_TYPE ); err_irq_type: -spin_unlock_irqrestore (&chip->bgpio_lock, flags); +raw_spin_unlock_irqrestore (&chip->bgpio_lock, flags);return ret; }
drivers/gpio/gpio-dwapb.c +18 -18
@@ -242,9 +242,9 @@ static void dwapb_irq_ack(struct irq_data *d)u32 val =BIT (irqd_to_hwirq (d));unsigned long flags; -spin_lock_irqsave (&gc->bgpio_lock, flags); +raw_spin_lock_irqsave (&gc->bgpio_lock, flags);dwapb_write (gpio,GPIO_PORTA_EOI , val); -spin_unlock_irqrestore (&gc->bgpio_lock, flags); +raw_spin_unlock_irqrestore (&gc->bgpio_lock, flags); }static void dwapb_irq_mask (struct irq_data *d)
@@ -254,10 +254,10 @@ static void dwapb_irq_mask(struct irq_data *d)unsigned long flags;u32 val; -spin_lock_irqsave (&gc->bgpio_lock, flags); +raw_spin_lock_irqsave (&gc->bgpio_lock, flags); val =dwapb_read (gpio,GPIO_INTMASK ) |BIT (irqd_to_hwirq (d));dwapb_write (gpio,GPIO_INTMASK , val); -spin_unlock_irqrestore (&gc->bgpio_lock, flags); +raw_spin_unlock_irqrestore (&gc->bgpio_lock, flags); }static void dwapb_irq_unmask (struct irq_data *d)
@@ -267,10 +267,10 @@ static void dwapb_irq_unmask(struct irq_data *d)unsigned long flags;u32 val; -spin_lock_irqsave (&gc->bgpio_lock, flags); +raw_spin_lock_irqsave (&gc->bgpio_lock, flags); val =dwapb_read (gpio,GPIO_INTMASK ) & ~BIT (irqd_to_hwirq (d));dwapb_write (gpio,GPIO_INTMASK , val); -spin_unlock_irqrestore (&gc->bgpio_lock, flags); +raw_spin_unlock_irqrestore (&gc->bgpio_lock, flags); }static void dwapb_irq_enable (struct irq_data *d)
@@ -280,11 +280,11 @@ static void dwapb_irq_enable(struct irq_data *d)unsigned long flags;u32 val; -spin_lock_irqsave (&gc->bgpio_lock, flags); +raw_spin_lock_irqsave (&gc->bgpio_lock, flags); val =dwapb_read (gpio,GPIO_INTEN ); val |=BIT (irqd_to_hwirq (d));dwapb_write (gpio,GPIO_INTEN , val); -spin_unlock_irqrestore (&gc->bgpio_lock, flags); +raw_spin_unlock_irqrestore (&gc->bgpio_lock, flags); }static void dwapb_irq_disable (struct irq_data *d)
@@ -294,11 +294,11 @@ static void dwapb_irq_disable(struct irq_data *d)unsigned long flags;u32 val; -spin_lock_irqsave (&gc->bgpio_lock, flags); +raw_spin_lock_irqsave (&gc->bgpio_lock, flags); val =dwapb_read (gpio,GPIO_INTEN ); val &= ~BIT (irqd_to_hwirq (d));dwapb_write (gpio,GPIO_INTEN , val); -spin_unlock_irqrestore (&gc->bgpio_lock, flags); +raw_spin_unlock_irqrestore (&gc->bgpio_lock, flags); }static int dwapb_irq_set_type (struct irq_data *d,u32 type)
@@ -308,7 +308,7 @@ static int dwapb_irq_set_type(struct irq_data *d, u32 type)irq_hw_number_t bit =irqd_to_hwirq (d);unsigned long level, polarity, flags; -spin_lock_irqsave (&gc->bgpio_lock, flags); +raw_spin_lock_irqsave (&gc->bgpio_lock, flags); level =dwapb_read (gpio,GPIO_INTTYPE_LEVEL ); polarity =dwapb_read (gpio,GPIO_INT_POLARITY );
@@ -343,7 +343,7 @@ static int dwapb_irq_set_type(struct irq_data *d, u32 type)dwapb_write (gpio,GPIO_INTTYPE_LEVEL , level);if (type !=IRQ_TYPE_EDGE_BOTH )dwapb_write (gpio,GPIO_INT_POLARITY , polarity); -spin_unlock_irqrestore (&gc->bgpio_lock, flags); +raw_spin_unlock_irqrestore (&gc->bgpio_lock, flags);return 0 ; }
@@ -373,7 +373,7 @@ static int dwapb_gpio_set_debounce(struct gpio_chip *gc,unsigned long flags, val_deb;unsigned long mask =BIT (offset); -spin_lock_irqsave (&gc->bgpio_lock, flags); +raw_spin_lock_irqsave (&gc->bgpio_lock, flags); val_deb =dwapb_read (gpio,GPIO_PORTA_DEBOUNCE );if (debounce)
@@ -382,7 +382,7 @@ static int dwapb_gpio_set_debounce(struct gpio_chip *gc, val_deb &= ~mask;dwapb_write (gpio,GPIO_PORTA_DEBOUNCE , val_deb); -spin_unlock_irqrestore (&gc->bgpio_lock, flags); +raw_spin_unlock_irqrestore (&gc->bgpio_lock, flags);return 0 ; }
@@ -738,7 +738,7 @@ static int dwapb_gpio_suspend(struct device *dev)unsigned long flags;int i; -spin_lock_irqsave (&gc->bgpio_lock, flags); +raw_spin_lock_irqsave (&gc->bgpio_lock, flags);for (i =0 ; i < gpio->nr_ports; i++) {unsigned int offset;unsigned int idx = gpio->ports[i].idx;
@@ -765,7 +765,7 @@ static int dwapb_gpio_suspend(struct device *dev)dwapb_write (gpio,GPIO_INTMASK , ~ctx->wake_en); } } -spin_unlock_irqrestore (&gc->bgpio_lock, flags); +raw_spin_unlock_irqrestore (&gc->bgpio_lock, flags);clk_bulk_disable_unprepare (DWAPB_NR_CLOCKS , gpio->clks);
@@ -785,7 +785,7 @@ static int dwapb_gpio_resume(struct device *dev)return err; } -spin_lock_irqsave (&gc->bgpio_lock, flags); +raw_spin_lock_irqsave (&gc->bgpio_lock, flags);for (i =0 ; i < gpio->nr_ports; i++) {unsigned int offset;unsigned int idx = gpio->ports[i].idx;
@@ -812,7 +812,7 @@ static int dwapb_gpio_resume(struct device *dev)dwapb_write (gpio,GPIO_PORTA_EOI ,0xffffffff ); } } -spin_unlock_irqrestore (&gc->bgpio_lock, flags); +raw_spin_unlock_irqrestore (&gc->bgpio_lock, flags);return 0 ; }
drivers/gpio/gpio-grgpio.c +15 -15
@@ -145,7 +145,7 @@ static int grgpio_irq_set_type(struct irq_data *d, unsigned int type)return -EINVAL ; } -spin_lock_irqsave (&priv->gc.bgpio_lock, flags); +raw_spin_lock_irqsave (&priv->gc.bgpio_lock, flags); ipol = priv->gc.read_reg (priv->regs +GRGPIO_IPOL ) & ~mask; iedge = priv->gc.read_reg (priv->regs +GRGPIO_IEDGE ) & ~mask;
@@ -153,7 +153,7 @@ static int grgpio_irq_set_type(struct irq_data *d, unsigned int type) priv->gc.write_reg (priv->regs +GRGPIO_IPOL , ipol | pol); priv->gc.write_reg (priv->regs +GRGPIO_IEDGE , iedge | edge); -spin_unlock_irqrestore (&priv->gc.bgpio_lock, flags); +raw_spin_unlock_irqrestore (&priv->gc.bgpio_lock, flags);return 0 ; }
@@ -164,11 +164,11 @@ static void grgpio_irq_mask(struct irq_data *d)int offset = d->hwirq;unsigned long flags; -spin_lock_irqsave (&priv->gc.bgpio_lock, flags); +raw_spin_lock_irqsave (&priv->gc.bgpio_lock, flags);grgpio_set_imask (priv, offset,0 ); -spin_unlock_irqrestore (&priv->gc.bgpio_lock, flags); +raw_spin_unlock_irqrestore (&priv->gc.bgpio_lock, flags); }static void grgpio_irq_unmask (struct irq_data *d)
@@ -177,11 +177,11 @@ static void grgpio_irq_unmask(struct irq_data *d)int offset = d->hwirq;unsigned long flags; -spin_lock_irqsave (&priv->gc.bgpio_lock, flags); +raw_spin_lock_irqsave (&priv->gc.bgpio_lock, flags);grgpio_set_imask (priv, offset,1 ); -spin_unlock_irqrestore (&priv->gc.bgpio_lock, flags); +raw_spin_unlock_irqrestore (&priv->gc.bgpio_lock, flags); }static struct irq_chip grgpio_irq_chip = {
@@ -199,7 +199,7 @@ static irqreturn_t grgpio_irq_handler(int irq, void *dev)int i;int match =0 ; -spin_lock_irqsave (&priv->gc.bgpio_lock, flags); +raw_spin_lock_irqsave (&priv->gc.bgpio_lock, flags);/* * For each gpio line, call its interrupt handler if it its underlying
@@ -215,7 +215,7 @@ static irqreturn_t grgpio_irq_handler(int irq, void *dev) } } -spin_unlock_irqrestore (&priv->gc.bgpio_lock, flags); +raw_spin_unlock_irqrestore (&priv->gc.bgpio_lock, flags);if (!match)dev_warn (priv->dev,"No gpio line matched irq %d\n" , irq);
@@ -247,13 +247,13 @@ static int grgpio_irq_map(struct irq_domain *d, unsigned int irq,dev_dbg (priv->dev,"Mapping irq %d for gpio line %d\n" , irq, offset); -spin_lock_irqsave (&priv->gc.bgpio_lock, flags); +raw_spin_lock_irqsave (&priv->gc.bgpio_lock, flags);/* Request underlying irq if not already requested */ lirq->irq = irq; uirq = &priv->uirqs[lirq->index];if (uirq->refcnt ==0 ) { -spin_unlock_irqrestore (&priv->gc.bgpio_lock, flags); +raw_spin_unlock_irqrestore (&priv->gc.bgpio_lock, flags); ret =request_irq (uirq->uirq, grgpio_irq_handler,0 ,dev_name (priv->dev), priv);if (ret) {
@@ -262,11 +262,11 @@ static int grgpio_irq_map(struct irq_domain *d, unsigned int irq, uirq->uirq);return ret; } -spin_lock_irqsave (&priv->gc.bgpio_lock, flags); +raw_spin_lock_irqsave (&priv->gc.bgpio_lock, flags); } uirq->refcnt++; -spin_unlock_irqrestore (&priv->gc.bgpio_lock, flags); +raw_spin_unlock_irqrestore (&priv->gc.bgpio_lock, flags);/* Setup irq */ irq_set_chip_data (irq, priv);
@@ -290,7 +290,7 @@ static void grgpio_irq_unmap(struct irq_domain *d, unsigned int irq)irq_set_chip_and_handler (irq,NULL ,NULL );irq_set_chip_data (irq,NULL ); -spin_lock_irqsave (&priv->gc.bgpio_lock, flags); +raw_spin_lock_irqsave (&priv->gc.bgpio_lock, flags);/* Free underlying irq if last user unmapped */ index =-1 ;
@@ -309,13 +309,13 @@ static void grgpio_irq_unmap(struct irq_domain *d, unsigned int irq) uirq = &priv->uirqs[lirq->index]; uirq->refcnt--;if (uirq->refcnt ==0 ) { -spin_unlock_irqrestore (&priv->gc.bgpio_lock, flags); +raw_spin_unlock_irqrestore (&priv->gc.bgpio_lock, flags);free_irq (uirq->uirq, priv);return ; } } -spin_unlock_irqrestore (&priv->gc.bgpio_lock, flags); +raw_spin_unlock_irqrestore (&priv->gc.bgpio_lock, flags); }static const struct irq_domain_ops grgpio_irq_domain_ops = {
drivers/gpio/gpio-hlwd.c +9 -9
@@ -65,7 +65,7 @@ static void hlwd_gpio_irqhandler(struct irq_desc *desc)int hwirq;u32 emulated_pending; -spin_lock_irqsave (&hlwd->gpioc.bgpio_lock, flags); +raw_spin_lock_irqsave (&hlwd->gpioc.bgpio_lock, flags); pending =ioread32be (hlwd->regs +HW_GPIOB_INTFLAG ); pending &=ioread32be (hlwd->regs +HW_GPIOB_INTMASK );
@@ -93,7 +93,7 @@ static void hlwd_gpio_irqhandler(struct irq_desc *desc)/* Mark emulated interrupts as pending */ pending |= rising | falling; } -spin_unlock_irqrestore (&hlwd->gpioc.bgpio_lock, flags); +raw_spin_unlock_irqrestore (&hlwd->gpioc.bgpio_lock, flags);chained_irq_enter (chip, desc);
@@ -118,11 +118,11 @@ static void hlwd_gpio_irq_mask(struct irq_data *data)unsigned long flags;u32 mask; -spin_lock_irqsave (&hlwd->gpioc.bgpio_lock, flags); +raw_spin_lock_irqsave (&hlwd->gpioc.bgpio_lock, flags); mask =ioread32be (hlwd->regs +HW_GPIOB_INTMASK ); mask &= ~BIT (data->hwirq);iowrite32be (mask, hlwd->regs +HW_GPIOB_INTMASK ); -spin_unlock_irqrestore (&hlwd->gpioc.bgpio_lock, flags); +raw_spin_unlock_irqrestore (&hlwd->gpioc.bgpio_lock, flags); }static void hlwd_gpio_irq_unmask (struct irq_data *data)
@@ -132,11 +132,11 @@ static void hlwd_gpio_irq_unmask(struct irq_data *data)unsigned long flags;u32 mask; -spin_lock_irqsave (&hlwd->gpioc.bgpio_lock, flags); +raw_spin_lock_irqsave (&hlwd->gpioc.bgpio_lock, flags); mask =ioread32be (hlwd->regs +HW_GPIOB_INTMASK ); mask |=BIT (data->hwirq);iowrite32be (mask, hlwd->regs +HW_GPIOB_INTMASK ); -spin_unlock_irqrestore (&hlwd->gpioc.bgpio_lock, flags); +raw_spin_unlock_irqrestore (&hlwd->gpioc.bgpio_lock, flags); }static void hlwd_gpio_irq_enable (struct irq_data *data)
@@ -173,7 +173,7 @@ static int hlwd_gpio_irq_set_type(struct irq_data *data, unsigned int flow_type)unsigned long flags;u32 level; -spin_lock_irqsave (&hlwd->gpioc.bgpio_lock, flags); +raw_spin_lock_irqsave (&hlwd->gpioc.bgpio_lock, flags); hlwd->edge_emulation &= ~BIT (data->hwirq);
@@ -194,11 +194,11 @@ static int hlwd_gpio_irq_set_type(struct irq_data *data, unsigned int flow_type)hlwd_gpio_irq_setup_emulation (hlwd, data->hwirq, flow_type);break ;default : -spin_unlock_irqrestore (&hlwd->gpioc.bgpio_lock, flags); +raw_spin_unlock_irqrestore (&hlwd->gpioc.bgpio_lock, flags);return -EINVAL ; } -spin_unlock_irqrestore (&hlwd->gpioc.bgpio_lock, flags); +raw_spin_unlock_irqrestore (&hlwd->gpioc.bgpio_lock, flags);return 0 ; }
drivers/gpio/gpio-idt3243x.c +6 -6
@@ -57,7 +57,7 @@ static int idt_gpio_irq_set_type(struct irq_data *d, unsigned int flow_type)if (sense ==IRQ_TYPE_NONE || (sense &IRQ_TYPE_EDGE_BOTH ))return -EINVAL ; -spin_lock_irqsave (&gc->bgpio_lock, flags); +raw_spin_lock_irqsave (&gc->bgpio_lock, flags); ilevel =readl (ctrl->gpio +IDT_GPIO_ILEVEL );if (sense &IRQ_TYPE_LEVEL_HIGH )
@@ -68,7 +68,7 @@ static int idt_gpio_irq_set_type(struct irq_data *d, unsigned int flow_type)writel (ilevel, ctrl->gpio +IDT_GPIO_ILEVEL );irq_set_handler_locked (d, handle_level_irq); -spin_unlock_irqrestore (&gc->bgpio_lock, flags); +raw_spin_unlock_irqrestore (&gc->bgpio_lock, flags);return 0 ; }
@@ -86,12 +86,12 @@ static void idt_gpio_mask(struct irq_data *d)struct idt_gpio_ctrl *ctrl =gpiochip_get_data (gc);unsigned long flags; -spin_lock_irqsave (&gc->bgpio_lock, flags); +raw_spin_lock_irqsave (&gc->bgpio_lock, flags); ctrl->mask_cache |=BIT (d->hwirq);writel (ctrl->mask_cache, ctrl->pic +IDT_PIC_IRQ_MASK ); -spin_unlock_irqrestore (&gc->bgpio_lock, flags); +raw_spin_unlock_irqrestore (&gc->bgpio_lock, flags); }static void idt_gpio_unmask (struct irq_data *d)
@@ -100,12 +100,12 @@ static void idt_gpio_unmask(struct irq_data *d)struct idt_gpio_ctrl *ctrl =gpiochip_get_data (gc);unsigned long flags; -spin_lock_irqsave (&gc->bgpio_lock, flags); +raw_spin_lock_irqsave (&gc->bgpio_lock, flags); ctrl->mask_cache &= ~BIT (d->hwirq);writel (ctrl->mask_cache, ctrl->pic +IDT_PIC_IRQ_MASK ); -spin_unlock_irqrestore (&gc->bgpio_lock, flags); +raw_spin_unlock_irqrestore (&gc->bgpio_lock, flags); }static int idt_gpio_irq_init_hw (struct gpio_chip *gc)
drivers/gpio/gpio-ixp4xx.c +2 -2
@@ -128,7 +128,7 @@ static int ixp4xx_gpio_irq_set_type(struct irq_data *d, unsigned int type) int_reg =IXP4XX_REG_GPIT1 ; } -spin_lock_irqsave (&g->gc.bgpio_lock, flags); +raw_spin_lock_irqsave (&g->gc.bgpio_lock, flags);/* Clear the style for the appropriate pin */ val =__raw_readl (g->base + int_reg);
@@ -147,7 +147,7 @@ static int ixp4xx_gpio_irq_set_type(struct irq_data *d, unsigned int type) val |=BIT (d->hwirq);__raw_writel (val, g->base +IXP4XX_REG_GPOE ); -spin_unlock_irqrestore (&g->gc.bgpio_lock, flags); +raw_spin_unlock_irqrestore (&g->gc.bgpio_lock, flags);/* This parent only accept level high (asserted) */ return irq_chip_set_type_parent (d,IRQ_TYPE_LEVEL_HIGH );
drivers/gpio/gpio-loongson1.c +4 -4
@@ -25,10 +25,10 @@ static int ls1x_gpio_request(struct gpio_chip *gc, unsigned int offset) {unsigned long flags; -spin_lock_irqsave (&gc->bgpio_lock, flags); +raw_spin_lock_irqsave (&gc->bgpio_lock, flags);__raw_writel (__raw_readl (gpio_reg_base +GPIO_CFG ) |BIT (offset), gpio_reg_base +GPIO_CFG ); -spin_unlock_irqrestore (&gc->bgpio_lock, flags); +raw_spin_unlock_irqrestore (&gc->bgpio_lock, flags);return 0 ; }
@@ -37,10 +37,10 @@ static void ls1x_gpio_free(struct gpio_chip *gc, unsigned int offset) {unsigned long flags; -spin_lock_irqsave (&gc->bgpio_lock, flags); +raw_spin_lock_irqsave (&gc->bgpio_lock, flags);__raw_writel (__raw_readl (gpio_reg_base +GPIO_CFG ) & ~BIT (offset), gpio_reg_base +GPIO_CFG ); -spin_unlock_irqrestore (&gc->bgpio_lock, flags); +raw_spin_unlock_irqrestore (&gc->bgpio_lock, flags); }static int ls1x_gpio_probe (struct platform_device *pdev)
drivers/gpio/gpio-menz127.c +4 -4
@@ -64,7 +64,7 @@ static int men_z127_debounce(struct gpio_chip *gc, unsigned gpio, debounce /=50 ; } -spin_lock (&gc->bgpio_lock); +raw_spin_lock (&gc->bgpio_lock); db_en =readl (priv->reg_base +MEN_Z127_DBER );
@@ -79,7 +79,7 @@ static int men_z127_debounce(struct gpio_chip *gc, unsigned gpio,writel (db_en, priv->reg_base +MEN_Z127_DBER );writel (db_cnt, priv->reg_base +GPIO_TO_DBCNT_REG (gpio)); -spin_unlock (&gc->bgpio_lock); +raw_spin_unlock (&gc->bgpio_lock);return 0 ; }
@@ -91,7 +91,7 @@ static int men_z127_set_single_ended(struct gpio_chip *gc,struct men_z127_gpio *priv =gpiochip_get_data (gc);u32 od_en; -spin_lock (&gc->bgpio_lock); +raw_spin_lock (&gc->bgpio_lock); od_en =readl (priv->reg_base +MEN_Z127_ODER );if (param ==PIN_CONFIG_DRIVE_OPEN_DRAIN )
@@ -101,7 +101,7 @@ static int men_z127_set_single_ended(struct gpio_chip *gc, od_en &= ~BIT (offset);writel (od_en, priv->reg_base +MEN_Z127_ODER ); -spin_unlock (&gc->bgpio_lock); +raw_spin_unlock (&gc->bgpio_lock);return 0 ; }
drivers/gpio/gpio-mlxbf2.c +3 -3
@@ -120,7 +120,7 @@ static int mlxbf2_gpio_lock_acquire(struct mlxbf2_gpio_context *gs)u32 arm_gpio_lock_val;mutex_lock (yu_arm_gpio_lock_param.lock); -spin_lock (&gs->gc.bgpio_lock); +raw_spin_lock (&gs->gc.bgpio_lock); arm_gpio_lock_val =readl (yu_arm_gpio_lock_param.io);
@@ -128,7 +128,7 @@ static int mlxbf2_gpio_lock_acquire(struct mlxbf2_gpio_context *gs)* When lock active bit[31] is set, ModeX is write enabled */ if (YU_LOCK_ACTIVE_BIT (arm_gpio_lock_val)) { -spin_unlock (&gs->gc.bgpio_lock); +raw_spin_unlock (&gs->gc.bgpio_lock);mutex_unlock (yu_arm_gpio_lock_param.lock);return -EINVAL ; }
@@ -146,7 +146,7 @@ static void mlxbf2_gpio_lock_release(struct mlxbf2_gpio_context *gs) __releases(yu_arm_gpio_lock_param.lock) {writel (YU_ARM_GPIO_LOCK_RELEASE , yu_arm_gpio_lock_param.io); -spin_unlock (&gs->gc.bgpio_lock); +raw_spin_unlock (&gs->gc.bgpio_lock);mutex_unlock (yu_arm_gpio_lock_param.lock); }
drivers/gpio/gpio-mmio.c +11 -11
@@ -220,7 +220,7 @@ static void bgpio_set(struct gpio_chip *gc, unsigned int gpio, int val)unsigned long mask =bgpio_line2mask (gc, gpio);unsigned long flags; -spin_lock_irqsave (&gc->bgpio_lock, flags); +raw_spin_lock_irqsave (&gc->bgpio_lock, flags);if (val) gc->bgpio_data |= mask;
@@ -229,7 +229,7 @@ static void bgpio_set(struct gpio_chip *gc, unsigned int gpio, int val) gc->write_reg (gc->reg_dat, gc->bgpio_data); -spin_unlock_irqrestore (&gc->bgpio_lock, flags); +raw_spin_unlock_irqrestore (&gc->bgpio_lock, flags); } static void bgpio_set_with_clear(struct gpio_chip *gc, unsigned int gpio,
@@ -248,7 +248,7 @@ static void bgpio_set_set(struct gpio_chip *gc, unsigned int gpio, int val)unsigned long mask =bgpio_line2mask (gc, gpio);unsigned long flags; -spin_lock_irqsave (&gc->bgpio_lock, flags); +raw_spin_lock_irqsave (&gc->bgpio_lock, flags);if (val) gc->bgpio_data |= mask;
@@ -257,7 +257,7 @@ static void bgpio_set_set(struct gpio_chip *gc, unsigned int gpio, int val) gc->write_reg (gc->reg_set, gc->bgpio_data); -spin_unlock_irqrestore (&gc->bgpio_lock, flags); +raw_spin_unlock_irqrestore (&gc->bgpio_lock, flags); } static void bgpio_multiple_get_masks(struct gpio_chip *gc,
@@ -286,7 +286,7 @@ static void bgpio_set_multiple_single_reg(struct gpio_chip *gc,unsigned long flags;unsigned long set_mask, clear_mask; -spin_lock_irqsave (&gc->bgpio_lock, flags); +raw_spin_lock_irqsave (&gc->bgpio_lock, flags);bgpio_multiple_get_masks (gc, mask, bits, &set_mask, &clear_mask);
@@ -295,7 +295,7 @@ static void bgpio_set_multiple_single_reg(struct gpio_chip *gc, gc->write_reg (reg, gc->bgpio_data); -spin_unlock_irqrestore (&gc->bgpio_lock, flags); +raw_spin_unlock_irqrestore (&gc->bgpio_lock, flags); } static void bgpio_set_multiple(struct gpio_chip *gc, unsigned long *mask,
@@ -347,7 +347,7 @@ static int bgpio_dir_in(struct gpio_chip *gc, unsigned int gpio) {unsigned long flags; -spin_lock_irqsave (&gc->bgpio_lock, flags); +raw_spin_lock_irqsave (&gc->bgpio_lock, flags); gc->bgpio_dir &= ~bgpio_line2mask (gc, gpio);
@@ -356,7 +356,7 @@ static int bgpio_dir_in(struct gpio_chip *gc, unsigned int gpio)if (gc->reg_dir_out) gc->write_reg (gc->reg_dir_out, gc->bgpio_dir); -spin_unlock_irqrestore (&gc->bgpio_lock, flags); +raw_spin_unlock_irqrestore (&gc->bgpio_lock, flags);return 0 ; }
@@ -387,7 +387,7 @@ static void bgpio_dir_out(struct gpio_chip *gc, unsigned int gpio, int val) {unsigned long flags; -spin_lock_irqsave (&gc->bgpio_lock, flags); +raw_spin_lock_irqsave (&gc->bgpio_lock, flags); gc->bgpio_dir |=bgpio_line2mask (gc, gpio);
@@ -396,7 +396,7 @@ static void bgpio_dir_out(struct gpio_chip *gc, unsigned int gpio, int val)if (gc->reg_dir_out) gc->write_reg (gc->reg_dir_out, gc->bgpio_dir); -spin_unlock_irqrestore (&gc->bgpio_lock, flags); +raw_spin_unlock_irqrestore (&gc->bgpio_lock, flags); } static int bgpio_dir_out_dir_first(struct gpio_chip *gc, unsigned int gpio,
@@ -610,7 +610,7 @@ int bgpio_init(struct gpio_chip *gc, struct device *dev,if (gc->bgpio_bits >BITS_PER_LONG )return -EINVAL ; -spin_lock_init (&gc->bgpio_lock); +raw_spin_lock_init (&gc->bgpio_lock); gc->parent = dev; gc->label =dev_name (dev); gc->base =-1 ;
drivers/gpio/gpio-mxc.c +14 -2
@@ -18,6 +18,7 @@#include <linux/module.h> #include <linux/platform_device.h> #include <linux/slab.h> +#include <linux/spinlock.h> #include <linux/syscore_ops.h> #include <linux/gpio/driver.h> #include <linux/of.h>
@@ -147,6 +148,7 @@ static int gpio_set_irq_type(struct irq_data *d, u32 type) {struct irq_chip_generic *gc =irq_data_get_irq_chip_data (d);struct mxc_gpio_port *port = gc->private; +unsigned long flags;u32 bit, val;u32 gpio_idx = d->hwirq;int edge;
@@ -185,6 +187,8 @@ static int gpio_set_irq_type(struct irq_data *d, u32 type)return -EINVAL ; } +raw_spin_lock_irqsave (&port->gc.bgpio_lock, flags); +if (GPIO_EDGE_SEL >=0 ) { val =readl (port->base +GPIO_EDGE_SEL );if (edge ==GPIO_INT_BOTH_EDGES )
@@ -204,15 +208,20 @@ static int gpio_set_irq_type(struct irq_data *d, u32 type)writel (1 << gpio_idx, port->base +GPIO_ISR ); -return 0 ; +raw_spin_unlock_irqrestore (&port->gc.bgpio_lock, flags); + +return port->gc.direction_input (&port->gc, gpio_idx); }static void mxc_flip_edge (struct mxc_gpio_port *port,u32 gpio) {void __iomem *reg = port->base; +unsigned long flags;u32 bit, val;int edge; +raw_spin_lock_irqsave (&port->gc.bgpio_lock, flags); + reg +=GPIO_ICR1 + ((gpio &0x10 ) >>2 );/* lower or upper register */ bit = gpio &0xf ; val =readl (reg);
@@ -227,9 +236,12 @@ static void mxc_flip_edge(struct mxc_gpio_port *port, u32 gpio) }else {pr_err ("mxc: invalid configuration for GPIO %d: %x\n" , gpio, edge); -return ; + goto unlock; }writel (val | (edge << (bit <<1 )), reg); + +unlock: +raw_spin_unlock_irqrestore (&port->gc.bgpio_lock, flags); }/* handle 32 interrupts in one status register */
drivers/gpio/gpio-sifive.c +6 -6
@@ -44,7 +44,7 @@ static void sifive_gpio_set_ie(struct sifive_gpio *chip, unsigned int offset)unsigned long flags;unsigned int trigger; -spin_lock_irqsave (&chip->gc.bgpio_lock, flags); +raw_spin_lock_irqsave (&chip->gc.bgpio_lock, flags); trigger = (chip->irq_state &BIT (offset)) ? chip->trigger[offset] :0 ;regmap_update_bits (chip->regs,SIFIVE_GPIO_RISE_IE ,BIT (offset), (trigger &IRQ_TYPE_EDGE_RISING ) ?BIT (offset) :0 );
@@ -54,7 +54,7 @@ static void sifive_gpio_set_ie(struct sifive_gpio *chip, unsigned int offset) (trigger & IRQ_TYPE_LEVEL_HIGH) ? BIT(offset) : 0);regmap_update_bits (chip->regs,SIFIVE_GPIO_LOW_IE ,BIT (offset), (trigger &IRQ_TYPE_LEVEL_LOW ) ?BIT (offset) :0 ); -spin_unlock_irqrestore (&chip->gc.bgpio_lock, flags); +raw_spin_unlock_irqrestore (&chip->gc.bgpio_lock, flags); }static int sifive_gpio_irq_set_type (struct irq_data *d,unsigned int trigger)
@@ -84,13 +84,13 @@ static void sifive_gpio_irq_enable(struct irq_data *d)/* Switch to input */ gc->direction_input (gc, offset); -spin_lock_irqsave (&gc->bgpio_lock, flags); +raw_spin_lock_irqsave (&gc->bgpio_lock, flags);/* Clear any sticky pending interrupts */ regmap_write (chip->regs,SIFIVE_GPIO_RISE_IP , bit);regmap_write (chip->regs,SIFIVE_GPIO_FALL_IP , bit);regmap_write (chip->regs,SIFIVE_GPIO_HIGH_IP , bit);regmap_write (chip->regs,SIFIVE_GPIO_LOW_IP , bit); -spin_unlock_irqrestore (&gc->bgpio_lock, flags); +raw_spin_unlock_irqrestore (&gc->bgpio_lock, flags);/* Enable interrupts */ assign_bit (offset, &chip->irq_state,1 );
@@ -116,13 +116,13 @@ static void sifive_gpio_irq_eoi(struct irq_data *d)u32 bit =BIT (offset);unsigned long flags; -spin_lock_irqsave (&gc->bgpio_lock, flags); +raw_spin_lock_irqsave (&gc->bgpio_lock, flags);/* Clear all pending interrupts */ regmap_write (chip->regs,SIFIVE_GPIO_RISE_IP , bit);regmap_write (chip->regs,SIFIVE_GPIO_FALL_IP , bit);regmap_write (chip->regs,SIFIVE_GPIO_HIGH_IP , bit);regmap_write (chip->regs,SIFIVE_GPIO_LOW_IP , bit); -spin_unlock_irqrestore (&gc->bgpio_lock, flags); +raw_spin_unlock_irqrestore (&gc->bgpio_lock, flags);irq_chip_eoi_parent (d); }
drivers/gpio/gpio-tb10x.c +2 -2
@@ -62,14 +62,14 @@ static inline void tb10x_set_bits(struct tb10x_gpio *gpio, unsigned int offs,u32 r;unsigned long flags; -spin_lock_irqsave (&gpio->gc.bgpio_lock, flags); +raw_spin_lock_irqsave (&gpio->gc.bgpio_lock, flags); r =tb10x_reg_read (gpio, offs); r = (r & ~mask) | (val & mask);tb10x_reg_write (gpio, offs, r); -spin_unlock_irqrestore (&gpio->gc.bgpio_lock, flags); +raw_spin_unlock_irqrestore (&gpio->gc.bgpio_lock, flags); }static int tb10x_gpio_to_irq (struct gpio_chip *chip,unsigned offset)
drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c +7 -3
@@ -580,10 +580,14 @@ void amdgpu_gfx_off_ctrl(struct amdgpu_device *adev, bool enable)if (adev->gfx.gfx_off_req_count ==0 && !adev->gfx.gfx_off_state) {/* If going to s2idle, no need to wait */ -if (adev->in_s0ix) - delay =GFX_OFF_NO_DELAY ; -schedule_delayed_work (&adev->gfx.gfx_off_delay_work, +if (adev->in_s0ix) { +if (!amdgpu_dpm_set_powergating_by_smu (adev, +AMD_IP_BLOCK_TYPE_GFX , true)) + adev->gfx.gfx_off_state = true; + }else { +schedule_delayed_work (&adev->gfx.gfx_off_delay_work, delay); + } } }else {if (adev->gfx.gfx_off_req_count ==0 ) {
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +0 -4
@@ -1688,10 +1688,6 @@ static void amdgpu_dm_fini(struct amdgpu_device *adev) }#endif -for (i =0 ; i < adev->dm.display_indexes_num; i++) { -drm_encoder_cleanup (&adev->dm.mst_encoders[i].base); - } -amdgpu_dm_destroy_drm_device (&adev->dm);#if defined(CONFIG_DRM_AMD_SECURE_DISPLAY )
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c +0 -1
@@ -385,7 +385,6 @@ static const struct drm_connector_helper_funcs dm_dp_mst_connector_helper_funcsstatic void amdgpu_dm_encoder_destroy (struct drm_encoder *encoder) {drm_encoder_cleanup (encoder); -kfree (encoder); }static const struct drm_encoder_funcs amdgpu_dm_encoder_funcs = {
drivers/gpu/drm/drm_panel_orientation_quirks.c +6 -0
@@ -272,6 +272,12 @@ static const struct dmi_system_id orientation_data[] = { DMI_EXACT_MATCH(DMI_PRODUCT_VERSION, "Lenovo ideapad D330-10IGM"), }, .driver_data = (void *)&lcd1200x1920_rightside_up, + }, { /* Lenovo Ideapad D330-10IGL (HD) */ + .matches = { +DMI_EXACT_MATCH (DMI_SYS_VENDOR ,"LENOVO" ), + DMI_EXACT_MATCH(DMI_PRODUCT_VERSION, "Lenovo ideapad D330-10IGL"), + }, + .driver_data = (void *)&lcd800x1280_rightside_up, }, { /* Lenovo Yoga Book X90F / X91F / X91L */ .matches = {/* Non exact match to match all versions */
drivers/gpu/drm/i915/i915_drv.c +1 -4
@@ -986,12 +986,9 @@ static int i915_driver_open(struct drm_device *dev, struct drm_file *file)*/ static void i915_driver_lastclose (struct drm_device *dev) { -struct drm_i915_private *i915 =to_i915 (dev); -intel_fbdev_restore_mode (dev); -if (HAS_DISPLAY (i915)) -vga_switcheroo_process_delayed_switch (); +vga_switcheroo_process_delayed_switch (); }static void i915_driver_postclose (struct drm_device *dev,struct drm_file *file)
drivers/gpu/drm/i915/i915_switcheroo.c +5 -1
@@ -18,6 +18,10 @@ static void i915_switcheroo_set_state(struct pci_dev *pdev,dev_err (&pdev->dev,"DRM not initialized, aborting switch.\n" );return ; } +if (!HAS_DISPLAY (i915)) { +dev_err (&pdev->dev,"Device state not initialized, aborting switch.\n" ); +return ; + }if (state ==VGA_SWITCHEROO_ON ) {drm_info (&i915->drm,"switched on\n" );
@@ -43,7 +47,7 @@ static bool i915_switcheroo_can_switch(struct pci_dev *pdev)* locking inversion with the driver load path. And the access here is * completely racy anyway. So don't bother with locking for now. */ -return i915 &&atomic_read (&i915->drm.open_count) ==0 ; +return i915 &&HAS_DISPLAY (i915) &&atomic_read (&i915->drm.open_count) ==0 ; }static const struct vga_switcheroo_client_ops i915_switcheroo_ops = {
drivers/gpu/drm/i915/selftests/intel_scheduler_helpers.c +1 -2
@@ -16,8 +16,7 @@int intel_selftest_modify_policy (struct intel_engine_cs *engine,struct intel_selftest_saved_policy *saved, -u32 modify_type) - +enum selftest_scheduler_modify modify_type) {int err;
drivers/gpu/drm/panfrost/Kconfig +2 -1
@@ -3,7 +3,8 @@ config DRM_PANFROST tristate "Panfrost (DRM support for ARM Mali Midgard/Bifrost GPUs)" depends on DRM - depends on ARM || ARM64 || (COMPILE_TEST && !GENERIC_ATOMIC64) + depends on ARM || ARM64 || COMPILE_TEST + depends on !GENERIC_ATOMIC64 # for IOMMU_IO_PGTABLE_LPAE depends on MMU select DRM_SCHED select IOMMU_SUPPORT
drivers/gpu/drm/vmwgfx/vmwgfx_msg_arm64.h +0 -0
drivers/hid/hid-betopff.c +9 -8
@@ -60,7 +60,6 @@ static int betopff_init(struct hid_device *hid)struct list_head *report_list = &hid->report_enum[HID_OUTPUT_REPORT ].report_list;struct input_dev *dev; -int field_count =0 ;int error;int i, j;
@@ -86,19 +85,21 @@ static int betopff_init(struct hid_device *hid)* ----------------------------------------- * Do init them with default value. */ +if (report->maxfield <4 ) { +hid_err (hid,"not enough fields in the report: %d\n" , + report->maxfield); +return -ENODEV ; + }for (i =0 ; i < report->maxfield; i++) { +if (report->field[i]->report_count <1 ) { +hid_err (hid,"no values in the field\n" ); +return -ENODEV ; + }for (j =0 ; j < report->field[i]->report_count; j++) { report->field[i]->value[j] =0x00 ; - field_count++; } } -if (field_count <4 ) { -hid_err (hid,"not enough fields in the report: %d\n" , - field_count); -return -ENODEV ; - } - betopff =kzalloc (sizeof (*betopff),GFP_KERNEL );if (!betopff)return -ENOMEM ;
drivers/hid/hid-bigbenff.c +5 -0
@@ -344,6 +344,11 @@ static int bigben_probe(struct hid_device *hid, } report_list = &hid->report_enum[HID_OUTPUT_REPORT ].report_list; +if (list_empty (report_list)) { +hid_err (hid,"no output report found\n" ); + error = -ENODEV ; + goto error_hw_stop; + } bigben->report =list_entry (report_list->next, struct hid_report, list);
drivers/hid/hid-core.c +2 -2
@@ -988,8 +988,8 @@ struct hid_report *hid_validate_values(struct hid_device *hid,* Validating on id 0 means we should examine the first * report in the list. */ - report =list_entry ( - hid->report_enum[type].report_list.next, + report =list_first_entry_or_null ( + &hid->report_enum[type].report_list, struct hid_report, list); }else { report = hid->report_enum[type].report_id_hash[id];
drivers/hid/hid-ids.h +0 -1
@@ -261,7 +261,6 @@#define USB_DEVICE_ID_CH_AXIS_295 0x001c#define USB_VENDOR_ID_CHERRY 0x046a -#define USB_DEVICE_ID_CHERRY_MOUSE_000C 0x000c#define USB_DEVICE_ID_CHERRY_CYMOTION 0x0023#define USB_DEVICE_ID_CHERRY_CYMOTION_SOLAR 0x0027
drivers/hid/hid-quirks.c +0 -1
@@ -54,7 +54,6 @@ static const struct hid_device_id hid_quirks[] = { { HID_USB_DEVICE(USB_VENDOR_ID_CH, USB_DEVICE_ID_CH_FLIGHT_SIM_YOKE), HID_QUIRK_NOGET }, { HID_USB_DEVICE(USB_VENDOR_ID_CH, USB_DEVICE_ID_CH_PRO_PEDALS), HID_QUIRK_NOGET }, { HID_USB_DEVICE(USB_VENDOR_ID_CH, USB_DEVICE_ID_CH_PRO_THROTTLE), HID_QUIRK_NOGET }, - { HID_USB_DEVICE(USB_VENDOR_ID_CHERRY, USB_DEVICE_ID_CHERRY_MOUSE_000C), HID_QUIRK_ALWAYS_POLL }, { HID_USB_DEVICE(USB_VENDOR_ID_CORSAIR, USB_DEVICE_ID_CORSAIR_K65RGB), HID_QUIRK_NO_INIT_REPORTS }, { HID_USB_DEVICE(USB_VENDOR_ID_CORSAIR, USB_DEVICE_ID_CORSAIR_K65RGB_RAPIDFIRE), HID_QUIRK_NO_INIT_REPORTS | HID_QUIRK_ALWAYS_POLL }, { HID_USB_DEVICE(USB_VENDOR_ID_CORSAIR, USB_DEVICE_ID_CORSAIR_K70RGB), HID_QUIRK_NO_INIT_REPORTS },
drivers/hid/intel-ish-hid/ishtp/dma-if.c +10 -0
@@ -104,6 +104,11 @@ void *ishtp_cl_get_dma_send_buf(struct ishtp_device *dev,int required_slots = (size /DMA_SLOT_SIZE ) +1 * (size %DMA_SLOT_SIZE !=0 ); +if (!dev->ishtp_dma_tx_map) { +dev_err (dev->devc,"Fail to allocate Tx map\n" ); +return NULL ; + } +spin_lock_irqsave (&dev->ishtp_dma_tx_lock, flags);for (i =0 ; i <= (dev->ishtp_dma_num_slots - required_slots); i++) { free =1 ;
@@ -150,6 +155,11 @@ void ishtp_cl_release_dma_acked_mem(struct ishtp_device *dev,return ; } +if (!dev->ishtp_dma_tx_map) { +dev_err (dev->devc,"Fail to allocate Tx map\n" ); +return ; + } + i = (msg_addr - dev->ishtp_host_dma_tx_buf) /DMA_SLOT_SIZE ;spin_lock_irqsave (&dev->ishtp_dma_tx_lock, flags);for (j =0 ; j < acked_slots; j++) {
drivers/i2c/busses/i2c-designware-common.c +6 -3
@@ -351,7 +351,8 @@ u32 i2c_dw_scl_hcnt(u32 ic_clk, u32 tSYMBOL, u32 tf, int cond, int offset)* * If your hardware is free from tHD;STA issue, try this one. */ -return DIV_ROUND_CLOSEST (ic_clk * tSYMBOL,MICRO ) -8 + offset; +return DIV_ROUND_CLOSEST_ULL ((u64 )ic_clk * tSYMBOL,MICRO ) - +8 + offset; else/* * Conditional expression:
@@ -367,7 +368,8 @@ u32 i2c_dw_scl_hcnt(u32 ic_clk, u32 tSYMBOL, u32 tf, int cond, int offset)* The reason why we need to take into account "tf" here, * is the same as described in i2c_dw_scl_lcnt(). */ -return DIV_ROUND_CLOSEST (ic_clk * (tSYMBOL + tf),MICRO ) -3 + offset; +return DIV_ROUND_CLOSEST_ULL ((u64 )ic_clk * (tSYMBOL + tf),MICRO ) - +3 + offset; }u32 i2c_dw_scl_lcnt (u32 ic_clk,u32 tLOW,u32 tf,int offset)
@@ -383,7 +385,8 @@ u32 i2c_dw_scl_lcnt(u32 ic_clk, u32 tLOW, u32 tf, int offset)* account the fall time of SCL signal (tf). Default tf value * should be 0.3 us, for safety. */ -return DIV_ROUND_CLOSEST (ic_clk * (tLOW + tf),MICRO ) -1 + offset; +return DIV_ROUND_CLOSEST_ULL ((u64 )ic_clk * (tLOW + tf),MICRO ) - +1 + offset; }int i2c_dw_set_sda_hold (struct dw_i2c_dev *dev)
drivers/i2c/busses/i2c-mv64xxx.c +46 -15
129 lines not on this page · raw message
drivers/infiniband/core/verbs.c +5 -2
@@ -2965,15 +2965,18 @@ EXPORT_SYMBOL(__rdma_block_iter_start);bool __rdma_block_iter_next (struct ib_block_iter *biter) {unsigned int block_offset; +unsigned int sg_delta;if (!biter->__sg_nents || !biter->__sg)return false; biter->__dma_addr =sg_dma_address (biter->__sg) + biter->__sg_advance; block_offset = biter->__dma_addr & (BIT_ULL (biter->__pg_bit) -1 ); - biter->__sg_advance +=BIT_ULL (biter->__pg_bit) - block_offset; + sg_delta =BIT_ULL (biter->__pg_bit) - block_offset; -if (biter->__sg_advance >=sg_dma_len (biter->__sg)) { +if (sg_dma_len (biter->__sg) - biter->__sg_advance > sg_delta) { + biter->__sg_advance += sg_delta; + }else { biter->__sg_advance =0 ; biter->__sg =sg_next (biter->__sg); biter->__sg_nents--;
drivers/infiniband/hw/hfi1/user_exp_rcv.c +140 -60
334 lines not on this page · raw message
drivers/infiniband/hw/hfi1/user_exp_rcv.h +3 -0
@@ -16,6 +16,8 @@ struct tid_pageset { };struct tid_user_buf { +struct mmu_interval_notifier notifier; +struct mutex cover_mutex;unsigned long vaddr;unsigned long length;unsigned int npages;
@@ -27,6 +29,7 @@ struct tid_user_buf {struct tid_rb_node {struct mmu_interval_notifier notifier;struct hfi1_filedata *fdata; +struct mutex invalidate_mutex;/* covers hw removal */ unsigned long phys;struct tid_group *grp;u32 rcventry;
drivers/input/mouse/synaptics.c +0 -1
@@ -191,7 +191,6 @@ static const char * const smbus_pnp_ids[] = {"SYN3221" ,/* HP 15-ay000 */ "SYN323d" ,/* HP Spectre X360 13-w013dx */ "SYN3257" ,/* HP Envy 13-ad105ng */ -"SYN3286" ,/* HP Laptop 15-da3001TU */ NULL };
drivers/memory/atmel-sdramc.c +2 -4
@@ -47,19 +47,17 @@ static int atmel_ramc_probe(struct platform_device *pdev) caps =of_device_get_match_data (&pdev->dev);if (caps->has_ddrck) { - clk =devm_clk_get (&pdev->dev,"ddrck" ); + clk =devm_clk_get_enabled (&pdev->dev,"ddrck" );if (IS_ERR (clk))return PTR_ERR (clk); -clk_prepare_enable (clk); }if (caps->has_mpddr_clk) { - clk =devm_clk_get (&pdev->dev,"mpddr" ); + clk =devm_clk_get_enabled (&pdev->dev,"mpddr" );if (IS_ERR (clk)) {pr_err ("AT91 RAMC: couldn't get mpddr clock\n" );return PTR_ERR (clk); } -clk_prepare_enable (clk); }return 0 ;
drivers/memory/mvebu-devbus.c +1 -2
@@ -280,10 +280,9 @@ static int mvebu_devbus_probe(struct platform_device *pdev)if (IS_ERR (devbus->base))return PTR_ERR (devbus->base); - clk =devm_clk_get (&pdev->dev,NULL ); + clk =devm_clk_get_enabled (&pdev->dev,NULL );if (IS_ERR (clk))return PTR_ERR (clk); -clk_prepare_enable (clk);/* * Obtain clock period in picoseconds,
drivers/memory/tegra/tegra186.c +0 -36
@@ -20,32 +20,6 @@#define MC_SID_STREAMID_SECURITY_WRITE_ACCESS_DISABLED BIT(16)#define MC_SID_STREAMID_SECURITY_OVERRIDE BIT(8) -static void tegra186_mc_program_sid (struct tegra_mc *mc) -{ -unsigned int i; - -for (i =0 ; i < mc->soc->num_clients; i++) { -const struct tegra_mc_client *client = &mc->soc->clients[i]; -u32 override, security; - - override =readl (mc->regs + client->regs.sid.override); - security =readl (mc->regs + client->regs.sid.security); - -dev_dbg (mc->dev,"client %s: override: %x security: %x\n" , - client->name, override, security); - -dev_dbg (mc->dev,"setting SID %u for %s\n" , client->sid, - client->name); -writel (client->sid, mc->regs + client->regs.sid.override); - - override =readl (mc->regs + client->regs.sid.override); - security =readl (mc->regs + client->regs.sid.security); -
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/amd/xgbe/xgbe-dev.c +15 -8
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/amd/xgbe/xgbe-mdio.c +24 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/cadence/macb_main.c +1 -8
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/freescale/enetc/enetc.c +2 -2
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/marvell/octeontx2/nic/otx2_common.c +2 -9
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/marvell/octeontx2/nic/otx2_common.h +2 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx5/core/esw/qos.c +3 -15
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx5/core/main.c +4 -4
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/microsoft/mana/gdma.h +3 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/microsoft/mana/gdma_main.c +8 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/renesas/ravb_main.c +21 -15
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/stmicro/stmmac/dwmac5.c +14 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/stmicro/stmmac/stmmac_ethtool.c +4 -4
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c +5 -0
Lines of this file are not shown. View the raw message.
drivers/net/mdio/mdio-mux-meson-g12a.c +16 -7
Lines of this file are not shown. View the raw message.
drivers/phy/rockchip/phy-rockchip-inno-usb2.c +3 -1
Lines of this file are not shown. View the raw message.
drivers/pinctrl/nuvoton/pinctrl-npcm7xx.c +4 -4
Lines of this file are not shown. View the raw message.
drivers/pinctrl/pinctrl-rockchip.c +180 -135
315 lines not on this page · raw message
drivers/platform/x86/touchscreen_dmi.c +25 -0
Lines of this file are not shown. View the raw message.
drivers/scsi/scsi_transport_iscsi.c +45 -5
50 lines not on this page · raw message
drivers/thermal/intel/int340x_thermal/int340x_thermal_zone.c +22 -6
Lines of this file are not shown. View the raw message.
drivers/thermal/intel/int340x_thermal/int340x_thermal_zone.h +1 -0
Lines of this file are not shown. View the raw message.
drivers/thermal/tegra/tegra30-tsensor.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/thermal/thermal_core.c +30 -23
53 lines not on this page · raw message
fs/cifs/dfs_cache.c +23 -19
42 lines not on this page · raw message
include/uapi/linux/netfilter/nf_conntrack_sctp.h +1 -1
Lines of this file are not shown. View the raw message.
include/uapi/linux/netfilter/nfnetlink_cttimeout.h +1 -1
Lines of this file are not shown. View the raw message.
kernel/exit.c +72 -0
72 lines not on this page · raw message
kernel/panic.c +79 -11
90 lines not on this page · raw message
net/l2tp/l2tp_core.c +61 -55
116 lines not on this page · raw message
net/netfilter/nf_conntrack_proto_sctp.c +55 -63
118 lines not on this page · raw message
net/netfilter/nf_conntrack_standalone.c +0 -8
Lines of this file are not shown. View the raw message.
net/netfilter/nft_set_rbtree.c +204 -128
332 lines not on this page · raw message
tools/testing/selftests/bpf/prog_tests/jeq_infer_not_null.c deleted +0 -9
Lines of this file are not shown. View the raw message.
tools/testing/selftests/bpf/progs/jeq_infer_not_null_fail.c deleted +0 -42
42 lines not on this page · raw message
The rest of this diff is not shown. View the raw message.
Part of the diff is not shown here. View the raw message.