Linux 5.15.81
Greg Kroah-Hartman
maintainerI'm announcing the release of the 5.15.81 kernel.
All users of the 5.15 kernel series must upgrade.
The updated 5.15.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-5.15.y
and can be browsed at the normal kernel.org git web browser:
https://git.kernel.org/?p=linux/kernel/git/stable/linux-stable.git;a=summary
thanks,
greg k-h
------------
Makefile | 2 arch/arm/boot/dts/am335x-pcm-953.dtsi | 28 arch/arm/boot/dts/at91sam9g20ek_common.dtsi | 9 arch/arm/boot/dts/imx6q-prti6q.dts | 4 arch/arm/mach-mxs/mach-mxs.c | 4 arch/arm64/boot/dts/rockchip/rk3399-puma-haikou.dts | 2 arch/arm64/include/asm/syscall_wrapper.h | 2 arch/arm64/kvm/arm.c | 11 arch/mips/include/asm/fw/fw.h | 2 arch/mips/pic32/pic32mzda/early_console.c | 13 arch/mips/pic32/pic32mzda/init.c | 2 arch/nios2/boot/Makefile | 2 arch/riscv/boot/dts/sifive/hifive-unleashed-a00.dts | 38 arch/riscv/kernel/vdso/Makefile | 3 arch/riscv/kernel/vdso/vdso.lds.S | 2 arch/s390/kernel/crash_dump.c | 2 arch/x86/hyperv/hv_init.c | 54 arch/x86/include/asm/cpufeatures.h | 3 arch/x86/kernel/cpu/sgx/ioctl.c | 31 arch/x86/kernel/cpu/tsx.c | 38 arch/x86/kvm/svm/nested.c | 6 arch/x86/kvm/svm/svm.c | 16 arch/x86/kvm/vmx/nested.c | 3 arch/x86/kvm/x86.c | 18 arch/x86/mm/ioremap.c | 8 arch/x86/power/cpu.c | 23 block/bfq-cgroup.c | 4 drivers/android/binder_alloc.c | 7 drivers/ata/libata-scsi.c | 55 drivers/bus/intel-ixp4xx-eb.c | 9 drivers/bus/sunxi-rsb.c | 38 drivers/dma-buf/dma-heap.c | 28 drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_aldebaran.c | 1 drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c | 8 drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 37 drivers/gpu/drm/amd/display/dc/dce120/dce120_resource.c | 3 drivers/gpu/drm/amd/pm/powerplay/hwmgr/vega10_thermal.c | 25 drivers/gpu/drm/amd/pm/swsmu/smu11/sienna_cichlid_ppt.c | 4 drivers/gpu/drm/drm_dp_dual_mode_helper.c | 51 drivers/gpu/drm/drm_panel_orientation_quirks.c | 6 drivers/gpu/drm/i915/gt/intel_gt.c | 4 drivers/gpu/drm/tegra/drm.c | 4 drivers/gpu/host1x/dev.c | 4 drivers/hv/channel_mgmt.c | 6 drivers/hv/vmbus_drv.c | 1 drivers/iio/industrialio-sw-trigger.c | 6 drivers/iio/light/apds9960.c | 12 drivers/iio/pressure/ms5611.h | 18 drivers/iio/pressure/ms5611_core.c | 56 drivers/iio/pressure/ms5611_i2c.c | 11 drivers/iio/pressure/ms5611_spi.c | 17 drivers/input/misc/soc_button_array.c | 14 drivers/input/mouse/synaptics.c | 1 drivers/input/serio/i8042-x86ia64io.h | 8 drivers/input/touchscreen/goodix.c | 11 drivers/irqchip/irq-gic-v3-its.c | 2 drivers/md/dm-integrity.c | 20 drivers/mmc/host/sdhci-brcmstb.c | 68 drivers/net/arcnet/com20020_cs.c | 11 drivers/net/dsa/sja1105/sja1105_mdio.c | 6 drivers/net/ethernet/broadcom/bnx2x/bnx2x_sriov.c | 12 drivers/net/ethernet/cavium/liquidio/lio_main.c | 4 drivers/net/ethernet/cavium/thunder/thunder_bgx.c | 4 drivers/net/ethernet/freescale/enetc/enetc.c | 32 drivers/net/ethernet/freescale/enetc/enetc.h | 10 drivers/net/ethernet/freescale/enetc/enetc_pf.c | 6 drivers/net/ethernet/freescale/enetc/enetc_qos.c | 83 drivers/net/ethernet/intel/iavf/iavf_main.c | 33 drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c | 8 drivers/net/ethernet/marvell/octeontx2/af/rvu_debugfs.c | 3 drivers/net/ethernet/marvell/octeontx2/af/rvu_nix.c | 2 drivers/net/ethernet/marvell/octeontx2/af/rvu_sdp.c | 7 drivers/net/ethernet/mediatek/mtk_eth_soc.c | 4 drivers/net/ethernet/mellanox/mlx4/qp.c | 3 drivers/net/ethernet/mellanox/mlx5/core/cmd.c | 6 drivers/net/ethernet/mellanox/mlx5/core/diag/fw_tracer.c | 2 drivers/net/ethernet/mellanox/mlx5/core/main.c | 9 drivers/net/ethernet/microchip/sparx5/sparx5_netdev.c | 14 drivers/net/ethernet/netronome/nfp/nfp_devlink.c | 2 drivers/net/ethernet/netronome/nfp/nfp_net_ethtool.c | 3 drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c | 6 drivers/net/ethernet/qlogic/qla3xxx.c | 1 drivers/net/ethernet/sfc/ef100_netdev.c | 1 drivers/net/macsec.c | 28 drivers/net/usb/qmi_wwan.c | 1 drivers/net/wireless/ath/ath11k/qmi.h | 2 drivers/net/wireless/cisco/airo.c | 18 drivers/net/wireless/mac80211_hwsim.c | 5 drivers/net/wireless/microchip/wilc1000/cfg80211.c | 40 drivers/net/wireless/microchip/wilc1000/hif.c | 21 drivers/net/wwan/iosm/iosm_ipc_pcie.c | 2 drivers/nfc/st-nci/se.c | 49 drivers/nvme/host/pci.c | 18 drivers/nvme/target/configfs.c | 7 drivers/platform/x86/acer-wmi.c | 9 drivers/platform/x86/asus-wmi.c | 2 drivers/platform/x86/hp-wmi.c | 3 drivers/platform/x86/ideapad-laptop.c | 42 drivers/platform/x86/intel/hid.c | 3 drivers/platform/x86/intel/pmt/class.c | 31 drivers/platform/x86/touchscreen_dmi.c | 25 drivers/regulator/core.c | 8 drivers/regulator/twl6030-regulator.c | 2 drivers/s390/block/dasd_eckd.c | 6 drivers/scsi/ibmvscsi/ibmvfc.c | 14 drivers/scsi/scsi_debug.c | 7 drivers/scsi/scsi_transport_iscsi.c | 31 drivers/scsi/storvsc_drv.c | 69 drivers/spi/spi-dw-dma.c | 3 drivers/spi/spi-stm32.c | 2 drivers/tee/optee/device.c | 2 drivers/tty/serial/8250/8250_core.c | 1 drivers/tty/serial/8250/8250_omap.c | 7 drivers/tty/serial/fsl_lpuart.c | 82 drivers/usb/cdns3/cdnsp-gadget.c | 12 drivers/usb/cdns3/cdnsp-ring.c | 17 drivers/usb/dwc3/dwc3-exynos.c | 11 drivers/usb/dwc3/gadget.c | 22 drivers/xen/platform-pci.c | 7 drivers/xen/xen-pciback/conf_space_capability.c | 9 fs/btrfs/ioctl.c | 7 fs/btrfs/sysfs.c | 7 fs/btrfs/zoned.c | 9 fs/ceph/caps.c | 50 fs/ceph/snap.c | 31 fs/cifs/cifs_dfs_ref.c | 59 fs/cifs/cifs_fs_sb.h | 5 fs/cifs/cifsglob.h | 24 fs/cifs/cifsproto.h | 5 fs/cifs/connect.c | 1359 +++++++-------- fs/cifs/dfs_cache.c | 44 fs/cifs/misc.c | 62 fs/cifs/smb2ops.c | 10 fs/cifs/smb2pdu.c | 6 fs/ext4/extents.c | 18 fs/fs-writeback.c | 30 fs/fuse/file.c | 37 fs/nilfs2/sufile.c | 8 fs/zonefs/super.c | 37 include/linux/serial_core.h | 1 include/trace/events/rxrpc.h | 2 include/uapi/linux/audit.h | 2 init/Kconfig | 2 kernel/gcov/clang.c | 2 kernel/irq/manage.c | 31 kernel/irq/msi.c | 7 lib/vdso/Makefile | 2 mm/vmscan.c | 10 net/9p/trans_fd.c | 2 net/core/flow_dissector.c | 2 net/dccp/ipv4.c | 2 net/dccp/ipv6.c | 2 net/ipv4/Kconfig | 10 net/ipv4/esp4_offload.c | 3 net/ipv4/fib_trie.c | 4 net/ipv4/inet_hashtables.c | 10 net/ipv4/ip_input.c | 5 net/ipv4/netfilter/ipt_CLUSTERIP.c | 4 net/ipv4/tcp_ipv4.c | 2 net/ipv6/esp6_offload.c | 3 net/ipv6/tcp_ipv6.c | 2 net/ipv6/xfrm6_policy.c | 6 net/key/af_key.c | 34 net/mac80211/main.c | 8 net/mac80211/mesh_pathtbl.c | 2 net/netfilter/ipset/ip_set_hash_gen.h | 2 net/netfilter/ipset/ip_set_hash_ip.c | 8 net/netfilter/nf_conntrack_core.c | 2 net/netfilter/nf_conntrack_netlink.c | 24 net/netfilter/nf_conntrack_standalone.c | 2 net/netfilter/nf_flow_table_offload.c | 4 net/netfilter/nf_tables_api.c | 6 net/netfilter/nft_ct.c | 6 net/netfilter/xt_connmark.c | 18 net/nfc/nci/core.c | 2 net/nfc/nci/data.c | 4 net/openvswitch/conntrack.c | 8 net/rxrpc/af_rxrpc.c | 2 net/rxrpc/ar-internal.h | 24 net/rxrpc/call_accept.c | 4 net/rxrpc/call_object.c | 44 net/rxrpc/conn_client.c | 66 net/rxrpc/conn_object.c | 49 net/rxrpc/conn_service.c | 8 net/rxrpc/input.c | 4 net/rxrpc/local_object.c | 68 net/rxrpc/net_ns.c | 5 net/rxrpc/peer_object.c | 40 net/rxrpc/proc.c | 75 net/rxrpc/skbuff.c | 1 net/sched/Kconfig | 2 net/sched/act_connmark.c | 4 net/sched/act_ct.c | 8 net/sched/act_ctinfo.c | 6 net/sctp/outqueue.c | 13 net/tipc/discover.c | 5 net/tipc/topsrv.c | 20 net/xfrm/xfrm_device.c | 15 net/xfrm/xfrm_replay.c | 2 sound/soc/codecs/hdac_hda.h | 4 sound/soc/codecs/max98373-i2c.c | 4 sound/soc/codecs/sgtl5000.c | 1 sound/soc/fsl/fsl_asrc.c | 2 sound/soc/fsl/fsl_esai.c | 2 sound/soc/fsl/fsl_sai.c | 55 sound/soc/intel/boards/bytcht_es8316.c | 7 sound/soc/soc-pcm.c | 5 sound/soc/stm/stm32_adfsdm.c | 11 sound/usb/endpoint.c | 3 sound/usb/quirks.c | 2 sound/usb/usbaudio.h | 3 tools/iio/iio_generic_buffer.c | 4 tools/testing/selftests/bpf/verifier/ref_tracking.c | 36 tools/testing/selftests/net/mptcp/mptcp_connect.c | 72 tools/testing/selftests/net/mptcp/simult_flows.sh | 37 215 files changed, 2708 insertions(+), 1814 deletions(-)
Ai Chao (1):
ALSA: usb-audio: add quirk to fix Hamedal C20 disconnect issue
Al Cooper (2):
mmc: sdhci-brcmstb: Re-organize flags
mmc: sdhci-brcmstb: Enable Clock Gating to save power
Alejandro Concepción Rodríguez (1):
iio: light: apds9960: fix wrong register for gesture gain
Aleksandr Miloserdov (1):
nvmet: fix memory leak in nvmet_subsys_attr_model_store_locked
Alexandre Belloni (1):
init/Kconfig: fix CC_HAS_ASM_GOTO_TIED_OUTPUT test with dash
Aman Dhoot (1):
Input: synaptics - switch touchpad on HP Laptop 15-da3001TU to RMI mode
Anand Jain (2):
btrfs: free btrfs_path before copying fspath to userspace
btrfs: free btrfs_path before copying subvol info to userspace
Andreas Kemnade (1):
regulator: twl6030: re-add TWL6032_SUBCLASS
Andrzej Hajda (1):
drm/i915: fix TLB invalidation for Gen12 video and compute engines
Arnav Rawat (1):
platform/x86: ideapad-laptop: Fix interrupt storm on fn-lock toggle on some Yoga laptops
Asher Song (1):
Revert "drm/amdgpu: Revert "drm/amdgpu: getting fan speed pwm for vega10 properly""
Baokun Li (1):
ext4: fix use-after-free in ext4_ext_shift_extents
Bart Van Assche (1):
scsi: scsi_debug: Make the READ CAPACITY response compliant with ZBC
Bean Huo (1):
nvme-pci: add NVME_QUIRK_BOGUS_NID for Micron Nitro
Borys Popławski (1):
x86/sgx: Add overflow check in sgx_validate_offset_length()
Brian King (1):
scsi: ibmvfc: Avoid path failures during live migration
Brian Norris (1):
mmc: sdhci-brcmstb: Fix SDHCI_RESET_ALL for CQHCI
Carlos Llamas (1):
binder: validate alloc->mm in ->mmap() handler
Chen Zhongjin (3):
xfrm: Fix ignored return value in xfrm6_init()
iio: core: Fix entry not deleted when iio_register_sw_trigger_type() fails
nilfs2: fix nilfs_sufile_mark_dirty() not set segment usage as dirty
Christian König (1):
drm/amdgpu: always register an MMU notifier for userptr
Christian Langrock (1):
xfrm: replay: Fix ESN wrap around for GSO
Christoph Hellwig (3):
nvme-pci: disable namespace identifiers for the MAXIO MAP1001
btrfs: zoned: fix missing endianness conversion in sb_write_pointer
btrfs: use kvcalloc in btrfs_get_dev_zone_info
Damien Le Moal (1):
zonefs: fix zone report size in __zonefs_io_error()
Daniel Xu (1):
netfilter: conntrack: Fix data-races around ct mark
David E. Box (1):
platform/x86/intel/pmt: Sapphire Rapids PMT errata fix
David Howells (3):
rxrpc: Allow list of in-use local UDP endpoints to be viewed in /proc
rxrpc: Use refcount_t rather than atomic_t
rxrpc: Fix race between conn bundle lookup and bundle removal [ZDI-CAN-15975]
Dawei Li (1):
dma-buf: fix racing conflict of dma_heap_add()
Detlev Casanova (1):
ASoC: sgtl5000: Reset the CHIP_CLK_CTRL reg on remove
Diana Wang (1):
nfp: fill splittable of devlink_port_attrs correctly
Dominik Haller (1):
ARM: dts: am335x-pcm-953: Define fixed regulators in root node
Emil Renner Berthing (1):
riscv: dts: sifive unleashed: Add PWM controlled LEDs
Enrico Sau (1):
net: usb: qmi_wwan: add Telit 0x103a composition
Eyal Birger (1):
xfrm: fix "disable_policy" on ipv4 early demux
Fabio Estevam (1):
ARM: dts: imx6q-prti6q: Fix ref/tcxo-clock-frequency properties
Felix Fietkau (1):
netfilter: flowtable_offload: add missing locking
Gaosheng Cui (1):
audit: fix undefined behavior in bit shift for AUDIT_BIT
Gleb Mazovetskiy (1):
tcp: configurable source port perturb table size
Greg Kroah-Hartman (2):
lib/vdso: use "grep -E" instead of "egrep"
Linux 5.15.81
Guchun Chen (1):
drm/amdgpu: disable BACO support on more cards
Hans de Goede (7):
platform/x86: touchscreen_dmi: Add info for the RCA Cambio W101 v2 2-in-1
drm: panel-orientation-quirks: Add quirk for Acer Switch V 10 (SW5-017)
ASoC: Intel: bytcht_es8316: Add quirk for the Nanote UMPC-01
Input: goodix - try resetting the controller when no config is set
Input: soc_button_array - add use_low_level_irq module parameter
Input: soc_button_array - add Acer Switch V 10 to dmi_use_low_level_irq[] platform/x86: acer-wmi: Enable SW_TABLET_MODE on Switch V 10 (SW5-017)
Heiko Carstens (1):
s390/crashdump: fix TOD programmable field size
Herbert Xu (1):
af_key: Fix send_acquire race with pfkey_register
Hui Tang (1):
net: mvpp2: fix possible invalid pointer dereference
Ilpo Järvinen (2):
serial: Add rs485_supported to uart_port
serial: fsl_lpuart: Fill in rs485_supported
Ivan Hu (1):
platform/x86/intel/hid: Add some ACPI device IDs
Ivan Vecera (2):
iavf: Fix a crash during reset task
iavf: Do not restart Tx queues after reset task failure
Jaco Coetzee (1):
nfp: add port from netdev validation for EEPROM access
Jakob Unterwurzacher (1):
arm64: dts: rockchip: lower rk3399-puma-haikou SD controller clock frequency
Jason A. Donenfeld (2):
wifi: airo: do not assign -1 to unsigned char
MIPS: pic32: treat port as signed integer
Jiasheng Jiang (2):
ASoC: max98373: Add checks for devm_kcalloc
octeontx2-pf: Add check for devm_kcalloc
Johannes Weiner (1):
mm: vmscan: fix extreme overreclaim and swap floods
Jonas Jelonek (1):
wifi: mac80211_hwsim: fix debugfs attribute ps with rc table support
Josef Bacik (1):
btrfs: free btrfs_path before copying root refs to userspace
Jozsef Kadlecsik (1):
netfilter: ipset: restore allowing 64 clashing elements in hash:net,iface
Junxiao Chang (1):
ASoC: hdac_hda: fix hda pcm buffer overflow issue
Kai-Heng Feng (1):
platform/x86: hp-wmi: Ignore Smart Experience App event
Kenneth Lee (1):
ceph: Use kcalloc for allocating multiple elements
Kuniyuki Iwashima (2):
arm64/syscall: Include asm/ptrace.h in syscall_wrapper header. dccp/tcp: Reset saddr on failure after inet6?_hash_connect().
Lars-Peter Clausen (1):
iio: ms5611: Simplify IO callback parameters
Leo Savernik (1):
nvme: add a bogus subsystem NQN quirk for Micron MTFDKBA2T0TFH
Leon Romanovsky (1):
net: liquidio: simplify if expression
Lin Ma (1):
nfc/nci: fix race with opening and closing
Linus Walleij (1):
bus: ixp4xx: Don't touch bit 7 on IXP42x
Liu Jian (2):
net: ethernet: mtk_eth_soc: fix error handling in mtk_open()
net: sparx5: fix error handling in sparx5_port_open()
Liu Shixin (1):
NFC: nci: fix memory leak in nci_rx_data_packet()
Luiz Capitulino (4):
genirq/msi: Shutdown managed interrupts with unsatifiable affinities
genirq: Always limit the affinity to online CPUs irqchip/gic-v3: Always trust the managed affinity provided by the core code
genirq: Take the proposed affinity at face value if force==true
Lukas Wunner (1):
serial: 8250: 8250_omap: Avoid RS485 RTS glitch on ->set_termios()
Lyude Paul (1):
drm/amd/dc/dce120: Fix audio register mapping, stop triggering KASAN
Maarten Zanders (1):
ASoC: fsl_asrc fsl_esai fsl_sai: allow CONFIG_PM=N
Manyi Li (1):
platform/x86: ideapad-laptop: Disable touchpad_switch
Marc Zyngier (1):
KVM: arm64: pkvm: Fixup boot mode to reflect that the kernel resumes from EL1
Marco Felsch (1):
ASoC: fsl_sai: use local device pointer
Marek Marczykowski-Górecki (1):
xen-pciback: Allow setting PCI_MSIX_FLAGS_MASKALL too
Marek Szyprowski (1):
usb: dwc3: exynos: Fix remove() function
Martin Faltesek (3):
nfc: st-nci: fix incorrect validating logic in EVT_TRANSACTION
nfc: st-nci: fix memory leaks in EVT_TRANSACTION
nfc: st-nci: fix incorrect sizing calculations in EVT_TRANSACTION
Matthieu Baerts (1):
selftests: mptcp: fix mibit vs mbit mix up
Matti Vaittinen (1):
tools: iio: iio_generic_buffer: Fix read size
Maxim Levitsky (5):
KVM: x86: nSVM: leave nested mode on vCPU free
KVM: x86: forcibly leave nested mode on vCPU reset
KVM: x86: nSVM: harden svm_free_nested against freeing vmcb02 while still in use
KVM: x86: add kvm_leave_nested
KVM: x86: remove exit_int_info warning in svm_handle_exit
Michael Grzeschik (2):
ARM: dts: at91: sam9g20ek: enable udc vbus gpio pinctrl
usb: dwc3: gadget: conditionally remove requests
Michael Kelley (2):
scsi: storvsc: Fix handling of srb_status and capacity change events x86/ioremap: Fix page aligned size calculation in __ioremap_caller()
Miklos Szeredi (1):
fuse: lock inode unconditionally in fuse_fallocate()
Mikulas Patocka (2):
dm integrity: flush the journal on suspend
dm integrity: clear the journal on suspend
Mitja Spes (1):
iio: pressure: ms5611: fixed value compensation bug
Moshe Shemesh (2):
net/mlx5: Fix FW tracer timestamp calculation
net/mlx5: Fix handling of entry refcount when command is not issued to FW
Mukesh Ojha (1):
gcov: clang: fix the buffer overflow issue
Nathan Chancellor (1):
RISC-V: vdso: Do not add missing symbols to version section in linker script
Nicolas Cavallari (1):
wifi: mac80211: Fix ack frame idr leak when mesh has no route
Niklas Cassel (1):
ata: libata-core: do not issue non-internal commands once EH is pending
Olivier Moysan (1):
ASoC: stm32: dfsdm: manage cb buffers cleanup
Pablo Neira Ayuso (1):
netfilter: nf_tables: do not set up extensions for end interval
Paolo Abeni (1):
selftests: mptcp: more stable simult_flows tests
Paulo Alcantara (4):
cifs: introduce new helper for cifs_reconnect()
cifs: split out dfs code from cifs_reconnect()
cifs: support nested dfs links over reconnect
cifs: fix missed refcounting of ipc tcon
Pawan Gupta (2):
x86/tsx: Add a feature bit for TSX control MSR support x86/pm: Add enumeration check before spec MSRs save/restore setup
Pawel Laszczak (2):
usb: cdnsp: Fix issue with Clear Feature Halt Endpoint
usb: cdnsp: fix issue with ZLP - added TD_SIZE = 1
Peter Kosyh (1):
net/mlx4: Check retval of mlx4_bitmap_init
Phil Turnbull (4):
wifi: wilc1000: validate pairwise and authentication suite offsets
wifi: wilc1000: validate length of IEEE80211_P2P_ATTR_OPER_CHANNEL attribute
wifi: wilc1000: validate length of IEEE80211_P2P_ATTR_CHANNEL_LIST attribute
wifi: wilc1000: validate number of channels
Ramesh Errabolu (1):
drm/amdgpu: Enable Aldebaran devices to report CU Occupancy
Randy Dunlap (1):
nios2: add FORCE for vmlinuz.gz
Reinette Chatre (1):
x86/sgx: Create utility to validate user provided offset and length
Richard Fitzgerald (1):
ASoC: soc-pcm: Don't zero TDM masks in __soc_pcm_open()
Robin Murphy (1):
gpu: host1x: Avoid trying to use GART on Tegra20
Roy Novich (1):
net/mlx5: Do not query pci info while pci disabled
Sabrina Dubroca (1):
Revert "net: macsec: report real_dev features when HW offloading is enabled"
Samuel Holland (2):
bus: sunxi-rsb: Remove the shutdown callback
bus: sunxi-rsb: Support atomic transfers
Sean Nyekjaer (1):
spi: stm32: fix stm32_spi_prepare_mbr() that halves spi clk for every run
Sherry Sun (1):
tty: serial: fsl_lpuart: don't break the on-going transfer when global reset
Simon Rettberg (1):
drm/display: Don't assume dual mode adaptors support i2c sub-addressing
Slawomir Laba (1):
iavf: Fix race condition between iavf_shutdown and iavf_remove
Stefan Haberland (1):
s390/dasd: fix no record found for raw_track_access
Svyatoslav Feldsherov (1):
fs: do not update freeing inode i_io_list
Takashi Iwai (1):
Input: i8042 - apply probe defer to more ASUS ZenBook models
Thinh Nguyen (2):
usb: dwc3: gadget: Return -ESHUTDOWN on ep disable
usb: dwc3: gadget: Clear ep descriptor last
Thomas Jarosch (1):
xfrm: Fix oops in __xfrm_state_delete()
Tiago Dias Ferreira (1):
nvme-pci: add NVME_QUIRK_BOGUS_NID for Netac NV7000
Tsung-hua Lin (1):
drm/amd/display: No display after resume from WB/CB
Tyler J. Stachecki (1):
wifi: ath11k: Fix QCN9074 firmware boot on x86
Vishwanath Pai (1):
netfilter: ipset: regression in ip_set_hash_ip.c
Vitaly Kuznetsov (1):
x86/hyperv: Restore VP assist page after cpu offlining/onlining
Vladimir Oltean (4):
net: dsa: sja1105: disallow C45 transactions on the BASE-TX MDIO bus
net: enetc: manage ENETC_F_QBV in priv->active_offloads only when enabled
net: enetc: cache accesses to &priv->si->hw
net: enetc: preserve TX ring priority across reconfiguration
Wang Hai (2):
net: pch_gbe: fix potential memleak in pch_gbe_tx_queue()
arcnet: fix potential memory leak in com20020_probe()
Wang ShaoBo (1):
net: wwan: iosm: use ACPI_FREE() but not kfree() in ipc_pcie_read_bios_cfg()
Wenchao Hao (1):
ata: libata-scsi: simplify __ata_scsi_queuecmd()
Xander Li (1):
nvme-pci: disable write zeroes on various Kingston SSD
Xin Long (5):
sctp: remove the unnecessary sinfo_stream check in sctp_prsctp_prune_unsent
sctp: clear out_curr if all frag chunks of current msg are pruned
tipc: set con sock in tipc_conn_alloc
tipc: add an extra conn_get in tipc_conn_alloc
net: sched: allow act_ct to be built without NF_NAT
Xiongfeng Wang (3):
spi: dw-dma: decrease reference count in dw_spi_dma_init_mfld()
octeontx2-af: Fix reference count issue in rvu_sdp_init() platform/x86: asus-wmi: add missing pci_dev_put() in asus_wmi_set_xusb2pr()
Xiubo Li (3):
ceph: do not update snapshot context when there is no new snapshot
ceph: avoid putting the realm twice when decoding snaps fails
ceph: fix NULL pointer dereference for req->r_session
Yang Yingliang (7):
regulator: core: fix UAF in destroy_regulator()
tee: optee: fix possible memory leak in optee_register_device()
octeontx2-af: debugsfs: fix pci device refcount leak
net: pch_gbe: fix pci device refcount leak while module exiting
Drivers: hv: vmbus: fix double free in the error path of vmbus_add_channel_work()
Drivers: hv: vmbus: fix possible memory leak in vmbus_device_register()
bnx2x: fix pci device refcount leak in bnx2x_vf_is_pcie_pending()
Youlin Li (1):
selftests/bpf: Add verifier test for release_reference()
Yu Kuai (1):
block, bfq: fix null pointer dereference in bfq_bio_bfqg()
Yu Liao (1):
net: thunderx: Fix the ACPI memory leak
YueHaibing (2):
macsec: Fix invalid error code set
tipc: check skb_linearize() return value in tipc_disc_rcv()
Zeng Heng (1):
regulator: core: fix kobject release warning and memory leak in regulator_register()
Zhang Changzhong (2):
net/qla3xxx: fix potential memleak in ql3xxx_send()
sfc: fix potential memleak in __ef100_hard_start_xmit()
Zhang Xiaoxu (1):
cifs: Fix connections leak when tlink setup failed
Zhen Lei (1):
btrfs: sysfs: normalize the error handling branch in btrfs_init_sysfs()
Zheng Yongjun (1):
ARM: mxs: fix memory leak in mxs_machine_init()
Zhengchao Shao (1):
9p/fd: fix issue of list_del corruption in p9_fd_cancel()
Zhou Guanghui (1):
scsi: iscsi: Fix possible memory leak when device_register() failed
Ziyang Xuan (1):
ipv4: Fix error return code in fib_table_insert()
ruanjinjie (1):
xen/platform-pci: add missing free_irq() in error path
taozhang (1):
wifi: mac80211: fix memory free error when registering wiphy fail
Greg Kroah-Hartman
maintainerMakefile +1 -1
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 5 PATCHLEVEL = 15 -SUBLEVEL = 80 +SUBLEVEL = 81 EXTRAVERSION = NAME = Trick or Treat
arch/arm/boot/dts/am335x-pcm-953.dtsi +13 -15
@@ -12,22 +12,20 @@ / { compatible = "phytec,am335x-pcm-953", "phytec,am335x-phycore-som", "ti,am33xx"; /* Power */ - regulators { - vcc3v3: fixedregulator@1 { - compatible = "regulator-fixed"; - regulator-name = "vcc3v3"; - regulator-min-microvolt = <3300000>; - regulator-max-microvolt = <3300000>; - regulator-boot-on; - }; + vcc3v3: fixedregulator1 { + compatible = "regulator-fixed"; + regulator-name = "vcc3v3"; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + regulator-boot-on; + }; - vcc1v8: fixedregulator@2 { - compatible = "regulator-fixed"; - regulator-name = "vcc1v8"; - regulator-min-microvolt = <1800000>; - regulator-max-microvolt = <1800000>; - regulator-boot-on; - }; + vcc1v8: fixedregulator2 { + compatible = "regulator-fixed"; + regulator-name = "vcc1v8"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + regulator-boot-on; }; /* User IO */
arch/arm/boot/dts/at91sam9g20ek_common.dtsi +9 -0
@@ -39,6 +39,13 @@ pinctrl_pck0_as_mck: pck0_as_mck { }; + usb1 { + pinctrl_usb1_vbus_gpio: usb1_vbus_gpio { + atmel,pins = + <AT91_PIOC 5 AT91_PERIPH_GPIO AT91_PINCTRL_DEGLITCH>; /* PC5 GPIO */ + }; + }; + mmc0_slot1 { pinctrl_board_mmc0_slot1: mmc0_slot1-board { atmel,pins =
@@ -84,6 +91,8 @@ macb0: ethernet@fffc4000 { }; usb1: gadget@fffa4000 { + pinctrl-0 = <&pinctrl_usb1_vbus_gpio>; + pinctrl-names = "default"; atmel,vbus-gpio = <&pioC 5 GPIO_ACTIVE_HIGH>; status = "okay"; };
arch/arm/boot/dts/imx6q-prti6q.dts +2 -2
@@ -364,8 +364,8 @@ wifi { pinctrl-names = "default"; pinctrl-0 = <&pinctrl_wifi>; interrupts-extended = <&gpio1 30 IRQ_TYPE_LEVEL_HIGH>; - ref-clock-frequency = "38400000"; - tcxo-clock-frequency = "19200000"; + ref-clock-frequency = <38400000>; + tcxo-clock-frequency = <19200000>; }; };
arch/arm/mach-mxs/mach-mxs.c +3 -1
@@ -393,8 +393,10 @@ static void __init mxs_machine_init(void) root =of_find_node_by_path ("/" ); ret =of_property_read_string (root,"model" , &soc_dev_attr->machine); -if (ret) +if (ret) { +kfree (soc_dev_attr);return ; + } soc_dev_attr->family ="Freescale MXS Family" ; soc_dev_attr->soc_id =mxs_get_soc_id ();
arch/arm64/boot/dts/rockchip/rk3399-puma-haikou.dts +1 -1
@@ -207,7 +207,7 @@ &sdmmc { cap-sd-highspeed; cd-gpios = <&gpio0 RK_PA7 GPIO_ACTIVE_LOW>; disable-wp; - max-frequency = <150000000>; + max-frequency = <40000000>; pinctrl-names = "default"; pinctrl-0 = <&sdmmc_clk &sdmmc_cmd &sdmmc_cd &sdmmc_bus4>; vmmc-supply = <&vcc3v3_baseboard>;
arch/arm64/include/asm/syscall_wrapper.h +1 -1
@@ -8,7 +8,7 @@#ifndef __ASM_SYSCALL_WRAPPER_H#define __ASM_SYSCALL_WRAPPER_H -struct pt_regs ; +#include <asm/ptrace.h> #define SC_ARM64_REGS_TO_ARGS (x, ...) \ __MAP(x,__SC_ARGS \
arch/arm64/kvm/arm.c +11 -0
@@ -2000,6 +2000,17 @@ static int pkvm_drop_host_privileges(void)* once the host stage 2 is installed. */ static_branch_enable (&kvm_protected_mode_initialized); + +/* +* Fixup the boot mode so that we don't take spurious round +* trips via EL2 on cpu_resume. Flush to the PoC for a good +* measure, so that it can be observed by a CPU coming out of +* suspend with the MMU off. +*/ + __boot_cpu_mode[0 ] = __boot_cpu_mode[1 ] =BOOT_CPU_MODE_EL1 ; +dcache_clean_poc ((unsigned long )__boot_cpu_mode, + (unsigned long )(__boot_cpu_mode +2 )); +on_each_cpu (_kvm_host_prot_finalize, &ret,1 );return ret; }
arch/mips/include/asm/fw/fw.h +1 -1
@@ -26,6 +26,6 @@ extern char *fw_getcmdline(void);extern void fw_meminit (void );extern char *fw_getenv (char *name);extern unsigned long fw_getenvl (char *name); -extern void fw_init_early_console (char port); +extern void fw_init_early_console (void );#endif /* __ASM_FW_H_ */
arch/mips/pic32/pic32mzda/early_console.c +6 -7
@@ -27,7 +27,7 @@#define U_BRG (x) (UART_BASE(x) + 0x40)static void __iomem *uart_base; -static char console_port =-1 ; +static int console_port =-1 ;static int __init configure_uart_pins (int port) {
@@ -47,7 +47,7 @@ static int __init configure_uart_pins(int port)return 0 ; } -static void __init configure_uart (char port,int baud) +static void __init configure_uart (int port,int baud) {u32 pbclk;
@@ -60,7 +60,7 @@ static void __init configure_uart(char port, int baud) uart_base + PIC32_SET(U_STA(port))); } -static void __init setup_early_console (char port,int baud) +static void __init setup_early_console (int port,int baud) {if (configure_uart_pins (port))return ;
@@ -130,16 +130,15 @@ static int __init get_baud_from_cmdline(char *arch_cmdline)return baud; } -void __init fw_init_early_console (char port) +void __init fw_init_early_console (void ) {char *arch_cmdline =pic32_getcmdline (); -int baud =-1 ; +int baud, port; uart_base =ioremap (PIC32_BASE_UART ,0xc00 ); baud =get_baud_from_cmdline (arch_cmdline); -if (port ==-1 ) - port =get_port_from_cmdline (arch_cmdline); + port =get_port_from_cmdline (arch_cmdline);if (port ==-1 ) port =EARLY_CONSOLE_PORT ;
arch/mips/pic32/pic32mzda/init.c +1 -1
@@ -47,7 +47,7 @@ void __init plat_mem_setup(void)strlcpy (arcs_cmdline, boot_command_line,COMMAND_LINE_SIZE );#ifdef CONFIG_EARLY_PRINTK -fw_init_early_console (-1 ); +fw_init_early_console ();#endif pic32_config_init (); }
arch/nios2/boot/Makefile +1 -1
@@ -20,7 +20,7 @@ $(obj)/vmlinux.bin: vmlinux FORCE $(obj)/vmlinux.gz: $(obj)/vmlinux.bin FORCE $(call if_changed,gzip) -$(obj)/vmImage: $(obj)/vmlinux.gz +$(obj)/vmImage: $(obj)/vmlinux.gz FORCE $(call if_changed,uimage) @$(kecho) 'Kernel: $@ is ready'
arch/riscv/boot/dts/sifive/hifive-unleashed-a00.dts +38 -0
@@ -3,6 +3,8 @@ #include "fu540-c000.dtsi" #include <dt-bindings/gpio/gpio.h> +#include <dt-bindings/leds/common.h> +#include <dt-bindings/pwm/pwm.h> /* Clock frequency (in Hz) of the PCB crystal for rtcclk */ #define RTCCLK_FREQ 1000000
@@ -46,6 +48,42 @@ gpio-restart { compatible = "gpio-restart"; gpios = <&gpio 10 GPIO_ACTIVE_LOW>; }; + + led-controller { + compatible = "pwm-leds"; + + led-d1 { + pwms = <&pwm0 0 7812500 PWM_POLARITY_INVERTED>; + active-low; + color = <LED_COLOR_ID_GREEN>; + max-brightness = <255>; + label = "d1"; + }; + + led-d2 { + pwms = <&pwm0 1 7812500 PWM_POLARITY_INVERTED>; + active-low; + color = <LED_COLOR_ID_GREEN>; + max-brightness = <255>; + label = "d2"; + }; + + led-d3 { + pwms = <&pwm0 2 7812500 PWM_POLARITY_INVERTED>; + active-low; + color = <LED_COLOR_ID_GREEN>; + max-brightness = <255>; + label = "d3"; + }; + + led-d4 { + pwms = <&pwm0 3 7812500 PWM_POLARITY_INVERTED>; + active-low; + color = <LED_COLOR_ID_GREEN>; + max-brightness = <255>; + label = "d4"; + }; + }; }; &uart0 {
arch/riscv/kernel/vdso/Makefile +3 -0
@@ -28,6 +28,9 @@ obj-vdso := $(addprefix $(obj)/, $(obj-vdso)) obj-y += vdso.o CPPFLAGS_vdso.lds += -P -C -U$(ARCH) +ifneq ($(filter vgettimeofday, $(vdso-syms)),) +CPPFLAGS_vdso.lds += -DHAS_VGETTIMEOFDAY +endif # Disable -pg to prevent insert call site CFLAGS_REMOVE_vgettimeofday.o = $(CC_FLAGS_FTRACE)
arch/riscv/kernel/vdso/vdso.lds.S +2 -0
@@ -65,9 +65,11 @@ VERSION LINUX_4.15 { global: __vdso_rt_sigreturn; +#ifdef HAS_VGETTIMEOFDAY __vdso_gettimeofday; __vdso_clock_gettime; __vdso_clock_getres; +#endif __vdso_getcpu; __vdso_flush_icache; local: *;
arch/s390/kernel/crash_dump.c +1 -1
@@ -44,7 +44,7 @@ struct save_area {u64 fprs[16 ];u32 fpc;u32 prefix; -u64 todpreg; +u32 todpreg;u64 timer;u64 todcmp;u64 vxrs_low[16 ];
arch/x86/hyperv/hv_init.c +26 -28
67 lines not on this page · raw message
arch/x86/include/asm/cpufeatures.h +3 -0
@@ -303,6 +303,9 @@#define X86_FEATURE_USE_IBPB_FW (11*32+16)/* "" Use IBPB during runtime firmware calls */ #define X86_FEATURE_RSB_VMEXIT_LITE (11*32+17)/* "" Fill RSB on VM exit when EIBRS is enabled */ + +#define X86_FEATURE_MSR_TSX_CTRL (11*32+20)/* "" MSR IA32_TSX_CTRL (Intel) implemented */ +/* Intel-defined CPU features, CPUID level 0x00000007:1 (EAX), word 12 */ #define X86_FEATURE_AVX_VNNI (12*32+ 4)/* AVX VNNI instructions */ #define X86_FEATURE_AVX512_BF16 (12*32+ 5)/* AVX512 BFLOAT16 instructions */
arch/x86/kernel/cpu/sgx/ioctl.c +25 -6
@@ -372,6 +372,29 @@ static int sgx_encl_add_page(struct sgx_encl *encl, unsigned long src,return ret; } +/* +* Ensure user provided offset and length values are valid for +* an enclave. +*/ +static int sgx_validate_offset_length (struct sgx_encl *encl, +unsigned long offset, +unsigned long length) +{ +if (!IS_ALIGNED (offset,PAGE_SIZE )) +return -EINVAL ; + +if (!length || !IS_ALIGNED (length,PAGE_SIZE )) +return -EINVAL ; + +if (offset + length < offset) +return -EINVAL ; + +if (offset + length -PAGE_SIZE >= encl->size) +return -EINVAL ; + +return 0 ; +} +/** * sgx_ioc_enclave_add_pages() - The handler for %SGX_IOC_ENCLAVE_ADD_PAGES * @encl: an enclave pointer
@@ -425,14 +448,10 @@ static long sgx_ioc_enclave_add_pages(struct sgx_encl *encl, void __user *arg)if (copy_from_user (&add_arg, arg,sizeof (add_arg)))return -EFAULT ; -if (!IS_ALIGNED (add_arg.offset,PAGE_SIZE ) || - !IS_ALIGNED (add_arg.src,PAGE_SIZE )) -return -EINVAL ; - -if (!add_arg.length || add_arg.length & (PAGE_SIZE -1 )) +if (!IS_ALIGNED (add_arg.src,PAGE_SIZE ))return -EINVAL ; -if (add_arg.offset + add_arg.length -PAGE_SIZE >= encl->size) +if (sgx_validate_offset_length (encl, add_arg.offset, add_arg.length))return -EINVAL ; if (copy_from_user(&secinfo, (void __user *)add_arg.secinfo,
arch/x86/kernel/cpu/tsx.c +17 -21
@@ -58,24 +58,6 @@ static void tsx_enable(void)wrmsrl (MSR_IA32_TSX_CTRL , tsx); } -static bool tsx_ctrl_is_supported (void ) -{ -u64 ia32_cap =x86_read_arch_cap_msr (); - -/* -* TSX is controlled via MSR_IA32_TSX_CTRL. However, support for this -* MSR is enumerated by ARCH_CAP_TSX_MSR bit in MSR_IA32_ARCH_CAPABILITIES. -* -* TSX control (aka MSR_IA32_TSX_CTRL) is only available after a -* microcode update on CPUs that have their MSR_IA32_ARCH_CAPABILITIES -* bit MDS_NO=1. CPUs with MDS_NO=0 are not planned to get -* MSR_IA32_TSX_CTRL support even after a microcode update. Thus, -* tsx= cmdline requests will do nothing on CPUs without -* MSR_IA32_TSX_CTRL support. -*/ -return !!(ia32_cap &ARCH_CAP_TSX_CTRL_MSR ); -} -static enum tsx_ctrl_states x86_get_tsx_auto_mode (void ) {if (boot_cpu_has_bug (X86_BUG_TAA ))
@@ -135,7 +117,7 @@ static void tsx_clear_cpuid(void)rdmsrl (MSR_TSX_FORCE_ABORT , msr); msr |=MSR_TFA_TSX_CPUID_CLEAR ;wrmsrl (MSR_TSX_FORCE_ABORT , msr); - }else if (tsx_ctrl_is_supported ()) { + }else if (cpu_feature_enabled (X86_FEATURE_MSR_TSX_CTRL )) {rdmsrl (MSR_IA32_TSX_CTRL , msr); msr |=TSX_CTRL_CPUID_CLEAR ;wrmsrl (MSR_IA32_TSX_CTRL , msr);
@@ -158,7 +140,8 @@ static void tsx_dev_mode_disable(void)u64 mcu_opt_ctrl;/* Check if RTM_ALLOW exists */ -if (!boot_cpu_has_bug (X86_BUG_TAA ) || !tsx_ctrl_is_supported () || +if (!boot_cpu_has_bug (X86_BUG_TAA ) || + !cpu_feature_enabled (X86_FEATURE_MSR_TSX_CTRL ) || !cpu_feature_enabled (X86_FEATURE_SRBDS_CTRL ))return ;
@@ -191,7 +174,20 @@ void __init tsx_init(void)return ; } -if (!tsx_ctrl_is_supported ()) { +/* +* TSX is controlled via MSR_IA32_TSX_CTRL. However, support for this +* MSR is enumerated by ARCH_CAP_TSX_MSR bit in MSR_IA32_ARCH_CAPABILITIES. +* +* TSX control (aka MSR_IA32_TSX_CTRL) is only available after a +* microcode update on CPUs that have their MSR_IA32_ARCH_CAPABILITIES +* bit MDS_NO=1. CPUs with MDS_NO=0 are not planned to get +* MSR_IA32_TSX_CTRL support even after a microcode update. Thus, +* tsx= cmdline requests will do nothing on CPUs without +* MSR_IA32_TSX_CTRL support. +*/ +if (x86_read_arch_cap_msr () &ARCH_CAP_TSX_CTRL_MSR ) { +setup_force_cpu_cap (X86_FEATURE_MSR_TSX_CTRL ); + }else { tsx_ctrl_state =TSX_CTRL_NOT_SUPPORTED ;return ; }
arch/x86/kvm/svm/nested.c +3 -3
@@ -919,6 +919,9 @@ void svm_free_nested(struct vcpu_svm *svm)if (!svm->nested.initialized)return ; +if (WARN_ON_ONCE (svm->vmcb != svm->vmcb01.ptr)) +svm_switch_vmcb (svm, &svm->vmcb01); +svm_vcpu_free_msrpm (svm->nested.msrpm); svm->nested.msrpm =NULL ;
@@ -937,9 +940,6 @@ void svm_free_nested(struct vcpu_svm *svm) svm->nested.initialized = false; } -/* -* Forcibly leave nested mode in order to be able to reset the VCPU later on. -*/ void svm_leave_nested (struct kvm_vcpu *vcpu) {struct vcpu_svm *svm =to_svm (vcpu);
arch/x86/kvm/svm/svm.c +1 -15
@@ -317,12 +317,6 @@ int svm_set_efer(struct kvm_vcpu *vcpu, u64 efer)return 0 ; } -static int is_external_interrupt (u32 info) -{ - info &=SVM_EVTINJ_TYPE_MASK |SVM_EVTINJ_VALID ; -return info == (SVM_EVTINJ_VALID |SVM_EVTINJ_TYPE_INTR ); -} -static u32 svm_get_interrupt_shadow (struct kvm_vcpu *vcpu) {struct vcpu_svm *svm =to_svm (vcpu);
@@ -1427,6 +1421,7 @@ static void svm_free_vcpu(struct kvm_vcpu *vcpu)*/ svm_clear_current_vmcb (svm->vmcb); +svm_leave_nested (vcpu);svm_free_nested (svm);sev_free_vcpu (vcpu);
@@ -3359,15 +3354,6 @@ static int handle_exit(struct kvm_vcpu *vcpu, fastpath_t exit_fastpath)return 0 ; } -if (is_external_interrupt (svm->vmcb->control.exit_int_info) && - exit_code !=SVM_EXIT_EXCP_BASE +PF_VECTOR && - exit_code !=SVM_EXIT_NPF && exit_code !=SVM_EXIT_TASK_SWITCH && - exit_code !=SVM_EXIT_INTR && exit_code !=SVM_EXIT_NMI ) -printk (KERN_ERR "%s: unexpected exit_int_info 0x%x " -"exit_code 0x%x\n" , - __func__, svm->vmcb->control.exit_int_info, - exit_code); -if (exit_fastpath !=EXIT_FASTPATH_NONE )return 1 ;
arch/x86/kvm/vmx/nested.c +0 -3
@@ -6276,9 +6276,6 @@ static int vmx_get_nested_state(struct kvm_vcpu *vcpu,return kvm_state.size; } -/* -* Forcibly leave nested mode in order to be able to reset the VCPU later on. -*/ void vmx_leave_nested (struct kvm_vcpu *vcpu) {if (is_guest_mode (vcpu)) {
arch/x86/kvm/x86.c +17 -1
@@ -608,6 +608,12 @@ void kvm_deliver_exception_payload(struct kvm_vcpu *vcpu) }EXPORT_SYMBOL_GPL (kvm_deliver_exception_payload); +/* Forcibly leave the nested mode in cases like a vCPU reset */ +static void kvm_leave_nested (struct kvm_vcpu *vcpu) +{ + kvm_x86_ops.nested_ops->leave_nested (vcpu); +} +static void kvm_multiple_exception (struct kvm_vcpu *vcpu,unsigned nr,bool has_error,u32 error_code,bool has_payload,unsigned long payload,bool reinject)
@@ -4775,7 +4781,7 @@ static int kvm_vcpu_ioctl_x86_set_vcpu_events(struct kvm_vcpu *vcpu,if (events->flags &KVM_VCPUEVENT_VALID_SMM ) {if (!!(vcpu->arch.hflags &HF_SMM_MASK ) != events->smi.smm) { - kvm_x86_ops.nested_ops->leave_nested (vcpu); +kvm_leave_nested (vcpu);kvm_smm_changed (vcpu, events->smi.smm); }
@@ -11111,8 +11117,18 @@ void kvm_vcpu_reset(struct kvm_vcpu *vcpu, bool init_event)unsigned long new_cr0;u32 eax, dummy; +/* +* SVM doesn't unconditionally VM-Exit on INIT and SHUTDOWN, thus it's +* possible to INIT the vCPU while L2 is active. Force the vCPU back +* into L1 as EFER.SVME is cleared on INIT (along with all other EFER +* bits), i.e. virtualization is disabled. +*/ +if (is_guest_mode (vcpu)) +kvm_leave_nested (vcpu); +kvm_lapic_reset (vcpu, init_event); +WARN_ON_ONCE (is_guest_mode (vcpu) ||is_smm (vcpu)); vcpu->arch.hflags =0 ; vcpu->arch.smi_pending =0 ;
arch/x86/mm/ioremap.c +7 -1
@@ -216,9 +216,15 @@ __ioremap_caller(resource_size_t phys_addr, unsigned long size,* Mappings have to be page-aligned */ offset = phys_addr & ~PAGE_MASK ; - phys_addr &=PHYSICAL_PAGE_MASK ; + phys_addr &=PAGE_MASK ; size =PAGE_ALIGN (last_addr+1 ) - phys_addr; +/* +* Mask out any bits not part of the actual physical +* address, like memory encryption bits. +*/ + phys_addr &=PHYSICAL_PAGE_MASK ; + retval =memtype_reserve (phys_addr, (u64 )phys_addr + size, pcm, &new_pcm);if (retval) {
arch/x86/power/cpu.c +15 -8
@@ -513,16 +513,23 @@ static int pm_cpu_check(const struct x86_cpu_id *c)static void pm_save_spec_msr (void ) { -u32 spec_msr_id[] = { -MSR_IA32_SPEC_CTRL , -MSR_IA32_TSX_CTRL , -MSR_TSX_FORCE_ABORT , -MSR_IA32_MCU_OPT_CTRL , -MSR_AMD64_LS_CFG , -MSR_AMD64_DE_CFG , +struct msr_enumeration { +u32 msr_no; +u32 feature; + } msr_enum[] = { + {MSR_IA32_SPEC_CTRL ,X86_FEATURE_MSR_SPEC_CTRL }, + {MSR_IA32_TSX_CTRL ,X86_FEATURE_MSR_TSX_CTRL }, + {MSR_TSX_FORCE_ABORT ,X86_FEATURE_TSX_FORCE_ABORT }, + {MSR_IA32_MCU_OPT_CTRL ,X86_FEATURE_SRBDS_CTRL }, + {MSR_AMD64_LS_CFG ,X86_FEATURE_LS_CFG_SSBD }, + {MSR_AMD64_DE_CFG ,X86_FEATURE_LFENCE_RDTSC }, }; +int i; -msr_build_context (spec_msr_id,ARRAY_SIZE (spec_msr_id)); +for (i =0 ; i <ARRAY_SIZE (msr_enum); i++) { +if (boot_cpu_has (msr_enum[i].feature)) +msr_build_context (&msr_enum[i].msr_no,1 ); + } }static int pm_check_save_msr (void )
block/bfq-cgroup.c +4 -0
@@ -613,6 +613,10 @@ struct bfq_group *bfq_bio_bfqg(struct bfq_data *bfqd, struct bio *bio)struct bfq_group *bfqg;while (blkg) { +if (!blkg->online) { + blkg = blkg->parent; +continue ; + } bfqg =blkg_to_bfqg (blkg);if (bfqg->online) {bio_associate_blkg_from_css (bio, &blkg->blkcg->css);
drivers/android/binder_alloc.c +7 -0
@@ -753,6 +753,12 @@ int binder_alloc_mmap_handler(struct binder_alloc *alloc,const char *failure_string;struct binder_buffer *buffer; +if (unlikely (vma->vm_mm != alloc->vma_vm_mm)) { + ret = -EINVAL ; + failure_string ="invalid vma->vm_mm" ; + goto err_invalid_mm; + } +mutex_lock (&binder_alloc_mmap_lock);if (alloc->buffer_size) { ret = -EBUSY ;
@@ -799,6 +805,7 @@ int binder_alloc_mmap_handler(struct binder_alloc *alloc, alloc->buffer_size =0 ; err_already_mapped:mutex_unlock (&binder_alloc_mmap_lock); +err_invalid_mm: binder_alloc_debug(BINDER_DEBUG_USER_ERROR, "%s: %d %lx-%lx %s failed %d\n", __func__, alloc->pid, vma->vm_start, vma->vm_end,
drivers/ata/libata-scsi.c +31 -24
75 lines not on this page · raw message
drivers/bus/intel-ixp4xx-eb.c +3 -6
@@ -49,7 +49,7 @@#define IXP4XX_EXP_SIZE_SHIFT 10#define IXP4XX_EXP_CNFG_0 BIT(9)/* Always zero */ #define IXP43X_EXP_SYNC_INTEL BIT(8)/* Only on IXP43x */ -#define IXP43X_EXP_EXP_CHIP BIT(7)/* Only on IXP43x */ +#define IXP43X_EXP_EXP_CHIP BIT(7)/* Only on IXP43x, dangerous to touch on IXP42x */ #define IXP4XX_EXP_BYTE_RD16 BIT(6)#define IXP4XX_EXP_HRDY_POL BIT(5)/* Only on IXP42x */ #define IXP4XX_EXP_MUX_EN BIT(4)
@@ -57,8 +57,6 @@#define IXP4XX_EXP_WORD BIT(2)/* Always zero */ #define IXP4XX_EXP_WR_EN BIT(1)#define IXP4XX_EXP_BYTE_EN BIT(0) -#define IXP42X_RESERVED (BIT(30)|IXP4XX_EXP_CNFG_0|BIT(8)|BIT(7)|IXP4XX_EXP_WORD) -#define IXP43X_RESERVED (BIT(30)|IXP4XX_EXP_CNFG_0|BIT(5)|IXP4XX_EXP_WORD)#define IXP4XX_EXP_CNFG0 0x20#define IXP4XX_EXP_CNFG0_MEM_MAP BIT(31)
@@ -252,10 +250,9 @@ static void ixp4xx_exp_setup_chipselect(struct ixp4xx_eb *eb, cs_cfg |= val <<IXP4XX_EXP_CYC_TYPE_SHIFT ; } -if (eb->is_42x) - cs_cfg &= ~IXP42X_RESERVED ;if (eb->is_43x) { - cs_cfg &= ~IXP43X_RESERVED ; +/* Should always be zero */ + cs_cfg &= ~IXP4XX_EXP_WORD ;/* * This bit for Intel strata flash is currently unused, but let's * report it if we find one.
drivers/bus/sunxi-rsb.c +21 -17
@@ -271,6 +271,9 @@ EXPORT_SYMBOL_GPL(sunxi_rsb_driver_register);/* common code that starts a transfer */ static int _sunxi_rsb_run_xfer (struct sunxi_rsb *rsb) { +u32 int_mask, status; +bool timeout; +if (readl (rsb->regs +RSB_CTRL ) &RSB_CTRL_START_TRANS ) {dev_dbg (rsb->dev,"RSB transfer still in progress\n" );return -EBUSY ;
@@ -278,13 +281,23 @@ static int _sunxi_rsb_run_xfer(struct sunxi_rsb *rsb)reinit_completion (&rsb->complete); -writel (RSB_INTS_LOAD_BSY |RSB_INTS_TRANS_ERR |RSB_INTS_TRANS_OVER , - rsb->regs +RSB_INTE ); + int_mask =RSB_INTS_LOAD_BSY |RSB_INTS_TRANS_ERR |RSB_INTS_TRANS_OVER ; +writel (int_mask, rsb->regs +RSB_INTE );writel (RSB_CTRL_START_TRANS |RSB_CTRL_GLOBAL_INT_ENB , rsb->regs +RSB_CTRL ); -if (!wait_for_completion_io_timeout (&rsb->complete, -msecs_to_jiffies (100 ))) { +if (irqs_disabled ()) { + timeout =readl_poll_timeout_atomic (rsb->regs +RSB_INTS , + status, (status & int_mask), +10 ,100000 ); +writel (status, rsb->regs +RSB_INTS ); + }else { + timeout = !wait_for_completion_io_timeout (&rsb->complete, +msecs_to_jiffies (100 )); + status = rsb->status; + } + +if (timeout) {dev_dbg (rsb->dev,"RSB timeout\n" );/* abort the transfer */
@@ -296,18 +309,18 @@ static int _sunxi_rsb_run_xfer(struct sunxi_rsb *rsb)return -ETIMEDOUT ; } -if (rsb->status &RSB_INTS_LOAD_BSY ) { +if (status &RSB_INTS_LOAD_BSY ) {dev_dbg (rsb->dev,"RSB busy\n" );return -EBUSY ; } -if (rsb->status &RSB_INTS_TRANS_ERR ) { -if (rsb->status &RSB_INTS_TRANS_ERR_ACK ) { +if (status &RSB_INTS_TRANS_ERR ) { +if (status &RSB_INTS_TRANS_ERR_ACK ) {dev_dbg (rsb->dev,"RSB slave nack\n" );return -EINVAL ; } -if (rsb->status &RSB_INTS_TRANS_ERR_DATA ) { +if (status &RSB_INTS_TRANS_ERR_DATA ) {dev_dbg (rsb->dev,"RSB transfer data error\n" );return -EIO ; }
@@ -816,14 +829,6 @@ static int sunxi_rsb_remove(struct platform_device *pdev)return 0 ; } -static void sunxi_rsb_shutdown (struct platform_device *pdev) -{ -struct sunxi_rsb *rsb =platform_get_drvdata (pdev); - -pm_runtime_disable (&pdev->dev); -sunxi_rsb_hw_exit (rsb); -} -static const struct dev_pm_ops sunxi_rsb_dev_pm_ops = {SET_RUNTIME_PM_OPS (sunxi_rsb_runtime_suspend, sunxi_rsb_runtime_resume,NULL )
@@ -839,7 +844,6 @@ MODULE_DEVICE_TABLE(of, sunxi_rsb_of_match_table);static struct platform_driver sunxi_rsb_driver = { .probe = sunxi_rsb_probe, .remove = sunxi_rsb_remove, - .shutdown = sunxi_rsb_shutdown, .driver = { .name =RSB_CTRL_NAME , .of_match_table = sunxi_rsb_of_match_table,
drivers/dma-buf/dma-heap.c +15 -13
@@ -233,18 +233,6 @@ struct dma_heap *dma_heap_add(const struct dma_heap_export_info *exp_info)return ERR_PTR (-EINVAL ); } -/* check the name is unique */ -mutex_lock (&heap_list_lock); -list_for_each_entry (h, &heap_list, list) { -if (!strcmp (h->name, exp_info->name)) { -mutex_unlock (&heap_list_lock); -pr_err ("dma_heap: Already registered heap named %s\n" , - exp_info->name); -return ERR_PTR (-EINVAL ); - } - } -mutex_unlock (&heap_list_lock); - heap =kzalloc (sizeof (*heap),GFP_KERNEL );if (!heap)return ERR_PTR (-ENOMEM );
@@ -283,13 +271,27 @@ struct dma_heap *dma_heap_add(const struct dma_heap_export_info *exp_info) err_ret =ERR_CAST (dev_ret); goto err2; } -/* Add heap to the list */ +mutex_lock (&heap_list_lock); +/* check the name is unique */ +list_for_each_entry (h, &heap_list, list) { +if (!strcmp (h->name, exp_info->name)) { +mutex_unlock (&heap_list_lock); +pr_err ("dma_heap: Already registered heap named %s\n" , + exp_info->name); + err_ret =ERR_PTR (-EINVAL ); + goto err3; + } + } + +/* Add heap to the list */ list_add (&heap->list, &heap_list);mutex_unlock (&heap_list_lock);return heap; +err3: +device_destroy (dma_heap_class, heap->heap_devt); err2:cdev_del (&heap->heap_cdev); err1:
drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_aldebaran.c +1 -0
@@ -44,5 +44,6 @@ const struct kfd2kgd_calls aldebaran_kfd2kgd = { .get_atc_vmid_pasid_mapping_info = kgd_gfx_v9_get_atc_vmid_pasid_mapping_info, .set_vm_context_page_table_base = kgd_gfx_v9_set_vm_context_page_table_base, + .get_cu_occupancy = kgd_gfx_v9_get_cu_occupancy, .program_trap_handler_settings = kgd_gfx_v9_program_trap_handler_settings };
drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c +3 -5
@@ -419,11 +419,9 @@ int amdgpu_gem_userptr_ioctl(struct drm_device *dev, void *data,if (r) goto release_object; -if (args->flags &AMDGPU_GEM_USERPTR_REGISTER ) { - r =amdgpu_mn_register (bo, args->addr); -if (r) - goto release_object; - } + r =amdgpu_mn_register (bo, args->addr); +if (r) + goto release_object;if (args->flags &AMDGPU_GEM_USERPTR_VALIDATE ) { r =amdgpu_ttm_tt_get_user_pages (bo, bo->tbo.ttm->pages);
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +37 -0
@@ -1374,7 +1374,44 @@ static const struct dmi_system_id hpd_disconnect_quirk_table[] = { DMI_MATCH(DMI_PRODUCT_NAME, "Precision 3460"), }, }, + { + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."), + DMI_MATCH(DMI_PRODUCT_NAME, "OptiPlex Tower Plus 7010"), + }, + }, + { + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."), + DMI_MATCH(DMI_PRODUCT_NAME, "OptiPlex Tower 7010"), + }, + }, + { + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."), + DMI_MATCH(DMI_PRODUCT_NAME, "OptiPlex SFF Plus 7010"), + }, + }, + { + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."), + DMI_MATCH(DMI_PRODUCT_NAME, "OptiPlex SFF 7010"), + }, + }, + { + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."), + DMI_MATCH(DMI_PRODUCT_NAME, "OptiPlex Micro Plus 7010"), + }, + }, + { + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."), + DMI_MATCH(DMI_PRODUCT_NAME, "OptiPlex Micro 7010"), + }, + }, {} + /* TODO: refactor this from a fixed table to a dynamic option */ }; static void retrieve_dmi_info(struct amdgpu_display_manager *dm)
drivers/gpu/drm/amd/display/dc/dce120/dce120_resource.c +2 -1
@@ -361,7 +361,8 @@ static const struct dce_audio_registers audio_regs[] = {audio_regs (2 ),audio_regs (3 ),audio_regs (4 ), - audio_regs(5) +audio_regs (5 ), + audio_regs(6), };#define DCE120_AUD_COMMON_MASK_SH_LIST (mask_sh)\
drivers/gpu/drm/amd/pm/powerplay/hwmgr/vega10_thermal.c +12 -13
@@ -67,22 +67,21 @@ int vega10_fan_ctrl_get_fan_speed_info(struct pp_hwmgr *hwmgr,int vega10_fan_ctrl_get_fan_speed_pwm (struct pp_hwmgr *hwmgr,uint32_t *speed) { -uint32_t current_rpm; -uint32_t percent =0 ; - -if (hwmgr->thermal_controller.fanInfo.bNoFan) -return 0 ; +struct amdgpu_device *adev = hwmgr->adev; +uint32_t duty100, duty; +uint64_t tmp64; -if (vega10_get_current_rpm (hwmgr, ¤t_rpm)) -return -1 ; + duty100 =REG_GET_FIELD (RREG32_SOC15 (THM ,0 , mmCG_FDO_CTRL1), +CG_FDO_CTRL1 ,FMAX_DUTY100 ); + duty =REG_GET_FIELD (RREG32_SOC15 (THM ,0 , mmCG_THERMAL_STATUS), +CG_THERMAL_STATUS ,FDO_PWM_DUTY ); -if (hwmgr->thermal_controller. - advanceFanControlParameters.usMaxFanRPM !=0 ) - percent = current_rpm *255 / - hwmgr->thermal_controller. - advanceFanControlParameters.usMaxFanRPM; +if (!duty100) +return -EINVAL ; - *speed =MIN (percent,255 ); + tmp64 = (uint64_t )duty *255 ; +do_div (tmp64, duty100); + *speed =MIN ((uint32_t )tmp64,255 );return 0 ; }
drivers/gpu/drm/amd/pm/swsmu/smu11/sienna_cichlid_ppt.c +4 -0
@@ -368,6 +368,10 @@ static void sienna_cichlid_check_bxco_support(struct smu_context *smu) ((adev->pdev->device ==0x73BF ) && (adev->pdev->revision ==0xCF )) || ((adev->pdev->device ==0x7422 ) && + (adev->pdev->revision ==0x00 )) || + ((adev->pdev->device ==0x73A3 ) && + (adev->pdev->revision ==0x00 )) || + ((adev->pdev->device ==0x73E3 ) && (adev->pdev->revision == 0x00))) smu_baco->platform_support = false;
drivers/gpu/drm/drm_dp_dual_mode_helper.c +29 -22
91 lines not on this page · raw message
drivers/gpu/drm/drm_panel_orientation_quirks.c +6 -0
@@ -128,6 +128,12 @@ static const struct dmi_system_id orientation_data[] = { DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "One S1003"), }, .driver_data = (void *)&lcd800x1280_rightside_up, + }, { /* Acer Switch V 10 (SW5-017) */ + .matches = { +DMI_EXACT_MATCH (DMI_SYS_VENDOR ,"Acer" ), + DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "SW5-017"), + }, + .driver_data = (void *)&lcd800x1280_rightside_up, }, { /* Anbernic Win600 */ .matches = { DMI_EXACT_MATCH(DMI_BOARD_VENDOR, "Anbernic"),
drivers/gpu/drm/i915/gt/intel_gt.c +4 -0
@@ -982,6 +982,10 @@ void intel_gt_invalidate_tlbs(struct intel_gt *gt)if (!i915_mmio_reg_offset (rb.reg))continue ; +if (GRAPHICS_VER (i915) ==12 && (engine->class ==VIDEO_DECODE_CLASS || + engine->class ==VIDEO_ENHANCEMENT_CLASS )) + rb.bit =_MASKED_BIT_ENABLE (rb.bit); +intel_uncore_write_fw (uncore, rb.reg, rb.bit); }
drivers/gpu/drm/tegra/drm.c +4 -0
@@ -1083,6 +1083,10 @@ static bool host1x_drm_wants_iommu(struct host1x_device *dev)struct host1x *host1x =dev_get_drvdata (dev->dev.parent);struct iommu_domain *domain; +/* Our IOMMU usage policy doesn't currently play well with GART */ +if (of_machine_is_compatible ("nvidia,tegra20" )) +return false; +/* * If the Tegra DRM clients are backed by an IOMMU, push buffers are * likely to be allocated beyond the 32-bit boundary if sufficient
drivers/gpu/host1x/dev.c +4 -0
@@ -204,6 +204,10 @@ static void host1x_setup_sid_table(struct host1x *host)static bool host1x_wants_iommu (struct host1x *host1x) { +/* Our IOMMU usage policy doesn't currently play well with GART */ +if (of_machine_is_compatible ("nvidia,tegra20" )) +return false; +/* * If we support addressing a maximum of 32 bits of physical memory * and if the host1x firewall is enabled, there's no need to enable
drivers/hv/channel_mgmt.c +5 -1
@@ -531,13 +531,17 @@ static void vmbus_add_channel_work(struct work_struct *work)* Add the new device to the bus. This will kick off device-driver * binding which eventually invokes the device driver's AddDevice() * method. +* +* If vmbus_device_register() fails, the 'device_obj' is freed in +* vmbus_device_release() as called by device_unregister() in the +* error path of vmbus_device_register(). In the outside error +* path, there's no need to free it. */ ret =vmbus_device_register (newchannel->device_obj);if (ret !=0 ) {pr_err ("unable to add child device object (relid %d)\n" , newchannel->offermsg.child_relid); -kfree (newchannel->device_obj); goto err_deq_chan; }
drivers/hv/vmbus_drv.c +1 -0
@@ -2109,6 +2109,7 @@ int vmbus_device_register(struct hv_device *child_device_obj) ret =device_register (&child_device_obj->device);if (ret) {pr_err ("Unable to register child device\n" ); +put_device (&child_device_obj->device);return ret; }
drivers/iio/industrialio-sw-trigger.c +5 -1
@@ -58,8 +58,12 @@ int iio_register_sw_trigger_type(struct iio_sw_trigger_type *t) t->group =configfs_register_default_group (iio_triggers_group, t->name, &iio_trigger_type_group_type); -if (IS_ERR (t->group)) +if (IS_ERR (t->group)) { +mutex_lock (&iio_trigger_types_lock); +list_del (&t->list); +mutex_unlock (&iio_trigger_types_lock); ret =PTR_ERR (t->group); + }return ret; }
drivers/iio/light/apds9960.c +6 -6
@@ -54,9 +54,6 @@#define APDS9960_REG_CONTROL_PGAIN_MASK_SHIFT 2#define APDS9960_REG_CONFIG_2 0x90 -#define APDS9960_REG_CONFIG_2_GGAIN_MASK 0x60 -#define APDS9960_REG_CONFIG_2_GGAIN_MASK_SHIFT 5 -#define APDS9960_REG_ID 0x92#define APDS9960_REG_STATUS 0x93
@@ -77,6 +74,9 @@#define APDS9960_REG_GCONF_1_GFIFO_THRES_MASK_SHIFT 6#define APDS9960_REG_GCONF_2 0xa3 +#define APDS9960_REG_GCONF_2_GGAIN_MASK 0x60 +#define APDS9960_REG_GCONF_2_GGAIN_MASK_SHIFT 5 +#define APDS9960_REG_GOFFSET_U 0xa4#define APDS9960_REG_GOFFSET_D 0xa5#define APDS9960_REG_GPULSE 0xa6
@@ -396,9 +396,9 @@ static int apds9960_set_pxs_gain(struct apds9960_data *data, int val) } ret =regmap_update_bits (data->regmap, -APDS9960_REG_CONFIG_2 , -APDS9960_REG_CONFIG_2_GGAIN_MASK , - idx <<APDS9960_REG_CONFIG_2_GGAIN_MASK_SHIFT ); +APDS9960_REG_GCONF_2 , +APDS9960_REG_GCONF_2_GGAIN_MASK , + idx <<APDS9960_REG_GCONF_2_GGAIN_MASK_SHIFT );if (!ret) data->pxs_gain = idx;mutex_unlock (&data->lock);
drivers/iio/pressure/ms5611.h +7 -11
@@ -25,13 +25,6 @@ enum { MS5607, }; -struct ms5611_chip_info { -u16 prom[MS5611_PROM_WORDS_NB ]; - -int (*temp_and_pressure_compensate)(struct ms5611_chip_info *chip_info, -s32 *temp,s32 *pressure); -}; -/* * OverSampling Rate descriptor. * Warning: cmd MUST be kept aligned on a word boundary (see
@@ -50,12 +43,15 @@ struct ms5611_state {const struct ms5611_osr *pressure_osr;const struct ms5611_osr *temp_osr; -int (*reset)(struct device *dev); -int (*read_prom_word)(struct device *dev,int index,u16 *word); -int (*read_adc_temp_and_pressure)(struct device *dev, +u16 prom[MS5611_PROM_WORDS_NB ]; + +int (*reset)(struct ms5611_state *st); +int (*read_prom_word)(struct ms5611_state *st,int index,u16 *word); +int (*read_adc_temp_and_pressure)(struct ms5611_state *st,s32 *temp,s32 *pressure); -struct ms5611_chip_info *chip_info; +int (*compensate_temp_and_pressure)(struct ms5611_state *st,s32 *temp, +s32 *pressure);struct regulator *vdd; };
drivers/iio/pressure/ms5611_core.c +29 -27
118 lines not on this page · raw message
drivers/iio/pressure/ms5611_i2c.c +4 -7
@@ -20,17 +20,15 @@#include "ms5611.h" -static int ms5611_i2c_reset (struct device *dev) +static int ms5611_i2c_reset (struct ms5611_state *st) { -struct ms5611_state *st =iio_priv (dev_to_iio_dev (dev)); -return i2c_smbus_write_byte (st->client,MS5611_RESET ); } -static int ms5611_i2c_read_prom_word (struct device *dev,int index,u16 *word) +static int ms5611_i2c_read_prom_word (struct ms5611_state *st,int index, +u16 *word) {int ret; -struct ms5611_state *st =iio_priv (dev_to_iio_dev (dev)); ret =i2c_smbus_read_word_swapped (st->client,MS5611_READ_PROM_WORD + (index <<1 ));
@@ -57,11 +55,10 @@ static int ms5611_i2c_read_adc(struct ms5611_state *st, s32 *val)return 0 ; } -static int ms5611_i2c_read_adc_temp_and_pressure (struct device *dev, +static int ms5611_i2c_read_adc_temp_and_pressure (struct ms5611_state *st,s32 *temp,s32 *pressure) {int ret; -struct ms5611_state *st =iio_priv (dev_to_iio_dev (dev));const struct ms5611_osr *osr = st->temp_osr; ret =i2c_smbus_write_byte (st->client, osr->cmd);
drivers/iio/pressure/ms5611_spi.c +7 -10
@@ -15,18 +15,17 @@#include "ms5611.h" -static int ms5611_spi_reset (struct device *dev) +static int ms5611_spi_reset (struct ms5611_state *st) {u8 cmd =MS5611_RESET ; -struct ms5611_state *st =iio_priv (dev_to_iio_dev (dev));return spi_write_then_read (st->client, &cmd,1 ,NULL ,0 ); } -static int ms5611_spi_read_prom_word (struct device *dev,int index,u16 *word) +static int ms5611_spi_read_prom_word (struct ms5611_state *st,int index, +u16 *word) {int ret; -struct ms5611_state *st =iio_priv (dev_to_iio_dev (dev)); ret =spi_w8r16be (st->client,MS5611_READ_PROM_WORD + (index <<1 ));if (ret <0 )
@@ -37,11 +36,10 @@ static int ms5611_spi_read_prom_word(struct device *dev, int index, u16 *word)return 0 ; } -static int ms5611_spi_read_adc (struct device *dev,s32 *val) +static int ms5611_spi_read_adc (struct ms5611_state *st,s32 *val) {int ret;u8 buf[3 ] = {MS5611_READ_ADC }; -struct ms5611_state *st =iio_priv (dev_to_iio_dev (dev)); ret =spi_write_then_read (st->client, buf,1 , buf,3 );if (ret <0 )
@@ -52,11 +50,10 @@ static int ms5611_spi_read_adc(struct device *dev, s32 *val)return 0 ; } -static int ms5611_spi_read_adc_temp_and_pressure (struct device *dev, +static int ms5611_spi_read_adc_temp_and_pressure (struct ms5611_state *st,s32 *temp,s32 *pressure) {int ret; -struct ms5611_state *st =iio_priv (dev_to_iio_dev (dev));const struct ms5611_osr *osr = st->temp_osr;/*
@@ -68,7 +65,7 @@ static int ms5611_spi_read_adc_temp_and_pressure(struct device *dev,return ret;usleep_range (osr->conv_usec, osr->conv_usec + (osr->conv_usec /10UL )); - ret =ms5611_spi_read_adc (dev, temp); + ret =ms5611_spi_read_adc (st, temp);if (ret <0 )return ret;
@@ -78,7 +75,7 @@ static int ms5611_spi_read_adc_temp_and_pressure(struct device *dev,return ret;usleep_range (osr->conv_usec, osr->conv_usec + (osr->conv_usec /10UL )); -return ms5611_spi_read_adc (dev, pressure); +return ms5611_spi_read_adc (st, pressure); }static int ms5611_spi_probe (struct spi_device *spi)
drivers/input/misc/soc_button_array.c +13 -1
@@ -18,6 +18,10 @@#include <linux/gpio.h> #include <linux/platform_device.h> +static bool use_low_level_irq; +module_param (use_low_level_irq, bool,0444 ); +MODULE_PARM_DESC (use_low_level_irq,"Use low-level triggered IRQ instead of edge triggered" ); +struct soc_button_info {const char *name;int acpi_index;
@@ -73,6 +77,13 @@ static const struct dmi_system_id dmi_use_low_level_irq[] = { DMI_MATCH(DMI_PRODUCT_NAME, "Aspire SW5-012"), }, }, + { +/* Acer Switch V 10 SW5-017, same issue as Acer Switch 10 SW5-012. */ + .matches = { +DMI_MATCH (DMI_SYS_VENDOR ,"Acer" ), + DMI_MATCH(DMI_PRODUCT_NAME, "SW5-017"), + }, + }, {/* * Acer One S1003. _LID method messes with power-button GPIO
@@ -164,7 +175,8 @@ soc_button_device_create(struct platform_device *pdev, }/* See dmi_use_low_level_irq[] comment */ -if (!autorepeat &&dmi_check_system (dmi_use_low_level_irq)) { +if (!autorepeat && (use_low_level_irq || +dmi_check_system (dmi_use_low_level_irq))) {irq_set_irq_type (irq,IRQ_TYPE_LEVEL_LOW ); gpio_keys[n_buttons].irq = irq; gpio_keys[n_buttons].gpio = -ENOENT ;
drivers/input/mouse/synaptics.c +1 -0
@@ -191,6 +191,7 @@ static const char * const smbus_pnp_ids[] = {"SYN3221" ,/* HP 15-ay000 */ "SYN323d" ,/* HP Spectre X360 13-w013dx */ "SYN3257" ,/* HP Envy 13-ad105ng */ +"SYN3286" ,/* HP Laptop 15-da3001TU */ NULL };
drivers/input/serio/i8042-x86ia64io.h +4 -4
@@ -114,18 +114,18 @@ static const struct dmi_system_id i8042_dmi_quirk_table[] __initconst = { .driver_data = (void *)(SERIO_QUIRK_NOMUX | SERIO_QUIRK_RESET_NEVER) }, { - /* ASUS ZenBook UX425UA */ + /* ASUS ZenBook UX425UA/QA */ .matches = { DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK COMPUTER INC."), - DMI_MATCH(DMI_PRODUCT_NAME, "ZenBook UX425UA"), + DMI_MATCH(DMI_PRODUCT_NAME, "ZenBook UX425"), }, .driver_data = (void *)(SERIO_QUIRK_PROBE_DEFER | SERIO_QUIRK_RESET_NEVER) }, { - /* ASUS ZenBook UM325UA */ + /* ASUS ZenBook UM325UA/QA */ .matches = { DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK COMPUTER INC."), - DMI_MATCH(DMI_PRODUCT_NAME, "ZenBook UX325UA_UM325UA"), + DMI_MATCH(DMI_PRODUCT_NAME, "ZenBook UX325"), }, .driver_data = (void *)(SERIO_QUIRK_PROBE_DEFER | SERIO_QUIRK_RESET_NEVER) },
drivers/input/touchscreen/goodix.c +11 -0
@@ -1039,6 +1039,7 @@ static int goodix_configure_dev(struct goodix_ts_data *ts)input_set_abs_params (ts->input_dev,ABS_MT_WIDTH_MAJOR ,0 ,255 ,0 ,0 );input_set_abs_params (ts->input_dev,ABS_MT_TOUCH_MAJOR ,0 ,255 ,0 ,0 ); +retry_read_config:/* Read configuration and apply touchscreen parameters */ goodix_read_config (ts);
@@ -1046,6 +1047,16 @@ static int goodix_configure_dev(struct goodix_ts_data *ts)touchscreen_parse_properties (ts->input_dev, true, &ts->prop);if (!ts->prop.max_x || !ts->prop.max_y || !ts->max_touch_num) { +if (!ts->reset_controller_at_probe && + ts->irq_pin_access_method !=IRQ_PIN_ACCESS_NONE ) { +dev_info (&ts->client->dev,"Config not set, resetting controller\n" ); +/* Retry after a controller reset */ + ts->reset_controller_at_probe = true; + error =goodix_reset (ts); +if (error) +return error; + goto retry_read_config; + }dev_err (&ts->client->dev,"Invalid config (%d, %d, %d), using defaults\n" , ts->prop.max_x, ts->prop.max_y, ts->max_touch_num);
drivers/irqchip/irq-gic-v3-its.c +1 -1
@@ -1620,7 +1620,7 @@ static int its_select_cpu(struct irq_data *d, cpu =cpumask_pick_least_loaded (d, tmpmask); }else { -cpumask_and (tmpmask,irq_data_get_affinity_mask (d), cpu_online_mask); +cpumask_copy (tmpmask, aff_mask);/* If we cannot cross sockets, limit the search to that node */ if ((its_dev->its->flags & ITS_FLAGS_WORKAROUND_CAVIUM_23144) &&
drivers/md/dm-integrity.c +14 -6
@@ -259,6 +259,7 @@ struct dm_integrity_c {struct completion crypto_backoff; +bool wrote_to_journal;bool journal_uptodate;bool just_formatted;bool recalculate_flag;
@@ -2361,6 +2362,8 @@ static void integrity_commit(struct work_struct *w)if (!commit_sections) goto release_flush_bios; + ic->wrote_to_journal = true; + i = commit_start;for (n =0 ; n < commit_sections; n++) {for (j =0 ; j < ic->journal_section_entries; j++) {
@@ -2575,10 +2578,6 @@ static void integrity_writer(struct work_struct *w)unsigned prev_free_sectors; -/* the following test is not needed, but it tests the replay code */ -if (unlikely (dm_post_suspending (ic->ti)) && !ic->meta_dev) -return ; -spin_lock_irq (&ic->endio_wait.lock); write_start = ic->committed_section; write_sections = ic->n_committed_sections;
@@ -3085,10 +3084,17 @@ static void dm_integrity_postsuspend(struct dm_target *ti)drain_workqueue (ic->commit_wq);if (ic->mode =='J' ) { -if (ic->meta_dev) -queue_work (ic->writer_wq, &ic->writer_work); +queue_work (ic->writer_wq, &ic->writer_work);drain_workqueue (ic->writer_wq);dm_integrity_flush_buffers (ic, true); +if (ic->wrote_to_journal) { +init_journal (ic, ic->free_section, + ic->journal_sections - ic->free_section, ic->commit_seq); +if (ic->free_section) { +init_journal (ic,0 , ic->free_section, +next_commit_seq (ic->commit_seq)); + } + } }if (ic->mode =='B' ) {
@@ -3116,6 +3122,8 @@ static void dm_integrity_resume(struct dm_target *ti)DEBUG_print ("resume\n" ); + ic->wrote_to_journal = false; +if (ic->provided_data_sectors != old_provided_data_sectors) { if (ic->provided_data_sectors > old_provided_data_sectors && ic->mode == 'B' &&
drivers/mmc/host/sdhci-brcmstb.c +51 -17
152 lines not on this page · raw message
drivers/net/arcnet/com20020_cs.c +9 -2
@@ -113,6 +113,7 @@ static int com20020_probe(struct pcmcia_device *p_dev)struct com20020_dev *info;struct net_device *dev;struct arcnet_local *lp; +int ret = -ENOMEM ;dev_dbg (&p_dev->dev,"com20020_attach()\n" );
@@ -142,12 +143,18 @@ static int com20020_probe(struct pcmcia_device *p_dev) info->dev = dev; p_dev->priv = info; -return com20020_config (p_dev); + ret =com20020_config (p_dev); +if (ret) + goto fail_config; + +return 0 ; +fail_config: +free_arcdev (dev); fail_alloc_dev:kfree (info); fail_alloc_info: -return -ENOMEM ; +return ret; }/* com20020_attach */ static void com20020_detach (struct pcmcia_device *link)
drivers/net/dsa/sja1105/sja1105_mdio.c +6 -0
@@ -256,6 +256,9 @@ static int sja1105_base_tx_mdio_read(struct mii_bus *bus, int phy, int reg)u32 tmp;int rc; +if (reg &MII_ADDR_C45 ) +return -EOPNOTSUPP ; + rc =sja1105_xfer_u32 (priv,SPI_READ , regs->mdio_100base_tx + reg, &tmp,NULL );if (rc <0 )
@@ -272,6 +275,9 @@ static int sja1105_base_tx_mdio_write(struct mii_bus *bus, int phy, int reg,const struct sja1105_regs *regs = priv->info->regs;u32 tmp = val; +if (reg &MII_ADDR_C45 ) +return -EOPNOTSUPP ; +return sja1105_xfer_u32 (priv,SPI_WRITE , regs->mdio_100base_tx + reg, &tmp,NULL ); }
drivers/net/ethernet/broadcom/bnx2x/bnx2x_sriov.c +8 -4
@@ -795,16 +795,20 @@ static void bnx2x_vf_enable_traffic(struct bnx2x *bp, struct bnx2x_virtf *vf)static u8 bnx2x_vf_is_pcie_pending (struct bnx2x *bp,u8 abs_vfid) { -struct pci_dev *dev;struct bnx2x_virtf *vf =bnx2x_vf_by_abs_fid (bp, abs_vfid); +struct pci_dev *dev; +bool pending;if (!vf)return false; dev =pci_get_domain_bus_and_slot (vf->domain, vf->bus, vf->devfn); -if (dev) -return bnx2x_is_pcie_pending (dev); -return false; +if (!dev) +return false; + pending =bnx2x_is_pcie_pending (dev); +pci_dev_put (dev); + +return pending; }int bnx2x_vf_flr_clnup_epilog (struct bnx2x *bp,u8 abs_vfid)
drivers/net/ethernet/cavium/liquidio/lio_main.c +2 -2
@@ -1798,7 +1798,7 @@ static int liquidio_open(struct net_device *netdev)ifstate_set (lio,LIO_IFSTATE_RUNNING ); -if (!OCTEON_CN23XX_PF (oct) || (OCTEON_CN23XX_PF (oct) && !oct->msix_on)) { +if (!OCTEON_CN23XX_PF (oct) || !oct->msix_on) { ret =setup_tx_poll_fn (netdev);if (ret) goto err_poll;
@@ -1828,7 +1828,7 @@ static int liquidio_open(struct net_device *netdev)return 0 ; err_rx_ctrl: -if (!OCTEON_CN23XX_PF (oct) || (OCTEON_CN23XX_PF (oct) && !oct->msix_on)) +if (!OCTEON_CN23XX_PF (oct) || !oct->msix_on)cleanup_tx_poll_fn (netdev); err_poll:if (lio->ptp_clock) {
drivers/net/ethernet/cavium/thunder/thunder_bgx.c +3 -1
@@ -1435,8 +1435,10 @@ static acpi_status bgx_acpi_match_id(acpi_handle handle, u32 lvl,return AE_OK ; } -if (strncmp (string.pointer, bgx_sel,4 )) +if (strncmp (string.pointer, bgx_sel,4 )) { +kfree (string.pointer);return AE_OK ; + }acpi_walk_namespace (ACPI_TYPE_DEVICE , handle,1 , bgx_acpi_register_phy,NULL , bgx,NULL );
drivers/net/ethernet/freescale/enetc/enetc.c +20 -12
@@ -1768,7 +1768,7 @@ static void enetc_setup_txbdr(struct enetc_hw *hw, struct enetc_bdr *tx_ring)/* enable Tx ints by setting pkt thr to 1 */ enetc_txbdr_wr (hw, idx,ENETC_TBICR0 ,ENETC_TBICR0_ICEN |0x1 ); - tbmr =ENETC_TBMR_EN ; + tbmr =ENETC_TBMR_EN |ENETC_TBMR_SET_PRIO (tx_ring->prio);if (tx_ring->ndev->features &NETIF_F_HW_VLAN_CTAG_TX ) tbmr |=ENETC_TBMR_VIH ;
@@ -1831,13 +1831,14 @@ static void enetc_setup_rxbdr(struct enetc_hw *hw, struct enetc_bdr *rx_ring)static void enetc_setup_bdrs (struct enetc_ndev_priv *priv) { +struct enetc_hw *hw = &priv->si->hw;int i;for (i =0 ; i < priv->num_tx_rings; i++) -enetc_setup_txbdr (&priv->si->hw, priv->tx_ring[i]); +enetc_setup_txbdr (hw, priv->tx_ring[i]);for (i =0 ; i < priv->num_rx_rings; i++) -enetc_setup_rxbdr (&priv->si->hw, priv->rx_ring[i]); +enetc_setup_rxbdr (hw, priv->rx_ring[i]); }static void enetc_clear_rxbdr (struct enetc_hw *hw,struct enetc_bdr *rx_ring)
@@ -1870,13 +1871,14 @@ static void enetc_clear_txbdr(struct enetc_hw *hw, struct enetc_bdr *tx_ring)static void enetc_clear_bdrs (struct enetc_ndev_priv *priv) { +struct enetc_hw *hw = &priv->si->hw;int i;for (i =0 ; i < priv->num_tx_rings; i++) -enetc_clear_txbdr (&priv->si->hw, priv->tx_ring[i]); +enetc_clear_txbdr (hw, priv->tx_ring[i]);for (i =0 ; i < priv->num_rx_rings; i++) -enetc_clear_rxbdr (&priv->si->hw, priv->rx_ring[i]); +enetc_clear_rxbdr (hw, priv->rx_ring[i]);udelay (1 ); }
@@ -1884,13 +1886,13 @@ static void enetc_clear_bdrs(struct enetc_ndev_priv *priv)static int enetc_setup_irqs (struct enetc_ndev_priv *priv) {struct pci_dev *pdev = priv->si->pdev; +struct enetc_hw *hw = &priv->si->hw;int i, j, err;for (i =0 ; i < priv->bdr_int_num; i++) {int irq =pci_irq_vector (pdev,ENETC_BDR_INT_BASE_IDX + i);struct enetc_int_vector *v = priv->int_vector[i];int entry =ENETC_BDR_INT_BASE_IDX + i; -struct enetc_hw *hw = &priv->si->hw;snprintf (v->name,sizeof (v->name),"%s-rxtx%d" , priv->ndev->name, i);
@@ -1978,13 +1980,14 @@ static void enetc_setup_interrupts(struct enetc_ndev_priv *priv)static void enetc_clear_interrupts (struct enetc_ndev_priv *priv) { +struct enetc_hw *hw = &priv->si->hw;int i;for (i =0 ; i < priv->num_tx_rings; i++) -enetc_txbdr_wr (&priv->si->hw, i,ENETC_TBIER ,0 ); +enetc_txbdr_wr (hw, i,ENETC_TBIER ,0 );for (i =0 ; i < priv->num_rx_rings; i++) -enetc_rxbdr_wr (&priv->si->hw, i,ENETC_RBIER ,0 ); +enetc_rxbdr_wr (hw, i,ENETC_RBIER ,0 ); }static int enetc_phylink_connect (struct net_device *ndev)
@@ -2151,6 +2154,7 @@ int enetc_setup_tc_mqprio(struct net_device *ndev, void *type_data) {struct enetc_ndev_priv *priv =netdev_priv (ndev);struct tc_mqprio_qopt *mqprio = type_data; +struct enetc_hw *hw = &priv->si->hw;struct enetc_bdr *tx_ring;int num_stack_tx_queues;u8 num_tc;
@@ -2167,7 +2171,8 @@ int enetc_setup_tc_mqprio(struct net_device *ndev, void *type_data)/* Reset all ring priorities to 0 */ for (i =0 ; i < priv->num_tx_rings; i++) { tx_ring = priv->tx_ring[i]; -enetc_set_bdr_prio (&priv->si->hw, tx_ring->index,0 ); + tx_ring->prio =0 ; +enetc_set_bdr_prio (hw, tx_ring->index, tx_ring->prio); }return 0 ;
@@ -2186,7 +2191,8 @@ int enetc_setup_tc_mqprio(struct net_device *ndev, void *type_data)*/ for (i =0 ; i < num_tc; i++) { tx_ring = priv->tx_ring[i]; -enetc_set_bdr_prio (&priv->si->hw, tx_ring->index, i); + tx_ring->prio = i; +enetc_set_bdr_prio (hw, tx_ring->index, tx_ring->prio); }/* Reset the number of netdev queues based on the TC count */
@@ -2296,19 +2302,21 @@ static int enetc_set_rss(struct net_device *ndev, int en)static void enetc_enable_rxvlan (struct net_device *ndev,bool en) {struct enetc_ndev_priv *priv =netdev_priv (ndev); +struct enetc_hw *hw = &priv->si->hw;int i;for (i =0 ; i < priv->num_rx_rings; i++) -enetc_bdr_enable_rxvlan (&priv->si->hw, i, en); +enetc_bdr_enable_rxvlan (hw, i, en); }static void enetc_enable_txvlan (struct net_device *ndev,bool en) {struct enetc_ndev_priv *priv =netdev_priv (ndev); +struct enetc_hw *hw = &priv->si->hw;int i;for (i =0 ; i < priv->num_tx_rings; i++) -enetc_bdr_enable_txvlan (&priv->si->hw, i, en); +enetc_bdr_enable_txvlan (hw, i, en); }void enetc_set_features (struct net_device *ndev,netdev_features_t features)
drivers/net/ethernet/freescale/enetc/enetc.h +6 -4
@@ -91,6 +91,7 @@ struct enetc_bdr {void __iomem *rcir; };u16 index; +u16 prio;int bd_count;/* # of BDs */ int next_to_use;int next_to_clean;
@@ -423,19 +424,20 @@ int enetc_set_psfp(struct net_device *ndev, bool en);static inline void enetc_get_max_cap (struct enetc_ndev_priv *priv) { +struct enetc_hw *hw = &priv->si->hw;u32 reg; - reg =enetc_port_rd (&priv->si->hw,ENETC_PSIDCAPR ); + reg =enetc_port_rd (hw,ENETC_PSIDCAPR ); priv->psfp_cap.max_streamid = reg &ENETC_PSIDCAPR_MSK ;/* Port stream filter capability */ - reg =enetc_port_rd (&priv->si->hw,ENETC_PSFCAPR ); + reg =enetc_port_rd (hw,ENETC_PSFCAPR ); priv->psfp_cap.max_psfp_filter = reg &ENETC_PSFCAPR_MSK ;/* Port stream gate capability */ - reg =enetc_port_rd (&priv->si->hw,ENETC_PSGCAPR ); + reg =enetc_port_rd (hw,ENETC_PSGCAPR ); priv->psfp_cap.max_psfp_gate = (reg &ENETC_PSGCAPR_SGIT_MSK ); priv->psfp_cap.max_psfp_gatelist = (reg &ENETC_PSGCAPR_GCL_MSK ) >>16 ;/* Port flow meter capability */ - reg =enetc_port_rd (&priv->si->hw,ENETC_PFMCAPR ); + reg =enetc_port_rd (hw,ENETC_PFMCAPR ); priv->psfp_cap.max_psfp_meter = reg &ENETC_PFMCAPR_MSK ; }
drivers/net/ethernet/freescale/enetc/enetc_pf.c +2 -4
@@ -800,9 +800,6 @@ static void enetc_pf_netdev_setup(struct enetc_si *si, struct net_device *ndev, ndev->priv_flags |=IFF_UNICAST_FLT ; -if (si->hw_features &ENETC_SI_F_QBV ) - priv->active_offloads |=ENETC_F_QBV ; -if (si->hw_features &ENETC_SI_F_PSFP && !enetc_psfp_enable (priv)) { priv->active_offloads |=ENETC_F_QCI ; ndev->features |=NETIF_F_HW_TC ;
@@ -1053,7 +1050,8 @@ static void enetc_pl_mac_link_up(struct phylink_config *config,int idx; priv =netdev_priv (pf->si->ndev); -if (priv->active_offloads &ENETC_F_QBV ) + +if (pf->si->hw_features &ENETC_SI_F_QBV )enetc_sched_speed_set (priv, speed); if (!phylink_autoneg_inband(mode) &&
drivers/net/ethernet/freescale/enetc/enetc_qos.c +44 -39
203 lines not on this page · raw message
drivers/net/ethernet/intel/iavf/iavf_main.c +23 -10
@@ -2270,7 +2270,6 @@ static void iavf_disable_vf(struct iavf_adapter *adapter)iavf_free_queues (adapter);memset (adapter->vf_res,0 ,IAVF_VIRTCHNL_VF_RESOURCE_SIZE );iavf_shutdown_adminq (&adapter->hw); - adapter->netdev->flags &= ~IFF_UP ; adapter->flags &= ~IAVF_FLAG_RESET_PENDING ;iavf_change_state (adapter, __IAVF_DOWN);wake_up (&adapter->down_waitqueue);
@@ -2369,6 +2368,11 @@ static void iavf_reset_task(struct work_struct *work)iavf_disable_vf (adapter);mutex_unlock (&adapter->client_lock);mutex_unlock (&adapter->crit_lock); +if (netif_running (netdev)) { +rtnl_lock (); +dev_close (netdev); +rtnl_unlock (); + }return ;/* Do not attempt to reinit. It's dead, Jim. */ }
@@ -2381,6 +2385,7 @@ static void iavf_reset_task(struct work_struct *work)if (running) {netif_carrier_off (netdev); +netif_tx_stop_all_queues (netdev); adapter->link_up = false;iavf_napi_disable_all (adapter); }
@@ -2503,6 +2508,16 @@ static void iavf_reset_task(struct work_struct *work)mutex_unlock (&adapter->client_lock);mutex_unlock (&adapter->crit_lock); + +if (netif_running (netdev)) { +/* Close device to ensure that Tx queues will not be started +* during netif_device_attach() at the end of the reset task. +*/ +rtnl_lock (); +dev_close (netdev); +rtnl_unlock (); + } +dev_err (&adapter->pdev->dev,"failed to allocate resources during reinit\n" ); reset_finish:rtnl_lock ();
@@ -4174,23 +4189,21 @@ static int __maybe_unused iavf_resume(struct device *dev_d)static void iavf_remove (struct pci_dev *pdev) {struct iavf_adapter *adapter =iavf_pdev_to_adapter (pdev); -struct net_device *netdev = adapter->netdev;struct iavf_fdir_fltr *fdir, *fdirtmp;struct iavf_vlan_filter *vlf, *vlftmp; +struct iavf_cloud_filter *cf, *cftmp;struct iavf_adv_rss *rss, *rsstmp;struct iavf_mac_filter *f, *ftmp; -struct iavf_cloud_filter *cf, *cftmp; -struct iavf_hw *hw = &adapter->hw; +struct net_device *netdev; +struct iavf_hw *hw;int err; -/* When reboot/shutdown is in progress no need to do anything -* as the adapter is already REMOVE state that was set during -* iavf_shutdown() callback. -*/ -if (adapter->state == __IAVF_REMOVE) + netdev = adapter->netdev; + hw = &adapter->hw; + +if (test_and_set_bit (__IAVF_IN_REMOVE_TASK, &adapter->crit_section))return ; -set_bit (__IAVF_IN_REMOVE_TASK, &adapter->crit_section);/* Wait until port initialization is complete. * There are flows where register/unregister netdev may race. */
drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c +6 -2
@@ -7356,6 +7356,7 @@ static int mvpp2_get_sram(struct platform_device *pdev, struct mvpp2 *priv) {struct resource *res; +void __iomem *base; res =platform_get_resource (pdev,IORESOURCE_MEM ,2 );if (!res) {
@@ -7366,9 +7367,12 @@ static int mvpp2_get_sram(struct platform_device *pdev,return 0 ; } - priv->cm3_base =devm_ioremap_resource (&pdev->dev, res); + base =devm_ioremap_resource (&pdev->dev, res); +if (IS_ERR (base)) +return PTR_ERR (base); -return PTR_ERR_OR_ZERO (priv->cm3_base); + priv->cm3_base = base; +return 0 ; }static int mvpp2_probe (struct platform_device *pdev)
drivers/net/ethernet/marvell/octeontx2/af/rvu_debugfs.c +3 -0
@@ -441,6 +441,8 @@ static int rvu_dbg_rvu_pf_cgx_map_display(struct seq_file *filp, void *unused)sprintf (lmac,"LMAC%d" , lmac_id);seq_printf (filp,"%s\t0x%x\t\tNIX%d\t\t%s\t%s\n" ,dev_name (&pdev->dev), pcifunc, blkid, cgx, lmac); + +pci_dev_put (pdev); }return 0 ; }
@@ -2127,6 +2129,7 @@ static int cgx_print_dmac_flt(struct seq_file *s, int lmac_id) } } +pci_dev_put (pdev);return 0 ; }
drivers/net/ethernet/marvell/octeontx2/af/rvu_nix.c +2 -0
@@ -4832,6 +4832,8 @@ static int nix_setup_ipolicers(struct rvu *rvu, ipolicer->ref_count =devm_kcalloc (rvu->dev, ipolicer->band_prof.max,sizeof (u16),GFP_KERNEL ); +if (!ipolicer->ref_count) +return -ENOMEM ; }/* Set policer timeunit to 2us ie (19 + 1) * 100 nsec = 2us */
drivers/net/ethernet/marvell/octeontx2/af/rvu_sdp.c +5 -2
@@ -62,15 +62,18 @@ int rvu_sdp_init(struct rvu *rvu) pfvf->sdp_info =devm_kzalloc (rvu->dev,sizeof (struct sdp_node_info ),GFP_KERNEL ); -if (!pfvf->sdp_info) +if (!pfvf->sdp_info) { +pci_dev_put (pdev);return -ENOMEM ; + }dev_info (rvu->dev,"SDP PF number:%d\n" , sdp_pf_num[i]); -put_device (&pdev->dev); i++; } +pci_dev_put (pdev); +return 0 ; }
drivers/net/ethernet/mediatek/mtk_eth_soc.c +3 -1
@@ -2327,8 +2327,10 @@ static int mtk_open(struct net_device *dev)int err; err =mtk_start_dma (eth); -if (err) +if (err) { +phylink_disconnect_phy (mac->phylink);return err; + }if (eth->soc->offload_version &&mtk_ppe_start (ð->ppe) ==0 ) gdm_config =MTK_GDMA_TO_PPE ;
drivers/net/ethernet/mellanox/mlx4/qp.c +2 -1
@@ -697,7 +697,8 @@ static int mlx4_create_zones(struct mlx4_dev *dev, err =mlx4_bitmap_init (*bitmap + k,1 ,MLX4_QP_TABLE_RAW_ETH_SIZE -1 ,0 ,0 ); -mlx4_bitmap_alloc_range (*bitmap + k,1 ,1 ,0 ); +if (!err) +mlx4_bitmap_alloc_range (*bitmap + k,1 ,1 ,0 ); }if (err)
drivers/net/ethernet/mellanox/mlx5/core/cmd.c +3 -3
@@ -971,6 +971,7 @@ static void cmd_work_handler(struct work_struct *work)cmd_ent_get (ent);set_bit (MLX5_CMD_ENT_STATE_PENDING_COMP , &ent->state); +cmd_ent_get (ent);/* for the _real_ FW event on completion */ /* Skip sending command to fw if internal error */ if (mlx5_cmd_is_down (dev) || !opcode_allowed (&dev->cmd, ent->op)) {u8 status =0 ;
@@ -984,7 +985,6 @@ static void cmd_work_handler(struct work_struct *work)return ; } -cmd_ent_get (ent);/* for the _real_ FW event on completion */ /* ring doorbell after the descriptor is valid */ mlx5_core_dbg (dev,"writing 0x%x to command doorbell\n" ,1 << ent->idx);wmb ();
@@ -1598,8 +1598,8 @@ static void mlx5_cmd_comp_handler(struct mlx5_core_dev *dev, u64 vec, bool forcecmd_ent_put (ent);/* timeout work was canceled */ if (!forced ||/* Real FW completion */ -pci_channel_offline (dev->pdev) ||/* FW is inaccessible */ - dev->state ==MLX5_DEVICE_STATE_INTERNAL_ERROR ) +mlx5_cmd_is_down (dev) ||/* No real FW completion is expected */ + !opcode_allowed (cmd, ent->op))cmd_ent_put (ent); ent->ts2 =ktime_get_ns ();
drivers/net/ethernet/mellanox/mlx5/core/diag/fw_tracer.c +1 -1
@@ -638,7 +638,7 @@ static void mlx5_tracer_handle_timestamp_trace(struct mlx5_fw_tracer *tracer, trace_timestamp = (timestamp_event.timestamp &MASK_52_7 ) | (str_frmt->timestamp &MASK_6_0 ); else - trace_timestamp = ((timestamp_event.timestamp &MASK_52_7 ) -1 ) | + trace_timestamp = ((timestamp_event.timestamp -1 ) &MASK_52_7 ) | (str_frmt->timestamp &MASK_6_0 );mlx5_tracer_print_trace (str_frmt, dev, trace_timestamp);
drivers/net/ethernet/mellanox/mlx5/core/main.c +6 -3
@@ -1608,7 +1608,8 @@ static pci_ers_result_t mlx5_pci_err_detected(struct pci_dev *pdev, res = state == pci_channel_io_perm_failure ?PCI_ERS_RESULT_DISCONNECT :PCI_ERS_RESULT_NEED_RESET ; -mlx5_pci_trace (dev,"Exit, result = %d, %s\n" , res,result2str (res)); +mlx5_core_info (dev,"%s Device state = %d pci_status: %d. Exit, result = %d, %s\n" , + __func__, dev->state, dev->pci_status, res,result2str (res));return res; }
@@ -1647,7 +1648,8 @@ static pci_ers_result_t mlx5_pci_slot_reset(struct pci_dev *pdev)struct mlx5_core_dev *dev =pci_get_drvdata (pdev);int err; -mlx5_pci_trace (dev,"Enter\n" ); +mlx5_core_info (dev,"%s Device state = %d pci_status: %d. Enter\n" , + __func__, dev->state, dev->pci_status); err =mlx5_pci_enable_device (dev);if (err) {
@@ -1669,7 +1671,8 @@ static pci_ers_result_t mlx5_pci_slot_reset(struct pci_dev *pdev) res =PCI_ERS_RESULT_RECOVERED ; out: -mlx5_pci_trace (dev,"Exit, err = %d, result = %d, %s\n" , err, res,result2str (res)); +mlx5_core_info (dev,"%s Device state = %d pci_status: %d. Exit, err = %d, result = %d, %s\n" , + __func__, dev->state, dev->pci_status, err, res,result2str (res));return res; }
drivers/net/ethernet/microchip/sparx5/sparx5_netdev.c +12 -2
@@ -83,7 +83,7 @@ static int sparx5_port_open(struct net_device *ndev) err =phylink_of_phy_connect (port->phylink, port->of_node,0 );if (err) {netdev_err (ndev,"Could not attach to PHY\n" ); -return err; + goto err_connect; }phylink_start (port->phylink);
@@ -95,10 +95,20 @@ static int sparx5_port_open(struct net_device *ndev) err =sparx5_serdes_set (port->sparx5, port, &port->conf); else err =phy_power_on (port->serdes); -if (err) +if (err) {netdev_err (ndev,"%s failed\n" , __func__); + goto out_power; + } } +return 0 ; + +out_power: +phylink_stop (port->phylink); +phylink_disconnect_phy (port->phylink); +err_connect: +sparx5_port_enable (port, false); +return err; }
drivers/net/ethernet/netronome/nfp/nfp_devlink.c +1 -1
@@ -363,7 +363,7 @@ int nfp_devlink_port_register(struct nfp_app *app, struct nfp_port *port)return ret; attrs.split = eth_port.is_split; - attrs.splittable = !attrs.split; + attrs.splittable = eth_port.port_lanes >1 && !attrs.split; attrs.lanes = eth_port.port_lanes; attrs.flavour =DEVLINK_PORT_FLAVOUR_PHYSICAL ; attrs.phys.port_number = eth_port.label_port;
drivers/net/ethernet/netronome/nfp/nfp_net_ethtool.c +3 -0
@@ -1219,6 +1219,9 @@ nfp_port_get_module_info(struct net_device *netdev,u8 data; port =nfp_port_from_netdev (netdev); +if (!port) +return -EOPNOTSUPP ; +/* update port state to get latest interface */ set_bit (NFP_PORT_CHANGED , &port->flags); eth_port =nfp_port_get_eth_port (port);
drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c +5 -1
@@ -1148,6 +1148,7 @@ static void pch_gbe_tx_queue(struct pch_gbe_adapter *adapter, buffer_info->dma =0 ; buffer_info->time_stamp =0 ; tx_ring->next_to_use = ring_num; +dev_kfree_skb_any (skb);return ; } buffer_info->mapped = true;
@@ -2464,6 +2465,7 @@ static void pch_gbe_remove(struct pci_dev *pdev)unregister_netdev (netdev);pch_gbe_phy_hw_reset (&adapter->hw); +pci_dev_put (adapter->ptp_pdev);free_netdev (netdev); }
@@ -2539,7 +2541,7 @@ static int pch_gbe_probe(struct pci_dev *pdev,/* setup the private structure */ ret =pch_gbe_sw_init (adapter);if (ret) - goto err_free_netdev; + goto err_put_dev;/* Initialize PHY */ ret =pch_gbe_init_phy (adapter);
@@ -2597,6 +2599,8 @@ static int pch_gbe_probe(struct pci_dev *pdev, err_free_adapter:pch_gbe_phy_hw_reset (&adapter->hw); +err_put_dev: +pci_dev_put (adapter->ptp_pdev); err_free_netdev:free_netdev (netdev);return ret;
drivers/net/ethernet/qlogic/qla3xxx.c +1 -0
@@ -2469,6 +2469,7 @@ static netdev_tx_t ql3xxx_send(struct sk_buff *skb, skb_shinfo(skb)->nr_frags);if (tx_cb->seg_count ==-1 ) {netdev_err (ndev,"%s: invalid segment count!\n" , __func__); +dev_kfree_skb_any (skb);return NETDEV_TX_OK ; }
drivers/net/ethernet/sfc/ef100_netdev.c +1 -0
@@ -200,6 +200,7 @@ static netdev_tx_t ef100_hard_start_xmit(struct sk_buff *skb, skb->len, skb->data_len, channel->channel);if (!efx->n_channels || !efx->n_tx_channels || !channel) {netif_stop_queue (net_dev); +dev_kfree_skb_any (skb); goto err; }
drivers/net/macsec.c +4 -24
@@ -2644,11 +2644,6 @@ static int macsec_upd_offload(struct sk_buff *skb, struct genl_info *info)if (ret) goto rollback; -/* Force features update, since they are different for SW MACSec and -* HW offloading cases. -*/ -netdev_update_features (dev); -rtnl_unlock ();return 0 ;
@@ -3416,16 +3411,9 @@ static netdev_tx_t macsec_start_xmit(struct sk_buff *skb,return ret; } -#define SW_MACSEC_FEATURES \ +#define MACSEC_FEATURES \ (NETIF_F_SG | NETIF_F_HIGHDMA | NETIF_F_FRAGLIST) -/* If h/w offloading is enabled, use real device features save for -* VLAN_FEATURES - they require additional ops -* HW_MACSEC - no reason to report it -*/ -#define REAL_DEV_FEATURES (dev) \ - ((dev)->features & ~(NETIF_F_VLAN_FEATURES | NETIF_F_HW_MACSEC)) -static int macsec_dev_init (struct net_device *dev) {struct macsec_dev *macsec =macsec_priv (dev);
@@ -3442,12 +3430,8 @@ static int macsec_dev_init(struct net_device *dev)return err; } -if (macsec_is_offloaded (macsec)) { - dev->features =REAL_DEV_FEATURES (real_dev); - }else { - dev->features = real_dev->features &SW_MACSEC_FEATURES ; - dev->features |=NETIF_F_LLTX |NETIF_F_GSO_SOFTWARE ; - } + dev->features = real_dev->features &MACSEC_FEATURES ; + dev->features |=NETIF_F_LLTX |NETIF_F_GSO_SOFTWARE ; dev->needed_headroom = real_dev->needed_headroom +MACSEC_NEEDED_HEADROOM ;
@@ -3476,10 +3460,7 @@ static netdev_features_t macsec_fix_features(struct net_device *dev,struct macsec_dev *macsec =macsec_priv (dev);struct net_device *real_dev = macsec->real_dev; -if (macsec_is_offloaded (macsec)) -return REAL_DEV_FEATURES (real_dev); - - features &= (real_dev->features &SW_MACSEC_FEATURES ) | + features &= (real_dev->features &MACSEC_FEATURES ) |NETIF_F_GSO_SOFTWARE |NETIF_F_SOFT_FEATURES ; features |=NETIF_F_LLTX ;
@@ -3827,7 +3808,6 @@ static int macsec_changelink(struct net_device *dev, struct nlattr *tb[],if (macsec_is_offloaded (macsec)) {const struct macsec_ops *ops;struct macsec_context ctx; -int ret; ops =macsec_get_ops (netdev_priv (dev), &ctx);if (!ops) {
drivers/net/usb/qmi_wwan.c +1 -0
@@ -1353,6 +1353,7 @@ static const struct usb_device_id products[] = { {QMI_FIXED_INTF(0x2357, 0x0201, 4)}, /* TP-LINK HSUPA Modem MA180 */ {QMI_FIXED_INTF(0x2357, 0x9000, 4)}, /* TP-LINK MA260 */ {QMI_QUIRK_SET_DTR(0x1bc7, 0x1031, 3)}, /* Telit LE910C1-EUX */ + {QMI_QUIRK_SET_DTR(0x1bc7, 0x103a, 0)}, /* Telit LE910C4-WWX */ {QMI_QUIRK_SET_DTR(0x1bc7, 0x1040, 2)}, /* Telit LE922A */ {QMI_QUIRK_SET_DTR(0x1bc7, 0x1050, 2)}, /* Telit FN980 */ {QMI_QUIRK_SET_DTR(0x1bc7, 0x1060, 2)}, /* Telit LN920 */
drivers/net/wireless/ath/ath11k/qmi.h +1 -1
@@ -27,7 +27,7 @@#define ATH11K_QMI_WLANFW_MAX_NUM_MEM_SEG_V01 52#define ATH11K_QMI_CALDB_SIZE 0x480000#define ATH11K_QMI_BDF_EXT_STR_LENGTH 0x20 -#define ATH11K_QMI_FW_MEM_REQ_SEGMENT_CNT 3 +#define ATH11K_QMI_FW_MEM_REQ_SEGMENT_CNT 5#define QMI_WLFW_REQUEST_MEM_IND_V01 0x0035#define QMI_WLFW_FW_MEM_READY_IND_V01 0x0037
drivers/net/wireless/cisco/airo.c +14 -4
@@ -5233,7 +5233,7 @@ static int get_wep_tx_idx(struct airo_info *ai)return -1 ; } -static int set_wep_key (struct airo_info *ai,u16 index,const char *key, +static int set_wep_key (struct airo_info *ai,u16 index,const u8 *key,u16 keylen,int perm,int lock) {static const unsigned char macaddr[ETH_ALEN ] = {0x01 ,0 ,0 ,0 ,0 ,0 };
@@ -5284,7 +5284,7 @@ static void proc_wepkey_on_close(struct inode *inode, struct file *file)struct net_device *dev =PDE_DATA (inode);struct airo_info *ai = dev->ml_priv;int i, rc; -char key[16 ]; +u8 key[16 ];u16 index =0 ;int j =0 ;
@@ -5312,12 +5312,22 @@ static void proc_wepkey_on_close(struct inode *inode, struct file *file) }for (i =0 ; i <16 *3 && data->wbuffer[i+j]; i++) { +int val; + +if (i %3 ==2 ) +continue ; + + val =hex_to_bin (data->wbuffer[i+j]); +if (val <0 ) { +airo_print_err (ai->dev->name,"WebKey passed invalid key hex" ); +return ; + }switch (i%3 ) {case 0 : - key[i/3 ] =hex_to_bin (data->wbuffer[i+j])<<4 ; + key[i/3 ] = (u8 )val <<4 ;break ;case 1 : - key[i/3 ] |=hex_to_bin (data->wbuffer[i+j]); + key[i/3 ] |= (u8 )val;break ; } }
drivers/net/wireless/mac80211_hwsim.c +5 -0
@@ -845,6 +845,7 @@ static void hwsim_send_nullfunc(struct mac80211_hwsim_data *data, u8 *mac,struct hwsim_vif_priv *vp = (void *)vif->drv_priv;struct sk_buff *skb;struct ieee80211_hdr *hdr; +struct ieee80211_tx_info *cb;if (!vp->assoc)return ;
@@ -866,6 +867,10 @@ static void hwsim_send_nullfunc(struct mac80211_hwsim_data *data, u8 *mac,memcpy (hdr->addr2, mac,ETH_ALEN );memcpy (hdr->addr3, vp->bssid,ETH_ALEN ); + cb =IEEE80211_SKB_CB (skb); + cb->control.rates[0 ].count =1 ; + cb->control.rates[1 ].idx =-1 ; +rcu_read_lock ();mac80211_hwsim_tx_frame (data->hw, skb,rcu_dereference (vif->chanctx_conf)->def.chan);
drivers/net/wireless/microchip/wilc1000/cfg80211.c +31 -9
@@ -939,30 +939,52 @@ static inline void wilc_wfi_cfg_parse_ch_attr(u8 *buf, u32 len, u8 sta_ch)return ;while (index +sizeof (*e) <= len) { +u16 attr_size; + e = (struct wilc_attr_entry *)&buf[index]; -if (e->attr_type ==IEEE80211_P2P_ATTR_CHANNEL_LIST ) + attr_size =le16_to_cpu (e->attr_len); + +if (index +sizeof (*e) + attr_size > len) +return ; + +if (e->attr_type ==IEEE80211_P2P_ATTR_CHANNEL_LIST && + attr_size >= (sizeof (struct wilc_attr_ch_list ) -sizeof (*e))) ch_list_idx = index; -else if (e->attr_type ==IEEE80211_P2P_ATTR_OPER_CHANNEL ) +else if (e->attr_type ==IEEE80211_P2P_ATTR_OPER_CHANNEL && + attr_size == (sizeof (struct wilc_attr_oper_ch ) -sizeof (*e))) op_ch_idx = index; +if (ch_list_idx && op_ch_idx)break ; - index +=le16_to_cpu (e->attr_len) +sizeof (*e); + + index +=sizeof (*e) + attr_size; }if (ch_list_idx) { -u16 attr_size; -struct wilc_ch_list_elem *e; -int i; +unsigned int i; +u16 elem_size; ch_list = (struct wilc_attr_ch_list *)&buf[ch_list_idx]; - attr_size =le16_to_cpu (ch_list->attr_len); -for (i =0 ; i < attr_size;) { +/* the number of bytes following the final 'elem' member */ + elem_size =le16_to_cpu (ch_list->attr_len) - + (sizeof (*ch_list) -sizeof (struct wilc_attr_entry )); +for (i =0 ; i < elem_size;) { +struct wilc_ch_list_elem *e; + e = (struct wilc_ch_list_elem *)(ch_list->elem + i); + + i +=sizeof (*e); +if (i > elem_size) +break ; + + i += e->no_of_channels; +if (i > elem_size) +break ; +if (e->op_class ==WILC_WLAN_OPERATING_CLASS_2_4GHZ ) {memset (e->ch_list, sta_ch, e->no_of_channels);break ; } - i += e->no_of_channels; } }
drivers/net/wireless/microchip/wilc1000/hif.c +16 -5
@@ -467,14 +467,25 @@ void *wilc_parse_join_bss_param(struct cfg80211_bss *bss, rsn_ie =cfg80211_find_ie (WLAN_EID_RSN , ies->data, ies->len);if (rsn_ie) { +int rsn_ie_len =sizeof (struct element ) + rsn_ie[1 ];int offset =8 ; - param->mode_802_11i =2 ; - param->rsn_found = true;/* extract RSN capabilities */ - offset += (rsn_ie[offset] *4 ) +2 ; - offset += (rsn_ie[offset] *4 ) +2 ; -memcpy (param->rsn_cap, &rsn_ie[offset],2 ); +if (offset < rsn_ie_len) { +/* skip over pairwise suites */ + offset += (rsn_ie[offset] *4 ) +2 ; + +if (offset < rsn_ie_len) { +/* skip over authentication suites */ + offset += (rsn_ie[offset] *4 ) +2 ; + +if (offset +1 < rsn_ie_len) { + param->mode_802_11i =2 ; + param->rsn_found = true; +memcpy (param->rsn_cap, &rsn_ie[offset],2 ); + } + } + } }if (param->rsn_found) {
drivers/net/wwan/iosm/iosm_ipc_pcie.c +1 -1
@@ -249,7 +249,7 @@ static enum ipc_pcie_sleep_state ipc_pcie_read_bios_cfg(struct device *dev)if (object->integer.value ==3 ) sleep_state =IPC_PCIE_D3L2 ; -kfree (object); +ACPI_FREE (object); default_ret:return sleep_state;
drivers/nfc/st-nci/se.c +36 -13
68 lines not on this page · raw message
drivers/nvme/host/pci.c +18 -0
@@ -3351,6 +3351,10 @@ static const struct pci_device_id nvme_id_table[] = { { PCI_DEVICE(0x1cc1, 0x8201), /* ADATA SX8200PNP 512GB */ .driver_data =NVME_QUIRK_NO_DEEPEST_PS | NVME_QUIRK_IGNORE_DEV_SUBNQN, }, + { PCI_DEVICE(0x1344, 0x5407), /* Micron Technology Inc NVMe SSD */ + .driver_data = NVME_QUIRK_IGNORE_DEV_SUBNQN }, + { PCI_DEVICE(0x1344, 0x6001), /* Micron Nitro NVMe */ + .driver_data = NVME_QUIRK_BOGUS_NID, }, { PCI_DEVICE(0x1c5c, 0x1504), /* SK Hynix PC400 */ .driver_data = NVME_QUIRK_DISABLE_WRITE_ZEROES, }, { PCI_DEVICE(0x15b7, 0x2001), /* Sandisk Skyhawk */
@@ -3361,6 +3365,20 @@ static const struct pci_device_id nvme_id_table[] = { .driver_data = NVME_QUIRK_NO_DEEPEST_PS, }, { PCI_DEVICE(0x2646, 0x2263), /* KINGSTON A2000 NVMe SSD */ .driver_data = NVME_QUIRK_NO_DEEPEST_PS, }, + { PCI_DEVICE(0x2646, 0x5018), /* KINGSTON OM8SFP4xxxxP OS21012 NVMe SSD */ + .driver_data = NVME_QUIRK_DISABLE_WRITE_ZEROES, }, + { PCI_DEVICE(0x2646, 0x5016), /* KINGSTON OM3PGP4xxxxP OS21011 NVMe SSD */ + .driver_data = NVME_QUIRK_DISABLE_WRITE_ZEROES, }, + { PCI_DEVICE(0x2646, 0x501A), /* KINGSTON OM8PGP4xxxxP OS21005 NVMe SSD */ + .driver_data = NVME_QUIRK_DISABLE_WRITE_ZEROES, }, + { PCI_DEVICE(0x2646, 0x501B), /* KINGSTON OM8PGP4xxxxQ OS21005 NVMe SSD */ + .driver_data = NVME_QUIRK_DISABLE_WRITE_ZEROES, }, + { PCI_DEVICE(0x2646, 0x501E), /* KINGSTON OM3PGP4xxxxQ OS21011 NVMe SSD */ + .driver_data = NVME_QUIRK_DISABLE_WRITE_ZEROES, }, + { PCI_DEVICE(0x1f40, 0x5236), /* Netac Technologies Co. NV7000 NVMe SSD */ + .driver_data = NVME_QUIRK_BOGUS_NID, }, + { PCI_DEVICE(0x1e4B, 0x1001), /* MAXIO MAP1001 */ + .driver_data = NVME_QUIRK_BOGUS_NID, }, { PCI_DEVICE(0x1e4B, 0x1002), /* MAXIO MAP1002 */ .driver_data = NVME_QUIRK_BOGUS_NID, }, { PCI_DEVICE(0x1e4B, 0x1202), /* MAXIO MAP1202 */
drivers/nvme/target/configfs.c +5 -2
@@ -1189,6 +1189,7 @@ static ssize_t nvmet_subsys_attr_model_store_locked(struct nvmet_subsys *subsys, const char *page, size_t count) { int pos = 0, len; +char *val;if (subsys->subsys_discovered) { pr_err("Can't set model number. %s is already assigned\n",
@@ -1211,9 +1212,11 @@ static ssize_t nvmet_subsys_attr_model_store_locked(struct nvmet_subsys *subsys,return -EINVAL ; } - subsys->model_number =kmemdup_nul (page, len,GFP_KERNEL ); -if (!subsys->model_number) + val =kmemdup_nul (page, len,GFP_KERNEL ); +if (!val)return -ENOMEM ; +kfree (subsys->model_number); + subsys->model_number = val;return count; }
drivers/platform/x86/acer-wmi.c +9 -0
@@ -564,6 +564,15 @@ static const struct dmi_system_id acer_quirks[] __initconst = { }, .driver_data = (void *)ACER_CAP_KBD_DOCK, }, + { + .callback = set_force_caps, + .ident = "Acer Aspire Switch V 10 SW5-017", + .matches = { +DMI_EXACT_MATCH (DMI_SYS_VENDOR ,"Acer" ), + DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "SW5-017"), + }, + .driver_data = (void *)ACER_CAP_KBD_DOCK, + }, { .callback = set_force_caps, .ident = "Acer One 10 (S1003)",
drivers/platform/x86/asus-wmi.c +2 -0
@@ -1511,6 +1511,8 @@ static void asus_wmi_set_xusb2pr(struct asus_wmi *asus)pci_write_config_dword (xhci_pdev,USB_INTEL_XUSB2PR ,cpu_to_le32 (ports_available)); +pci_dev_put (xhci_pdev); +pr_info ("set USB_INTEL_XUSB2PR old: 0x%04x, new: 0x%04x\n" , orig_ports_available, ports_available); }
drivers/platform/x86/hp-wmi.c +3 -0
@@ -64,6 +64,7 @@ enum hp_wmi_event_ids {HPWMI_PEAKSHIFT_PERIOD =0x0F ,HPWMI_BATTERY_CHARGE_PERIOD =0x10 ,HPWMI_SANITIZATION_MODE =0x17 , + HPWMI_SMART_EXPERIENCE_APP = 0x21, }; struct bios_args {
@@ -641,6 +642,8 @@ static void hp_wmi_notify(u32 value, void *context)break ;case HPWMI_SANITIZATION_MODE :break ; +case HPWMI_SMART_EXPERIENCE_APP : +break ;default :pr_info ("Unknown event_id - %d - 0x%x\n" , event_id, event_data);break ;
drivers/platform/x86/ideapad-laptop.c +41 -1
74 lines not on this page · raw message
drivers/platform/x86/intel/hid.c +3 -0
@@ -27,6 +27,9 @@ static const struct acpi_device_id intel_hid_ids[] = { {"INTC1051", 0}, {"INTC1054", 0}, {"INTC1070", 0}, + {"INTC1076", 0}, + {"INTC1077", 0}, + {"INTC1078", 0}, {"", 0}, };MODULE_DEVICE_TABLE (acpi, intel_hid_ids);
drivers/platform/x86/intel/pmt/class.c +30 -1
@@ -9,6 +9,7 @@*/ #include <linux/kernel.h> +#include <linux/io-64-nonatomic-lo-hi.h> #include <linux/module.h> #include <linux/mm.h> #include <linux/pci.h>
@@ -18,6 +19,7 @@#define PMT_XA_START 0#define PMT_XA_MAX INT_MAX#define PMT_XA_LIMIT XA_LIMIT(PMT_XA_START, PMT_XA_MAX) +#define GUID_SPR_PUNIT 0x9956f43f/* * Early implementations of PMT on client platforms have some
@@ -41,6 +43,29 @@ bool intel_pmt_is_early_client_hw(struct device *dev) }EXPORT_SYMBOL_GPL (intel_pmt_is_early_client_hw); +static inline int +pmt_memcpy64_fromio (void *to,const u64 __iomem *from,size_t count) +{ +int i, remain; +u64 *buf = to; + +if (!IS_ALIGNED ((unsigned long )from,8 )) +return -EFAULT ; + +for (i =0 ; i < count/8 ; i++) + buf[i] =readq (&from[i]); + +/* Copy any remaining bytes */ + remain = count %8 ; +if (remain) { +u64 tmp =readq (&from[i]); + +memcpy (&buf[i], &tmp, remain); + } + +return count; +} +/* * sysfs */
@@ -62,7 +87,11 @@ intel_pmt_read(struct file *filp, struct kobject *kobj,if (count > entry->size - off) count = entry->size - off; -memcpy_fromio (buf, entry->base + off, count); +if (entry->guid ==GUID_SPR_PUNIT ) +/* PUNIT on SPR only supports aligned 64-bit read */ + count =pmt_memcpy64_fromio (buf, entry->base + off, count); +else +memcpy_fromio (buf, entry->base + off, count);return count; }
drivers/platform/x86/touchscreen_dmi.c +25 -0
Lines of this file are not shown. View the raw message.
drivers/scsi/storvsc_drv.c +34 -35
69 lines not on this page · raw message
drivers/tty/serial/fsl_lpuart.c +55 -27
82 lines not on this page · raw message
drivers/xen/xen-pciback/conf_space_capability.c +6 -3
Lines of this file are not shown. View the raw message.
fs/ceph/caps.c +13 -37
50 lines not on this page · raw message
fs/cifs/cifs_dfs_ref.c +2 -57
59 lines not on this page · raw message
fs/cifs/connect.c +713 -646
1,359 lines not on this page · raw message
fs/cifs/dfs_cache.c +36 -8
44 lines not on this page · raw message
fs/cifs/misc.c +5 -57
62 lines not on this page · raw message
net/netfilter/nf_conntrack_standalone.c +1 -1
Lines of this file are not shown. View the raw message.
net/rxrpc/call_object.c +23 -21
44 lines not on this page · raw message
net/rxrpc/conn_client.c +38 -28
66 lines not on this page · raw message
net/rxrpc/conn_object.c +25 -24
49 lines not on this page · raw message
net/rxrpc/local_object.c +34 -34
68 lines not on this page · raw message
net/rxrpc/proc.c +72 -3
75 lines not on this page · raw message
sound/soc/fsl/fsl_sai.c +28 -27
55 lines not on this page · raw message
tools/testing/selftests/bpf/verifier/ref_tracking.c +36 -0
Lines of this file are not shown. View the raw message.
tools/testing/selftests/net/mptcp/mptcp_connect.c +58 -14
72 lines not on this page · raw message
tools/testing/selftests/net/mptcp/simult_flows.sh +15 -22
Lines of this file are not shown. View the 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.