Linux 5.10.157
Greg Kroah-Hartman
maintainerI'm announcing the release of the 5.10.157 kernel.
All users of the 5.10 kernel series must upgrade.
The updated 5.10.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-5.10.y
and can be browsed at the normal kernel.org git web browser:
https://git.kernel.org/?p=linux/kernel/git/stable/linux-stable.git;a=summary
thanks,
greg k-h
------------
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/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/kvm/svm/svm.c | 16 arch/x86/mm/ioremap.c | 8 block/bfq-cgroup.c | 4 drivers/android/binder.c | 437 +++++++++++++-- drivers/ata/libata-scsi.c | 55 + drivers/bus/sunxi-rsb.c | 29 drivers/dma-buf/dma-heap.c | 28 drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c | 8 drivers/gpu/drm/amd/display/dc/dce120/dce120_resource.c | 3 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/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/arc-rimi.c | 4 drivers/net/arcnet/arcdevice.h | 6 drivers/net/arcnet/arcnet.c | 66 ++ drivers/net/arcnet/com20020-isa.c | 4 drivers/net/arcnet/com20020-pci.c | 2 drivers/net/arcnet/com20020_cs.c | 13 drivers/net/arcnet/com90io.c | 4 drivers/net/arcnet/com90xx.c | 4 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/mediatek/mtk_eth_soc.c | 3 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/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/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/nfc/st-nci/se.c | 6 drivers/nvme/host/pci.c | 4 drivers/platform/x86/acer-wmi.c | 9 drivers/platform/x86/asus-wmi.c | 2 drivers/platform/x86/hp-wmi.c | 3 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_sas.c | 13 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_omap.c | 7 drivers/usb/cdns3/core.c | 24 drivers/usb/cdns3/core.h | 5 drivers/usb/cdns3/drd.c | 101 ++- drivers/usb/cdns3/drd.h | 67 +- 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/ceph/caps.c | 105 ++- fs/ceph/mds_client.c | 90 ++- fs/ceph/mds_client.h | 5 fs/ceph/snap.c | 31 - fs/ceph/strings.c | 1 fs/ext4/extents.c | 18 fs/fuse/file.c | 36 - fs/nilfs2/sufile.c | 8 fs/zonefs/super.c | 37 - include/linux/ceph/ceph_fs.h | 1 include/linux/netfilter/ipset/ip_set.h | 3 include/net/switchdev.h | 2 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/bridge/br_vlan.c | 33 - 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 | 32 - net/mac80211/main.c | 8 net/mac80211/mesh_pathtbl.c | 2 net/netfilter/ipset/ip_set_hash_ip.c | 17 net/netfilter/ipset/ip_set_hash_ipmark.c | 10 net/netfilter/ipset/ip_set_hash_ipport.c | 3 net/netfilter/ipset/ip_set_hash_ipportip.c | 3 net/netfilter/ipset/ip_set_hash_ipportnet.c | 3 net/netfilter/ipset/ip_set_hash_net.c | 11 net/netfilter/ipset/ip_set_hash_netiface.c | 10 net/netfilter/ipset/ip_set_hash_netnet.c | 16 net/netfilter/ipset/ip_set_hash_netport.c | 11 net/netfilter/ipset/ip_set_hash_netportnet.c | 16 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/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/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/sgtl5000.c | 1 sound/soc/intel/boards/bytcht_es8316.c | 7 sound/soc/soc-pcm.c | 5 tools/testing/selftests/bpf/verifier/ref_tracking.c | 36 + 183 files changed, 2158 insertions(+), 895 deletions(-)
Ahmed S. Darwish (1):
net: arcnet: Fix RESET flag handling
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
Alessandro Astone (2):
binder: Address corner cases in deferred copy and fixup
binder: Gracefully handle BINDER_TYPE_FDA objects with num_fds=0
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
Arnd Bergmann (1):
binder: fix pointer cast warning
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
Brian King (1):
scsi: ibmvfc: Avoid path failures during live migration
Brian Norris (1):
mmc: sdhci-brcmstb: Fix SDHCI_RESET_ALL for CQHCI
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
Damien Le Moal (1):
zonefs: fix zone report size in __zonefs_io_error()
Dan Carpenter (1):
ceph: fix off by one bugs in unsafe_request_wait()
Daniel Xu (1):
netfilter: conntrack: Fix data-races around ct mark
Danielle Ratson (1):
bridge: switchdev: Notify about VLAN protocol changes
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.10.157
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
Ido Schimmel (1):
bridge: switchdev: Fix memory leaks when changing VLAN protocol
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
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: Limit the maximal range of consecutive elements to add/delete
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
Liu Jian (1):
net: ethernet: mtk_eth_soc: fix error handling in mtk_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
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 (2):
nfc: st-nci: fix incorrect validating logic in EVT_TRANSACTION
nfc: st-nci: fix memory leaks in EVT_TRANSACTION
Maxim Levitsky (2):
KVM: x86: nSVM: leave nested mode on vCPU free
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
Pawel Laszczak (1):
usb: cdns3: Add support for DRD CDNSP
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
Randy Dunlap (1):
nios2: add FORCE for vmlinuz.gz
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
Sabrina Dubroca (1):
Revert "net: macsec: report real_dev features when HW offloading is enabled"
Samuel Holland (1):
bus: sunxi-rsb: Support atomic transfers
Sean Nyekjaer (1):
spi: stm32: fix stm32_spi_prepare_mbr() that halves spi clk for every run
Simon Rettberg (1):
drm/display: Don't assume dual mode adaptors support i2c sub-addressing
Stefan Haberland (1):
s390/dasd: fix no record found for raw_track_access
Thinh Nguyen (2):
usb: dwc3: gadget: Return -ESHUTDOWN on ep disable
usb: dwc3: gadget: Clear ep descriptor last
Todd Kjos (3):
binder: avoid potential data leakage when copying txn
binder: read pre-translated fds from sender buffer
binder: defer copies of pre-patched txn data
Vishwanath Pai (1):
netfilter: ipset: regression in ip_set_hash_ip.c
Vladimir Oltean (3):
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 reconfigurationWang Hai (2):
net: pch_gbe: fix potential memleak in pch_gbe_tx_queue()
arcnet: fix potential memory leak in com20020_probe()
Wenchao Hao (1):
ata: libata-scsi: simplify __ata_scsi_queuecmd()
Xin Long (3):
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 (2):
spi: dw-dma: decrease reference count in dw_spi_dma_init_mfld() platform/x86: asus-wmi: add missing pci_dev_put() in asus_wmi_set_xusb2pr()
Xiubo Li (9):
ceph: do not update snapshot context when there is no new snapshot
ceph: avoid putting the realm twice when decoding snaps fails
ceph: make ceph_create_session_msg a global symbol
ceph: make iterate_sessions a global symbol
ceph: flush mdlog before umounting
ceph: flush the mdlog before waiting on unsafe reqs
ceph: put the requests/sessions when it fails to alloc memory
ceph: fix possible NULL pointer dereference for req->r_session
ceph: fix NULL pointer dereference for req->r_session
Yang Yingliang (7):
scsi: scsi_transport_sas: Fix error handling in sas_phy_add()
regulator: core: fix UAF in destroy_regulator()
tee: optee: fix possible memory leak in optee_register_device()
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()
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()
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 = 10 -SUBLEVEL = 156 +SUBLEVEL = 157 EXTRAVERSION = NAME = Dare mighty things
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
@@ -387,8 +387,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
@@ -203,7 +203,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/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
@@ -60,7 +60,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 vdso-syms.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
@@ -64,9 +64,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/kvm/svm/svm.c +1 -15
@@ -305,12 +305,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);
@@ -1357,6 +1351,7 @@ static void svm_free_vcpu(struct kvm_vcpu *vcpu)*/ svm_clear_current_vmcb (svm->vmcb); +svm_leave_nested (vcpu);svm_free_nested (svm);__free_page (pfn_to_page (__sme_clr (svm->vmcb_pa) >>PAGE_SHIFT ));
@@ -3115,15 +3110,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/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) {
block/bfq-cgroup.c +4 -0
@@ -611,6 +611,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.c +383 -54
591 lines not on this page · raw message
drivers/ata/libata-scsi.c +31 -24
75 lines not on this page · raw message
drivers/bus/sunxi-rsb.c +21 -8
@@ -268,6 +268,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 ;
@@ -275,13 +278,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 */
@@ -293,18 +306,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 ; }
drivers/dma-buf/dma-heap.c +15 -13
@@ -209,18 +209,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 );
@@ -259,13 +247,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_gem.c +3 -5
@@ -341,11 +341,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/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/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
@@ -745,6 +745,10 @@ void intel_gt_invalidate_tlbs(struct intel_gt *gt)if (!i915_mmio_reg_offset (rb.reg))continue ; +if (INTEL_GEN (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
@@ -1042,6 +1042,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
@@ -198,6 +198,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
@@ -501,13 +501,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
@@ -2020,6 +2020,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
@@ -53,9 +53,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
@@ -76,6 +73,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
@@ -395,9 +395,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/touchscreen/goodix.c +11 -0
@@ -1059,6 +1059,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);
@@ -1066,6 +1067,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
@@ -1615,7 +1615,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
@@ -254,6 +254,7 @@ struct dm_integrity_c {struct completion crypto_backoff; +bool wrote_to_journal;bool journal_uptodate;bool just_formatted;bool recalculate_flag;
@@ -2256,6 +2257,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++) {
@@ -2470,10 +2473,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;
@@ -2980,10 +2979,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' ) {
@@ -3011,6 +3017,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/arc-rimi.c +2 -2
@@ -332,7 +332,7 @@ static int __init arc_rimi_init(void) dev->irq =9 ;if (arcrimi_probe (dev)) { -free_netdev (dev); +free_arcdev (dev);return -EIO ; }
@@ -349,7 +349,7 @@ static void __exit arc_rimi_exit(void)iounmap (lp->mem_start);release_mem_region (dev->mem_start, dev->mem_end - dev->mem_start +1 );free_irq (dev->irq, dev); -free_netdev (dev); +free_arcdev (dev); }#ifndef MODULE
drivers/net/arcnet/arcdevice.h +6 -0
@@ -298,6 +298,10 @@ struct arcnet_local {int excnak_pending;/* We just got an excesive nak interrupt */ +/* RESET flag handling */ +int reset_in_progress; +struct work_struct reset_work; +struct {uint16_t sequence;/* sequence number (incs with each packet) */ __be16 aborted_seq;
@@ -350,7 +354,9 @@ void arcnet_dump_skb(struct net_device *dev, struct sk_buff *skb, char *desc)void arcnet_unregister_proto (struct ArcProto *proto);irqreturn_t arcnet_interrupt (int irq,void *dev_id); +struct net_device *alloc_arcdev (const char *name); +void free_arcdev (struct net_device *dev);int arcnet_open (struct net_device *dev);int arcnet_close (struct net_device *dev);
drivers/net/arcnet/arcnet.c +62 -4
113 lines not on this page · raw message
drivers/net/arcnet/com20020-isa.c +2 -2
@@ -169,7 +169,7 @@ static int __init com20020_init(void) dev->irq =9 ;if (com20020isa_probe (dev)) { -free_netdev (dev); +free_arcdev (dev);return -EIO ; }
@@ -182,7 +182,7 @@ static void __exit com20020_exit(void)unregister_netdev (my_dev);free_irq (my_dev->irq, my_dev);release_region (my_dev->base_addr,ARCNET_TOTAL_SIZE ); -free_netdev (my_dev); +free_arcdev (my_dev); }#ifndef MODULE
drivers/net/arcnet/com20020-pci.c +1 -1
@@ -294,7 +294,7 @@ static void com20020pci_remove(struct pci_dev *pdev)unregister_netdev (dev);free_irq (dev->irq, dev); -free_netdev (dev); +free_arcdev (dev); } }
drivers/net/arcnet/com20020_cs.c +10 -3
@@ -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)
@@ -177,7 +184,7 @@ static void com20020_detach(struct pcmcia_device *link) dev = info->dev;if (dev) {dev_dbg (&link->dev,"kfree...\n" ); -free_netdev (dev); +free_arcdev (dev); }dev_dbg (&link->dev,"kfree2...\n" );kfree (info);
drivers/net/arcnet/com90io.c +2 -2
@@ -396,7 +396,7 @@ static int __init com90io_init(void) err =com90io_probe (dev);if (err) { -free_netdev (dev); +free_arcdev (dev);return err; }
@@ -419,7 +419,7 @@ static void __exit com90io_exit(void)free_irq (dev->irq, dev);release_region (dev->base_addr,ARCNET_TOTAL_SIZE ); -free_netdev (dev); +free_arcdev (dev); }module_init (com90io_init)
drivers/net/arcnet/com90xx.c +2 -2
@@ -554,7 +554,7 @@ static int __init com90xx_found(int ioaddr, int airq, u_long shmem, err_release_mem:release_mem_region (dev->mem_start, dev->mem_end - dev->mem_start +1 ); err_free_dev: -free_netdev (dev); +free_arcdev (dev);return -EIO ; }
@@ -672,7 +672,7 @@ static void __exit com90xx_exit(void)release_region (dev->base_addr,ARCNET_TOTAL_SIZE );release_mem_region (dev->mem_start, dev->mem_end - dev->mem_start +1 ); -free_netdev (dev); +free_arcdev (dev); } }
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
@@ -1438,8 +1438,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
@@ -1212,7 +1212,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 ;
@@ -1272,13 +1272,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)
@@ -1311,13 +1312,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 ); }
@@ -1325,13 +1327,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);
@@ -1419,13 +1421,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)
@@ -1565,6 +1568,7 @@ static 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;u8 num_tc;int i;
@@ -1579,7 +1583,8 @@ static 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 ;
@@ -1598,7 +1603,8 @@ static 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 */
@@ -1679,19 +1685,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
@@ -58,6 +58,7 @@ struct enetc_bdr {void __iomem *rcir; };u16 index; +u16 prio;int bd_count;/* # of BDs */ int next_to_use;int next_to_clean;
@@ -338,19 +339,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
@@ -748,9 +748,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 ;
@@ -996,7 +993,8 @@ static void enetc_pl_mac_link_up(struct phylink_config *config,struct enetc_ndev_priv *priv; 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/mediatek/mtk_eth_soc.c +3 -0
@@ -2299,7 +2299,10 @@ static int mtk_open(struct net_device *dev)int err =mtk_start_dma (eth);if (err) +if (err) { +phylink_disconnect_phy (mac->phylink);return err; + }mtk_gdm_config (eth,MTK_GDMA_TO_PDMA );
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
@@ -959,6 +959,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 ;
@@ -972,7 +973,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 ();
@@ -1586,8 +1586,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/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
@@ -1225,6 +1225,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
@@ -1166,6 +1166,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;
@@ -2481,6 +2482,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); }
@@ -2562,7 +2564,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);
@@ -2620,6 +2622,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
@@ -2475,6 +2475,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
@@ -2648,11 +2648,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 ;
@@ -3420,16 +3415,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);
@@ -3446,12 +3434,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 ;
@@ -3480,10 +3464,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 ;
@@ -3832,7 +3813,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
@@ -1292,6 +1292,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/cisco/airo.c +14 -4
@@ -5236,7 +5236,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 };
@@ -5287,7 +5287,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 ;
@@ -5315,12 +5315,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
@@ -775,6 +775,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 ;
@@ -796,6 +797,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/nfc/st-nci/se.c +4 -2
@@ -327,7 +327,7 @@ static int st_nci_hci_connectivity_event_received(struct nci_dev *ndev,* AID 81 5 to 16 * PARAMETERS 82 0 to 255 */ -if (skb->len <NFC_MIN_AID_LENGTH +2 && +if (skb->len <NFC_MIN_AID_LENGTH +2 || skb->data[0 ] !=NFC_EVT_TRANSACTION_AID_TAG )return -EPROTO ;
@@ -340,8 +340,10 @@ static int st_nci_hci_connectivity_event_received(struct nci_dev *ndev,/* Check next byte is PARAMETERS tag (82) */ if (skb->data[transaction->aid_len +2 ] != -NFC_EVT_TRANSACTION_PARAMS_TAG ) +NFC_EVT_TRANSACTION_PARAMS_TAG ) { +devm_kfree (dev, transaction);return -EPROTO ; + } transaction->params_len = skb->data[transaction->aid_len +3 ]; memcpy(transaction->params, skb->data +
drivers/nvme/host/pci.c +4 -0
@@ -3252,6 +3252,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 */
drivers/platform/x86/acer-wmi.c +9 -0
@@ -536,6 +536,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
@@ -1212,6 +1212,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
@@ -63,6 +63,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 {
@@ -632,6 +633,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/touchscreen_dmi.c +25 -0
@@ -756,6 +756,22 @@ static const struct ts_dmi_data predia_basic_data = { .properties = predia_basic_props, }; +static const struct property_entry rca_cambio_w101_v2_props[] = { +PROPERTY_ENTRY_U32 ("touchscreen-min-x" ,4 ), +PROPERTY_ENTRY_U32 ("touchscreen-min-y" ,20 ), +PROPERTY_ENTRY_U32 ("touchscreen-size-x" ,1644 ), +PROPERTY_ENTRY_U32 ("touchscreen-size-y" ,874 ), +PROPERTY_ENTRY_BOOL ("touchscreen-swapped-x-y" ), +PROPERTY_ENTRY_STRING ("firmware-name" ,"gsl1680-rca-cambio-w101-v2.fw" ), +PROPERTY_ENTRY_U32 ("silead,max-fingers" ,10 ), + { } +}; + +static const struct ts_dmi_data rca_cambio_w101_v2_data = { + .acpi_name ="MSSL1680:00" , + .properties = rca_cambio_w101_v2_props, +}; +static const struct property_entry rwc_nanote_p8_props[] = {PROPERTY_ENTRY_U32 ("touchscreen-min-y" ,46 ),PROPERTY_ENTRY_U32 ("touchscreen-size-x" ,1728 ),
@@ -1341,6 +1357,15 @@ const struct dmi_system_id touchscreen_dmi_table[] = { DMI_EXACT_MATCH(DMI_BOARD_NAME, "0E57"), }, }, + { +/* RCA Cambio W101 v2 */ +/* https://github.com/onitake/gsl-firmware/discussions/193 */ + .driver_data = (void *)&rca_cambio_w101_v2_data, + .matches = { +DMI_MATCH (DMI_SYS_VENDOR ,"RCA" ), + DMI_MATCH(DMI_PRODUCT_NAME, "W101SA23T1"), + }, + }, {/* RWC NANOTE P8 */ .driver_data = (void *)&rwc_nanote_p8_data,
drivers/regulator/core.c +6 -2
@@ -4928,6 +4928,7 @@ static void regulator_dev_release(struct device *dev) {struct regulator_dev *rdev =dev_get_drvdata (dev); +debugfs_remove_recursive (rdev->debugfs);kfree (rdev->constraints);of_node_put (rdev->dev.of_node);kfree (rdev);
@@ -5401,11 +5402,15 @@ regulator_register(const struct regulator_desc *regulator_desc,mutex_lock (®ulator_list_mutex);regulator_ena_gpio_free (rdev);mutex_unlock (®ulator_list_mutex); +put_device (&rdev->dev); + rdev =NULL ; clean:if (dangling_of_gpiod)gpiod_put (config->ena_gpiod); +if (rdev && rdev->dev.of_node) +of_node_put (rdev->dev.of_node); +kfree (rdev);kfree (config); -put_device (&rdev->dev); rinse:if (dangling_cfg_gpiod)gpiod_put (cfg->ena_gpiod);
@@ -5434,7 +5439,6 @@ void regulator_unregister(struct regulator_dev *rdev)mutex_lock (®ulator_list_mutex); -debugfs_remove_recursive (rdev->debugfs);WARN_ON (rdev->open_count);regulator_remove_coupling (rdev);unset_regulator_supplies (rdev);
drivers/regulator/twl6030-regulator.c +2 -0
@@ -530,6 +530,7 @@ static const struct twlreg_info TWL6030_INFO_##label = { \#define TWL6032_ADJUSTABLE_LDO (label, offset) \ static const struct twlreg_info TWL6032_INFO_##label = { \ .base = offset, \ + .features = TWL6032_SUBCLASS, \ .desc = { \ .name = #label, \ .id = TWL6032_REG_##label, \
@@ -562,6 +563,7 @@ static const struct twlreg_info TWLFIXED_INFO_##label = { \#define TWL6032_ADJUSTABLE_SMPS (label, offset) \ static const struct twlreg_info TWLSMPS_INFO_##label = { \ .base = offset, \ + .features = TWL6032_SUBCLASS, \ .desc = { \ .name = #label, \ .id = TWL6032_REG_##label, \
drivers/s390/block/dasd_eckd.c +2 -4
@@ -4627,7 +4627,6 @@ static struct dasd_ccw_req *dasd_eckd_build_cp_raw(struct dasd_device *startdev,struct dasd_device *basedev;struct req_iterator iter;struct dasd_ccw_req *cqr; -unsigned int first_offs;unsigned int trkcount;unsigned long *idaws;unsigned int size;
@@ -4661,7 +4660,6 @@ static struct dasd_ccw_req *dasd_eckd_build_cp_raw(struct dasd_device *startdev, last_trk = (blk_rq_pos (req) +blk_rq_sectors (req) -1 ) /DASD_RAW_SECTORS_PER_TRACK ; trkcount = last_trk - first_trk +1 ; - first_offs =0 ;if (rq_data_dir (req) ==READ ) cmd =DASD_ECKD_CCW_READ_TRACK ;
@@ -4705,13 +4703,13 @@ static struct dasd_ccw_req *dasd_eckd_build_cp_raw(struct dasd_device *startdev,if (use_prefix) {prefix_LRE (ccw++, data, first_trk, last_trk, cmd, basedev, - startdev,1 , first_offs +1 , trkcount,0 ,0 ); + startdev,1 ,0 , trkcount,0 ,0 ); }else {define_extent (ccw++, data, first_trk, last_trk, cmd, basedev,0 ); ccw[-1 ].flags |=CCW_FLAG_CC ; data +=sizeof (struct DE_eckd_data ); -locate_record_ext (ccw++, data, first_trk, first_offs +1 , +locate_record_ext (ccw++, data, first_trk,0 , trkcount, cmd, basedev,0 ,0 ); }
drivers/scsi/ibmvscsi/ibmvfc.c +11 -3
@@ -635,8 +635,13 @@ static void ibmvfc_init_host(struct ibmvfc_host *vhost)memset (vhost->async_crq.msgs,0 ,PAGE_SIZE ); vhost->async_crq.cur =0 ; -list_for_each_entry (tgt, &vhost->targets, queue) -ibmvfc_del_tgt (tgt); +list_for_each_entry (tgt, &vhost->targets, queue) { +if (vhost->client_migrated) + tgt->need_login =1 ; +else +ibmvfc_del_tgt (tgt); + } +scsi_block_requests (vhost->host);ibmvfc_set_host_action (vhost,IBMVFC_HOST_ACTION_INIT ); vhost->job_step = ibmvfc_npiv_login;
@@ -2822,9 +2827,12 @@ static void ibmvfc_handle_crq(struct ibmvfc_crq *crq, struct ibmvfc_host *vhost)/* We need to re-setup the interpartition connection */ dev_info (vhost->dev,"Partition migrated, Re-enabling adapter\n" ); vhost->client_migrated =1 ; + +scsi_block_requests (vhost->host);
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/usb/cdns3/drd.c +71 -30
101 lines not on this page · raw message
drivers/usb/cdns3/drd.h +55 -12
67 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 +78 -27
105 lines not on this page · raw message
fs/ceph/mds_client.c +66 -24
90 lines not on this page · raw message
net/netfilter/ipset/ip_set_hash_ipmark.c +9 -1
Lines of this file are not shown. View the raw message.
net/netfilter/ipset/ip_set_hash_ipport.c +3 -0
Lines of this file are not shown. View the raw message.
net/netfilter/ipset/ip_set_hash_ipportip.c +3 -0
Lines of this file are not shown. View the raw message.
net/netfilter/ipset/ip_set_hash_ipportnet.c +3 -0
Lines of this file are not shown. View the raw message.
net/netfilter/ipset/ip_set_hash_netiface.c +9 -1
Lines of this file are not shown. View the raw message.
net/netfilter/ipset/ip_set_hash_netnet.c +15 -1
Lines of this file are not shown. View the raw message.
net/netfilter/ipset/ip_set_hash_netport.c +10 -1
Lines of this file are not shown. View the raw message.
net/netfilter/ipset/ip_set_hash_netportnet.c +15 -1
Lines of this file are not shown. View the 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
tools/testing/selftests/bpf/verifier/ref_tracking.c +36 -0
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.