Linux 5.9.15
Greg Kroah-Hartman
maintainerI'm announcing the release of the 5.9.15 kernel.
All users of the 5.9 kernel series must upgrade.
The updated 5.9.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-5.9.y
and can be browsed at the normal kernel.org git web browser:
https://git.kernel.org/?p=linux/kernel/git/stable/linux-stable.git;a=summary
thanks,
greg k-h
------------
Makefile | 5 arch/alpha/kernel/process.c | 2 arch/arc/kernel/stacktrace.c | 23 +- arch/arm/configs/omap2plus_defconfig | 1 arch/arm/kernel/process.c | 2 arch/arm/mach-omap1/board-osk.c | 2 arch/arm64/boot/dts/broadcom/stingray/stingray-usb.dtsi | 20 +- arch/arm64/boot/dts/nvidia/tegra186-p2771-0000.dts | 12 - arch/arm64/boot/dts/rockchip/rk3326-odroid-go2.dts | 1 arch/arm64/boot/dts/rockchip/rk3399-roc-pc.dtsi | 4 arch/arm64/boot/dts/rockchip/rk3399.dtsi | 3 arch/arm64/kernel/process.c | 2 arch/csky/kernel/process.c | 2 arch/h8300/kernel/process.c | 2 arch/hexagon/kernel/process.c | 2 arch/ia64/kernel/process.c | 2 arch/microblaze/kernel/process.c | 2 arch/mips/kernel/idle.c | 12 - arch/nios2/kernel/process.c | 2 arch/openrisc/kernel/process.c | 2 arch/parisc/kernel/process.c | 2 arch/powerpc/Makefile | 1 arch/powerpc/kernel/idle.c | 4 arch/powerpc/mm/book3s64/hash_native.c | 2 arch/riscv/kernel/process.c | 2 arch/s390/kernel/entry.S | 15 - arch/s390/kernel/idle.c | 6 arch/s390/lib/delay.c | 5 arch/sh/kernel/idle.c | 2 arch/sparc/kernel/leon_pmc.c | 4 arch/sparc/kernel/process_32.c | 2 arch/sparc/kernel/process_64.c | 4 arch/um/kernel/process.c | 2 arch/x86/events/intel/ds.c | 2 arch/x86/include/asm/mwait.h | 2 arch/x86/include/asm/pgtable_types.h | 1 arch/x86/include/asm/sync_core.h | 9 - arch/x86/kernel/apic/vector.c | 24 +- arch/x86/kernel/kprobes/opt.c | 22 ++ arch/x86/kernel/process.c | 12 - arch/x86/mm/mem_encrypt_identity.c | 4 arch/x86/mm/tlb.c | 10 - drivers/Makefile | 1 drivers/block/xen-blkback/blkback.c | 89 ++-------- drivers/block/xen-blkback/common.h | 4 drivers/block/xen-blkback/xenbus.c | 6 drivers/gpu/drm/amd/amdgpu/sdma_v5_2.c | 2 drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 9 - drivers/gpu/drm/exynos/Kconfig | 3 drivers/gpu/drm/i915/display/intel_dp.c | 2 drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c | 7 drivers/gpu/drm/i915/gt/intel_lrc.c | 7 drivers/gpu/drm/i915/gt/intel_mocs.c | 7 drivers/gpu/drm/panel/panel-sony-acx565akm.c | 2 drivers/gpu/drm/rockchip/rockchip_lvds.c | 2 drivers/idle/intel_idle.c | 37 ++-- drivers/input/misc/cm109.c | 7 drivers/input/serio/i8042-x86ia64io.h | 42 +++++ drivers/interconnect/qcom/msm8916.c | 12 - drivers/interconnect/qcom/qcs404.c | 4 drivers/iommu/arm/arm-smmu/arm-smmu-qcom.c | 4 drivers/irqchip/irq-gic-v3-its.c | 16 - drivers/media/cec/usb/pulse8/pulse8-cec.c | 52 ++++-- drivers/misc/habanalabs/gaudi/gaudi.c | 2 drivers/mmc/core/block.c | 2 drivers/mmc/host/mtk-sd.c | 33 +++- drivers/mmc/host/sdhci-of-arasan.c | 3 drivers/net/can/c_can/c_can.c | 18 +- drivers/net/can/kvaser_pciefd.c | 4 drivers/net/can/m_can/m_can.c | 2 drivers/net/can/m_can/tcan4x5x.c | 11 - drivers/net/can/sja1000/sja1000.c | 1 drivers/net/can/sun4i_can.c | 1 drivers/net/ethernet/broadcom/Kconfig | 1 drivers/net/ethernet/ibm/ibmvnic.c | 98 +++++++---- drivers/net/ethernet/ibm/ibmvnic.h | 1 drivers/net/wireless/intel/iwlwifi/fw/api/sta.h | 10 - drivers/net/wireless/intel/iwlwifi/iwl-config.h | 4 drivers/net/wireless/intel/iwlwifi/iwl-csr.h | 10 + drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c | 2 drivers/net/wireless/intel/iwlwifi/mvm/sta.c | 18 ++ drivers/net/wireless/intel/iwlwifi/pcie/ctxt-info-gen3.c | 20 ++ drivers/net/wireless/intel/iwlwifi/pcie/trans.c | 36 +++- drivers/phy/broadcom/phy-brcm-usb-init-synopsys.c | 5 drivers/pinctrl/intel/pinctrl-jasperlake.c | 2 drivers/pinctrl/pinctrl-amd.c | 7 drivers/platform/x86/acer-wmi.c | 1 drivers/platform/x86/intel-vbtn.c | 6 drivers/platform/x86/thinkpad_acpi.c | 12 + drivers/platform/x86/touchscreen_dmi.c | 50 ++++++ drivers/scsi/be2iscsi/be_main.c | 4 drivers/scsi/storvsc_drv.c | 4 drivers/scsi/ufs/ufshcd.c | 31 ++- drivers/soc/fsl/dpio/dpio-driver.c | 5 drivers/spi/spi-nxp-fspi.c | 7 drivers/usb/host/ohci-omap.c | 4 drivers/vdpa/Kconfig | 1 drivers/vhost/vdpa.c | 80 +++++++-- drivers/xen/grant-table.c | 123 +++++++++++++++ drivers/xen/unpopulated-alloc.c | 20 +- drivers/xen/xen-scsiback.c | 60 +------ fs/btrfs/ctree.h | 5 fs/btrfs/qgroup.c | 66 +++++++- fs/proc/task_mmu.c | 8 fs/zonefs/super.c | 14 - include/asm-generic/barrier.h | 1 include/linux/build_bug.h | 5 include/linux/compiler-clang.h | 6 include/linux/compiler-gcc.h | 19 -- include/linux/compiler.h | 18 +- include/linux/netdevice.h | 14 + include/linux/zsmalloc.h | 1 include/xen/grant_table.h | 17 ++ kernel/kprobes.c | 41 +++-- kernel/sched/idle.c | 28 +++ lib/zlib_dfltcc/dfltcc_inflate.c | 3 mm/Kconfig | 13 - mm/hugetlb.c | 1 mm/mmap.c | 26 +-- mm/zsmalloc.c | 48 ----- net/batman-adv/fragmentation.c | 26 +-- net/batman-adv/hard-interface.c | 3 net/core/dev.c | 8 net/netfilter/ipvs/ip_vs_ctl.c | 31 +++ net/xdp/xsk.c | 8 samples/ftrace/ftrace-direct-modify.c | 2 samples/ftrace/ftrace-direct-too.c | 1 samples/ftrace/ftrace-direct.c | 1 sound/soc/intel/boards/bytcr_rt5640.c | 17 +- tools/bootconfig/main.c | 30 +++ tools/bpf/bpftool/btf.c | 1 tools/testing/ktest/ktest.pl | 2 132 files changed, 1094 insertions(+), 624 deletions(-)
Al Cooper (1):
phy: usb: Fix incorrect clearing of tca_drv_sel bit in SETUP reg for 7211
Alex Deucher (1):
drm/amdgpu/disply: set num_crtc earlier
Andy Lutomirski (1):
x86/membarrier: Get rid of a dubious optimization
Arnd Bergmann (1):
kbuild: avoid static_assert for genksyms
Arvind Sankar (2):
x86/mm/mem_encrypt: Fix definition of PMD_FLAGS_DEC_WP compiler.h: fix barrier_data() on clang
Bean Huo (1):
mmc: block: Fixup condition for CMD13 polling for RPMB requests
Björn Töpel (1):
net, xsk: Avoid taking multiple skbuff references
Can Guo (2):
scsi: ufs: Fix unexpected values from ufshcd_read_desc_param()
scsi: ufs: Make sure clk scaling happens only when HBA is runtime ACTIVE
Chris Chiu (1):
Input: i8042 - add Acer laptops to the i8042 reset list
Chris Wilson (4):
drm/i915/gem: Propagate error from cancelled submit due to context closure drm/i915/gt: Declare gen9 has 64 mocs entries!
drm/i915/gt: Ignore repeated attempts to suspend request flow across reset drm/i915/gt: Cancel the preemption timeout on responding to it
Coiby Xu (1):
pinctrl: amd: remove debounce filter setting in IRQ type setting
Damien Le Moal (1):
zonefs: fix page reference and BIO leak
Dan Carpenter (1):
scsi: be2iscsi: Revert "Fix a theoretical leak in beiscsi_create_eqs()"
Dany Madden (5):
ibmvnic: handle inconsistent login with reset
ibmvnic: stop free_all_rwi on failed reset
ibmvnic: avoid memset null scrq msgs
ibmvnic: send_login should check for crq errors
ibmvnic: reduce wait for completion time
Dmitry Torokhov (1):
Input: cm109 - do not stomp on control URB
Evan Green (1):
pinctrl: jasperlake: Fix HOSTSW_OWN offset
Filipe Manana (2):
btrfs: do nofs allocations when adding and removing qgroup relations
btrfs: fix lockdep splat when enabling and disabling qgroups
Georgi Djakov (2):
interconnect: qcom: msm8916: Remove rpm-ids from non-RPM nodes
interconnect: qcom: qcs404: Remove GPU and display RPM IDs
Gerald Schaefer (1):
mm/hugetlb: clear compound_nr before freeing gigantic pages
Greg Kroah-Hartman (1):
Linux 5.9.15
Hans Verkuil (2):
media: pulse8-cec: fix duplicate free at disconnect or probe error
media: pulse8-cec: add support for FW v10 and up
Hans de Goede (5):
ASoC: Intel: bytcr_rt5640: Fix HP Pavilion x2 Detachable quirks platform/x86: thinkpad_acpi: Do not report SW_TABLET_MODE on Yoga 11e platform/x86: thinkpad_acpi: Add BAT1 is primary battery quirk for Thinkpad Yoga 11e 4th gen platform/x86: touchscreen_dmi: Add info for the Predia Basic tablet platform/x86: touchscreen_dmi: Add info for the Irbis TW118 tablet
Hao Si (1):
soc: fsl: dpio: Get the cpumask through cpumask_of(cpu)
Heiko Carstens (1):
s390: fix irq state tracing
Iakov 'Jake' Kirilenko (1):
platform/x86: thinkpad_acpi: add P1 gen3 second fan support
Jeroen Hofstee (2):
can: sja1000: sja1000_err(): don't count arbitration lose as an error
can: sun4i_can: sun4i_can_err(): don't count arbitration lose as an error
Jing Xiangfeng (1):
scsi: storvsc: Fix error return in storvsc_probe()
Johannes Berg (2):
iwlwifi: pcie: limit memory read spin time
iwlwifi: pcie: set LTR to avoid completion timeout
John Stultz (1):
arm-smmu-qcom: Ensure the qcom_scm driver has finished probing
Jon Hunter (1):
arm64: tegra: Disable the ACONNECT for Jetson TX2
Juergen Gross (2):
xen: add helpers for caching grant mapping pages
xen: don't use page->lru for ZONE_DEVICE memory
Krzysztof Kozlowski (1):
drm/exynos: depend on COMMON_CLK to fix compile tests
Libo Chen (1):
ktest.pl: Fix incorrect reboot for grub2bls
Lijun Pan (1):
ibmvnic: skip tx timeout reset while in resetting
Linus Walleij (1):
usb: ohci-omap: Fix descriptor conversion
Liu Zixian (1):
mm/mmap.c: fix mmap return value when vma is merged after call_mmap()
Luca Coelho (1):
iwlwifi: pcie: invert values of NO_160 device config entries
Maciej Matuszczyk (1):
arm64: dts: rockchip: Remove system-power-controller from pmic on Odroid Go Advance
Manasi Navare (1):
drm/i915/display/dp: Compute the correct slice count for VDSC on DP
Marc Kleine-Budde (1):
can: m_can: tcan4x5x_can_probe(): fix error path: remove erroneous clk_disable_unprepare()
Markus Reichl (2):
arm64: dts: rockchip: Assign a fixed index to mmc devices on rk3399 boards.
arm64: dts: rockchip: Reorder LED triggers from mmc devices on rk3399-roc-pc.
Masami Hiramatsu (3):
kprobes: Remove NMI context check tools/bootconfig: Fix to check the write failure correctly x86/kprobes: Fix optprobe to detect INT3 padding correctly
Matthias Maier (1):
platform/x86: thinkpad_acpi: Whitelist P15 firmware for dual fan control
Max Verevkin (1):
platform/x86: intel-vbtn: Support for tablet mode on HP Pavilion 13 x360 PC
Michael Ellerman (1):
powerpc: Drop -me200 addition to build flags
Miles Chen (1):
proc: use untagged_addr() for pagemap_read addresses
Minchan Kim (1):
mm/zsmalloc.c: drop ZSMALLOC_PGTABLE_MAPPING
Mordechay Goodstein (1):
iwlwifi: sta: set max HE max A-MPDU according to HE capa
Muhammad Husaini Zulkifli (1):
mmc: sdhci-of-arasan: Fix clock registration error for Keem Bay SOC
Namhyung Kim (1):
perf/x86/intel: Fix a warning on x86_pmu_stop() with large PEBS
Nicholas Piggin (1):
powerpc/64s: Fix hash ISA v3.0 TLBIEL instruction generation
Nick Desaulniers (1):
Kbuild: do not emit debug info for assembly with LLVM_IAS=1
Oded Gabbay (1):
habanalabs/gaudi: fix missing code in ECC handling
Pankaj Sharma (1):
can: m_can: m_can_dev_setup(): add support for bosch mcan version 3.3.0
Paul Kocialkowski (1):
drm/rockchip: Avoid uninitialized use of endpoint id in LVDS
Peter Zijlstra (3):
sched/idle: Fix arch_cpu_idle() vs tracing
intel_idle: Fix intel_idle() vs tracing
intel_idle: Build fix
Ran Wang (1):
spi: spi-nxp-fspi: fix fspi panic by unexpected interrupts
Randy Dunlap (3):
net: broadcom CNIC: requires MMU
vdpa: mlx5: fix vdpa/vhost dependencies
zlib: export S390 symbols for zlib modules
Sami Tolvanen (1):
samples/ftrace: Mark my_tramp[12]? global
Sara Sharon (1):
iwlwifi: mvm: fix kernel panic in case of assert during CSA
Sebastian Reichel (1):
drm/panel: sony-acx565akm: Fix race condition in probe
Si-Wei Liu (1):
vhost-vdpa: fix page pinning leakage in error path (rework)
Stanley.Yang (1):
drm/amdgpu: fix sdma instance fw version and feature version init
Steven Rostedt (VMware) (1):
kprobes: Tell lockdep about kprobe nesting
Sukadev Bhattiprolu (2):
ibmvnic: delay next reset if hard reset fails
ibmvnic: track pending login
Sven Eckelmann (3):
batman-adv: Consider fragmentation for needed_headroom
batman-adv: Reserve needed_*room for fragments
batman-adv: Don't always reallocate the fragmentation skb head
Thomas Gleixner (1):
x86/apic/vector: Fix ordering in vector assignment
Timo Witte (1):
platform/x86: acer-wmi: add automatic keyboard background light toggle key as KEY_LIGHTS_TOGGLE
Vineet Gupta (1):
ARC: stack unwinding: don't assume non-current task is sleeping
Wang Hai (1):
ipvs: fix possible memory leak in ip_vs_control_net_init
Wenbin Mei (1):
mmc: mediatek: Fix system suspend/resume support for CQHCI
Xu Qiang (1):
irqchip/gic-v3-its: Unconditionally save/restore the ITS state on suspend
Zhang Qilong (2):
can: c_can: c_can_power_up(): fix error handling
can: kvaser_pciefd: kvaser_pciefd_open(): fix error handling
Zhen Lei (2):
bpftool: Fix error return value in build_btf_type_table
arm64: dts: broadcom: clear the warnings caused by empty dma-ranges
yong mao (1):
mmc: mediatek: Extend recheck_sdio_irq fix to more variants
Greg Kroah-Hartman
maintainerMakefile +4 -1
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 5 PATCHLEVEL = 9 -SUBLEVEL = 14 +SUBLEVEL = 15 EXTRAVERSION = NAME = Kleptomaniac Octopus
@@ -821,8 +821,11 @@ DEBUG_CFLAGS += -gsplit-dwarf else DEBUG_CFLAGS += -g endif +ifneq ($(LLVM_IAS),1) KBUILD_AFLAGS += -Wa,-gdwarf-2 endif +endif + ifdef CONFIG_DEBUG_INFO_DWARF4 DEBUG_CFLAGS += -gdwarf-4 endif
arch/alpha/kernel/process.c +1 -1
@@ -57,7 +57,7 @@ EXPORT_SYMBOL(pm_power_off);void arch_cpu_idle (void ) {wtint (0 ); -local_irq_enable (); +raw_local_irq_enable (); }void arch_cpu_idle_dead (void )
arch/arc/kernel/stacktrace.c +15 -8
@@ -38,15 +38,15 @@#ifdef CONFIG_ARC_DW2_UNWIND -static void seed_unwind_frame_info (struct task_struct *tsk, -struct pt_regs *regs, -struct unwind_frame_info *frame_info) +static int +seed_unwind_frame_info (struct task_struct *tsk,struct pt_regs *regs, +struct unwind_frame_info *frame_info) {/* * synchronous unwinding (e.g. dump_stack) * - uses current values of SP and friends */ -if (tsk ==NULL && regs ==NULL ) { +if (regs ==NULL && (tsk ==NULL || tsk == current)) {unsigned long fp, sp, blink, ret; frame_info->task = current;
@@ -65,11 +65,15 @@ static void seed_unwind_frame_info(struct task_struct *tsk, frame_info->call_frame =0 ; }else if (regs ==NULL ) {/* -* Asynchronous unwinding of sleeping task -* - Gets SP etc from task's pt_regs (saved bottom of kernel -* mode stack of task) +* Asynchronous unwinding of a likely sleeping task +* - first ensure it is actually sleeping +* - if so, it will be in __switch_to, kernel mode SP of task +* is safe-kept and BLINK at a well known location in there */ +if (tsk->state ==TASK_RUNNING ) +return -1 ; + frame_info->task = tsk; frame_info->regs.r27 =TSK_K_FP (tsk);
@@ -103,6 +107,8 @@ static void seed_unwind_frame_info(struct task_struct *tsk, frame_info->regs.r63 = regs->ret; frame_info->call_frame = 0; } + +return 0 ; }#endif
@@ -116,7 +122,8 @@ arc_unwind_core(struct task_struct *tsk, struct pt_regs *regs,unsigned int address;struct unwind_frame_info frame_info; -seed_unwind_frame_info (tsk, regs, &frame_info); +if (seed_unwind_frame_info (tsk, regs, &frame_info)) +return 0 ;while (1 ) { address =UNW_PC (&frame_info);
arch/arm/configs/omap2plus_defconfig +0 -1
@@ -81,7 +81,6 @@ CONFIG_PARTITION_ADVANCED=y CONFIG_BINFMT_MISC=y CONFIG_CMA=y CONFIG_ZSMALLOC=m -CONFIG_ZSMALLOC_PGTABLE_MAPPING=y CONFIG_NET=y CONFIG_PACKET=y CONFIG_UNIX=y
arch/arm/kernel/process.c +1 -1
@@ -71,7 +71,7 @@ void arch_cpu_idle(void)arm_pm_idle (); elsecpu_do_idle (); -local_irq_enable (); +raw_local_irq_enable (); }void arch_cpu_idle_prepare (void )
arch/arm/mach-omap1/board-osk.c +1 -1
@@ -288,7 +288,7 @@ static struct gpiod_lookup_table osk_usb_gpio_table = { .dev_id = "ohci", .table = {/* Power GPIO on the I2C-attached TPS65010 */ -GPIO_LOOKUP ("i2c-tps65010" ,1 ,"power" ,GPIO_ACTIVE_HIGH ), +GPIO_LOOKUP ("tps65010" ,0 ,"power" ,GPIO_ACTIVE_HIGH ),GPIO_LOOKUP (OMAP_GPIO_LABEL ,9 ,"overcurrent" , GPIO_ACTIVE_HIGH), },
arch/arm64/boot/dts/broadcom/stingray/stingray-usb.dtsi +10 -10
@@ -5,20 +5,20 @@ usb { compatible = "simple-bus"; dma-ranges; - #address-cells = <1>; - #size-cells = <1>; - ranges = <0x0 0x0 0x68500000 0x00400000>; + #address-cells = <2>; + #size-cells = <2>; + ranges = <0x0 0x0 0x0 0x68500000 0x0 0x00400000>; usbphy0: usb-phy@0 { compatible = "brcm,sr-usb-combo-phy"; - reg = <0x00000000 0x100>; + reg = <0x0 0x00000000 0x0 0x100>; #phy-cells = <1>; status = "disabled"; }; xhci0: usb@1000 { compatible = "generic-xhci"; - reg = <0x00001000 0x1000>; + reg = <0x0 0x00001000 0x0 0x1000>; interrupts = <GIC_SPI 256 IRQ_TYPE_LEVEL_HIGH>; phys = <&usbphy0 1>, <&usbphy0 0>; phy-names = "phy0", "phy1";
@@ -28,7 +28,7 @@ xhci0: usb@1000 { bdc0: usb@2000 { compatible = "brcm,bdc-v0.16"; - reg = <0x00002000 0x1000>; + reg = <0x0 0x00002000 0x0 0x1000>; interrupts = <GIC_SPI 259 IRQ_TYPE_LEVEL_HIGH>; phys = <&usbphy0 0>, <&usbphy0 1>; phy-names = "phy0", "phy1";
@@ -38,21 +38,21 @@ bdc0: usb@2000 { usbphy1: usb-phy@10000 { compatible = "brcm,sr-usb-combo-phy"; - reg = <0x00010000 0x100>; + reg = <0x0 0x00010000 0x0 0x100>; #phy-cells = <1>; status = "disabled"; }; usbphy2: usb-phy@20000 { compatible = "brcm,sr-usb-hs-phy"; - reg = <0x00020000 0x100>; + reg = <0x0 0x00020000 0x0 0x100>; #phy-cells = <0>; status = "disabled"; }; xhci1: usb@11000 { compatible = "generic-xhci"; - reg = <0x00011000 0x1000>; + reg = <0x0 0x00011000 0x0 0x1000>; interrupts = <GIC_SPI 263 IRQ_TYPE_LEVEL_HIGH>; phys = <&usbphy1 1>, <&usbphy2>, <&usbphy1 0>; phy-names = "phy0", "phy1", "phy2";
@@ -62,7 +62,7 @@ xhci1: usb@11000 { bdc1: usb@21000 { compatible = "brcm,bdc-v0.16"; - reg = <0x00021000 0x1000>; + reg = <0x0 0x00021000 0x0 0x1000>; interrupts = <GIC_SPI 266 IRQ_TYPE_LEVEL_HIGH>; phys = <&usbphy2>; phy-names = "phy0";
arch/arm64/boot/dts/nvidia/tegra186-p2771-0000.dts +0 -12
@@ -10,18 +10,6 @@ / { model = "NVIDIA Jetson TX2 Developer Kit"; compatible = "nvidia,p2771-0000", "nvidia,tegra186"; - aconnect { - status = "okay"; - - dma-controller@2930000 { - status = "okay"; - }; - - interrupt-controller@2a40000 { - status = "okay"; - }; - }; - i2c@3160000 { power-monitor@42 { compatible = "ti,ina3221";
arch/arm64/boot/dts/rockchip/rk3326-odroid-go2.dts +0 -1
@@ -243,7 +243,6 @@ rk817: pmic@20 { interrupts = <RK_PB2 IRQ_TYPE_LEVEL_LOW>; pinctrl-names = "default"; pinctrl-0 = <&pmic_int>; - rockchip,system-power-controller; wakeup-source; #clock-cells = <1>; clock-output-names = "rk808-clkout1", "xin32k";
arch/arm64/boot/dts/rockchip/rk3399-roc-pc.dtsi +2 -2
@@ -74,14 +74,14 @@ diy_led: led-1 { label = "red:diy"; gpios = <&gpio0 RK_PB5 GPIO_ACTIVE_HIGH>; default-state = "off"; - linux,default-trigger = "mmc1"; + linux,default-trigger = "mmc2"; }; yellow_led: led-2 { label = "yellow:yellow-led"; gpios = <&gpio0 RK_PA2 GPIO_ACTIVE_HIGH>; default-state = "off"; - linux,default-trigger = "mmc0"; + linux,default-trigger = "mmc1"; }; };
arch/arm64/boot/dts/rockchip/rk3399.dtsi +3 -0
@@ -29,6 +29,9 @@ aliases { i2c6 = &i2c6; i2c7 = &i2c7; i2c8 = &i2c8; + mmc0 = &sdio0; + mmc1 = &sdmmc; + mmc2 = &sdhci; serial0 = &uart0; serial1 = &uart1; serial2 = &uart2;
arch/arm64/kernel/process.c +1 -1
@@ -124,7 +124,7 @@ void arch_cpu_idle(void)* tricks */ cpu_do_idle (); -local_irq_enable (); +raw_local_irq_enable (); }#ifdef CONFIG_HOTPLUG_CPU
arch/csky/kernel/process.c +1 -1
@@ -102,6 +102,6 @@ void arch_cpu_idle(void)#ifdef CONFIG_CPU_PM_STOP asmvolatile ("stop\n" );#endif - local_irq_enable(); + raw_local_irq_enable(); }#endif
arch/h8300/kernel/process.c +1 -1
@@ -57,7 +57,7 @@ asmlinkage void ret_from_kernel_thread(void);*/ void arch_cpu_idle (void ) { -local_irq_enable (); +raw_local_irq_enable (); __asm__("sleep" ); }
arch/hexagon/kernel/process.c +1 -1
@@ -44,7 +44,7 @@ void arch_cpu_idle(void) {__vmwait ();/* interrupts wake us up, but irqs are still disabled */ -local_irq_enable (); +raw_local_irq_enable (); }/*
arch/ia64/kernel/process.c +1 -1
@@ -252,7 +252,7 @@ void arch_cpu_idle(void)if (mark_idle) (*mark_idle)(1 ); -safe_halt (); +raw_safe_halt ();if (mark_idle) (*mark_idle)(0 );
arch/microblaze/kernel/process.c +1 -1
@@ -149,5 +149,5 @@ int dump_fpu(struct pt_regs *regs, elf_fpregset_t *fpregs)void arch_cpu_idle (void ) { -local_irq_enable (); +raw_local_irq_enable (); }
arch/mips/kernel/idle.c +6 -6
@@ -33,19 +33,19 @@ static void __cpuidle r3081_wait(void) {unsigned long cfg =read_c0_conf ();write_c0_conf (cfg |R30XX_CONF_HALT ); -local_irq_enable (); +raw_local_irq_enable (); } static void __cpuidle r39xx_wait(void) {if (!need_resched ())write_c0_conf (read_c0_conf () |TX39_CONF_HALT ); -local_irq_enable (); +raw_local_irq_enable (); } void __cpuidle r4k_wait(void) { -local_irq_enable (); +raw_local_irq_enable ();__r4k_wait (); }
@@ -64,7 +64,7 @@ void __cpuidle r4k_wait_irqoff(void)" .set arch=r4000 \n" " wait \n" " .set pop \n"); -local_irq_enable (); +raw_local_irq_enable (); }/*
@@ -84,7 +84,7 @@ static void __cpuidle rm7k_wait_irqoff(void)" wait \n" " mtc0 $1, $12 # stalls until W stage \n" " .set pop \n"); -local_irq_enable (); +raw_local_irq_enable (); }/*
@@ -257,7 +257,7 @@ void arch_cpu_idle(void)if (cpu_wait)cpu_wait ();else -local_irq_enable (); +raw_local_irq_enable (); }#ifdef CONFIG_CPU_IDLE
arch/nios2/kernel/process.c +1 -1
@@ -33,7 +33,7 @@ EXPORT_SYMBOL(pm_power_off);void arch_cpu_idle (void ) { -local_irq_enable (); +raw_local_irq_enable (); }/*
arch/openrisc/kernel/process.c +1 -1
@@ -79,7 +79,7 @@ void machine_power_off(void)*/ void arch_cpu_idle (void ) { -local_irq_enable (); +raw_local_irq_enable ();if (mfspr (SPR_UPR ) &SPR_UPR_PMP )mtspr (SPR_PMR ,mfspr (SPR_PMR ) |SPR_PMR_DME ); }
arch/parisc/kernel/process.c +1 -1
@@ -169,7 +169,7 @@ void __cpuidle arch_cpu_idle_dead(void) void __cpuidle arch_cpu_idle(void) { -local_irq_enable (); +raw_local_irq_enable ();/* nop on real hardware, qemu will idle sleep. */ asmvolatile ("or %%r10,%%r10,%%r10\n" :::);
arch/powerpc/Makefile +0 -1
@@ -249,7 +249,6 @@ KBUILD_CFLAGS += $(call cc-option,-mno-string) cpu-as-$(CONFIG_40x) += -Wa,-m405 cpu-as-$(CONFIG_44x) += -Wa,-m440 cpu-as-$(CONFIG_ALTIVEC) += $(call as-option,-Wa$(comma)-maltivec) -cpu-as-$(CONFIG_E200) += -Wa,-me200 cpu-as-$(CONFIG_E500) += -Wa,-me500 # When using '-many -mpower4' gas will first try and find a matching power4
arch/powerpc/kernel/idle.c +2 -2
@@ -60,9 +60,9 @@ void arch_cpu_idle(void)* interrupts enabled, some don't. */ if (irqs_disabled ()) -local_irq_enable (); +raw_local_irq_enable (); }else { -local_irq_enable (); +raw_local_irq_enable ();/* * Go into low thread priority and possibly * low power mode.
arch/powerpc/mm/book3s64/hash_native.c +1 -1
@@ -68,7 +68,7 @@ static __always_inline void tlbiel_hash_set_isa300(unsigned int set, unsigned in rs = ((unsigned long )pid <<PPC_BITLSHIFT (31 )); asm volatile(PPC_TLBIEL(%0, %1, %2, %3, %4) - : : "r"(rb), "r"(rs), "i"(ric), "i"(prs), "r"(r) + : : "r"(rb), "r"(rs), "i"(ric), "i"(prs), "i"(r) : "memory"); }
arch/riscv/kernel/process.c +1 -1
@@ -36,7 +36,7 @@ extern asmlinkage void ret_from_kernel_thread(void);void arch_cpu_idle (void ) {wait_for_interrupt (); -local_irq_enable (); +raw_local_irq_enable (); }void show_regs (struct pt_regs *regs)
arch/s390/kernel/entry.S +0 -15
@@ -765,12 +765,7 @@ ENTRY(io_int_handler) xc __PT_FLAGS(8,%r11),__PT_FLAGS(%r11) TSTMSK __LC_CPU_FLAGS,_CIF_IGNORE_IRQ jo .Lio_restore -#if IS_ENABLED(CONFIG_TRACE_IRQFLAGS) - tmhh %r8,0x300 - jz 1f TRACE_IRQS_OFF -1: -#endif xc __SF_BACKCHAIN(8,%r15),__SF_BACKCHAIN(%r15) .Lio_loop: lgr %r2,%r11 # pass pointer to pt_regs
@@ -793,12 +788,7 @@ ENTRY(io_int_handler) TSTMSK __LC_CPU_FLAGS,_CIF_WORK jnz .Lio_work .Lio_restore: -#if IS_ENABLED(CONFIG_TRACE_IRQFLAGS) - tm __PT_PSW(%r11),3 - jno 0f TRACE_IRQS_ON -0: -#endif lg %r14,__LC_VDSO_PER_CPU mvc __LC_RETURN_PSW(16),__PT_PSW(%r11) tm __PT_PSW+1(%r11),0x01 # returning to user ?
@@ -980,12 +970,7 @@ ENTRY(ext_int_handler) xc __PT_FLAGS(8,%r11),__PT_FLAGS(%r11) TSTMSK __LC_CPU_FLAGS,_CIF_IGNORE_IRQ jo .Lio_restore -#if IS_ENABLED(CONFIG_TRACE_IRQFLAGS) - tmhh %r8,0x300 - jz 1f TRACE_IRQS_OFF -1: -#endif xc __SF_BACKCHAIN(8,%r15),__SF_BACKCHAIN(%r15) lgr %r2,%r11 # pass pointer to pt_regs lghi %r3,EXT_INTERRUPT
arch/s390/kernel/idle.c +3 -3
@@ -33,10 +33,10 @@ void enabled_wait(void)PSW_MASK_IO |PSW_MASK_EXT |PSW_MASK_MCHECK ;clear_cpu_flag (CIF_NOHZ_DELAY ); -local_irq_save (flags); +raw_local_irq_save (flags);/* Call the assembler magic in entry.S */ psw_idle (idle, psw_mask); -local_irq_restore (flags); +raw_local_irq_restore (flags);/* Account time spent with enabled wait psw loaded as idle time. */ raw_write_seqcount_begin (&idle->seqcount);
@@ -123,7 +123,7 @@ void arch_cpu_idle_enter(void)void arch_cpu_idle (void ) {enabled_wait (); -local_irq_enable (); +raw_local_irq_enable (); }void arch_cpu_idle_exit (void )
arch/s390/lib/delay.c +2 -3
@@ -33,7 +33,7 @@ EXPORT_SYMBOL(__delay);static void __udelay_disabled (unsigned long long usecs) { -unsigned long cr0, cr0_new, psw_mask, flags; +unsigned long cr0, cr0_new, psw_mask;struct s390_idle_data idle;u64 end;
@@ -45,9 +45,8 @@ static void __udelay_disabled(unsigned long long usecs) psw_mask =__extract_psw () |PSW_MASK_EXT |PSW_MASK_WAIT ;set_clock_comparator (end);set_cpu_flag (CIF_IGNORE_IRQ ); -local_irq_save (flags);psw_idle (&idle, psw_mask); -local_irq_restore (flags); +trace_hardirqs_off ();clear_cpu_flag (CIF_IGNORE_IRQ );set_clock_comparator (S390_lowcore.clock_comparator);__ctl_load (cr0,0 ,0 );
arch/sh/kernel/idle.c +1 -1
@@ -22,7 +22,7 @@ static void (*sh_idle)(void);void default_idle (void ) {set_bl_bit (); -local_irq_enable (); +raw_local_irq_enable ();/* Isn't this racy ? */ cpu_sleep ();clear_bl_bit ();
arch/sparc/kernel/leon_pmc.c +2 -2
@@ -50,7 +50,7 @@ static void pmc_leon_idle_fixup(void) registerunsigned int address = (unsigned int )leon3_irqctrl_regs;/* Interrupts need to be enabled to not hang the CPU */ -local_irq_enable (); +raw_local_irq_enable (); __asm__ __volatile__ ( "wr %%g0, %%asr19\n"
@@ -66,7 +66,7 @@ static void pmc_leon_idle_fixup(void)static void pmc_leon_idle (void ) {/* Interrupts need to be enabled to not hang the CPU */ -local_irq_enable (); +raw_local_irq_enable ();/* For systems without power-down, this will be no-op */ __asm__ __volatile__ ("wr %g0, %asr19\n\t" );
arch/sparc/kernel/process_32.c +1 -1
@@ -74,7 +74,7 @@ void arch_cpu_idle(void) {if (sparc_idle) (*sparc_idle)(); -local_irq_enable (); +raw_local_irq_enable (); }/* XXX cli/sti -> local_irq_xxx here, check this works once SMP is fixed. */
arch/sparc/kernel/process_64.c +2 -2
@@ -62,11 +62,11 @@ void arch_cpu_idle(void) {if (tlb_type != hypervisor) {touch_nmi_watchdog (); -local_irq_enable (); +raw_local_irq_enable (); }else {unsigned long pstate; -local_irq_enable (); +raw_local_irq_enable ();/* The sun4v sleeping code requires that we have PSTATE.IE cleared over * the cpu sleep hypervisor call.
arch/um/kernel/process.c +1 -1
@@ -217,7 +217,7 @@ void arch_cpu_idle(void) { cpu_tasks[current_thread_info ()->cpu].pid =os_getpid ();um_idle_sleep (); -local_irq_enable (); +raw_local_irq_enable (); }int __cant_sleep (void ) {
arch/x86/events/intel/ds.c +1 -1
@@ -1937,7 +1937,7 @@ static void intel_pmu_drain_pebs_nhm(struct pt_regs *iregs)if (error[bit]) {perf_log_lost_samples (event, error[bit]); -if (perf_event_account_interrupt (event)) +if (iregs &&perf_event_account_interrupt (event))x86_pmu_stop (event,0 ); }
arch/x86/include/asm/mwait.h +0 -2
@@ -88,8 +88,6 @@ static inline void __mwaitx(unsigned long eax, unsigned long ebx,static inline void __sti_mwait (unsigned long eax,unsigned long ecx) { -trace_hardirqs_on (); -mds_idle_clear_cpu_buffers ();/* "mwait %eax, %ecx;" */ asm volatile("sti; .byte 0x0f, 0x01, 0xc9;"
arch/x86/include/asm/pgtable_types.h +1 -0
@@ -155,6 +155,7 @@ enum page_cache_mode {#define _PAGE_ENC (_AT(pteval_t, sme_me_mask))#define _PAGE_CACHE_MASK (_PAGE_PWT | _PAGE_PCD | _PAGE_PAT) +#define _PAGE_LARGE_CACHE_MASK (_PAGE_PWT | _PAGE_PCD | _PAGE_PAT_LARGE)#define _PAGE_NOCACHE (cachemode2protval(_PAGE_CACHE_MODE_UC))#define _PAGE_CACHE_WP (cachemode2protval(_PAGE_CACHE_MODE_WP))
arch/x86/include/asm/sync_core.h +5 -4
@@ -88,12 +88,13 @@ static inline void sync_core_before_usermode(void)/* With PTI, we unconditionally serialize before running user code. */ if (static_cpu_has (X86_FEATURE_PTI ))return ; +/* -* Return from interrupt and NMI is done through iret, which is core -* serializing. +* Even if we're in an interrupt, we might reschedule before returning, +* in which case we could switch to a different thread in the same mm +* and return using SYSRET or SYSEXIT. Instead of trying to keep +* track of our need to sync the core, just sync right away. */ -if (in_irq () ||in_nmi ()) -return ;sync_core (); }
arch/x86/kernel/apic/vector.c +14 -10
@@ -273,20 +273,24 @@ static int assign_irq_vector_any_locked(struct irq_data *irqd)const struct cpumask *affmsk =irq_data_get_affinity_mask (irqd);int node =irq_data_get_node (irqd); -if (node ==NUMA_NO_NODE ) - goto all; -/* Try the intersection of @affmsk and node mask */ -cpumask_and (vector_searchmask,cpumask_of_node (node), affmsk); -if (!assign_vector_locked (irqd, vector_searchmask)) -return 0 ; -/* Try the node mask */ -if (!assign_vector_locked (irqd,cpumask_of_node (node))) -return 0 ; -all: +if (node !=NUMA_NO_NODE ) { +/* Try the intersection of @affmsk and node mask */ +cpumask_and (vector_searchmask,cpumask_of_node (node), affmsk); +if (!assign_vector_locked (irqd, vector_searchmask)) +return 0 ; + } +/* Try the full affinity mask */ cpumask_and (vector_searchmask, affmsk, cpu_online_mask);if (!assign_vector_locked (irqd, vector_searchmask))return 0 ; + +if (node !=NUMA_NO_NODE ) { +/* Try the node mask */ +if (!assign_vector_locked (irqd,cpumask_of_node (node))) +return 0 ; + } +/* Try the full online mask */ return assign_vector_locked (irqd, cpu_online_mask); }
arch/x86/kernel/kprobes/opt.c +20 -2
@@ -271,6 +271,19 @@ static int insn_is_indirect_jump(struct insn *insn)return ret; } +static bool is_padding_int3 (unsigned long addr,unsigned long eaddr) +{ +unsigned char ops; + +for (; addr < eaddr; addr++) { +if (get_kernel_nofault (ops, (void *)addr) <0 || + ops !=INT3_INSN_OPCODE ) +return false; + } + +return true; +} +/* Decode whole function to ensure any instructions don't jump into target */ static int can_optimize (unsigned long paddr) {
@@ -309,9 +322,14 @@ static int can_optimize(unsigned long paddr)return 0 ;kernel_insn_init (&insn, (void *)recovered_insn,MAX_INSN_SIZE );insn_get_length (&insn); -/* Another subsystem puts a breakpoint */ +/* +* In the case of detecting unknown breakpoint, this could be +* a padding INT3 between functions. Let's check that all the +* rest of the bytes are also INT3. +*/ if (insn.opcode.bytes[0 ] ==INT3_INSN_OPCODE ) -return 0 ; +return is_padding_int3 (addr, paddr - offset + size) ?1 :0 ; +/* Recover address */ insn.kaddr = (void *)addr; insn.next_byte = (void *)(addr + insn.length);
arch/x86/kernel/process.c +7 -5
@@ -685,7 +685,7 @@ void arch_cpu_idle(void)*/ void __cpuidle default_idle(void) { -safe_halt (); +raw_safe_halt (); }#if defined(CONFIG_APM_MODULE ) || defined(CONFIG_HALTPOLL_CPUIDLE_MODULE )EXPORT_SYMBOL (default_idle);
@@ -736,6 +736,8 @@ void stop_this_cpu(void *dummy)/* * AMD Erratum 400 aware idle routine. We handle it the same way as C3 power * states (local apic timer and TSC stop). +* +* XXX this function is completely buggered vs RCU and tracing. */ static void amd_e400_idle (void ) {
@@ -757,9 +759,9 @@ static void amd_e400_idle(void)* The switch back from broadcast mode needs to be called with * interrupts disabled. */ -local_irq_disable (); +raw_local_irq_disable ();tick_broadcast_exit (); -local_irq_enable (); +raw_local_irq_enable (); }/*
@@ -801,9 +803,9 @@ static __cpuidle void mwait_idle(void)if (!need_resched ())__sti_mwait (0 ,0 );else -local_irq_enable (); +raw_local_irq_enable (); }else { -local_irq_enable (); +raw_local_irq_enable (); }__current_clr_polling (); }
arch/x86/mm/mem_encrypt_identity.c +2 -2
@@ -45,8 +45,8 @@#define PMD_FLAGS_LARGE (__PAGE_KERNEL_LARGE_EXEC & ~_PAGE_GLOBAL)#define PMD_FLAGS_DEC PMD_FLAGS_LARGE -#define PMD_FLAGS_DEC_WP ((PMD_FLAGS_DEC & ~_PAGE_CACHE_MASK) | \ - (_PAGE_PAT | _PAGE_PWT)) +#define PMD_FLAGS_DEC_WP ((PMD_FLAGS_DEC & ~_PAGE_LARGE_CACHE_MASK) | \ + (_PAGE_PAT_LARGE | _PAGE_PWT))#define PMD_FLAGS_ENC (PMD_FLAGS_LARGE | _PAGE_ENC)
arch/x86/mm/tlb.c +8 -2
@@ -475,8 +475,14 @@ void switch_mm_irqs_off(struct mm_struct *prev, struct mm_struct *next,/* * The membarrier system call requires a full memory barrier and * core serialization before returning to user-space, after -* storing to rq->curr. Writing to CR3 provides that full -* memory barrier and core serializing instruction. +* storing to rq->curr, when changing mm. This is because +* membarrier() sends IPIs to all CPUs that are in the target mm +* to make them issue memory barriers. However, if another CPU +* switches to/from the target mm concurrently with +* membarrier(), it can cause that CPU not to receive an IPI +* when it really should issue a memory barrier. Writing to CR3 +* provides that full memory barrier and core serializing +* instruction. */ if (real_prev == next) { VM_WARN_ON(this_cpu_read(cpu_tlbstate.ctxs[prev_asid].ctx_id) !=
drivers/Makefile +1 -0
@@ -145,6 +145,7 @@ obj-$(CONFIG_OF) += of/ obj-$(CONFIG_SSB) += ssb/ obj-$(CONFIG_BCMA) += bcma/ obj-$(CONFIG_VHOST_RING) += vhost/ +obj-$(CONFIG_VHOST_IOTLB) += vhost/ obj-$(CONFIG_VHOST) += vhost/ obj-$(CONFIG_VLYNQ) += vlynq/ obj-$(CONFIG_GREYBUS) += greybus/
drivers/block/xen-blkback/blkback.c +17 -72
162 lines not on this page · raw message
drivers/block/xen-blkback/common.h +1 -3
@@ -288,9 +288,7 @@ struct xen_blkif_ring {struct work_struct persistent_purge_work;/* Buffer of free pages to map grant refs. */ -spinlock_t free_pages_lock; -int free_pages_num; -struct list_head free_pages; +struct gnttab_page_cache free_pages;struct work_struct free_work;/* Thread shutdown wait queue. */
drivers/block/xen-blkback/xenbus.c +2 -4
@@ -144,8 +144,7 @@ static int xen_blkif_alloc_rings(struct xen_blkif *blkif)INIT_LIST_HEAD (&ring->pending_free);INIT_LIST_HEAD (&ring->persistent_purge_list);INIT_WORK (&ring->persistent_purge_work, xen_blkbk_unmap_purged_grants); -spin_lock_init (&ring->free_pages_lock); -INIT_LIST_HEAD (&ring->free_pages); +gnttab_page_cache_init (&ring->free_pages);spin_lock_init (&ring->pending_free_lock);init_waitqueue_head (&ring->pending_free_wq);
@@ -317,8 +316,7 @@ static int xen_blkif_disconnect(struct xen_blkif *blkif)BUG_ON (atomic_read (&ring->persistent_gnt_in_use) !=0 );BUG_ON (!list_empty (&ring->persistent_purge_list));BUG_ON (!RB_EMPTY_ROOT (&ring->persistent_gnts)); -BUG_ON (!list_empty (&ring->free_pages)); -BUG_ON (ring->free_pages_num !=0 ); +BUG_ON (ring->free_pages.num_pages !=0 );BUG_ON (ring->persistent_gnt_c !=0 );WARN_ON (i != (XEN_BLKIF_REQS_PER_PAGE * blkif->nr_ring_pages)); ring->active = false;
drivers/gpu/drm/amd/amdgpu/sdma_v5_2.c +1 -1
@@ -183,7 +183,7 @@ static int sdma_v5_2_init_microcode(struct amdgpu_device *adev)if (err) goto out; - err =sdma_v5_2_init_inst_ctx (&adev->sdma.instance[0 ]); + err =sdma_v5_2_init_inst_ctx (&adev->sdma.instance[i]);if (err) goto out; }
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +4 -5
@@ -977,9 +977,6 @@ static int amdgpu_dm_init(struct amdgpu_device *adev) goto error; } -/* Update the actual used number of crtc */ - adev->mode_info.num_crtc = adev->dm.display_indexes_num; -/* create fake encoders for MST */ dm_dp_create_fake_mst_encoders (adev);
@@ -3099,6 +3096,10 @@ static int amdgpu_dm_initialize_drm_device(struct amdgpu_device *adev)enum dc_connection_type new_connection_type = dc_connection_none;const struct dc_plane_cap *plane; + dm->display_indexes_num = dm->dc->caps.max_streams; +/* Update the actual used number of crtc */ + adev->mode_info.num_crtc = adev->dm.display_indexes_num; + link_cnt = dm->dc->caps.max_links;if (amdgpu_dm_mode_config_init (dm->adev)) {DRM_ERROR ("DM: Failed to initialize mode config\n" );
@@ -3160,8 +3161,6 @@ static int amdgpu_dm_initialize_drm_device(struct amdgpu_device *adev) goto fail; } - dm->display_indexes_num = dm->dc->caps.max_streams; -/* loops over all connectors on the board */ for (i =0 ; i < link_cnt; i++) {struct dc_link *link =NULL ;
drivers/gpu/drm/exynos/Kconfig +2 -1
@@ -1,7 +1,8 @@ # SPDX-License-Identifier: GPL-2.0-only config DRM_EXYNOS tristate "DRM Support for Samsung SoC Exynos Series" - depends on OF && DRM && (ARCH_S3C64XX || ARCH_S5PV210 || ARCH_EXYNOS || ARCH_MULTIPLATFORM || COMPILE_TEST) + depends on OF && DRM && COMMON_CLK + depends on ARCH_S3C64XX || ARCH_S5PV210 || ARCH_EXYNOS || ARCH_MULTIPLATFORM || COMPILE_TEST depends on MMU select DRM_KMS_HELPER select VIDEOMODE_HELPERS
drivers/gpu/drm/i915/display/intel_dp.c +1 -1
@@ -597,7 +597,7 @@ static u8 intel_dp_dsc_get_slice_count(struct intel_dp *intel_dp,return 0 ; }/* Also take into account max slice width */ - min_slice_count =min_t (u8, min_slice_count, + min_slice_count =max_t (u8, min_slice_count,DIV_ROUND_UP (mode_hdisplay, max_slice_width));
drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c +5 -2
@@ -2613,7 +2613,7 @@ static void retire_requests(struct intel_timeline *tl, struct i915_request *end)break ; } -static void eb_request_add (struct i915_execbuffer *eb) +static int eb_request_add (struct i915_execbuffer *eb,int err) {struct i915_request *rq = eb->request;struct intel_timeline *const tl =i915_request_timeline (rq);
@@ -2634,6 +2634,7 @@ static void eb_request_add(struct i915_execbuffer *eb)/* Serialise with context_close via the add_to_timeline */ i915_request_set_error_once (rq, -ENOENT );__i915_request_skip (rq); + err = -ENOENT ;/* override any transient errors */ }__i915_request_queue (rq, &attr);
@@ -2643,6 +2644,8 @@ static void eb_request_add(struct i915_execbuffer *eb)retire_requests (tl, prev);mutex_unlock (&tl->mutex); + +return err; } static int
@@ -2844,7 +2847,7 @@ i915_gem_do_execbuffer(struct drm_device *dev, err_request:add_to_client (eb.request, file);i915_request_get (eb.request); -eb_request_add (&eb); + err =eb_request_add (&eb, err);if (fences)signal_fence_array (&eb, fences);
drivers/gpu/drm/i915/gt/intel_lrc.c +6 -1
@@ -2788,6 +2788,9 @@ static void __execlists_hold(struct i915_request *rq)static bool execlists_hold (struct intel_engine_cs *engine,struct i915_request *rq) { +if (i915_request_on_hold (rq)) +return false; +spin_lock_irq (&engine->active.lock);if (i915_request_completed (rq)) {/* too late! */
@@ -3169,8 +3172,10 @@ static void execlists_submission_tasklet(unsigned long data)spin_unlock_irqrestore (&engine->active.lock, flags);/* Recheck after serialising with direct-submission */ -if (unlikely (timeout &&preempt_timeout (engine))) +if (unlikely (timeout &&preempt_timeout (engine))) { +cancel_timer (&engine->execlists.preempt);execlists_reset (engine,"preemption time out" ); + } } }
drivers/gpu/drm/i915/gt/intel_mocs.c +3 -4
@@ -59,8 +59,7 @@ struct drm_i915_mocs_table {#define _L3_CACHEABILITY (value) ((value) << 4)/* Helper defines */ -#define GEN9_NUM_MOCS_ENTRIES 62/* 62 out of 64 - 63 & 64 are reserved. */ -#define GEN11_NUM_MOCS_ENTRIES 64/* 63-64 are reserved, but configured. */ +#define GEN9_NUM_MOCS_ENTRIES 64/* 63-64 are reserved, but configured. */ /* (e)LLC caching options */ /*
@@ -328,11 +327,11 @@ static unsigned int get_mocs_settings(const struct drm_i915_private *i915,if (INTEL_GEN (i915) >=12 ) { table->size =ARRAY_SIZE (tgl_mocs_table); table->table = tgl_mocs_table; - table->n_entries =GEN11_NUM_MOCS_ENTRIES ; + table->n_entries =GEN9_NUM_MOCS_ENTRIES ; }else if (IS_GEN (i915,11 )) { table->size =ARRAY_SIZE (icl_mocs_table); table->table = icl_mocs_table; - table->n_entries =GEN11_NUM_MOCS_ENTRIES ; + table->n_entries =GEN9_NUM_MOCS_ENTRIES ; }else if (IS_GEN9_BC (i915) ||IS_CANNONLAKE (i915)) { table->size =ARRAY_SIZE (skl_mocs_table); table->n_entries =GEN9_NUM_MOCS_ENTRIES ;
drivers/gpu/drm/panel/panel-sony-acx565akm.c +1 -1
@@ -629,7 +629,7 @@ static int acx565akm_probe(struct spi_device *spi) lcd->spi = spi;mutex_init (&lcd->mutex); - lcd->reset_gpio =devm_gpiod_get (&spi->dev,"reset" ,GPIOD_OUT_LOW ); + lcd->reset_gpio =devm_gpiod_get (&spi->dev,"reset" ,GPIOD_OUT_HIGH );if (IS_ERR (lcd->reset_gpio)) {dev_err (&spi->dev,"failed to get reset GPIO\n" );return PTR_ERR (lcd->reset_gpio);
drivers/gpu/drm/rockchip/rockchip_lvds.c +1 -1
@@ -544,7 +544,7 @@ static int rockchip_lvds_bind(struct device *dev, struct device *master,struct device_node *port, *endpoint;int ret =0 , child_count =0 ;const char *name; -u32 endpoint_id; +u32 endpoint_id =0 ; lvds->drm_dev = drm_dev; port =of_graph_get_port_by_id (dev->of_node,1 );
drivers/idle/intel_idle.c +20 -17
@@ -122,26 +122,9 @@ static __cpuidle int intel_idle(struct cpuidle_device *dev,struct cpuidle_state *state = &drv->states[index];unsigned long eax =flg2MWAIT (state->flags);unsigned long ecx =1 ;/* break on interrupt flag */ -bool tick; - -if (!static_cpu_has (X86_FEATURE_ARAT )) { -/* -* Switch over to one-shot tick broadcast if the target C-state -* is deeper than C1. -*/ -if ((eax >>MWAIT_SUBSTATE_SIZE ) &MWAIT_CSTATE_MASK ) { - tick = true; -tick_broadcast_enter (); - }else { - tick = false; - } - }mwait_idle_with_hints (eax, ecx); -if (!static_cpu_has (X86_FEATURE_ARAT ) && tick) -tick_broadcast_exit (); -return index; }
@@ -1153,6 +1136,20 @@ static bool __init intel_idle_max_cstate_reached(int cstate)return false; } +static bool __init intel_idle_state_needs_timer_stop (struct cpuidle_state *state) +{ +unsigned long eax =flg2MWAIT (state->flags); + +if (boot_cpu_has (X86_FEATURE_ARAT )) +return false; + +/* +* Switch over to one-shot tick broadcast if the target C-state +* is deeper than C1. +*/ +return !!((eax >>MWAIT_SUBSTATE_SIZE ) &MWAIT_CSTATE_MASK ); +} +#ifdef CONFIG_ACPI_PROCESSOR_CSTATE #include <acpi/processor.h>
@@ -1265,6 +1262,9 @@ static void __init intel_idle_init_cstates_acpi(struct cpuidle_driver *drv)if (disabled_states_mask &BIT (cstate)) state->flags |=CPUIDLE_FLAG_OFF ; +if (intel_idle_state_needs_timer_stop (state)) + state->flags |=CPUIDLE_FLAG_TIMER_STOP ; + state->enter = intel_idle; state->enter_s2idle = intel_idle_s2idle; }
@@ -1503,6 +1503,9 @@ static void __init intel_idle_init_cstates_icpu(struct cpuidle_driver *drv) !(cpuidle_state_table[cstate].flags & CPUIDLE_FLAG_ALWAYS_ENABLE))) drv->states[drv->state_count].flags |= CPUIDLE_FLAG_OFF; +if (intel_idle_state_needs_timer_stop (&drv->states[drv->state_count])) + drv->states[drv->state_count].flags |=CPUIDLE_FLAG_TIMER_STOP ; + drv->state_count++; }
drivers/input/misc/cm109.c +5 -2
@@ -568,12 +568,15 @@ static int cm109_input_open(struct input_dev *idev) dev->ctl_data->byte[HID_OR2 ] = dev->keybit; dev->ctl_data->byte[HID_OR3 ] =0x00 ; + dev->ctl_urb_pending =1 ; error =usb_submit_urb (dev->urb_ctl,GFP_KERNEL ); -if (error) +if (error) { + dev->ctl_urb_pending =0 ;dev_err (&dev->intf->dev,"%s: usb_submit_urb (urb_ctl) failed %d\n" , __func__, error); -else + }else { dev->open =1 ; + }mutex_unlock (&dev->pm_mutex);
drivers/input/serio/i8042-x86ia64io.h +42 -0
48 lines not on this page · raw message
drivers/interconnect/qcom/msm8916.c +6 -6
@@ -182,7 +182,7 @@ DEFINE_QNODE(mas_pcnoc_sdcc_1, MSM8916_MASTER_SDCC_1, 8, -1, -1, MSM8916_PNOC_INDEFINE_QNODE (mas_pcnoc_sdcc_2,MSM8916_MASTER_SDCC_2 ,8 ,-1 ,-1 ,MSM8916_PNOC_INT_1 );DEFINE_QNODE (mas_qdss_bam,MSM8916_MASTER_QDSS_BAM ,8 ,-1 ,-1 ,MSM8916_SNOC_QDSS_INT );DEFINE_QNODE (mas_qdss_etr,MSM8916_MASTER_QDSS_ETR ,8 ,-1 ,-1 ,MSM8916_SNOC_QDSS_INT ); -DEFINE_QNODE (mas_snoc_cfg,MSM8916_MASTER_SNOC_CFG ,4 ,20 ,-1 ,MSM8916_SNOC_QDSS_INT ); +DEFINE_QNODE (mas_snoc_cfg,MSM8916_MASTER_SNOC_CFG ,4 ,-1 ,-1 ,MSM8916_SNOC_QDSS_INT );DEFINE_QNODE (mas_spdm,MSM8916_MASTER_SPDM ,4 ,-1 ,-1 ,MSM8916_PNOC_MAS_0 );DEFINE_QNODE (mas_tcu0,MSM8916_MASTER_TCU0 ,8 ,-1 ,-1 ,MSM8916_SLAVE_EBI_CH0 ,MSM8916_BIMC_SNOC_MAS ,MSM8916_SLAVE_AMPSS_L2 );DEFINE_QNODE (mas_tcu1,MSM8916_MASTER_TCU1 ,8 ,-1 ,-1 ,MSM8916_SLAVE_EBI_CH0 ,MSM8916_BIMC_SNOC_MAS ,MSM8916_SLAVE_AMPSS_L2 );
@@ -208,14 +208,14 @@ DEFINE_QNODE(pcnoc_snoc_mas, MSM8916_PNOC_SNOC_MAS, 8, 29, -1, MSM8916_PNOC_SNOCDEFINE_QNODE (pcnoc_snoc_slv,MSM8916_PNOC_SNOC_SLV ,8 ,-1 ,45 ,MSM8916_SNOC_INT_0 ,MSM8916_SNOC_INT_BIMC ,MSM8916_SNOC_INT_1 );DEFINE_QNODE (qdss_int,MSM8916_SNOC_QDSS_INT ,8 ,-1 ,-1 ,MSM8916_SNOC_INT_0 ,MSM8916_SNOC_INT_BIMC );DEFINE_QNODE (slv_apps_l2,MSM8916_SLAVE_AMPSS_L2 ,8 ,-1 ,-1 ,0 ); -DEFINE_QNODE (slv_apss,MSM8916_SLAVE_APSS ,4 ,-1 ,20 ,0 ); +DEFINE_QNODE (slv_apss,MSM8916_SLAVE_APSS ,4 ,-1 ,-1 ,0 );DEFINE_QNODE (slv_audio,MSM8916_SLAVE_LPASS ,4 ,-1 ,-1 ,0 );DEFINE_QNODE (slv_bimc_cfg,MSM8916_SLAVE_BIMC_CFG ,4 ,-1 ,-1 ,0 );DEFINE_QNODE (slv_blsp_1,MSM8916_SLAVE_BLSP_1 ,4 ,-1 ,-1 ,0 );DEFINE_QNODE (slv_boot_rom,MSM8916_SLAVE_BOOT_ROM ,4 ,-1 ,-1 ,0 );DEFINE_QNODE (slv_camera_cfg,MSM8916_SLAVE_CAMERA_CFG ,4 ,-1 ,-1 ,0 ); -DEFINE_QNODE (slv_cats_0,MSM8916_SLAVE_CATS_128 ,16 ,-1 ,106 ,0 ); -DEFINE_QNODE (slv_cats_1,MSM8916_SLAVE_OCMEM_64 ,8 ,-1 ,107 ,0 ); +DEFINE_QNODE (slv_cats_0,MSM8916_SLAVE_CATS_128 ,16 ,-1 ,-1 ,0 ); +DEFINE_QNODE (slv_cats_1,MSM8916_SLAVE_OCMEM_64 ,8 ,-1 ,-1 ,0 );DEFINE_QNODE (slv_clk_ctl,MSM8916_SLAVE_CLK_CTL ,4 ,-1 ,-1 ,0 );DEFINE_QNODE (slv_crypto_0_cfg,MSM8916_SLAVE_CRYPTO_0_CFG ,4 ,-1 ,-1 ,0 );DEFINE_QNODE (slv_dehr_cfg,MSM8916_SLAVE_DEHR_CFG ,4 ,-1 ,-1 ,0 );
@@ -239,7 +239,7 @@ DEFINE_QNODE(slv_sdcc_2, MSM8916_SLAVE_SDCC_2, 4, -1, -1, 0);DEFINE_QNODE (slv_security,MSM8916_SLAVE_SECURITY ,4 ,-1 ,-1 ,0 );DEFINE_QNODE (slv_snoc_cfg,MSM8916_SLAVE_SNOC_CFG ,4 ,-1 ,-1 ,0 );DEFINE_QNODE (slv_spdm,MSM8916_SLAVE_SPDM ,4 ,-1 ,-1 ,0 ); -DEFINE_QNODE (slv_srvc_snoc,MSM8916_SLAVE_SRVC_SNOC ,8 ,-1 ,29 ,0 ); +DEFINE_QNODE (slv_srvc_snoc,MSM8916_SLAVE_SRVC_SNOC ,8 ,-1 ,-1 ,0 );DEFINE_QNODE (slv_tcsr,MSM8916_SLAVE_TCSR ,4 ,-1 ,-1 ,0 );DEFINE_QNODE (slv_tlmm,MSM8916_SLAVE_TLMM ,4 ,-1 ,-1 ,0 );DEFINE_QNODE (slv_usb_hs,MSM8916_SLAVE_USB_HS ,4 ,-1 ,-1 ,0 );
@@ -249,7 +249,7 @@ DEFINE_QNODE(snoc_bimc_0_slv, MSM8916_SNOC_BIMC_0_SLV, 8, -1, 24, MSM8916_SLAVE_DEFINE_QNODE (snoc_bimc_1_mas,MSM8916_SNOC_BIMC_1_MAS ,16 ,-1 ,-1 ,MSM8916_SNOC_BIMC_1_SLV );DEFINE_QNODE (snoc_bimc_1_slv,MSM8916_SNOC_BIMC_1_SLV ,8 ,-1 ,-1 ,MSM8916_SLAVE_EBI_CH0 );DEFINE_QNODE (snoc_int_0,MSM8916_SNOC_INT_0 ,8 ,99 ,130 ,MSM8916_SLAVE_QDSS_STM ,MSM8916_SLAVE_IMEM ,MSM8916_SNOC_PNOC_MAS ); -DEFINE_QNODE (snoc_int_1,MSM8916_SNOC_INT_1 ,8 ,100 ,131 ,MSM8916_SLAVE_APSS ,MSM8916_SLAVE_CATS_128 ,MSM8916_SLAVE_OCMEM_64 ); +DEFINE_QNODE (snoc_int_1,MSM8916_SNOC_INT_1 ,8 ,-1 ,-1 ,MSM8916_SLAVE_APSS ,MSM8916_SLAVE_CATS_128 ,MSM8916_SLAVE_OCMEM_64 );DEFINE_QNODE (snoc_int_bimc,MSM8916_SNOC_INT_BIMC ,8 ,101 ,132 ,MSM8916_SNOC_BIMC_0_MAS );DEFINE_QNODE (snoc_pcnoc_mas,MSM8916_SNOC_PNOC_MAS ,8 ,-1 ,-1 ,MSM8916_SNOC_PNOC_SLV );DEFINE_QNODE (snoc_pcnoc_slv,MSM8916_SNOC_PNOC_SLV ,8 ,-1 ,-1 ,MSM8916_PNOC_INT_0 );
drivers/interconnect/qcom/qcs404.c +2 -2
@@ -157,8 +157,8 @@ struct qcom_icc_desc { }DEFINE_QNODE (mas_apps_proc,QCS404_MASTER_AMPSS_M0 ,8 ,0 ,-1 ,QCS404_SLAVE_EBI_CH0 ,QCS404_BIMC_SNOC_SLV ); -DEFINE_QNODE (mas_oxili,QCS404_MASTER_GRAPHICS_3D ,8 ,6 ,-1 ,QCS404_SLAVE_EBI_CH0 ,QCS404_BIMC_SNOC_SLV ); -DEFINE_QNODE (mas_mdp,QCS404_MASTER_MDP_PORT0 ,8 ,8 ,-1 ,QCS404_SLAVE_EBI_CH0 ,QCS404_BIMC_SNOC_SLV ); +DEFINE_QNODE (mas_oxili,QCS404_MASTER_GRAPHICS_3D ,8 ,-1 ,-1 ,QCS404_SLAVE_EBI_CH0 ,QCS404_BIMC_SNOC_SLV ); +DEFINE_QNODE (mas_mdp,QCS404_MASTER_MDP_PORT0 ,8 ,-1 ,-1 ,QCS404_SLAVE_EBI_CH0 ,QCS404_BIMC_SNOC_SLV );DEFINE_QNODE (mas_snoc_bimc_1,QCS404_SNOC_BIMC_1_MAS ,8 ,76 ,-1 ,QCS404_SLAVE_EBI_CH0 );DEFINE_QNODE (mas_tcu_0,QCS404_MASTER_TCU_0 ,8 ,-1 ,-1 ,QCS404_SLAVE_EBI_CH0 ,QCS404_BIMC_SNOC_SLV );DEFINE_QNODE (mas_spdm,QCS404_MASTER_SPDM ,4 ,-1 ,-1 ,QCS404_PNOC_INT_3 );
drivers/iommu/arm/arm-smmu/arm-smmu-qcom.c +4 -0
@@ -69,6 +69,10 @@ struct arm_smmu_device *qcom_smmu_impl_init(struct arm_smmu_device *smmu) {struct qcom_smmu *qsmmu; +/* Check to make sure qcom_scm has finished probing */ +if (!qcom_scm_is_available ()) +return ERR_PTR (-EPROBE_DEFER ); + qsmmu =devm_kzalloc (smmu->dev,sizeof (*qsmmu),GFP_KERNEL );if (!qsmmu)return ERR_PTR (-ENOMEM );
drivers/irqchip/irq-gic-v3-its.c +3 -13
@@ -42,7 +42,6 @@#define ITS_FLAGS_CMDQ_NEEDS_FLUSHING (1ULL << 0)#define ITS_FLAGS_WORKAROUND_CAVIUM_22375 (1ULL << 1)#define ITS_FLAGS_WORKAROUND_CAVIUM_23144 (1ULL << 2) -#define ITS_FLAGS_SAVE_SUSPEND_STATE (1ULL << 3)#define RDIST_FLAGS_PROPBASE_NEEDS_FLUSHING (1 << 0)#define RDIST_FLAGS_RD_TABLES_PREALLOCATED (1 << 1)
@@ -4735,9 +4734,6 @@ static int its_save_disable(void)list_for_each_entry (its, &its_nodes, entry) {void __iomem *base; -if (!(its->flags &ITS_FLAGS_SAVE_SUSPEND_STATE )) -continue ; - base = its->base; its->ctlr_save =readl_relaxed (base +GITS_CTLR ); err =its_force_quiescent (base);
@@ -4756,9 +4752,6 @@ static int its_save_disable(void)list_for_each_entry_continue_reverse (its, &its_nodes, entry) {void __iomem *base; -if (!(its->flags &ITS_FLAGS_SAVE_SUSPEND_STATE )) -continue ; - base = its->base;writel_relaxed (its->ctlr_save, base +GITS_CTLR ); }
@@ -4778,9 +4771,6 @@ static void its_restore_enable(void)void __iomem *base;int i; -if (!(its->flags &ITS_FLAGS_SAVE_SUSPEND_STATE )) -continue ; - base = its->base;/*
@@ -4788,7 +4778,10 @@ static void its_restore_enable(void)* don't restore it since writing to CBASER or BASER<n> * registers is undefined according to the GIC v3 ITS * Specification. +* +* Firmware resuming with the ITS enabled is terminally broken. */ +WARN_ON (readl_relaxed (base +GITS_CTLR ) &GITS_CTLR_ENABLE ); ret =its_force_quiescent (base);if (ret) { pr_err("ITS@%pa: failed to quiesce on resume: %d\n",
@@ -5068,9 +5061,6 @@ static int __init its_probe_one(struct resource *res, ctlr |= GITS_CTLR_ImDe;writel_relaxed (ctlr, its->base +GITS_CTLR ); -if (GITS_TYPER_HCC (typer)) - its->flags |=ITS_FLAGS_SAVE_SUSPEND_STATE ; - err =its_init_domain (handle, its);if (err) goto out_free_tables;
drivers/media/cec/usb/pulse8/pulse8-cec.c +34 -18
106 lines not on this page · raw message
drivers/misc/habanalabs/gaudi/gaudi.c +2 -0
@@ -5416,6 +5416,8 @@ static void gaudi_handle_ecc_event(struct hl_device *hdev, u16 event_type, params.num_memories =33 ; params.derr = true; params.disable_clock_gating = true; + extract_info_from_fw = false; +break ;default :return ; }
drivers/mmc/core/block.c +1 -1
@@ -580,7 +580,7 @@ static int __mmc_blk_ioctl_cmd(struct mmc_card *card, struct mmc_blk_data *md,memcpy (&(idata->ic.response), cmd.resp,sizeof (cmd.resp)); -if (idata->rpmb || (cmd.flags &MMC_RSP_R1B )) { +if (idata->rpmb || (cmd.flags &MMC_RSP_R1B ) ==MMC_RSP_R1B ) {/* * Ensure RPMB/R1B command has completed by polling CMD13 * "Send Status".
drivers/mmc/host/mtk-sd.c +26 -7
@@ -447,7 +447,7 @@ struct msdc_host {static const struct mtk_mmc_compatible mt8135_compat = { .clk_div_bits =8 , - .recheck_sdio_irq = false, + .recheck_sdio_irq = true, .hs400_tune = false, .pad_tune_reg =MSDC_PAD_TUNE , .async_fifo = false,
@@ -486,7 +486,7 @@ static const struct mtk_mmc_compatible mt8183_compat = {static const struct mtk_mmc_compatible mt2701_compat = { .clk_div_bits =12 , - .recheck_sdio_irq = false, + .recheck_sdio_irq = true, .hs400_tune = false, .pad_tune_reg =MSDC_PAD_TUNE0 , .async_fifo = true,
@@ -512,7 +512,7 @@ static const struct mtk_mmc_compatible mt2712_compat = {static const struct mtk_mmc_compatible mt7622_compat = { .clk_div_bits =12 , - .recheck_sdio_irq = false, + .recheck_sdio_irq = true, .hs400_tune = false, .pad_tune_reg =MSDC_PAD_TUNE0 , .async_fifo = true,
@@ -525,7 +525,7 @@ static const struct mtk_mmc_compatible mt7622_compat = {static const struct mtk_mmc_compatible mt8516_compat = { .clk_div_bits =12 , - .recheck_sdio_irq = false, + .recheck_sdio_irq = true, .hs400_tune = false, .pad_tune_reg =MSDC_PAD_TUNE0 , .async_fifo = true,
@@ -536,7 +536,7 @@ static const struct mtk_mmc_compatible mt8516_compat = {static const struct mtk_mmc_compatible mt7620_compat = { .clk_div_bits =8 , - .recheck_sdio_irq = false, + .recheck_sdio_irq = true, .hs400_tune = false, .pad_tune_reg =MSDC_PAD_TUNE , .async_fifo = false,
@@ -549,6 +549,7 @@ static const struct mtk_mmc_compatible mt7620_compat = {static const struct mtk_mmc_compatible mt6779_compat = { .clk_div_bits =12 , + .recheck_sdio_irq = false, .hs400_tune = false, .pad_tune_reg =MSDC_PAD_TUNE0 , .async_fifo = true,
@@ -2654,11 +2655,29 @@ static int msdc_runtime_resume(struct device *dev)msdc_restore_reg (host);return 0 ; } + +static int msdc_suspend (struct device *dev) +{ +struct mmc_host *mmc =dev_get_drvdata (dev); +int ret; + +if (mmc->caps2 &MMC_CAP2_CQE ) { + ret =cqhci_suspend (mmc); +if (ret) +return ret; + } + +return pm_runtime_force_suspend (dev); +} + +static int msdc_resume (struct device *dev) +{ +return pm_runtime_force_resume (dev); +}#endif static const struct dev_pm_ops msdc_dev_pm_ops = { - SET_SYSTEM_SLEEP_PM_OPS(pm_runtime_force_suspend, - pm_runtime_force_resume) + SET_SYSTEM_SLEEP_PM_OPS(msdc_suspend, msdc_resume)SET_RUNTIME_PM_OPS (msdc_runtime_suspend, msdc_runtime_resume,NULL ) };
drivers/mmc/host/sdhci-of-arasan.c +3 -0
@@ -1186,16 +1186,19 @@ static struct sdhci_arasan_of_data sdhci_arasan_versal_data = {static struct sdhci_arasan_of_data intel_keembay_emmc_data = { .soc_ctl_map = &intel_keembay_soc_ctl_map, .pdata = &sdhci_keembay_emmc_pdata, + .clk_ops = &arasan_clk_ops, };static struct sdhci_arasan_of_data intel_keembay_sd_data = { .soc_ctl_map = &intel_keembay_soc_ctl_map, .pdata = &sdhci_keembay_sd_pdata, + .clk_ops = &arasan_clk_ops, };static struct sdhci_arasan_of_data intel_keembay_sdio_data = { .soc_ctl_map = &intel_keembay_soc_ctl_map, .pdata = &sdhci_keembay_sdio_pdata, + .clk_ops = &arasan_clk_ops, };static const struct of_device_id sdhci_arasan_of_match[] = {
drivers/net/can/c_can/c_can.c +14 -4
@@ -1304,12 +1304,22 @@ int c_can_power_up(struct net_device *dev) time_after(time_out, jiffies))cpu_relax (); -if (time_after (jiffies, time_out)) -return -ETIMEDOUT ; +if (time_after (jiffies, time_out)) { + ret = -ETIMEDOUT ; + goto err_out; + } ret =c_can_start (dev); -if (!ret) -c_can_irq_control (priv, true); +if (ret) + goto err_out; + +c_can_irq_control (priv, true); + +return 0 ; + +err_out: +c_can_reset_ram (priv, false); +c_can_pm_runtime_put_sync (priv);return ret; }
drivers/net/can/kvaser_pciefd.c +3 -1
@@ -692,8 +692,10 @@ static int kvaser_pciefd_open(struct net_device *netdev)return err; err =kvaser_pciefd_bus_on (can); -if (err) +if (err) { +close_candev (netdev);return err; + }return 0 ; }
drivers/net/can/m_can/m_can.c +2 -0
@@ -1385,6 +1385,8 @@ static int m_can_dev_setup(struct m_can_classdev *m_can_dev) &m_can_data_bittiming_const_31X;break ;case 32 : +case 33 : +/* Support both MCAN version v3.2.x and v3.3.0 */ m_can_dev->can.bittiming_const = m_can_dev->bit_timing ? m_can_dev->bit_timing : &m_can_bittiming_const_31X;
drivers/net/can/m_can/tcan4x5x.c +3 -8
@@ -489,18 +489,18 @@ static int tcan4x5x_can_probe(struct spi_device *spi) spi->bits_per_word =32 ; ret =spi_setup (spi);if (ret) - goto out_clk; + goto out_m_can_class_free_dev; priv->regmap =devm_regmap_init (&spi->dev, &tcan4x5x_bus, &spi->dev, &tcan4x5x_regmap);if (IS_ERR (priv->regmap)) { ret =PTR_ERR (priv->regmap); - goto out_clk; + goto out_m_can_class_free_dev; } ret =tcan4x5x_power_enable (priv->power,1 );if (ret) - goto out_clk; + goto out_m_can_class_free_dev; ret =tcan4x5x_parse_config (mcan_class);if (ret)
@@ -519,11 +519,6 @@ static int tcan4x5x_can_probe(struct spi_device *spi) out_power:tcan4x5x_power_enable (priv->power,0 ); -out_clk: -if (!IS_ERR (mcan_class->cclk)) { -clk_disable_unprepare (mcan_class->cclk); -clk_disable_unprepare (mcan_class->hclk); - } out_m_can_class_free_dev:m_can_class_free_dev (mcan_class->net);dev_err (&spi->dev,"Probe failed, err=%d\n" , ret);
drivers/net/can/sja1000/sja1000.c +0 -1
@@ -474,7 +474,6 @@ static int sja1000_err(struct net_device *dev, uint8_t isrc, uint8_t status)netdev_dbg (dev,"arbitration lost interrupt\n" ); alc = priv->read_reg (priv,SJA1000_ALC ); priv->can.can_stats.arbitration_lost++; - stats->tx_errors++; cf->can_id |=CAN_ERR_LOSTARB ; cf->data[0 ] = alc &0x1f ; }
drivers/net/can/sun4i_can.c +0 -1
@@ -604,7 +604,6 @@ static int sun4i_can_err(struct net_device *dev, u8 isrc, u8 status)netdev_dbg (dev,"arbitration lost interrupt\n" ); alc =readl (priv->base +SUN4I_REG_STA_ADDR ); priv->can.can_stats.arbitration_lost++; - stats->tx_errors++;if (likely (skb)) { cf->can_id |=CAN_ERR_LOSTARB ; cf->data[0 ] = (alc >>8 ) &0x1f ;
drivers/net/ethernet/broadcom/Kconfig +1 -0
@@ -88,6 +88,7 @@ config BNX2 config CNIC tristate "QLogic CNIC support" depends on PCI && (IPV6 || IPV6=n) + depends on MMU select BNX2 select UIO help
drivers/net/ethernet/ibm/ibmvnic.c +65 -33
216 lines not on this page · raw message
drivers/net/ethernet/ibm/ibmvnic.h +1 -0
@@ -1084,6 +1084,7 @@ struct ibmvnic_adapter {struct delayed_work ibmvnic_delayed_reset;unsigned long resetting;bool napi_enabled, from_passive_init; +bool login_pending;bool failover_pending;bool force_reset_recovery;
drivers/net/wireless/intel/iwlwifi/fw/api/sta.h +5 -5
@@ -5,10 +5,9 @@* * GPL LICENSE SUMMARY * -* Copyright(c) 2012 - 2014 Intel Corporation. All rights reserved. * Copyright(c) 2013 - 2014 Intel Mobile Communications GmbH * Copyright(c) 2016 - 2017 Intel Deutschland GmbH -* Copyright(c) 2018 - 2019 Intel Corporation +* Copyright(c) 2012-2014, 2018 - 2020 Intel Corporation * * This program is free software; you can redistribute it and/or modify * it under the terms of version 2 of the GNU General Public License as
@@ -28,10 +27,9 @@* * BSD LICENSE * -* Copyright(c) 2012 - 2014 Intel Corporation. All rights reserved. * Copyright(c) 2013 - 2014 Intel Mobile Communications GmbH * Copyright(c) 2016 - 2017 Intel Deutschland GmbH -* Copyright(c) 2018 - 2019 Intel Corporation +* Copyright(c) 2012-2014, 2018 - 2020 Intel Corporation * All rights reserved. * * Redistribution and use in source and binary forms, with or without
@@ -128,7 +126,9 @@ enum iwl_sta_flags {STA_FLG_MAX_AGG_SIZE_256K = (5 <<STA_FLG_MAX_AGG_SIZE_SHIFT ),STA_FLG_MAX_AGG_SIZE_512K = (6 <<STA_FLG_MAX_AGG_SIZE_SHIFT ),STA_FLG_MAX_AGG_SIZE_1024K = (7 <<STA_FLG_MAX_AGG_SIZE_SHIFT ), -STA_FLG_MAX_AGG_SIZE_MSK = (7 <<STA_FLG_MAX_AGG_SIZE_SHIFT ), +STA_FLG_MAX_AGG_SIZE_2M = (8 <<STA_FLG_MAX_AGG_SIZE_SHIFT ), +STA_FLG_MAX_AGG_SIZE_4M = (9 <<STA_FLG_MAX_AGG_SIZE_SHIFT ), +STA_FLG_MAX_AGG_SIZE_MSK = (0xf <<STA_FLG_MAX_AGG_SIZE_SHIFT ),STA_FLG_AGG_MPDU_DENS_SHIFT =23 , STA_FLG_AGG_MPDU_DENS_2US = (4 << STA_FLG_AGG_MPDU_DENS_SHIFT),
drivers/net/wireless/intel/iwlwifi/iwl-config.h +2 -2
@@ -488,8 +488,8 @@ struct iwl_cfg {#define IWL_CFG_RF_ID_HR 0x7#define IWL_CFG_RF_ID_HR1 0x4 -#define IWL_CFG_NO_160 0x0 -#define IWL_CFG_160 0x1 +#define IWL_CFG_NO_160 0x1 +#define IWL_CFG_160 0x0#define IWL_CFG_CORES_BT 0x0#define IWL_CFG_CORES_BT_GNSS 0x5
drivers/net/wireless/intel/iwlwifi/iwl-csr.h +10 -0
@@ -147,6 +147,16 @@#define CSR_MAC_SHADOW_REG_CTL2 (CSR_BASE + 0x0AC)#define CSR_MAC_SHADOW_REG_CTL2_RX_WAKE 0xFFFF +/* LTR control (since IWL_DEVICE_FAMILY_22000) */ +#define CSR_LTR_LONG_VAL_AD (CSR_BASE + 0x0D4) +#define CSR_LTR_LONG_VAL_AD_NO_SNOOP_REQ 0x80000000 +#define CSR_LTR_LONG_VAL_AD_NO_SNOOP_SCALE 0x1c000000 +#define CSR_LTR_LONG_VAL_AD_NO_SNOOP_VAL 0x03ff0000 +#define CSR_LTR_LONG_VAL_AD_SNOOP_REQ 0x00008000 +#define CSR_LTR_LONG_VAL_AD_SNOOP_SCALE 0x00001c00 +#define CSR_LTR_LONG_VAL_AD_SNOOP_VAL 0x000003ff +#define CSR_LTR_LONG_VAL_AD_SCALE_USEC 2 +/* GIO Chicken Bits (PCI Express bus link power management) */ #define CSR_GIO_CHICKEN_BITS (CSR_BASE+0x100)
drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c +1 -1
@@ -3057,7 +3057,7 @@ static int iwl_mvm_mac_sta_state(struct ieee80211_hw *hw,/* this would be a mac80211 bug ... but don't crash */ if (WARN_ON_ONCE (!mvmvif->phy_ctxt)) -return -EINVAL ; +return test_bit (IWL_MVM_STATUS_HW_RESTART_REQUESTED , &mvm->status) ?0 : -EINVAL ;/* * If we are in a STA removal flow and in DQA mode:
drivers/net/wireless/intel/iwlwifi/mvm/sta.c +18 -0
@@ -196,6 +196,7 @@ int iwl_mvm_sta_send_to_fw(struct iwl_mvm *mvm, struct ieee80211_sta *sta, mpdu_dens = sta->ht_cap.ampdu_density; } +if (sta->vht_cap.vht_supported) { agg_size = sta->vht_cap.cap &IEEE80211_VHT_CAP_MAX_A_MPDU_LENGTH_EXPONENT_MASK ;
@@ -205,6 +206,23 @@ int iwl_mvm_sta_send_to_fw(struct iwl_mvm *mvm, struct ieee80211_sta *sta, agg_size = sta->ht_cap.ampdu_factor; } +/* D6.0 10.12.2 A-MPDU length limit rules +* A STA indicates the maximum length of the A-MPDU preEOF padding +* that it can receive in an HE PPDU in the Maximum A-MPDU Length +* Exponent field in its HT Capabilities, VHT Capabilities, +* and HE 6 GHz Band Capabilities elements (if present) and the +* Maximum AMPDU Length Exponent Extension field in its HE +* Capabilities element +*/ +if (sta->he_cap.has_he) + agg_size +=u8_get_bits (sta->he_cap.he_cap_elem.mac_cap_info[3 ], +IEEE80211_HE_MAC_CAP3_MAX_AMPDU_LEN_EXP_MASK ); + +/* Limit to max A-MPDU supported by FW */ +if (agg_size > (STA_FLG_MAX_AGG_SIZE_4M >>STA_FLG_MAX_AGG_SIZE_SHIFT )) + agg_size = (STA_FLG_MAX_AGG_SIZE_4M >> +STA_FLG_MAX_AGG_SIZE_SHIFT ); + add_sta_cmd.station_flags |=cpu_to_le32 (agg_size <<STA_FLG_MAX_AGG_SIZE_SHIFT ); add_sta_cmd.station_flags |=
drivers/net/wireless/intel/iwlwifi/pcie/ctxt-info-gen3.c +20 -0
@@ -252,6 +252,26 @@ int iwl_pcie_ctxt_info_gen3_init(struct iwl_trans *trans,iwl_set_bit (trans,CSR_CTXT_INFO_BOOT_CTRL ,CSR_AUTO_FUNC_BOOT_ENA ); + +if (trans->trans_cfg->device_family ==IWL_DEVICE_FAMILY_AX210 ) { +/* +* The firmware initializes this again later (to a smaller +* value), but for the boot process initialize the LTR to +* ~250 usec. +*/ +u32 val =CSR_LTR_LONG_VAL_AD_NO_SNOOP_REQ | +u32_encode_bits (CSR_LTR_LONG_VAL_AD_SCALE_USEC , +CSR_LTR_LONG_VAL_AD_NO_SNOOP_SCALE ) | +u32_encode_bits (250 , +CSR_LTR_LONG_VAL_AD_NO_SNOOP_VAL ) | +CSR_LTR_LONG_VAL_AD_SNOOP_REQ | +u32_encode_bits (CSR_LTR_LONG_VAL_AD_SCALE_USEC , +CSR_LTR_LONG_VAL_AD_SNOOP_SCALE ) | +u32_encode_bits (250 ,CSR_LTR_LONG_VAL_AD_SNOOP_VAL ); + +iwl_write32 (trans,CSR_LTR_LONG_VAL_AD , val); + } +if (trans->trans_cfg->device_family >=IWL_DEVICE_FAMILY_AX210 )iwl_write_umac_prph (trans,UREG_CPU_INIT_RUN ,1 );else
drivers/net/wireless/intel/iwlwifi/pcie/trans.c +27 -9
@@ -2155,18 +2155,36 @@ static int iwl_trans_pcie_read_mem(struct iwl_trans *trans, u32 addr, void *buf, int dwords) {unsigned long flags; -int offs, ret =0 ; +int offs =0 ;u32 *vals = buf; -if (iwl_trans_grab_nic_access (trans, &flags)) { -iwl_write32 (trans,HBUS_TARG_MEM_RADDR , addr); -for (offs =0 ; offs < dwords; offs++) - vals[offs] =iwl_read32 (trans,HBUS_TARG_MEM_RDAT ); -iwl_trans_release_nic_access (trans, &flags); - }else { - ret = -EBUSY ; +while (offs < dwords) { +/* limit the time we spin here under lock to 1/2s */ +ktime_t timeout =ktime_add_us (ktime_get (),500 *USEC_PER_MSEC ); + +if (iwl_trans_grab_nic_access (trans, &flags)) { +iwl_write32 (trans,HBUS_TARG_MEM_RADDR , + addr +4 * offs); + +while (offs < dwords) { + vals[offs] =iwl_read32 (trans, +HBUS_TARG_MEM_RDAT ); + offs++; + +/* calling ktime_get is expensive so +* do it once in 128 reads +*/ +if (offs %128 ==0 &&ktime_after (ktime_get (), + timeout)) +break ; + } +iwl_trans_release_nic_access (trans, &flags); + }else { +return -EBUSY ; + } } -return ret; + +return 0 ; } static int iwl_trans_pcie_write_mem(struct iwl_trans *trans, u32 addr,
drivers/phy/broadcom/phy-brcm-usb-init-synopsys.c +0 -5
@@ -270,11 +270,6 @@ static void usb_init_common_7211b0(struct brcm_usb_init_params *params) reg |= params->mode <<USB_PHY_UTMI_CTL_1_PHY_MODE_SHIFT ;brcm_usb_writel (reg, usb_phy +USB_PHY_UTMI_CTL_1 ); -/* Fix the incorrect default */ - reg =brcm_usb_readl (ctrl +USB_CTRL_SETUP ); - reg &= ~USB_CTRL_SETUP_tca_drv_sel_MASK; -brcm_usb_writel (reg, ctrl +USB_CTRL_SETUP ); -usb_init_common (params);/*
drivers/pinctrl/intel/pinctrl-jasperlake.c +1 -1
@@ -16,7 +16,7 @@#define JSL_PAD_OWN 0x020#define JSL_PADCFGLOCK 0x080 -#define JSL_HOSTSW_OWN 0x0b0 +#define JSL_HOSTSW_OWN 0x0c0#define JSL_GPI_IS 0x100#define JSL_GPI_IE 0x120
drivers/pinctrl/pinctrl-amd.c +0 -7
@@ -429,7 +429,6 @@ static int amd_gpio_irq_set_type(struct irq_data *d, unsigned int type) pin_reg &= ~BIT (LEVEL_TRIG_OFF ); pin_reg &= ~(ACTIVE_LEVEL_MASK <<ACTIVE_LEVEL_OFF ); pin_reg |=ACTIVE_HIGH <<ACTIVE_LEVEL_OFF ; - pin_reg |=DB_TYPE_REMOVE_GLITCH <<DB_CNTRL_OFF ;irq_set_handler_locked (d, handle_edge_irq);break ;
@@ -437,7 +436,6 @@ static int amd_gpio_irq_set_type(struct irq_data *d, unsigned int type) pin_reg &= ~BIT (LEVEL_TRIG_OFF ); pin_reg &= ~(ACTIVE_LEVEL_MASK <<ACTIVE_LEVEL_OFF ); pin_reg |=ACTIVE_LOW <<ACTIVE_LEVEL_OFF ; - pin_reg |=DB_TYPE_REMOVE_GLITCH <<DB_CNTRL_OFF ;irq_set_handler_locked (d, handle_edge_irq);break ;
@@ -445,7 +443,6 @@ static int amd_gpio_irq_set_type(struct irq_data *d, unsigned int type) pin_reg &= ~BIT (LEVEL_TRIG_OFF ); pin_reg &= ~(ACTIVE_LEVEL_MASK <<ACTIVE_LEVEL_OFF ); pin_reg |=BOTH_EADGE <<ACTIVE_LEVEL_OFF ; - pin_reg |=DB_TYPE_REMOVE_GLITCH <<DB_CNTRL_OFF ;irq_set_handler_locked (d, handle_edge_irq);break ;
@@ -453,8 +450,6 @@ static int amd_gpio_irq_set_type(struct irq_data *d, unsigned int type) pin_reg |=LEVEL_TRIGGER <<LEVEL_TRIG_OFF ; pin_reg &= ~(ACTIVE_LEVEL_MASK <<ACTIVE_LEVEL_OFF ); pin_reg |=ACTIVE_HIGH <<ACTIVE_LEVEL_OFF ; - pin_reg &= ~(DB_CNTRl_MASK <<DB_CNTRL_OFF ); - pin_reg |=DB_TYPE_PRESERVE_LOW_GLITCH <<DB_CNTRL_OFF ;irq_set_handler_locked (d, handle_level_irq);break ;
@@ -462,8 +457,6 @@ static int amd_gpio_irq_set_type(struct irq_data *d, unsigned int type) pin_reg |=LEVEL_TRIGGER <<LEVEL_TRIG_OFF ; pin_reg &= ~(ACTIVE_LEVEL_MASK <<ACTIVE_LEVEL_OFF ); pin_reg |=ACTIVE_LOW <<ACTIVE_LEVEL_OFF ; - pin_reg &= ~(DB_CNTRl_MASK <<DB_CNTRL_OFF ); - pin_reg |=DB_TYPE_PRESERVE_HIGH_GLITCH <<DB_CNTRL_OFF ;irq_set_handler_locked (d, handle_level_irq);break ;
drivers/platform/x86/acer-wmi.c +1 -0
@@ -111,6 +111,7 @@ static const struct key_entry acer_wmi_keymap[] __initconst = { {KE_KEY, 0x64, {KEY_SWITCHVIDEOMODE} }, /* Display Switch */ {KE_IGNORE, 0x81, {KEY_SLEEP} }, {KE_KEY, 0x82, {KEY_TOUCHPAD_TOGGLE} }, /* Touch Pad Toggle */ + {KE_IGNORE, 0x84, {KEY_KBDILLUMTOGGLE} }, /* Automatic Keyboard background light toggle */ {KE_KEY, KEY_TOUCHPAD_ON, {KEY_TOUCHPAD_ON} }, {KE_KEY, KEY_TOUCHPAD_OFF, {KEY_TOUCHPAD_OFF} }, {KE_IGNORE, 0x83, {KEY_TOUCHPAD_TOGGLE} },
drivers/platform/x86/intel-vbtn.c +6 -0
@@ -206,6 +206,12 @@ static const struct dmi_system_id dmi_switches_allow_list[] = { DMI_MATCH(DMI_PRODUCT_NAME, "HP Stream x360 Convertible PC 11"), }, }, + { + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Hewlett-Packard"), + DMI_MATCH(DMI_PRODUCT_NAME, "HP Pavilion 13 x360 PC"), + }, + }, {}/* Array terminator */ };
drivers/platform/x86/thinkpad_acpi.c +11 -1
@@ -3214,7 +3214,14 @@ static int hotkey_init_tablet_mode(void) in_tablet_mode =hotkey_gmms_get_tablet_mode (res, &has_tablet_mode); -if (has_tablet_mode) +/* +* The Yoga 11e series has 2 accelerometers described by a +* BOSC0200 ACPI node. This setup relies on a Windows service +* which calls special ACPI methods on this node to report +* the laptop/tent/tablet mode to the EC. The bmc150 iio driver +* does not support this, so skip the hotkey on these models. +*/ +if (has_tablet_mode && !acpi_dev_present ("BOSC0200" ,"1" ,-1 )) tp_features.hotkey_tablet =TP_HOTKEY_TABLET_USES_GMMS ; type ="GMMS" ; }else if (acpi_evalf (hkey_handle, &res,"MHKG" ,"qd" )) {
@@ -8769,6 +8776,8 @@ static const struct tpacpi_quirk fan_quirk_table[] __initconst = {TPACPI_Q_LNV3 ('N' ,'2' ,'C' ,TPACPI_FAN_2CTL ),/* P52 / P72 */ TPACPI_Q_LNV3 ('N' ,'2' ,'E' ,TPACPI_FAN_2CTL ),/* P1 / X1 Extreme (1st gen) */ TPACPI_Q_LNV3 ('N' ,'2' ,'O' ,TPACPI_FAN_2CTL ),/* P1 / X1 Extreme (2nd gen) */ +TPACPI_Q_LNV3 ('N' ,'2' ,'V' ,TPACPI_FAN_2CTL ),/* P1 / X1 Extreme (3nd gen) */ + TPACPI_Q_LNV3('N', '3', '0', TPACPI_FAN_2CTL), /* P15 (1st gen) / P15v (1st gen) */ };static int __init fan_init (struct ibm_init_struct *iibm)
@@ -9696,6 +9705,7 @@ static const struct tpacpi_quirk battery_quirk_table[] __initconst = {TPACPI_Q_LNV3 ('R' ,'0' ,'B' , true),/* Thinkpad 11e gen 3 */ TPACPI_Q_LNV3 ('R' ,'0' ,'C' , true),/* Thinkpad 13 */ TPACPI_Q_LNV3 ('R' ,'0' ,'J' , true),/* Thinkpad 13 gen 2 */ + TPACPI_Q_LNV3('R', '0', 'K', true), /* Thinkpad 11e gen 4 celeron BIOS */ };static int __init tpacpi_battery_init (struct ibm_init_struct *ibm)
drivers/platform/x86/touchscreen_dmi.c +50 -0
74 lines not on this page · raw message
drivers/scsi/be2iscsi/be_main.c +2 -2
@@ -3020,7 +3020,6 @@ static int beiscsi_create_eqs(struct beiscsi_hba *phba, goto create_eq_error; } - mem->dma = paddr; mem->va = eq_vaddress; ret =be_fill_queue (eq, phba->params.num_eq_entries,sizeof (struct be_eq_entry ), eq_vaddress);
@@ -3030,6 +3029,7 @@ static int beiscsi_create_eqs(struct beiscsi_hba *phba, goto create_eq_error; } + mem->dma = paddr; ret =beiscsi_cmd_eq_create (&phba->ctrl, eq,BEISCSI_EQ_DELAY_DEF );if (ret) {
@@ -3086,7 +3086,6 @@ static int beiscsi_create_cqs(struct beiscsi_hba *phba, goto create_cq_error; } - mem->dma = paddr; ret =be_fill_queue (cq, phba->params.num_cq_entries,sizeof (struct sol_cqe ), cq_vaddress);if (ret) {
@@ -3096,6 +3095,7 @@ static int beiscsi_create_cqs(struct beiscsi_hba *phba, goto create_cq_error; } + mem->dma = paddr; ret =beiscsi_cmd_cq_create (&phba->ctrl, cq, eq, false, false,0 );if (ret) {
drivers/scsi/storvsc_drv.c +3 -1
@@ -1952,8 +1952,10 @@ static int storvsc_probe(struct hv_device *device,alloc_ordered_workqueue ("storvsc_error_wq_%d" ,WQ_MEM_RECLAIM , host->host_no); -if (!host_dev->handle_error_wq) +if (!host_dev->handle_error_wq) { + ret = -ENOMEM ; goto err_out2; + }INIT_WORK (&host_dev->host_scan_work, storvsc_host_scan);/* Register the HBA and start the scsi bus scan */ ret =scsi_add_host (host, &device->device);
drivers/scsi/ufs/ufshcd.c +22 -9
@@ -1279,8 +1279,15 @@ static int ufshcd_devfreq_target(struct device *dev, }spin_unlock_irqrestore (hba->host->host_lock, irq_flags); +pm_runtime_get_noresume (hba->dev); +if (!pm_runtime_active (hba->dev)) { +pm_runtime_put_noidle (hba->dev); + ret = -EAGAIN ; + goto out; + } start =ktime_get (); ret =ufshcd_devfreq_scale (hba, scale_up); +pm_runtime_put (hba->dev); trace_ufshcd_profile_clk_scaling(dev_name(hba->dev), (scale_up ? "up" : "down"),
@@ -3163,13 +3170,19 @@ int ufshcd_read_desc_param(struct ufs_hba *hba,/* Get the length of descriptor */ ufshcd_map_desc_id_to_length (hba, desc_id, &buff_len);if (!buff_len) { -dev_err (hba->dev,"%s: Failed to get desc length" , __func__); +dev_err (hba->dev,"%s: Failed to get desc length\n" , __func__); +return -EINVAL ; + } + +if (param_offset >= buff_len) { +dev_err (hba->dev,"%s: Invalid offset 0x%x in descriptor IDN 0x%x, length 0x%x\n" , + __func__, param_offset, desc_id, buff_len);return -EINVAL ; }/* Check whether we need temp memory */ if (param_offset !=0 || param_size < buff_len) { - desc_buf =kmalloc (buff_len,GFP_KERNEL ); + desc_buf =kzalloc (buff_len,GFP_KERNEL );if (!desc_buf)return -ENOMEM ; }else {
@@ -3183,14 +3196,14 @@ int ufshcd_read_desc_param(struct ufs_hba *hba, desc_buf, &buff_len);if (ret) { -dev_err (hba->dev,"%s: Failed reading descriptor. desc_id %d, desc_index %d, param_offset %d, ret %d" , +dev_err (hba->dev,"%s: Failed reading descriptor. desc_id %d, desc_index %d, param_offset %d, ret %d\n" , __func__, desc_id, desc_index, param_offset, ret); goto out; }/* Sanity check */ if (desc_buf[QUERY_DESC_DESC_TYPE_OFFSET ] != desc_id) { -dev_err (hba->dev,"%s: invalid desc_id %d in descriptor header" , +dev_err (hba->dev,"%s: invalid desc_id %d in descriptor header\n" , __func__, desc_buf[QUERY_DESC_DESC_TYPE_OFFSET ]); ret = -EINVAL ; goto out;
@@ -3200,12 +3213,12 @@ int ufshcd_read_desc_param(struct ufs_hba *hba, buff_len = desc_buf[QUERY_DESC_LENGTH_OFFSET ];ufshcd_update_desc_length (hba, desc_id, desc_index, buff_len); -/* Check wherher we will not copy more data, than available */ -if (is_kmalloc && (param_offset + param_size) > buff_len) - param_size = buff_len - param_offset; - -if (is_kmalloc) +if (is_kmalloc) { +/* Make sure we don't copy more data than available */ +if (param_offset + param_size > buff_len) + param_size = buff_len - param_offset;memcpy (param_read_buf, &desc_buf[param_offset], param_size); + } out:if (is_kmalloc)kfree (desc_buf);
drivers/soc/fsl/dpio/dpio-driver.c +1 -4
@@ -95,7 +95,6 @@ static int register_dpio_irq_handlers(struct fsl_mc_device *dpio_dev, int cpu) {int error;struct fsl_mc_device_irq *irq; -cpumask_t mask; irq = dpio_dev->irqs[0 ]; error = devm_request_irq(&dpio_dev->dev,
@@ -112,9 +111,7 @@ static int register_dpio_irq_handlers(struct fsl_mc_device *dpio_dev, int cpu) }/* set the affinity hint */ -cpumask_clear (&mask); -cpumask_set_cpu (cpu, &mask); -if (irq_set_affinity_hint (irq->msi_desc->irq, &mask)) +if (irq_set_affinity_hint (irq->msi_desc->irq,cpumask_of (cpu)))dev_err (&dpio_dev->dev,"irq_set_affinity failed irq %d cpu %d\n" , irq->msi_desc->irq, cpu);
drivers/spi/spi-nxp-fspi.c +7 -0
@@ -991,6 +991,7 @@ static int nxp_fspi_probe(struct platform_device *pdev)struct resource *res;struct nxp_fspi *f;int ret; +u32 reg; ctlr =spi_alloc_master (&pdev->dev,sizeof (*f));if (!ctlr)
@@ -1017,6 +1018,12 @@ static int nxp_fspi_probe(struct platform_device *pdev) goto err_put_ctrl; } +/* Clear potential interrupts */ + reg =fspi_readl (f, f->iobase +FSPI_INTR ); +if (reg) +fspi_writel (f, reg, f->iobase +FSPI_INTR ); + +/* find the resources - controller memory mapped space */ res =platform_get_resource_byname (pdev,IORESOURCE_MEM ,"fspi_mmap" );if (!res) {
drivers/usb/host/ohci-omap.c +2 -2
@@ -91,14 +91,14 @@ static int omap_ohci_transceiver_power(struct ohci_omap_priv *priv, int on) | ((1 << 5/*usb1*/) | (1 << 3/*usb2*/)), INNOVATOR_FPGA_CAM_USB_CONTROL); else if (priv->power) - gpiod_set_value(priv->power, 0); + gpiod_set_value_cansleep(priv->power, 0); }else {if (machine_is_omap_innovator () &&cpu_is_omap1510 ())__raw_writeb (__raw_readb (INNOVATOR_FPGA_CAM_USB_CONTROL ) & ~((1 <<5 /*usb1*/ ) | (1 <<3 /*usb2*/ )),INNOVATOR_FPGA_CAM_USB_CONTROL );else if (priv->power) -gpiod_set_value (priv->power,1 ); +gpiod_set_value_cansleep (priv->power,1 ); }return 0 ;
drivers/vdpa/Kconfig +1 -0
@@ -32,6 +32,7 @@ config IFCVF config MLX5_VDPA bool + select VHOST_IOTLB help Support library for Mellanox VDPA drivers. Provides code that is common for all types of VDPA drivers. The following drivers are planned:
drivers/vhost/vdpa.c +62 -18
144 lines not on this page · raw message
drivers/xen/grant-table.c +123 -0
129 lines not on this page · raw message
drivers/xen/unpopulated-alloc.c +11 -9
@@ -12,7 +12,7 @@#include <xen/xen.h> static DEFINE_MUTEX (list_lock); -static LIST_HEAD (page_list); +static struct page *page_list;static unsigned int list_count;static int fill_list (unsigned int nr_pages)
@@ -75,7 +75,8 @@ static int fill_list(unsigned int nr_pages)struct page *pg =virt_to_page (vaddr +PAGE_SIZE * i);BUG_ON (!virt_addr_valid (vaddr +PAGE_SIZE * i)); -list_add (&pg->lru, &page_list); + pg->zone_device_data = page_list; + page_list = pg; list_count++; }
@@ -101,12 +102,10 @@ int xen_alloc_unpopulated_pages(unsigned int nr_pages, struct page **pages) }for (i =0 ; i < nr_pages; i++) { -struct page *pg =list_first_entry_or_null (&page_list, - struct page, - lru); +struct page *pg = page_list;BUG_ON (!pg); -list_del (&pg->lru); + page_list = pg->zone_device_data; list_count--; pages[i] = pg;
@@ -117,7 +116,8 @@ int xen_alloc_unpopulated_pages(unsigned int nr_pages, struct page **pages)unsigned int j;for (j =0 ; j <= i; j++) { -list_add (&pages[j]->lru, &page_list); + pages[j]->zone_device_data = page_list; + page_list = pages[j]; list_count++; } goto out;
@@ -143,7 +143,8 @@ void xen_free_unpopulated_pages(unsigned int nr_pages, struct page **pages)mutex_lock (&list_lock);for (i =0 ; i < nr_pages; i++) { -list_add (&pages[i]->lru, &page_list); + pages[i]->zone_device_data = page_list; + page_list = pages[i]; list_count++; }mutex_unlock (&list_lock);
@@ -172,7 +173,8 @@ static int __init init(void)struct page *pg =pfn_to_page (xen_extra_mem[i].start_pfn + j); -list_add (&pg->lru, &page_list); + pg->zone_device_data = page_list; + page_list = pg; list_count++; } }
drivers/xen/xen-scsiback.c +11 -49
114 lines not on this page · raw message
fs/btrfs/ctree.h +4 -1
@@ -869,7 +869,10 @@ struct btrfs_fs_info {*/ struct ulist *qgroup_ulist; -/* protect user change for quota operations */ +/* +* Protect user change for quota operations. If a transaction is needed, +* it must be started before locking this lock. +*/ struct mutex qgroup_ioctl_lock;/* list of dirty qgroups to be written at next commit */
fs/btrfs/qgroup.c +58 -8
172 lines not on this page · raw message
fs/proc/task_mmu.c +6 -2
@@ -1541,11 +1541,15 @@ static ssize_t pagemap_read(struct file *file, char __user *buf, src = *ppos; svpfn = src /PM_ENTRY_BYTES ; - start_vaddr = svpfn <<PAGE_SHIFT ; end_vaddr = mm->task_size;/* watch out for wraparound */ -if (svpfn > mm->task_size >>PAGE_SHIFT ) + start_vaddr = end_vaddr; +if (svpfn <= (ULONG_MAX >>PAGE_SHIFT )) + start_vaddr =untagged_addr (svpfn <<PAGE_SHIFT ); + +/* Ensure the address is inside the task */ +if (start_vaddr > mm->task_size) start_vaddr = end_vaddr;/*
fs/zonefs/super.c +8 -6
@@ -628,21 +628,23 @@ static ssize_t zonefs_file_dio_append(struct kiocb *iocb, struct iov_iter *from) bio->bi_opf |=REQ_FUA ; ret =bio_iov_iter_get_pages (bio, from); -if (unlikely (ret)) { -bio_io_error (bio); -return ret; - } +if (unlikely (ret)) + goto out_release; + size = bio->bi_iter.bi_size; -task_io_account_write (ret); +task_io_account_write (size);if (iocb->ki_flags &IOCB_HIPRI )bio_set_polled (bio, iocb); ret =submit_bio_wait (bio); +zonefs_file_write_dio_end_io (iocb, size, ret,0 ); + +out_release: +bio_release_pages (bio, false);bio_put (bio); -zonefs_file_write_dio_end_io (iocb, size, ret,0 );if (ret >=0 ) { iocb->ki_pos += size;return size;
include/asm-generic/barrier.h +1 -0
@@ -13,6 +13,7 @@#ifndef __ASSEMBLY__ +#include <linux/compiler.h> #include <asm/rwonce.h> #ifndef nop
include/linux/build_bug.h +5 -0
@@ -77,4 +77,9 @@#define static_assert (expr, ...) __static_assert(expr, ##__VA_ARGS__, #expr)#define __static_assert (expr, msg, ...) _Static_assert(expr, msg) +#ifdef __GENKSYMS__ +/* genksyms gets confused by _Static_assert */ +#define _Static_assert (expr, ...) +#endif +#endif /* _LINUX_BUILD_BUG_H */
include/linux/compiler-clang.h +0 -6
@@ -52,12 +52,6 @@#define COMPILER_HAS_GENERIC_BUILTIN_OVERFLOW 1#endif -/* The following are for compatibility with GCC, from compiler-gcc.h, -* and may be redefined here because they should not be shared with other -* compilers, like ICC. -*/ -#define barrier () __asm__ __volatile__("" : : : "memory")
Lines of this file are not shown. View the raw message.
kernel/kprobes.c +25 -16
41 lines not on this page · raw message
mm/zsmalloc.c +0 -48
48 lines not on this page · raw message
The rest of this diff is not shown. View the raw message.
Part of the diff is not shown here. View the raw message.