Linux 5.4.148
Greg Kroah-Hartman
maintainerI'm announcing the release of the 5.4.148 kernel.
All users of the 5.4 kernel series must upgrade.
The updated 5.4.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-5.4.y
and can be browsed at the normal kernel.org git web browser:
https://git.kernel.org/?p=linux/kernel/git/stable/linux-stable.git;a=summary
thanks,
greg k-h
------------
Documentation/admin-guide/devices.txt | 6 Documentation/devicetree/bindings/arm/tegra.yaml | 2 Documentation/devicetree/bindings/mtd/gpmc-nand.txt | 2 Makefile | 2 arch/arc/mm/cache.c | 2 arch/arm/boot/compressed/Makefile | 2 arch/arm/boot/dts/imx53-ppd.dts | 23 +- arch/arm/boot/dts/qcom-apq8064.dtsi | 6 arch/arm/boot/dts/tegra20-tamonten.dtsi | 14 - arch/arm64/boot/dts/freescale/fsl-ls1046a-frwy.dts | 8 arch/arm64/boot/dts/freescale/fsl-ls1046a-rdb.dts | 7 arch/arm64/boot/dts/nvidia/tegra132.dtsi | 4 arch/arm64/boot/dts/nvidia/tegra194.dtsi | 6 arch/arm64/boot/dts/qcom/ipq8074-hk01.dts | 2 arch/arm64/include/asm/kernel-pgtable.h | 4 arch/arm64/kernel/fpsimd.c | 2 arch/arm64/kernel/head.S | 11 - arch/m68k/Kconfig.bus | 2 arch/mips/mti-malta/malta-dtshim.c | 2 arch/openrisc/kernel/entry.S | 2 arch/parisc/kernel/signal.c | 6 arch/powerpc/configs/mpc885_ads_defconfig | 1 arch/powerpc/include/asm/pmc.h | 7 arch/powerpc/kernel/stacktrace.c | 1 arch/powerpc/kvm/book3s_64_vio_hv.c | 9 - arch/powerpc/kvm/book3s_hv.c | 20 ++ arch/powerpc/kvm/book3s_hv_rmhandlers.S | 36 ++++ arch/powerpc/perf/hv-gpci.c | 2 arch/s390/include/asm/setup.h | 2 arch/s390/kernel/early.c | 4 arch/s390/kernel/jump_label.c | 2 arch/s390/mm/init.c | 2 arch/s390/net/bpf_jit_comp.c | 67 ++++---- arch/s390/pci/pci.c | 5 arch/x86/mm/init_64.c | 6 arch/x86/xen/enlighten_pv.c | 7 arch/x86/xen/p2m.c | 4 arch/xtensa/platforms/iss/console.c | 17 +- block/bfq-iosched.c | 18 +- block/blk-zoned.c | 6 block/bsg.c | 5 drivers/ata/libata-core.c | 4 drivers/ata/sata_dwc_460ex.c | 12 - drivers/base/power/trace.c | 10 + drivers/clk/at91/clk-generated.c | 32 ++- drivers/clk/at91/dt-compat.c | 8 drivers/clk/at91/pmc.h | 4 drivers/clk/at91/sam9x60.c | 10 - drivers/clk/at91/sama5d2.c | 31 +-- drivers/cpufreq/powernv-cpufreq.c | 16 + drivers/crypto/mxs-dcp.c | 36 +--- drivers/dma/imx-sdma.c | 13 - drivers/gpu/drm/amd/amdgpu/amdgpu.h | 2 drivers/gpu/drm/amd/amdgpu/amdgpu_i2c.c | 2 drivers/gpu/drm/amd/amdgpu/amdgpu_object.c | 2 drivers/gpu/drm/amd/amdgpu/amdgpu_ras_eeprom.c | 2 drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager.c | 84 +++++++--- drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager.h | 1 drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_debugfs.c | 16 - drivers/gpu/drm/amd/display/dc/dcn10/dcn10_hw_sequencer.c | 11 - drivers/gpu/drm/amd/display/dc/dcn20/dcn20_resource.c | 2 drivers/gpu/drm/drm_debugfs.c | 3 drivers/gpu/drm/etnaviv/etnaviv_buffer.c | 3 drivers/gpu/drm/etnaviv/etnaviv_gem.c | 3 drivers/gpu/drm/etnaviv/etnaviv_gem_submit.c | 3 drivers/gpu/drm/etnaviv/etnaviv_gpu.c | 43 +++-- drivers/gpu/drm/etnaviv/etnaviv_gpu.h | 1 drivers/gpu/drm/etnaviv/etnaviv_iommu.c | 4 drivers/gpu/drm/etnaviv/etnaviv_iommu_v2.c | 8 drivers/gpu/drm/etnaviv/etnaviv_mmu.c | 1 drivers/gpu/drm/etnaviv/etnaviv_mmu.h | 4 drivers/gpu/drm/exynos/exynos_drm_dma.c | 2 drivers/gpu/drm/msm/disp/mdp4/mdp4_kms.c | 17 -- drivers/gpu/drm/panfrost/panfrost_mmu.c | 31 +-- drivers/gpu/drm/panfrost/panfrost_regs.h | 2 drivers/hid/hid-input.c | 2 drivers/hid/i2c-hid/i2c-hid-core.c | 5 drivers/iio/dac/ad5624r_spi.c | 18 ++ drivers/infiniband/core/iwcm.c | 19 +- drivers/infiniband/hw/efa/efa_verbs.c | 1 drivers/infiniband/hw/hfi1/init.c | 7 drivers/md/dm-crypt.c | 7 drivers/media/dvb-frontends/dib8000.c | 58 ++++-- drivers/media/i2c/imx258.c | 4 drivers/media/i2c/tda1997x.c | 5 drivers/media/platform/tegra-cec/tegra_cec.c | 10 - drivers/media/rc/rc-loopback.c | 2 drivers/media/usb/uvc/uvc_v4l2.c | 34 ++-- drivers/media/v4l2-core/v4l2-dv-timings.c | 4 drivers/mfd/ab8500-core.c | 2 drivers/mfd/axp20x.c | 3 drivers/mfd/db8500-prcmu.c | 14 - drivers/mfd/stmpe.c | 4 drivers/mfd/tc3589x.c | 2 drivers/mfd/tqmx86.c | 2 drivers/mfd/wm8994-irq.c | 2 drivers/misc/vmw_vmci/vmci_queue_pair.c | 6 drivers/mmc/core/block.c | 3 drivers/mmc/host/rtsx_pci_sdmmc.c | 36 ++-- drivers/mmc/host/sdhci-of-arasan.c | 18 +- drivers/mtd/nand/raw/cafe_nand.c | 4 drivers/net/bonding/bond_main.c | 3 drivers/net/dsa/b53/b53_common.c | 3 drivers/net/dsa/lantiq_gswip.c | 3 drivers/net/ethernet/broadcom/bnx2x/bnx2x_sriov.c | 2 drivers/net/ethernet/chelsio/cxgb/cxgb2.c | 1 drivers/net/ethernet/hisilicon/hns3/hns3_enet.c | 8 drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c | 19 +- drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_main.c | 6 drivers/net/ethernet/ibm/ibmvnic.c | 8 drivers/net/ethernet/intel/iavf/iavf_main.c | 58 ++++++ drivers/net/ethernet/intel/igc/igc_main.c | 9 - drivers/net/ethernet/mellanox/mlx5/core/cmd.c | 8 drivers/net/ethernet/mellanox/mlx5/core/diag/fw_tracer.c | 3 drivers/net/ethernet/mellanox/mlx5/core/fs_core.c | 5 drivers/net/ethernet/mellanox/mlx5/core/steering/dr_send.c | 1 drivers/net/ethernet/qlogic/qed/qed_mcp.c | 6 drivers/net/ethernet/qlogic/qlcnic/qlcnic_init.c | 1 drivers/net/ethernet/rdc/r6040.c | 9 - drivers/net/ethernet/renesas/sh_eth.c | 1 drivers/net/ethernet/stmicro/stmmac/dwmac-ipq806x.c | 18 -- drivers/net/ethernet/wiznet/w5100.c | 2 drivers/net/phy/dp83640_reg.h | 2 drivers/net/usb/cdc_mbim.c | 5 drivers/net/wireless/ath/ath9k/ar9003_eeprom.c | 3 drivers/net/wireless/ath/ath9k/hw.c | 12 - drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c | 4 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c | 8 drivers/net/wireless/intel/iwlwifi/mvm/ops.c | 24 ++ drivers/net/wireless/intel/iwlwifi/mvm/sta.c | 30 ++- drivers/ntb/test/ntb_msi_test.c | 4 drivers/ntb/test/ntb_perf.c | 1 drivers/nvme/host/tcp.c | 14 - drivers/of/kobj.c | 2 drivers/opp/of.c | 12 - drivers/parport/ieee1284_ops.c | 2 drivers/pci/controller/pci-aardvark.c | 73 +++++++- drivers/pci/controller/pcie-xilinx-nwl.c | 12 + drivers/pci/hotplug/TODO | 3 drivers/pci/hotplug/ibmphp_ebda.c | 5 drivers/pci/msi.c | 3 drivers/pci/pci.c | 8 drivers/pci/pcie/portdrv_core.c | 9 - drivers/pci/quirks.c | 59 ++++++- drivers/pci/syscall.c | 4 drivers/pinctrl/pinctrl-ingenic.c | 6 drivers/pinctrl/pinctrl-single.c | 1 drivers/pinctrl/pinctrl-stmfx.c | 6 drivers/pinctrl/samsung/pinctrl-samsung.c | 2 drivers/platform/chrome/cros_ec_proto.c | 9 + drivers/platform/x86/dell-smbios-wmi.c | 1 drivers/power/supply/max17042_battery.c | 6 drivers/rtc/rtc-tps65910.c | 2 drivers/s390/char/sclp_early.c | 3 drivers/scsi/BusLogic.c | 4 drivers/scsi/pcmcia/fdomain_cs.c | 4 drivers/scsi/qedf/qedf_main.c | 10 - drivers/scsi/qedi/qedi_main.c | 14 - drivers/scsi/qla2xxx/qla_nvme.c | 5 drivers/scsi/qla2xxx/qla_os.c | 6 drivers/scsi/smartpqi/smartpqi_init.c | 1 drivers/soc/aspeed/aspeed-lpc-ctrl.c | 2 drivers/soc/aspeed/aspeed-p2a-ctrl.c | 2 drivers/soc/qcom/qcom_aoss.c | 8 drivers/staging/board/board.c | 7 drivers/staging/ks7010/ks7010_sdio.c | 2 drivers/staging/rts5208/rtsx_scsi.c | 10 - drivers/target/target_core_xcopy.c | 96 +++-------- drivers/target/target_core_xcopy.h | 1 drivers/tty/hvc/hvsi.c | 19 +- drivers/tty/serial/8250/8250_pci.c | 2 drivers/tty/serial/8250/8250_port.c | 3 drivers/tty/serial/jsm/jsm_neo.c | 2 drivers/tty/serial/jsm/jsm_tty.c | 3 drivers/tty/serial/sh-sci.c | 7 drivers/usb/chipidea/host.c | 14 + drivers/usb/gadget/composite.c | 8 drivers/usb/gadget/function/u_ether.c | 5 drivers/usb/host/ehci-mv.c | 23 +- drivers/usb/host/fotg210-hcd.c | 41 ++-- drivers/usb/host/fotg210.h | 5 drivers/usb/host/xhci.c | 24 +- drivers/usb/musb/musb_dsps.c | 13 - drivers/usb/usbip/vhci_hcd.c | 32 +++ drivers/vfio/Kconfig | 2 drivers/vhost/net.c | 11 + drivers/video/fbdev/asiliantfb.c | 3 drivers/video/fbdev/kyro/fbdev.c | 8 drivers/video/fbdev/riva/fbdev.c | 3 fs/btrfs/disk-io.c | 45 ++--- fs/btrfs/inode.c | 10 - fs/btrfs/tree-log.c | 4 fs/btrfs/volumes.c | 3 fs/cifs/sess.c | 2 fs/f2fs/checkpoint.c | 2 fs/f2fs/data.c | 23 ++ fs/f2fs/dir.c | 15 + fs/f2fs/f2fs.h | 24 +- fs/f2fs/file.c | 6 fs/f2fs/gc.c | 6 fs/f2fs/inode.c | 2 fs/f2fs/node.c | 2 fs/f2fs/segment.c | 9 - fs/f2fs/super.c | 84 +++++----- fs/fscache/cookie.c | 14 - fs/fscache/internal.h | 2 fs/fscache/main.c | 39 ++++ fs/fuse/dev.c | 4 fs/gfs2/lock_dlm.c | 5 fs/lockd/svclock.c | 30 +-- fs/overlayfs/dir.c | 6 fs/userfaultfd.c | 93 +++++------ include/crypto/public_key.h | 4 include/linux/hugetlb.h | 9 + include/linux/list.h | 29 ++- include/linux/memory_hotplug.h | 4 include/linux/pci.h | 5 include/linux/pci_ids.h | 3 include/linux/skbuff.h | 2 include/linux/sunrpc/xprt.h | 1 include/uapi/linux/pkt_sched.h | 2 include/uapi/linux/serial_reg.h | 1 kernel/dma/debug.c | 7 kernel/events/core.c | 2 kernel/fork.c | 1 kernel/pid_namespace.c | 3 kernel/trace/trace_kprobe.c | 6 kernel/trace/trace_probe.c | 25 +++ kernel/trace/trace_probe.h | 1 kernel/trace/trace_uprobe.c | 6 kernel/workqueue.c | 12 - lib/test_bpf.c | 13 + lib/test_stackinit.c | 20 -- mm/memory_hotplug.c | 4 mm/vmscan.c | 2 net/9p/trans_xen.c | 4 net/bluetooth/hci_event.c | 108 +++++++++---- net/bluetooth/sco.c | 74 +++++--- net/caif/chnl_net.c | 19 -- net/core/flow_dissector.c | 12 - net/dccp/minisocks.c | 2 net/dsa/slave.c | 12 - net/ipv4/ip_gre.c | 9 - net/ipv4/ip_output.c | 5 net/ipv4/nexthop.c | 2 net/ipv4/tcp_fastopen.c | 3 net/ipv4/tcp_input.c | 2 net/ipv6/netfilter/nf_socket_ipv6.c | 4 net/l2tp/l2tp_core.c | 4 net/mac80211/iface.c | 11 + net/netlabel/netlabel_cipso_v4.c | 4 net/netlink/af_netlink.c | 4 net/sched/sch_fq_codel.c | 12 + net/sched/sch_taprio.c | 4 net/sunrpc/auth_gss/svcauth_gss.c | 2 net/sunrpc/xprt.c | 6 net/tipc/socket.c | 36 +++- net/unix/af_unix.c | 2 samples/bpf/test_override_return.sh | 1 samples/bpf/tracex7_user.c | 5 scripts/gen_ksymdeps.sh | 8 security/smack/smack_access.c | 17 -- sound/soc/atmel/Kconfig | 1 sound/soc/intel/boards/bytcr_rt5640.c | 9 - sound/soc/intel/skylake/skl-messages.c | 11 + sound/soc/intel/skylake/skl-pcm.c | 25 +-- sound/soc/rockchip/rockchip_i2s.c | 35 ++-- tools/perf/Makefile.config | 8 tools/perf/util/machine.c | 1 tools/testing/selftests/bpf/progs/xdp_tx.c | 2 tools/testing/selftests/bpf/test_maps.c | 2 tools/testing/selftests/bpf/test_xdp_veth.sh | 2 tools/thermal/tmon/Makefile | 2 virt/kvm/arm/arm.c | 8 274 files changed, 1902 insertions(+), 1108 deletions(-)
Adrian Bunk (1):
bnx2x: Fix enabling network interfaces without VFs
Alexander Egorenkov (1):
s390/sclp: fix Secure-IPL facility detection
Alexey Kardashevskiy (1):
KVM: PPC: Fix clearing never mapped TCEs in realmode
Alyssa Rosenzweig (3):
drm/panfrost: Simplify lock_region calculation drm/panfrost: Use u64 for size in lock_region drm/panfrost: Clamp lock region to Bifrost minimum
Anand Jain (1):
btrfs: fix upper limit for max_inline for page size 64K
Andreas Obergschwandtner (1):
ARM: tegra: tamonten: Fix UART pad setting
Andrey Grodzovsky (1):
drm/amdgpu: Fix BUG_ON assert
Andy Shevchenko (3):
include/linux/list.h: add a macro to test if entry is pointing to the head
ata: sata_dwc_460ex: No need to call phy_exit() befre phy_init()
PCI: Sync __pci_register_driver() stub for CONFIG_PCI=n
Anirudh Rayabharam (1):
usbip: give back URBs for unsent unlink requests during cleanup
Anson Jacob (1):
drm/amd/amdgpu: Update debugfs link_settings output link_rate field in hex
Anthony Iliopoulos (1):
dma-debug: fix debugfs initialization order
Arnd Bergmann (1):
m68knommu: only set CONFIG_ISA_DMA_API for ColdFire sub-arch
Arne Welzel (1):
dm crypt: Avoid percpu_counter spinlock contention in crypt_page_alloc()
Baptiste Lepers (1):
events: Reuse value read using READ_ONCE instead of re-reading it
Benjamin Hesmans (1):
netfilter: socket: icmp6: fix use-after-scope
Bob Peterson (1):
gfs2: Don't call dlm after protocol is unmounted
Cezary Rojewski (1):
ASoC: Intel: Skylake: Fix module configuration for KPB and MIXER
Chao Yu (5):
f2fs: quota: fix potential deadlock
f2fs: show f2fs instance in printk_ratelimited
f2fs: fix to account missing .skipped_gc_rwsem
f2fs: fix unexpected ENOENT comes from f2fs_map_blocks()
f2fs: fix to unmap pages from userspace process in punch_hole()
Christoph Hellwig (1):
scsi: bsg: Remove support for SCSI_IOCTL_SEND_COMMAND
Christophe JAILLET (2):
staging: ks7010: Fix the initialization of the 'sleep_status' structure
mtd: rawnand: cafe: Fix a resource leak in the error handling path of 'cafe_nand_probe()'
Claudiu Beznea (1):
clk: at91: clk-generated: pass the id of changeable parent at registration
Codrin Ciubotariu (2):
clk: at91: sam9x60: Don't use audio PLL
clk: at91: clk-generated: Limit the requested rate to our range
Colin Ian King (1):
parport: remove non-zero check on count
Damien Le Moal (1):
block: bfq: fix bfq_set_next_ioprio_data()
Dan Carpenter (4):
scsi: smartpqi: Fix an error code in pqi_get_raid_map()
scsi: qedi: Fix error codes in qedi_alloc_global_queues()
scsi: qedf: Fix error codes in qedf_alloc_global_queues()
PCI: Fix pci_dev_str_match_path() alloc while atomic bug
Daniele Palmas (1):
net: usb: cdc_mbim: avoid altsetting toggling for Telit LN920
David Disseldorp (1):
scsi: target: avoid per-loop XCOPY buffer allocations
David Heidelberg (5):
ARM: 9105/1: atags_to_fdt: don't warn about stack size
ARM: dts: qcom: apq8064: correct clock names drm/msm: mdp4: drop vblank get/put from prepare/complete_commit drm/msi/mdp4: populate priv->kms in mdp4_kms_init
dt-bindings: arm: Fix Toradex compatible typo
David Hildenbrand (1):
mm/memory_hotplug: use "unsigned long" for PFN in zone_for_pfn_range()
David Howells (1):
fscache: Fix cookie key hashing
Desmond Cheong Zhi Xi (5):
btrfs: reset replace target device to allocation state on close
drm: avoid blocking in drm_clients_info's rcu section
Bluetooth: skip invalid hci_sync_conn_complete_evt
Bluetooth: schedule SCO timeouts with delayed_work
Bluetooth: avoid circular locks in sco_sock_connect
Ding Hui (1):
cifs: fix wrong release in sess_alloc_buffer() failed path
Dinghao Liu (1):
qlcnic: Remove redundant unlock in qlcnic_pinit_from_rom
Dmitry Osipenko (1):
rtc: tps65910: Correct driver module alias
Dmitry Torokhov (1):
HID: input: do not report stylus battery state as "full"
Eran Ben Elisha (1):
net/mlx5: Fix variable type to match 64bit
Eric Dumazet (3):
net-caif: avoid user-triggerable WARN_ON(1) net/af_unix: fix a data-race in unix_dgram_poll
fq_codel: reject silly quantum parameters
Ernst Sjöstrand (1):
drm/amd/amdgpu: Increase HWIP_MAX_INSTANCE to 10
Evan Quan (1):
PCI: Add AMD GPU multi-function power dependencies
Evan Wang (1):
PCI: aardvark: Fix checking for PIO status
Evgeny Novikov (2):
USB: EHCI: ehci-mv: improve error handling in mv_ehci_enable()
media: tegra-cec: Handle errors of clk_prepare_enable()
Florian Fainelli (1):
r6040: Restore MDIO clock frequency after MAC reset
Geert Uytterhoeven (1):
staging: board: Fix uninitialized spinlock when attaching genpd
George Cherian (1):
PCI: Add ACS quirks for Cavium multi-function devices
Greg Kroah-Hartman (2):
serial: 8250_pci: make setup_port() parameters explicitly unsigned Linux 5.4.148
Gustavo A. R. Silva (2):
ipv4: ip_output.c: Fix out-of-bounds warning in ip_copy_addrs()
flow_dissector: Fix out-of-bounds warnings
Gustaw Lewandowski (1):
ASoC: Intel: Skylake: Fix passing loadable flag for module
Haimin Zhang (1):
fix array-index-out-of-bounds in taprio_change
Halil Pasic (1):
s390/pv: fix the forcing of the swiotlb
Hans Verkuil (1):
media: v4l2-dv-timings.c: fix wrong condition in two for-loops
Hans de Goede (4):
libata: add ATA_HORKAGE_NO_NCQ_TRIM for Samsung 860 and 870 SSDs
platform/x86: dell-smbios-wmi: Add missing kfree in error-exit from run_smbios_call
ASoC: Intel: bytcr_rt5640: Move "Platform Clock" routes to the maps for the matching in-/output
mfd: axp20x: Update AXP288 volatile ranges
Harshvardhan Jha (1):
9p/xen: Fix end of loop tests for list_for_each_entry
Heiko Carstens (1):
s390/jump_label: print real address in a case of a jump label bug
Hoang Le (1):
tipc: increase timeout in tipc_sk_enqueue()
Hyun Kwon (1):
PCI: xilinx-nwl: Enable the clock through CCF
Ilya Leoshkevich (2):
s390/bpf: Fix optimizing out zero-extensions s390/bpf: Fix 64-bit subtraction of the -0x80000000 constant
Iwona Winiarska (2):
soc: aspeed: lpc-ctrl: Fix boundary check for mmap
soc: aspeed: p2a-ctrl: Fix boundary check for mmap
J. Bruce Fields (2):
rpc: fix gss_svc_init cleanup on failure
lockd: lockd server-side shouldn't set fl_ops
Jack Pham (1):
usb: gadget: composite: Allow bMaxPower=0 if self-powered
Jaehyoung Choi (1):
pinctrl: samsung: Fix pinctrl bank pin count
Jan Hoffmann (1):
net: dsa: lantiq_gswip: fix maximum frame length
Jason Gunthorpe (1):
vfio: Use config not menuconfig for VFIO_NOIOMMU
Jiaran Zhang (1):
net: hns3: fix the timing issue of VF clearing interrupt sources
Jim Broadus (1):
HID: i2c-hid: Fix Elan touchpad regression
Jiri Slaby (2):
xtensa: ISS: don't panic in rs_init
hvsi: don't panic on tty_register_driver failure
Joel Stanley (1):
powerpc/config: Renable MTD_PHYSMAP_OF
Johan Almbladh (3):
bpf/tests: Fix copy-and-paste error in double word test bpf/tests: Do not PASS tests without actually testing the result
mac80211: Fix monitor MTU limit so that A-MSDUs get through
Johannes Berg (2):
iwlwifi: mvm: avoid static queue number aliasing
iwlwifi: mvm: fix access to BSS elements
Jonathan Cameron (1):
iio: dac: ad5624r: Fix incorrect handling of an optional regulator.
Josef Bacik (1):
btrfs: wake up async_delalloc_pages waiters after submit
Juergen Gross (3):
xen: fix setting of max_pfn in shared_info
xen: reset legacy rtc flag for PV domU
PM: base: power: don't try to use non-existing RTC for storing data
Juhee Kang (1):
samples: bpf: Fix tracex7 error raised on the missing argument
Jussi Maki (1):
selftests/bpf: Fix xdp_tx.c prog section name
Kajol Jain (1):
powerpc/perf/hv-gpci: Fix counter value parsing
Kees Cook (2):
staging: rts5208: Fix get_ms_information() heap buffer size lib/test_stackinit: Fix static initializer test
Kelly Devilliv (2):
usb: host: fotg210: fix the endpoint's transactional opportunities calculation
usb: host: fotg210: fix the actual_length of an iso packet
Krzysztof Hałasa (1):
media: TDA1997x: fix tda1997x_query_dv_timings() return value
Krzysztof Kozlowski (1):
power: supply: max17042: handle fails of reading status register
Krzysztof Wilczyński (1):
PCI: Return ~0 data on pciconfig_read() CAP_SYS_ADMIN failure
Laurent Pinchart (1):
media: imx258: Rectify mismatch of VTS value
Leon Romanovsky (3):
RDMA/iwcm: Release resources if iw_cm module initialization fails
docs: Fix infiniband uverbs minor number
RDMA/efa: Remove double QP type assignment
Li Huafei (1):
perf unwind: Do not overwrite FEATURE_CHECK_LDFLAGS-libunwind-{x86,aarch64}Li Jun (1):
usb: chipidea: host: fix port index underflow and UBSAN complains
Li Zhijian (1):
selftests/bpf: Enlarge select() timeout for test_maps
Lin, Zhenpeng (1):
dccp: don't duplicate ccid when cloning dccp sock
Linus Walleij (1):
mfd: db8500-prcmu: Adjust map to reality
Liu Zixian (1):
mm/hugetlb: initialize hugetlb_usage in mm_init
Luben Tuikov (1):
drm/amdgpu: Fix amdgpu_ras_eeprom_init()
Lucas Stach (8):
drm/etnaviv: return context from etnaviv_iommu_context_get drm/etnaviv: put submit prev MMU context when it exists drm/etnaviv: stop abusing mmu_context as FE running marker drm/etnaviv: keep MMU context across runtime suspend/resume drm/etnaviv: exec and MMU state is lost when resetting the GPU drm/etnaviv: fix MMU context leak on GPU reset drm/etnaviv: reference MMU context when setting up hardware state drm/etnaviv: add missing MMU context put when reaping MMU mapping
Luiz Augusto von Dentz (1):
Bluetooth: Fix handling of LE Enhanced Connection Complete
Luke Hsiao (1):
tcp: enable data-less, empty-cookie SYN with TFO_SERVER_COOKIE_NOT_REQD
Maciej W. Rozycki (2):
serial: 8250: Define RX trigger levels for OxSemi 950 devices
scsi: BusLogic: Fix missing pr_cont() use
Maciej Żenczykowski (1):
usb: gadget: u_ether: fix a potential null pointer dereference
Manish Narani (1):
mmc: sdhci-of-arasan: Check return value of non-void funtions
Manivannan Sadhasivam (1):
soc: qcom: aoss: Fix the out of bound usage of cooling_devs
Maor Gottlieb (1):
net/mlx5: Fix potential sleeping in atomic context
Marc Zyngier (3):
pinctrl: stmfx: Fix hazardous u8[] to unsigned long cast
of: Don't allow __of_attached_node_sysfs() without CONFIG_SYSFS
mfd: Don't use irq_create_mapping() to resolve a mapping
Marcos Paulo de Souza (1):
btrfs: tree-log: check btrfs_lookup_data_extent return value
Marek Behún (1):
PCI: Restrict ASMedia ASM1062 SATA Max Payload Size Supported
Marek Marczykowski-Górecki (1):
PCI/MSI: Skip masking MSI-X on Xen PV
Mark Brown (1):
arm64/sve: Use correct size when reinitialising SVE state
Mark Rutland (1):
arm64: head: avoid over-mapping in map_memory
Masahiro Yamada (1):
kbuild: Fix 'no symbols' warning when CONFIG_TRIM_UNUSD_KSYMS=y
Masami Hiramatsu (1):
tracing/probes: Reject events which have the same name of existing one
Mathias Nyman (1):
Revert "USB: xhci: fix U1/U2 handling for hardware with XHCI_INTEL_HOST quirk set"
Matthias Schiffer (1):
mfd: tqmx86: Clear GPIO IRQ resource when no IRQ is set
Mauro Carvalho Chehab (2):
media: uvc: don't do DMA on stack
media: dib8000: rewrite the init prbs logic
Miaoqing Pan (1):
ath9k: fix sleeping in atomic context
Michael Petlan (1):
perf machine: Initialize srcline string member in add_location struct
Michal Suchanek (1):
powerpc/stacktrace: Include linux/delay.h
Mike Marciniszyn (1):
IB/hfi1: Adjust pkey entry in index 0
Mike Rapoport (1):
x86/mm: Fix kern_addr_valid() to cope with existing but not present entries
Miklos Szeredi (1):
fuse: fix use after free in fuse_read_interrupt()
Mikulas Patocka (1):
parisc: fix crash with signals and alloca
Miquel Raynal (1):
dt-bindings: mtd: gpmc: Fix the ECC bytes vs. OOB bytes equation
Nadav Amit (1):
userfaultfd: prevent concurrent API initialization
Nadezda Lutovinova (1):
usb: musb: musb_dsps: request_irq() after initializing musb
Nathan Chancellor (2):
net: ethernet: stmmac: Do not use unreachable() in ipq806x_gmac_probe() drm/exynos: Always initialize mapping in exynos_drm_register_dma()
Nicholas Piggin (2):
KVM: PPC: Book3S HV Nested: Reflect guest PMU in-use to L0 when guest SPRs are live
KVM: PPC: Book3S HV: Tolerate treclaim. in fake-suspend mode changing registers
Niklas Cassel (2):
blk-zoned: allow zone management send operations without CAP_SYS_ADMIN
blk-zoned: allow BLKREPORTZONE without CAP_SYS_ADMIN
Niklas Schnelle (1):
s390: make PCI mio support a machine flag
Nishad Kamdar (1):
mmc: core: Return correct emmc response in case of ioctl error
Oleksij Rempel (1):
MIPS: Malta: fix alignment of the devicetree buffer
Oliver Logush (1):
drm/amd/display: Fix timer_per_pixel unit error
Oliver Upton (1):
KVM: arm64: Handle PSCI resets before userspace touches vCPU state
Pali Rohár (2):
PCI: aardvark: Increase polling delay to 1.5s while waiting for PIO response
PCI: aardvark: Fix masking and unmasking legacy INTx interrupts
Paolo Abeni (1):
vhost_net: fix OoB on sendmsg() failure.
Paolo Valente (1):
block, bfq: honor already-setup queue merges
Patryk Duda (1):
platform/chrome: cros_ec_proto: Send command again when timeout occurs
Paul Cercueil (1):
pinctrl: ingenic: Fix incorrect pull up/down info
Pratik R. Sampat (1):
cpufreq: powernv: Fix init_chip_info initialization in numa=off
Raag Jadav (1):
arm64: dts: ls1046a: fix eeprom entries
Rafael J. Wysocki (1):
PCI: Use pci_update_current_state() in pci_enable_device_flags()
Rafał Miłecki (1):
net: dsa: b53: Fix calculating number of switch ports
Rajendra Nayak (1):
opp: Don't print an error if required-opps is missing
Randy Dunlap (4):
openrisc: don't printk() unconditionally
ASoC: atmel: ATMEL drivers don't need HAS_DMA
ptp: dp83640: don't define PAGE0
ARC: export clear_user_page() for modules
Rik van Riel (1):
mm,vmscan: fix divide by zero in get_scan_count
Robin Gong (2):
Revert "dmaengine: imx-sdma: refine to load context only once"
dmaengine: imx-sdma: remove duplicated sdma_load_context
Rolf Eike Beer (1):
tools/thermal/tmon: Add cross compiling support
Ryoga Saito (1):
Set fc_nlinfo in nh_create_ipv4, nh_create_ipv6
Saeed Mahameed (1):
net/mlx5: FWTrace, cancel work on alloc pd error flow
Sagi Grimberg (1):
nvme-tcp: don't check blk_mq_tag_to_rq when receiving pdu data
Sasha Neftin (1):
igc: Check if num of q_vectors is smaller than max before array access
Saurav Kashyap (2):
scsi: qla2xxx: Changes to support kdump kernel
scsi: qla2xxx: Sync queue idx with queue_pair_map idx
Sean Anderson (1):
crypto: mxs-dcp - Use sg_mapping_iter to copy data
Sean Keely (1):
drm/amdkfd: Account for SH/SE count when setting up cu masks.
Sean Young (1):
media: rc-loopback: return number of emitters rather than error
Sebastian Reichel (1):
ARM: dts: imx53-ppd: Fix ACHC entry
Shai Malin (1):
qed: Handle management FW error
Shuah Khan (1):
usbip:vhci_hcd USB port can get stuck in the disabled state
Stefan Assmann (2):
iavf: do not override the adapter state in the watchdog task
iavf: fix locking of critical sections
Stuart Hayes (1):
PCI/portdrv: Enable Bandwidth Notification only if port supports it
Sugar Zhang (1):
ASoC: rockchip: i2s: Fix regmap_ops hang
Sukadev Bhattiprolu (1):
ibmvnic: check failover_pending in login response
Thierry Reding (1):
arm64: tegra: Fix compatible string for Tegra132 CPUs
Thomas Hebb (1):
mmc: rtsx_pci: Fix long reads when clock is prescaled
Tianjia Zhang (1):
Smack: Fix wrong semantics in smk_access_entry()
Trond Myklebust (1):
SUNRPC: Fix potential memory corruption
Tuo Li (2):
gpu: drm: amd: amdgpu: amdgpu_i2c: fix possible uninitialized-variable access in amdgpu_i2c_router_select_ddc_port() drm/display: fix possible null-pointer dereference in dcn10_set_clock()
Ulrich Hecht (1):
serial: sh-sci: fix break handling for sysrq
Umang Jain (1):
media: imx258: Limit the max analogue gain to 480
Vasily Averin (1):
memcg: enable accounting for pids in nested pid namespaces
Vidya Sagar (1):
arm64: tegra: Fix Tegra194 PCIe EP compatible string
Vinod Koul (1):
arm64: dts: qcom: sdm660: use reg value for memory node
Vishal Aslot (1):
PCI: ibmphp: Fix double unmap of io_mem
Vladimir Oltean (1):
net: dsa: destroy the phylink instance on any error in dsa_slave_phy_setup
Wang Hai (1):
VMCI: fix NULL pointer dereference when unmapping queue pair
Wasim Khan (1):
PCI: Add ACS quirks for NXP LX2xx0 and LX2xx2 platforms
Wei Li (1):
scsi: fdomain: Fix error return code in fdomain_probe()
Willem de Bruijn (1):
ip_gre: validate csum_start only on pull
Xiaotan Luo (1):
ASoC: rockchip: i2s: Fixup config for DAIFMT_DSP_A/B
Xin Long (2):
tipc: keep the skb in rcv queue until the whole data is read
tipc: fix an use-after-free issue in tipc_recvmsg
Xiyu Yang (1):
net/l2tp: Fix reference count leak in l2tp_udp_recv_core
Yajun Deng (1):
netlink: Deal with ESRCH error in nlmsg_notify()
Yang Li (3):
ethtool: Fix an error code in cxgb2.c
NTB: Fix an error code in ntb_msit_probe()
NTB: perf: Fix an error code in perf_setup_inbuf()
Yang Yingliang (1):
net: w5100: check return value after calling platform_get_resource()
Yangtao Li (1):
f2fs: reduce the scope of setting fsck tag when de->name_len is zero
Yevgeny Kliteynik (1):
net/mlx5: DR, Enable QP retransmission
Yoshihiro Shimoda (1):
net: renesas: sh_eth: Fix freeing wrong tx descriptor
Yufeng Mo (4):
bonding: 3ad: fix the concurrency between __bond_release_one() and bond_3ad_state_machine_handler()
net: hns3: pad the short tunnel frame before sending to hardware
net: hns3: change affinity_mask to numa node range
net: hns3: disable mac in flr process
Zekun Shen (1):
ath9k: fix OOB read ar9300_eeprom_restore_internal
Zhang Qilong (1):
iwlwifi: mvm: fix a memory leak in iwl_mvm_mac_ctxt_beacon_changed
Zhen Lei (2):
pinctrl: single: Fix error return code in pcs_parse_bits_in_pinctrl_entry()
workqueue: Fix possible memory leaks in wq_numa_init()
Zheyu Ma (5):
video: fbdev: kyro: fix a DoS bug by restricting user input
tty: serial: jsm: hold port lock when reporting modem line changes
video: fbdev: asiliantfb: Error out if 'pixclock' equals zero
video: fbdev: kyro: Error out if 'pixclock' equals zero
video: fbdev: riva: Error out if 'pixclock' equals zero
chenying (1):
ovl: fix BUG_ON() in may_delete() when called from ovl_cleanup()
zhenggy (1):
tcp: fix tp->undo_retrans accounting in tcp_sacktag_one()
zhenwei pi (1):
crypto: public_key: fix overflow during implicit conversion
王贇 (1):
net: fix NULL pointer reference in cipso_v4_doi_free
Greg Kroah-Hartman
maintainerDocumentation/admin-guide/devices.txt +3 -3
@@ -3002,10 +3002,10 @@ 65 = /dev/infiniband/issm1 Second InfiniBand IsSM device ... 127 = /dev/infiniband/issm63 63rd InfiniBand IsSM device - 128 = /dev/infiniband/uverbs0 First InfiniBand verbs device - 129 = /dev/infiniband/uverbs1 Second InfiniBand verbs device + 192 = /dev/infiniband/uverbs0 First InfiniBand verbs device + 193 = /dev/infiniband/uverbs1 Second InfiniBand verbs device ... - 159 = /dev/infiniband/uverbs31 31st InfiniBand verbs device + 223 = /dev/infiniband/uverbs31 31st InfiniBand verbs device 232 char Biometric Devices 0 = /dev/biometric/sensor0/fingerprint first fingerprint sensor on first device
Documentation/devicetree/bindings/arm/tegra.yaml +1 -1
@@ -49,7 +49,7 @@ properties: - const: toradex,apalis_t30 - const: nvidia,tegra30 - items: - - const: toradex,apalis_t30-eval-v1.1 + - const: toradex,apalis_t30-v1.1-eval - const: toradex,apalis_t30-eval - const: toradex,apalis_t30-v1.1 - const: toradex,apalis_t30
Documentation/devicetree/bindings/mtd/gpmc-nand.txt +1 -1
@@ -122,7 +122,7 @@ on various other factors also like; so the device should have enough free bytes available its OOB/Spare area to accommodate ECC for entire page. In general following expression helps in determining if given device can accommodate ECC syndrome: - "2 + (PAGESIZE / 512) * ECC_BYTES" >= OOBSIZE" + "2 + (PAGESIZE / 512) * ECC_BYTES" <= OOBSIZE" where OOBSIZE number of bytes in OOB/spare area PAGESIZE number of bytes in main-area of device page
Makefile +1 -1
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 5 PATCHLEVEL = 4 -SUBLEVEL = 147 +SUBLEVEL = 148 EXTRAVERSION = NAME = Kleptomaniac Octopus
arch/arc/mm/cache.c +1 -1
@@ -1123,7 +1123,7 @@ void clear_user_page(void *to, unsigned long u_vaddr, struct page *page)clear_page (to);clear_bit (PG_dc_clean, &page->flags); } - +EXPORT_SYMBOL (clear_user_page);/********************************************************************** * Explicit Cache flush request from user space via syscall
arch/arm/boot/compressed/Makefile +2 -0
@@ -90,6 +90,8 @@ $(addprefix $(obj)/,$(libfdt_objs) atags_to_fdt.o): \ $(addprefix $(obj)/,$(libfdt_hdrs)) ifeq ($(CONFIG_ARM_ATAG_DTB_COMPAT),y) +CFLAGS_REMOVE_atags_to_fdt.o += -Wframe-larger-than=${CONFIG_FRAME_WARN} +CFLAGS_atags_to_fdt.o += -Wframe-larger-than=1280 OBJS += $(libfdt_objs) atags_to_fdt.o endif
arch/arm/boot/dts/imx53-ppd.dts +13 -10
@@ -70,6 +70,12 @@ clock-frequency = <11289600>; }; + achc_24M: achc-clock { + compatible = "fixed-clock"; + #clock-cells = <0>; + clock-frequency = <24000000>; + }; + sgtlsound: sound { compatible = "fsl,imx53-cpuvo-sgtl5000", "fsl,imx-audio-sgtl5000";
@@ -287,16 +293,13 @@ &gpio4 12 GPIO_ACTIVE_LOW>; status = "okay"; - spidev0: spi@0 { - compatible = "ge,achc"; - reg = <0>; - spi-max-frequency = <1000000>; - }; - - spidev1: spi@1 { - compatible = "ge,achc"; - reg = <1>; - spi-max-frequency = <1000000>; + spidev0: spi@1 { + compatible = "ge,achc", "nxp,kinetis-k20"; + reg = <1>, <0>; + vdd-supply = <®_3v3>; + vdda-supply = <®_3v3>; + clocks = <&achc_24M>; + reset-gpios = <&gpio3 6 GPIO_ACTIVE_LOW>; }; gpioxra0: gpio@2 {
arch/arm/boot/dts/qcom-apq8064.dtsi +3 -3
@@ -1261,9 +1261,9 @@ <&mmcc DSI1_BYTE_CLK>, <&mmcc DSI_PIXEL_CLK>, <&mmcc DSI1_ESC_CLK>; - clock-names = "iface_clk", "bus_clk", "core_mmss_clk", - "src_clk", "byte_clk", "pixel_clk", - "core_clk"; + clock-names = "iface", "bus", "core_mmss", + "src", "byte", "pixel", + "core"; assigned-clocks = <&mmcc DSI1_BYTE_SRC>, <&mmcc DSI1_ESC_SRC>,
arch/arm/boot/dts/tegra20-tamonten.dtsi +7 -7
@@ -185,8 +185,9 @@ nvidia,pins = "ata", "atb", "atc", "atd", "ate", "cdev1", "cdev2", "dap1", "dtb", "gma", "gmb", "gmc", "gmd", "gme", "gpu7", - "gpv", "i2cp", "pta", "rm", "slxa", - "slxk", "spia", "spib", "uac"; + "gpv", "i2cp", "irrx", "irtx", "pta", + "rm", "slxa", "slxk", "spia", "spib", + "uac"; nvidia,pull = <TEGRA_PIN_PULL_NONE>; nvidia,tristate = <TEGRA_PIN_DISABLE>; };
@@ -211,7 +212,7 @@ conf_ddc { nvidia,pins = "ddc", "dta", "dtd", "kbca", "kbcb", "kbcc", "kbcd", "kbce", "kbcf", - "sdc"; + "sdc", "uad", "uca"; nvidia,pull = <TEGRA_PIN_PULL_UP>; nvidia,tristate = <TEGRA_PIN_DISABLE>; };
@@ -221,10 +222,9 @@ "lvp0", "owc", "sdb"; nvidia,tristate = <TEGRA_PIN_ENABLE>; }; - conf_irrx { - nvidia,pins = "irrx", "irtx", "sdd", "spic", - "spie", "spih", "uaa", "uab", "uad", - "uca", "ucb"; + conf_sdd { + nvidia,pins = "sdd", "spic", "spie", "spih", + "uaa", "uab", "ucb"; nvidia,pull = <TEGRA_PIN_PULL_UP>; nvidia,tristate = <TEGRA_PIN_ENABLE>; };
arch/arm64/boot/dts/freescale/fsl-ls1046a-frwy.dts +1 -7
@@ -83,15 +83,9 @@ }; eeprom@52 { - compatible = "atmel,24c512"; + compatible = "onnn,cat24c04", "atmel,24c04"; reg = <0x52>; }; - - eeprom@53 { - compatible = "atmel,24c512"; - reg = <0x53>; - }; - }; }; };
arch/arm64/boot/dts/freescale/fsl-ls1046a-rdb.dts +1 -6
@@ -58,14 +58,9 @@ }; eeprom@52 { - compatible = "atmel,24c512"; + compatible = "onnn,cat24c05", "atmel,24c04"; reg = <0x52>; }; - - eeprom@53 { - compatible = "atmel,24c512"; - reg = <0x53>; - }; }; &i2c3 {
arch/arm64/boot/dts/nvidia/tegra132.dtsi +2 -2
@@ -1082,13 +1082,13 @@ cpu@0 { device_type = "cpu"; - compatible = "nvidia,denver"; + compatible = "nvidia,tegra132-denver"; reg = <0>; }; cpu@1 { device_type = "cpu"; - compatible = "nvidia,denver"; + compatible = "nvidia,tegra132-denver"; reg = <1>; }; };
arch/arm64/boot/dts/nvidia/tegra194.dtsi +3 -3
@@ -1434,7 +1434,7 @@ }; pcie_ep@14160000 { - compatible = "nvidia,tegra194-pcie-ep", "snps,dw-pcie-ep"; + compatible = "nvidia,tegra194-pcie-ep"; power-domains = <&bpmp TEGRA194_POWER_DOMAIN_PCIEX4A>; reg = <0x00 0x14160000 0x0 0x00020000 /* appl registers (128K) */ 0x00 0x36040000 0x0 0x00040000 /* iATU_DMA reg space (256K) */
@@ -1466,7 +1466,7 @@ }; pcie_ep@14180000 { - compatible = "nvidia,tegra194-pcie-ep", "snps,dw-pcie-ep"; + compatible = "nvidia,tegra194-pcie-ep"; power-domains = <&bpmp TEGRA194_POWER_DOMAIN_PCIEX8B>; reg = <0x00 0x14180000 0x0 0x00020000 /* appl registers (128K) */ 0x00 0x38040000 0x0 0x00040000 /* iATU_DMA reg space (256K) */
@@ -1498,7 +1498,7 @@ }; pcie_ep@141a0000 { - compatible = "nvidia,tegra194-pcie-ep", "snps,dw-pcie-ep"; + compatible = "nvidia,tegra194-pcie-ep"; power-domains = <&bpmp TEGRA194_POWER_DOMAIN_PCIEX8A>; reg = <0x00 0x141a0000 0x0 0x00020000 /* appl registers (128K) */ 0x00 0x3a040000 0x0 0x00040000 /* iATU_DMA reg space (256K) */
arch/arm64/boot/dts/qcom/ipq8074-hk01.dts +1 -1
@@ -20,7 +20,7 @@ stdout-path = "serial0"; }; - memory { + memory@40000000 { device_type = "memory"; reg = <0x0 0x40000000 0x0 0x20000000>; };
arch/arm64/include/asm/kernel-pgtable.h +2 -2
@@ -65,8 +65,8 @@#define EARLY_KASLR (0)#endif -#define EARLY_ENTRIES (vstart, vend, shift) (((vend) >> (shift)) \ - - ((vstart) >> (shift)) + 1 + EARLY_KASLR) +#define EARLY_ENTRIES (vstart, vend, shift) \ + ((((vend) - 1) >> (shift)) - ((vstart) >> (shift)) + 1 + EARLY_KASLR)#define EARLY_PGDS (vstart, vend) (EARLY_ENTRIES(vstart, vend, PGDIR_SHIFT))
arch/arm64/kernel/fpsimd.c +1 -1
@@ -498,7 +498,7 @@ size_t sve_state_size(struct task_struct const *task)void sve_alloc (struct task_struct *task) {if (task->thread.sve_state) { -memset (task->thread.sve_state,0 ,sve_state_size (current)); +memset (task->thread.sve_state,0 ,sve_state_size (task));return ; }
arch/arm64/kernel/head.S +6 -5
@@ -194,7 +194,7 @@ ENDPROC(preserve_boot_args) * to be composed of multiple pages. (This effectively scales the end index). * * vstart: virtual address of start of range - * vend: virtual address of end of range + * vend: virtual address of end of range - we map [vstart, vend] * shift: shift used to transform virtual address into index * ptrs: number of entries in page table * istart: index in table corresponding to vstart
@@ -231,17 +231,18 @@ ENDPROC(preserve_boot_args) * * tbl: location of page table * rtbl: address to be used for first level page table entry (typically tbl + PAGE_SIZE) - * vstart: start address to map - * vend: end address to map - we map [vstart, vend] + * vstart: virtual address of start of range + * vend: virtual address of end of range - we map [vstart, vend - 1] * flags: flags to use to map last level entries * phys: physical address corresponding to vstart - physical memory is contiguous * pgds: the number of pgd entries * * Temporaries: istart, iend, tmp, count, sv - these need to be different registers - * Preserves: vstart, vend, flags - * Corrupts: tbl, rtbl, istart, iend, tmp, count, sv + * Preserves: vstart, flags + * Corrupts: tbl, rtbl, vend, istart, iend, tmp, count, sv */ .macro map_memory, tbl, rtbl, vstart, vend, flags, phys, pgds, istart, iend, tmp, count, sv + sub \vend, \vend, #1 add \rtbl, \tbl, #PAGE_SIZE mov \sv, \rtbl mov \count, #0
arch/m68k/Kconfig.bus +1 -1
@@ -63,7 +63,7 @@ source "drivers/zorro/Kconfig" endif -if !MMU +if COLDFIRE config ISA_DMA_API def_bool !M5272
arch/mips/mti-malta/malta-dtshim.c +1 -1
@@ -22,7 +22,7 @@#define ROCIT_CONFIG_GEN1_MEMMAP_SHIFT 8#define ROCIT_CONFIG_GEN1_MEMMAP_MASK (0xf << 8) -static unsigned char fdt_buf[16 <<10 ]__initdata ; +static unsigned char fdt_buf[16 <<10 ]__initdata __aligned(8) ;/* determined physical memory size, not overridden by command line args */ extern unsigned long physical_memsize;
arch/openrisc/kernel/entry.S +2 -0
@@ -547,6 +547,7 @@ EXCEPTION_ENTRY(_external_irq_handler) l.bnf 1f // ext irq enabled, all ok. l.nop +#ifdef CONFIG_PRINTK l.addi r1,r1,-0x8 l.movhi r3,hi(42f) l.ori r3,r3,lo(42f)
@@ -560,6 +561,7 @@ EXCEPTION_ENTRY(_external_irq_handler) .string "\n\rESR interrupt bug: in _external_irq_handler (ESR %x)\n\r" .align 4 .previous +#endif l.ori r4,r4,SPR_SR_IEE // fix the bug // l.sw PT_SR(r1),r4
arch/parisc/kernel/signal.c +6 -0
@@ -238,6 +238,12 @@ setup_rt_frame(struct ksignal *ksig, sigset_t *set, struct pt_regs *regs,#endif usp = (regs->gr[30 ] & ~(0x01UL )); +#ifdef CONFIG_64BIT +if (is_compat_task ()) { +/* The gcc alloca implementation leaves garbage in the upper 32 bits of sp */ + usp = (compat_uint_t )usp; + } +#endif /*FIXME: frame_size parameter is unused, remove it. */ frame =get_sigframe (&ksig->ka, usp,sizeof (*frame));
arch/powerpc/configs/mpc885_ads_defconfig +1 -0
@@ -39,6 +39,7 @@ CONFIG_MTD_CFI_GEOMETRY=y # CONFIG_MTD_CFI_I2 is not set CONFIG_MTD_CFI_I4=y CONFIG_MTD_CFI_AMDSTD=y +CONFIG_MTD_PHYSMAP=y CONFIG_MTD_PHYSMAP_OF=y # CONFIG_BLK_DEV is not set CONFIG_NETDEVICES=y
arch/powerpc/include/asm/pmc.h +7 -0
@@ -34,6 +34,13 @@ static inline void ppc_set_pmu_inuse(int inuse)#endif } +#ifdef CONFIG_KVM_BOOK3S_HV_POSSIBLE +static inline int ppc_get_pmu_inuse (void ) +{ +return get_paca ()->pmcregs_in_use; +} +#endif +extern void power4_enable_pmcs (void );#else /* CONFIG_PPC64 */
arch/powerpc/kernel/stacktrace.c +1 -0
@@ -8,6 +8,7 @@* Copyright 2018 Nick Piggin, Michael Ellerman, IBM Corp. */ +#include <linux/delay.h> #include <linux/export.h> #include <linux/kallsyms.h> #include <linux/module.h>
arch/powerpc/kvm/book3s_64_vio_hv.c +6 -3
@@ -177,10 +177,13 @@ static void kvmppc_rm_tce_put(struct kvmppc_spapr_tce_table *stt, idx -= stt->offset; page = stt->pages[idx /TCES_PER_PAGE ];/* -* page must not be NULL in real mode, -* kvmppc_rm_ioba_validate() must have taken care of this. +* kvmppc_rm_ioba_validate() allows pages not be allocated if TCE is +* being cleared, otherwise it returns H_TOO_HARD and we skip this. */ -WARN_ON_ONCE_RM (!page); +if (!page) { +WARN_ON_ONCE_RM (tce !=0 ); +return ; + } tbl =kvmppc_page_address (page); tbl[idx %TCES_PER_PAGE ] = tce;
arch/powerpc/kvm/book3s_hv.c +20 -0
@@ -58,6 +58,7 @@#include <asm/kvm_book3s.h> #include <asm/mmu_context.h> #include <asm/lppaca.h> +#include <asm/pmc.h> #include <asm/processor.h> #include <asm/cputhreads.h> #include <asm/page.h>
@@ -3559,6 +3560,18 @@ int kvmhv_p9_guest_entry(struct kvm_vcpu *vcpu, u64 time_limit, cpu_has_feature(CPU_FTR_P9_TM_HV_ASSIST))kvmppc_restore_tm_hv (vcpu, vcpu->arch.shregs.msr, true); +#ifdef CONFIG_PPC_PSERIES +if (kvmhv_on_pseries ()) { +barrier (); +if (vcpu->arch.vpa.pinned_addr) { +struct lppaca *lp = vcpu->arch.vpa.pinned_addr; +get_lppaca ()->pmcregs_in_use = lp->pmcregs_in_use; + }else { +get_lppaca ()->pmcregs_in_use =1 ; + } +barrier (); + } +#endif kvmhv_load_guest_pmu (vcpu);msr_check_and_set (MSR_FP |MSR_VEC |MSR_VSX );
@@ -3693,6 +3706,13 @@ int kvmhv_p9_guest_entry(struct kvm_vcpu *vcpu, u64 time_limit, save_pmu |=nesting_enabled (vcpu->kvm);kvmhv_save_guest_pmu (vcpu, save_pmu); +#ifdef CONFIG_PPC_PSERIES +if (kvmhv_on_pseries ()) { +barrier (); +get_lppaca ()->pmcregs_in_use =ppc_get_pmu_inuse (); +barrier (); + } +#endif vc->entry_exit_map =0x101 ; vc->in_guest =0 ;
arch/powerpc/kvm/book3s_hv_rmhandlers.S +34 -2
@@ -3137,7 +3137,7 @@ END_FTR_SECTION_IFCLR(CPU_FTR_P9_TM_HV_ASSIST) /* The following code handles the fake_suspend = 1 case */ mflr r0 std r0, PPC_LR_STKOFF(r1) - stdu r1, -PPC_MIN_STKFRM(r1) + stdu r1, -TM_FRAME_SIZE(r1) /* Turn on TM. */ mfmsr r8
@@ -3152,10 +3152,42 @@ BEGIN_FTR_SECTION END_FTR_SECTION_IFSET(CPU_FTR_P9_TM_XER_SO_BUG) nop + /* + * It's possible that treclaim. may modify registers, if we have lost + * track of fake-suspend state in the guest due to it using rfscv. + * Save and restore registers in case this occurs. + */ + mfspr r3, SPRN_DSCR + mfspr r4, SPRN_XER + mfspr r5, SPRN_AMR + /* SPRN_TAR would need to be saved here if the kernel ever used it */ + mfcr r12 + SAVE_NVGPRS(r1) + SAVE_GPR(2, r1) + SAVE_GPR(3, r1) + SAVE_GPR(4, r1) + SAVE_GPR(5, r1) + stw r12, 8(r1) + std r1, HSTATE_HOST_R1(r13) + /* We have to treclaim here because that's the only way to do S->N */ li r3, TM_CAUSE_KVM_RESCHED TRECLAIM(R3) + GET_PACA(r13) + ld r1, HSTATE_HOST_R1(r13) + REST_GPR(2, r1) + REST_GPR(3, r1) + REST_GPR(4, r1) + REST_GPR(5, r1) + lwz r12, 8(r1) + REST_NVGPRS(r1) + mtspr SPRN_DSCR, r3 + mtspr SPRN_XER, r4 + mtspr SPRN_AMR, r5 + mtcr r12 + HMT_MEDIUM + /* * We were in fake suspend, so we are not going to save the * register state as the guest checkpointed state (since
@@ -3183,7 +3215,7 @@ END_FTR_SECTION_IFSET(CPU_FTR_P9_TM_XER_SO_BUG) std r5, VCPU_TFHAR(r9) std r6, VCPU_TFIAR(r9) - addi r1, r1, PPC_MIN_STKFRM + addi r1, r1, TM_FRAME_SIZE ld r0, PPC_LR_STKOFF(r1) mtlr r0 blr
arch/powerpc/perf/hv-gpci.c +1 -1
@@ -164,7 +164,7 @@ static unsigned long single_gpci_request(u32 req, u32 starting_index,*/ count =0 ;for (i = offset; i < offset + length; i++) - count |= arg->bytes[i] << (i - offset); + count |= (u64)(arg->bytes[i]) << ((length -1 - (i - offset)) *8 ); *value = count; out:
arch/s390/include/asm/setup.h +2 -0
@@ -39,6 +39,7 @@#define MACHINE_FLAG_NX BIT(15)#define MACHINE_FLAG_GS BIT(16)#define MACHINE_FLAG_SCC BIT(17) +#define MACHINE_FLAG_PCI_MIO BIT(18)#define LPP_MAGIC BIT(31)#define LPP_PID_MASK _AC(0xffffffff, UL)
@@ -106,6 +107,7 @@ extern unsigned long __swsusp_reset_dma;#define MACHINE_HAS_NX (S390_lowcore.machine_flags & MACHINE_FLAG_NX)#define MACHINE_HAS_GS (S390_lowcore.machine_flags & MACHINE_FLAG_GS)#define MACHINE_HAS_SCC (S390_lowcore.machine_flags & MACHINE_FLAG_SCC) +#define MACHINE_HAS_PCI_MIO (S390_lowcore.machine_flags & MACHINE_FLAG_PCI_MIO)/* * Console mode. Override with conmode=
arch/s390/kernel/early.c +4 -0
@@ -252,6 +252,10 @@ static __init void detect_machine_facilities(void) clock_comparator_max =-1ULL >>1 ;__ctl_set_bit (0 ,53 ); } +if (IS_ENABLED (CONFIG_PCI ) &&test_facility (153 )) { + S390_lowcore.machine_flags |=MACHINE_FLAG_PCI_MIO ; +/* the control bit is set during PCI initialization */ + } }static inline void save_vector_registers (void )
arch/s390/kernel/jump_label.c +1 -1
@@ -36,7 +36,7 @@ static void jump_label_bug(struct jump_entry *entry, struct insn *expected,unsigned char *ipe = (unsigned char *)expected;unsigned char *ipn = (unsigned char *)new; -pr_emerg ("Jump label code mismatch at %pS [%p]\n" , ipc, ipc); +pr_emerg ("Jump label code mismatch at %pS [%px]\n" , ipc, ipc);pr_emerg ("Found: %6ph\n" , ipc);pr_emerg ("Expected: %6ph\n" , ipe);pr_emerg ("New: %6ph\n" , ipn);
arch/s390/mm/init.c +1 -1
@@ -168,9 +168,9 @@ static void pv_init(void)return ;/* make sure bounce buffers are shared */ + swiotlb_force =SWIOTLB_FORCE ;swiotlb_init (1 );swiotlb_update_mem_attributes (); - swiotlb_force =SWIOTLB_FORCE ; }void __init mem_init (void )
arch/s390/net/bpf_jit_comp.c +37 -30
120 lines not on this page · raw message
arch/s390/pci/pci.c +2 -3
@@ -854,7 +854,6 @@ static void zpci_mem_exit(void) }static unsigned int s390_pci_probe__initdata =1 ; -static unsigned int s390_pci_no_mio__initdata ;unsigned int s390_pci_force_floating__initdata ;static unsigned int s390_pci_initialized;
@@ -865,7 +864,7 @@ char * __init pcibios_setup(char *str)return NULL ; }if (!strcmp (str,"nomio" )) { - s390_pci_no_mio =1 ; + S390_lowcore.machine_flags &= ~MACHINE_FLAG_PCI_MIO ;return NULL ; }if (!strcmp (str,"force_floating" )) {
@@ -890,7 +889,7 @@ static int __init pci_base_init(void)if (!test_facility (69 ) || !test_facility (71 ))return 0 ; -if (test_facility (153 ) && !s390_pci_no_mio) { +if (MACHINE_HAS_PCI_MIO ) {static_branch_enable (&have_mio);ctl_set_bit (2 ,5 ); }
arch/x86/mm/init_64.c +3 -3
@@ -1355,18 +1355,18 @@ int kern_addr_valid(unsigned long addr)return 0 ; p4d =p4d_offset (pgd, addr); -if (p4d_none (*p4d)) +if (!p4d_present (*p4d))return 0 ; pud =pud_offset (p4d, addr); -if (pud_none (*pud)) +if (!pud_present (*pud))return 0 ;if (pud_large (*pud))return pfn_valid (pud_pfn (*pud)); pmd =pmd_offset (pud, addr); -if (pmd_none (*pmd)) +if (!pmd_present (*pmd))return 0 ;if (pmd_large (*pmd))
arch/x86/xen/enlighten_pv.c +7 -0
@@ -1183,6 +1183,11 @@ static void __init xen_dom0_set_legacy_features(void) x86_platform.legacy.rtc =1 ; } +static void __init xen_domu_set_legacy_features (void ) +{ + x86_platform.legacy.rtc =0 ; +} +/* First C function to be called on Xen boot */ asmlinkage __visible void __init xen_start_kernel(void) {
@@ -1353,6 +1358,8 @@ asmlinkage __visible void __init xen_start_kernel(void)add_preferred_console ("xenboot" ,0 ,NULL );if (pci_xen) x86_init.pci.arch_init = pci_xen_init; + x86_platform.set_legacy_features = + xen_domu_set_legacy_features; }else { const struct dom0_vga_console_info *info = (void *)((char *)xen_start_info +
arch/x86/xen/p2m.c +2 -2
@@ -622,8 +622,8 @@ int xen_alloc_p2m_entry(unsigned long pfn) }/* Expanded the p2m? */ -if (pfn > xen_p2m_last_pfn) { - xen_p2m_last_pfn = pfn; +if (pfn >= xen_p2m_last_pfn) { + xen_p2m_last_pfn =ALIGN (pfn +1 ,P2M_PER_PAGE ); HYPERVISOR_shared_info->arch.max_pfn = xen_p2m_last_pfn; }
arch/xtensa/platforms/iss/console.c +14 -3
@@ -168,9 +168,13 @@ static const struct tty_operations serial_ops = {int __init rs_init (void ) { -tty_port_init (&serial_port); +int ret; serial_driver =alloc_tty_driver (SERIAL_MAX_NUM_LINES ); +if (!serial_driver) +return -ENOMEM ; + +tty_port_init (&serial_port);pr_info ("%s %s\n" , serial_name, serial_version);
@@ -190,8 +194,15 @@ int __init rs_init(void)tty_set_operations (serial_driver, &serial_ops);tty_port_link_device (&serial_port, serial_driver,0 ); -if (tty_register_driver (serial_driver)) -panic ("Couldn't register serial driver\n" ); + ret =tty_register_driver (serial_driver); +if (ret) { +pr_err ("Couldn't register serial driver\n" ); +tty_driver_kref_put (serial_driver); +tty_port_destroy (&serial_port); + +return ret; + } +return 0 ; }
block/bfq-iosched.c +14 -4
@@ -2523,6 +2523,15 @@ bfq_setup_merge(struct bfq_queue *bfqq, struct bfq_queue *new_bfqq)* are likely to increase the throughput. */ bfqq->new_bfqq = new_bfqq; +/* +* The above assignment schedules the following redirections: +* each time some I/O for bfqq arrives, the process that +* generated that I/O is disassociated from bfqq and +* associated with new_bfqq. Here we increases new_bfqq->ref +* in advance, adding the number of processes that are +* expected to be associated with new_bfqq as they happen to +* issue I/O. +*/ new_bfqq->ref += process_refs;return new_bfqq; }
@@ -2582,6 +2591,10 @@ bfq_setup_cooperator(struct bfq_data *bfqd, struct bfq_queue *bfqq, {struct bfq_queue *in_service_bfqq, *new_bfqq; +/* if a merge has already been setup, then proceed with that first */ +if (bfqq->new_bfqq) +return bfqq->new_bfqq; +/* * Do not perform queue merging if the device is non * rotational and performs internal queueing. In fact, such a
@@ -2636,9 +2649,6 @@ bfq_setup_cooperator(struct bfq_data *bfqd, struct bfq_queue *bfqq,if (bfq_too_late_for_merging (bfqq))return NULL ; -if (bfqq->new_bfqq) -return bfqq->new_bfqq; -if (!io_struct ||unlikely (bfqq == &bfqd->oom_bfqq))return NULL ;
@@ -5004,7 +5014,7 @@ bfq_set_next_ioprio_data(struct bfq_queue *bfqq, struct bfq_io_cq *bic)if (bfqq->new_ioprio >=IOPRIO_BE_NR ) {pr_crit ("bfq_set_next_ioprio_data: new_ioprio %d\n" , bfqq->new_ioprio); - bfqq->new_ioprio =IOPRIO_BE_NR ; + bfqq->new_ioprio =IOPRIO_BE_NR -1 ; } bfqq->entity.new_weight =bfq_ioprio_to_weight (bfqq->new_ioprio);
block/blk-zoned.c +0 -6
@@ -316,9 +316,6 @@ int blkdev_report_zones_ioctl(struct block_device *bdev, fmode_t mode,if (!blk_queue_is_zoned (q))return -ENOTTY ; -if (!capable (CAP_SYS_ADMIN )) -return -EACCES ; -if (copy_from_user (&rep, argp,sizeof (struct blk_zone_report )))return -EFAULT ;
@@ -374,9 +371,6 @@ int blkdev_reset_zones_ioctl(struct block_device *bdev, fmode_t mode,if (!blk_queue_is_zoned (q))return -ENOTTY ; -if (!capable (CAP_SYS_ADMIN )) -return -EACCES ; -if (!(mode &FMODE_WRITE ))return -EBADF ;
block/bsg.c +4 -1
@@ -371,10 +371,13 @@ static long bsg_ioctl(struct file *file, unsigned int cmd, unsigned long arg)case SG_GET_RESERVED_SIZE :case SG_SET_RESERVED_SIZE :case SG_EMULATED_HOST : -case SCSI_IOCTL_SEND_COMMAND :return scsi_cmd_ioctl (bd->queue,NULL , file->f_mode, cmd, uarg);case SG_IO :return bsg_sg_io (bd->queue, file->f_mode, uarg); +case SCSI_IOCTL_SEND_COMMAND : +pr_warn_ratelimited ("%s: calling unsupported SCSI_IOCTL_SEND_COMMAND\n" , + current->comm); +return -EINVAL ;default :return -ENOTTY ; }
drivers/ata/libata-core.c +4 -0
@@ -4556,6 +4556,10 @@ static const struct ata_blacklist_entry ata_device_blacklist [] = { ATA_HORKAGE_ZERO_AFTER_TRIM, }, {"Samsung SSD 850*" ,NULL ,ATA_HORKAGE_NO_NCQ_TRIM | ATA_HORKAGE_ZERO_AFTER_TRIM, }, + { "Samsung SSD 860*", NULL, ATA_HORKAGE_NO_NCQ_TRIM | + ATA_HORKAGE_ZERO_AFTER_TRIM, }, + { "Samsung SSD 870*", NULL, ATA_HORKAGE_NO_NCQ_TRIM | + ATA_HORKAGE_ZERO_AFTER_TRIM, }, { "FCCT*M500*", NULL, ATA_HORKAGE_NO_NCQ_TRIM | ATA_HORKAGE_ZERO_AFTER_TRIM, },
drivers/ata/sata_dwc_460ex.c +4 -8
@@ -1249,24 +1249,20 @@ static int sata_dwc_probe(struct platform_device *ofdev) irq =irq_of_parse_and_map (np,0 );if (irq ==NO_IRQ ) {dev_err (&ofdev->dev,"no SATA DMA irq\n" ); - err = -ENODEV ; - goto error_out; +return -ENODEV ; }#ifdef CONFIG_SATA_DWC_OLD_DMA if (!of_find_property (np,"dmas" ,NULL )) { err =sata_dwc_dma_init_old (ofdev, hsdev);if (err) - goto error_out; +return err; }#endif hsdev->phy =devm_phy_optional_get (hsdev->dev,"sata-phy" ); -if (IS_ERR (hsdev->phy)) { - err =PTR_ERR (hsdev->phy); - hsdev->phy =NULL ; - goto error_out; - } +if (IS_ERR (hsdev->phy)) +return PTR_ERR (hsdev->phy); err =phy_init (hsdev->phy);if (err)
drivers/base/power/trace.c +10 -0
@@ -13,6 +13,7 @@#include <linux/export.h> #include <linux/rtc.h> #include <linux/suspend.h> +#include <linux/init.h> #include <linux/mc146818rtc.h>
@@ -165,6 +166,9 @@ void generate_pm_trace(const void *tracedata, unsigned int user)const char *file = *(const char **)(tracedata +2 );unsigned int user_hash_value, file_hash_value; +if (!x86_platform.legacy.rtc) +return ; + user_hash_value = user %USERHASH ; file_hash_value =hash_string (lineno, file,FILEHASH );set_magic_time (user_hash_value, file_hash_value, dev_hash_value);
@@ -267,6 +271,9 @@ static struct notifier_block pm_trace_nb = {static int early_resume_init (void ) { +if (!x86_platform.legacy.rtc) +return 0 ; + hash_value_early_read =read_magic_time ();register_pm_notifier (&pm_trace_nb);return 0 ;
@@ -277,6 +284,9 @@ static int late_resume_init(void)unsigned int val = hash_value_early_read;unsigned int user, file, dev; +if (!x86_platform.legacy.rtc) +return 0 ; + user = val %USERHASH ; val = val /USERHASH ; file = val %FILEHASH ;
drivers/clk/at91/clk-generated.c +20 -12
@@ -18,8 +18,6 @@#define GENERATED_MAX_DIV 255 -#define GCK_INDEX_DT_AUDIO_PLL 5 -struct clk_generated {struct clk_hw hw;struct regmap *regmap;
@@ -29,7 +27,7 @@ struct clk_generated {u32 gckdiv;const struct clk_pcr_layout *layout;u8 parent_id; -bool audio_pll_allowed; +int chg_pid; };#define to_clk_generated (hw) \
@@ -109,7 +107,7 @@ static void clk_generated_best_diff(struct clk_rate_request *req, tmp_rate = parent_rate / div; tmp_diff =abs (req->rate - tmp_rate); -if (*best_diff <0 || *best_diff > tmp_diff) { +if (*best_diff <0 || *best_diff >= tmp_diff) { *best_rate = tmp_rate; *best_diff = tmp_diff; req->best_parent_rate = parent_rate;
@@ -129,7 +127,16 @@ static int clk_generated_determine_rate(struct clk_hw *hw,int i;u32 div; -for (i =0 ; i <clk_hw_get_num_parents (hw) -1 ; i++) { +/* do not look for a rate that is outside of our range */ +if (gck->range.max && req->rate > gck->range.max) + req->rate = gck->range.max; +if (gck->range.min && req->rate < gck->range.min) + req->rate = gck->range.min; + +for (i =0 ; i <clk_hw_get_num_parents (hw); i++) { +if (gck->chg_pid == i) +continue ; + parent =clk_hw_get_parent_by_index (hw, i);if (!parent)continue ;
@@ -161,10 +168,10 @@ static int clk_generated_determine_rate(struct clk_hw *hw,* that the only clks able to modify gck rate are those of audio IPs. */ -if (!gck->audio_pll_allowed) +if (gck->chg_pid <0 ) goto end; - parent =clk_hw_get_parent_by_index (hw,GCK_INDEX_DT_AUDIO_PLL ); + parent =clk_hw_get_parent_by_index (hw, gck->chg_pid);if (!parent) goto end;
@@ -271,8 +278,8 @@ struct clk_hw * __init at91_clk_register_generated(struct regmap *regmap, spinlock_t *lock, const struct clk_pcr_layout *layout, const char *name, const char **parent_names, - u8 num_parents, u8 id, bool pll_audio, - const struct clk_range *range) + u8 num_parents, u8 id, + const struct clk_range *range, int chg_pid) { struct clk_generated *gck;struct clk_init_data init;
@@ -287,15 +294,16 @@ at91_clk_register_generated(struct regmap *regmap, spinlock_t *lock, init.ops = &generated_ops; init.parent_names = parent_names; init.num_parents = num_parents; - init.flags =CLK_SET_RATE_GATE |CLK_SET_PARENT_GATE | -CLK_SET_RATE_PARENT ; + init.flags =CLK_SET_RATE_GATE |CLK_SET_PARENT_GATE ; +if (chg_pid >=0 ) + init.flags |=CLK_SET_RATE_PARENT ; gck->id = id; gck->hw.init = &init; gck->regmap = regmap; gck->lock = lock; gck->range = *range; - gck->audio_pll_allowed = pll_audio; + gck->chg_pid = chg_pid; gck->layout = layout;clk_generated_startup (gck);
drivers/clk/at91/dt-compat.c +5 -3
@@ -22,6 +22,8 @@#define SYSTEM_MAX_ID 31 +#define GCK_INDEX_DT_AUDIO_PLL 5 +#ifdef CONFIG_HAVE_AT91_AUDIO_PLL static void __init of_sama5d2_clk_audio_pll_frac_setup (struct device_node *np) {
@@ -135,7 +137,7 @@ static void __init of_sama5d2_clk_generated_setup(struct device_node *np)return ;for_each_child_of_node (np, gcknp) { -bool pll_audio = false; +int chg_pid =INT_MIN ;if (of_property_read_u32 (gcknp,"reg" , &id))continue ;
@@ -152,12 +154,12 @@ static void __init of_sama5d2_clk_generated_setup(struct device_node *np)if (of_device_is_compatible (np,"atmel,sama5d2-clk-generated" ) && (id ==GCK_ID_I2S0 || id ==GCK_ID_I2S1 || id ==GCK_ID_CLASSD )) - pll_audio = true; + chg_pid =GCK_INDEX_DT_AUDIO_PLL ; hw =at91_clk_register_generated (regmap, &pmc_pcr_lock, &dt_pcr_layout, name, parent_names, num_parents, - id, pll_audio, &range); + id, &range, chg_pid);if (IS_ERR (hw))continue ;
drivers/clk/at91/pmc.h +2 -2
@@ -118,8 +118,8 @@ struct clk_hw * __init at91_clk_register_generated(struct regmap *regmap, spinlock_t *lock, const struct clk_pcr_layout *layout, const char *name, const char **parent_names, - u8 num_parents, u8 id, bool pll_audio, - const struct clk_range *range); + u8 num_parents, u8 id, + const struct clk_range *range, int chg_pid);struct clk_hw *__init at91_clk_register_h32mx(struct regmap *regmap, const char *name,
drivers/clk/at91/sam9x60.c +3 -7
@@ -124,7 +124,6 @@ static const struct {char *n;u8 id;struct clk_range r; -bool pll; } sam9x60_gck[] = { { .n = "flex0_gclk", .id = 5, }, { .n = "flex1_gclk", .id = 6, },
@@ -144,11 +143,9 @@ static const struct { { .n = "sdmmc1_gclk", .id = 26, .r = { .min = 0, .max = 105000000 }, }, { .n = "flex11_gclk", .id = 32, }, { .n = "flex12_gclk", .id = 33, }, - { .n = "i2s_gclk", .id = 34, .r = { .min = 0, .max = 105000000 }, - .pll = true, }, + { .n = "i2s_gclk", .id = 34, .r = { .min = 0, .max = 105000000 }, }, { .n = "pit64b_gclk", .id = 37, }, - { .n = "classd_gclk", .id = 42, .r = { .min = 0, .max = 100000000 }, - .pll = true, }, + { .n = "classd_gclk", .id = 42, .r = { .min = 0, .max = 100000000 }, }, { .n = "tcb1_gclk", .id = 45, }, { .n = "dbgu_gclk", .id = 47, }, };
@@ -285,8 +282,7 @@ static void __init sam9x60_pmc_setup(struct device_node *np) sam9x60_gck[i].n, parent_names,6 , sam9x60_gck[i].id, - sam9x60_gck[i].pll, - &sam9x60_gck[i].r); + &sam9x60_gck[i].r, INT_MIN);if (IS_ERR (hw)) goto err_free;
drivers/clk/at91/sama5d2.c +15 -16
@@ -115,21 +115,20 @@ static const struct {char *n;u8 id;struct clk_range r; -bool pll; +int chg_pid; } sama5d2_gck[] = { - { .n = "sdmmc0_gclk", .id = 31, }, - { .n = "sdmmc1_gclk", .id = 32, }, - { .n = "tcb0_gclk", .id = 35, .r = { .min = 0, .max = 83000000 }, }, - { .n = "tcb1_gclk", .id = 36, .r = { .min = 0, .max = 83000000 }, }, - { .n = "pwm_gclk", .id = 38, .r = { .min = 0, .max = 83000000 }, }, - { .n = "isc_gclk", .id = 46, }, - { .n = "pdmic_gclk", .id = 48, }, - { .n = "i2s0_gclk", .id = 54, .pll = true }, - { .n = "i2s1_gclk", .id = 55, .pll = true }, - { .n = "can0_gclk", .id = 56, .r = { .min = 0, .max = 80000000 }, }, - { .n = "can1_gclk", .id = 57, .r = { .min = 0, .max = 80000000 }, }, - { .n = "classd_gclk", .id = 59, .r = { .min = 0, .max = 100000000 }, - .pll = true }, + { .n = "sdmmc0_gclk", .id = 31, .chg_pid = INT_MIN, }, + { .n = "sdmmc1_gclk", .id = 32, .chg_pid = INT_MIN, }, + { .n = "tcb0_gclk", .id = 35, .chg_pid = INT_MIN, .r = { .min = 0, .max = 83000000 }, }, + { .n = "tcb1_gclk", .id = 36, .chg_pid = INT_MIN, .r = { .min = 0, .max = 83000000 }, }, + { .n = "pwm_gclk", .id = 38, .chg_pid = INT_MIN, .r = { .min = 0, .max = 83000000 }, }, + { .n = "isc_gclk", .id = 46, .chg_pid = INT_MIN, }, + { .n = "pdmic_gclk", .id = 48, .chg_pid = INT_MIN, }, + { .n = "i2s0_gclk", .id = 54, .chg_pid = 5, }, + { .n = "i2s1_gclk", .id = 55, .chg_pid = 5, }, + { .n = "can0_gclk", .id = 56, .chg_pid = INT_MIN, .r = { .min = 0, .max = 80000000 }, }, + { .n = "can1_gclk", .id = 57, .chg_pid = INT_MIN, .r = { .min = 0, .max = 80000000 }, }, + { .n = "classd_gclk", .id = 59, .chg_pid = 5, .r = { .min = 0, .max = 100000000 }, }, }; static const struct clk_programmable_layout sama5d2_programmable_layout = {
@@ -317,8 +316,8 @@ static void __init sama5d2_pmc_setup(struct device_node *np) sama5d2_gck[i].n, parent_names,6 , sama5d2_gck[i].id, - sama5d2_gck[i].pll, - &sama5d2_gck[i].r); + &sama5d2_gck[i].r, + sama5d2_gck[i].chg_pid);if (IS_ERR (hw)) goto err_free;
drivers/cpufreq/powernv-cpufreq.c +14 -2
@@ -36,6 +36,7 @@#define MAX_PSTATE_SHIFT 32#define LPSTATE_SHIFT 48#define GPSTATE_SHIFT 56 +#define MAX_NR_CHIPS 32#define MAX_RAMP_DOWN_TIME 5120/*
@@ -1050,12 +1051,20 @@ static int init_chip_info(void)unsigned int *chip;unsigned int cpu, i;unsigned int prev_chip_id =UINT_MAX ; +cpumask_t *chip_cpu_mask;int ret =0 ; chip =kcalloc (num_possible_cpus (),sizeof (*chip),GFP_KERNEL );if (!chip)return -ENOMEM ; +/* Allocate a chip cpu mask large enough to fit mask for all chips */ + chip_cpu_mask =kcalloc (MAX_NR_CHIPS ,sizeof (cpumask_t),GFP_KERNEL ); +if (!chip_cpu_mask) { + ret = -ENOMEM ; + goto free_and_return; + } +for_each_possible_cpu (cpu) {unsigned int id =cpu_to_chip_id (cpu);
@@ -1063,22 +1072,25 @@ static int init_chip_info(void) prev_chip_id = id; chip[nr_chips++] = id; } +cpumask_set_cpu (cpu, &chip_cpu_mask[nr_chips-1 ]); } chips =kcalloc (nr_chips,sizeof (struct chip ),GFP_KERNEL );if (!chips) { ret = -ENOMEM ; - goto free_and_return; + goto out_free_chip_cpu_mask; }for (i =0 ; i < nr_chips; i++) { chips[i].id = chip[i]; -cpumask_copy (&chips[i].mask,cpumask_of_node (chip[i])); +cpumask_copy (&chips[i].mask, &chip_cpu_mask[i]);INIT_WORK (&chips[i].throttle, powernv_cpufreq_work_fn);for_each_cpu (cpu, &chips[i].mask)per_cpu (chip_info, cpu) = &chips[i]; } +out_free_chip_cpu_mask: +kfree (chip_cpu_mask); free_and_return:kfree (chip);return ret;
drivers/crypto/mxs-dcp.c +9 -27
@@ -298,21 +298,20 @@ static int mxs_dcp_aes_block_crypt(struct crypto_async_request *arq)struct scatterlist *dst = req->dst;struct scatterlist *src = req->src; -const int nents =sg_nents (req->src); +int dst_nents =sg_nents (dst);const int out_off =DCP_BUF_SZ ;uint8_t *in_buf = sdcp->coh->aes_in_buf;uint8_t *out_buf = sdcp->coh->aes_out_buf; -uint8_t *out_tmp, *src_buf, *dst_buf =NULL ;uint32_t dst_off =0 ; +uint8_t *src_buf =NULL ;uint32_t last_out_len =0 ;uint8_t *key = sdcp->coh->aes_key;int ret =0 ; -int split =0 ; -unsigned int i, len, clen, rem =0 , tlen =0 ; +unsigned int i, len, clen, tlen =0 ;int init =0 ;bool limit_hit = false;
@@ -330,7 +329,7 @@ static int mxs_dcp_aes_block_crypt(struct crypto_async_request *arq)memset (key +AES_KEYSIZE_128 ,0 ,AES_KEYSIZE_128 ); } -for_each_sg (req->src, src, nents, i) { +for_each_sg (req->src, src,sg_nents (src), i) { src_buf =sg_virt (src); len =sg_dma_len (src); tlen += len;
@@ -355,34 +354,17 @@ static int mxs_dcp_aes_block_crypt(struct crypto_async_request *arq)* submit the buffer. */ if (actx->fill == out_off ||sg_is_last (src) || - limit_hit) { + limit_hit) { ret =mxs_dcp_run_aes (actx, req, init);if (ret)return ret; init =0 ; - out_tmp = out_buf; +sg_pcopy_from_buffer (dst, dst_nents, out_buf, + actx->fill, dst_off); + dst_off += actx->fill; last_out_len = actx->fill; -while (dst && actx->fill) { -if (!split) { - dst_buf =sg_virt (dst); - dst_off =0 ; - } - rem =min (sg_dma_len (dst) - dst_off, - actx->fill); - -memcpy (dst_buf + dst_off, out_tmp, rem); - out_tmp += rem; - dst_off += rem; - actx->fill -= rem; - -if (dst_off ==sg_dma_len (dst)) { - dst =sg_next (dst); - split =0 ; - }else { - split =1 ; - } - } + actx->fill =0 ; } }while (len);
drivers/dma/imx-sdma.c +1 -12
@@ -377,7 +377,6 @@ struct sdma_channel {unsigned long watermark_level;u32 shp_addr, per_addr;enum dma_status status; -bool context_loaded;struct imx_dma_data data;struct work_struct terminate_worker; };
@@ -988,9 +987,6 @@ static int sdma_load_context(struct sdma_channel *sdmac)int ret;unsigned long flags; -if (sdmac->context_loaded) -return 0 ; -if (sdmac->direction ==DMA_DEV_TO_MEM ) load_address = sdmac->pc_from_device;else if (sdmac->direction ==DMA_DEV_TO_DEV )
@@ -1033,8 +1029,6 @@ static int sdma_load_context(struct sdma_channel *sdmac)spin_unlock_irqrestore (&sdma->channel_0_lock, flags); - sdmac->context_loaded = true; -return ret; }
@@ -1074,7 +1068,6 @@ static void sdma_channel_terminate_work(struct work_struct *work) sdmac->desc =NULL ;spin_unlock_irqrestore (&sdmac->vc.lock, flags);vchan_dma_desc_free_list (&sdmac->vc, &head); - sdmac->context_loaded = false; }static int sdma_disable_channel_async (struct dma_chan *chan)
@@ -1141,7 +1134,6 @@ static void sdma_set_watermarklevel_for_p2p(struct sdma_channel *sdmac)static int sdma_config_channel (struct dma_chan *chan) {struct sdma_channel *sdmac =to_sdma_chan (chan); -int ret;sdma_disable_channel (chan);
@@ -1181,9 +1173,7 @@ static int sdma_config_channel(struct dma_chan *chan) sdmac->watermark_level =0 ;/* FIXME: M3_BASE_ADDRESS */ } - ret =sdma_load_context (sdmac); - -return ret; +return 0 ; } static int sdma_set_channel_priority(struct sdma_channel *sdmac,
@@ -1335,7 +1325,6 @@ static void sdma_free_chan_resources(struct dma_chan *chan) sdmac->event_id0 =0 ; sdmac->event_id1 =0 ; - sdmac->context_loaded = false;sdma_set_channel_priority (sdmac,0 );
drivers/gpu/drm/amd/amdgpu/amdgpu.h +1 -1
@@ -762,7 +762,7 @@ enum amd_hw_ip_block_type {MAX_HWIP }; -#define HWIP_MAX_INSTANCE 8 +#define HWIP_MAX_INSTANCE 10struct amd_powerplay {void *pp_handle;
drivers/gpu/drm/amd/amdgpu/amdgpu_i2c.c +1 -1
@@ -339,7 +339,7 @@ static void amdgpu_i2c_put_byte(struct amdgpu_i2c_chan *i2c_bus,void amdgpu_i2c_router_select_ddc_port (const struct amdgpu_connector *amdgpu_connector) { -u8 val; +u8 val =0 ;if (!amdgpu_connector->router.ddc_valid)return ;
drivers/gpu/drm/amd/amdgpu/amdgpu_object.c +1 -1
@@ -200,7 +200,7 @@ void amdgpu_bo_placement_from_domain(struct amdgpu_bo *abo, u32 domain) c++; } -BUG_ON (c >=AMDGPU_BO_MAX_PLACEMENTS ); +BUG_ON (c >AMDGPU_BO_MAX_PLACEMENTS ); placement->num_placement = c; placement->placement = places;
drivers/gpu/drm/amd/amdgpu/amdgpu_ras_eeprom.c +1 -1
@@ -138,7 +138,7 @@ int amdgpu_ras_eeprom_init(struct amdgpu_ras_eeprom_control *control)return ret; } -__decode_table_header_from_buff (hdr, &buff[2 ]); +__decode_table_header_from_buff (hdr, buff);if (hdr->header ==EEPROM_TABLE_HDR_VAL ) { control->num_recs = (hdr->tbl_size - EEPROM_TABLE_HEADER_SIZE) /
drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager.c +63 -21
99 lines not on this page · raw message
drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager.h +1 -0
@@ -27,6 +27,7 @@#include "kfd_priv.h" #define KFD_MAX_NUM_SE 8 +#define KFD_MAX_NUM_SH_PER_SE 2/** * struct mqd_manager
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_debugfs.c +8 -8
@@ -95,29 +95,29 @@ static ssize_t dp_link_settings_read(struct file *f, char __user *buf, rd_buf_ptr = rd_buf; - str_len =strlen ("Current: %d %d %d " ); -snprintf (rd_buf_ptr, str_len,"Current: %d %d %d " , + str_len =strlen ("Current: %d 0x%x %d " ); +snprintf (rd_buf_ptr, str_len,"Current: %d 0x%x %d " , link->cur_link_settings.lane_count, link->cur_link_settings.link_rate, link->cur_link_settings.link_spread); rd_buf_ptr += str_len; - str_len =strlen ("Verified: %d %d %d " ); -snprintf (rd_buf_ptr, str_len,"Verified: %d %d %d " , + str_len =strlen ("Verified: %d 0x%x %d " ); +snprintf (rd_buf_ptr, str_len,"Verified: %d 0x%x %d " , link->verified_link_cap.lane_count, link->verified_link_cap.link_rate, link->verified_link_cap.link_spread); rd_buf_ptr += str_len; - str_len =strlen ("Reported: %d %d %d " ); -snprintf (rd_buf_ptr, str_len,"Reported: %d %d %d " , + str_len =strlen ("Reported: %d 0x%x %d " ); +snprintf (rd_buf_ptr, str_len,"Reported: %d 0x%x %d " , link->reported_link_cap.lane_count, link->reported_link_cap.link_rate, link->reported_link_cap.link_spread); rd_buf_ptr += str_len; - str_len =strlen ("Preferred: %d %d %d " ); -snprintf (rd_buf_ptr, str_len,"Preferred: %d %d %d\n" , + str_len =strlen ("Preferred: %d 0x%x %d " ); +snprintf (rd_buf_ptr, str_len,"Preferred: %d 0x%x %d\n" , link->preferred_link_setting.lane_count, link->preferred_link_setting.link_rate, link->preferred_link_setting.link_spread);
drivers/gpu/drm/amd/display/dc/dcn10/dcn10_hw_sequencer.c +5 -6
@@ -3264,13 +3264,12 @@ static enum dc_status dcn10_set_clock(struct dc *dc,struct dc_clock_config clock_cfg = {0 };struct dc_clocks *current_clocks = &context->bw_ctx.bw.dcn.clk; -if (dc->clk_mgr && dc->clk_mgr->funcs->get_clock) - dc->clk_mgr->funcs->get_clock (dc->clk_mgr, - context, clock_type, &clock_cfg); - -if (!dc->clk_mgr->funcs->get_clock) +if (!dc->clk_mgr || !dc->clk_mgr->funcs->get_clock)return DC_FAIL_UNSUPPORTED_1 ; + dc->clk_mgr->funcs->get_clock (dc->clk_mgr, + context, clock_type, &clock_cfg); +if (clk_khz > clock_cfg.max_clock_khz)return DC_FAIL_CLK_EXCEED_MAX ;
@@ -3288,7 +3287,7 @@ static enum dc_status dcn10_set_clock(struct dc *dc,else return DC_ERROR_UNEXPECTED ; -if (dc->clk_mgr && dc->clk_mgr->funcs->update_clocks) +if (dc->clk_mgr->funcs->update_clocks) dc->clk_mgr->funcs->update_clocks (dc->clk_mgr, context, true);return DC_OK ;
drivers/gpu/drm/amd/display/dc/dcn20/dcn20_resource.c +1 -1
@@ -2232,7 +2232,7 @@ void dcn20_set_mcif_arb_params( wb_arb_params->cli_watermark[k] =get_wm_writeback_urgent (&context->bw_ctx.dml, pipes, pipe_cnt) *1000 ; wb_arb_params->pstate_watermark[k] =get_wm_writeback_dram_clock_change (&context->bw_ctx.dml, pipes, pipe_cnt) *1000 ; } - wb_arb_params->time_per_pixel =16.0 / context->res_ctx.pipe_ctx[i].stream->phy_pix_clk;/* 4 bit fraction, ms */ + wb_arb_params->time_per_pixel =16.0 *1000 / (context->res_ctx.pipe_ctx[i].stream->phy_pix_clk /1000 );/* 4 bit fraction, ms */ wb_arb_params->slice_lines =32 ; wb_arb_params->arbitration_slice =2 ; wb_arb_params->max_scaled_time = dcn20_calc_max_scaled_time(wb_arb_params->time_per_pixel,
drivers/gpu/drm/drm_debugfs.c +2 -1
@@ -91,6 +91,7 @@ static int drm_clients_info(struct seq_file *m, void *data)mutex_lock (&dev->filelist_mutex);list_for_each_entry_reverse (priv, &dev->filelist, lhead) {struct task_struct *task; +bool is_current_master =drm_is_current_master (priv);rcu_read_lock ();/* locks pid_task()->comm */ task =pid_task (priv->pid,PIDTYPE_PID );
@@ -99,7 +100,7 @@ static int drm_clients_info(struct seq_file *m, void *data) task ? task->comm :"<unknown>" ,pid_vnr (priv->pid), priv->minor->index, -drm_is_current_master (priv) ?'y' :'n' , + is_current_master ?'y' :'n' , priv->authenticated ?'y' :'n' ,from_kuid_munged (seq_user_ns (m), uid), priv->magic);
drivers/gpu/drm/etnaviv/etnaviv_buffer.c +1 -2
@@ -397,8 +397,7 @@ void etnaviv_buffer_queue(struct etnaviv_gpu *gpu, u32 exec_state,if (switch_mmu_context) {struct etnaviv_iommu_context *old_context = gpu->mmu_context; -etnaviv_iommu_context_get (mmu_context); - gpu->mmu_context = mmu_context; + gpu->mmu_context =etnaviv_iommu_context_get (mmu_context);etnaviv_iommu_context_put (old_context); }
drivers/gpu/drm/etnaviv/etnaviv_gem.c +1 -2
@@ -304,8 +304,7 @@ struct etnaviv_vram_mapping *etnaviv_gem_mapping_get(list_del (&mapping->obj_node); } -etnaviv_iommu_context_get (mmu_context); - mapping->context = mmu_context; + mapping->context =etnaviv_iommu_context_get (mmu_context); mapping->use =1 ; ret = etnaviv_iommu_map_gem(mmu_context, etnaviv_obj,
drivers/gpu/drm/etnaviv/etnaviv_gem_submit.c +1 -2
@@ -534,8 +534,7 @@ int etnaviv_ioctl_gem_submit(struct drm_device *dev, void *data, goto err_submit_objects; submit->ctx = file->driver_priv; -etnaviv_iommu_context_get (submit->ctx->mmu); - submit->mmu_context = submit->ctx->mmu; + submit->mmu_context =etnaviv_iommu_context_get (submit->ctx->mmu); submit->exec_state = args->exec_state; submit->flags = args->flags;
drivers/gpu/drm/etnaviv/etnaviv_gpu.c +25 -18
100 lines not on this page · raw message
drivers/gpu/drm/etnaviv/etnaviv_gpu.h +1 -0
@@ -101,6 +101,7 @@ struct etnaviv_gpu {struct workqueue_struct *wq;struct drm_gpu_scheduler sched;bool initialized; +bool fe_running;/* 'ring'-buffer: */ struct etnaviv_cmdbuf buffer;
drivers/gpu/drm/etnaviv/etnaviv_iommu.c +4 -0
@@ -92,6 +92,10 @@ static void etnaviv_iommuv1_restore(struct etnaviv_gpu *gpu,struct etnaviv_iommuv1_context *v1_context =to_v1_context (context);u32 pgtable; +if (gpu->mmu_context) +etnaviv_iommu_context_put (gpu->mmu_context); + gpu->mmu_context =etnaviv_iommu_context_get (context); +/* set base addresses */ gpu_write (gpu,VIVS_MC_MEMORY_BASE_ADDR_RA , context->global->memory_base);gpu_write (gpu,VIVS_MC_MEMORY_BASE_ADDR_FE , context->global->memory_base);
drivers/gpu/drm/etnaviv/etnaviv_iommu_v2.c +8 -0
@@ -172,6 +172,10 @@ static void etnaviv_iommuv2_restore_nonsec(struct etnaviv_gpu *gpu,if (gpu_read (gpu, VIVS_MMUv2_CONTROL) & VIVS_MMUv2_CONTROL_ENABLE)return ; +if (gpu->mmu_context) +etnaviv_iommu_context_put (gpu->mmu_context); + gpu->mmu_context =etnaviv_iommu_context_get (context); + prefetch =etnaviv_buffer_config_mmuv2 (gpu, (u32 )v2_context->mtlb_dma, (u32 )context->global->bad_page_dma);
@@ -192,6 +196,10 @@ static void etnaviv_iommuv2_restore_sec(struct etnaviv_gpu *gpu,if (gpu_read (gpu, VIVS_MMUv2_SEC_CONTROL) & VIVS_MMUv2_SEC_CONTROL_ENABLE)return ; +if (gpu->mmu_context) +etnaviv_iommu_context_put (gpu->mmu_context); + gpu->mmu_context =etnaviv_iommu_context_get (context); +gpu_write (gpu, VIVS_MMUv2_PTA_ADDRESS_LOW,lower_32_bits (context->global->v2.pta_dma)); gpu_write(gpu, VIVS_MMUv2_PTA_ADDRESS_HIGH,
drivers/gpu/drm/etnaviv/etnaviv_mmu.c +1 -0
@@ -204,6 +204,7 @@ static int etnaviv_iommu_find_iova(struct etnaviv_iommu_context *context,*/ list_for_each_entry_safe (m, n, &list, scan_node) {etnaviv_iommu_remove_mapping (context, m); +etnaviv_iommu_context_put (m->context); m->context =NULL ;list_del_init (&m->mmu_node);list_del_init (&m->scan_node);
drivers/gpu/drm/etnaviv/etnaviv_mmu.h +3 -1
@@ -105,9 +105,11 @@ void etnaviv_iommu_dump(struct etnaviv_iommu_context *ctx, void *buf);struct etnaviv_iommu_context *etnaviv_iommu_context_init (struct etnaviv_iommu_global *global,struct etnaviv_cmdbuf_suballoc *suballoc); -static inline void etnaviv_iommu_context_get (struct etnaviv_iommu_context *ctx) +static inline struct etnaviv_iommu_context * +etnaviv_iommu_context_get (struct etnaviv_iommu_context *ctx) {kref_get (&ctx->refcount); +return ctx; }void etnaviv_iommu_context_put (struct etnaviv_iommu_context *ctx); void etnaviv_iommu_restore(struct etnaviv_gpu *gpu,
drivers/gpu/drm/exynos/exynos_drm_dma.c +2 -0
@@ -140,6 +140,8 @@ int exynos_drm_register_dma(struct drm_device *drm, struct device *dev, EXYNOS_DEV_ADDR_START, EXYNOS_DEV_ADDR_SIZE); else if (IS_ENABLED(CONFIG_IOMMU_DMA)) mapping =iommu_get_domain_for_dev (priv->dma_dev); + else + mapping =ERR_PTR (-ENODEV );if (IS_ERR (mapping))return PTR_ERR (mapping);
drivers/gpu/drm/msm/disp/mdp4/mdp4_kms.c +3 -14
@@ -108,13 +108,6 @@ static void mdp4_disable_commit(struct msm_kms *kms)static void mdp4_prepare_commit (struct msm_kms *kms,struct drm_atomic_state *state) { -int i; -struct drm_crtc *crtc; -struct drm_crtc_state *crtc_state; - -/* see 119ecb7fd */ -for_each_new_crtc_in_state (state, crtc, crtc_state, i) -drm_crtc_vblank_get (crtc); }static void mdp4_flush_commit (struct msm_kms *kms,unsigned crtc_mask)
@@ -133,12 +126,6 @@ static void mdp4_wait_flush(struct msm_kms *kms, unsigned crtc_mask)static void mdp4_complete_commit (struct msm_kms *kms,unsigned crtc_mask) { -struct mdp4_kms *mdp4_kms =to_mdp4_kms (to_mdp_kms (kms)); -struct drm_crtc *crtc; - -/* see 119ecb7fd */ -for_each_crtc_mask (mdp4_kms->dev, crtc, crtc_mask) -drm_crtc_vblank_put (crtc); } static long mdp4_round_pixclk(struct msm_kms *kms, unsigned long rate,
@@ -418,6 +405,7 @@ struct msm_kms *mdp4_kms_init(struct drm_device *dev) {struct platform_device *pdev =to_platform_device (dev->dev);struct mdp4_platform_config *config =mdp4_get_config (pdev); +struct msm_drm_private *priv = dev->dev_private;struct mdp4_kms *mdp4_kms;struct msm_kms *kms =NULL ;struct msm_gem_address_space *aspace;
@@ -432,7 +420,8 @@ struct msm_kms *mdp4_kms_init(struct drm_device *dev)mdp_kms_init (&mdp4_kms->base, &kms_funcs); - kms = &mdp4_kms->base.base; + priv->kms = &mdp4_kms->base.base; + kms = priv->kms; mdp4_kms->dev = dev;
drivers/gpu/drm/panfrost/panfrost_mmu.c +11 -20
@@ -52,25 +52,16 @@ static int write_cmd(struct panfrost_device *pfdev, u32 as_nr, u32 cmd) }static void lock_region (struct panfrost_device *pfdev,u32 as_nr, -u64 iova,size_t size) +u64 iova,u64 size) {u8 region_width;u64 region = iova &PAGE_MASK ; -/* -* fls returns: -* 1 .. 32 -* -* 10 + fls(num_pages) -* results in the range (11 .. 42) -*/ - - size =round_up (size,PAGE_SIZE ); - region_width =10 +fls (size >>PAGE_SHIFT ); -if ((size >>PAGE_SHIFT ) != (1ul << (region_width -11 ))) { -/* not pow2, so must go up to the next pow2 */ - region_width +=1 ; - } +/* The size is encoded as ceil(log2) minus(1), which may be calculated +* with fls. The size must be clamped to hardware bounds. +*/ + size =max_t (u64, size,AS_LOCK_REGION_MIN_SIZE ); + region_width =fls64 (size -1 ) -1 ; region |= region_width;/* Lock the region that needs to be updated */
@@ -81,7 +72,7 @@ static void lock_region(struct panfrost_device *pfdev, u32 as_nr,static int mmu_hw_do_operation_locked (struct panfrost_device *pfdev,int as_nr, -u64 iova,size_t size,u32 op) +u64 iova,u64 size,u32 op) {if (as_nr <0 )return 0 ;
@@ -98,7 +89,7 @@ static int mmu_hw_do_operation_locked(struct panfrost_device *pfdev, int as_nr,static int mmu_hw_do_operation (struct panfrost_device *pfdev,struct panfrost_mmu *mmu, -u64 iova,size_t size,u32 op) +u64 iova,u64 size,u32 op) {int ret;
@@ -115,7 +106,7 @@ static void panfrost_mmu_enable(struct panfrost_device *pfdev, struct panfrost_mu64 transtab = cfg->arm_mali_lpae_cfg.transtab;u64 memattr = cfg->arm_mali_lpae_cfg.memattr; -mmu_hw_do_operation_locked (pfdev, as_nr,0 , ~0UL ,AS_COMMAND_FLUSH_MEM ); +mmu_hw_do_operation_locked (pfdev, as_nr,0 , ~0ULL ,AS_COMMAND_FLUSH_MEM );mmu_write (pfdev,AS_TRANSTAB_LO (as_nr), transtab &0xffffffffUL );mmu_write (pfdev,AS_TRANSTAB_HI (as_nr), transtab >>32 );
@@ -131,7 +122,7 @@ static void panfrost_mmu_enable(struct panfrost_device *pfdev, struct panfrost_mstatic void panfrost_mmu_disable (struct panfrost_device *pfdev,u32 as_nr) { -mmu_hw_do_operation_locked (pfdev, as_nr,0 , ~0UL ,AS_COMMAND_FLUSH_MEM ); +mmu_hw_do_operation_locked (pfdev, as_nr,0 , ~0ULL ,AS_COMMAND_FLUSH_MEM );mmu_write (pfdev,AS_TRANSTAB_LO (as_nr),0 );mmu_write (pfdev,AS_TRANSTAB_HI (as_nr),0 );
@@ -231,7 +222,7 @@ static size_t get_pgsize(u64 addr, size_t size)static void panfrost_mmu_flush_range (struct panfrost_device *pfdev,struct panfrost_mmu *mmu, -u64 iova,size_t size) +u64 iova,u64 size) {if (mmu->as <0 )return ;
drivers/gpu/drm/panfrost/panfrost_regs.h +2 -0
@@ -318,6 +318,8 @@#define AS_FAULTSTATUS_ACCESS_TYPE_READ (0x2 << 8)#define AS_FAULTSTATUS_ACCESS_TYPE_WRITE (0x3 << 8) +#define AS_LOCK_REGION_MIN_SIZE (1ULL << 15) +#define gpu_write (dev, reg, data) writel(data, dev->iomem + reg)#define gpu_read (dev, reg) readl(dev->iomem + reg)
drivers/hid/hid-input.c +0 -2
@@ -415,8 +415,6 @@ static int hidinput_get_battery_property(struct power_supply *psy,if (dev->battery_status ==HID_BATTERY_UNKNOWN ) val->intval =POWER_SUPPLY_STATUS_UNKNOWN ; -else if (dev->battery_capacity ==100 ) - val->intval =POWER_SUPPLY_STATUS_FULL ;else val->intval =POWER_SUPPLY_STATUS_DISCHARGING ;break ;
drivers/hid/i2c-hid/i2c-hid-core.c +2 -3
@@ -178,8 +178,6 @@ static const struct i2c_hid_quirks { I2C_HID_QUIRK_NO_IRQ_AFTER_RESET }, {I2C_VENDOR_ID_RAYDIUM ,I2C_PRODUCT_ID_RAYDIUM_3118 , I2C_HID_QUIRK_NO_IRQ_AFTER_RESET }, - { USB_VENDOR_ID_ELAN, HID_ANY_ID, - I2C_HID_QUIRK_BOGUS_IRQ }, { USB_VENDOR_ID_ALPS_JP, HID_ANY_ID, I2C_HID_QUIRK_RESET_ON_RESUME }, { I2C_VENDOR_ID_SYNAPTICS, I2C_PRODUCT_ID_SYNAPTICS_SYNA2393,
@@ -190,7 +188,8 @@ static const struct i2c_hid_quirks {* Sending the wakeup after reset actually break ELAN touchscreen controller */ {USB_VENDOR_ID_ELAN ,HID_ANY_ID , - I2C_HID_QUIRK_NO_WAKEUP_AFTER_RESET }, +I2C_HID_QUIRK_NO_WAKEUP_AFTER_RESET | + I2C_HID_QUIRK_BOGUS_IRQ }, { 0, 0 } };
drivers/iio/dac/ad5624r_spi.c +17 -1
@@ -229,7 +229,7 @@ static int ad5624r_probe(struct spi_device *spi)if (!indio_dev)return -ENOMEM ; st =iio_priv (indio_dev); - st->reg =devm_regulator_get (&spi->dev,"vcc" ); + st->reg =devm_regulator_get_optional (&spi->dev,"vref" );if (!IS_ERR (st->reg)) { ret =regulator_enable (st->reg);if (ret)
@@ -240,6 +240,22 @@ static int ad5624r_probe(struct spi_device *spi) goto error_disable_reg; voltage_uv = ret; + }else { +if (PTR_ERR (st->reg) != -ENODEV ) +return PTR_ERR (st->reg); +/* Backwards compatibility. This naming is not correct */ + st->reg =devm_regulator_get_optional (&spi->dev,"vcc" ); +if (!IS_ERR (st->reg)) { + ret =regulator_enable (st->reg); +if (ret) +return ret; + + ret =regulator_get_voltage (st->reg); +if (ret <0 ) + goto error_disable_reg; + + voltage_uv = ret; + } }spi_set_drvdata (spi, indio_dev);
drivers/infiniband/core/iwcm.c +12 -7
@@ -1187,29 +1187,34 @@ static int __init iw_cm_init(void) ret =iwpm_init (RDMA_NL_IWCM );if (ret) -pr_err ("iw_cm: couldn't init iwpm\n" ); -else -rdma_nl_register (RDMA_NL_IWCM , iwcm_nl_cb_table); +return ret; + iwcm_wq =alloc_ordered_workqueue ("iw_cm_wq" ,0 );if (!iwcm_wq) -return -ENOMEM ; + goto err_alloc; iwcm_ctl_table_hdr =register_net_sysctl (&init_net,"net/iw_cm" , iwcm_ctl_table);if (!iwcm_ctl_table_hdr) {pr_err ("iw_cm: couldn't register sysctl paths\n" ); -destroy_workqueue (iwcm_wq); -return -ENOMEM ; + goto err_sysctl; } +rdma_nl_register (RDMA_NL_IWCM , iwcm_nl_cb_table);return 0 ; + +err_sysctl: +destroy_workqueue (iwcm_wq); +err_alloc: +iwpm_exit (RDMA_NL_IWCM ); +return -ENOMEM ; } static void __exit iw_cm_cleanup(void) { +rdma_nl_unregister (RDMA_NL_IWCM );unregister_net_sysctl_table (iwcm_ctl_table_hdr);destroy_workqueue (iwcm_wq); -rdma_nl_unregister (RDMA_NL_IWCM );iwpm_exit (RDMA_NL_IWCM ); }
drivers/infiniband/hw/efa/efa_verbs.c +0 -1
@@ -745,7 +745,6 @@ struct ib_qp *efa_create_qp(struct ib_pd *ibpd, rq_entry_inserted = true; qp->qp_handle = create_qp_resp.qp_handle; qp->ibqp.qp_num = create_qp_resp.qp_num; - qp->ibqp.qp_type = init_attr->qp_type; qp->max_send_wr = init_attr->cap.max_send_wr; qp->max_recv_wr = init_attr->cap.max_recv_wr; qp->max_send_sge = init_attr->cap.max_send_sge;
drivers/infiniband/hw/hfi1/init.c +1 -6
@@ -664,12 +664,7 @@ void hfi1_init_pportdata(struct pci_dev *pdev, struct hfi1_pportdata *ppd, ppd->pkeys[default_pkey_idx] =DEFAULT_P_KEY ; ppd->part_enforce |=HFI1_PART_ENFORCE_IN ; - -if (loopback) { -dd_dev_err (dd,"Faking data partition 0x8001 in idx %u\n" , - !default_pkey_idx); - ppd->pkeys[!default_pkey_idx] =0x8001 ; - } + ppd->pkeys[0 ] =0x8001 ;INIT_WORK (&ppd->link_vc_work, handle_verify_cap);INIT_WORK (&ppd->link_up_work, handle_link_up);
drivers/md/dm-crypt.c +6 -1
@@ -2092,7 +2092,12 @@ static void *crypt_page_alloc(gfp_t gfp_mask, void *pool_data)struct crypt_config *cc = pool_data;struct page *page; -if (unlikely (percpu_counter_compare (&cc->n_allocated_pages, dm_crypt_pages_per_client) >=0 ) && +/* +* Note, percpu_counter_read_positive() may over (and under) estimate +* the current usage by at most (batch - 1) * num_online_cpus() pages, +* but avoids potential spinlock contention of an exact result. +*/ +if (unlikely (percpu_counter_read_positive (&cc->n_allocated_pages) >= dm_crypt_pages_per_client) &&likely (gfp_mask & __GFP_NORETRY))return NULL ;
drivers/media/dvb-frontends/dib8000.c +41 -17
97 lines not on this page · raw message
drivers/media/i2c/imx258.c +2 -2
@@ -22,7 +22,7 @@#define IMX258_CHIP_ID 0x0258/* V_TIMING internal */ -#define IMX258_VTS_30FPS 0x0c98 +#define IMX258_VTS_30FPS 0x0c50#define IMX258_VTS_30FPS_2K 0x0638#define IMX258_VTS_30FPS_VGA 0x034c#define IMX258_VTS_MAX 0xffff
@@ -46,7 +46,7 @@/* Analog gain control */ #define IMX258_REG_ANALOG_GAIN 0x0204#define IMX258_ANA_GAIN_MIN 0 -#define IMX258_ANA_GAIN_MAX 0x1fff +#define IMX258_ANA_GAIN_MAX 480#define IMX258_ANA_GAIN_STEP 1#define IMX258_ANA_GAIN_DEFAULT 0x0
drivers/media/i2c/tda1997x.c +3 -2
@@ -1695,14 +1695,15 @@ static int tda1997x_query_dv_timings(struct v4l2_subdev *sd, struct v4l2_dv_timings *timings) {struct tda1997x_state *state =to_state (sd); +int ret;v4l_dbg (1 , debug, state->client,"%s\n" , __func__);memset (timings,0 ,sizeof (struct v4l2_dv_timings ));mutex_lock (&state->lock); -tda1997x_detect_std (state, timings); + ret =tda1997x_detect_std (state, timings);mutex_unlock (&state->lock); -return 0 ; +return ret; }static const struct v4l2_subdev_video_ops tda1997x_video_ops = {
drivers/media/platform/tegra-cec/tegra_cec.c +6 -4
@@ -366,7 +366,11 @@ static int tegra_cec_probe(struct platform_device *pdev)return -ENOENT ; } -clk_prepare_enable (cec->clk); + ret =clk_prepare_enable (cec->clk); +if (ret) { +dev_err (&pdev->dev,"Unable to prepare clock for CEC\n" ); +return ret; + }/* set context info. */ cec->dev = &pdev->dev;
@@ -446,9 +450,7 @@ static int tegra_cec_resume(struct platform_device *pdev)dev_notice (&pdev->dev,"Resuming\n" ); -clk_prepare_enable (cec->clk); - - return 0; + return clk_prepare_enable(cec->clk); }#endif
drivers/media/rc/rc-loopback.c +1 -1
@@ -42,7 +42,7 @@ static int loop_set_tx_mask(struct rc_dev *dev, u32 mask)if ((mask & (RXMASK_REGULAR |RXMASK_LEARNING )) != mask) {dprintk ("invalid tx mask: %u\n" , mask); -return -EINVAL ; +return 2 ; }dprintk ("setting tx mask: %u\n" , mask);
drivers/media/usb/uvc/uvc_v4l2.c +23 -11
@@ -894,8 +894,8 @@ static int uvc_ioctl_g_input(struct file *file, void *fh, unsigned int *input) {struct uvc_fh *handle = fh;struct uvc_video_chain *chain = handle->chain; +u8 *buf;int ret; -u8 i;if (chain->selector ==NULL || (chain->dev->quirks &UVC_QUIRK_IGNORE_SELECTOR_UNIT )) {
@@ -903,22 +903,27 @@ static int uvc_ioctl_g_input(struct file *file, void *fh, unsigned int *input)return 0 ; } + buf =kmalloc (1 ,GFP_KERNEL ); +if (!buf) +return -ENOMEM ; + ret =uvc_query_ctrl (chain->dev,UVC_GET_CUR , chain->selector->id, chain->dev->intfnum,UVC_SU_INPUT_SELECT_CONTROL , - &i,1 ); -if (ret <0 ) -return ret; + buf,1 ); +if (!ret) + *input = *buf -1 ; - *input = i -1 ; -return 0 ; +kfree (buf); + +return ret; }static int uvc_ioctl_s_input (struct file *file,void *fh,unsigned int input) {struct uvc_fh *handle = fh;struct uvc_video_chain *chain = handle->chain; +u8 *buf;int ret; -u32 i; ret =uvc_acquire_privileges (handle);if (ret <0 )
@@ -934,10 +939,17 @@ static int uvc_ioctl_s_input(struct file *file, void *fh, unsigned int input)if (input >= chain->selector->bNrInPins)return -EINVAL ; - i = input +1 ; -return uvc_query_ctrl (chain->dev,UVC_SET_CUR , chain->selector->id, - chain->dev->intfnum,UVC_SU_INPUT_SELECT_CONTROL , - &i,1 ); + buf =kmalloc (1 ,GFP_KERNEL ); +if (!buf) +return -ENOMEM ; + + *buf = input +1 ; + ret =uvc_query_ctrl (chain->dev,UVC_SET_CUR , chain->selector->id, + chain->dev->intfnum,UVC_SU_INPUT_SELECT_CONTROL , + buf,1 ); +kfree (buf); + +return ret; } static int uvc_ioctl_queryctrl(struct file *file, void *fh,
drivers/media/v4l2-core/v4l2-dv-timings.c +2 -2
@@ -196,7 +196,7 @@ bool v4l2_find_dv_timings_cap(struct v4l2_dv_timings *t,if (!v4l2_valid_dv_timings (t, cap, fnc, fnc_handle))return false; - for (i = 0; i < v4l2_dv_timings_presets[i].bt.width; i++) { + for (i = 0; v4l2_dv_timings_presets[i].bt.width; i++) { if (v4l2_valid_dv_timings(v4l2_dv_timings_presets + i, cap, fnc, fnc_handle) && v4l2_match_dv_timings(t, v4l2_dv_timings_presets + i,
@@ -218,7 +218,7 @@ bool v4l2_find_dv_timings_cea861_vic(struct v4l2_dv_timings *t, u8 vic) {unsigned int i; -for (i =0 ; i < v4l2_dv_timings_presets[i].bt.width; i++) { +for (i =0 ; v4l2_dv_timings_presets[i].bt.width; i++) {const struct v4l2_bt_timings *bt = &v4l2_dv_timings_presets[i].bt;
drivers/mfd/ab8500-core.c +1 -1
@@ -493,7 +493,7 @@ static int ab8500_handle_hierarchical_line(struct ab8500 *ab8500,if (line ==AB8540_INT_GPIO43F || line ==AB8540_INT_GPIO44F ) line +=1 ; -handle_nested_irq (irq_create_mapping (ab8500->domain, line)); +handle_nested_irq (irq_find_mapping (ab8500->domain, line)); }return 0 ;
drivers/mfd/axp20x.c +2 -1
@@ -125,12 +125,13 @@ static const struct regmap_range axp288_writeable_ranges[] = {static const struct regmap_range axp288_volatile_ranges[] = {regmap_reg_range (AXP20X_PWR_INPUT_STATUS ,AXP288_POWER_REASON ), +regmap_reg_range (AXP22X_PWR_OUT_CTRL1 ,AXP22X_ALDO3_V_OUT ),regmap_reg_range (AXP288_BC_GLOBAL ,AXP288_BC_GLOBAL ),regmap_reg_range (AXP288_BC_DET_STAT ,AXP20X_VBUS_IPSOUT_MGMT ),regmap_reg_range (AXP20X_CHRG_BAK_CTRL ,AXP20X_CHRG_BAK_CTRL ),regmap_reg_range (AXP20X_IRQ1_EN ,AXP20X_IPSOUT_V_HIGH_L ),regmap_reg_range (AXP20X_TIMER_CTRL ,AXP20X_TIMER_CTRL ), -regmap_reg_range (AXP22X_GPIO_STATE ,AXP22X_GPIO_STATE ), +regmap_reg_range (AXP20X_GPIO1_CTRL ,AXP22X_GPIO_STATE ),regmap_reg_range (AXP288_RT_BATT_V_H ,AXP288_RT_BATT_V_L ),regmap_reg_range (AXP20X_FG_RES ,AXP288_FG_CC_CAP_REG ), };
drivers/mfd/db8500-prcmu.c +6 -8
@@ -1695,22 +1695,20 @@ static long round_clock_rate(u8 clock, unsigned long rate) }static const unsigned long db8500_armss_freqs[] = { -200000000 , -400000000 , -800000000 , +199680000 , +399360000 , +798720000 ,998400000 };/* The DB8520 has slightly higher ARMSS max frequency */ static const unsigned long db8520_armss_freqs[] = { -200000000 , -400000000 , -800000000 , +199680000 , +399360000 , +798720000 ,1152000000 }; - -static long round_armss_rate (unsigned long rate) {unsigned long freq =0 ;
drivers/mfd/stmpe.c +2 -2
@@ -1091,7 +1091,7 @@ static irqreturn_t stmpe_irq(int irq, void *data)if (variant->id_val ==STMPE801_ID || variant->id_val ==STMPE1600_ID ) { -int base =irq_create_mapping (stmpe->domain,0 ); +int base =irq_find_mapping (stmpe->domain,0 );handle_nested_irq (base);return IRQ_HANDLED ;
@@ -1119,7 +1119,7 @@ static irqreturn_t stmpe_irq(int irq, void *data)while (status) {int bit =__ffs (status);int line = bank *8 + bit; -int nestedirq =irq_create_mapping (stmpe->domain, line); +int nestedirq =irq_find_mapping (stmpe->domain, line);handle_nested_irq (nestedirq); status &= ~(1 << bit);
drivers/mfd/tc3589x.c +1 -1
@@ -187,7 +187,7 @@ static irqreturn_t tc3589x_irq(int irq, void *data)while (status) {int bit =__ffs (status); -int virq =irq_create_mapping (tc3589x->domain, bit); +int virq =irq_find_mapping (tc3589x->domain, bit);handle_nested_irq (virq); status &= ~(1 << bit);
drivers/mfd/tqmx86.c +2 -0
@@ -210,6 +210,8 @@ static int tqmx86_probe(struct platform_device *pdev)/* Assumes the IRQ resource is first. */ tqmx_gpio_resources[0 ].start = gpio_irq; + }else { + tqmx_gpio_resources[0 ].flags =0 ; } ocores_platfom_data.clock_khz =tqmx86_board_id_to_clk_rate (board_id);
drivers/mfd/wm8994-irq.c +1 -1
@@ -154,7 +154,7 @@ static irqreturn_t wm8994_edge_irq(int irq, void *data)struct wm8994 *wm8994 = data;while (gpio_get_value_cansleep (wm8994->pdata.irq_gpio)) -handle_nested_irq (irq_create_mapping (wm8994->edge_irq,0 )); +handle_nested_irq (irq_find_mapping (wm8994->edge_irq,0 ));return IRQ_HANDLED ; }
drivers/misc/vmw_vmci/vmci_queue_pair.c +4 -2
@@ -2238,7 +2238,8 @@ int vmci_qp_broker_map(struct vmci_handle handle, result =VMCI_SUCCESS ; -if (context_id !=VMCI_HOST_CONTEXT_ID ) { +if (context_id !=VMCI_HOST_CONTEXT_ID && + !QPBROKERSTATE_HAS_MEM (entry)) {struct vmci_qp_page_store page_store; page_store.pages = guest_mem;
@@ -2345,7 +2346,8 @@ int vmci_qp_broker_unmap(struct vmci_handle handle, goto out; } -if (context_id !=VMCI_HOST_CONTEXT_ID ) { +if (context_id !=VMCI_HOST_CONTEXT_ID && +QPBROKERSTATE_HAS_MEM (entry)) {qp_acquire_queue_mutex (entry->produce_q); result =qp_save_headers (entry);if (result <VMCI_SUCCESS )
drivers/mmc/core/block.c +1 -2
@@ -591,6 +591,7 @@ static int __mmc_blk_ioctl_cmd(struct mmc_card *card, struct mmc_blk_data *md, }mmc_wait_for_req (card->host, &mrq); +memcpy (&idata->ic.response, cmd.resp,sizeof (cmd.resp));if (cmd.error) { dev_err(mmc_dev(card->host), "%s: cmd error %d\n",
@@ -640,8 +641,6 @@ static int __mmc_blk_ioctl_cmd(struct mmc_card *card, struct mmc_blk_data *md,if (idata->ic.postsleep_min_us)usleep_range (idata->ic.postsleep_min_us, idata->ic.postsleep_max_us); -memcpy (&(idata->ic.response), cmd.resp,sizeof (cmd.resp)); -if (idata->rpmb || (cmd.flags &MMC_RSP_R1B ) ==MMC_RSP_R1B ) {/* * Ensure RPMB/R1B command has completed by polling CMD13
drivers/mmc/host/rtsx_pci_sdmmc.c +23 -13
@@ -539,9 +539,22 @@ static int sd_write_long_data(struct realtek_pci_sdmmc *host,return 0 ; } +static inline void sd_enable_initial_mode (struct realtek_pci_sdmmc *host) +{ +rtsx_pci_write_register (host->pcr,SD_CFG1 , +SD_CLK_DIVIDE_MASK ,SD_CLK_DIVIDE_128 ); +} + +static inline void sd_disable_initial_mode (struct realtek_pci_sdmmc *host) +{ +rtsx_pci_write_register (host->pcr,SD_CFG1 , +SD_CLK_DIVIDE_MASK ,SD_CLK_DIVIDE_0 ); +} +static int sd_rw_multi (struct realtek_pci_sdmmc *host,struct mmc_request *mrq) {struct mmc_data *data = mrq->data; +int err;if (host->sg_count <0 ) { data->error = host->sg_count;
@@ -550,22 +563,19 @@ static int sd_rw_multi(struct realtek_pci_sdmmc *host, struct mmc_request *mrq)return data->error; } -if (data->flags &MMC_DATA_READ ) -return sd_read_long_data (host, mrq); +if (data->flags &MMC_DATA_READ ) { +if (host->initial_mode) +sd_disable_initial_mode (host); -return sd_write_long_data (host, mrq); -} + err =sd_read_long_data (host, mrq); -static inline void sd_enable_initial_mode (struct realtek_pci_sdmmc *host) -{ -rtsx_pci_write_register (host->pcr,SD_CFG1 , -SD_CLK_DIVIDE_MASK ,SD_CLK_DIVIDE_128 ); -} +if (host->initial_mode) +sd_enable_initial_mode (host); -static inline void sd_disable_initial_mode (struct realtek_pci_sdmmc *host) -{ -rtsx_pci_write_register (host->pcr,SD_CFG1 , -SD_CLK_DIVIDE_MASK ,SD_CLK_DIVIDE_0 ); +return err; + } + +return sd_write_long_data (host, mrq); } static void sd_normal_rw(struct realtek_pci_sdmmc *host,
drivers/mmc/host/sdhci-of-arasan.c +15 -3
@@ -192,7 +192,12 @@ static void sdhci_arasan_set_clock(struct sdhci_host *host, unsigned int clock)* through low speeds without power cycling. */ sdhci_set_clock (host, host->max_clk); -phy_power_on (sdhci_arasan->phy); +if (phy_power_on (sdhci_arasan->phy)) { +pr_err ("%s: Cannot power on phy.\n" , +mmc_hostname (host->mmc)); +return ; + } + sdhci_arasan->is_phy_on = true;/*
@@ -228,7 +233,12 @@ static void sdhci_arasan_set_clock(struct sdhci_host *host, unsigned int clock)msleep (20 );if (ctrl_phy) { -phy_power_on (sdhci_arasan->phy); +if (phy_power_on (sdhci_arasan->phy)) { +pr_err ("%s: Cannot power on phy.\n" , +mmc_hostname (host->mmc)); +return ; + } + sdhci_arasan->is_phy_on = true; } }
@@ -416,7 +426,9 @@ static int sdhci_arasan_suspend(struct device *dev) ret =phy_power_off (sdhci_arasan->phy);if (ret) {dev_err (dev,"Cannot power off phy.\n" ); -sdhci_resume_host (host); +if (sdhci_resume_host (host)) +dev_err (dev,"Cannot resume host.\n" ); +return ret; } sdhci_arasan->is_phy_on = false;
drivers/mtd/nand/raw/cafe_nand.c +3 -1
@@ -757,7 +757,7 @@ static int cafe_nand_probe(struct pci_dev *pdev, "CAFE NAND", mtd);if (err) {dev_warn (&pdev->dev,"Could not register IRQ %d\n" , pdev->irq); - goto out_ior; + goto out_free_rs; }/* Disable master reset, enable NAND clock */
@@ -801,6 +801,8 @@ static int cafe_nand_probe(struct pci_dev *pdev,/* Disable NAND IRQ in global IRQ mask register */ cafe_writel (cafe, ~1 &cafe_readl (cafe,GLOBAL_IRQ_MASK ),GLOBAL_IRQ_MASK );free_irq (pdev->irq, mtd); + out_free_rs: +free_rs (cafe->rs); out_ior:pci_iounmap (pdev, cafe->mmio); out_free_mtd:
drivers/net/bonding/bond_main.c +2 -1
@@ -1926,7 +1926,6 @@ static int __bond_release_one(struct net_device *bond_dev,/* recompute stats just before removing the slave */ bond_get_stats (bond->dev, &bond->bond_stats); -bond_upper_dev_unlink (bond, slave);/* unregister rx_handler early so bond_handle_frame wouldn't be called * for this slave anymore. */
@@ -1935,6 +1934,8 @@ static int __bond_release_one(struct net_device *bond_dev,if (BOND_MODE (bond) ==BOND_MODE_8023AD )bond_3ad_unbind_slave (slave); +bond_upper_dev_unlink (bond, slave); +if (bond_mode_can_use_xmit_hash (bond))bond_update_slave_arr (bond, slave);
drivers/net/dsa/b53/b53_common.c +1 -2
@@ -2353,9 +2353,8 @@ static int b53_switch_init(struct b53_device *dev) dev->cpu_port =5 ; } -/* cpu port is always last */ - dev->num_ports = dev->cpu_port +1 ; dev->enabled_ports |=BIT (dev->cpu_port); + dev->num_ports =fls (dev->enabled_ports);/* Include non standard CPU port built-in PHYs to be probed */ if (is539x (dev) ||is531x5 (dev)) {
drivers/net/dsa/lantiq_gswip.c +2 -1
@@ -837,7 +837,8 @@ static int gswip_setup(struct dsa_switch *ds)gswip_switch_mask (priv,0 ,GSWIP_MAC_CTRL_2_MLEN ,GSWIP_MAC_CTRL_2p (cpu_port)); -gswip_switch_w (priv,VLAN_ETH_FRAME_LEN +8 ,GSWIP_MAC_FLEN ); +gswip_switch_w (priv,VLAN_ETH_FRAME_LEN +8 +ETH_FCS_LEN , +GSWIP_MAC_FLEN );gswip_switch_mask (priv,0 ,GSWIP_BM_QUEUE_GCTRL_GL_MOD ,GSWIP_BM_QUEUE_GCTRL );
drivers/net/ethernet/broadcom/bnx2x/bnx2x_sriov.c +1 -1
@@ -1246,7 +1246,7 @@ int bnx2x_iov_init_one(struct bnx2x *bp, int int_mode_param,/* SR-IOV capability was enabled but there are no VFs*/ if (iov->total ==0 ) { - err = -EINVAL ; + err =0 ; goto failed; }
drivers/net/ethernet/chelsio/cxgb/cxgb2.c +1 -0
@@ -1153,6 +1153,7 @@ static int init_one(struct pci_dev *pdev, const struct pci_device_id *ent)if (!adapter->registered_device_map) {pr_err ("%s: could not register any net devices\n" ,pci_name (pdev)); + err = -EINVAL ; goto out_release_adapter_res; }
drivers/net/ethernet/hisilicon/hns3/hns3_enet.c +6 -2
@@ -56,6 +56,7 @@ MODULE_PARM_DESC(debug, " Network interface message level setting");#define HNS3_OUTER_VLAN_TAG 2#define HNS3_MIN_TX_LEN 33U +#define HNS3_MIN_TUN_PKT_LEN 65U/* hns3_pci_tbl - PCI Device ID Table *
@@ -931,8 +932,11 @@ static int hns3_set_l2l3l4(struct sk_buff *skb, u8 ol4_proto, l4.tcp->doff);break ;case IPPROTO_UDP : -if (hns3_tunnel_csum_bug (skb)) -return skb_checksum_help (skb); +if (hns3_tunnel_csum_bug (skb)) { +int ret =skb_put_padto (skb,HNS3_MIN_TUN_PKT_LEN ); + +return ret ? ret :skb_checksum_help (skb); + }hns3_set_field (*type_cs_vlan_tso,HNS3_TXD_L4CS_B ,1 ); hns3_set_field(*type_cs_vlan_tso, HNS3_TXD_L4T_S,
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c +11 -8
@@ -1328,9 +1328,10 @@ static void hclge_init_kdump_kernel_config(struct hclge_dev *hdev)static int hclge_configure (struct hclge_dev *hdev) { +const struct cpumask *cpumask = cpu_online_mask;struct hclge_cfg cfg;unsigned int i; -int ret; +int node, ret; ret =hclge_get_cfg (hdev, &cfg);if (ret) {
@@ -1390,11 +1391,12 @@ static int hclge_configure(struct hclge_dev *hdev)hclge_init_kdump_kernel_config (hdev); -/* Set the init affinity based on pci func number */ - i =cpumask_weight (cpumask_of_node (dev_to_node (&hdev->pdev->dev))); - i = i ?PCI_FUNC (hdev->pdev->devfn) % i :0 ; -cpumask_set_cpu (cpumask_local_spread (i,dev_to_node (&hdev->pdev->dev)), - &hdev->affinity_mask); +/* Set the affinity based on numa node */ + node =dev_to_node (&hdev->pdev->dev); +if (node !=NUMA_NO_NODE ) + cpumask =cpumask_of_node (node); + +cpumask_copy (&hdev->affinity_mask, cpumask);return ret; }
@@ -6683,11 +6685,12 @@ static void hclge_ae_stop(struct hnae3_handle *handle)hclge_clear_arfs_rules (handle);spin_unlock_bh (&hdev->fd_rule_lock); -/* If it is not PF reset, the firmware will disable the MAC, +/* If it is not PF reset or FLR, the firmware will disable the MAC, * so it only need to stop phy here. */ if (test_bit (HCLGE_STATE_RST_HANDLING , &hdev->state) && - hdev->reset_type !=HNAE3_FUNC_RESET ) { + hdev->reset_type !=HNAE3_FUNC_RESET && + hdev->reset_type !=HNAE3_FLR_RESET ) {hclge_mac_stop_phy (hdev);hclge_update_link_status (hdev);return ;
drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_main.c +3 -3
@@ -1956,6 +1956,8 @@ static irqreturn_t hclgevf_misc_irq_handle(int irq, void *data)hclgevf_enable_vector (&hdev->misc_vector, false); event_cause =hclgevf_check_evt_cause (hdev, &clearval); +if (event_cause !=HCLGEVF_VECTOR0_EVENT_OTHER ) +hclgevf_clear_event_cause (hdev, clearval);switch (event_cause) {case HCLGEVF_VECTOR0_EVENT_RST :
@@ -1968,10 +1970,8 @@ static irqreturn_t hclgevf_misc_irq_handle(int irq, void *data)break ; } -if (event_cause !=HCLGEVF_VECTOR0_EVENT_OTHER ) { -hclgevf_clear_event_cause (hdev, clearval); +if (event_cause !=HCLGEVF_VECTOR0_EVENT_OTHER )hclgevf_enable_vector (&hdev->misc_vector, true); - }return IRQ_HANDLED ; }
drivers/net/ethernet/ibm/ibmvnic.c +8 -0
@@ -4277,6 +4277,14 @@ static int handle_login_rsp(union ibmvnic_crq *login_rsp_crq,return 0 ; } +if (adapter->failover_pending) { + adapter->init_done_rc = -EAGAIN ; +netdev_dbg (netdev,"Failover pending, ignoring login response\n" ); +complete (&adapter->init_done); +/* login response buffer will be released on reset */ +return 0 ; + } + netdev->mtu = adapter->req_mtu -ETH_HLEN ;netdev_dbg (adapter->netdev,"Login Response Buffer:\n" );
drivers/net/ethernet/intel/iavf/iavf_main.c +50 -8
135 lines not on this page · raw message
drivers/net/ethernet/intel/igc/igc_main.c +8 -1
@@ -2693,6 +2693,7 @@ static irqreturn_t igc_msix_ring(int irq, void *data)*/ static int igc_request_msix (struct igc_adapter *adapter) { +unsigned int num_q_vectors = adapter->num_q_vectors;int i =0 , err =0 , vector =0 , free_vector =0 ;struct net_device *netdev = adapter->netdev;
@@ -2701,7 +2702,13 @@ static int igc_request_msix(struct igc_adapter *adapter)if (err) goto err_out; -for (i =0 ; i < adapter->num_q_vectors; i++) { +if (num_q_vectors >MAX_Q_VECTORS ) { + num_q_vectors =MAX_Q_VECTORS ; +dev_warn (&adapter->pdev->dev, +"The number of queue vectors (%d) is higher than max allowed (%d)\n" , + adapter->num_q_vectors,MAX_Q_VECTORS ); + } +for (i =0 ; i < num_q_vectors; i++) {struct igc_q_vector *q_vector = adapter->q_vector[i]; vector++;
drivers/net/ethernet/mellanox/mlx5/core/cmd.c +4 -4
@@ -865,7 +865,7 @@ static void cb_timeout_handler(struct work_struct *work) ent->ret = -ETIMEDOUT ;mlx5_core_warn (dev,"cmd[%d]: %s(0x%x) Async, timeout. Will cause a leak of a command resource\n" , ent->idx,mlx5_command_str (msg_to_opcode (ent->in)),msg_to_opcode (ent->in)); -mlx5_cmd_comp_handler (dev,1UL << ent->idx, true); +mlx5_cmd_comp_handler (dev,1ULL << ent->idx, true); out:cmd_ent_put (ent);/* for the cmd_ent_get() took on schedule delayed work */
@@ -977,7 +977,7 @@ static void cmd_work_handler(struct work_struct *work)MLX5_SET (mbox_out, ent->out, status, status);MLX5_SET (mbox_out, ent->out, syndrome, drv_synd); -mlx5_cmd_comp_handler (dev,1UL << ent->idx, true); +mlx5_cmd_comp_handler (dev,1ULL << ent->idx, true);return ; }
@@ -991,7 +991,7 @@ static void cmd_work_handler(struct work_struct *work)poll_timeout (ent);/* make sure we read the descriptor after ownership is SW */ rmb (); -mlx5_cmd_comp_handler (dev,1UL << ent->idx, (ent->ret == -ETIMEDOUT )); +mlx5_cmd_comp_handler (dev,1ULL << ent->idx, (ent->ret == -ETIMEDOUT )); } }
@@ -1051,7 +1051,7 @@ static void wait_func_handle_exec_timeout(struct mlx5_core_dev *dev, mlx5_command_str(msg_to_opcode(ent->in)), msg_to_opcode(ent->in)); ent->ret = -ETIMEDOUT ; -mlx5_cmd_comp_handler (dev,1UL << ent->idx, true); +mlx5_cmd_comp_handler (dev,1ULL << ent->idx, true); }static int wait_func (struct mlx5_core_dev *dev,struct mlx5_cmd_work_ent *ent)
drivers/net/ethernet/mellanox/mlx5/core/diag/fw_tracer.c +2 -1
@@ -1005,7 +1005,7 @@ int mlx5_fw_tracer_init(struct mlx5_fw_tracer *tracer) err =mlx5_core_alloc_pd (dev, &tracer->buff.pdn);if (err) {mlx5_core_warn (dev,"FWTracer: Failed to allocate PD %d\n" , err); -return err; + goto err_cancel_work; } err =mlx5_fw_tracer_create_mkey (tracer);
@@ -1029,6 +1029,7 @@ int mlx5_fw_tracer_init(struct mlx5_fw_tracer *tracer)mlx5_core_destroy_mkey (dev, &tracer->buff.mkey); err_dealloc_pd:mlx5_core_dealloc_pd (dev, tracer->buff.pdn); +err_cancel_work:cancel_work_sync (&tracer->read_fw_strings_work);return err; }
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c +2 -3
@@ -1606,9 +1606,9 @@ static int build_match_list(struct match_list_head *match_head, curr_match =kmalloc (sizeof (*curr_match),GFP_ATOMIC );if (!curr_match) { +rcu_read_unlock ();free_match_list (match_head, ft_locked); - err = -ENOMEM ; - goto out; +return -ENOMEM ; }if (!tree_get_node (&g->node)) {kfree (curr_match);
@@ -1617,7 +1617,6 @@ static int build_match_list(struct match_list_head *match_head, curr_match->g = g;list_add_tail (&curr_match->list, &match_head->list); } -out:rcu_read_unlock ();return err; }
drivers/net/ethernet/mellanox/mlx5/core/steering/dr_send.c +1 -0
@@ -603,6 +603,7 @@ static int dr_cmd_modify_qp_rtr2rts(struct mlx5_core_dev *mdev,MLX5_SET (qpc, qpc, log_ack_req_freq,0 );MLX5_SET (qpc, qpc, retry_count, attr->retry_cnt);MLX5_SET (qpc, qpc, rnr_retry, attr->rnr_retry); +MLX5_SET (qpc, qpc, primary_address_path.ack_timeout,0x8 );/* ~1ms */ return mlx5_core_qp_modify (mdev,MLX5_CMD_OP_RTR2RTS_QP ,0 , qpc, &dr_qp->mqp);
drivers/net/ethernet/qlogic/qed/qed_mcp.c +5 -1
@@ -3173,6 +3173,7 @@ qed_mcp_get_nvm_image_att(struct qed_hwfn *p_hwfn, struct qed_nvm_image_att *p_image_att) {enum nvm_image_type type; +int rc;u32 i;/* Translate image_id into MFW definitions */
@@ -3198,7 +3199,10 @@ qed_mcp_get_nvm_image_att(struct qed_hwfn *p_hwfn,return -EINVAL ; } -qed_mcp_nvm_info_populate (p_hwfn); + rc =qed_mcp_nvm_info_populate (p_hwfn); +if (rc) +return rc; +for (i =0 ; i < p_hwfn->nvm_info.num_images; i++)if (type == p_hwfn->nvm_info.image_att[i].image_type)break ;
drivers/net/ethernet/qlogic/qlcnic/qlcnic_init.c +0 -1
@@ -440,7 +440,6 @@ int qlcnic_pinit_from_rom(struct qlcnic_adapter *adapter)QLCWR32 (adapter,QLCNIC_CRB_PEG_NET_4 +0x3c ,1 );msleep (20 ); -qlcnic_rom_unlock (adapter);/* big hammer don't reset CAM block on reset */ QLCWR32 (adapter,QLCNIC_ROMUSB_GLB_SW_RESET ,0xfeffffff );
drivers/net/ethernet/rdc/r6040.c +8 -1
@@ -119,6 +119,8 @@#define PHY_ST 0x8A/* PHY status register */ #define MAC_SM 0xAC/* MAC status machine */ #define MAC_SM_RST 0x0002/* MAC status machine reset */ +#define MD_CSC 0xb6/* MDC speed control register */ +#define MD_CSC_DEFAULT 0x0030#define MAC_ID 0xBE/* Identifier register */ #define TX_DCNT 0x80/* TX descriptor count */
@@ -354,8 +356,9 @@ static void r6040_reset_mac(struct r6040_private *lp) {void __iomem *ioaddr = lp->base;int limit =MAC_DEF_TIMEOUT ; -u16 cmd; +u16 cmd, md_csc; + md_csc =ioread16 (ioaddr +MD_CSC );iowrite16 (MAC_RST , ioaddr +MCR1 );while (limit--) { cmd =ioread16 (ioaddr +MCR1 );
@@ -367,6 +370,10 @@ static void r6040_reset_mac(struct r6040_private *lp)iowrite16 (MAC_SM_RST , ioaddr +MAC_SM );iowrite16 (0 , ioaddr +MAC_SM );mdelay (5 ); + +/* Restore MDIO clock frequency */ +if (md_csc !=MD_CSC_DEFAULT ) +iowrite16 (md_csc, ioaddr +MD_CSC ); }static void r6040_init_mac_regs (struct net_device *dev)
drivers/net/ethernet/renesas/sh_eth.c +1 -0
@@ -2567,6 +2567,7 @@ static int sh_eth_start_xmit(struct sk_buff *skb, struct net_device *ndev)else txdesc->status |=cpu_to_le32 (TD_TACT ); +wmb ();/* cur_tx must be incremented after TACT bit was set */ mdp->cur_tx++;if (!(sh_eth_read (ndev,EDTRR ) & mdp->cd->edtrr_trns))
drivers/net/ethernet/stmicro/stmmac/dwmac-ipq806x.c +8 -10
@@ -288,10 +288,7 @@ static int ipq806x_gmac_probe(struct platform_device *pdev) val &= ~NSS_COMMON_GMAC_CTL_PHY_IFACE_SEL ;break ;default : -dev_err (&pdev->dev,"Unsupported PHY mode: \"%s\"\n" , -phy_modes (gmac->phy_mode)); - err = -EINVAL ; - goto err_remove_config_dt; + goto err_unsupported_phy; }regmap_write (gmac->nss_common,NSS_COMMON_GMAC_CTL (gmac->id), val);
@@ -308,10 +305,7 @@ static int ipq806x_gmac_probe(struct platform_device *pdev)NSS_COMMON_CLK_SRC_CTRL_OFFSET (gmac->id);break ;default : -dev_err (&pdev->dev,"Unsupported PHY mode: \"%s\"\n" , -phy_modes (gmac->phy_mode)); - err = -EINVAL ; - goto err_remove_config_dt; + goto err_unsupported_phy; }regmap_write (gmac->nss_common,NSS_COMMON_CLK_SRC_CTRL , val);
@@ -328,8 +322,7 @@ static int ipq806x_gmac_probe(struct platform_device *pdev)NSS_COMMON_CLK_GATE_GMII_TX_EN (gmac->id);break ;default : -/* We don't get here; the switch above will have errored out */ -unreachable (); + goto err_unsupported_phy; }regmap_write (gmac->nss_common,NSS_COMMON_CLK_GATE , val);
@@ -360,6 +353,11 @@ static int ipq806x_gmac_probe(struct platform_device *pdev)return 0 ; +err_unsupported_phy: +dev_err (&pdev->dev,"Unsupported PHY mode: \"%s\"\n" , +phy_modes (gmac->phy_mode)); + err = -EINVAL ; + err_remove_config_dt:stmmac_remove_config_dt (pdev, plat_dat);
drivers/net/ethernet/wiznet/w5100.c +2 -0
@@ -1052,6 +1052,8 @@ static int w5100_mmio_probe(struct platform_device *pdev) mac_addr = data->mac_addr; mem =platform_get_resource (pdev,IORESOURCE_MEM ,0 ); +if (!mem) +return -EINVAL ;if (resource_size (mem) <W5100_BUS_DIRECT_SIZE ) ops = &w5100_mmio_indirect_ops;else
drivers/net/phy/dp83640_reg.h +1 -1
@@ -5,7 +5,7 @@#ifndef HAVE_DP83640_REGISTERS #define HAVE_DP83640_REGISTERS -#define PAGE0 0x0000 +/* #define PAGE0 0x0000 */ #define PHYCR2 0x001c/* PHY Control Register 2 */ #define PAGE4 0x0004
drivers/net/usb/cdc_mbim.c +5 -0
@@ -653,6 +653,11 @@ static const struct usb_device_id mbim_devs[] = { .driver_info = (unsigned long)&cdc_mbim_info_avoid_altsetting_toggle, }, +/* Telit LN920 */ + { USB_DEVICE_AND_INTERFACE_INFO(0x1bc7, 0x1061, USB_CLASS_COMM, USB_CDC_SUBCLASS_MBIM, USB_CDC_PROTO_NONE), + .driver_info = (unsigned long )&cdc_mbim_info_avoid_altsetting_toggle, + }, + /* default entry */ { USB_INTERFACE_INFO(USB_CLASS_COMM, USB_CDC_SUBCLASS_MBIM, USB_CDC_PROTO_NONE), .driver_info = (unsigned long)&cdc_mbim_info_zlp,
drivers/net/wireless/ath/ath9k/ar9003_eeprom.c +2 -1
@@ -3351,7 +3351,8 @@ static int ar9300_eeprom_restore_internal(struct ath_hw *ah,"Found block at %x: code=%d ref=%d length=%d major=%d minor=%d\n" , cptr, code, reference, length, major, minor);if ((!AR_SREV_9485 (ah) && length >=1024 ) || - (AR_SREV_9485 (ah) && length >EEPROM_DATA_LEN_9485 )) { + (AR_SREV_9485 (ah) && length >EEPROM_DATA_LEN_9485 ) || + (length > cptr)) {ath_dbg (common,EEPROM ,"Skipping bad header\n" ); cptr -=COMP_HDR_LEN ;continue ;
drivers/net/wireless/ath/ath9k/hw.c +7 -5
@@ -1622,7 +1622,6 @@ static void ath9k_hw_apply_gpio_override(struct ath_hw *ah)ath9k_hw_gpio_request_out (ah, i,NULL ,AR_GPIO_OUTPUT_MUX_AS_OUTPUT );ath9k_hw_set_gpio (ah, i, !!(ah->gpio_val &BIT (i))); -ath9k_hw_gpio_free (ah, i); } }
@@ -2730,14 +2729,17 @@ static void ath9k_hw_gpio_cfg_output_mux(struct ath_hw *ah, u32 gpio, u32 type)static void ath9k_hw_gpio_cfg_soc (struct ath_hw *ah,u32 gpio,bool out,const char *label) { +int err; +if (ah->caps.gpio_requested &BIT (gpio))return ; -/* may be requested by BSP, free anyway */ -gpio_free (gpio); - -if (gpio_request_one (gpio, out ?GPIOF_OUT_INIT_LOW :GPIOF_IN , label)) + err =gpio_request_one (gpio, out ?GPIOF_OUT_INIT_LOW :GPIOF_IN , label); +if (err) { +ath_err (ath9k_hw_common (ah),"request GPIO%d failed:%d\n" , + gpio, err);return ; + } ah->caps.gpio_requested |=BIT (gpio); }
drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c +3 -1
@@ -1043,8 +1043,10 @@ int iwl_mvm_mac_ctxt_beacon_changed(struct iwl_mvm *mvm,return -ENOMEM ;#ifdef CONFIG_IWLWIFI_DEBUGFS -if (mvm->beacon_inject_active) +if (mvm->beacon_inject_active) { +dev_kfree_skb (beacon);return -EBUSY ; + }#endif ret =iwl_mvm_mac_ctxt_send_beacon (mvm, vif, beacon);
drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c +6 -2
@@ -2970,16 +2970,20 @@ static void iwl_mvm_check_he_obss_narrow_bw_ru_iter(struct wiphy *wiphy, void *_data) {struct iwl_mvm_he_obss_narrow_bw_ru_data *data = _data; +const struct cfg80211_bss_ies *ies;const struct element *elem; - elem =cfg80211_find_elem (WLAN_EID_EXT_CAPABILITY , bss->ies->data, - bss->ies->len); +rcu_read_lock (); + ies =rcu_dereference (bss->ies); + elem =cfg80211_find_elem (WLAN_EID_EXT_CAPABILITY , ies->data, + ies->len);if (!elem || elem->datalen <10 || !(elem->data[10 ] &WLAN_EXT_CAPA10_OBSS_NARROW_BW_RU_TOLERANCE_SUPPORT )) { data->tolerated = false; } +rcu_read_unlock (); } static void iwl_mvm_check_he_obss_narrow_bw_ru(struct ieee80211_hw *hw,
drivers/net/wireless/intel/iwlwifi/mvm/ops.c +20 -4
@@ -687,10 +687,26 @@ iwl_op_mode_mvm_start(struct iwl_trans *trans, const struct iwl_cfg *cfg, mvm->fw_restart = iwlwifi_mod_params.fw_restart ?-1 :0 ; - mvm->aux_queue =IWL_MVM_DQA_AUX_QUEUE ; - mvm->snif_queue =IWL_MVM_DQA_INJECT_MONITOR_QUEUE ; - mvm->probe_queue =IWL_MVM_DQA_AP_PROBE_RESP_QUEUE ; - mvm->p2p_dev_queue =IWL_MVM_DQA_P2P_DEVICE_QUEUE ; +if (iwl_mvm_has_new_tx_api (mvm)) { +/* +* If we have the new TX/queue allocation API initialize them +* all to invalid numbers. We'll rewrite the ones that we need +* later, but that doesn't happen for all of them all of the +* time (e.g. P2P Device is optional), and if a dynamic queue +* ends up getting number 2 (IWL_MVM_DQA_P2P_DEVICE_QUEUE) then +* iwl_mvm_is_static_queue() erroneously returns true, and we +* might have things getting stuck. +*/ + mvm->aux_queue =IWL_MVM_INVALID_QUEUE ; + mvm->snif_queue =IWL_MVM_INVALID_QUEUE ; + mvm->probe_queue =IWL_MVM_INVALID_QUEUE ; + mvm->p2p_dev_queue =IWL_MVM_INVALID_QUEUE ; + }else { + mvm->aux_queue =IWL_MVM_DQA_AUX_QUEUE ; + mvm->snif_queue =IWL_MVM_DQA_INJECT_MONITOR_QUEUE ; + mvm->probe_queue =IWL_MVM_DQA_AP_PROBE_RESP_QUEUE ; + mvm->p2p_dev_queue =IWL_MVM_DQA_P2P_DEVICE_QUEUE ; + } mvm->sf_state =SF_UNINIT ;if (iwl_mvm_has_unified_ucode (mvm))
drivers/net/wireless/intel/iwlwifi/mvm/sta.c +18 -12
@@ -346,8 +346,9 @@ static int iwl_mvm_invalidate_sta_queue(struct iwl_mvm *mvm, int queue, }static int iwl_mvm_disable_txq (struct iwl_mvm *mvm,struct ieee80211_sta *sta, -int queue,u8 tid,u8 flags) +u16 *queueptr,u8 tid,u8 flags) { +int queue = *queueptr;struct iwl_scd_txq_cfg_cmd cmd = { .scd_queue = queue, .action =SCD_CFG_DISABLE_QUEUE ,
@@ -356,6 +357,7 @@ static int iwl_mvm_disable_txq(struct iwl_mvm *mvm, struct ieee80211_sta *sta,if (iwl_mvm_has_new_tx_api (mvm)) {iwl_trans_txq_free (mvm->trans, queue); + *queueptr =IWL_MVM_INVALID_QUEUE ;return 0 ; }
@@ -517,6 +519,7 @@ static int iwl_mvm_free_inactive_queue(struct iwl_mvm *mvm, int queue,u8 sta_id, tid;unsigned long disable_agg_tids =0 ;bool same_sta; +u16 queue_tmp = queue;int ret;lockdep_assert_held (&mvm->mutex);
@@ -539,7 +542,7 @@ static int iwl_mvm_free_inactive_queue(struct iwl_mvm *mvm, int queue,iwl_mvm_invalidate_sta_queue (mvm, queue, disable_agg_tids, false); - ret =iwl_mvm_disable_txq (mvm, old_sta, queue, tid,0 ); + ret =iwl_mvm_disable_txq (mvm, old_sta, &queue_tmp, tid,0 );if (ret) { IWL_ERR(mvm, "Failed to free inactive queue %d (ret=%d)\n",
@@ -1209,6 +1212,7 @@ static int iwl_mvm_sta_alloc_queue(struct iwl_mvm *mvm,unsigned int wdg_timeout =iwl_mvm_get_wd_timeout (mvm, mvmsta->vif, false, false);
Lines of this file are not shown. View the raw message.
drivers/pci/controller/pci-aardvark.c +64 -9
73 lines not on this page · raw message
drivers/pci/controller/pcie-xilinx-nwl.c +12 -0
Lines of this file are not shown. View the raw message.
drivers/pci/quirks.c +57 -2
59 lines not on this page · raw message
drivers/pinctrl/samsung/pinctrl-samsung.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/platform/chrome/cros_ec_proto.c +9 -0
Lines of this file are not shown. View the raw message.
drivers/power/supply/max17042_battery.c +5 -1
Lines of this file are not shown. View the raw message.
drivers/target/target_core_xcopy.c +30 -66
96 lines not on this page · raw message
drivers/usb/host/fotg210-hcd.c +19 -22
41 lines not on this page · raw message
fs/btrfs/disk-io.c +23 -22
45 lines not on this page · raw message
fs/f2fs/super.c +48 -36
84 lines not on this page · raw message
fs/userfaultfd.c +45 -48
93 lines not on this page · raw message
net/bluetooth/hci_event.c +77 -31
108 lines not on this page · raw message
net/bluetooth/sco.c +45 -29
74 lines not on this page · raw message
tools/testing/selftests/bpf/progs/xdp_tx.c +1 -1
Lines of this file are not shown. View the raw message.
tools/testing/selftests/bpf/test_maps.c +1 -1
Lines of this file are not shown. View the raw message.
tools/testing/selftests/bpf/test_xdp_veth.sh +1 -1
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.