Linux 5.19.8
Greg Kroah-Hartman
maintainerI'm announcing the release of the 5.19.8 kernel.
All users of the 5.19 kernel series must upgrade.
The updated 5.19.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-5.19.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
------------
Makefile | 2 arch/arm64/kernel/machine_kexec_file.c | 2 arch/powerpc/include/asm/firmware.h | 8 arch/powerpc/kernel/rtas_entry.S | 4 arch/powerpc/kernel/systbl.S | 1 arch/powerpc/platforms/pseries/papr_scm.c | 90 ++----- arch/riscv/include/asm/kvm_vcpu_sbi.h | 12 arch/riscv/kvm/vcpu_sbi.c | 12 arch/riscv/mm/pageattr.c | 4 arch/s390/include/asm/hugetlb.h | 6 arch/s390/kernel/vmlinux.lds.S | 1 arch/x86/kvm/vmx/vmx.c | 3 arch/x86/kvm/x86.c | 25 + drivers/android/binder.c | 12 drivers/android/binder_alloc.c | 4 drivers/base/dd.c | 10 drivers/base/firmware_loader/sysfs.c | 7 drivers/base/firmware_loader/sysfs.h | 5 drivers/base/firmware_loader/sysfs_upload.c | 12 drivers/block/xen-blkback/common.h | 3 drivers/block/xen-blkback/xenbus.c | 6 drivers/block/xen-blkfront.c | 20 - drivers/clk/bcm/clk-raspberrypi.c | 15 - drivers/clk/clk.c | 3 drivers/clk/ti/clk.c | 1 drivers/dma-buf/dma-resv.c | 3 drivers/gpio/gpio-pca953x.c | 8 drivers/gpio/gpio-realtek-otto.c | 166 ++++++------- drivers/gpu/drm/i915/display/intel_backlight.c | 37 +- drivers/gpu/drm/i915/display/intel_bw.c | 16 - drivers/gpu/drm/i915/display/intel_dp.c | 2 drivers/gpu/drm/i915/display/intel_quirks.c | 3 drivers/gpu/drm/i915/gt/intel_migrate.c | 44 +-- drivers/gpu/drm/i915/gt/uc/intel_guc_submission.c | 7 drivers/gpu/drm/i915/gvt/handlers.c | 2 drivers/gpu/drm/i915/intel_gvt_mmio_table.c | 3 drivers/gpu/drm/i915/intel_pm.c | 8 drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c | 6 drivers/gpu/drm/msm/dp/dp_ctrl.c | 2 drivers/gpu/drm/msm/dsi/dsi_cfg.c | 4 drivers/gpu/drm/msm/dsi/phy/dsi_phy.c | 2 drivers/gpu/drm/msm/msm_drv.c | 2 drivers/gpu/drm/msm/msm_gpu_devfreq.c | 2 drivers/hwmon/gpio-fan.c | 3 drivers/iio/adc/ad7292.c | 4 drivers/iio/adc/mcp3911.c | 28 +- drivers/iio/light/cm3605.c | 6 drivers/input/joystick/iforce/iforce-serio.c | 6 drivers/input/joystick/iforce/iforce-usb.c | 8 drivers/input/joystick/iforce/iforce.h | 6 drivers/input/misc/rk805-pwrkey.c | 1 drivers/media/rc/mceusb.c | 35 +- drivers/misc/fastrpc.c | 12 drivers/mmc/core/sd.c | 46 +-- drivers/net/dsa/xrs700x/xrs700x.c | 5 drivers/net/ethernet/cortina/gemini.c | 24 - drivers/net/ethernet/fungible/funeth/funeth_txrx.h | 4 drivers/net/ethernet/google/gve/gve_ethtool.c | 16 - drivers/net/ethernet/google/gve/gve_main.c | 12 drivers/net/ethernet/huawei/hinic/hinic_rx.c | 4 drivers/net/ethernet/huawei/hinic/hinic_tx.c | 4 drivers/net/ethernet/mellanox/mlxbf_gige/mlxbf_gige.h | 4 drivers/net/ethernet/mellanox/mlxbf_gige/mlxbf_gige_mdio.c | 122 ++++++++- drivers/net/ethernet/mellanox/mlxbf_gige/mlxbf_gige_regs.h | 2 drivers/net/ethernet/mellanox/mlxsw/spectrum_span.c | 3 drivers/net/ethernet/microchip/lan966x/lan966x_fdma.c | 5 drivers/net/ethernet/microchip/sparx5/sparx5_packet.c | 2 drivers/net/ethernet/netronome/nfp/flower/qos_conf.c | 5 drivers/net/ethernet/netronome/nfp/nfp_net_common.c | 8 drivers/net/ethernet/netronome/nfp/nfp_net_ethtool.c | 8 drivers/net/ethernet/rocker/rocker_ofdpa.c | 2 drivers/net/ethernet/smsc/smsc911x.c | 6 drivers/net/ieee802154/adf7242.c | 3 drivers/net/netdevsim/netdev.c | 4 drivers/net/phy/micrel.c | 8 drivers/peci/controller/peci-aspeed.c | 2 drivers/platform/mellanox/mlxreg-lc.c | 38 +- drivers/platform/x86/pmc_atom.c | 2 drivers/platform/x86/x86-android-tablets.c | 14 + drivers/soundwire/qcom.c | 6 drivers/staging/r8188eu/os_dep/os_intfs.c | 1 drivers/staging/r8188eu/os_dep/usb_intf.c | 1 drivers/staging/rtl8712/rtl8712_cmd.c | 36 -- drivers/thunderbolt/ctl.c | 2 drivers/thunderbolt/switch.c | 6 drivers/tty/n_gsm.c | 85 ++---- drivers/tty/serial/atmel_serial.c | 4 drivers/tty/serial/fsl_lpuart.c | 5 drivers/tty/vt/vt.c | 12 drivers/usb/cdns3/cdns3-gadget.c | 4 drivers/usb/class/cdc-acm.c | 3 drivers/usb/core/hub.c | 10 drivers/usb/dwc2/platform.c | 8 drivers/usb/dwc3/core.c | 19 - drivers/usb/dwc3/dwc3-pci.c | 4 drivers/usb/dwc3/gadget.c | 8 drivers/usb/dwc3/host.c | 10 drivers/usb/gadget/function/f_uac2.c | 16 + drivers/usb/gadget/function/storage_common.c | 6 drivers/usb/gadget/udc/core.c | 26 +- drivers/usb/host/xhci-hub.c | 13 - drivers/usb/host/xhci-mtk-sch.c | 15 - drivers/usb/host/xhci-plat.c | 11 drivers/usb/host/xhci.c | 19 - drivers/usb/host/xhci.h | 4 drivers/usb/musb/Kconfig | 2 drivers/usb/serial/ch341.c | 16 + drivers/usb/serial/cp210x.c | 1 drivers/usb/serial/ftdi_sio.c | 2 drivers/usb/serial/ftdi_sio_ids.h | 6 drivers/usb/serial/option.c | 15 + drivers/usb/storage/unusual_devs.h | 7 drivers/usb/typec/altmodes/displayport.c | 4 drivers/usb/typec/mux/intel_pmc_mux.c | 9 drivers/usb/typec/tcpm/tcpm.c | 7 drivers/usb/typec/ucsi/ucsi.c | 53 +--- drivers/xen/grant-table.c | 3 fs/cachefiles/internal.h | 1 fs/cachefiles/ondemand.c | 22 + fs/cifs/smb2pdu.c | 12 include/linux/bpf.h | 13 + include/linux/platform_data/x86/pmc_atom.h | 6 include/linux/usb.h | 2 include/linux/usb/typec_dp.h | 5 include/net/ip_tunnels.h | 4 kernel/bpf/cgroup.c | 4 kernel/bpf/core.c | 2 kernel/bpf/syscall.c | 2 kernel/bpf/verifier.c | 112 +++++--- mm/pagewalk.c | 21 - mm/ptdump.c | 4 mm/slab_common.c | 45 ++- net/bluetooth/hci_event.c | 13 - net/bluetooth/hci_sync.c | 30 +- net/core/skmsg.c | 4 net/ipv4/fib_frontend.c | 4 net/ipv4/ip_gre.c | 2 net/ipv4/ip_tunnel.c | 7 net/ipv4/tcp_input.c | 4 net/kcm/kcmsock.c | 15 - net/mac80211/ibss.c | 4 net/mac80211/scan.c | 11 net/mac80211/sta_info.c | 8 net/mac802154/rx.c | 2 net/mpls/af_mpls.c | 4 net/openvswitch/datapath.c | 4 net/sched/sch_generic.c | 31 +- net/sched/sch_tbf.c | 4 net/smc/af_smc.c | 1 net/wireless/debugfs.c | 3 net/xdp/xsk_buff_pool.c | 16 - security/landlock/fs.c | 48 +-- sound/core/memalloc.c | 87 +++++- sound/core/seq/oss/seq_oss_midi.c | 2 sound/core/seq/seq_clientmgr.c | 12 sound/hda/intel-nhlt.c | 8 sound/pci/hda/patch_realtek.c | 63 ++++ tools/testing/selftests/landlock/fs_test.c | 155 +++++++++++- 158 files changed, 1491 insertions(+), 812 deletions(-)
Abhinav Kumar (1):
drm/msm/dpu: populate wb or intf before reset_intf_cfg
Adrian Hunter (2):
mmc: core: Fix UHS-I SD 1.8V workaround branch
mmc: core: Fix inconsistent sd3_bus_mode at UHS-I SD voltage switch failure
Alan Stern (3):
media: mceusb: Use new usb_control_msg_*() routines
USB: core: Prevent nested device-reset calls
USB: gadget: Fix obscure lockdep violation for udc_mutex
Alex Williamson (1):
drm/i915/gvt: Fix Comet Lake
Andrey Zhadchenko (1):
openvswitch: fix memory leak at failed datapath creation
Andy Shevchenko (1):
platform/x86: pmc_atom: Fix SLP_TYPx bitfield mask
Archie Pusaka (1):
Bluetooth: hci_event: Fix checking conn for le_conn_complete_evt
Armin Wolf (1):
hwmon: (gpio-fan) Fix array out of bounds access
Arnd Bergmann (1):
musb: fix USB_MUSB_TUSB6010 dependency
Arun R Murthy (1):
drm/i915/display: avoid warnings when registering dual panel backlight
Badhri Jagan Sridharan (1):
usb: typec: tcpm: Return ENOTSUPP for power supply prop writes
Bjorn Andersson (1):
drm/msm/gpu: Drop qos request if devm_devfreq_add_device() fails
Carlos Llamas (2):
binder: fix UAF of ref->proc caused by race condition
binder: fix alloc->vma_vm_mm null-ptr dereferenceCasper Andersson (1):
net: sparx5: fix handling uneven length packets in manual extraction
Chen-Yu Tsai (2):
clk: core: Honor CLK_OPS_PARENT_ENABLE for clk gate ops
clk: core: Fix runtime PM sequence in clk_core_unprepare()
Christian König (1):
dma-buf/dma-resv: check if the new fence is really later
Christophe JAILLET (1):
iio: light: cm3605: Fix an error handling path in cm3605_probe()
Chunfeng Yun (2):
usb: xhci-mtk: relax TT periodic bandwidth allocation
usb: xhci-mtk: fix bandwidth release issue
Colin Ian King (1):
drm/i915/reg: Fix spelling mistake "Unsupport" -> "Unsupported"
Cong Wang (1):
kcm: fix strp_init() order and cleanup
Conor Dooley (1):
riscv: kvm: move extern sbi_ext declarations to a header
Dan Carpenter (4):
wifi: cfg80211: debugfs: fix return type in ht40allow_map_read()
net: lan966x: improve error handle in lan966x_fdma_rx_get_frame()
staging: rtl8712: fix use after free bugs
xen/grants: prevent integer overflow in gnttab_dma_alloc_pages()
Daniele Ceraolo Spurio (1):
drm/i915/guc: clear stalled request after a reset
David Thompson (1):
mlxbf_gige: compute MDIO period based on i1clk
Diego Santa Cruz (1):
drm/i915/glk: ECS Liva Q2 needs GLK HDMI port timing quirk
Douglas Anderson (2):
drm/msm/dsi: Fix number of regulators for msm8996_dsi_cfg drm/msm/dsi: Fix number of regulators for SDM660
Duoming Zhou (1):
ethernet: rocker: fix sleep in atomic context bug in neigh_timer_handler
Enzo Matsumiya (1):
cifs: fix small mempool leak in SMB2_negotiate()
Eric Dumazet (1):
tcp: annotate data-race around challenge_timestamp
Eyal Birger (1):
ip_tunnel: Respect tunnel key's "flow_flags" in IP tunnels
Fedor Pchelkin (2):
tty: n_gsm: replace kicktimer with delayed_work
tty: n_gsm: avoid call of sleeping functions from atomic context
Florian Fainelli (1):
net: smsc911x: Stop and start PHY during suspend and resume
Gerald Schaefer (1):
s390/hugetlb: fix prepare_hugepage_range() check for 2 GB hugepages
Greg Kroah-Hartman (1):
Linux 5.19.8
Grzegorz Szymaszek (1):
staging: r8188eu: add firmware dependency
Haibo Chen (1):
gpio: pca953x: Add mutex_lock for regcache sync in PM
Hans de Goede (2):
platform/x86: x86-android-tablets: Fix broken touchscreen on Chuwi Hi8 with Windows BIOS
Bluetooth: hci_event: Fix vendor (unknown) opcode status handling
Heikki Krogerus (1):
usb: dwc3: pci: Add support for Intel Raptor Lake
Heiner Kallweit (1):
usb: dwc2: fix wrong order of phy_power_on and phy_init
Helge Deller (1):
vt: Clear selection before changing the font
Horatiu Vultur (1):
net: phy: micrel: Make the GPIO to be non-exclusive
Isaac J. Manjarres (1):
driver core: Don't probe devices after bus_type.match() probe deferral
Jakub Kicinski (1):
Revert "sch_cake: Return __NET_XMIT_STOLEN when consuming enqueued skb"
Jim Mattson (2):
KVM: VMX: Heed the 'msr' argument in msr_write_intercepted()
KVM: x86: Mask off unsupported and unknown bits of IA32_ARCH_CAPABILITIES
Jing Leng (1):
usb: gadget: f_uac2: fix superspeed transfer
Joanne Koong (1):
bpf: Tidy up verifier check_func_arg()
Johan Hovold (7):
misc: fastrpc: fix memory corruption on probe
misc: fastrpc: fix memory corruption on open
usb: dwc3: disable USB core PHY management
usb: dwc3: fix PHY disable sequence
USB: serial: ch341: fix lost character on LCR updates
USB: serial: ch341: fix disabled rx timer on older devices
USB: serial: cp210x: add Decagon UCA device id
Josh Poimboeuf (1):
s390: fix nospec table alignments
Jouni Högander (1):
drm/i915/backlight: Disable pps power hook for aux based backlight
Kacper Michajłow (1):
ALSA: hda/realtek: Add speaker AMP init for Samsung laptops with ALC298
Kajol Jain (1):
powerpc/papr_scm: Fix nvdimm event mappings
Krishna Kurapati (1):
usb: gadget: mass_storage: Fix cdrom data transfers on MAC-OS
Kumar Kartikeya Dwivedi (1):
bpf: Do mark_chain_precision for ARG_CONST_ALLOC_SIZE_OR_ZERO
Kuniyuki Iwashima (1):
bpf: Fix a data-race around bpf_jit_limit.
Kuogee Hsieh (2):
drm/msm/dp: make eDP panel as the first connected connector drm/msm/dp: delete DP_RECOVERED_CLOCK_OUT_EN to fix tps4
Larry Finger (1):
staging: r8188eu: Add Rosewill USB-N150 Nano to device tables
Levi Yun (1):
arm64/kexec: Fix missing extra range for crashkres_low.
Lin Ma (1):
ieee802154/adf7242: defer destroy_workqueue call
Liu Jian (1):
skmsg: Fix wrong last sg check in sk_msg_recvmsg()
Luiz Augusto von Dentz (1):
Bluetooth: hci_sync: Fix suspend performance regression
Lv Ruyi (1):
peci: aspeed: fix error check return value of platform_get_irq()
Magnus Karlsson (1):
xsk: Fix corrupted packets for XDP_SHARED_UMEM
Marcus Folkesson (3):
iio: adc: mcp3911: make use of the sign bit
iio: adc: mcp3911: correct "microchip,device-addr" property
iio: adc: mcp3911: use correct formula for AD conversion
Masahiro Yamada (1):
powerpc: align syscall table for ppc32
Mathias Nyman (3):
xhci: Fix null pointer dereference in remove if xHC has only one roothub Revert "xhci: turn off port power in shutdown"
xhci: Add grace period after xHC start to prevent premature runtime suspend.
Matthew Auld (1):
drm/i915/ttm: fix CCS handling
Matti Vaittinen (1):
iio: ad7292: Prevent regulator double disable
Maxim Mikityanskiy (1):
bpf: Allow helpers to accept pointers with a fixed size
Mazin Al Haddad (1):
tty: n_gsm: add sanity check for gsm->receive in gsm_receive_buf()
Michael Ellerman (2):
Revert "powerpc: Remove unused FW_FEATURE_NATIVE references" powerpc/rtas: Fix RTAS MSR[HV] handling for Cell
Mickaël Salaün (1):
landlock: Fix file reparenting without explicit LANDLOCK_ACCESS_FS_REFER
Mika Westerberg (2):
thunderbolt: Use the actual buffer in tb_async_error()
thunderbolt: Check router generation before connecting xHCI
Miquel Raynal (1):
net: mac802154: Fix a condition in the receive path
Nathan Chancellor (1):
powerpc/papr_scm: Ensure rc is always initialized in papr_scm_pmu_register()
Nicolas Dichtel (1):
ip: fix triggering of 'icmp redirect'
Niek Nooijens (1):
USB: serial: ftdi_sio: add Omron CS1W-CIF31 device id
Pablo Sun (1):
usb: typec: altmodes/displayport: correct pin assignment for UFP receptacles
Pawel Laszczak (2):
usb: cdns3: fix issue with rearming ISO OUT endpoint
usb: cdns3: fix incorrect handling TRB_SMM flag for ISOC transfer
Peter Robinson (1):
Input: rk805-pwrkey - fix module autoloading
Peter Ujfalusi (1):
ALSA: hda: intel-nhlt: Correct the handling of fmt_config flexible array
Pu Lehui (1):
bpf, cgroup: Fix kernel BUG in purge_effective_progs
Russ Weight (2):
firmware_loader: Fix use-after-free during unregister
firmware_loader: Fix memory leak in firmware upload
Sander Vanheule (1):
gpio: realtek-otto: switch to 32-bit I/O
Sebastian Andrzej Siewior (2):
net: dsa: xrs700x: Use irqsave variant for u64 stats update
net: Use u64_stats_fetch_begin_irq() for stats fetch.
SeongJae Park (3):
xen-blkback: Advertise feature-persistent as user requested
xen-blkfront: Advertise feature-persistent as user requested
xen-blkfront: Cache feature_persistent value before advertisement
Sergiu Moga (1):
tty: serial: atmel: Preserve previous USART mode if RS485 disabled
Shenwei Wang (1):
serial: fsl_lpuart: RS485 RTS polariy is inverse
Sherry Sun (1):
tty: serial: lpuart: disable flow control while waiting for the transmit engine to complete
Siddh Raman Pant (2):
wifi: mac80211: Don't finalize CSA in IBSS mode if state is disconnected
wifi: mac80211: Fix UAF in ieee80211_scan_rx()
Slark Xiao (1):
USB: serial: option: add support for Cinterion MV32-WA/WB RmNet mode
Srinivas Kandagatla (1):
soundwire: qcom: fix device status array range
Stefan Wahren (3):
clk: bcm: rpi: Fix error handling of raspberrypi_fw_get_rate
clk: bcm: rpi: Prevent out-of-bounds access
clk: bcm: rpi: Add missing newline
Stephen Boyd (1):
Revert "clk: core: Honor CLK_OPS_PARENT_ENABLE for clk gate ops"
Steven Price (1):
mm: pagewalk: Fix race between unmap and page walker
Sun Ke (1):
cachefiles: fix error return code in cachefiles_ondemand_copen()
Takashi Iwai (4):
Revert "usb: typec: ucsi: add a common function ucsi_unregister_connectors()"
ALSA: memalloc: Revive x86-specific WC page allocations again
ALSA: seq: oss: Fix data-race for max_midi_devs access
ALSA: seq: Fix data-race at module auto-loading
Tetsuo Handa (2):
Input: iforce - wake up after clearing IFORCE_XMIT_RUNNING flag
tty: n_gsm: initialize more members at gsm_alloc_mux()
Thierry GUIBERT (1):
USB: cdc-acm: Add Icom PMR F3400 support (0c26:0020)
Tianyu Yuan (1):
nfp: flower: fix ingress police using matchall filter
Toke Høiland-Jørgensen (1):
sch_cake: Return __NET_XMIT_STOLEN when consuming enqueued skb
Tony Lindgren (1):
clk: ti: Fix missing of_node_get() ti_find_clock_provider()
Utkarsh Patel (1):
usb: typec: intel_pmc_mux: Add new ACPI ID for Meteor Lake IOM device
Vadim Pasternak (2):
platform/mellanox: mlxreg-lc: Fix coverity warning platform/mellanox: mlxreg-lc: Fix locking issue
Ville Syrjälä (1):
drm/i915: Skip wm/ddb readout for disabled pipes
Waiman Long (1):
mm/slab_common: Deleting kobject in kmem_cache_destroy() without holding slab_mutex/cpu_hotplug_lock
Wang Hai (1):
net/sched: fix netdevice reference leaks in attach_default_qdiscs()
Wesley Cheng (1):
usb: dwc3: gadget: Avoid duplicate requests to enable Run/Stop
Witold Lipieta (1):
usb-storage: Add ignore-residue quirk for NXP PN7462AU
Xin Yin (1):
cachefiles: make on-demand request distribution fairer
Yacan Liu (1):
net/smc: Remove redundant refcount increase
Yan Xinyu (1):
USB: serial: option: add support for OPPO R11 diag port
YiFei Zhu (1):
bpf: Restrict bpf_sys_bpf to CAP_PERFMON
Yonglin Tan (1):
USB: serial: option: add Quectel EM060K modem
Zhengchao Shao (1):
net: sched: tbf: don't call qdisc_put() while holding tree lock
Zhengping Jiang (1):
Bluetooth: hci_sync: hold hdev->lock when cleanup hci_conn
sunliming (1):
drm/msm/dsi: fix the inconsistent indenting
Łukasz Bartosik (1):
drm/i915: fix null pointer dereference
Greg Kroah-Hartman
maintainerMakefile +1 -1
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 5 PATCHLEVEL = 19 -SUBLEVEL = 7 +SUBLEVEL = 8 EXTRAVERSION = NAME = Superb Owl
arch/arm64/kernel/machine_kexec_file.c +1 -1
@@ -47,7 +47,7 @@ static int prepare_elf_headers(void **addr, unsigned long *sz)u64 i;phys_addr_t start, end; - nr_ranges =1 ;/* for exclusion of crashkernel region */ + nr_ranges =2 ;/* for exclusion of crashkernel region */ for_each_mem_range (i, &start, &end) nr_ranges++;
arch/powerpc/include/asm/firmware.h +8 -0
@@ -82,6 +82,8 @@ enum {FW_FEATURE_POWERNV_ALWAYS =0 ,FW_FEATURE_PS3_POSSIBLE =FW_FEATURE_LPAR |FW_FEATURE_PS3_LV1 ,FW_FEATURE_PS3_ALWAYS =FW_FEATURE_LPAR |FW_FEATURE_PS3_LV1 , +FW_FEATURE_NATIVE_POSSIBLE =0 , +FW_FEATURE_NATIVE_ALWAYS =0 ,FW_FEATURE_POSSIBLE = #ifdef CONFIG_PPC_PSERIES FW_FEATURE_PSERIES_POSSIBLE |
@@ -91,6 +93,9 @@ enum {#endif #ifdef CONFIG_PPC_PS3 FW_FEATURE_PS3_POSSIBLE | +#endif +#ifdef CONFIG_PPC_HASH_MMU_NATIVE +FW_FEATURE_NATIVE_ALWAYS | #endif0 , FW_FEATURE_ALWAYS =
@@ -102,6 +107,9 @@ enum {#endif #ifdef CONFIG_PPC_PS3 FW_FEATURE_PS3_ALWAYS & +#endif +#ifdef CONFIG_PPC_HASH_MMU_NATIVE +FW_FEATURE_NATIVE_ALWAYS & #endif FW_FEATURE_POSSIBLE,
arch/powerpc/kernel/rtas_entry.S +4 -0
@@ -109,8 +109,12 @@ __enter_rtas: * its critical regions (as specified in PAPR+ section 7.2.1). MSR[S] * is not impacted by RFI_TO_KERNEL (only urfid can unset it). So if * MSR[S] is set, it will remain when entering RTAS. + * If we're in HV mode, RTAS must also run in HV mode, so extract MSR_HV + * from the saved MSR value and insert into the value RTAS will use. */ + extrdi r0, r6, 1, 63 - MSR_HV_LG LOAD_REG_IMMEDIATE(r6, MSR_ME | MSR_RI) + insrdi r6, r0, 1, 63 - MSR_HV_LG li r0,0 mtmsrd r0,1 /* disable RI before using SRR0/1 */
arch/powerpc/kernel/systbl.S +1 -0
@@ -18,6 +18,7 @@ .p2align 3 #define __SYSCALL(nr, entry) .8byte entry #else + .p2align 2 #define __SYSCALL(nr, entry) .long entry #endif
arch/powerpc/platforms/pseries/papr_scm.c +29 -61
149 lines not on this page · raw message
arch/riscv/include/asm/kvm_vcpu_sbi.h +12 -0
@@ -33,4 +33,16 @@ void kvm_riscv_vcpu_sbi_system_reset(struct kvm_vcpu *vcpu, u32 type, u64 flags);const struct kvm_vcpu_sbi_extension *kvm_vcpu_sbi_find_ext (unsigned long extid); +#ifdef CONFIG_RISCV_SBI_V01 +extern const struct kvm_vcpu_sbi_extension vcpu_sbi_ext_v01; +#endif +extern const struct kvm_vcpu_sbi_extension vcpu_sbi_ext_base; +extern const struct kvm_vcpu_sbi_extension vcpu_sbi_ext_time; +extern const struct kvm_vcpu_sbi_extension vcpu_sbi_ext_ipi; +extern const struct kvm_vcpu_sbi_extension vcpu_sbi_ext_rfence; +extern const struct kvm_vcpu_sbi_extension vcpu_sbi_ext_srst; +extern const struct kvm_vcpu_sbi_extension vcpu_sbi_ext_hsm; +extern const struct kvm_vcpu_sbi_extension vcpu_sbi_ext_experimental; +extern const struct kvm_vcpu_sbi_extension vcpu_sbi_ext_vendor; +#endif /* __RISCV_KVM_VCPU_SBI_H__ */
arch/riscv/kvm/vcpu_sbi.c +1 -11
@@ -32,23 +32,13 @@ static int kvm_linux_err_map_sbi(int err) }; } -#ifdef CONFIG_RISCV_SBI_V01 -extern const struct kvm_vcpu_sbi_extension vcpu_sbi_ext_v01; -#else +#ifndef CONFIG_RISCV_SBI_V01 static const struct kvm_vcpu_sbi_extension vcpu_sbi_ext_v01 = { .extid_start =-1UL , .extid_end =-1UL , .handler =NULL , };#endif -extern const struct kvm_vcpu_sbi_extension vcpu_sbi_ext_base; -extern const struct kvm_vcpu_sbi_extension vcpu_sbi_ext_time; -extern const struct kvm_vcpu_sbi_extension vcpu_sbi_ext_ipi; -extern const struct kvm_vcpu_sbi_extension vcpu_sbi_ext_rfence; -extern const struct kvm_vcpu_sbi_extension vcpu_sbi_ext_srst; -extern const struct kvm_vcpu_sbi_extension vcpu_sbi_ext_hsm; -extern const struct kvm_vcpu_sbi_extension vcpu_sbi_ext_experimental; -extern const struct kvm_vcpu_sbi_extension vcpu_sbi_ext_vendor;static const struct kvm_vcpu_sbi_extension *sbi_ext[] = { &vcpu_sbi_ext_v01,
arch/riscv/mm/pageattr.c +2 -2
@@ -118,10 +118,10 @@ static int __set_memory(unsigned long addr, int numpages, pgprot_t set_mask,if (!numpages)return 0 ; -mmap_read_lock (&init_mm); +mmap_write_lock (&init_mm); ret =walk_page_range_novma (&init_mm, start, end, &pageattr_ops,NULL , &masks); -mmap_read_unlock (&init_mm); +mmap_write_unlock (&init_mm);flush_tlb_kernel_range (start, end);
arch/s390/include/asm/hugetlb.h +4 -2
@@ -28,9 +28,11 @@ pte_t huge_ptep_get_and_clear(struct mm_struct *mm,static inline int prepare_hugepage_range (struct file *file,unsigned long addr,unsigned long len) { -if (len & ~HPAGE_MASK ) +struct hstate *h =hstate_file (file); + +if (len & ~huge_page_mask (h))return -EINVAL ; -if (addr & ~HPAGE_MASK ) +if (addr & ~huge_page_mask (h))return -EINVAL ;return 0 ; }
arch/s390/kernel/vmlinux.lds.S +1 -0
@@ -131,6 +131,7 @@ SECTIONS /* * Table with the patch locations to undo expolines */ + . = ALIGN(4); .nospec_call_table : { __nospec_call_start = . ; *(.s390_indirect*)
arch/x86/kvm/vmx/vmx.c +1 -2
@@ -835,8 +835,7 @@ static bool msr_write_intercepted(struct vcpu_vmx *vmx, u32 msr)if (!(exec_controls_get (vmx) &CPU_BASED_USE_MSR_BITMAPS ))return true; -return vmx_test_msr_bitmap_write (vmx->loaded_vmcs->msr_bitmap, -MSR_IA32_SPEC_CTRL ); +return vmx_test_msr_bitmap_write (vmx->loaded_vmcs->msr_bitmap, msr); }unsigned int __vmx_vcpu_run_flags (struct vcpu_vmx *vmx)
arch/x86/kvm/x86.c +21 -4
@@ -1570,12 +1570,32 @@ static const u32 msr_based_features_all[] = {static u32 msr_based_features[ARRAY_SIZE (msr_based_features_all)];static unsigned int num_msr_based_features; +/* +* Some IA32_ARCH_CAPABILITIES bits have dependencies on MSRs that KVM +* does not yet virtualize. These include: +* 10 - MISC_PACKAGE_CTRLS +* 11 - ENERGY_FILTERING_CTL +* 12 - DOITM +* 18 - FB_CLEAR_CTRL +* 21 - XAPIC_DISABLE_STATUS +* 23 - OVERCLOCKING_STATUS +*/ + +#define KVM_SUPPORTED_ARCH_CAP \ + (ARCH_CAP_RDCL_NO | ARCH_CAP_IBRS_ALL | ARCH_CAP_RSBA | \ + ARCH_CAP_SKIP_VMENTRY_L1DFLUSH | ARCH_CAP_SSB_NO | ARCH_CAP_MDS_NO | \ + ARCH_CAP_PSCHANGE_MC_NO | ARCH_CAP_TSX_CTRL_MSR | ARCH_CAP_TAA_NO | \ + ARCH_CAP_SBDR_SSDP_NO | ARCH_CAP_FBSDP_NO | ARCH_CAP_PSDP_NO | \ + ARCH_CAP_FB_CLEAR | ARCH_CAP_RRSBA | ARCH_CAP_PBRSB_NO) +static u64 kvm_get_arch_capabilities (void ) {u64 data =0 ; -if (boot_cpu_has (X86_FEATURE_ARCH_CAPABILITIES )) +if (boot_cpu_has (X86_FEATURE_ARCH_CAPABILITIES )) {rdmsrl (MSR_IA32_ARCH_CAPABILITIES , data); + data &=KVM_SUPPORTED_ARCH_CAP ; + }/* * If nx_huge_pages is enabled, KVM's shadow paging will ensure that
@@ -1623,9 +1643,6 @@ static u64 kvm_get_arch_capabilities(void)*/ } -/* Guests don't need to know "Fill buffer clear control" exists */ - data &= ~ARCH_CAP_FB_CLEAR_CTRL ; -return data; }
drivers/android/binder.c +12 -0
@@ -1385,6 +1385,18 @@ static int binder_inc_ref_for_node(struct binder_proc *proc, } ret =binder_inc_ref_olocked (ref, strong, target_list); *rdata = ref->data; +if (ret && ref == new_ref) { +/* +* Cleanup the failed reference here as the target +* could now be dead and have already released its +* references by now. Calling on the new reference +* with strong=0 and a tmp_refs will not decrement +* the node. The new_ref gets kfree'd below. +*/ +binder_cleanup_ref_olocked (new_ref); + ref =NULL ; + } +binder_proc_unlock (proc);if (new_ref && ref != new_ref)/*
drivers/android/binder_alloc.c +2 -2
@@ -322,7 +322,6 @@ static inline void binder_alloc_set_vma(struct binder_alloc *alloc,*/ if (vma) { vm_start = vma->vm_start; - alloc->vma_vm_mm = vma->vm_mm;mmap_assert_write_locked (alloc->vma_vm_mm); }else {mmap_assert_locked (alloc->vma_vm_mm);
@@ -795,7 +794,6 @@ int binder_alloc_mmap_handler(struct binder_alloc *alloc,binder_insert_free_buffer (alloc, buffer); alloc->free_async_space = alloc->buffer_size /2 ;binder_alloc_set_vma (alloc, vma); -mmgrab (alloc->vma_vm_mm);return 0 ;
@@ -1091,6 +1089,8 @@ static struct shrinker binder_shrinker = {void binder_alloc_init (struct binder_alloc *alloc) { alloc->pid = current->group_leader->pid; + alloc->vma_vm_mm = current->mm; +mmgrab (alloc->vma_vm_mm);mutex_init (&alloc->mutex);INIT_LIST_HEAD (&alloc->buffers); }
drivers/base/dd.c +10 -0
@@ -897,6 +897,11 @@ static int __device_attach_driver(struct device_driver *drv, void *_data)dev_dbg (dev,"Device match requests probe deferral\n" ); dev->can_match = true;driver_deferred_probe_add (dev); +/* +* Device can't match with a driver right now, so don't attempt +* to match or bind with other drivers on the bus. +*/ +return ret; }else if (ret <0 ) {dev_dbg (dev,"Bus failed to match device: %d\n" , ret);return ret;
@@ -1136,6 +1141,11 @@ static int __driver_attach(struct device *dev, void *data)dev_dbg (dev,"Device match requests probe deferral\n" ); dev->can_match = true;driver_deferred_probe_add (dev); +/* +* Driver could not match with device, but may match with +* another device on the bus. +*/ +return 0 ; }else if (ret <0 ) {dev_dbg (dev,"Bus failed to match device: %d\n" , ret);return ret;
drivers/base/firmware_loader/sysfs.c +3 -4
@@ -93,10 +93,9 @@ static void fw_dev_release(struct device *dev) {struct fw_sysfs *fw_sysfs =to_fw_sysfs (dev); -if (fw_sysfs->fw_upload_priv) { -free_fw_priv (fw_sysfs->fw_priv); -kfree (fw_sysfs->fw_upload_priv); - } +if (fw_sysfs->fw_upload_priv) +fw_upload_free (fw_sysfs); +kfree (fw_sysfs); }
drivers/base/firmware_loader/sysfs.h +5 -0
@@ -106,12 +106,17 @@ extern struct device_attribute dev_attr_cancel;extern struct device_attribute dev_attr_remaining_size;int fw_upload_start (struct fw_sysfs *fw_sysfs); +void fw_upload_free (struct fw_sysfs *fw_sysfs);umode_t fw_upload_is_visible (struct kobject *kobj,struct attribute *attr,int n);#else static inline int fw_upload_start (struct fw_sysfs *fw_sysfs) {return 0 ; } + +static inline void fw_upload_free (struct fw_sysfs *fw_sysfs) +{ +}#endif #endif /* __FIRMWARE_SYSFS_H */
drivers/base/firmware_loader/sysfs_upload.c +11 -1
@@ -264,6 +264,15 @@ int fw_upload_start(struct fw_sysfs *fw_sysfs)return 0 ; } +void fw_upload_free (struct fw_sysfs *fw_sysfs) +{ +struct fw_upload_priv *fw_upload_priv = fw_sysfs->fw_upload_priv; + +free_fw_priv (fw_sysfs->fw_priv); +kfree (fw_upload_priv->fw_upload); +kfree (fw_upload_priv); +} +/** * firmware_upload_register() - register for the firmware upload sysfs API * @module: kernel module of this device
@@ -377,6 +386,7 @@ void firmware_upload_unregister(struct fw_upload *fw_upload) {struct fw_sysfs *fw_sysfs = fw_upload->priv;struct fw_upload_priv *fw_upload_priv = fw_sysfs->fw_upload_priv; +struct module *module = fw_upload_priv->module;mutex_lock (&fw_upload_priv->lock);if (fw_upload_priv->progress ==FW_UPLOAD_PROG_IDLE ) {
@@ -392,6 +402,6 @@ void firmware_upload_unregister(struct fw_upload *fw_upload) unregister:device_unregister (&fw_sysfs->dev); -module_put (fw_upload_priv->module); +module_put (module); }EXPORT_SYMBOL_GPL (firmware_upload_unregister);
drivers/block/xen-blkback/common.h +3 -0
@@ -226,6 +226,9 @@ struct xen_vbd {sector_t size; unsigned int flush_support:1; unsigned int discard_secure:1; +/* Connect-time cached feature_persistent parameter value */ + unsigned int feature_gnt_persistent_parm:1; +/* Persistent grants feature negotiation result */ unsigned int feature_gnt_persistent:1; unsigned int overflow_max_grants:1; };
drivers/block/xen-blkback/xenbus.c +4 -2
@@ -907,7 +907,7 @@ static void connect(struct backend_info *be)xen_blkbk_barrier (xbt, be, be->blkif->vbd.flush_support); err =xenbus_printf (xbt, dev->nodename,"feature-persistent" ,"%u" , - be->blkif->vbd.feature_gnt_persistent); + be->blkif->vbd.feature_gnt_persistent_parm);if (err) {xenbus_dev_fatal (dev, err,"writing %s/feature-persistent" , dev->nodename);
@@ -1085,7 +1085,9 @@ static int connect_ring(struct backend_info *be)return -ENOSYS ; } - blkif->vbd.feature_gnt_persistent = feature_persistent && + blkif->vbd.feature_gnt_persistent_parm = feature_persistent; + blkif->vbd.feature_gnt_persistent = + blkif->vbd.feature_gnt_persistent_parm &&xenbus_read_unsigned (dev->otherend,"feature-persistent" ,0 ); blkif->vbd.overflow_max_grants =0 ;
drivers/block/xen-blkfront.c +12 -8
@@ -213,6 +213,9 @@ struct blkfront_info unsigned int feature_fua:1; unsigned int feature_discard:1; unsigned int feature_secdiscard:1; +/* Connect-time cached feature_persistent parameter */ + unsigned int feature_persistent_parm:1; +/* Persistent grants feature negotiation result */ unsigned int feature_persistent:1; unsigned int bounce:1;unsigned int discard_granularity;
@@ -1756,6 +1759,12 @@ static int write_per_ring_nodes(struct xenbus_transaction xbt,return err; } +/* Enable the persistent grants feature. */ +static bool feature_persistent = true; +module_param (feature_persistent, bool,0644 ); +MODULE_PARM_DESC (feature_persistent, +"Enables the persistent grants feature" ); +/* Common code used when first setting up, and when resuming. */ static int talk_to_blkback (struct xenbus_device *dev,struct blkfront_info *info)
@@ -1847,8 +1856,9 @@ static int talk_to_blkback(struct xenbus_device *dev, message ="writing protocol" ; goto abort_transaction; } + info->feature_persistent_parm = feature_persistent; err =xenbus_printf (xbt, dev->nodename,"feature-persistent" ,"%u" , - info->feature_persistent); + info->feature_persistent_parm);if (err)dev_warn (&dev->dev,"writing persistent grants feature to xenbus" );
@@ -1916,12 +1926,6 @@ static int negotiate_mq(struct blkfront_info *info)return 0 ; } -/* Enable the persistent grants feature. */ -static bool feature_persistent = true; -module_param (feature_persistent, bool,0644 ); -MODULE_PARM_DESC (feature_persistent, -"Enables the persistent grants feature" ); -/* * Entry point to this code when a new device is created. Allocate the basic * structures and the ring buffer for communication with the backend, and
@@ -2281,7 +2285,7 @@ static void blkfront_gather_backend_features(struct blkfront_info *info)if (xenbus_read_unsigned (info->xbdev->otherend,"feature-discard" ,0 ))blkfront_setup_discard (info); -if (feature_persistent) +if (info->feature_persistent_parm) info->feature_persistent = !!xenbus_read_unsigned (info->xbdev->otherend,"feature-persistent" ,0 );
drivers/clk/bcm/clk-raspberrypi.c +10 -5
@@ -203,7 +203,7 @@ static unsigned long raspberrypi_fw_get_rate(struct clk_hw *hw, ret =raspberrypi_clock_property (rpi->firmware, data,RPI_FIRMWARE_GET_CLOCK_RATE , &val);if (ret) -return ret; +return 0 ;return val; }
@@ -220,7 +220,7 @@ static int raspberrypi_fw_set_rate(struct clk_hw *hw, unsigned long rate, ret =raspberrypi_clock_property (rpi->firmware, data,RPI_FIRMWARE_SET_CLOCK_RATE , &_rate);if (ret) -dev_err_ratelimited (rpi->dev,"Failed to change %s frequency: %d" , +dev_err_ratelimited (rpi->dev,"Failed to change %s frequency: %d\n" ,clk_hw_get_name (hw), ret);return ret;
@@ -288,7 +288,7 @@ static struct clk_hw *raspberrypi_clk_register(struct raspberrypi_clk *rpi,RPI_FIRMWARE_GET_MIN_CLOCK_RATE , &min_rate);if (ret) { -dev_err (rpi->dev,"Failed to get clock %d min freq: %d" , +dev_err (rpi->dev,"Failed to get clock %d min freq: %d\n" , id, ret);return ERR_PTR (ret); }
@@ -344,8 +344,13 @@ static int raspberrypi_discover_clocks(struct raspberrypi_clk *rpi,struct rpi_firmware_get_clocks_response *clks;int ret; +/* +* The firmware doesn't guarantee that the last element of +* RPI_FIRMWARE_GET_CLOCKS is zeroed. So allocate an additional +* zero element as sentinel. +*/ clks =devm_kcalloc (rpi->dev, -RPI_FIRMWARE_NUM_CLK_ID ,sizeof (*clks), +RPI_FIRMWARE_NUM_CLK_ID +1 ,sizeof (*clks),GFP_KERNEL );if (!clks)return -ENOMEM ;
@@ -360,7 +365,7 @@ static int raspberrypi_discover_clocks(struct raspberrypi_clk *rpi,struct raspberrypi_clk_variant *variant;if (clks->id >RPI_FIRMWARE_NUM_CLK_ID ) { -dev_err (rpi->dev,"Unknown clock id: %u" , clks->id); +dev_err (rpi->dev,"Unknown clock id: %u\n" , clks->id);return -EINVAL ; }
drivers/clk/clk.c +1 -2
@@ -840,10 +840,9 @@ static void clk_core_unprepare(struct clk_core *core)if (core->ops->unprepare) core->ops->unprepare (core->hw); -clk_pm_runtime_put (core); -trace_clk_unprepare_complete (core);clk_core_unprepare (core->parent); +clk_pm_runtime_put (core); }static void clk_core_unprepare_lock (struct clk_core *core)
drivers/clk/ti/clk.c +1 -0
@@ -143,6 +143,7 @@ static struct device_node *ti_find_clock_provider(struct device_node *from,continue ;if (!strncmp (n, tmp,strlen (tmp))) { +of_node_get (np); found = true;break ; }
drivers/dma-buf/dma-resv.c +2 -1
@@ -295,7 +295,8 @@ void dma_resv_add_fence(struct dma_resv *obj, struct dma_fence *fence,enum dma_resv_usage old_usage;dma_resv_list_entry (fobj, i, obj, &old, &old_usage); -if ((old->context == fence->context && old_usage >= usage) || +if ((old->context == fence->context && old_usage >= usage && +dma_fence_is_later (fence, old)) ||dma_fence_is_signaled (old)) {dma_resv_list_set (fobj, i, fence, usage);dma_fence_put (old);
drivers/gpio/gpio-pca953x.c +7 -1
@@ -1175,7 +1175,9 @@ static int pca953x_suspend(struct device *dev) {struct pca953x_chip *chip =dev_get_drvdata (dev); +mutex_lock (&chip->i2c_lock);regcache_cache_only (chip->regmap, true); +mutex_unlock (&chip->i2c_lock);if (atomic_read (&chip->wakeup_path))device_set_wakeup_path (dev);
@@ -1198,13 +1200,17 @@ static int pca953x_resume(struct device *dev) } } +mutex_lock (&chip->i2c_lock);regcache_cache_only (chip->regmap, false);regcache_mark_dirty (chip->regmap); ret =pca953x_regcache_sync (dev); -if (ret) +if (ret) { +mutex_unlock (&chip->i2c_lock);return ret; + } ret =regcache_sync (chip->regmap); +mutex_unlock (&chip->i2c_lock);if (ret) {dev_err (dev,"Failed to restore register map: %d\n" , ret);return ret;
drivers/gpio/gpio-realtek-otto.c +85 -81
305 lines not on this page · raw message
drivers/gpu/drm/i915/display/intel_backlight.c +20 -17
@@ -15,6 +15,7 @@#include "intel_dsi_dcs_backlight.h" #include "intel_panel.h" #include "intel_pci_config.h" +#include "intel_pps.h" /** * scale - scale values from one range to another
@@ -970,26 +971,24 @@ int intel_backlight_device_register(struct intel_connector *connector)if (!name)return -ENOMEM ; - bd =backlight_device_register (name, connector->base.kdev, connector, - &intel_backlight_device_ops, &props); - -/* -* Using the same name independent of the drm device or connector -* prevents registration of multiple backlight devices in the -* driver. However, we need to use the default name for backward -* compatibility. Use unique names for subsequent backlight devices as a -* fallback when the default name already exists. -*/ -if (IS_ERR (bd) &&PTR_ERR (bd) == -EEXIST ) { + bd =backlight_device_get_by_name (name); +if (bd) { +put_device (&bd->dev); +/* +* Using the same name independent of the drm device or connector +* prevents registration of multiple backlight devices in the +* driver. However, we need to use the default name for backward +* compatibility. Use unique names for subsequent backlight devices as a +* fallback when the default name already exists. +*/ kfree (name); name =kasprintf (GFP_KERNEL ,"card%d-%s-backlight" , i915->drm.primary->index, connector->base.name);if (!name)return -ENOMEM ; - - bd =backlight_device_register (name, connector->base.kdev, connector, - &intel_backlight_device_ops, &props); } + bd =backlight_device_register (name, connector->base.kdev, connector, + &intel_backlight_device_ops, &props);if (IS_ERR (bd)) { drm_err(&i915->drm,
@@ -1771,9 +1770,13 @@ void intel_backlight_init_funcs(struct intel_panel *panel) panel->backlight.pwm_funcs = &i9xx_pwm_funcs; } -if (connector->base.connector_type == DRM_MODE_CONNECTOR_eDP && -intel_dp_aux_init_backlight_funcs (connector) ==0 ) -return ; +if (connector->base.connector_type == DRM_MODE_CONNECTOR_eDP) { +if (intel_dp_aux_init_backlight_funcs (connector) ==0 ) +return ; + +if (!(dev_priv->quirks &QUIRK_NO_PPS_BACKLIGHT_POWER_HOOK )) + connector->panel.backlight.power = intel_pps_backlight_power; + }/* We're using a standard PWM backlight interface */ panel->backlight.funcs = &pwm_bl_funcs;
drivers/gpu/drm/i915/display/intel_bw.c +9 -7
@@ -404,15 +404,17 @@ static int tgl_get_bw_info(struct drm_i915_private *dev_priv, const struct intelint clpchgroup;int j; -if (i < num_groups -1 ) - bi_next = &dev_priv->max_bw[i +1 ]; - clpchgroup = (sa->deburst * qi.deinterleave / num_channels) << i; -if (i < num_groups -1 && clpchgroup < clperchgroup) - bi_next->num_planes = (ipqdepth - clpchgroup) / clpchgroup +1 ; -else - bi_next->num_planes =0 ; +if (i < num_groups -1 ) { + bi_next = &dev_priv->max_bw[i +1 ]; + +if (clpchgroup < clperchgroup) + bi_next->num_planes = (ipqdepth - clpchgroup) / + clpchgroup +1 ; +else + bi_next->num_planes =0 ; + } bi->num_qgv_points = qi.num_points; bi->num_psf_gv_points = qi.num_psf_points;
drivers/gpu/drm/i915/display/intel_dp.c +0 -2
@@ -5248,8 +5248,6 @@ static bool intel_edp_init_connector(struct intel_dp *intel_dp,intel_panel_init (intel_connector); -if (!(dev_priv->quirks &QUIRK_NO_PPS_BACKLIGHT_POWER_HOOK )) - intel_connector->panel.backlight.power = intel_pps_backlight_power;intel_backlight_setup (intel_connector, pipe);intel_edp_add_properties (intel_dp);
drivers/gpu/drm/i915/display/intel_quirks.c +3 -0
@@ -191,6 +191,9 @@ static struct intel_quirk intel_quirks[] = {/* ASRock ITX*/ { 0x3185, 0x1849, 0x2212, quirk_increase_ddi_disabled_time }, { 0x3184, 0x1849, 0x2212, quirk_increase_ddi_disabled_time }, +/* ECS Liva Q2 */ + { 0x3185, 0x1019, 0xa94d, quirk_increase_ddi_disabled_time }, + { 0x3184, 0x1019, 0xa94d, quirk_increase_ddi_disabled_time }, };void intel_init_quirks (struct drm_i915_private *i915)
drivers/gpu/drm/i915/gt/intel_migrate.c +21 -23
78 lines not on this page · raw message
drivers/gpu/drm/i915/gt/uc/intel_guc_submission.c +7 -0
@@ -4010,6 +4010,13 @@ static inline void guc_init_lrc_mapping(struct intel_guc *guc)/* make sure all descriptors are clean... */ xa_destroy (&guc->context_lookup); +/* +* A reset might have occurred while we had a pending stalled request, +* so make sure we clean that up. +*/ + guc->stalled_request =NULL ; + guc->submission_stall_reason =STALL_NONE ; +/* * Some contexts might have been pinned before we enabled GuC * submission, so we need to add them to the GuC bookeeping.
drivers/gpu/drm/i915/gvt/handlers.c +1 -1
@@ -905,7 +905,7 @@ static int update_fdi_rx_iir_status(struct intel_vgpu *vgpu,else if (FDI_RX_IMR_TO_PIPE (offset) !=INVALID_INDEX ) index =FDI_RX_IMR_TO_PIPE (offset);else { -gvt_vgpu_err ("Unsupport registers %x\n" , offset); +gvt_vgpu_err ("Unsupported registers %x\n" , offset);return -EINVAL ; }
drivers/gpu/drm/i915/intel_gvt_mmio_table.c +2 -1
@@ -1074,7 +1074,8 @@ static int iterate_skl_plus_mmio(struct intel_gvt_mmio_table_iter *iter)MMIO_D (GEN8_HDC_CHICKEN1 );MMIO_D (GEN9_WM_CHICKEN3 ); -if (IS_KABYLAKE (dev_priv) ||IS_COFFEELAKE (dev_priv)) +if (IS_KABYLAKE (dev_priv) || +IS_COFFEELAKE (dev_priv) ||IS_COMETLAKE (dev_priv))MMIO_D (GAMT_CHKN_BIT_REG );if (!IS_BROXTON (dev_priv))MMIO_D (GEN9_CTX_PREEMPT_REG );
drivers/gpu/drm/i915/intel_pm.c +7 -1
@@ -6560,7 +6560,10 @@ void skl_wm_get_hw_state(struct drm_i915_private *dev_priv)enum plane_id plane_id;u8 slices; -skl_pipe_wm_get_hw_state (crtc, &crtc_state->wm.skl.optimal); +memset (&crtc_state->wm.skl.optimal,0 , +sizeof (crtc_state->wm.skl.optimal)); +if (crtc_state->hw.active) +skl_pipe_wm_get_hw_state (crtc, &crtc_state->wm.skl.optimal); crtc_state->wm.skl.raw = crtc_state->wm.skl.optimal;memset (&dbuf_state->ddb[pipe],0 ,sizeof (dbuf_state->ddb[pipe]));
@@ -6571,6 +6574,9 @@ void skl_wm_get_hw_state(struct drm_i915_private *dev_priv)struct skl_ddb_entry *ddb_y = &crtc_state->wm.skl.plane_ddb_y[plane_id]; +if (!crtc_state->hw.active) +continue ; +skl_ddb_get_hw_plane_state (dev_priv, crtc->pipe, plane_id, ddb, ddb_y);
drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c +6 -0
@@ -1998,6 +1998,12 @@ void dpu_encoder_helper_phys_cleanup(struct dpu_encoder_phys *phys_enc) intf_cfg.stream_sel =0 ;/* Don't care value for video mode */ intf_cfg.mode_3d =dpu_encoder_helper_get_3d_blend_mode (phys_enc); + +if (phys_enc->hw_intf) + intf_cfg.intf = phys_enc->hw_intf->idx; +if (phys_enc->hw_wb) + intf_cfg.wb = phys_enc->hw_wb->idx; +if (phys_enc->hw_pp->merge_3d) intf_cfg.merge_3d = phys_enc->hw_pp->merge_3d->idx;
drivers/gpu/drm/msm/dp/dp_ctrl.c +1 -1
@@ -1214,7 +1214,7 @@ static int dp_ctrl_link_train_2(struct dp_ctrl_private *ctrl,if (ret)return ret; -dp_ctrl_train_pattern_set (ctrl, pattern |DP_RECOVERED_CLOCK_OUT_EN ); +dp_ctrl_train_pattern_set (ctrl, pattern);for (tries =0 ; tries <= maximum_retries; tries++) {drm_dp_link_train_channel_eq_delay (ctrl->aux, ctrl->panel->dpcd);
drivers/gpu/drm/msm/dsi/dsi_cfg.c +2 -2
@@ -109,7 +109,7 @@ static const char * const dsi_8996_bus_clk_names[] = {static const struct msm_dsi_config msm8996_dsi_cfg = { .io_offset =DSI_6G_REG_SHIFT , .reg_cfg = { - .num =2 , + .num =3 , .regs = { {"vdda" ,18160 ,1 },/* 1.25 V */ {"vcca" ,17000 ,32 },/* 0.925 V */
@@ -148,7 +148,7 @@ static const char * const dsi_sdm660_bus_clk_names[] = {static const struct msm_dsi_config sdm660_dsi_cfg = { .io_offset =DSI_6G_REG_SHIFT , .reg_cfg = { - .num =2 , + .num =1 , .regs = { {"vdda" ,12560 ,4 },/* 1.2 V */ },
drivers/gpu/drm/msm/dsi/phy/dsi_phy.c +1 -1
@@ -347,7 +347,7 @@ int msm_dsi_dphy_timing_calc_v3(struct msm_dsi_dphy_timing *timing, }else { timing->shared_timings.clk_pre =linear_inter (tmax, tmin, pcnt2,0 , false); - timing->shared_timings.clk_pre_inc_by_2 =0 ; + timing->shared_timings.clk_pre_inc_by_2 =0 ; } timing->ta_go =3 ;
drivers/gpu/drm/msm/msm_drv.c +2 -0
@@ -424,6 +424,8 @@ static int msm_drm_init(struct device *dev, const struct drm_driver *drv) } } +drm_helper_move_panel_connectors_to_head (ddev); + ddev->mode_config.funcs = &mode_config_funcs; ddev->mode_config.helper_private = &mode_config_helper_funcs;
drivers/gpu/drm/msm/msm_gpu_devfreq.c +2 -0
@@ -213,6 +213,8 @@ void msm_devfreq_init(struct msm_gpu *gpu)if (IS_ERR (df->devfreq)) {DRM_DEV_ERROR (&gpu->pdev->dev,"Couldn't initialize GPU devfreq\n" ); +dev_pm_qos_remove_request (&df->idle_freq); +dev_pm_qos_remove_request (&df->boost_freq); df->devfreq =NULL ;return ; }
drivers/hwmon/gpio-fan.c +3 -0
@@ -391,6 +391,9 @@ static int gpio_fan_set_cur_state(struct thermal_cooling_device *cdev,if (!fan_data)return -EINVAL ; +if (state >= fan_data->num_speed) +return -EINVAL ; +set_fan_speed (fan_data, state);return 0 ; }
drivers/iio/adc/ad7292.c +1 -3
@@ -287,10 +287,8 @@ static int ad7292_probe(struct spi_device *spi) ret =devm_add_action_or_reset (&spi->dev, ad7292_regulator_disable, st); -if (ret) { -regulator_disable (st->reg); +if (ret)return ret; - } ret =regulator_get_voltage (st->reg);if (ret <0 )
drivers/iio/adc/mcp3911.c +22 -6
@@ -40,8 +40,8 @@#define MCP3911_CHANNEL (x) (MCP3911_REG_CHANNEL0 + x * 3)#define MCP3911_OFFCAL (x) (MCP3911_REG_OFFCAL_CH0 + x * 6) -/* Internal voltage reference in uV */ -#define MCP3911_INT_VREF_UV 1200000 +/* Internal voltage reference in mV */ +#define MCP3911_INT_VREF_MV 1200#define MCP3911_REG_READ (reg, id) ((((reg) << 1) | ((id) << 5) | (1 << 0)) & 0xff)#define MCP3911_REG_WRITE (reg, id) ((((reg) << 1) | ((id) << 5) | (0 << 0)) & 0xff)
@@ -113,6 +113,8 @@ static int mcp3911_read_raw(struct iio_dev *indio_dev,if (ret) goto out; + *val =sign_extend32 (*val,23 ); + ret =IIO_VAL_INT ;break ;
@@ -137,11 +139,18 @@ static int mcp3911_read_raw(struct iio_dev *indio_dev, *val = ret /1000 ; }else { - *val =MCP3911_INT_VREF_UV ; + *val =MCP3911_INT_VREF_MV ; } - *val2 =24 ; - ret =IIO_VAL_FRACTIONAL_LOG2 ; +/* +* For 24bit Conversion +* Raw = ((Voltage)/(Vref) * 2^23 * Gain * 1.5 +* Voltage = Raw * (Vref)/(2^23 * Gain * 1.5) +*/ + +/* val2 = (2^23 * 1.5) */ + *val2 =12582912 ; + ret =IIO_VAL_FRACTIONAL ;break ; }
@@ -208,7 +217,14 @@ static int mcp3911_config(struct mcp3911 *adc)u32 configreg;int ret; -device_property_read_u32 (dev,"device-addr" , &adc->dev_addr); + ret =device_property_read_u32 (dev,"microchip,device-addr" , &adc->dev_addr); + +/* +* Fallback to "device-addr" due to historical mismatch between +* dt-bindings and implementation +*/ +if (ret) +device_property_read_u32 (dev,"device-addr" , &adc->dev_addr);if (adc->dev_addr >3 ) { dev_err(&adc->spi->dev, "invalid device address (%i). Must be in range 0-3.\n",
drivers/iio/light/cm3605.c +4 -2
@@ -226,8 +226,10 @@ static int cm3605_probe(struct platform_device *pdev) } irq =platform_get_irq (pdev,0 ); -if (irq <0 ) -return dev_err_probe (dev, irq,"failed to get irq\n" ); +if (irq <0 ) { + ret =dev_err_probe (dev, irq,"failed to get irq\n" ); + goto out_disable_aset; + } ret =devm_request_threaded_irq (dev, irq, cm3605_prox_irq,NULL ,0 ,"cm3605" , indio_dev);
drivers/input/joystick/iforce/iforce-serio.c +3 -3
@@ -39,7 +39,7 @@ static void iforce_serio_xmit(struct iforce *iforce) again:if (iforce->xmit.head == iforce->xmit.tail) { -clear_bit (IFORCE_XMIT_RUNNING , iforce->xmit_flags); +iforce_clear_xmit_and_wake (iforce);spin_unlock_irqrestore (&iforce->xmit_lock, flags);return ; }
@@ -64,7 +64,7 @@ static void iforce_serio_xmit(struct iforce *iforce)if (test_and_clear_bit (IFORCE_XMIT_AGAIN , iforce->xmit_flags)) goto again; -clear_bit (IFORCE_XMIT_RUNNING , iforce->xmit_flags); +iforce_clear_xmit_and_wake (iforce);spin_unlock_irqrestore (&iforce->xmit_lock, flags); }
@@ -169,7 +169,7 @@ static irqreturn_t iforce_serio_irq(struct serio *serio, iforce_serio->cmd_response_len = iforce_serio->len;/* Signal that command is done */ -wake_up (&iforce->wait); +wake_up_all (&iforce->wait); }else if (likely (iforce->type)) { iforce_process_packet(iforce, iforce_serio->id, iforce_serio->data_in,
drivers/input/joystick/iforce/iforce-usb.c +4 -4
@@ -30,7 +30,7 @@ static void __iforce_usb_xmit(struct iforce *iforce)spin_lock_irqsave (&iforce->xmit_lock, flags);if (iforce->xmit.head == iforce->xmit.tail) { -clear_bit (IFORCE_XMIT_RUNNING , iforce->xmit_flags); +iforce_clear_xmit_and_wake (iforce);spin_unlock_irqrestore (&iforce->xmit_lock, flags);return ; }
@@ -58,9 +58,9 @@ static void __iforce_usb_xmit(struct iforce *iforce)XMIT_INC (iforce->xmit.tail, n);if ( (n=usb_submit_urb (iforce_usb->out,GFP_ATOMIC )) ) { -clear_bit (IFORCE_XMIT_RUNNING , iforce->xmit_flags);dev_warn (&iforce_usb->intf->dev,"usb_submit_urb failed %d\n" , n); +iforce_clear_xmit_and_wake (iforce); }/* The IFORCE_XMIT_RUNNING bit is not cleared here. That's intended.
@@ -175,15 +175,15 @@ static void iforce_usb_out(struct urb *urb)struct iforce *iforce = &iforce_usb->iforce;if (urb->status) { -clear_bit (IFORCE_XMIT_RUNNING , iforce->xmit_flags);dev_dbg (&iforce_usb->intf->dev,"urb->status %d, exiting\n" , urb->status); +iforce_clear_xmit_and_wake (iforce);return ; }__iforce_usb_xmit (iforce); -wake_up (&iforce->wait); +wake_up_all (&iforce->wait); } static int iforce_usb_probe(struct usb_interface *intf,
drivers/input/joystick/iforce/iforce.h +6 -0
@@ -119,6 +119,12 @@ static inline int iforce_get_id_packet(struct iforce *iforce, u8 id, response_data, response_len); } +static inline void iforce_clear_xmit_and_wake (struct iforce *iforce) +{ +clear_bit (IFORCE_XMIT_RUNNING , iforce->xmit_flags); +wake_up_all (&iforce->wait); +} +/* Public functions */ /* iforce-main.c */ int iforce_init_device(struct device *parent, u16 bustype,
drivers/input/misc/rk805-pwrkey.c +1 -0
@@ -98,6 +98,7 @@ static struct platform_driver rk805_pwrkey_driver = { };module_platform_driver (rk805_pwrkey_driver); +MODULE_ALIAS ("platform:rk805-pwrkey" );MODULE_AUTHOR ("Joseph Chen <[email protected]>" );MODULE_DESCRIPTION ("RK805 PMIC Power Key driver" );MODULE_LICENSE ("GPL" );
drivers/media/rc/mceusb.c +14 -21
@@ -1416,42 +1416,37 @@ static void mceusb_gen1_init(struct mceusb_dev *ir) {int ret;struct device *dev = ir->dev; -char *data; - - data =kzalloc (USB_CTRL_MSG_SZ ,GFP_KERNEL ); -if (!data) { -dev_err (dev,"%s: memory allocation failed!" , __func__); -return ; - } +char data[USB_CTRL_MSG_SZ ];/* * This is a strange one. Windows issues a set address to the device * on the receive control pipe and expect a certain value pair back */ - ret =usb_control_msg (ir->usbdev,usb_rcvctrlpipe (ir->usbdev,0 ), -USB_REQ_SET_ADDRESS ,USB_TYPE_VENDOR ,0 ,0 , - data,USB_CTRL_MSG_SZ ,3000 ); + ret =usb_control_msg_recv (ir->usbdev,0 ,USB_REQ_SET_ADDRESS , +USB_DIR_IN |USB_TYPE_VENDOR , +0 ,0 , data,USB_CTRL_MSG_SZ ,3000 , +GFP_KERNEL );dev_dbg (dev,"set address - ret = %d" , ret);dev_dbg (dev,"set address - data[0] = %d, data[1] = %d" , data[0 ], data[1 ]);/* set feature: bit rate 38400 bps */ - ret =usb_control_msg (ir->usbdev,usb_sndctrlpipe (ir->usbdev,0 ), -USB_REQ_SET_FEATURE ,USB_TYPE_VENDOR , -0xc04e ,0x0000 ,NULL ,0 ,3000 ); + ret =usb_control_msg_send (ir->usbdev,0 , +USB_REQ_SET_FEATURE ,USB_TYPE_VENDOR , +0xc04e ,0x0000 ,NULL ,0 ,3000 ,GFP_KERNEL );dev_dbg (dev,"set feature - ret = %d" , ret);/* bRequest 4: set char length to 8 bits */ - ret =usb_control_msg (ir->usbdev,usb_sndctrlpipe (ir->usbdev,0 ), -4 ,USB_TYPE_VENDOR , -0x0808 ,0x0000 ,NULL ,0 ,3000 ); + ret =usb_control_msg_send (ir->usbdev,0 , +4 ,USB_TYPE_VENDOR , +0x0808 ,0x0000 ,NULL ,0 ,3000 ,GFP_KERNEL );dev_dbg (dev,"set char length - retB = %d" , ret);/* bRequest 2: set handshaking to use DTR/DSR */ - ret =usb_control_msg (ir->usbdev,usb_sndctrlpipe (ir->usbdev,0 ), -2 ,USB_TYPE_VENDOR , -0x0000 ,0x0100 ,NULL ,0 ,3000 ); + ret =usb_control_msg_send (ir->usbdev,0 , +2 ,USB_TYPE_VENDOR , +0x0000 ,0x0100 ,NULL ,0 ,3000 ,GFP_KERNEL );dev_dbg (dev,"set handshake - retC = %d" , ret);/* device resume */
@@ -1459,8 +1454,6 @@ static void mceusb_gen1_init(struct mceusb_dev *ir)/* get hw/sw revision? */ mce_command_out (ir,GET_REVISION ,sizeof (GET_REVISION )); - -kfree (data); }static void mceusb_gen2_init (struct mceusb_dev *ir)
drivers/misc/fastrpc.c +8 -4
@@ -1943,7 +1943,12 @@ static int fastrpc_cb_probe(struct platform_device *pdev)of_property_read_u32 (dev->of_node,"qcom,nsessions" , &sessions);spin_lock_irqsave (&cctx->lock, flags); - sess = &cctx->session[cctx->sesscount]; +if (cctx->sesscount >=FASTRPC_MAX_SESSIONS ) { +dev_err (&pdev->dev,"too many sessions\n" ); +spin_unlock_irqrestore (&cctx->lock, flags); +return -ENOSPC ; + } + sess = &cctx->session[cctx->sesscount++]; sess->used = false; sess->valid = true; sess->dev = dev;
@@ -1956,13 +1961,12 @@ static int fastrpc_cb_probe(struct platform_device *pdev)struct fastrpc_session_ctx *dup_sess;for (i =1 ; i < sessions; i++) { -if (cctx->sesscount++ >=FASTRPC_MAX_SESSIONS ) +if (cctx->sesscount >=FASTRPC_MAX_SESSIONS )break ; - dup_sess = &cctx->session[cctx->sesscount]; + dup_sess = &cctx->session[cctx->sesscount++];memcpy (dup_sess, sess,sizeof (*dup_sess)); } } - cctx->sesscount++;spin_unlock_irqrestore (&cctx->lock, flags); rc =dma_set_mask (dev,DMA_BIT_MASK (32 ));if (rc) {
drivers/mmc/core/sd.c +18 -28
73 lines not on this page · raw message
drivers/net/dsa/xrs700x/xrs700x.c +3 -2
@@ -109,6 +109,7 @@ static void xrs700x_read_port_counters(struct xrs700x *priv, int port) {struct xrs700x_port *p = &priv->ports[port];struct rtnl_link_stats64 stats; +unsigned long flags;int i;memset (&stats,0 ,sizeof (stats));
@@ -138,9 +139,9 @@ static void xrs700x_read_port_counters(struct xrs700x *priv, int port)*/ stats.rx_packets += stats.multicast; -u64_stats_update_begin (&p->syncp); + flags =u64_stats_update_begin_irqsave (&p->syncp); p->stats64 = stats; -u64_stats_update_end (&p->syncp); +u64_stats_update_end_irqrestore (&p->syncp, flags);mutex_unlock (&p->mib_mutex); }
drivers/net/ethernet/cortina/gemini.c +12 -12
@@ -1919,7 +1919,7 @@ static void gmac_get_stats64(struct net_device *netdev,/* Racing with RX NAPI */ do { - start = u64_stats_fetch_begin(&port->rx_stats_syncp); + start = u64_stats_fetch_begin_irq(&port->rx_stats_syncp); stats->rx_packets = port->stats.rx_packets; stats->rx_bytes = port->stats.rx_bytes;
@@ -1931,11 +1931,11 @@ static void gmac_get_stats64(struct net_device *netdev, stats->rx_crc_errors = port->stats.rx_crc_errors; stats->rx_frame_errors = port->stats.rx_frame_errors; - }while (u64_stats_fetch_retry (&port->rx_stats_syncp, start)); + }while (u64_stats_fetch_retry_irq (&port->rx_stats_syncp, start));/* Racing with MIB and TX completion interrupts */ do { - start = u64_stats_fetch_begin(&port->ir_stats_syncp); + start = u64_stats_fetch_begin_irq(&port->ir_stats_syncp); stats->tx_errors = port->stats.tx_errors; stats->tx_packets = port->stats.tx_packets;
@@ -1945,15 +1945,15 @@ static void gmac_get_stats64(struct net_device *netdev, stats->rx_missed_errors = port->stats.rx_missed_errors; stats->rx_fifo_errors = port->stats.rx_fifo_errors; - }while (u64_stats_fetch_retry (&port->ir_stats_syncp, start)); + }while (u64_stats_fetch_retry_irq (&port->ir_stats_syncp, start));/* Racing with hard_start_xmit */ do { - start =u64_stats_fetch_begin (&port->tx_stats_syncp); + start =u64_stats_fetch_begin_irq (&port->tx_stats_syncp); stats->tx_dropped = port->stats.tx_dropped; - }while (u64_stats_fetch_retry (&port->tx_stats_syncp, start)); + }while (u64_stats_fetch_retry_irq (&port->tx_stats_syncp, start)); stats->rx_dropped += stats->rx_missed_errors; }
@@ -2031,18 +2031,18 @@ static void gmac_get_ethtool_stats(struct net_device *netdev,/* Racing with MIB interrupt */ do { p = values; - start =u64_stats_fetch_begin (&port->ir_stats_syncp); + start =u64_stats_fetch_begin_irq (&port->ir_stats_syncp);for (i =0 ; i <RX_STATS_NUM ; i++) *p++ = port->hw_stats[i]; - }while (u64_stats_fetch_retry (&port->ir_stats_syncp, start)); + }while (u64_stats_fetch_retry_irq (&port->ir_stats_syncp, start)); values = p;/* Racing with RX NAPI */ do { p = values; - start = u64_stats_fetch_begin(&port->rx_stats_syncp); + start = u64_stats_fetch_begin_irq(&port->rx_stats_syncp); for (i = 0; i < RX_STATUS_NUM; i++) *p++ = port->rx_stats[i];
@@ -2050,13 +2050,13 @@ static void gmac_get_ethtool_stats(struct net_device *netdev, *p++ = port->rx_csum_stats[i]; *p++ = port->rx_napi_exits; - }while (u64_stats_fetch_retry (&port->rx_stats_syncp, start)); + }while (u64_stats_fetch_retry_irq (&port->rx_stats_syncp, start)); values = p;/* Racing with TX start_xmit */ do { p = values; - start = u64_stats_fetch_begin(&port->tx_stats_syncp); + start = u64_stats_fetch_begin_irq(&port->tx_stats_syncp); for (i = 0; i < TX_MAX_FRAGS; i++) { *values++ = port->tx_frag_stats[i];
@@ -2065,7 +2065,7 @@ static void gmac_get_ethtool_stats(struct net_device *netdev, *values++ = port->tx_frags_linearized; *values++ = port->tx_hw_csummed; - }while (u64_stats_fetch_retry (&port->tx_stats_syncp, start)); + }while (u64_stats_fetch_retry_irq (&port->tx_stats_syncp, start)); } static int gmac_get_ksettings(struct net_device *netdev,
drivers/net/ethernet/fungible/funeth/funeth_txrx.h +2 -2
@@ -205,9 +205,9 @@ struct funeth_rxq {#define FUN_QSTAT_READ (q, seq, stats_copy) \ do { \ - seq = u64_stats_fetch_begin(&(q)->syncp); \ + seq = u64_stats_fetch_begin_irq(&(q)->syncp); \ stats_copy = (q)->stats; \ - } while (u64_stats_fetch_retry(&(q)->syncp, (seq))) + } while (u64_stats_fetch_retry_irq(&(q)->syncp, (seq)))#define FUN_INT_NAME_LEN (IFNAMSIZ + 16)
drivers/net/ethernet/google/gve/gve_ethtool.c +8 -8
@@ -177,14 +177,14 @@ gve_get_ethtool_stats(struct net_device *netdev,struct gve_rx_ring *rx = &priv->rx[ring]; start = -u64_stats_fetch_begin (&priv->rx[ring].statss); +u64_stats_fetch_begin_irq (&priv->rx[ring].statss); tmp_rx_pkts = rx->rpackets; tmp_rx_bytes = rx->rbytes; tmp_rx_skb_alloc_fail = rx->rx_skb_alloc_fail; tmp_rx_buf_alloc_fail = rx->rx_buf_alloc_fail; tmp_rx_desc_err_dropped_pkt = rx->rx_desc_err_dropped_pkt; - }while (u64_stats_fetch_retry (&priv->rx[ring].statss, + }while (u64_stats_fetch_retry_irq (&priv->rx[ring].statss, start)); rx_pkts += tmp_rx_pkts; rx_bytes += tmp_rx_bytes;
@@ -198,10 +198,10 @@ gve_get_ethtool_stats(struct net_device *netdev,if (priv->tx) {do { start = -u64_stats_fetch_begin (&priv->tx[ring].statss); +u64_stats_fetch_begin_irq (&priv->tx[ring].statss); tmp_tx_pkts = priv->tx[ring].pkt_done; tmp_tx_bytes = priv->tx[ring].bytes_done; - }while (u64_stats_fetch_retry (&priv->tx[ring].statss, + }while (u64_stats_fetch_retry_irq (&priv->tx[ring].statss, start)); tx_pkts += tmp_tx_pkts; tx_bytes += tmp_tx_bytes;
@@ -259,13 +259,13 @@ gve_get_ethtool_stats(struct net_device *netdev, data[i++] = rx->fill_cnt - rx->cnt;do { start = -u64_stats_fetch_begin (&priv->rx[ring].statss); +u64_stats_fetch_begin_irq (&priv->rx[ring].statss); tmp_rx_bytes = rx->rbytes; tmp_rx_skb_alloc_fail = rx->rx_skb_alloc_fail; tmp_rx_buf_alloc_fail = rx->rx_buf_alloc_fail; tmp_rx_desc_err_dropped_pkt = rx->rx_desc_err_dropped_pkt; - }while (u64_stats_fetch_retry (&priv->rx[ring].statss, + }while (u64_stats_fetch_retry_irq (&priv->rx[ring].statss, start)); data[i++] = tmp_rx_bytes; data[i++] = rx->rx_cont_packet_cnt;
@@ -331,9 +331,9 @@ gve_get_ethtool_stats(struct net_device *netdev, }do { start = -u64_stats_fetch_begin (&priv->tx[ring].statss); +u64_stats_fetch_begin_irq (&priv->tx[ring].statss); tmp_tx_bytes = tx->bytes_done; - }while (u64_stats_fetch_retry (&priv->tx[ring].statss, + }while (u64_stats_fetch_retry_irq (&priv->tx[ring].statss, start)); data[i++] = tmp_tx_bytes; data[i++] = tx->wake_queue;
drivers/net/ethernet/google/gve/gve_main.c +6 -6
@@ -51,10 +51,10 @@ static void gve_get_stats(struct net_device *dev, struct rtnl_link_stats64 *s)for (ring =0 ; ring < priv->rx_cfg.num_queues; ring++) {do { start = -u64_stats_fetch_begin (&priv->rx[ring].statss); +u64_stats_fetch_begin_irq (&priv->rx[ring].statss); packets = priv->rx[ring].rpackets; bytes = priv->rx[ring].rbytes; - }while (u64_stats_fetch_retry (&priv->rx[ring].statss, + }while (u64_stats_fetch_retry_irq (&priv->rx[ring].statss, start)); s->rx_packets += packets; s->rx_bytes += bytes;
@@ -64,10 +64,10 @@ static void gve_get_stats(struct net_device *dev, struct rtnl_link_stats64 *s)for (ring =0 ; ring < priv->tx_cfg.num_queues; ring++) {do { start = -u64_stats_fetch_begin (&priv->tx[ring].statss); +u64_stats_fetch_begin_irq (&priv->tx[ring].statss); packets = priv->tx[ring].pkt_done; bytes = priv->tx[ring].bytes_done; - }while (u64_stats_fetch_retry (&priv->tx[ring].statss, + }while (u64_stats_fetch_retry_irq (&priv->tx[ring].statss, start)); s->tx_packets += packets; s->tx_bytes += bytes;
@@ -1274,9 +1274,9 @@ void gve_handle_report_stats(struct gve_priv *priv) }do { - start =u64_stats_fetch_begin (&priv->tx[idx].statss); + start =u64_stats_fetch_begin_irq (&priv->tx[idx].statss); tx_bytes = priv->tx[idx].bytes_done; - }while (u64_stats_fetch_retry (&priv->tx[idx].statss, start)); + }while (u64_stats_fetch_retry_irq (&priv->tx[idx].statss, start)); stats[stats_idx++] = (struct stats ) { .stat_name =cpu_to_be32 (TX_WAKE_CNT ), .value =cpu_to_be64 (priv->tx[idx].wake_queue),
drivers/net/ethernet/huawei/hinic/hinic_rx.c +2 -2
@@ -74,14 +74,14 @@ void hinic_rxq_get_stats(struct hinic_rxq *rxq, struct hinic_rxq_stats *stats)unsigned int start;do { - start =u64_stats_fetch_begin (&rxq_stats->syncp); + start =u64_stats_fetch_begin_irq (&rxq_stats->syncp); stats->pkts = rxq_stats->pkts; stats->bytes = rxq_stats->bytes; stats->errors = rxq_stats->csum_errors + rxq_stats->other_errors; stats->csum_errors = rxq_stats->csum_errors; stats->other_errors = rxq_stats->other_errors; - }while (u64_stats_fetch_retry (&rxq_stats->syncp, start)); + }while (u64_stats_fetch_retry_irq (&rxq_stats->syncp, start)); }/**
drivers/net/ethernet/huawei/hinic/hinic_tx.c +2 -2
@@ -99,14 +99,14 @@ void hinic_txq_get_stats(struct hinic_txq *txq, struct hinic_txq_stats *stats)unsigned int start;do { - start =u64_stats_fetch_begin (&txq_stats->syncp); + start =u64_stats_fetch_begin_irq (&txq_stats->syncp); stats->pkts = txq_stats->pkts; stats->bytes = txq_stats->bytes; stats->tx_busy = txq_stats->tx_busy; stats->tx_wake = txq_stats->tx_wake; stats->tx_dropped = txq_stats->tx_dropped; stats->big_frags_pkts = txq_stats->big_frags_pkts; - }while (u64_stats_fetch_retry (&txq_stats->syncp, start)); + }while (u64_stats_fetch_retry_irq (&txq_stats->syncp, start)); }/**
drivers/net/ethernet/mellanox/mlxbf_gige/mlxbf_gige.h +3 -1
@@ -75,6 +75,7 @@ struct mlxbf_gige {struct net_device *netdev;struct platform_device *pdev;void __iomem *mdio_io; +void __iomem *clk_io;struct mii_bus *mdiobus;spinlock_t lock;/* for packet processing indices */ u16 rx_q_entries;
@@ -137,7 +138,8 @@ enum mlxbf_gige_res {MLXBF_GIGE_RES_MDIO9 ,MLXBF_GIGE_RES_GPIO0 ,MLXBF_GIGE_RES_LLU , - MLXBF_GIGE_RES_PLU +MLXBF_GIGE_RES_PLU , + MLXBF_GIGE_RES_CLK };/* Version of register data returned by mlxbf_gige_get_regs() */
drivers/net/ethernet/mellanox/mlxbf_gige/mlxbf_gige_mdio.c +105 -17
169 lines not on this page · raw message
drivers/net/ethernet/mellanox/mlxbf_gige/mlxbf_gige_regs.h +2 -0
@@ -8,6 +8,8 @@#ifndef __MLXBF_GIGE_REGS_H__#define __MLXBF_GIGE_REGS_H__ +#define MLXBF_GIGE_VERSION 0x0000 +#define MLXBF_GIGE_VERSION_BF2 0x0#define MLXBF_GIGE_STATUS 0x0010#define MLXBF_GIGE_STATUS_READY BIT(0)#define MLXBF_GIGE_INT_STATUS 0x0028
drivers/net/ethernet/mellanox/mlxsw/spectrum_span.c +2 -1
@@ -423,7 +423,8 @@ mlxsw_sp_span_gretap4_route(const struct net_device *to_dev, parms =mlxsw_sp_ipip_netdev_parms4 (to_dev);ip_tunnel_init_flow (&fl4, parms.iph.protocol, *daddrp, *saddrp, -0 ,0 ,dev_net (to_dev), parms.link, tun->fwmark,0 ); +0 ,0 ,dev_net (to_dev), parms.link, tun->fwmark,0 , +0 ); rt =ip_route_output_key (tun->net, &fl4);if (IS_ERR (rt))
drivers/net/ethernet/microchip/lan966x/lan966x_fdma.c +4 -1
@@ -425,7 +425,8 @@ static struct sk_buff *lan966x_fdma_rx_get_frame(struct lan966x_rx *rx)lan966x_ifh_get_src_port (skb->data, &src_port);lan966x_ifh_get_timestamp (skb->data, ×tamp); -WARN_ON (src_port >= lan966x->num_phys_ports); +if (WARN_ON (src_port >= lan966x->num_phys_ports)) + goto free_skb; skb->dev = lan966x->ports[src_port]->dev;skb_pull (skb,IFH_LEN *sizeof (u32));
@@ -449,6 +450,8 @@ static struct sk_buff *lan966x_fdma_rx_get_frame(struct lan966x_rx *rx)return skb; +free_skb: +kfree_skb (skb); unmap_page: dma_unmap_page(lan966x->dev, (dma_addr_t)db->dataptr, FDMA_DCB_STATUS_BLOCKL(db->status),
drivers/net/ethernet/microchip/sparx5/sparx5_packet.c +2 -0
@@ -113,6 +113,8 @@ static void sparx5_xtr_grp(struct sparx5 *sparx5, u8 grp, bool byte_swap)/* This assumes STATUS_WORD_POS == 1, Status * just after last data */ +if (!byte_swap) + val =ntohl ((__force __be32 )val); byte_cnt -= (4 -XTR_VALID_BYTES (val)); eof_flag = true;break ;
drivers/net/ethernet/netronome/nfp/flower/qos_conf.c +3 -2
@@ -127,10 +127,11 @@ static int nfp_policer_validate(const struct flow_action *action,return -EOPNOTSUPP ; } -if (act->police.notexceed.act_id !=FLOW_ACTION_PIPE && +if (act->police.notexceed.act_id !=FLOW_ACTION_CONTINUE && + act->police.notexceed.act_id !=FLOW_ACTION_PIPE && act->police.notexceed.act_id !=FLOW_ACTION_ACCEPT ) {NL_SET_ERR_MSG_MOD (extack, -"Offload not supported when conform action is not pipe or ok" ); +"Offload not supported when conform action is not continue, pipe or ok" );return -EOPNOTSUPP ; }
drivers/net/ethernet/netronome/nfp/nfp_net_common.c +4 -4
@@ -1629,21 +1629,21 @@ static void nfp_net_stat64(struct net_device *netdev,unsigned int start;do { - start =u64_stats_fetch_begin (&r_vec->rx_sync); + start =u64_stats_fetch_begin_irq (&r_vec->rx_sync); data[0 ] = r_vec->rx_pkts; data[1 ] = r_vec->rx_bytes; data[2 ] = r_vec->rx_drops; - }while (u64_stats_fetch_retry (&r_vec->rx_sync, start)); + }while (u64_stats_fetch_retry_irq (&r_vec->rx_sync, start)); stats->rx_packets += data[0 ]; stats->rx_bytes += data[1 ]; stats->rx_dropped += data[2 ];do { - start =u64_stats_fetch_begin (&r_vec->tx_sync); + start =u64_stats_fetch_begin_irq (&r_vec->tx_sync); data[0 ] = r_vec->tx_pkts; data[1 ] = r_vec->tx_bytes; data[2 ] = r_vec->tx_errors; - }while (u64_stats_fetch_retry (&r_vec->tx_sync, start)); + }while (u64_stats_fetch_retry_irq (&r_vec->tx_sync, start)); stats->tx_packets += data[0 ]; stats->tx_bytes += data[1 ]; stats->tx_errors += data[2 ];
drivers/net/ethernet/netronome/nfp/nfp_net_ethtool.c +4 -4
@@ -494,7 +494,7 @@ static u64 *nfp_vnic_get_sw_stats(struct net_device *netdev, u64 *data)unsigned int start; do { - start = u64_stats_fetch_begin(&nn->r_vecs[i].rx_sync); + start = u64_stats_fetch_begin_irq(&nn->r_vecs[i].rx_sync); data[0] = nn->r_vecs[i].rx_pkts; tmp[0] = nn->r_vecs[i].hw_csum_rx_ok; tmp[1] = nn->r_vecs[i].hw_csum_rx_inner_ok;
@@ -502,10 +502,10 @@ static u64 *nfp_vnic_get_sw_stats(struct net_device *netdev, u64 *data) tmp[3 ] = nn->r_vecs[i].hw_csum_rx_error; tmp[4 ] = nn->r_vecs[i].rx_replace_buf_alloc_fail; tmp[5 ] = nn->r_vecs[i].hw_tls_rx; - }while (u64_stats_fetch_retry (&nn->r_vecs[i].rx_sync, start)); + }while (u64_stats_fetch_retry_irq (&nn->r_vecs[i].rx_sync, start)); do { - start = u64_stats_fetch_begin(&nn->r_vecs[i].tx_sync); + start = u64_stats_fetch_begin_irq(&nn->r_vecs[i].tx_sync); data[1] = nn->r_vecs[i].tx_pkts; data[2] = nn->r_vecs[i].tx_busy; tmp[6] = nn->r_vecs[i].hw_csum_tx;
@@ -515,7 +515,7 @@ static u64 *nfp_vnic_get_sw_stats(struct net_device *netdev, u64 *data) tmp[10 ] = nn->r_vecs[i].hw_tls_tx; tmp[11 ] = nn->r_vecs[i].tls_tx_fallback; tmp[12 ] = nn->r_vecs[i].tls_tx_no_fallback; - }while (u64_stats_fetch_retry (&nn->r_vecs[i].tx_sync, start)); + }while (u64_stats_fetch_retry_irq (&nn->r_vecs[i].tx_sync, start)); data +=NN_RVEC_PER_Q_STATS ;
drivers/net/ethernet/rocker/rocker_ofdpa.c +1 -1
@@ -1273,7 +1273,7 @@ static int ofdpa_port_ipv4_neigh(struct ofdpa_port *ofdpa_port,bool removing;int err =0 ; - entry =kzalloc (sizeof (*entry),GFP_KERNEL ); + entry =kzalloc (sizeof (*entry),GFP_ATOMIC );if (!entry)return -ENOMEM ;
drivers/net/ethernet/smsc/smsc911x.c +6 -0
@@ -1037,6 +1037,8 @@ static int smsc911x_mii_probe(struct net_device *dev)return ret; } +/* Indicate that the MAC is responsible for managing PHY PM */ + phydev->mac_managed_pm = true;phy_attached_info (phydev);phy_set_max_speed (phydev,SPEED_100 );
@@ -2587,6 +2589,8 @@ static int smsc911x_suspend(struct device *dev)if (netif_running (ndev)) {netif_stop_queue (ndev);netif_device_detach (ndev); +if (!device_may_wakeup (dev)) +phy_stop (ndev->phydev); }/* enable wake on LAN, energy detection and the external PME
@@ -2628,6 +2632,8 @@ static int smsc911x_resume(struct device *dev)if (netif_running (ndev)) {netif_device_attach (ndev);netif_start_queue (ndev); +if (!device_may_wakeup (dev)) +phy_start (ndev->phydev); }return 0 ;
drivers/net/ieee802154/adf7242.c +2 -1
@@ -1310,10 +1310,11 @@ static void adf7242_remove(struct spi_device *spi)debugfs_remove_recursive (lp->debugfs_root); +ieee802154_unregister_hw (lp->hw); +cancel_delayed_work_sync (&lp->work);destroy_workqueue (lp->wqueue); -ieee802154_unregister_hw (lp->hw);mutex_destroy (&lp->bmux);ieee802154_free_hw (lp->hw); }
drivers/net/netdevsim/netdev.c +2 -2
@@ -67,10 +67,10 @@ nsim_get_stats64(struct net_device *dev, struct rtnl_link_stats64 *stats)unsigned int start;do { - start =u64_stats_fetch_begin (&ns->syncp); + start =u64_stats_fetch_begin_irq (&ns->syncp); stats->tx_bytes = ns->tx_bytes; stats->tx_packets = ns->tx_packets; - }while (u64_stats_fetch_retry (&ns->syncp, start)); + }while (u64_stats_fetch_retry_irq (&ns->syncp, start)); } static int
drivers/net/phy/micrel.c +7 -1
@@ -2838,12 +2838,18 @@ static int lan8814_config_init(struct phy_device *phydev)return 0 ; } +/* It is expected that there will not be any 'lan8814_take_coma_mode' +* function called in suspend. Because the GPIO line can be shared, so if one of +* the phys goes back in coma mode, then all the other PHYs will go, which is +* wrong. +*/ static int lan8814_release_coma_mode (struct phy_device *phydev) {struct gpio_desc *gpiod; gpiod =devm_gpiod_get_optional (&phydev->mdio.dev,"coma-mode" , -GPIOD_OUT_HIGH_OPEN_DRAIN ); +GPIOD_OUT_HIGH_OPEN_DRAIN | +GPIOD_FLAGS_BIT_NONEXCLUSIVE );if (IS_ERR (gpiod))return PTR_ERR (gpiod);
drivers/peci/controller/peci-aspeed.c +1 -1
@@ -523,7 +523,7 @@ static int aspeed_peci_probe(struct platform_device *pdev)return PTR_ERR (priv->base); priv->irq =platform_get_irq (pdev,0 ); -if (!priv->irq) +if (priv->irq <0 )return priv->irq; ret = devm_request_irq(&pdev->dev, priv->irq, aspeed_peci_irq_handler,
drivers/platform/mellanox/mlxreg-lc.c +25 -13
@@ -460,8 +460,6 @@ static int mlxreg_lc_power_on_off(struct mlxreg_lc *mlxreg_lc, u8 action)u32 regval;int err; -mutex_lock (&mlxreg_lc->lock); - err =regmap_read (mlxreg_lc->par_regmap, mlxreg_lc->data->reg_pwr, ®val);if (err) goto regmap_read_fail;
@@ -474,7 +472,6 @@ static int mlxreg_lc_power_on_off(struct mlxreg_lc *mlxreg_lc, u8 action) err =regmap_write (mlxreg_lc->par_regmap, mlxreg_lc->data->reg_pwr, regval); regmap_read_fail: -mutex_unlock (&mlxreg_lc->lock);return err; }
@@ -491,8 +488,6 @@ static int mlxreg_lc_enable_disable(struct mlxreg_lc *mlxreg_lc, bool action)* line card which is already has been enabled. Disabling does not affect the disabled line * card. */ -mutex_lock (&mlxreg_lc->lock); - err =regmap_read (mlxreg_lc->par_regmap, mlxreg_lc->data->reg_ena, ®val);if (err) goto regmap_read_fail;
@@ -505,7 +500,6 @@ static int mlxreg_lc_enable_disable(struct mlxreg_lc *mlxreg_lc, bool action) err =regmap_write (mlxreg_lc->par_regmap, mlxreg_lc->data->reg_ena, regval); regmap_read_fail: -mutex_unlock (&mlxreg_lc->lock);return err; }
@@ -537,6 +531,15 @@ mlxreg_lc_sn4800_c16_config_init(struct mlxreg_lc *mlxreg_lc, void *regmap,static void mlxreg_lc_state_update (struct mlxreg_lc *mlxreg_lc,enum mlxreg_lc_state state,u8 action) +{ +if (action) + mlxreg_lc->state |= state; +else + mlxreg_lc->state &= ~state; +} + +static void +mlxreg_lc_state_update_locked (struct mlxreg_lc *mlxreg_lc,enum mlxreg_lc_state state,u8 action) {mutex_lock (&mlxreg_lc->lock);
@@ -560,8 +563,11 @@ static int mlxreg_lc_event_handler(void *handle, enum mlxreg_hotplug_kind kind,dev_info (mlxreg_lc->dev,"linecard#%d state %d event kind %d action %d\n" , mlxreg_lc->data->slot, mlxreg_lc->state, kind, action); -if (!(mlxreg_lc->state &MLXREG_LC_INITIALIZED )) +mutex_lock (&mlxreg_lc->lock); +if (!(mlxreg_lc->state &MLXREG_LC_INITIALIZED )) { +mutex_unlock (&mlxreg_lc->lock);return 0 ; + }switch (kind) {case MLXREG_HOTPLUG_LC_SYNCED :
@@ -574,7 +580,7 @@ static int mlxreg_lc_event_handler(void *handle, enum mlxreg_hotplug_kind kind,if (!(mlxreg_lc->state &MLXREG_LC_POWERED ) && action) { err =mlxreg_lc_power_on_off (mlxreg_lc,1 );if (err) -return err; + goto mlxreg_lc_power_on_off_fail; }/* In case line card is configured - enable it. */ if (mlxreg_lc->state &MLXREG_LC_CONFIGURED && action)
@@ -588,12 +594,13 @@ static int mlxreg_lc_event_handler(void *handle, enum mlxreg_hotplug_kind kind,/* In case line card is configured - enable it. */ if (mlxreg_lc->state &MLXREG_LC_CONFIGURED ) err =mlxreg_lc_enable_disable (mlxreg_lc,1 ); +mutex_unlock (&mlxreg_lc->lock);return err; } err =mlxreg_lc_create_static_devices (mlxreg_lc, mlxreg_lc->main_devs, mlxreg_lc->main_devs_num);if (err) -return err; + goto mlxreg_lc_create_static_devices_fail;/* In case line card is already in ready state - enable it. */ if (mlxreg_lc->state &MLXREG_LC_CONFIGURED )
@@ -620,6 +627,10 @@ static int mlxreg_lc_event_handler(void *handle, enum mlxreg_hotplug_kind kind,break ; } +mlxreg_lc_power_on_off_fail: +mlxreg_lc_create_static_devices_fail: +mutex_unlock (&mlxreg_lc->lock); +return err; }
@@ -665,7 +676,7 @@ static int mlxreg_lc_completion_notify(void *handle, struct i2c_adapter *parent,if (err) goto mlxreg_lc_create_static_devices_failed; -mlxreg_lc_state_update (mlxreg_lc,MLXREG_LC_POWERED ,1 ); +mlxreg_lc_state_update_locked (mlxreg_lc,MLXREG_LC_POWERED ,1 ); }/* Verify if line card is synchronized. */
@@ -676,7 +687,7 @@ static int mlxreg_lc_completion_notify(void *handle, struct i2c_adapter *parent,/* Power on line card if necessary. */ if (regval & mlxreg_lc->data->mask) { mlxreg_lc->state |=MLXREG_LC_SYNCED ; -mlxreg_lc_state_update (mlxreg_lc,MLXREG_LC_SYNCED ,1 ); +mlxreg_lc_state_update_locked (mlxreg_lc,MLXREG_LC_SYNCED ,1 );if (mlxreg_lc->state & ~MLXREG_LC_POWERED ) { err =mlxreg_lc_power_on_off (mlxreg_lc,1 );if (err)
@@ -684,7 +695,7 @@ static int mlxreg_lc_completion_notify(void *handle, struct i2c_adapter *parent, } } -mlxreg_lc_state_update (mlxreg_lc,MLXREG_LC_INITIALIZED ,1 ); +mlxreg_lc_state_update_locked (mlxreg_lc,MLXREG_LC_INITIALIZED ,1 );return 0 ;
@@ -863,7 +874,6 @@ static int mlxreg_lc_probe(struct platform_device *pdev)if (err) {dev_err (&pdev->dev,"Failed to sync regmap for client %s at bus %d at addr 0x%02x\n" , data->hpdev.brdinfo->type, data->hpdev.nr, data->hpdev.brdinfo->addr); - err =PTR_ERR (regmap); goto regcache_sync_fail; }
@@ -905,6 +915,8 @@ static int mlxreg_lc_remove(struct platform_device *pdev)struct mlxreg_core_data *data =dev_get_platdata (&pdev->dev);struct mlxreg_lc *mlxreg_lc =platform_get_drvdata (pdev); +mlxreg_lc_state_update_locked (mlxreg_lc,MLXREG_LC_INITIALIZED ,0 ); +/* * Probing and removing are invoked by hotplug events raised upon line card insertion and * removing. If probing procedure fails all data is cleared. However, hotplug event still
drivers/platform/x86/pmc_atom.c +1 -1
@@ -232,7 +232,7 @@ static void pmc_power_off(void) pm1_cnt_port = acpi_base_addr +PM1_CNT ; pm1_cnt_value =inl (pm1_cnt_port); - pm1_cnt_value &=SLEEP_TYPE_MASK ; + pm1_cnt_value &= ~SLEEP_TYPE_MASK ; pm1_cnt_value |=SLEEP_TYPE_S5 ; pm1_cnt_value |=SLEEP_ENABLE ;
drivers/platform/x86/x86-android-tablets.c +14 -0
@@ -663,9 +663,23 @@ static const struct x86_i2c_client_info chuwi_hi8_i2c_clients[] __initconst = { }, }; +static int __init chuwi_hi8_init (void ) +{ +/* +* Avoid the acpi_unregister_gsi() call in x86_acpi_irq_helper_get() +* breaking the touchscreen + logging various errors when the Windows +* BIOS is used. +*/ +if (acpi_dev_present ("MSSL0001" ,NULL ,1 )) +return -ENODEV ; + +return 0 ; +} +static const struct x86_dev_info chuwi_hi8_info__initconst = { .i2c_client_info = chuwi_hi8_i2c_clients, .i2c_client_count =ARRAY_SIZE (chuwi_hi8_i2c_clients), + .init = chuwi_hi8_init, };#define CZC_EC_EXTRA_PORT 0x68
drivers/soundwire/qcom.c +3 -3
@@ -167,7 +167,7 @@ struct qcom_swrm_ctrl {u8 wcmd_id;struct qcom_swrm_port_config pconfig[QCOM_SDW_MAX_PORTS ];struct sdw_stream_runtime *sruntime[SWRM_MAX_DAIS ]; -enum sdw_slave_status status[SDW_MAX_DEVICES ]; +enum sdw_slave_status status[SDW_MAX_DEVICES +1 ];int (*reg_read)(struct qcom_swrm_ctrl *ctrl,int reg,u32 *val);int (*reg_write)(struct qcom_swrm_ctrl *ctrl,int reg,int val);u32 slave_status;
@@ -411,7 +411,7 @@ static int qcom_swrm_get_alert_slave_dev_num(struct qcom_swrm_ctrl *ctrl) ctrl->reg_read (ctrl,SWRM_MCP_SLV_STATUS , &val); -for (dev_num =0 ; dev_num <SDW_MAX_DEVICES ; dev_num++) { +for (dev_num =0 ; dev_num <=SDW_MAX_DEVICES ; dev_num++) { status = (val >> (dev_num *SWRM_MCP_SLV_STATUS_SZ ));if ((status &SWRM_MCP_SLV_STATUS_MASK ) ==SDW_SLAVE_ALERT ) {
@@ -431,7 +431,7 @@ static void qcom_swrm_get_device_status(struct qcom_swrm_ctrl *ctrl) ctrl->reg_read (ctrl,SWRM_MCP_SLV_STATUS , &val); ctrl->slave_status = val; -for (i =0 ; i <SDW_MAX_DEVICES ; i++) { +for (i =0 ; i <=SDW_MAX_DEVICES ; i++) {u32 s; s = (val >> (i *2 ));
drivers/staging/r8188eu/os_dep/os_intfs.c +1 -0
@@ -18,6 +18,7 @@ MODULE_LICENSE("GPL");MODULE_DESCRIPTION ("Realtek Wireless Lan Driver" );MODULE_AUTHOR ("Realtek Semiconductor Corp." );MODULE_VERSION (DRIVERVERSION ); +MODULE_FIRMWARE ("rtlwifi/rtl8188eufw.bin" );#define CONFIG_BR_EXT_BRNAME "br0"#define RTW_NOTCH_FILTER 0/* 0:Disable, 1:Enable, */
drivers/staging/r8188eu/os_dep/usb_intf.c +1 -0
@@ -28,6 +28,7 @@ static struct usb_device_id rtw_usb_id_tbl[] = {/*=== Realtek demoboard ===*/ {USB_DEVICE(USB_VENDER_ID_REALTEK, 0x8179)}, /* 8188EUS */ {USB_DEVICE(USB_VENDER_ID_REALTEK, 0x0179)}, /* 8188ETV */ + {USB_DEVICE(USB_VENDER_ID_REALTEK, 0xffef)}, /* Rosewill USB-N150 Nano *//*=== Customer ID ===*/ /****** 8188EUS ********/ {USB_DEVICE(0x07B8, 0x8179)}, /* Abocom - Abocom */
drivers/staging/rtl8712/rtl8712_cmd.c +0 -36
@@ -117,34 +117,6 @@ static void r871x_internal_cmd_hdl(struct _adapter *padapter, u8 *pbuf)kfree (pdrvcmd->pbuf); } -static u8 read_macreg_hdl (struct _adapter *padapter,u8 *pbuf) -{ -void (*pcmd_callback)(struct _adapter *dev,struct cmd_obj *pcmd); -struct cmd_obj *pcmd = (struct cmd_obj *)pbuf; - -/* invoke cmd->callback function */ - pcmd_callback = cmd_callback[pcmd->cmdcode].callback; -if (!pcmd_callback) -r8712_free_cmd_obj (pcmd); -else -pcmd_callback (padapter, pcmd); -return H2C_SUCCESS ; -} - -static u8 write_macreg_hdl (struct _adapter *padapter,u8 *pbuf) -{ -void (*pcmd_callback)(struct _adapter *dev,struct cmd_obj *pcmd); -struct cmd_obj *pcmd = (struct cmd_obj *)pbuf; - -/* invoke cmd->callback function */ - pcmd_callback = cmd_callback[pcmd->cmdcode].callback; -if (!pcmd_callback) -r8712_free_cmd_obj (pcmd); -else -pcmd_callback (padapter, pcmd); -return H2C_SUCCESS ; -} -static u8 read_bbreg_hdl (struct _adapter *padapter,u8 *pbuf) {struct cmd_obj *pcmd = (struct cmd_obj *)pbuf;
@@ -213,14 +185,6 @@ static struct cmd_obj *cmd_hdl_filter(struct _adapter *padapter, pcmd_r =NULL ;switch (pcmd->cmdcode) { -case GEN_CMD_CODE (_Read_MACREG): -read_macreg_hdl (padapter, (u8 *)pcmd); - pcmd_r = pcmd; -break ; -case GEN_CMD_CODE (_Write_MACREG): -write_macreg_hdl (padapter, (u8 *)pcmd); - pcmd_r = pcmd; -break ;case GEN_CMD_CODE (_Read_BBREG):read_bbreg_hdl (padapter, (u8 *)pcmd);break ;
drivers/thunderbolt/ctl.c +1 -1
@@ -407,7 +407,7 @@ static void tb_ctl_rx_submit(struct ctl_pkg *pkg)static int tb_async_error (const struct ctl_pkg *pkg) { -const struct cfg_error_pkg *error = (const struct cfg_error_pkg *)pkg; +const struct cfg_error_pkg *error = pkg->buffer;if (pkg->frame.eof !=TB_CFG_PKG_ERROR )return false;
drivers/thunderbolt/switch.c +5 -1
@@ -3781,14 +3781,18 @@ int tb_switch_pcie_l1_enable(struct tb_switch *sw)*/ int tb_switch_xhci_connect (struct tb_switch *sw) { -bool usb_port1, usb_port3, xhci_port1, xhci_port3;struct tb_port *port1, *port3;int ret; +if (sw->generation !=3 ) +return 0 ; + port1 = &sw->ports[1 ]; port3 = &sw->ports[3 ];if (tb_switch_is_alpine_ridge (sw)) { +bool usb_port1, usb_port3, xhci_port1, xhci_port3; + usb_port1 =tb_lc_is_usb_plugged (port1); usb_port3 =tb_lc_is_usb_plugged (port3); xhci_port1 =tb_lc_is_xhci_connected (port1);
drivers/tty/n_gsm.c +38 -47
281 lines not on this page · raw message
drivers/tty/serial/atmel_serial.c +1 -3
@@ -296,9 +296,6 @@ static int atmel_config_rs485(struct uart_port *port, mode =atmel_uart_readl (port,ATMEL_US_MR ); -/* Resetting serial mode to RS232 (0x0) */ - mode &= ~ATMEL_US_USMODE ; -if (rs485conf->flags &SER_RS485_ENABLED ) {dev_dbg (port->dev,"Setting UART to RS485\n" );if (rs485conf->flags &SER_RS485_RX_DURING_TX )
@@ -308,6 +305,7 @@ static int atmel_config_rs485(struct uart_port *port,atmel_uart_writel (port,ATMEL_US_TTGR , rs485conf->delay_rts_after_send); + mode &= ~ATMEL_US_USMODE ; mode |=ATMEL_US_USMODE_RS485 ; }else {dev_dbg (port->dev,"Setting UART to RS232\n" );
drivers/tty/serial/fsl_lpuart.c +3 -2
@@ -1381,9 +1381,9 @@ static int lpuart_config_rs485(struct uart_port *port,* Note: UART is assumed to be active high. */ if (rs485->flags &SER_RS485_RTS_ON_SEND ) - modem &= ~UARTMODEM_TXRTSPOL ; -else if (rs485->flags &SER_RS485_RTS_AFTER_SEND ) modem |=UARTMODEM_TXRTSPOL ; +else if (rs485->flags &SER_RS485_RTS_AFTER_SEND ) + modem &= ~UARTMODEM_TXRTSPOL ; }writeb (modem, sport->port.membase +UARTMODEM );
@@ -2182,6 +2182,7 @@ lpuart32_set_termios(struct uart_port *port, struct ktermios *termios,uart_update_timeout (port, termios->c_cflag, baud);/* wait transmit engin complete */ +lpuart32_write (&sport->port,0 ,UARTMODIR );lpuart32_wait_bit_set (&sport->port,UARTSTAT ,UARTSTAT_TC );/* disable transmit and receive */
drivers/tty/vt/vt.c +8 -4
@@ -4662,9 +4662,11 @@ static int con_font_set(struct vc_data *vc, struct console_font_op *op)console_lock ();if (vc->vc_mode !=KD_TEXT ) rc = -EINVAL ; -else if (vc->vc_sw->con_font_set) +else if (vc->vc_sw->con_font_set) { +if (vc_is_sel (vc)) +clear_selection (); rc = vc->vc_sw->con_font_set (vc, &font, op->flags); -else + }else rc = -ENOSYS ;console_unlock ();kfree (font.data);
@@ -4691,9 +4693,11 @@ static int con_font_default(struct vc_data *vc, struct console_font_op *op)console_unlock ();return -EINVAL ; } -if (vc->vc_sw->con_font_default) +if (vc->vc_sw->con_font_default) { +if (vc_is_sel (vc)) +clear_selection (); rc = vc->vc_sw->con_font_default (vc, &font, s); -else + }else rc = -ENOSYS ;console_unlock ();if (!rc) {
drivers/usb/cdns3/cdns3-gadget.c +3 -1
@@ -1530,7 +1530,8 @@ static void cdns3_transfer_completed(struct cdns3_device *priv_dev,TRB_LEN (le32_to_cpu (trb->length));if (priv_req->num_of_trb >1 && -le32_to_cpu (trb->control) &TRB_SMM ) +le32_to_cpu (trb->control) &TRB_SMM && +le32_to_cpu (trb->control) &TRB_CHAIN ) transfer_end = true;cdns3_ep_inc_deq (priv_ep);
@@ -1690,6 +1691,7 @@ static int cdns3_check_ep_interrupt_proceed(struct cdns3_endpoint *priv_ep) ep_cfg &= ~EP_CFG_ENABLE ;writel (ep_cfg, &priv_dev->regs->ep_cfg); priv_ep->flags &= ~EP_QUIRK_ISO_OUT_EN ; + priv_ep->flags |=EP_UPDATE_EP_TRBADDR ; }cdns3_transfer_completed (priv_dev, priv_ep); } else if (!(priv_ep->flags & EP_STALLED) &&
drivers/usb/class/cdc-acm.c +3 -0
@@ -1810,6 +1810,9 @@ static const struct usb_device_id acm_ids[] = { { USB_DEVICE(0x09d8, 0x0320), /* Elatec GmbH TWN3 */ .driver_info =NO_UNION_NORMAL ,/* has misplaced union descriptor */ }, + { USB_DEVICE(0x0c26, 0x0020), /* Icom ICF3400 Serie */ + .driver_info = NO_UNION_NORMAL, /* reports zero length descriptor */ + }, { USB_DEVICE(0x0ca6, 0xa050), /* Castles VEGA3000 */ .driver_info = NO_UNION_NORMAL, /* reports zero length descriptor */ },
drivers/usb/core/hub.c +10 -0
@@ -6048,6 +6048,11 @@ static int usb_reset_and_verify_device(struct usb_device *udev)* the reset is over (using their post_reset method). * * Return: The same as for usb_reset_and_verify_device(). +* However, if a reset is already in progress (for instance, if a +* driver doesn't have pre_ or post_reset() callbacks, and while +* being unbound or re-bound during the ongoing reset its disconnect() +* or probe() routine tries to perform a second, nested reset), the +* routine returns -EINPROGRESS. * * Note: * The caller must own the device lock. For example, it's safe to use
@@ -6081,6 +6086,10 @@ int usb_reset_device(struct usb_device *udev)return -EISDIR ; } +if (udev->reset_in_progress) +return -EINPROGRESS ; + udev->reset_in_progress =1 ; + port_dev = hub->ports[udev->portnum -1 ];/*
@@ -6145,6 +6154,7 @@ int usb_reset_device(struct usb_device *udev)usb_autosuspend_device (udev);memalloc_noio_restore (noio_flag); + udev->reset_in_progress =0 ;return ret; }EXPORT_SYMBOL_GPL (usb_reset_device);
drivers/usb/dwc2/platform.c +4 -4
@@ -154,9 +154,9 @@ static int __dwc2_lowlevel_hw_enable(struct dwc2_hsotg *hsotg) }else if (hsotg->plat && hsotg->plat->phy_init) { ret = hsotg->plat->phy_init (pdev, hsotg->plat->phy_type); }else { - ret =phy_power_on (hsotg->phy); + ret =phy_init (hsotg->phy);if (ret ==0 ) - ret =phy_init (hsotg->phy); + ret =phy_power_on (hsotg->phy); }return ret;
@@ -188,9 +188,9 @@ static int __dwc2_lowlevel_hw_disable(struct dwc2_hsotg *hsotg) }else if (hsotg->plat && hsotg->plat->phy_exit) { ret = hsotg->plat->phy_exit (pdev, hsotg->plat->phy_type); }else { - ret =phy_exit (hsotg->phy); + ret =phy_power_off (hsotg->phy);if (ret ==0 ) - ret =phy_power_off (hsotg->phy); + ret =phy_exit (hsotg->phy); }if (ret)return ret;
drivers/usb/dwc3/core.c +10 -9
@@ -833,15 +833,16 @@ static void dwc3_core_exit(struct dwc3 *dwc) {dwc3_event_buffers_cleanup (dwc); +usb_phy_set_suspend (dwc->usb2_phy,1 ); +usb_phy_set_suspend (dwc->usb3_phy,1 ); +phy_power_off (dwc->usb2_generic_phy); +phy_power_off (dwc->usb3_generic_phy); +usb_phy_shutdown (dwc->usb2_phy);usb_phy_shutdown (dwc->usb3_phy);phy_exit (dwc->usb2_generic_phy);phy_exit (dwc->usb3_generic_phy); -usb_phy_set_suspend (dwc->usb2_phy,1 ); -usb_phy_set_suspend (dwc->usb3_phy,1 ); -phy_power_off (dwc->usb2_generic_phy); -phy_power_off (dwc->usb3_generic_phy);dwc3_clk_disable (dwc);reset_control_assert (dwc->reset); }
@@ -1844,16 +1845,16 @@ static int dwc3_probe(struct platform_device *pdev)dwc3_debugfs_exit (dwc);dwc3_event_buffers_cleanup (dwc); -usb_phy_shutdown (dwc->usb2_phy); -usb_phy_shutdown (dwc->usb3_phy); -phy_exit (dwc->usb2_generic_phy); -phy_exit (dwc->usb3_generic_phy); -usb_phy_set_suspend (dwc->usb2_phy,1 );usb_phy_set_suspend (dwc->usb3_phy,1 );phy_power_off (dwc->usb2_generic_phy);phy_power_off (dwc->usb3_generic_phy); +usb_phy_shutdown (dwc->usb2_phy); +usb_phy_shutdown (dwc->usb3_phy); +phy_exit (dwc->usb2_generic_phy); +phy_exit (dwc->usb3_generic_phy); +dwc3_ulpi_exit (dwc); err4:
drivers/usb/dwc3/dwc3-pci.c +4 -0
@@ -44,6 +44,7 @@#define PCI_DEVICE_ID_INTEL_ADLP 0x51ee#define PCI_DEVICE_ID_INTEL_ADLM 0x54ee#define PCI_DEVICE_ID_INTEL_ADLS 0x7ae1 +#define PCI_DEVICE_ID_INTEL_RPL 0x460e#define PCI_DEVICE_ID_INTEL_RPLS 0x7a61#define PCI_DEVICE_ID_INTEL_MTLP 0x7ec1#define PCI_DEVICE_ID_INTEL_MTL 0x7e7e
@@ -456,6 +457,9 @@ static const struct pci_device_id dwc3_pci_id_table[] = { {PCI_VDEVICE (INTEL ,PCI_DEVICE_ID_INTEL_ADLS ), (kernel_ulong_t) &dwc3_pci_intel_swnode, }, + { PCI_VDEVICE(INTEL, PCI_DEVICE_ID_INTEL_RPL), + (kernel_ulong_t) &dwc3_pci_intel_swnode, }, + { PCI_VDEVICE(INTEL, PCI_DEVICE_ID_INTEL_RPLS), (kernel_ulong_t) &dwc3_pci_intel_swnode, },
drivers/usb/dwc3/gadget.c +5 -3
@@ -2538,9 +2538,6 @@ static int dwc3_gadget_pullup(struct usb_gadget *g, int is_on) is_on = !!is_on; -if (dwc->pullups_connected == is_on) -return 0 ; - dwc->softconnect = is_on;/*
@@ -2565,6 +2562,11 @@ static int dwc3_gadget_pullup(struct usb_gadget *g, int is_on)return 0 ; } +if (dwc->pullups_connected == is_on) { +pm_runtime_put (dwc->dev); +return 0 ; + } +if (!is_on) { ret =dwc3_gadget_soft_disconnect (dwc); }else {
drivers/usb/dwc3/host.c +10 -0
@@ -11,8 +11,13 @@#include <linux/of.h> #include <linux/platform_device.h> +#include "../host/xhci-plat.h" #include "core.h" +static const struct xhci_plat_priv dwc3_xhci_plat_priv = { + .quirks =XHCI_SKIP_PHY_INIT , +}; +static void dwc3_host_fill_xhci_irq_res (struct dwc3 *dwc,int irq,char *name) {
@@ -92,6 +97,11 @@ int dwc3_host_init(struct dwc3 *dwc) goto err; } + ret =platform_device_add_data (xhci, &dwc3_xhci_plat_priv, +sizeof (dwc3_xhci_plat_priv)); +if (ret) + goto err; +memset (props,0 ,sizeof (struct property_entry ) *ARRAY_SIZE (props));if (dwc->usb3_lpm_capable)
drivers/usb/gadget/function/f_uac2.c +14 -2
@@ -291,6 +291,12 @@ static struct usb_endpoint_descriptor ss_ep_int_desc = { .bInterval = 4, }; +static struct usb_ss_ep_comp_descriptor ss_ep_int_desc_comp = { + .bLength =sizeof (ss_ep_int_desc_comp), + .bDescriptorType =USB_DT_SS_ENDPOINT_COMP , + .wBytesPerInterval =cpu_to_le16 (6 ), +}; +/* Audio Streaming OUT Interface - Alt0 */ static struct usb_interface_descriptor std_as_out_if0_desc = { .bLength =sizeof std_as_out_if0_desc,
@@ -604,7 +610,8 @@ static struct usb_descriptor_header *ss_audio_desc[] = { (struct usb_descriptor_header *)&in_feature_unit_desc, (struct usb_descriptor_header *)&io_out_ot_desc, - (struct usb_descriptor_header *)&ss_ep_int_desc, + (struct usb_descriptor_header *)&ss_ep_int_desc, + (struct usb_descriptor_header *)&ss_ep_int_desc_comp, (struct usb_descriptor_header *)&std_as_out_if0_desc, (struct usb_descriptor_header *)&std_as_out_if1_desc,
@@ -800,6 +807,7 @@ static void setup_headers(struct f_uac2_opts *opts,struct usb_ss_ep_comp_descriptor *epout_desc_comp =NULL ;struct usb_ss_ep_comp_descriptor *epin_desc_comp =NULL ;struct usb_ss_ep_comp_descriptor *epin_fback_desc_comp =NULL ; +struct usb_ss_ep_comp_descriptor *ep_int_desc_comp =NULL ;struct usb_endpoint_descriptor *epout_desc;struct usb_endpoint_descriptor *epin_desc;struct usb_endpoint_descriptor *epin_fback_desc;
@@ -827,6 +835,7 @@ static void setup_headers(struct f_uac2_opts *opts, epin_fback_desc = &ss_epin_fback_desc; epin_fback_desc_comp = &ss_epin_fback_desc_comp; ep_int_desc = &ss_ep_int_desc; + ep_int_desc_comp = &ss_ep_int_desc_comp; } i =0 ;
@@ -855,8 +864,11 @@ static void setup_headers(struct f_uac2_opts *opts,if (EPOUT_EN (opts)) headers[i++] =USBDHDR (&io_out_ot_desc); -if (FUOUT_EN (opts) ||FUIN_EN (opts)) +if (FUOUT_EN (opts) ||FUIN_EN (opts)) { headers[i++] =USBDHDR (ep_int_desc); +if (ep_int_desc_comp) + headers[i++] =USBDHDR (ep_int_desc_comp); + }if (EPOUT_EN (opts)) {
Lines of this file are not shown. View the raw message.
drivers/usb/gadget/function/storage_common.c +4 -2
Lines of this file are not shown. View the raw message.
drivers/usb/typec/altmodes/displayport.c +2 -2
Lines of this file are not shown. View the raw message.
drivers/usb/typec/ucsi/ucsi.c +24 -29
53 lines not on this page · raw message
include/linux/platform_data/x86/pmc_atom.h +4 -2
Lines of this file are not shown. View the raw message.
kernel/bpf/verifier.c +73 -39
112 lines not on this page · raw message
mm/slab_common.c +29 -16
45 lines not on this page · raw message
security/landlock/fs.c +25 -23
48 lines not on this page · raw message
sound/core/memalloc.c +71 -16
87 lines not on this page · raw message
sound/pci/hda/patch_realtek.c +56 -7
63 lines not on this page · raw message
tools/testing/selftests/landlock/fs_test.c +145 -10
155 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.