Linux 5.10.236
Greg Kroah-Hartman
maintainerI'm announcing the release of the 5.10.236 kernel.
All users of the 5.10 kernel series must upgrade.
The updated 5.10.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-5.10.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/timers/no_hz.rst | 7 Makefile | 2 arch/alpha/include/asm/elf.h | 6 arch/alpha/include/asm/pgtable.h | 2 arch/alpha/include/asm/processor.h | 8 arch/alpha/kernel/osf_sys.c | 11 arch/arm/boot/dts/bcm2711.dtsi | 11 arch/arm/mach-shmobile/headsmp.S | 1 arch/arm/mm/fault.c | 8 arch/powerpc/platforms/cell/spufs/inode.c | 9 arch/x86/Kconfig | 2 arch/x86/entry/calling.h | 2 arch/x86/include/asm/tlbflush.h | 2 arch/x86/kernel/cpu/microcode/amd.c | 2 arch/x86/kernel/cpu/mshyperv.c | 11 arch/x86/kernel/crash.c | 4 arch/x86/kernel/dumpstack.c | 5 arch/x86/kernel/irq.c | 2 arch/x86/kernel/machine_kexec_64.c | 12 arch/x86/kernel/process.c | 7 arch/x86/kernel/tsc.c | 4 arch/x86/kvm/hyperv.c | 6 arch/x86/mm/pat/cpa-test.c | 2 block/bio.c | 2 drivers/acpi/nfit/core.c | 2 drivers/acpi/processor_idle.c | 4 drivers/acpi/resource.c | 13 drivers/base/power/main.c | 21 drivers/base/power/runtime.c | 2 drivers/clk/meson/g12a.c | 38 drivers/clk/meson/gxbb.c | 14 drivers/clk/rockchip/clk-rk3328.c | 2 drivers/clk/samsung/clk.c | 2 drivers/clocksource/i8253.c | 36 drivers/counter/microchip-tcb-capture.c | 19 drivers/counter/stm32-lptimer-cnt.c | 24 drivers/cpufreq/cpufreq_governor.c | 45 drivers/cpufreq/scpi-cpufreq.c | 5 drivers/crypto/hisilicon/sec2/sec_crypto.c | 8 drivers/edac/ie31200_edac.c | 19 drivers/firmware/imx/imx-scu.c | 1 drivers/firmware/iscsi_ibft.c | 5 drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 106 + drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_debugfs.c | 14 drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_hdcp.c | 1 drivers/gpu/drm/amd/display/dc/core/dc_resource.c | 585 +++------- drivers/gpu/drm/amd/display/dc/dc.h | 1 drivers/gpu/drm/amd/display/dc/dc_types.h | 5 drivers/gpu/drm/amd/display/dc/dcn10/dcn10_dpp_dscl.c | 12 drivers/gpu/drm/amd/display/dc/dcn20/dcn20_resource.c | 14 drivers/gpu/drm/amd/display/dc/dml/dcn30/display_mode_vba_30.c | 12 drivers/gpu/drm/amd/display/dc/dml/display_mode_structs.h | 2 drivers/gpu/drm/amd/display/dc/dml/display_mode_vba.c | 40 drivers/gpu/drm/amd/display/dc/inc/hw/transform.h | 4 drivers/gpu/drm/amd/pm/swsmu/smu11/navi10_ppt.c | 21 drivers/gpu/drm/drm_atomic_uapi.c | 4 drivers/gpu/drm/drm_connector.c | 4 drivers/gpu/drm/drm_dp_mst_topology.c | 8 drivers/gpu/drm/gma500/mid_bios.c | 5 drivers/gpu/drm/mediatek/mtk_dsi.c | 6 drivers/gpu/drm/mediatek/mtk_hdmi.c | 33 drivers/gpu/drm/nouveau/nouveau_connector.c | 1 drivers/gpu/drm/radeon/radeon_vce.c | 2 drivers/gpu/drm/v3d/v3d_sched.c | 9 drivers/gpu/drm/xlnx/zynqmp_dpsub.c | 2 drivers/hid/hid-ids.h | 1 drivers/hid/hid-plantronics.c | 144 +- drivers/hid/hid-quirks.c | 1 drivers/hid/intel-ish-hid/ipc/ipc.c | 6 drivers/hv/vmbus_drv.c | 13 drivers/hwmon/nct6775.c | 4 drivers/hwtracing/coresight/coresight-catu.c | 2 drivers/i2c/busses/i2c-ali1535.c | 12 drivers/i2c/busses/i2c-ali15x3.c | 12 drivers/i2c/busses/i2c-omap.c | 26 drivers/i2c/busses/i2c-sis630.c | 12 drivers/i2c/i2c-dev.c | 15 drivers/iio/accel/mma8452.c | 10 drivers/infiniband/core/mad.c | 38 drivers/infiniband/hw/bnxt_re/qplib_fp.c | 2 drivers/infiniband/hw/bnxt_re/qplib_rcfw.h | 3 drivers/infiniband/hw/hns/hns_roce_hem.c | 23 drivers/infiniband/hw/hns/hns_roce_hem.h | 2 drivers/infiniband/hw/hns/hns_roce_main.c | 2 drivers/infiniband/hw/hns/hns_roce_mr.c | 4 drivers/infiniband/hw/mlx5/cq.c | 2 drivers/media/dvb-frontends/dib8000.c | 5 drivers/media/i2c/et8ek8/et8ek8_driver.c | 4 drivers/memstick/host/rtsx_usb_ms.c | 1 drivers/mfd/sm501.c | 6 drivers/mmc/host/atmel-mci.c | 4 drivers/mmc/host/sdhci-pxav3.c | 1 drivers/net/arcnet/com20020-pci.c | 17 drivers/net/can/flexcan.c | 6 drivers/net/dsa/mv88e6xxx/chip.c | 11 drivers/net/dsa/mv88e6xxx/phy.c | 3 drivers/net/ethernet/intel/ice/ice_arfs.c | 2 drivers/net/ethernet/marvell/octeontx2/af/rvu.c | 2 drivers/net/ethernet/mellanox/mlx5/core/en_main.c | 6 drivers/net/ethernet/mellanox/mlx5/core/lib/fs_chains.c | 5 drivers/net/ethernet/qlogic/qlcnic/qlcnic_sriov_common.c | 8 drivers/net/usb/qmi_wwan.c | 2 drivers/net/usb/usbnet.c | 21 drivers/net/wireless/intel/iwlwifi/fw/dbg.c | 86 - drivers/ntb/hw/intel/ntb_hw_gen3.c | 3 drivers/ntb/hw/mscc/ntb_hw_switchtec.c | 2 drivers/ntb/test/ntb_perf.c | 4 drivers/nvme/host/core.c | 2 drivers/nvme/host/fc.c | 3 drivers/nvme/host/pci.c | 21 drivers/nvme/host/tcp.c | 5 drivers/nvme/target/rdma.c | 33 drivers/pci/controller/cadence/pcie-cadence-ep.c | 3 drivers/pci/controller/cadence/pcie-cadence.h | 2 drivers/pci/controller/pcie-brcmstb.c | 4 drivers/pci/controller/pcie-xilinx-cpm.c | 10 drivers/pci/hotplug/pciehp_hpc.c | 4 drivers/pci/pcie/aspm.c | 17 drivers/pci/pcie/portdrv_core.c | 8 drivers/pci/probe.c | 5 drivers/pinctrl/bcm/pinctrl-bcm281xx.c | 2 drivers/pinctrl/renesas/pinctrl-rza2.c | 2 drivers/pinctrl/tegra/pinctrl-tegra.c | 3 drivers/platform/x86/intel-hid.c | 7 drivers/power/supply/max77693_charger.c | 2 drivers/powercap/powercap_sys.c | 3 drivers/regulator/core.c | 12 drivers/remoteproc/qcom_q6v5_pas.c | 10 drivers/s390/cio/chp.c | 3 drivers/scsi/qla1280.c | 2 drivers/soc/qcom/pdr_interface.c | 8 drivers/thermal/cpufreq_cooling.c | 2 drivers/thermal/intel/int340x_thermal/int3402_thermal.c | 3 drivers/tty/serial/8250/8250_dma.c | 2 drivers/tty/serial/8250/8250_pci.c | 16 drivers/tty/serial/fsl_lpuart.c | 25 drivers/usb/serial/ftdi_sio.c | 14 drivers/usb/serial/ftdi_sio_ids.h | 13 drivers/usb/serial/option.c | 48 drivers/video/console/Kconfig | 2 drivers/video/fbdev/au1100fb.c | 4 drivers/video/fbdev/hyperv_fb.c | 2 drivers/video/fbdev/sm501fb.c | 7 fs/affs/file.c | 9 fs/btrfs/extent-tree.c | 5 fs/exfat/fatent.c | 2 fs/ext4/dir.c | 3 fs/ext4/super.c | 27 fs/fuse/dir.c | 2 fs/isofs/dir.c | 3 fs/jfs/jfs_dtree.c | 3 fs/jfs/xattr.c | 15 fs/namei.c | 24 fs/nfs/delegation.c | 33 fs/nfsd/nfs4state.c | 31 fs/ocfs2/alloc.c | 8 fs/proc/base.c | 2 fs/proc/generic.c | 10 fs/proc/inode.c | 6 fs/proc/internal.h | 14 fs/vboxsf/super.c | 3 include/drm/drm_dp_mst_helper.h | 7 include/linux/fs.h | 2 include/linux/i8253.h | 1 include/linux/interrupt.h | 8 include/linux/netfilter/nf_conntrack_common.h | 8 include/linux/pm_runtime.h | 2 include/linux/proc_fs.h | 7 include/linux/sched/smt.h | 2 include/net/ipv6.h | 4 kernel/events/ring_buffer.c | 2 kernel/kexec_elf.c | 2 kernel/locking/semaphore.c | 13 kernel/sched/deadline.c | 2 kernel/time/hrtimer.c | 22 kernel/trace/bpf_trace.c | 2 kernel/trace/ring_buffer.c | 4 kernel/trace/trace_events_synth.c | 34 kernel/trace/trace_functions_graph.c | 1 kernel/trace/trace_irqsoff.c | 2 kernel/trace/trace_sched_wakeup.c | 2 kernel/watch_queue.c | 9 lib/842/842_compress.c | 2 net/8021q/vlan_netlink.c | 10 net/atm/lec.c | 3 net/atm/mpc.c | 2 net/batman-adv/bat_iv_ogm.c | 3 net/batman-adv/bat_v_ogm.c | 3 net/bluetooth/6lowpan.c | 7 net/bluetooth/hci_event.c | 13 net/can/af_can.c | 12 net/can/af_can.h | 12 net/can/proc.c | 46 net/core/neighbour.c | 1 net/core/netpoll.c | 9 net/core/rtnetlink.c | 3 net/core/sock_map.c | 5 net/ipv4/ip_tunnel_core.c | 4 net/ipv6/addrconf.c | 37 net/ipv6/calipso.c | 21 net/ipv6/ip6_output.c | 6 net/ipv6/netfilter/nf_socket_ipv6.c | 23 net/ipv6/route.c | 5 net/mptcp/protocol.h | 2 net/netfilter/ipvs/ip_vs_ctl.c | 8 net/netfilter/nf_conncount.c | 2 net/netfilter/nf_conntrack_core.c | 48 net/netfilter/nf_conntrack_expect.c | 4 net/netfilter/nf_conntrack_netlink.c | 7 net/netfilter/nf_conntrack_standalone.c | 7 net/netfilter/nf_flow_table_core.c | 2 net/netfilter/nf_synproxy_core.c | 1 net/netfilter/nft_ct.c | 11 net/netfilter/nft_exthdr.c | 10 net/netfilter/nft_tunnel.c | 6 net/netfilter/xt_CT.c | 3 net/openvswitch/actions.c | 6 net/openvswitch/conntrack.c | 1 net/sched/act_ct.c | 1 net/sched/act_tunnel_key.c | 2 net/sched/cls_flower.c | 2 net/sched/sch_api.c | 6 net/sched/sch_skbprio.c | 3 net/sctp/stream.c | 2 net/vmw_vsock/af_vsock.c | 6 net/xfrm/xfrm_output.c | 2 scripts/selinux/install_policy.sh | 15 sound/pci/hda/patch_realtek.c | 28 sound/soc/codecs/arizona.c | 14 sound/soc/codecs/madera.c | 10 sound/soc/codecs/tas2764.c | 10 sound/soc/codecs/tas2764.h | 8 sound/soc/codecs/tas2770.c | 2 sound/soc/codecs/wm0010.c | 13 sound/soc/codecs/wm5110.c | 8 sound/soc/sh/rcar/core.c | 14 sound/soc/sh/rcar/rsnd.h | 1 sound/soc/sh/rcar/src.c | 18 sound/soc/sof/intel/hda-codec.c | 1 sound/soc/ti/j721e-evm.c | 2 sound/usb/mixer_quirks.c | 51 tools/perf/util/python.c | 17 tools/perf/util/units.c | 2 243 files changed, 1865 insertions(+), 1175 deletions(-)
Acs, Jakub (1):
ext4: fix OOB read when checking dotdot dir
Al Viro (2):
spufs: fix a leak on spufs_new_file() failure
spufs: fix a leak in spufs_create_context()
Alex Hung (1):
drm/amd/display: Assign normalized_pix_clk when color depth = 14
Alexey Kashavkin (1):
netfilter: nft_exthdr: fix offset with ipv4_find_option()
Andreas Kemnade (1):
i2c: omap: fix IRQ storms
Andy Shevchenko (2):
hrtimers: Mark is_migration_base() with __always_inline
i2c: dev: check return value when calling dev_set_name()
AngeloGioacchino Del Regno (2):
drm/mediatek: mtk_hdmi: Unregister audio platform device on failure drm/mediatek: mtk_hdmi: Fix typo for aud_sampe_size member
Arnaldo Carvalho de Melo (5):
perf units: Fix insufficient array space
perf python: Fixup description of sample.id event member perf python: Decrement the refcount of just created event on failure perf python: Don't keep a raw_data pointer to consumed ring buffer space perf python: Check if there is space to copy all the event
Arnd Bergmann (3):
x86/irq: Define trace events conditionally x86/platform: Only allow CONFIG_EISA for 32-bit
mdacon: rework dependency list
Artur Weber (2):
pinctrl: bcm281xx: Fix incorrect regmap max_registers value
power: supply: max77693: Fix wrong conversion of charge input threshold value
Baoquan He (1):
x86/kexec: fix memory leak of elf header buffer
Bart Van Assche (1):
fs/procfs: fix the comment above proc_pid_wchan()
Benjamin Berg (1):
x86/fpu: Avoid copying dynamic FP state from init_task in arch_dup_task_struct()
Boon Khai Ng (1):
USB: serial: ftdi_sio: add support for Altera USB Blaster 3
Brahmajit Das (1):
vboxsf: fix building with GCC 15
Breno Leitao (1):
netpoll: hold rcu read lock in __netpoll_send_skb()
Cameron Williams (1):
tty: serial: 8250: Add some more device IDs
Carolina Jubran (1):
net/mlx5e: Prevent bridge link show failure for non-eswitch-allowed devices
Chengchang Tang (1):
RDMA/hns: Remove redundant 'phy_addr' in hns_roce_hem_list_find_mtt()
Chengen Du (1):
iscsi_ibft: Fix UBSAN shift-out-of-bounds warning in ibft_attr_show_nic()
Chenyuan Yang (1):
thermal: int340x: Add NULL check for adev
Chia-Lin Kao (AceLan) (1):
HID: ignore non-functional sensor in HP 5MP Camera
Christian Eggers (1):
regulator: check that dummy regulator has been probed before using it
Christophe JAILLET (4):
ASoC: codecs: wm0010: Fix error handling path in wm0010_spi_probe()
i2c: ali1535: Fix an error handling path in ali1535_probe()
i2c: ali15x3: Fix an error handling path in ali15x3_probe()
i2c: sis630: Fix an error handling path in sis630_probe()
Chuck Lever (1):
NFSD: Skip sending CB_RECALL_ANY when the backchannel isn't up
Cong Wang (2):
net_sched: Prevent creation of classes with TC_H_ROOT
net_sched: skbprio: Remove overly strict queue assertions
Cosmin Ratiu (1):
xfrm_output: Force software GSO only in tunnel mode
Dan Carpenter (5):
ipvs: prevent integer overflow in do_ip_vs_get_ctl()
Bluetooth: Fix error code in chan_alloc_skb_cb()
net: atm: fix use after free in lec_send()
PCI: Remove stray put_device() in pci_register_host_bridge() drm/mediatek: dsi: fix error codes in mtk_dsi_host_transfer()
Daniel Lezcano (1):
thermal/cpufreq_cooling: Remove structure member documentation
Daniel Stodden (1):
PCI/ASPM: Fix link state exit during switch upstream function removal
Daniel Wagner (2):
nvme-fc: go straight to connecting state when initializing
nvme: only allow entering LIVE from CONNECTING state
Danila Chernetsov (1):
fbdev: sm501fb: Add some geometry checks.
David Oberhollenzer (1):
net: dsa: mv88e6xxx: propperly shutdown PPU re-enable timer on destroy
David Woodhouse (1):
clockevents/drivers/i8253: Fix stop sequence for timer 0
Debin Zhu (1):
netlabel: Fix NULL pointer exception caused by CALIPSO on IPv4 sockets
Dhruv Deshpande (1):
ALSA: hda/realtek: Support mute LED on HP Laptop 15s-du3xxx
Dmitry Panchenko (1):
platform/x86: intel-hid: fix volume buttons on Microsoft Surface Go 4 tablet
Dmytro Laktyushkin (1):
drm/amd/display: fix odm scaling
Dominique Martinet (1):
net: usb: usbnet: restore usb%d name exception for local mac addresses
Douglas Raillard (1):
tracing: Ensure module defining synth event cannot be unloaded while tracing
Eric Dumazet (1):
vlan: fix memory leak in vlan_newlink()
Eric Sandeen (1):
watch_queue: fix pipe accounting mismatch
Eric W. Biederman (1):
alpha/elf: Fix misc/setarch test of util-linux by removing 32bit support
Fabio Porcedda (4):
USB: serial: option: add Telit Cinterion FE990B compositions
USB: serial: option: fix Telit Cinterion FE990A name
net: usb: qmi_wwan: add Telit Cinterion FN990B composition
net: usb: qmi_wwan: add Telit Cinterion FE990B composition
Fabrice Gasnier (1):
counter: stm32-lptimer-cnt: fix error handling when enabling
Fabrizio Castro (1):
pinctrl: renesas: rza2: Fix missing of_node_put() call
Feng Tang (1):
PCI/portdrv: Only disable pciehp interrupts early when needed
Feng Yang (1):
ring-buffer: Fix bytes_dropped calculation issue
Fernando Fernandez Mancera (1):
ipv6: fix omitted netlink attributes when using RTEXT_FILTER_SKIP_STATS
Florent Revest (1):
x86/microcode/AMD: Fix out-of-bounds on systems with CPU-less NUMA nodes
Florian Westphal (3):
netfilter: conntrack: convert to refcount_t api
netfilter: nft_ct: fix use after free when attaching zone template
netfilter: conntrack: fix crash due to confirmed bit load reordering
Gannon Kolding (1):
ACPI: resource: IRQ override for Eluktronics MECH-17
Geert Uytterhoeven (1):
ARM: shmobile: smp: Enforce shmobile_smp_* alignment
Geetha sowjanya (1):
octeontx2-af: Fix mbox INTR handler when num VFs > 64
Giovanni Gherdovich (1):
ACPI: processor: idle: Return an error if both P_LVL{2,3} idle states are invalid
Greg Kroah-Hartman (1):
Linux 5.10.236
Grzegorz Nitka (1):
ice: fix memory leak in aRFS after reset
Gu Bowen (1):
mmc: atmel-mci: Add missing clk_disable_unprepare()
Guilherme G. Piccoli (1):
x86/tsc: Always save/restore TSC sched_clock() on suspend/resume
Guillaume Nault (1):
tunnels: Accept PACKET_HOST in skb_tunnel_check_pmtu().
Haibo Chen (1):
can: flexcan: only change CAN state when link up in system PM
Hans Zhang (1):
PCI: cadence-ep: Fix the driver to send MSG TLP for INTx without data payload
Haoxiang Li (1):
qlcnic: fix memory leak issues in qlcnic_sriov_common.c
Hector Martin (3):
ASoC: tas2770: Fix volume scale
ASoC: tas2764: Fix power control mask
ASoC: tas2764: Set the SDOUT polarity correctly
Henry Martin (1):
arcnet: Add NULL check in com20020pci_probe()
Hersen Wu (1):
drm/amd/display: Skip inactive planes within ModeSupportAndSystemConfiguration
Hou Tao (1):
bpf: Use preempt_count() directly in bpf_send_signal_common()
Icenowy Zheng (2):
nvme-pci: clean up CMBMSC when registering CMB fails
nvme-pci: skip CMB blocks incompatible with PCI P2P DMA
Ilkka Koskinen (1):
coresight: catu: Fix number of pages while using 64k pages
Ilpo Järvinen (1):
PCI: pciehp: Don't enable HPIE when resuming in poll mode
Ivan Abramov (1):
drm/gma500: Add NULL check for pci_gfx_root in mid_get_vbt_data()
Jann Horn (3):
x86/entry: Fix ORC unwinder for PUSH_REGS with save_ret=1
x86/dumpstack: Fix inaccurate unwinding from exception stacks due to misplaced assignment x86/mm: Fix flush_tlb_range() when used for zapping normal PMDs
Jayesh Choudhary (1):
ASoC: ti: j721e-evm: Fix clock configuration for ti,j7200-cpb-audio compatible
Jerome Brunet (4):
clk: amlogic: gxbb: drop incorrect flag on 32k clock
clk: amlogic: g12b: fix cluster A parent data
clk: amlogic: gxbb: drop non existing 32k clock parent
clk: amlogic: g12a: fix mmc A peripheral clock
Jesse Zhang (1):
drm/amd/pm: Fix negative array index read
Jie Zhan (1):
cpufreq: governor: Fix negative 'idle_time' handling in dbs_update()
Jim Quinlan (1):
PCI: brcmstb: Use internal register to change link capability
Joe Hattori (2):
powercap: call put_device() on an error path in powercap_register_control_type()
firmware: imx-scu: fix OF node leak in .probe()
Johan Hovold (1):
USB: serial: option: match on interface class for Telit FN990B
Johannes Berg (1):
wifi: iwlwifi: fw: allocate chained SG tables for dump
John Keeping (1):
serial: 8250_dma: terminate correct DMA in tx_dma_flush()
Jonathan Cameron (1):
iio: accel: mma8452: Ensure error return on failure to matching oversampling ratio
Josef Bacik (1):
btrfs: handle errors from btrfs_dec_ref() properly
Josh Poimboeuf (2):
objtool, media: dib8000: Prevent divide-by-zero in dib8000_set_dds() sched/smt: Always inline sched_smt_active()
Junxian Huang (2):
RDMA/hns: Fix soft lockup during bt pages loop RDMA/hns: Fix wrong value of max_sge_rd
Karel Balej (1):
mmc: sdhci-pxav3: set NEED_RSP_BUSY capability
Kashyap Desai (1):
RDMA/bnxt_re: Add missing paranthesis in map_qp_id_to_tbl_indx
Kees Cook (2):
ARM: 9350/1: fault: Implement copy_from_kernel_nofault_allowed()
ARM: 9351/1: fault: Add "cut here" line for prefetch aborts
Kohei Enju (1):
netfilter: nf_conncount: Fully initialize struct nf_conncount_tuple in insert_tree()
Kuninori Morimoto (1):
ASoC: rsnd: don't indicate warning on rsnd_kctrl_accept_runtime()
Kuniyuki Iwashima (2):
ipv6: Fix memleak of nhc_pcpu_rth_output in fib_check_nh_v6_gw().
ipv6: Set errno after ip_fib_metrics_init() in ip6_route_info_create().
Lee Jones (1):
drm/amd/display/dc/core/dc_resource: Staticify local functions
Li Lingfeng (1):
nfsd: put dl_stid if fail to queue dl_recall
Lin Ma (3):
net/neighbor: add missing policy for NDTPA_QUEUE_LENBYTES
netfilter: nft_tunnel: fix geneve_opt type confusion addition
net: fix geneve_opt length integer overflow
Luca Weiss (1):
remoteproc: qcom_q6v5_pas: Make single-PD handling more robust
Luiz Augusto von Dentz (1):
Bluetooth: hci_event: Align BR/EDR JUST_WORKS paring with LE
Luo Qiu (1):
memstick: rtsx_usb_ms: Fix slab-use-after-free in rtsx_usb_ms_drv_remove
Ma Ke (1):
drm/amd/display: Fix null check for pipe_ctx->plane_state in resource_build_scaling_params
Magnus Lindholm (1):
scsi: qla1280: Fix kernel oops when debug level > 2
Maher Sanalla (1):
IB/mad: Check available slots before posting receive WRs
Mario Kleiner (1):
drm/amd/display: Check plane scaling against format specific hw plane caps.
Mario Limonciello (1):
drm/amd/display: Fix slab-use-after-free on hdcp_work
Mark Zhang (1):
rtnetlink: Allocate vfinfo size for VF GUIDs when supported
Markus Elfring (2):
fbdev: au1100fb: Move a variable assignment behind a null pointer check
ntb_perf: Delete duplicate dmaengine_unmap_put() call in perf_copy_chunk()
Matthieu Baerts (NGI0) (1):
mptcp: safety check before fallback
Maxim Mikityanskiy (1):
netfilter: socket: Lookup orig tuple for IPv6 SNAT
Maíra Canal (1):
drm/v3d: Don't run jobs that have errors flagged in its fence
Michael Kelley (2):
fbdev: hyperv_fb: iounmap() the correct memory when removing a device
Drivers: hv: vmbus: Don't release fb_mmio resource in vmbus_free_mmio()
Michael Strauss (1):
drm/amd/display: Check for invalid input params when building scaling params
Michal Luczaj (1):
bpf, sockmap: Fix race between element replace and close()
Mike Rapoport (Microsoft) (1):
x86/mm/pat: cpa-test: fix length for CPA_ARRAY test
Miklos Szeredi (1):
fuse: don't truncate cached, mutated symlink
Ming Lei (1):
block: fix 'kmem_cache of name 'bio-108' already exists'
Minjoong Kim (1):
atm: Fix NULL pointer dereference
Murad Masimov (1):
acpi: nfit: fix narrowing conversion in acpi_nfit_ctl
Navon John Lukose (1):
ALSA: hda/realtek: Add mute LED quirk for HP Pavilion x360 14-dy1xxx
Nikita Shubin (1):
ntb: intel: Fix using link status DB's
Nikita Zhandarovich (2):
drm/radeon: fix uninitialized size issue in radeon_vce_cs_parse()
mfd: sm501: Switch to BIT() to mitigate integer overflows
Nikola Cornij (1):
drm/amd/display: Reject too small viewport size when validating plane
Oleg Nesterov (1):
sched/isolation: Prevent boot crash when the boot CPU is nohz_full
Oliver Hartkopp (1):
can: statistics: use atomic access in hot path
Patrik Jakobsson (1):
drm/amdgpu: Fix even more out of bound writes from debugfs
Patrisious Haddad (1):
RDMA/mlx5: Fix mlx5_poll_one() cur_qp update flow
Paul Menzel (1):
ACPI: resource: Skip IRQ override on ASUS Vivobook 14 X1404VAP
Peter Geis (1):
clk: rockchip: rk3328: fix wrong clk_ref_usb3otg parent
Peter Oberparleiter (1):
s390/cio: Fix CHPID "configure" attribute caching
Phil Elwell (2):
ARM: dts: bcm2711: PL011 UARTs are actually r1p5
ARM: dts: bcm2711: Don't mark timer regs unconfigured
Prathamesh Shete (1):
pinctrl: tegra: Set SFIO mode to Mux Register
Qasim Ijaz (2):
isofs: fix KMSAN uninit-value bug in do_isofs_readdir()
jfs: fix slab-out-of-bounds read in ea_get()
Qiuxu Zhuo (3):
EDAC/ie31200: Fix the size of EDAC_MC_LAYER_CHIP_SELECT layer EDAC/ie31200: Fix the DIMM size mask for several SoCs EDAC/ie31200: Fix the error path order of ie31200_init()
Rafael J. Wysocki (2):
PM: sleep: Adjust check before setting power.must_resume
PM: sleep: Fix handling devices with direct_complete set on errors
Roman Smirnov (1):
jfs: add index corruption check to DT_GETPAGE()
Ruozhu Li (1):
nvmet-rdma: recheck queue state is LIVE in state lock in recv done
Sagi Grimberg (1):
nvme-tcp: fix possible UAF in nvme_tcp_poll
Saranya R (1):
soc: qcom: pdr: Fix the potential deadlock
Saravanan Vajravel (1):
RDMA/bnxt_re: Avoid clearing VLAN_ID mask in modify qp path
Sean Christopherson (1):
KVM: x86: Reject Hyper-V's SEND_IPI hypercalls if local APIC isn't in-kernel
Sebastian Andrzej Siewior (2):
netfilter: nft_ct: Use __refcount_inc() for per-CPU nft_ct_pcpu_template.
lockdep: Don't disable interrupts on RT in disable_irq_nosync_lockdep.*()
Sherry Sun (2):
tty: serial: fsl_lpuart: use UARTMODIR register bits for lpuart32 platform
tty: serial: fsl_lpuart: disable transmitter before changing RS485 related registers
Shrikanth Hegde (1):
sched/deadline: Use online cpus for validating runtime
Simon Tatham (2):
affs: generate OFS sequence numbers starting at 1
affs: don't write overlarge OFS data block size fields
Sourabh Jain (1):
kexec: initialize ELF lowest address to ULONG_MAX
Stefano Garzarella (1):
vsock: avoid timeout during connect() if the socket is closing
Steven Rostedt (1):
tracing: Do not use PERF enums when perf is not defined
Sven Eckelmann (1):
batman-adv: Ignore own maximum aggregation size during RX
Takashi Iwai (2):
ALSA: hda/realtek: Always honor no_shutup_pins x86/kexec: Fix double-free of elf header buffer
Tanya Agarwal (1):
lib: 842: Improve error handling in sw842_compress()
Tao Chen (1):
perf/ring_buffer: Allow the EPOLLRDNORM flag for poll
Tasos Sahanidis (1):
hwmon: (nct6775-core) Fix out of bounds access for NCT679{8,9}Tengda Wu (1):
tracing: Fix use-after-free in print_graph_function_flags during tracer switching
Terry Cheong (1):
ASoC: SOF: Intel: hda: add softdep pre to snd-hda-codec-hdmi module
Terry Junge (2):
ALSA: usb-audio: Add quirk for Plantronics headsets to fix control names
HID: hid-plantronics: Add mic mute mapping and generalize quirks
Theodore Ts'o (1):
ext4: don't over-report free space or inodes in statvfs
Thippeswamy Havalige (1):
PCI: xilinx-cpm: Fix IRQ domain leak in error path of probe
Thomas Zimmermann (1):
drm/nouveau: Do not override forced connector status
Tim Schumacher (1):
selinux: Chain up tool resolving errors in install_policy.sh
Tomi Valkeinen (1):
drm: xlnx: zynqmp: Fix max dma segment size
Trond Myklebust (1):
NFSv4: Don't trigger uneccessary scans for return-on-close delegations
Uwe Kleine-König (1):
media: i2c: et8ek8: Don't strip remove function when driver is builtin
Vasiliy Kovalev (1):
ocfs2: validate l_tree_depth to avoid out-of-bounds access
Ville Syrjälä (1):
drm/atomic: Filter out redundant DPMS calls
Vitaliy Shevtsov (1):
drm/amd/display: fix type mismatch in CalculateDynamicMetadataParameters()
Vitaly Rodionov (1):
ASoC: arizona/madera: use fsleep() in up/down DAPM event delays.
Waiman Long (1):
locking/semaphore: Use wake_q to wake up processes outside lock critical section
Wang Yufen (1):
ipv6: Fix signed integer overflow in __ip6_append_data
Wayne Lin (1):
drm/dp_mst: Fix drm RAD print
Wenkai Lin (1):
crypto: hisilicon/sec2 - fix for aead auth key length
Wentao Liang (1):
net/mlx5: handle errors in mlx5_chains_create_table()
Will McVicker (1):
clk: samsung: Fix UBSAN panic in samsung_clk_init()
William Breathitt Gray (1):
counter: microchip-tcb-capture: Fix undefined counter channel state on probe
Yajun Deng (1):
ntb_hw_switchtec: Fix shift-out-of-bounds in switchtec_ntb_mw_set_trans
Yanjun Yang (1):
ARM: Remove address checking for MMUless devices
Ye Bin (1):
proc: fix UAF in proc_get_inode()
Yu-Chun Lin (1):
sctp: Fix undefined behavior in left shift operation
Yuezhang Mo (1):
exfat: fix the infinite loop in exfat_find_last_cluster()
Zhang Lixu (1):
HID: intel-ish-hid: fix the length of MNG_SYNC_FW_CLOCK in doorbell
zuoqian (1):
cpufreq: scpi: compare kHz instead of Hz
Greg Kroah-Hartman
maintainerDocumentation/timers/no_hz.rst +2 -5
@@ -129,11 +129,8 @@ adaptive-tick CPUs: At least one non-adaptive-tick CPU must remain online to handle timekeeping tasks in order to ensure that system calls like gettimeofday() returns accurate values on adaptive-tick CPUs. (This is not an issue for CONFIG_NO_HZ_IDLE=y because there are no running -user processes to observe slight drifts in clock rate.) Therefore, the -boot CPU is prohibited from entering adaptive-ticks mode. Specifying a -"nohz_full=" mask that includes the boot CPU will result in a boot-time -error message, and the boot CPU will be removed from the mask. Note that -this means that your system must have at least two CPUs in order for +user processes to observe slight drifts in clock rate.) Note that this +means that your system must have at least two CPUs in order for CONFIG_NO_HZ_FULL=y to do anything for you. Finally, adaptive-ticks CPUs must have their RCU callbacks offloaded.
Makefile +1 -1
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 5 PATCHLEVEL = 10 -SUBLEVEL = 235 +SUBLEVEL = 236 EXTRAVERSION = NAME = Dare mighty things
arch/alpha/include/asm/elf.h +1 -5
@@ -74,7 +74,7 @@ typedef elf_fpreg_t elf_fpregset_t[ELF_NFPREG];/* * This is used to ensure we don't load something for the wrong architecture. */ -#define elf_check_arch (x) ((x)->e_machine == EM_ALPHA) +#define elf_check_arch (x) (((x)->e_machine == EM_ALPHA) && !((x)->e_flags & EF_ALPHA_32BIT))/* * These are used to set parameters in the core dumps.
@@ -145,10 +145,6 @@ extern int dump_elf_task_fp(elf_fpreg_t *dest, struct task_struct *task); : amask (AMASK_CIX) ? "ev6" : "ev67"); \ }) -#define SET_PERSONALITY (EX ) \ - set_personality(((EX).e_flags & EF_ALPHA_32BIT) \ - ? PER_LINUX_32BIT : PER_LINUX) -extern int alpha_l1i_cacheshape;extern int alpha_l1d_cacheshape;extern int alpha_l2_cacheshape;
arch/alpha/include/asm/pgtable.h +1 -1
@@ -347,7 +347,7 @@ extern inline pte_t mk_swap_pte(unsigned long type, unsigned long offset)extern void paging_init (void ); -/* We have our own get_unmapped_area to cope with ADDR_LIMIT_32BIT. */ +/* We have our own get_unmapped_area */ #define HAVE_ARCH_UNMAPPED_AREA #endif /* _ALPHA_PGTABLE_H */
arch/alpha/include/asm/processor.h +2 -6
@@ -8,23 +8,19 @@ #ifndef __ASM_ALPHA_PROCESSOR_H #define __ASM_ALPHA_PROCESSOR_H -#include <linux/personality.h> /* for ADDR_LIMIT_32BIT */ - /* * We have a 42-bit user address space: 4TB user VM... */ #define TASK_SIZE (0x40000000000UL) -#define STACK_TOP \ - (current->personality & ADDR_LIMIT_32BIT ? 0x80000000 : 0x00120000000UL) +#define STACK_TOP (0x00120000000UL) #define STACK_TOP_MAX 0x00120000000UL /* This decides where the kernel will search for a free chunk of vm * space during mmap's. */ -#define TASK_UNMAPPED_BASE \ - ((current->personality & ADDR_LIMIT_32BIT) ? 0x40000000 : TASK_SIZE / 2) +#define TASK_UNMAPPED_BASE (TASK_SIZE / 2) typedef struct { unsigned long seg;
arch/alpha/kernel/osf_sys.c +2 -9
@@ -1212,8 +1212,7 @@ SYSCALL_DEFINE1(old_adjtimex, struct timex32 __user *, txc_p)return ret; } -/* Get an address range which is currently unmapped. Similar to the -generic version except that we know how to honor ADDR_LIMIT_32BIT. */ +/* Get an address range which is currently unmapped. */ static unsigned long arch_get_unmapped_area_1(unsigned long addr, unsigned long len,
@@ -1235,13 +1234,7 @@ arch_get_unmapped_area(struct file *filp, unsigned long addr, unsigned long len, unsigned long pgoff, unsigned long flags) { - unsigned long limit; - -/* "32 bit" actually means 31 bit, since pointers sign extend. */ -if (current->personality &ADDR_LIMIT_32BIT ) - limit =0x80000000 ; -else - limit =TASK_SIZE ; + unsigned long limit = TASK_SIZE;if (len > limit)return -ENOMEM ;
arch/arm/boot/dts/bcm2711.dtsi +5 -6
@@ -133,7 +133,7 @@ uart2: serial@7e201400 { clocks = <&clocks BCM2835_CLOCK_UART>, <&clocks BCM2835_CLOCK_VPU>; clock-names = "uartclk", "apb_pclk"; - arm,primecell-periphid = <0x00241011>; + arm,primecell-periphid = <0x00341011>; status = "disabled"; };
@@ -144,7 +144,7 @@ uart3: serial@7e201600 { clocks = <&clocks BCM2835_CLOCK_UART>, <&clocks BCM2835_CLOCK_VPU>; clock-names = "uartclk", "apb_pclk"; - arm,primecell-periphid = <0x00241011>; + arm,primecell-periphid = <0x00341011>; status = "disabled"; };
@@ -155,7 +155,7 @@ uart4: serial@7e201800 { clocks = <&clocks BCM2835_CLOCK_UART>, <&clocks BCM2835_CLOCK_VPU>; clock-names = "uartclk", "apb_pclk"; - arm,primecell-periphid = <0x00241011>; + arm,primecell-periphid = <0x00341011>; status = "disabled"; };
@@ -166,7 +166,7 @@ uart5: serial@7e201a00 { clocks = <&clocks BCM2835_CLOCK_UART>, <&clocks BCM2835_CLOCK_VPU>; clock-names = "uartclk", "apb_pclk"; - arm,primecell-periphid = <0x00241011>; + arm,primecell-periphid = <0x00341011>; status = "disabled"; };
@@ -424,8 +424,6 @@ IRQ_TYPE_LEVEL_LOW)>, IRQ_TYPE_LEVEL_LOW)>, <GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>; - /* This only applies to the ARMv7 stub */ - arm,cpu-registers-not-fw-configured; }; cpus: cpus {
@@ -1115,6 +1113,7 @@ &txp { }; &uart0 { + arm,primecell-periphid = <0x00341011>; interrupts = <GIC_SPI 121 IRQ_TYPE_LEVEL_HIGH>; };
arch/arm/mach-shmobile/headsmp.S +1 -0
@@ -136,6 +136,7 @@ ENDPROC(shmobile_smp_sleep) .long shmobile_smp_arg - 1b .bss + .align 2 .globl shmobile_smp_mpidr shmobile_smp_mpidr: .space NR_CPUS * 4
arch/arm/mm/fault.c +8 -0
@@ -26,6 +26,13 @@#ifdef CONFIG_MMU +bool copy_from_kernel_nofault_allowed (const void *unsafe_src,size_t size) +{ +unsigned long addr = (unsigned long )unsafe_src; + +return addr >=TASK_SIZE &&ULONG_MAX - addr >= size; +} +/* * This is useful to dump out the page tables associated with * 'addr' in mm 'mm'.
@@ -552,6 +559,7 @@ do_PrefetchAbort(unsigned long addr, unsigned int ifsr, struct pt_regs *regs)if (!inf->fn (addr, ifsr |FSR_LNX_PF , regs))return ; +pr_alert ("8<--- cut here ---\n" );pr_alert ("Unhandled prefetch abort: %s (0x%03x) at 0x%08lx\n" , inf->name, ifsr, addr);
arch/powerpc/platforms/cell/spufs/inode.c +7 -2
@@ -189,8 +189,10 @@ static int spufs_fill_dir(struct dentry *dir,return -ENOMEM ; ret =spufs_new_file (dir->d_sb, dentry, files->ops, files->mode & mode, files->size, ctx); -if (ret) +if (ret) { +dput (dentry);return ret; + } files++; }return 0 ;
@@ -436,8 +438,11 @@ spufs_create_context(struct inode *inode, struct dentry *dentry, } ret =spufs_mkdir (inode, dentry, flags, mode &0777 ); -if (ret) +if (ret) { +if (neighbor) +put_spu_context (neighbor); goto out_aff_unlock; + }if (affinity) { spufs_set_affinity(flags, SPUFS_I(d_inode(dentry))->i_ctx,
arch/x86/Kconfig +1 -1
@@ -174,7 +174,7 @@ config X86 select HAVE_DYNAMIC_FTRACE_WITH_DIRECT_CALLS select HAVE_EBPF_JIT select HAVE_EFFICIENT_UNALIGNED_ACCESS - select HAVE_EISA + select HAVE_EISA if X86_32 select HAVE_EXIT_THREAD select HAVE_FAST_GUP select HAVE_FENTRY if X86_64 || DYNAMIC_FTRACE
arch/x86/entry/calling.h +2 -0
@@ -104,6 +104,8 @@ For 32-bit we have the following conventions - kernel is built with pushq %rsi /* pt_regs->si */ movq 8(%rsp), %rsi /* temporarily store the return address in %rsi */ movq %rdi, 8(%rsp) /* pt_regs->di (overwriting original return address) */ +/* We just clobbered the return address - use the IRET frame for unwinding: */ +UNWIND_HINT_IRET_REGS offset=3 *8 .else pushq %rdi /* pt_regs->di */ pushq %rsi/* pt_regs->si */
arch/x86/include/asm/tlbflush.h +1 -1
@@ -222,7 +222,7 @@ void flush_tlb_others(const struct cpumask *cpumask,flush_tlb_mm_range ((vma)->vm_mm, start, end, \ ((vma)->vm_flags &VM_HUGETLB ) \ ?huge_page_shift (hstate_vma (vma)) \ - : PAGE_SHIFT, false) + : PAGE_SHIFT, true)extern void flush_tlb_all (void ); extern void flush_tlb_mm_range(struct mm_struct *mm, unsigned long start,
arch/x86/kernel/cpu/microcode/amd.c +1 -1
@@ -862,7 +862,7 @@ static enum ucode_state load_microcode_amd(u8 family, const u8 *data, size_t sizreturn ret; } -for_each_node (nid) { +for_each_node_with_cpus (nid) { cpu =cpumask_first (cpumask_of_node (nid)); c = &cpu_data (cpu);
arch/x86/kernel/cpu/mshyperv.c +0 -11
@@ -16,7 +16,6 @@#include <linux/interrupt.h> #include <linux/irq.h> #include <linux/kexec.h> -#include <linux/i8253.h> #include <linux/random.h> #include <asm/processor.h> #include <asm/hypervisor.h>
@@ -389,16 +388,6 @@ static void __init ms_hyperv_init_platform(void)if (efi_enabled (EFI_BOOT )) x86_platform.get_nmi_reason = hv_get_nmi_reason; -/* -* Hyper-V VMs have a PIT emulation quirk such that zeroing the -* counter register during PIT shutdown restarts the PIT. So it -* continues to interrupt @18.2 HZ. Setting i8253_clear_counter -* to false tells pit_shutdown() not to zero the counter so that -* the PIT really is shutdown. Generation 2 VMs don't have a PIT, -* and setting this value has no effect. -*/ - i8253_clear_counter_on_shutdown = false; -#if IS_ENABLED (CONFIG_HYPERV )/* * Setup the hook to get control post apic initialization.
arch/x86/kernel/crash.c +1 -3
@@ -399,10 +399,8 @@ int crash_load_segments(struct kimage *image) kbuf.buf_align =ELF_CORE_HEADER_ALIGN ; kbuf.mem =KEXEC_BUF_MEM_UNKNOWN ; ret =kexec_add_buffer (&kbuf); -if (ret) { -vfree ((void *)image->arch.elf_headers); +if (ret)return ret; - } image->arch.elf_load_addr = kbuf.mem;pr_debug ("Loaded ELF headers at 0x%lx bufsz=0x%lx memsz=0x%lx\n" , image->arch.elf_load_addr, kbuf.bufsz, kbuf.bufsz);
arch/x86/kernel/dumpstack.c +2 -3
@@ -195,6 +195,7 @@ void show_trace_log_lvl(struct task_struct *task, struct pt_regs *regs,printk ("%sCall Trace:\n" , log_lvl);unwind_start (&state, task, regs, stack); + stack = stack ?:get_stack_pointer (task, regs); regs =unwind_get_entry_regs (&state, &partial);/*
@@ -213,9 +214,7 @@ void show_trace_log_lvl(struct task_struct *task, struct pt_regs *regs,* - hardirq stack * - entry stack */ -for (stack = stack ?:get_stack_pointer (task, regs); - stack; - stack = stack_info.next_sp) { +for (; stack; stack = stack_info.next_sp) {const char *stack_name; stack =PTR_ALIGN (stack,sizeof (long ));
arch/x86/kernel/irq.c +2 -0
@@ -22,8 +22,10 @@#include <asm/desc.h> #include <asm/traps.h> +#if defined(CONFIG_X86_LOCAL_APIC ) || defined(CONFIG_X86_THERMAL_VECTOR )#define CREATE_TRACE_POINTS #include <asm/trace/irq_vectors.h> +#endif DEFINE_PER_CPU_SHARED_ALIGNED (irq_cpustat_t, irq_stat);EXPORT_PER_CPU_SYMBOL (irq_stat);
arch/x86/kernel/machine_kexec_64.c +9 -3
@@ -402,9 +402,6 @@ void machine_kexec(struct kimage *image)#ifdef CONFIG_KEXEC_FILE void *arch_kexec_kernel_image_load (struct kimage *image) { -vfree (image->arch.elf_headers); - image->arch.elf_headers =NULL ; -if (!image->fops || !image->fops->load)return ERR_PTR (-ENOEXEC );
@@ -540,6 +537,15 @@ int arch_kexec_apply_relocations_add(struct purgatory_info *pi, (int)ELF64_R_TYPE(rel[i].r_info), value);return -ENOEXEC ; } + +int arch_kimage_file_post_load_cleanup (struct kimage *image) +{ +vfree (image->arch.elf_headers); + image->arch.elf_headers =NULL ; + image->arch.elf_headers_sz =0 ; + +return kexec_image_post_load_cleanup_default (image); +}#endif /* CONFIG_KEXEC_FILE */ static int
arch/x86/kernel/process.c +6 -1
@@ -88,7 +88,12 @@ EXPORT_PER_CPU_SYMBOL_GPL(__tss_limit_invalid);*/ int arch_dup_task_struct (struct task_struct *dst,struct task_struct *src) { -memcpy (dst, src, arch_task_struct_size); +/* init_task is not dynamically sized (incomplete FPU state) */ +if (unlikely (src == &init_task)) +memcpy_and_pad (dst, arch_task_struct_size, src,sizeof (init_task),0 ); +else +memcpy (dst, src, arch_task_struct_size); +#ifdef CONFIG_VM86 dst->thread.vm86 =NULL ;#endif
arch/x86/kernel/tsc.c +2 -2
@@ -919,7 +919,7 @@ static unsigned long long cyc2ns_suspend;void tsc_save_sched_clock_state (void ) { -if (!sched_clock_stable ()) +if (!static_branch_likely (&__use_tsc) && !sched_clock_stable ())return ; cyc2ns_suspend =sched_clock ();
@@ -939,7 +939,7 @@ void tsc_restore_sched_clock_state(void)unsigned long flags;int cpu; -if (!sched_clock_stable ()) +if (!static_branch_likely (&__use_tsc) && !sched_clock_stable ())return ;local_irq_save (flags);
arch/x86/kvm/hyperv.c +5 -1
@@ -1618,6 +1618,9 @@ static u64 kvm_hv_send_ipi(struct kvm_vcpu *current_vcpu, u64 ingpa, u64 outgpa,u32 vector;bool all_cpus; +if (!lapic_in_kernel (current_vcpu)) +return HV_STATUS_INVALID_HYPERCALL_INPUT ; +if (!ex) {if (!fast) { if (unlikely(kvm_read_guest(kvm, ingpa, &send_ipi,
@@ -2060,7 +2063,8 @@ int kvm_vcpu_ioctl_get_hv_cpuid(struct kvm_vcpu *vcpu, struct kvm_cpuid2 *cpuid, ent->eax |=HV_X64_REMOTE_TLB_FLUSH_RECOMMENDED ; ent->eax |=HV_X64_APIC_ACCESS_RECOMMENDED ; ent->eax |=HV_X64_RELAXED_TIMING_RECOMMENDED ; - ent->eax |=HV_X64_CLUSTER_IPI_RECOMMENDED ; +if (!vcpu ||lapic_in_kernel (vcpu)) + ent->eax |=HV_X64_CLUSTER_IPI_RECOMMENDED ; ent->eax |=HV_X64_EX_PROCESSOR_MASKS_RECOMMENDED ;if (evmcs_ver) ent->eax |=HV_X64_ENLIGHTENED_VMCS_RECOMMENDED ;
arch/x86/mm/pat/cpa-test.c +1 -1
@@ -183,7 +183,7 @@ static int pageattr_test(void)break ;case 1 : - err =change_page_attr_set (addrs, len[1 ],PAGE_CPA_TEST ,1 ); + err =change_page_attr_set (addrs, len[i],PAGE_CPA_TEST ,1 );break ;case 2 :
block/bio.c +1 -1
@@ -55,7 +55,7 @@ struct bio_slab {struct kmem_cache *slab;unsigned int slab_ref;unsigned int slab_size; -char name[8 ]; +char name[12 ]; };static DEFINE_MUTEX (bio_slab_lock);static struct bio_slab *bio_slabs;
drivers/acpi/nfit/core.c +1 -1
@@ -484,7 +484,7 @@ int acpi_nfit_ctl(struct nvdimm_bus_descriptor *nd_desc, struct nvdimm *nvdimm, cmd_mask = nd_desc->cmd_mask;if (cmd ==ND_CMD_CALL && call_pkg->nd_family) { family = call_pkg->nd_family; -if (family >NVDIMM_BUS_FAMILY_MAX || +if (call_pkg->nd_family >NVDIMM_BUS_FAMILY_MAX || !test_bit (family, &nd_desc->bus_family_mask))return -EINVAL ; family = array_index_nospec(family,
drivers/acpi/processor_idle.c +4 -0
@@ -270,6 +270,10 @@ static int acpi_processor_get_power_info_fadt(struct acpi_processor *pr)ACPI_CX_DESC_LEN ,"ACPI P_LVL3 IOPORT 0x%x" , pr->power.states[ACPI_STATE_C3].address); +if (!pr->power.states[ACPI_STATE_C2 ].address && + !pr->power.states[ACPI_STATE_C3 ].address) +return -ENODEV ; +return 0 ; }
drivers/acpi/resource.c +13 -0
@@ -442,6 +442,13 @@ static const struct dmi_system_id asus_laptop[] = { DMI_MATCH(DMI_BOARD_NAME, "B2402CBA"), }, }, + { +/* Asus Vivobook X1404VAP */ + .matches = { +DMI_MATCH (DMI_SYS_VENDOR ,"ASUSTeK COMPUTER INC." ), + DMI_MATCH(DMI_BOARD_NAME, "X1404VAP"), + }, + }, {/* Asus Vivobook X1504VAP */ .matches = {
@@ -482,6 +489,12 @@ static const struct dmi_system_id asus_laptop[] = { DMI_MATCH(DMI_BOARD_NAME, "RP-15"), }, }, + { + .matches = { +DMI_MATCH (DMI_SYS_VENDOR ,"Eluktronics Inc." ), + DMI_MATCH(DMI_BOARD_NAME, "MECH-17"), + }, + }, {/* TongFang GM6XGxX/TUXEDO Stellaris 16 Gen5 AMD */ .matches = {
drivers/base/power/main.c +10 -11
@@ -900,6 +900,9 @@ static void __device_resume(struct device *dev, pm_message_t state, bool async)if (dev->power.syscore) goto Complete; +if (!dev->power.is_suspended) + goto Complete; +if (dev->power.direct_complete) {/* Match the pm_runtime_disable() in __device_suspend(). */ pm_runtime_enable (dev);
@@ -918,9 +921,6 @@ static void __device_resume(struct device *dev, pm_message_t state, bool async)*/ dev->power.is_prepared = false; -if (!dev->power.is_suspended) - goto Unlock; -if (dev->pm_domain) { info ="power domain " ; callback =pm_op (&dev->pm_domain->ops, state);
@@ -960,7 +960,6 @@ static void __device_resume(struct device *dev, pm_message_t state, bool async) error =dpm_run_callback (callback, dev, state, info); dev->power.is_suspended = false; - Unlock:device_unlock (dev);dpm_watchdog_clear (&wd);
@@ -1242,14 +1241,13 @@ static int __device_suspend_noirq(struct device *dev, pm_message_t state, bool a dev->power.is_noirq_suspended = true;/* -* Skipping the resume of devices that were in use right before the -* system suspend (as indicated by their PM-runtime usage counters) -* would be suboptimal. Also resume them if doing that is not allowed -* to be skipped. +* Devices must be resumed unless they are explicitly allowed to be left +* in suspend, but even in that case skipping the resume of devices that +* were in use right before the system suspend (as indicated by their +* runtime PM usage counters and child counters) would be suboptimal. */ -if (atomic_read (&dev->power.usage_count) >1 || - !(dev_pm_test_driver_flags (dev,DPM_FLAG_MAY_SKIP_RESUME ) && - dev->power.may_skip_resume)) +if (!(dev_pm_test_driver_flags (dev,DPM_FLAG_MAY_SKIP_RESUME ) && + dev->power.may_skip_resume) || !pm_runtime_need_not_resume (dev)) dev->power.must_resume = true;if (dev->power.must_resume)
@@ -1646,6 +1644,7 @@ static int __device_suspend(struct device *dev, pm_message_t state, bool async)pm_runtime_disable (dev);if (pm_runtime_status_suspended (dev)) {pm_dev_dbg (dev, state,"direct-complete " ); + dev->power.is_suspended = true; goto Complete; }
drivers/base/power/runtime.c +1 -1
@@ -1811,7 +1811,7 @@ void pm_runtime_drop_link(struct device_link *link)pm_request_idle (link->supplier); } -static bool pm_runtime_need_not_resume (struct device *dev) +bool pm_runtime_need_not_resume (struct device *dev) { return atomic_read(&dev->power.usage_count) <= 1 && (atomic_read(&dev->power.child_count) == 0 ||
drivers/clk/meson/g12a.c +25 -13
@@ -1135,8 +1135,18 @@ static struct clk_regmap g12a_cpu_clk_div16_en = { .hw.init = &(struct clk_init_data) { .name ="cpu_clk_div16_en" , .ops = &clk_regmap_gate_ro_ops, - .parent_hws = (const struct clk_hw *[]) { - &g12a_cpu_clk.hw + .parent_data = &(const struct clk_parent_data ) { +/* +* Note: +* G12A and G12B have different cpu clocks (with +* different struct clk_hw). We fallback to the global +* naming string mechanism so this clock picks +* up the appropriate one. Same goes for the other +* clock using cpu cluster A clock output and present +* on both G12 variant. +*/ + .name ="cpu_clk" , + .index =-1 , }, .num_parents =1 ,/*
@@ -1201,7 +1211,10 @@ static struct clk_regmap g12a_cpu_clk_apb_div = { .hw.init = &(struct clk_init_data){ .name ="cpu_clk_apb_div" , .ops = &clk_regmap_divider_ro_ops, - .parent_hws = (const struct clk_hw *[]) { &g12a_cpu_clk.hw }, + .parent_data = &(const struct clk_parent_data ) { + .name ="cpu_clk" , + .index =-1 , + }, .num_parents =1 , }, };
@@ -1235,7 +1248,10 @@ static struct clk_regmap g12a_cpu_clk_atb_div = { .hw.init = &(struct clk_init_data){ .name ="cpu_clk_atb_div" , .ops = &clk_regmap_divider_ro_ops, - .parent_hws = (const struct clk_hw *[]) { &g12a_cpu_clk.hw }, + .parent_data = &(const struct clk_parent_data ) { + .name ="cpu_clk" , + .index =-1 , + }, .num_parents =1 , }, };
@@ -1269,7 +1285,10 @@ static struct clk_regmap g12a_cpu_clk_axi_div = { .hw.init = &(struct clk_init_data){ .name ="cpu_clk_axi_div" , .ops = &clk_regmap_divider_ro_ops, - .parent_hws = (const struct clk_hw *[]) { &g12a_cpu_clk.hw }, + .parent_data = &(const struct clk_parent_data ) { + .name ="cpu_clk" , + .index =-1 , + }, .num_parents =1 , }, };
@@ -1304,13 +1323,6 @@ static struct clk_regmap g12a_cpu_clk_trace_div = { .name = "cpu_clk_trace_div", .ops = &clk_regmap_divider_ro_ops, .parent_data = &(const struct clk_parent_data ) { -/* -* Note: -* G12A and G12B have different cpu_clks (with -* different struct clk_hw). We fallback to the global -* naming string mechanism so cpu_clk_trace_div picks -* up the appropriate one. -*/ .name ="cpu_clk" , .index =-1 , },
@@ -4124,7 +4136,7 @@ static MESON_GATE(g12a_spicc_1, HHI_GCLK_MPEG0, 14); static MESON_GATE(g12a_hiu_reg, HHI_GCLK_MPEG0, 19); static MESON_GATE(g12a_mipi_dsi_phy, HHI_GCLK_MPEG0, 20); static MESON_GATE(g12a_assist_misc, HHI_GCLK_MPEG0, 23); -static MESON_GATE(g12a_emmc_a, HHI_GCLK_MPEG0, 4); +static MESON_GATE(g12a_emmc_a, HHI_GCLK_MPEG0, 24); static MESON_GATE(g12a_emmc_b, HHI_GCLK_MPEG0, 25); static MESON_GATE(g12a_emmc_c, HHI_GCLK_MPEG0, 26); static MESON_GATE(g12a_audio_codec, HHI_GCLK_MPEG0, 28);
drivers/clk/meson/gxbb.c +7 -7
@@ -1269,14 +1269,13 @@ static struct clk_regmap gxbb_cts_i958 = { }, }; +/* +* This table skips a clock named 'cts_slow_oscin' in the documentation +* This clock does not exist yet in this controller or the AO one +*/ +static u32 gxbb_32k_clk_parents_val_table[] = {0 ,2 ,3 };static const struct clk_parent_data gxbb_32k_clk_parent_data[] = { { .fw_name ="xtal" , }, -/* -* FIXME: This clock is provided by the ao clock controller but the -* clock is not yet part of the binding of this controller, so string -* name must be use to set this parent. -*/ - { .name ="cts_slow_oscin" , .index =-1 }, { .hw = &gxbb_fclk_div3.hw }, { .hw = &gxbb_fclk_div5.hw }, };
@@ -1286,6 +1285,7 @@ static struct clk_regmap gxbb_32k_clk_sel = { .offset = HHI_32K_CLK_CNTL, .mask = 0x3, .shift = 16, + .table = gxbb_32k_clk_parents_val_table, }, .hw.init = &(struct clk_init_data ){ .name ="32k_clk_sel" ,
@@ -1309,7 +1309,7 @@ static struct clk_regmap gxbb_32k_clk_div = { &gxbb_32k_clk_sel.hw }, .num_parents = 1, - .flags = CLK_SET_RATE_PARENT | CLK_DIVIDER_ROUND_CLOSEST, + .flags = CLK_SET_RATE_PARENT, }, };
drivers/clk/rockchip/clk-rk3328.c +1 -1
@@ -200,7 +200,7 @@ PNAME(mux_aclk_peri_pre_p) = { "cpll_peri","gpll_peri" , "hdmiphy_peri" };PNAME (mux_ref_usb3otg_src_p) = {"xin24m" , -"clk_usb3otg_ref" }; +"clk_ref_usb3otg_src" };PNAME (mux_xin24m_32k_p) = {"xin24m" ,"clk_rtc32k" }; PNAME(mux_mac2io_src_p) = { "clk_mac2io_src",
drivers/clk/samsung/clk.c +1 -1
@@ -64,11 +64,11 @@ struct samsung_clk_provider *__init samsung_clk_init(struct device_node *np,if (!ctx)panic ("could not allocate clock provider context.\n" ); + ctx->clk_data.num = nr_clks;for (i =0 ; i < nr_clks; ++i) ctx->clk_data.hws[i] =ERR_PTR (-ENOENT ); ctx->reg_base = base; - ctx->clk_data.num = nr_clks;spin_lock_init (&ctx->lock);return ctx;
drivers/clocksource/i8253.c +25 -11
@@ -20,13 +20,6 @@DEFINE_RAW_SPINLOCK (i8253_lock);EXPORT_SYMBOL (i8253_lock); -/* -* Handle PIT quirk in pit_shutdown() where zeroing the counter register -* restarts the PIT, negating the shutdown. On platforms with the quirk, -* platform specific code can set this to false. -*/ -bool i8253_clear_counter_on_shutdown__ro_after_init = true; -#ifdef CONFIG_CLKSRC_I8253 /* * Since the PIT overflows every tick, its not very useful
@@ -112,12 +105,33 @@ void clockevent_i8253_disable(void) {raw_spin_lock (&i8253_lock); +/* +* Writing the MODE register should stop the counter, according to +* the datasheet. This appears to work on real hardware (well, on +* modern Intel and AMD boxes; I didn't dig the Pegasos out of the +* shed). +* +* However, some virtual implementations differ, and the MODE change +* doesn't have any effect until either the counter is written (KVM +* in-kernel PIT) or the next interrupt (QEMU). And in those cases, +* it may not stop the *count*, only the interrupts. Although in +* the virt case, that probably doesn't matter, as the value of the +* counter will only be calculated on demand if the guest reads it; +* it's the interrupts which cause steal time. +* +* Hyper-V apparently has a bug where even in mode 0, the IRQ keeps +* firing repeatedly if the counter is running. But it *does* do the +* right thing when the MODE register is written. +* +* So: write the MODE and then load the counter, which ensures that +* the IRQ is stopped on those buggy virt implementations. And then +* write the MODE again, which is the right way to stop it. +*/ outb_p (0x30 ,PIT_MODE ); +outb_p (0 ,PIT_CH0 ); +outb_p (0 ,PIT_CH0 ); -if (i8253_clear_counter_on_shutdown) { -outb_p (0 ,PIT_CH0 ); -outb_p (0 ,PIT_CH0 ); - } +outb_p (0x30 ,PIT_MODE );raw_spin_unlock (&i8253_lock); }
drivers/counter/microchip-tcb-capture.c +19 -0
@@ -377,6 +377,25 @@ static int mchp_tc_probe(struct platform_device *pdev) channel); } +/* Disable Quadrature Decoder and position measure */ + ret =regmap_update_bits (regmap,ATMEL_TC_BMR ,ATMEL_TC_QDEN |ATMEL_TC_POSEN ,0 ); +if (ret) +return ret; + +/* Setup the period capture mode */ + ret =regmap_update_bits (regmap,ATMEL_TC_REG (priv->channel[0 ],CMR ), +ATMEL_TC_WAVE |ATMEL_TC_ABETRG |ATMEL_TC_CMR_MASK | +ATMEL_TC_TCCLKS , +ATMEL_TC_CMR_MASK ); +if (ret) +return ret; + +/* Enable clock and trigger counter */ + ret =regmap_write (regmap,ATMEL_TC_REG (priv->channel[0 ],CCR ), +ATMEL_TC_CLKEN |ATMEL_TC_SWTRG ); +if (ret) +return ret; + priv->tc_cfg = tcb_config; priv->regmap = regmap; priv->counter.name =dev_name (&pdev->dev);
drivers/counter/stm32-lptimer-cnt.c +15 -9
@@ -58,37 +58,43 @@ static int stm32_lptim_set_enable_state(struct stm32_lptim_cnt *priv,return 0 ; } + ret =clk_enable (priv->clk); +if (ret) + goto disable_cnt; +/* LP timer must be enabled before writing CMP & ARR */ ret =regmap_write (priv->regmap,STM32_LPTIM_ARR , priv->ceiling);if (ret) -return ret; + goto disable_clk; ret =regmap_write (priv->regmap,STM32_LPTIM_CMP ,0 );if (ret) -return ret; + goto disable_clk;/* ensure CMP & ARR registers are properly written */ ret =regmap_read_poll_timeout (priv->regmap,STM32_LPTIM_ISR , val, (val &STM32_LPTIM_CMPOK_ARROK ) ==STM32_LPTIM_CMPOK_ARROK ,100 ,1000 );if (ret) -return ret; + goto disable_clk; ret =regmap_write (priv->regmap,STM32_LPTIM_ICR ,STM32_LPTIM_CMPOKCF_ARROKCF );if (ret) -return ret; + goto disable_clk; - ret =clk_enable (priv->clk); -if (ret) { -regmap_write (priv->regmap,STM32_LPTIM_CR ,0 ); -return ret; - } priv->enabled = true;/* Start LP timer in continuous mode */ return regmap_update_bits (priv->regmap,STM32_LPTIM_CR ,STM32_LPTIM_CNTSTRT ,STM32_LPTIM_CNTSTRT ); + +disable_clk: +clk_disable (priv->clk); +disable_cnt: +regmap_write (priv->regmap,STM32_LPTIM_CR ,0 ); + +return ret; }static int stm32_lptim_setup (struct stm32_lptim_cnt *priv,int enable)
drivers/cpufreq/cpufreq_governor.c +23 -22
67 lines not on this page · raw message
drivers/cpufreq/scpi-cpufreq.c +3 -2
@@ -47,8 +47,9 @@ static unsigned int scpi_cpufreq_get_rate(unsigned int cpu)static int scpi_cpufreq_set_target (struct cpufreq_policy *policy,unsigned int index) { -u64 rate = policy->freq_table[index].frequency *1000 ; +unsigned long freq_khz = policy->freq_table[index].frequency;struct scpi_data *priv = policy->driver_data; +unsigned long rate = freq_khz *1000 ;int ret; ret =clk_set_rate (priv->clk, rate);
@@ -56,7 +57,7 @@ scpi_cpufreq_set_target(struct cpufreq_policy *policy, unsigned int index)if (ret)return ret; -if (clk_get_rate (priv->clk) != rate) +if (clk_get_rate (priv->clk) /1000 != freq_khz)return -EIO ;return 0 ;
drivers/crypto/hisilicon/sec2/sec_crypto.c +2 -6
@@ -856,11 +856,6 @@ static int sec_aead_auth_set_key(struct sec_auth_ctx *ctx,struct crypto_shash *hash_tfm = ctx->hash_tfm;int blocksize, ret; -if (!keys->authkeylen) { -pr_err ("hisi_sec2: aead auth key error!\n" ); -return -EINVAL ; - } - blocksize =crypto_shash_blocksize (hash_tfm);if (keys->authkeylen > blocksize) { ret = crypto_shash_tfm_digest(hash_tfm, keys->authkey,
@@ -871,7 +866,8 @@ static int sec_aead_auth_set_key(struct sec_auth_ctx *ctx, } ctx->a_key_len = blocksize; }else { -memcpy (ctx->a_key, keys->authkey, keys->authkeylen); +if (keys->authkeylen) +memcpy (ctx->a_key, keys->authkey, keys->authkeylen); ctx->a_key_len = keys->authkeylen; }
drivers/edac/ie31200_edac.c +10 -9
@@ -83,8 +83,6 @@ (((did) & PCI_DEVICE_ID_INTEL_IE31200_HB_CFL_MASK) == \ PCI_DEVICE_ID_INTEL_IE31200_HB_CFL_MASK)) -#define IE31200_DIMMS 4 -#define IE31200_RANKS 8#define IE31200_RANKS_PER_CHANNEL 4#define IE31200_DIMMS_PER_CHANNEL 2#define IE31200_CHANNELS 2
@@ -156,6 +154,7 @@#define IE31200_MAD_DIMM_0_OFFSET 0x5004#define IE31200_MAD_DIMM_0_OFFSET_SKL 0x500C#define IE31200_MAD_DIMM_SIZE GENMASK_ULL(7, 0) +#define IE31200_MAD_DIMM_SIZE_SKL GENMASK_ULL(5, 0)#define IE31200_MAD_DIMM_A_RANK BIT(17)#define IE31200_MAD_DIMM_A_RANK_SHIFT 17#define IE31200_MAD_DIMM_A_RANK_SKL BIT(10)
@@ -370,7 +369,7 @@ static void __iomem *ie31200_map_mchbar(struct pci_dev *pdev)static void __skl_populate_dimm_info (struct dimm_data *dd,u32 addr_decode,int chan) { - dd->size = (addr_decode >> (chan <<4 )) &IE31200_MAD_DIMM_SIZE ; + dd->size = (addr_decode >> (chan <<4 )) &IE31200_MAD_DIMM_SIZE_SKL ; dd->dual_rank = (addr_decode & (IE31200_MAD_DIMM_A_RANK_SKL << (chan <<4 ))) ?1 :0 ; dd->x16_width = ((addr_decode & (IE31200_MAD_DIMM_A_WIDTH_SKL << (chan <<4 ))) >> (IE31200_MAD_DIMM_A_WIDTH_SKL_SHIFT + (chan <<4 )));
@@ -419,7 +418,7 @@ static int ie31200_probe1(struct pci_dev *pdev, int dev_idx) nr_channels =how_many_channels (pdev); layers[0 ].type =EDAC_MC_LAYER_CHIP_SELECT ; - layers[0 ].size =IE31200_DIMMS ; + layers[0 ].size =IE31200_RANKS_PER_CHANNEL ; layers[0 ].is_virt_csrow = true; layers[1 ].type =EDAC_MC_LAYER_CHANNEL ; layers[1 ].size = nr_channels;
@@ -609,7 +608,7 @@ static int __init ie31200_init(void) pci_rc =pci_register_driver (&ie31200_driver);if (pci_rc <0 ) - goto fail0; +return pci_rc;if (!mci_pdev) { ie31200_registered =0 ;
@@ -620,11 +619,13 @@ static int __init ie31200_init(void)if (mci_pdev)break ; } +if (!mci_pdev) {edac_dbg (0 ,"ie31200 pci_get_device fail\n" ); pci_rc = -ENODEV ; - goto fail1; + goto fail0; } + pci_rc =ie31200_init_one (mci_pdev, &ie31200_pci_tbl[i]);if (pci_rc <0 ) {edac_dbg (0 ,"ie31200 init fail\n" );
@@ -632,12 +633,12 @@ static int __init ie31200_init(void) goto fail1; } } -return 0 ; +return 0 ; fail1: -pci_unregister_driver (&ie31200_driver); -fail0:pci_dev_put (mci_pdev); +fail0: +pci_unregister_driver (&ie31200_driver);return pci_rc; }
drivers/firmware/imx/imx-scu.c +1 -0
@@ -279,6 +279,7 @@ static int imx_scu_probe(struct platform_device *pdev)return ret; sc_ipc->fast_ipc =of_device_is_compatible (args.np,"fsl,imx8-mu-scu" ); +of_node_put (args.np); num_channel = sc_ipc->fast_ipc ?2 :SCU_MU_CHAN_NUM ;for (i =0 ; i < num_channel; i++) {
drivers/firmware/iscsi_ibft.c +4 -1
@@ -312,7 +312,10 @@ static ssize_t ibft_attr_show_nic(void *data, int type, char *buf) str +=sprintf_ipaddr (str, nic->ip_addr);break ;case ISCSI_BOOT_ETH_SUBNET_MASK : - val =cpu_to_be32 (~((1 << (32 -nic->subnet_mask_prefix))-1 )); +if (nic->subnet_mask_prefix >32 ) + val =cpu_to_be32 (~0 ); +else + val =cpu_to_be32 (~((1 << (32 -nic->subnet_mask_prefix))-1 )); str +=sprintf (str,"%pI4" , &val);break ;case ISCSI_BOOT_ETH_PREFIX_LEN :
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +98 -8
137 lines not on this page · raw message
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_debugfs.c +7 -7
@@ -424,7 +424,7 @@ static ssize_t dp_phy_settings_write(struct file *f, const char __user *buf,if (!wr_buf)return -ENOSPC ; -if (parse_write_buffer_into_params (wr_buf, size, +if (parse_write_buffer_into_params (wr_buf, wr_buf_size, (long *)param, buf, max_param_num, ¶m_nums)) {
@@ -576,7 +576,7 @@ static ssize_t dp_phy_test_pattern_debugfs_write(struct file *f, const char __usif (!wr_buf)return -ENOSPC ; -if (parse_write_buffer_into_params (wr_buf, size, +if (parse_write_buffer_into_params (wr_buf, wr_buf_size, (long *)param, buf, max_param_num, ¶m_nums)) {
@@ -1091,7 +1091,7 @@ static ssize_t dp_trigger_hotplug(struct file *f, const char __user *buf,return -ENOSPC ; } -if (parse_write_buffer_into_params (wr_buf, size, +if (parse_write_buffer_into_params (wr_buf, wr_buf_size, (long *)param, buf, max_param_num, ¶m_nums)) {
@@ -1272,7 +1272,7 @@ static ssize_t dp_dsc_clock_en_write(struct file *f, const char __user *buf,return -ENOSPC ; } -if (parse_write_buffer_into_params (wr_buf, size, +if (parse_write_buffer_into_params (wr_buf, wr_buf_size, (long *)param, buf, max_param_num, ¶m_nums)) {
@@ -1426,7 +1426,7 @@ static ssize_t dp_dsc_slice_width_write(struct file *f, const char __user *buf,return -ENOSPC ; } -if (parse_write_buffer_into_params (wr_buf, size, +if (parse_write_buffer_into_params (wr_buf, wr_buf_size, (long *)param, buf, max_param_num, ¶m_nums)) {
@@ -1580,7 +1580,7 @@ static ssize_t dp_dsc_slice_height_write(struct file *f, const char __user *buf,return -ENOSPC ; } -if (parse_write_buffer_into_params (wr_buf, size, +if (parse_write_buffer_into_params (wr_buf, wr_buf_size, (long *)param, buf, max_param_num, ¶m_nums)) {
@@ -1727,7 +1727,7 @@ static ssize_t dp_dsc_bits_per_pixel_write(struct file *f, const char __user *bureturn -ENOSPC ; } -if (parse_write_buffer_into_params (wr_buf, size, +if (parse_write_buffer_into_params (wr_buf, wr_buf_size, (long *)param, buf, max_param_num, ¶m_nums)) {
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_hdcp.c +1 -0
@@ -383,6 +383,7 @@ void hdcp_destroy(struct kobject *kobj, struct hdcp_workqueue *hdcp_work)for (i =0 ; i < hdcp_work->max_link; i++) {cancel_delayed_work_sync (&hdcp_work[i].callback_dwork);cancel_delayed_work_sync (&hdcp_work[i].watchdog_timer_dwork); +cancel_delayed_work_sync (&hdcp_work[i].property_validate_dwork); }sysfs_remove_bin_file (kobj, &hdcp_work[0 ].attr);
drivers/gpu/drm/amd/display/dc/core/dc_resource.c +216 -369
712 lines not on this page · raw message
drivers/gpu/drm/amd/display/dc/dc.h +1 -0
@@ -48,6 +48,7 @@#define MAX_PLANES 6#define MAX_STREAMS 6#define MAX_SINKS_PER_LINK 4 +#define MIN_VIEWPORT_SIZE 12/******************************************************************************* * Display Core Interfaces
drivers/gpu/drm/amd/display/dc/dc_types.h +0 -5
@@ -268,11 +268,6 @@ struct dc_edid_caps {struct dc_panel_patch panel_patch; }; -struct view { -uint32_t width; -uint32_t height; -}; -struct dc_mode_flags {/* note: part of refresh rate flag*/ uint32_t INTERLACE :1 ;
drivers/gpu/drm/amd/display/dc/dcn10/dcn10_dpp_dscl.c +8 -4
@@ -617,8 +617,10 @@ static void dpp1_dscl_set_manual_ratio_init( SCL_V_INIT_INT, init_int);if (REG (SCL_VERT_FILTER_INIT_BOT )) { - init_frac =dc_fixpt_u0d19 (data->inits.v_bot) <<5 ; - init_int =dc_fixpt_floor (data->inits.v_bot); +struct fixed31_32 bot =dc_fixpt_add (data->inits.v, data->ratios.vert); + + init_frac =dc_fixpt_u0d19 (bot) <<5 ; + init_int =dc_fixpt_floor (bot);REG_SET_2 (SCL_VERT_FILTER_INIT_BOT ,0 ,SCL_V_INIT_FRAC_BOT , init_frac,SCL_V_INIT_INT_BOT , init_int);
@@ -631,8 +633,10 @@ static void dpp1_dscl_set_manual_ratio_init( SCL_V_INIT_INT_C, init_int);if (REG (SCL_VERT_FILTER_INIT_BOT_C )) { - init_frac =dc_fixpt_u0d19 (data->inits.v_c_bot) <<5 ; - init_int =dc_fixpt_floor (data->inits.v_c_bot); +struct fixed31_32 bot =dc_fixpt_add (data->inits.v_c, data->ratios.vert_c); + + init_frac =dc_fixpt_u0d19 (bot) <<5 ; + init_int =dc_fixpt_floor (bot);REG_SET_2 (SCL_VERT_FILTER_INIT_BOT_C ,0 ,SCL_V_INIT_FRAC_BOT_C , init_frac,SCL_V_INIT_INT_BOT_C , init_int);
drivers/gpu/drm/amd/display/dc/dcn20/dcn20_resource.c +8 -6
@@ -2281,12 +2281,14 @@ int dcn20_populate_dml_pipes_from_context( pipes[pipe_cnt].pipe.src.source_scan = pln->rotation ==ROTATION_ANGLE_90 || pln->rotation ==ROTATION_ANGLE_270 ? dm_vert : dm_horz; - pipes[pipe_cnt].pipe.src.viewport_y_y = scl->viewport_unadjusted.y; - pipes[pipe_cnt].pipe.src.viewport_y_c = scl->viewport_c_unadjusted.y; - pipes[pipe_cnt].pipe.src.viewport_width = scl->viewport_unadjusted.width; - pipes[pipe_cnt].pipe.src.viewport_width_c = scl->viewport_c_unadjusted.width; - pipes[pipe_cnt].pipe.src.viewport_height = scl->viewport_unadjusted.height; - pipes[pipe_cnt].pipe.src.viewport_height_c = scl->viewport_c_unadjusted.height; + pipes[pipe_cnt].pipe.src.viewport_y_y = scl->viewport.y; + pipes[pipe_cnt].pipe.src.viewport_y_c = scl->viewport_c.y; + pipes[pipe_cnt].pipe.src.viewport_width = scl->viewport.width; + pipes[pipe_cnt].pipe.src.viewport_width_c = scl->viewport_c.width; + pipes[pipe_cnt].pipe.src.viewport_height = scl->viewport.height; + pipes[pipe_cnt].pipe.src.viewport_height_c = scl->viewport_c.height; + pipes[pipe_cnt].pipe.src.viewport_width_max = pln->src_rect.width; + pipes[pipe_cnt].pipe.src.viewport_height_max = pln->src_rect.height; pipes[pipe_cnt].pipe.src.surface_width_y = pln->plane_size.surface_size.width; pipes[pipe_cnt].pipe.src.surface_height_y = pln->plane_size.surface_size.height; pipes[pipe_cnt].pipe.src.surface_width_c = pln->plane_size.chroma_size.width;
drivers/gpu/drm/amd/display/dc/dml/dcn30/display_mode_vba_30.c +6 -6
@@ -283,10 +283,10 @@ static void CalculateDynamicMetadataParameters(double DISPCLK , double DCFClkDeepSleep, double PixelClock, - long HTotal, - long VBlank, - long DynamicMetadataTransmittedBytes, - long DynamicMetadataLinesBeforeActiveRequired, + unsigned int HTotal, + unsigned int VBlank, + unsigned int DynamicMetadataTransmittedBytes, + int DynamicMetadataLinesBeforeActiveRequired, int InterlaceEnable, bool ProgressiveToInterlaceUnitInOPP, double *Tsetup,
@@ -3373,8 +3373,8 @@ static double CalculateWriteBackDelay(static void CalculateDynamicMetadataParameters (int MaxInterDCNTileRepeaters,double DPPCLK ,double DISPCLK , -double DCFClkDeepSleep,double PixelClock,long HTotal,long VBlank,long DynamicMetadataTransmittedBytes, -long DynamicMetadataLinesBeforeActiveRequired,int InterlaceEnable,bool ProgressiveToInterlaceUnitInOPP, +double DCFClkDeepSleep,double PixelClock,unsigned int HTotal,unsigned int VBlank,unsigned int DynamicMetadataTransmittedBytes, +int DynamicMetadataLinesBeforeActiveRequired,int InterlaceEnable,bool ProgressiveToInterlaceUnitInOPP,double *Tsetup,double *Tdmbf,double *Tdmec,double *Tdmsks) {double TotalRepeaterDelayTime =0 ;
drivers/gpu/drm/amd/display/dc/dml/display_mode_structs.h +2 -0
@@ -255,6 +255,8 @@ struct _vcs_dpi_display_pipe_source_params_st {unsigned int viewport_y_c;unsigned int viewport_width_c;unsigned int viewport_height_c; +unsigned int viewport_width_max; +unsigned int viewport_height_max;unsigned int data_pitch;unsigned int data_pitch_c;unsigned int meta_pitch;
drivers/gpu/drm/amd/display/dc/dml/display_mode_vba.c +39 -1
@@ -628,6 +628,19 @@ static void fetch_pipe_params(struct display_mode_lib *mode_lib) } } } +if (src->viewport_width_max) { +int hdiv_c = src->source_format >= dm_420_8 && src->source_format <= dm_422_10 ?2 :1 ; +int vdiv_c = src->source_format >= dm_420_8 && src->source_format <= dm_420_12 ?2 :1 ; + +if (mode_lib->vba.ViewportWidth[mode_lib->vba.NumberOfActivePlanes] > src->viewport_width_max) + mode_lib->vba.ViewportWidth[mode_lib->vba.NumberOfActivePlanes] = src->viewport_width_max; +if (mode_lib->vba.ViewportHeight[mode_lib->vba.NumberOfActivePlanes] > src->viewport_height_max) + mode_lib->vba.ViewportHeight[mode_lib->vba.NumberOfActivePlanes] = src->viewport_height_max; +if (mode_lib->vba.ViewportWidthChroma[mode_lib->vba.NumberOfActivePlanes] > src->viewport_width_max / hdiv_c) + mode_lib->vba.ViewportWidthChroma[mode_lib->vba.NumberOfActivePlanes] = src->viewport_width_max / hdiv_c; +if (mode_lib->vba.ViewportHeightChroma[mode_lib->vba.NumberOfActivePlanes] > src->viewport_height_max / vdiv_c) + mode_lib->vba.ViewportHeightChroma[mode_lib->vba.NumberOfActivePlanes] = src->viewport_height_max / vdiv_c; + }if (pipes[k].pipe.src.immediate_flip) { mode_lib->vba.ImmediateFlipSupport = true;
@@ -825,11 +838,30 @@ static unsigned int CursorBppEnumToBits(enum cursor_bpp ebpp) } } +static unsigned int get_pipe_idx (struct display_mode_lib *mode_lib,unsigned int plane_idx) +{ +int pipe_idx =-1 ; +int i; + +ASSERT (plane_idx <DC__NUM_DPP__MAX ); + +for (i =0 ; i <DC__NUM_DPP__MAX ; i++) { +if (plane_idx == mode_lib->vba.pipe_plane[i]) { + pipe_idx = i; +break ; + } + } +ASSERT (pipe_idx >=0 ); + +return pipe_idx; +} +void ModeSupportAndSystemConfiguration (struct display_mode_lib *mode_lib) {soc_bounding_box_st *soc = &mode_lib->vba.soc;unsigned int k;unsigned int total_pipes =0 ; +unsigned int pipe_idx =0 ; mode_lib->vba.VoltageLevel = mode_lib->vba.cache_pipes[0 ].clks_cfg.voltage; mode_lib->vba.ReturnBW = mode_lib->vba.ReturnBWPerState[mode_lib->vba.VoltageLevel][mode_lib->vba.maxMpcComb];
@@ -849,8 +881,14 @@ void ModeSupportAndSystemConfiguration(struct display_mode_lib *mode_lib) mode_lib->vba.DISPCLK = soc->clock_limits[mode_lib->vba.VoltageLevel].dispclk_mhz;// Total Available Pipes Support Check -for (k =0 ; k < mode_lib->vba.NumberOfActivePlanes; ++k) +for (k =0 ; k < mode_lib->vba.NumberOfActivePlanes; ++k) { + pipe_idx =get_pipe_idx (mode_lib, k); +if (pipe_idx ==-1 ) { +ASSERT (0 ); +continue ;// skip inactive planes + } total_pipes += mode_lib->vba.DPPPerPlane[k]; + }ASSERT (total_pipes <=DC__NUM_DPP__MAX ); }
drivers/gpu/drm/amd/display/dc/inc/hw/transform.h +0 -4
@@ -162,9 +162,7 @@ struct scl_inits {struct fixed31_32 h;struct fixed31_32 h_c;struct fixed31_32 v; -struct fixed31_32 v_bot;struct fixed31_32 v_c; -struct fixed31_32 v_c_bot; };struct scaler_data {
@@ -173,8 +171,6 @@ struct scaler_data {struct scaling_taps taps;struct rect viewport;struct rect viewport_c; -struct rect viewport_unadjusted; -struct rect viewport_c_unadjusted;struct rect recout;struct scaling_ratios ratios;struct scl_inits inits;
drivers/gpu/drm/amd/pm/swsmu/smu11/navi10_ppt.c +16 -5
@@ -900,19 +900,22 @@ static int navi10_get_current_clk_freq_by_table(struct smu_context *smu, value); } -static bool navi10_is_support_fine_grained_dpm (struct smu_context *smu,enum smu_clk_type clk_type) +static int navi10_is_support_fine_grained_dpm (struct smu_context *smu,enum smu_clk_type clk_type) {PPTable_t *pptable = smu->smu_table.driver_pptable;DpmDescriptor_t *dpm_desc =NULL ; -uint32_t clk_index =0 ; +int clk_index =0 ; clk_index =smu_cmn_to_asic_specific_index (smu,CMN2ASIC_MAPPING_CLK , clk_type); +if (clk_index <0 ) +return clk_index; + dpm_desc = &pptable->DpmDescriptor[clk_index];/* 0 - Fine grained DPM, 1 - Discrete DPM */ -return dpm_desc->SnapToDiscrete ==0 ? true : false; +return dpm_desc->SnapToDiscrete ==0 ?1 :0 ; }static inline bool navi10_od_feature_is_supported (struct smu_11_0_overdrive_table *od_table,enum SMU_11_0_ODFEATURE_CAP cap)
@@ -964,7 +967,11 @@ static int navi10_print_clk_levels(struct smu_context *smu,if (ret)return size; -if (!navi10_is_support_fine_grained_dpm (smu, clk_type)) { + ret =navi10_is_support_fine_grained_dpm (smu, clk_type); +if (ret <0 ) +return ret; + +if (!ret) {for (i =0 ; i < count; i++) { ret =smu_v11_0_get_dpm_freq_by_index (smu, clk_type, i, &value);if (ret)
@@ -1127,7 +1134,11 @@ static int navi10_force_clk_levels(struct smu_context *smu,case SMU_UCLK :case SMU_FCLK :/* There is only 2 levels for fine grained DPM */ -if (navi10_is_support_fine_grained_dpm (smu, clk_type)) { + ret =navi10_is_support_fine_grained_dpm (smu, clk_type); +if (ret <0 ) +return ret; + +if (ret) { soft_max_level = (soft_max_level >=1 ?1 :0 ); soft_min_level = (soft_min_level >=1 ?1 :0 ); }
drivers/gpu/drm/drm_atomic_uapi.c +4 -0
@@ -936,6 +936,10 @@ int drm_atomic_connector_commit_dpms(struct drm_atomic_state *state,if (mode !=DRM_MODE_DPMS_ON ) mode =DRM_MODE_DPMS_OFF ; + +if (connector->dpms == mode) + goto out; + connector->dpms = mode; crtc = connector->state->crtc;
drivers/gpu/drm/drm_connector.c +4 -0
@@ -990,6 +990,10 @@ static const struct drm_prop_enum_list dp_colorspaces[] = {* callback. For atomic drivers the remapping to the "ACTIVE" property is * implemented in the DRM core. * +* On atomic drivers any DPMS setproperty ioctl where the value does not +* change is completely skipped, otherwise a full atomic commit will occur. +* On legacy drivers the exact behavior is driver specific. +* * Note that this property cannot be set through the MODE_ATOMIC ioctl, * userspace must use "ACTIVE" on the CRTC instead. *
drivers/gpu/drm/drm_dp_mst_topology.c +4 -4
@@ -178,13 +178,13 @@ static int drm_dp_mst_rad_to_str(const u8 rad[8], u8 lct, char *out, size_t len) { int i; -u8 unpacked_rad[16 ]; +u8 unpacked_rad[16 ] = {}; -for (i =0 ; i < lct; i++) { +for (i =1 ; i < lct; i++) {if (i %2 ) - unpacked_rad[i] = rad[i /2 ] >>4 ; + unpacked_rad[i] = rad[(i -1 ) /2 ] >>4 ;else - unpacked_rad[i] = rad[i /2 ] &BIT_MASK (4 ); + unpacked_rad[i] = rad[(i -1 ) /2 ] &0xF ; }/* TODO: Eventually add something to printk so we can format the rad
drivers/gpu/drm/gma500/mid_bios.c +5 -0
@@ -277,6 +277,11 @@ static void mid_get_vbt_data(struct drm_psb_private *dev_priv) 0, PCI_DEVFN(2, 0));int ret =-1 ; +if (pci_gfx_root ==NULL ) { +WARN_ON (1 ); +return ; + } +/* Get the address of the platform config vbt */ pci_read_config_dword (pci_gfx_root,0xFC , &addr);pci_dev_put (pci_gfx_root);
drivers/gpu/drm/mediatek/mtk_dsi.c +3 -3
@@ -920,12 +920,12 @@ static ssize_t mtk_dsi_host_transfer(struct mipi_dsi_host *host, const struct mipi_dsi_msg *msg) {struct mtk_dsi *dsi =host_to_dsi (host); -u32 recv_cnt, i; +ssize_t recv_cnt;u8 read_data[16 ];void *src_addr;u8 irq_flag =CMD_DONE_INT_FLAG ;u32 dsi_mode; -int ret; +int ret, i; dsi_mode =readl (dsi->regs +DSI_MODE_CTRL );if (dsi_mode &MODE ) {
@@ -974,7 +974,7 @@ static ssize_t mtk_dsi_host_transfer(struct mipi_dsi_host *host,if (recv_cnt)memcpy (msg->rx_buf, src_addr, recv_cnt); -DRM_INFO ("dsi get %d byte data from the panel address(0x%x)\n" , +DRM_INFO ("dsi get %zd byte data from the panel address(0x%x)\n" , recv_cnt, *((u8 *)(msg->tx_buf))); restore_dsi_mode:
drivers/gpu/drm/mediatek/mtk_hdmi.c +23 -10
@@ -138,7 +138,7 @@ enum hdmi_aud_channel_swap_type {struct hdmi_audio_param {enum hdmi_audio_coding_type aud_codec; -enum hdmi_audio_sample_size aud_sampe_size; +enum hdmi_audio_sample_size aud_sample_size;enum hdmi_aud_input_type aud_input_type;enum hdmi_aud_i2s_fmt aud_i2s_fmt;enum hdmi_aud_mclk aud_mclk;
@@ -172,6 +172,7 @@ struct mtk_hdmi {unsigned int sys_offset;void __iomem *regs;enum hdmi_colorspace csp; +struct platform_device *audio_pdev;struct hdmi_audio_param aud_param;bool audio_enable;bool powered;
@@ -1091,7 +1092,7 @@ static int mtk_hdmi_output_init(struct mtk_hdmi *hdmi) hdmi->csp =HDMI_COLORSPACE_RGB ; aud_param->aud_codec =HDMI_AUDIO_CODING_TYPE_PCM ; - aud_param->aud_sampe_size =HDMI_AUDIO_SAMPLE_SIZE_16 ; + aud_param->aud_sample_size =HDMI_AUDIO_SAMPLE_SIZE_16 ; aud_param->aud_input_type =HDMI_AUD_INPUT_I2S ; aud_param->aud_i2s_fmt =HDMI_I2S_MODE_I2S_24BIT ; aud_param->aud_mclk =HDMI_AUD_MCLK_128FS ;
@@ -1617,14 +1618,14 @@ static int mtk_hdmi_audio_hw_params(struct device *dev, void *data,switch (daifmt->fmt) {case HDMI_I2S : hdmi_params.aud_codec =HDMI_AUDIO_CODING_TYPE_PCM ; - hdmi_params.aud_sampe_size =HDMI_AUDIO_SAMPLE_SIZE_16 ; + hdmi_params.aud_sample_size =HDMI_AUDIO_SAMPLE_SIZE_16 ; hdmi_params.aud_input_type =HDMI_AUD_INPUT_I2S ; hdmi_params.aud_i2s_fmt =HDMI_I2S_MODE_I2S_24BIT ; hdmi_params.aud_mclk =HDMI_AUD_MCLK_128FS ;break ;case HDMI_SPDIF : hdmi_params.aud_codec =HDMI_AUDIO_CODING_TYPE_PCM ; - hdmi_params.aud_sampe_size =HDMI_AUDIO_SAMPLE_SIZE_16 ; + hdmi_params.aud_sample_size =HDMI_AUDIO_SAMPLE_SIZE_16 ; hdmi_params.aud_input_type =HDMI_AUD_INPUT_SPDIF ;break ;default :
@@ -1706,6 +1707,11 @@ static const struct hdmi_codec_ops mtk_hdmi_audio_codec_ops = { .no_capture_mute = 1, }; +static void mtk_hdmi_unregister_audio_driver (void *data) +{ +platform_device_unregister (data); +} +static int mtk_hdmi_register_audio_driver (struct device *dev) {struct mtk_hdmi *hdmi =dev_get_drvdata (dev);
@@ -1715,13 +1721,20 @@ static int mtk_hdmi_register_audio_driver(struct device *dev) .i2s = 1, .data = hdmi, }; -struct platform_device *pdev; +int ret; - pdev =platform_device_register_data (dev,HDMI_CODEC_DRV_NAME , -PLATFORM_DEVID_AUTO , &codec_data, -sizeof (codec_data)); -if (IS_ERR (pdev)) -return PTR_ERR (pdev); + hdmi->audio_pdev =platform_device_register_data (dev, +HDMI_CODEC_DRV_NAME , +PLATFORM_DEVID_AUTO , + &codec_data, +sizeof (codec_data)); +if (IS_ERR (hdmi->audio_pdev)) +return PTR_ERR (hdmi->audio_pdev); + + ret =devm_add_action_or_reset (dev, mtk_hdmi_unregister_audio_driver, + hdmi->audio_pdev); +if (ret) +return ret;DRM_INFO ("%s driver bound to HDMI\n" ,HDMI_CODEC_DRV_NAME );return 0 ;
drivers/gpu/drm/nouveau/nouveau_connector.c +0 -1
@@ -751,7 +751,6 @@ nouveau_connector_force(struct drm_connector *connector)if (!nv_encoder) {NV_ERROR (drm,"can't find encoder to force %s on!\n" , connector->name); - connector->status = connector_status_disconnected;return ; }
drivers/gpu/drm/radeon/radeon_vce.c +1 -1
@@ -558,7 +558,7 @@ int radeon_vce_cs_parse(struct radeon_cs_parser *p) {int session_idx =-1 ;bool destroyed = false, created = false, allocated = false; -uint32_t tmp, handle =0 ; +uint32_t tmp =0 , handle =0 ;uint32_t *size = &tmp;int i, r =0 ;
drivers/gpu/drm/v3d/v3d_sched.c +8 -1
@@ -188,11 +188,15 @@ v3d_tfu_job_run(struct drm_sched_job *sched_job)struct drm_device *dev = &v3d->drm;struct dma_fence *fence; +if (unlikely (job->base.base.s_fence->finished.error)) +return NULL ; + + v3d->tfu_job = job; + fence =v3d_fence_create (v3d,V3D_TFU );if (IS_ERR (fence))return NULL ; - v3d->tfu_job = job;if (job->base.irq_fence)dma_fence_put (job->base.irq_fence); job->base.irq_fence =dma_fence_get (fence);
@@ -226,6 +230,9 @@ v3d_csd_job_run(struct drm_sched_job *sched_job)struct dma_fence *fence;int i; +if (unlikely (job->base.base.s_fence->finished.error)) +return NULL ; + v3d->csd_job = job;v3d_invalidate_caches (v3d);
drivers/gpu/drm/xlnx/zynqmp_dpsub.c +2 -0
@@ -218,6 +218,8 @@ static int zynqmp_dpsub_probe(struct platform_device *pdev)if (ret)return ret; +dma_set_max_seg_size (&pdev->dev,DMA_BIT_MASK (32 )); +/* Try the reserved memory. Proceed if there's none. */ of_reserved_mem_device_init (&pdev->dev);
drivers/hid/hid-ids.h +1 -0
@@ -1014,6 +1014,7 @@#define USB_DEVICE_ID_QUANTA_OPTICAL_TOUCH_3001 0x3001#define USB_DEVICE_ID_QUANTA_OPTICAL_TOUCH_3003 0x3003#define USB_DEVICE_ID_QUANTA_OPTICAL_TOUCH_3008 0x3008 +#define USB_DEVICE_ID_QUANTA_HP_5MP_CAMERA_5473 0x5473#define I2C_VENDOR_ID_RAYDIUM 0x2386#define I2C_PRODUCT_ID_RAYDIUM_4B33 0x4b33
drivers/hid/hid-plantronics.c +67 -77
239 lines not on this page · raw message
drivers/hid/hid-quirks.c +1 -0
@@ -870,6 +870,7 @@ static const struct hid_device_id hid_ignore_list[] = { { HID_USB_DEVICE(USB_VENDOR_ID_SYNAPTICS, USB_DEVICE_ID_SYNAPTICS_DPAD) }, #endif { HID_USB_DEVICE(USB_VENDOR_ID_YEALINK, USB_DEVICE_ID_YEALINK_P1K_P4K_B2K) }, + { HID_USB_DEVICE(USB_VENDOR_ID_QUANTA, USB_DEVICE_ID_QUANTA_HP_5MP_CAMERA_5473) }, { } };
drivers/hid/intel-ish-hid/ipc/ipc.c +3 -3
@@ -549,14 +549,14 @@ static void fw_reset_work_fn(struct work_struct *unused)static void _ish_sync_fw_clock (struct ishtp_device *dev) {static unsigned long prev_sync; -uint64_t usec; +struct ipc_time_update_msg time = {};if (prev_sync && jiffies - prev_sync <20 *HZ )return ; prev_sync = jiffies; - usec =ktime_to_us (ktime_get_boottime ()); -ipc_send_mng_msg (dev,MNG_SYNC_FW_CLOCK , &usec,sizeof (uint64_t )); +/* The fields of time would be updated while sending message */ +ipc_send_mng_msg (dev,MNG_SYNC_FW_CLOCK , &time,sizeof (time)); }/**
drivers/hv/vmbus_drv.c +13 -0
@@ -2331,12 +2331,25 @@ void vmbus_free_mmio(resource_size_t start, resource_size_t size)struct resource *iter;mutex_lock (&hyperv_mmio_lock); + +/* +* If all bytes of the MMIO range to be released are within the +* special case fb_mmio shadow region, skip releasing the shadow +* region since no corresponding __request_region() was done +* in vmbus_allocate_mmio(). +*/ +if (fb_mmio && start >= fb_mmio->start && + (start + size -1 <= fb_mmio->end)) + goto skip_shadow_release; +for (iter = hyperv_mmio; iter; iter = iter->sibling) {if ((iter->start >= start + size) || (iter->end <= start))continue ;__release_region (iter, start, size); } + +skip_shadow_release:release_mem_region (start, size);mutex_unlock (&hyperv_mmio_lock);
drivers/hwmon/nct6775.c +2 -2
@@ -420,8 +420,8 @@ static const s8 NCT6776_BEEP_BITS[] = {static const u16 NCT6776_REG_TOLERANCE_H [] = {0x10c ,0x20c ,0x30c ,0x80c ,0x90c ,0xa0c ,0xb0c }; -static const u8 NCT6776_REG_PWM_MODE [] = {0x04 ,0 ,0 ,0 ,0 ,0 }; -static const u8 NCT6776_PWM_MODE_MASK [] = {0x01 ,0 ,0 ,0 ,0 ,0 }; +static const u8 NCT6776_REG_PWM_MODE [] = {0x04 ,0 ,0 ,0 ,0 ,0 ,0 }; +static const u8 NCT6776_PWM_MODE_MASK [] = {0x01 ,0 ,0 ,0 ,0 ,0 ,0 };static const u16 NCT6776_REG_FAN_MIN [] = {0x63a ,0x63c ,0x63e ,0x640 ,0x642 ,0x64a ,0x64c };
drivers/hwtracing/coresight/coresight-catu.c +1 -1
@@ -267,7 +267,7 @@ catu_init_sg_table(struct device *catu_dev, int node,* Each table can address upto 1MB and we can have * CATU_PAGES_PER_SYSPAGE tables in a system page. */ - nr_tpages =DIV_ROUND_UP (size,SZ_1M ) /CATU_PAGES_PER_SYSPAGE ; + nr_tpages =DIV_ROUND_UP (size,CATU_PAGES_PER_SYSPAGE *SZ_1M ); catu_table =tmc_alloc_sg_table (catu_dev, node, nr_tpages, size >>PAGE_SHIFT , pages);if (IS_ERR (catu_table))
drivers/i2c/busses/i2c-ali1535.c +11 -1
@@ -490,6 +490,8 @@ MODULE_DEVICE_TABLE(pci, ali1535_ids);static int ali1535_probe (struct pci_dev *dev,const struct pci_device_id *id) { +int ret; +if (ali1535_setup (dev)) {dev_warn (&dev->dev,"ALI1535 not detected, module not inserted.\n" );
@@ -501,7 +503,15 @@ static int ali1535_probe(struct pci_dev *dev, const struct pci_device_id *id)snprintf (ali1535_adapter.name,sizeof (ali1535_adapter.name),"SMBus ALI1535 adapter at %04x" , ali1535_offset); -return i2c_add_adapter (&ali1535_adapter); + ret =i2c_add_adapter (&ali1535_adapter); +if (ret) + goto release_region; + +return 0 ; + +release_region: +release_region (ali1535_smba,ALI1535_SMB_IOSIZE ); +return ret; }static void ali1535_remove (struct pci_dev *dev)
drivers/i2c/busses/i2c-ali15x3.c +11 -1
@@ -473,6 +473,8 @@ MODULE_DEVICE_TABLE (pci, ali15x3_ids);static int ali15x3_probe (struct pci_dev *dev,const struct pci_device_id *id) { +int ret; +if (ali15x3_setup (dev)) {dev_err (&dev->dev,"ALI15X3 not detected, module not inserted.\n" );
@@ -484,7 +486,15 @@ static int ali15x3_probe(struct pci_dev *dev, const struct pci_device_id *id)snprintf (ali15x3_adapter.name,sizeof (ali15x3_adapter.name),"SMBus ALI15X3 adapter at %04x" , ali15x3_smba); -return i2c_add_adapter (&ali15x3_adapter); + ret =i2c_add_adapter (&ali15x3_adapter); +if (ret) + goto release_region; + +return 0 ; + +release_region: +release_region (ali15x3_smba,ALI15X3_SMB_IOSIZE ); +return ret; }static void ali15x3_remove (struct pci_dev *dev)
drivers/i2c/busses/i2c-omap.c +7 -19
@@ -1049,23 +1049,6 @@ static int omap_i2c_transmit_data(struct omap_i2c_dev *omap, u8 num_bytes,return 0 ; } -static irqreturn_t -omap_i2c_isr (int irq,void *dev_id) -{ -struct omap_i2c_dev *omap = dev_id; -irqreturn_t ret =IRQ_HANDLED ; -u16 mask; -u16 stat; - - stat =omap_i2c_read_reg (omap,OMAP_I2C_STAT_REG ); - mask =omap_i2c_read_reg (omap,OMAP_I2C_IE_REG ) & ~OMAP_I2C_STAT_NACK ; - -if (stat & mask) - ret =IRQ_WAKE_THREAD ; - -return ret; -} -static int omap_i2c_xfer_data (struct omap_i2c_dev *omap) {u16 bits;
@@ -1096,8 +1079,13 @@ static int omap_i2c_xfer_data(struct omap_i2c_dev *omap) }if (stat &OMAP_I2C_STAT_NACK ) { - err |=OMAP_I2C_STAT_NACK ; + omap->cmd_err |=OMAP_I2C_STAT_NACK ;omap_i2c_ack_stat (omap,OMAP_I2C_STAT_NACK ); + +if (!(stat & ~OMAP_I2C_STAT_NACK )) { + err = -EAGAIN ; +break ; + } }if (stat &OMAP_I2C_STAT_AL ) {
@@ -1475,7 +1463,7 @@ omap_i2c_probe(struct platform_device *pdev) IRQF_NO_SUSPEND, pdev->name, omap); else r =devm_request_threaded_irq (&pdev->dev, omap->irq, - omap_i2c_isr, omap_i2c_isr_thread, +NULL , omap_i2c_isr_thread,IRQF_NO_SUSPEND |IRQF_ONESHOT , pdev->name, omap);
drivers/i2c/busses/i2c-sis630.c +11 -1
@@ -509,6 +509,8 @@ MODULE_DEVICE_TABLE(pci, sis630_ids);static int sis630_probe (struct pci_dev *dev,const struct pci_device_id *id) { +int ret; +if (sis630_setup (dev)) {dev_err (&dev->dev, "SIS630 compatible bus not detected, "
@@ -522,7 +524,15 @@ static int sis630_probe(struct pci_dev *dev, const struct pci_device_id *id)snprintf (sis630_adapter.name,sizeof (sis630_adapter.name),"SMBus SIS630 adapter at %04x" , smbus_base +SMB_STS ); -return i2c_add_adapter (&sis630_adapter); + ret =i2c_add_adapter (&sis630_adapter); +if (ret) + goto release_region; + +return 0 ; + +release_region: +release_region (smbus_base +SMB_STS ,SIS630_SMB_IOREGION ); +return ret; }static void sis630_remove (struct pci_dev *dev)
drivers/i2c/i2c-dev.c +10 -5
@@ -669,17 +669,22 @@ static int i2cdev_attach_adapter(struct device *dev, void *dummy) i2c_dev->dev.class = i2c_dev_class; i2c_dev->dev.parent = &adap->dev; i2c_dev->dev.release = i2cdev_dev_release; -dev_set_name (&i2c_dev->dev,"i2c-%d" , adap->nr); + + res =dev_set_name (&i2c_dev->dev,"i2c-%d" , adap->nr); +if (res) + goto err_put_i2c_dev; res =cdev_device_add (&i2c_dev->cdev, &i2c_dev->dev); -if (res) { -put_i2c_dev (i2c_dev, false); -return res; - } +if (res) + goto err_put_i2c_dev;pr_debug ("i2c-dev: adapter [%s] registered as minor %d\n" , adap->name, adap->nr);return 0 ; + +err_put_i2c_dev: +put_i2c_dev (i2c_dev, false); +return res; }static int i2cdev_detach_adapter (struct device *dev,void *dummy)
drivers/iio/accel/mma8452.c +7 -3
@@ -711,7 +711,7 @@ static int mma8452_write_raw(struct iio_dev *indio_dev, int val, int val2, long mask) { struct mma8452_data *data = iio_priv(indio_dev); -int i, ret; +int i, j, ret; ret =iio_device_claim_direct_mode (indio_dev);if (ret)
@@ -771,14 +771,18 @@ static int mma8452_write_raw(struct iio_dev *indio_dev,break ;case IIO_CHAN_INFO_OVERSAMPLING_RATIO : - ret =mma8452_get_odr_index (data); + j =mma8452_get_odr_index (data);for (i =0 ; i <ARRAY_SIZE (mma8452_os_ratio); i++) { -if (mma8452_os_ratio[i][ret] == val) { +if (mma8452_os_ratio[i][j] == val) { ret =mma8452_set_power_mode (data, i);break ; } } +if (i ==ARRAY_SIZE (mma8452_os_ratio)) { + ret = -EINVAL ; +break ; + }break ;default : ret = -EINVAL ;
drivers/infiniband/core/mad.c +20 -18
@@ -2686,11 +2686,11 @@ static int ib_mad_post_receive_mads(struct ib_mad_qp_info *qp_info, struct ib_mad_private *mad) {unsigned long flags; -int post, ret;struct ib_mad_private *mad_priv;struct ib_sge sg_list;struct ib_recv_wr recv_wr;struct ib_mad_queue *recv_queue = &qp_info->recv_queue; +int ret =0 ;/* Initialize common scatter list fields */ sg_list.lkey = qp_info->port_priv->pd->local_dma_lkey;
@@ -2700,7 +2700,7 @@ static int ib_mad_post_receive_mads(struct ib_mad_qp_info *qp_info, recv_wr.sg_list = &sg_list; recv_wr.num_sge =1 ; - do { +while (true) {/* Allocate and map receive buffer */ if (mad) { mad_priv = mad;
@@ -2708,10 +2708,8 @@ static int ib_mad_post_receive_mads(struct ib_mad_qp_info *qp_info, }else { mad_priv =alloc_mad_private (port_mad_size (qp_info->port_priv),GFP_ATOMIC ); -if (!mad_priv) { - ret = -ENOMEM ; -break ; - } +if (!mad_priv) +return -ENOMEM ; } sg_list.length =mad_priv_dma_size (mad_priv); sg_list.addr = ib_dma_map_single(qp_info->port_priv->device,
@@ -2720,37 +2718,41 @@ static int ib_mad_post_receive_mads(struct ib_mad_qp_info *qp_info, DMA_FROM_DEVICE);if (unlikely (ib_dma_mapping_error (qp_info->port_priv->device, sg_list.addr))) { -kfree (mad_priv); ret = -ENOMEM ; -break ; + goto free_mad_priv; } mad_priv->header.mapping = sg_list.addr; mad_priv->header.mad_list.mad_queue = recv_queue; mad_priv->header.mad_list.cqe.done = ib_mad_recv_done; recv_wr.wr_cqe = &mad_priv->header.mad_list.cqe; - -/* Post receive WR */ spin_lock_irqsave (&recv_queue->lock, flags); - post = (++recv_queue->count < recv_queue->max_active); -list_add_tail (&mad_priv->header.mad_list.list, &recv_queue->list); +if (recv_queue->count >= recv_queue->max_active) { +/* Fully populated the receive queue */ +spin_unlock_irqrestore (&recv_queue->lock, flags); +break ; + } + recv_queue->count++; +list_add_tail (&mad_priv->header.mad_list.list, + &recv_queue->list);spin_unlock_irqrestore (&recv_queue->lock, flags); + ret =ib_post_recv (qp_info->qp, &recv_wr,NULL );if (ret) {spin_lock_irqsave (&recv_queue->lock, flags);list_del (&mad_priv->header.mad_list.list); recv_queue->count--;spin_unlock_irqrestore (&recv_queue->lock, flags); -ib_dma_unmap_single (qp_info->port_priv->device, - mad_priv->header.mapping, -mad_priv_dma_size (mad_priv), -DMA_FROM_DEVICE ); -kfree (mad_priv);dev_err (&qp_info->port_priv->device->dev,"ib_post_recv failed: %d\n" , ret);break ; } - }while (post); + } +ib_dma_unmap_single (qp_info->port_priv->device, + mad_priv->header.mapping, +mad_priv_dma_size (mad_priv),DMA_FROM_DEVICE ); +free_mad_priv: +kfree (mad_priv);return ret; }
drivers/infiniband/hw/bnxt_re/qplib_fp.c +0 -2
@@ -1163,8 +1163,6 @@ static void __modify_flags_from_init_state(struct bnxt_qplib_qp *qp) qp->path_mtu =CMDQ_MODIFY_QP_PATH_MTU_MTU_2048 ; } - qp->modify_flags &= - ~CMDQ_MODIFY_QP_MODIFY_MASK_VLAN_ID ;/* Bono FW require the max_dest_rd_atomic to be >= 1 */ if (qp->max_dest_rd_atomic <1 ) qp->max_dest_rd_atomic =1 ;
drivers/infiniband/hw/bnxt_re/qplib_rcfw.h +2 -1
@@ -218,9 +218,10 @@ int bnxt_qplib_deinit_rcfw(struct bnxt_qplib_rcfw *rcfw);int bnxt_qplib_init_rcfw (struct bnxt_qplib_rcfw *rcfw,struct bnxt_qplib_ctx *ctx,int is_virtfn);void bnxt_qplib_mark_qp_error (void *qp_handle); +static inline u32 map_qp_id_to_tbl_indx (u32 qid,struct bnxt_qplib_rcfw *rcfw) {/* Last index of the qp_tbl is for QP1 ie. qp_tbl_size - 1*/ -return (qid ==1 ) ? rcfw->qp_tbl_size -1 : qid % rcfw->qp_tbl_size -2 ; +return (qid ==1 ) ? rcfw->qp_tbl_size -1 : (qid % (rcfw->qp_tbl_size -2 )); }#endif /* __BNXT_QPLIB_RCFW_H__ */
drivers/infiniband/hw/hns/hns_roce_hem.c +16 -7
@@ -1384,6 +1384,11 @@ static int hem_list_alloc_root_bt(struct hns_roce_dev *hr_dev,return ret; } +/* This is the bottom bt pages number of a 100G MR on 4K OS, assuming +* the bt page size is not expanded by cal_best_bt_pg_sz() +*/ +#define RESCHED_LOOP_CNT_THRESHOLD_ON_4K 12800 +/* construct the base address table and link them by address hop config */ int hns_roce_hem_list_request(struct hns_roce_dev *hr_dev, struct hns_roce_hem_list *hem_list,
@@ -1392,6 +1397,7 @@ int hns_roce_hem_list_request(struct hns_roce_dev *hr_dev, {const struct hns_roce_buf_region *r;int ofs, end; +int loop;int unit;int ret;int i;
@@ -1409,7 +1415,10 @@ int hns_roce_hem_list_request(struct hns_roce_dev *hr_dev,continue ; end = r->offset + r->count; -for (ofs = r->offset; ofs < end; ofs += unit) { +for (ofs = r->offset, loop =1 ; ofs < end; ofs += unit, loop++) { +if (!(loop %RESCHED_LOOP_CNT_THRESHOLD_ON_4K )) +cond_resched (); + ret =hem_list_alloc_mid_bt (hr_dev, r, unit, ofs, hem_list->mid_bt[i], &hem_list->btm_bt);
@@ -1462,19 +1471,22 @@ void hns_roce_hem_list_init(struct hns_roce_hem_list *hem_list)void *hns_roce_hem_list_find_mtt (struct hns_roce_dev *hr_dev,struct hns_roce_hem_list *hem_list, -int offset,int *mtt_cnt,u64 *phy_addr) +int offset,int *mtt_cnt) {struct list_head *head = &hem_list->btm_bt;struct hns_roce_hem_item *hem, *temp_hem;void *cpu_base =NULL ; -u64 phy_base =0 ; +int loop =1 ;int nr =0 ;list_for_each_entry_safe (hem, temp_hem, head, sibling) { +if (!(loop %RESCHED_LOOP_CNT_THRESHOLD_ON_4K )) +cond_resched (); + loop++; +if (hem_list_page_is_in_range (hem, offset)) { nr = offset - hem->start; cpu_base = hem->addr + nr *BA_BYTE_LEN ; - phy_base = hem->dma_addr + nr *BA_BYTE_LEN ; nr = hem->end +1 - offset;break ; }
@@ -1483,8 +1495,5 @@ void *hns_roce_hem_list_find_mtt(struct hns_roce_dev *hr_dev,if (mtt_cnt) *mtt_cnt = nr; -if (phy_addr) - *phy_addr = phy_base; -return cpu_base; }
drivers/infiniband/hw/hns/hns_roce_hem.h +1 -1
@@ -131,7 +131,7 @@ void hns_roce_hem_list_release(struct hns_roce_dev *hr_dev, struct hns_roce_hem_list *hem_list);void *hns_roce_hem_list_find_mtt (struct hns_roce_dev *hr_dev,struct hns_roce_hem_list *hem_list, -int offset,int *mtt_cnt,u64 *phy_addr); +int offset,int *mtt_cnt);static inline void hns_roce_hem_first (struct hns_roce_hem *hem,struct hns_roce_hem_iter *iter)
drivers/infiniband/hw/hns/hns_roce_main.c +1 -1
@@ -199,7 +199,7 @@ static int hns_roce_query_device(struct ib_device *ib_dev,IB_DEVICE_RC_RNR_NAK_GEN ; props->max_send_sge = hr_dev->caps.max_sq_sg; props->max_recv_sge = hr_dev->caps.max_rq_sg; - props->max_sge_rd =1 ; + props->max_sge_rd = hr_dev->caps.max_sq_sg; props->max_cq = hr_dev->caps.num_cqs; props->max_cqe = hr_dev->caps.max_cqes; props->max_mr = hr_dev->caps.num_mtpts;
drivers/infiniband/hw/hns/hns_roce_mr.c +2 -2
@@ -649,7 +649,7 @@ static int mtr_map_region(struct hns_roce_dev *hr_dev, struct hns_roce_mtr *mtr,while (offset < end && npage < max_count) { count =0 ; mtts =hns_roce_hem_list_find_mtt (hr_dev, &mtr->hem_list, - offset, &count,NULL ); + offset, &count);if (!mtts)return -ENOBUFS ;
@@ -923,7 +923,7 @@ int hns_roce_mtr_find(struct hns_roce_dev *hr_dev, struct hns_roce_mtr *mtr, mtt_count =0 ; mtts =hns_roce_hem_list_find_mtt (hr_dev, &mtr->hem_list, start_index + total, - &mtt_count,NULL ); + &mtt_count);if (!mtts || !mtt_count) goto done;
drivers/infiniband/hw/mlx5/cq.c +1 -1
@@ -481,7 +481,7 @@ static int mlx5_poll_one(struct mlx5_ib_cq *cq, } qpn =ntohl (cqe64->sop_drop_qpn) &0xffffff ; -if (!*cur_qp || (qpn != (*cur_qp)->ibqp.qp_num)) { +if (!*cur_qp || (qpn != (*cur_qp)->trans_qp.base.mqp.qpn)) {/* We do not have to take the QP table lock here, * because CQs will be locked while QPs are removed * from the table.
drivers/media/dvb-frontends/dib8000.c +4 -1
@@ -2701,8 +2701,11 @@ static void dib8000_set_dds(struct dib8000_state *state, s32 offset_khz)u8 ratio;if (state->revision ==0x8090 ) { +u32 internal =dib8000_read32 (state,23 ) /1000 ; + ratio =4 ; - unit_khz_dds_val = (1 <<26 ) / (dib8000_read32 (state,23 ) /1000 ); + + unit_khz_dds_val = (1 <<26 ) / (internal ?:1 );if (offset_khz <0 ) dds = (1 <<26 ) - (abs_offset_khz * unit_khz_dds_val);else
drivers/media/i2c/et8ek8/et8ek8_driver.c +2 -2
@@ -1460,7 +1460,7 @@ static int et8ek8_probe(struct i2c_client *client)return ret; } -static int __exit et8ek8_remove(struct i2c_client *client) +static int et8ek8_remove (struct i2c_client *client) {struct v4l2_subdev *subdev =i2c_get_clientdata (client);struct et8ek8_sensor *sensor =to_et8ek8_sensor (subdev);
@@ -1504,7 +1504,7 @@ static struct i2c_driver et8ek8_i2c_driver = { .of_match_table = et8ek8_of_table, }, .probe_new = et8ek8_probe, - .remove = __exit_p(et8ek8_remove), + .remove = et8ek8_remove, .id_table = et8ek8_id_table, };
drivers/memstick/host/rtsx_usb_ms.c +1 -0
@@ -813,6 +813,7 @@ static int rtsx_usb_ms_drv_remove(struct platform_device *pdev) host->eject = true;cancel_work_sync (&host->handle_req); +cancel_delayed_work_sync (&host->poll_card);mutex_lock (&host->host_mutex);if (host->req) {
drivers/mfd/sm501.c +3 -3
@@ -920,7 +920,7 @@ static void sm501_gpio_set(struct gpio_chip *chip, unsigned offset, int value) {struct sm501_gpio_chip *smchip =gpiochip_get_data (chip);struct sm501_gpio *smgpio = smchip->ourgpio; -unsigned long bit =1 << offset; +unsigned long bit =BIT (offset);void __iomem *regs = smchip->regbase;unsigned long save;unsigned long val;
@@ -946,7 +946,7 @@ static int sm501_gpio_input(struct gpio_chip *chip, unsigned offset)struct sm501_gpio_chip *smchip =gpiochip_get_data (chip);struct sm501_gpio *smgpio = smchip->ourgpio;void __iomem *regs = smchip->regbase; -unsigned long bit =1 << offset; +unsigned long bit =BIT (offset);unsigned long save;unsigned long ddr;
@@ -971,7 +971,7 @@ static int sm501_gpio_output(struct gpio_chip *chip, {struct sm501_gpio_chip *smchip =gpiochip_get_data (chip);struct sm501_gpio *smgpio = smchip->ourgpio; -unsigned long bit =1 << offset; +unsigned long bit =BIT (offset);void __iomem *regs = smchip->regbase;unsigned long save;
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/ice/ice_arfs.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/marvell/octeontx2/af/rvu.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx5/core/en_main.c +2 -4
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx5/core/lib/fs_chains.c +5 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/qlogic/qlcnic/qlcnic_sriov_common.c +6 -2
Lines of this file are not shown. View the raw message.
drivers/net/wireless/intel/iwlwifi/fw/dbg.c +58 -28
86 lines not on this page · raw message
drivers/pci/controller/cadence/pcie-cadence-ep.c +1 -2
Lines of this file are not shown. View the raw message.
drivers/pci/controller/cadence/pcie-cadence.h +1 -1
Lines of this file are not shown. View the raw message.
drivers/pci/controller/pcie-xilinx-cpm.c +6 -4
Lines of this file are not shown. View the raw message.
drivers/power/supply/max77693_charger.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/thermal/intel/int340x_thermal/int3402_thermal.c +3 -0
Lines of this file are not shown. View the raw message.
drivers/usb/serial/option.c +32 -16
48 lines not on this page · raw message
include/linux/netfilter/nf_conntrack_common.h +4 -4
Lines of this file are not shown. View the raw message.
net/can/proc.c +27 -19
46 lines not on this page · raw message
net/netfilter/nf_conntrack_core.c +35 -13
48 lines not on this page · raw message
net/netfilter/nf_conntrack_standalone.c +5 -2
Lines of this file are not shown. View the raw message.
sound/usb/mixer_quirks.c +51 -0
51 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.