Linux 5.4.162
Greg Kroah-Hartman
maintainerI'm announcing the release of the 5.4.162 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
------------
Makefile | 2 arch/arm/boot/dts/bcm-nsp.dtsi | 4 arch/arm/boot/dts/ls1021a-tsn.dts | 2 arch/arm/boot/dts/ls1021a.dtsi | 66 +++---- arch/arm/boot/dts/omap-gpmc-smsc9221.dtsi | 2 arch/arm/boot/dts/omap3-overo-tobiduo-common.dtsi | 2 arch/arm64/boot/dts/freescale/fsl-ls1088a.dtsi | 16 - arch/arm64/boot/dts/freescale/fsl-ls208xa.dtsi | 16 - arch/arm64/boot/dts/hisilicon/hi3660.dtsi | 4 arch/arm64/boot/dts/hisilicon/hi6220.dtsi | 2 arch/arm64/boot/dts/qcom/msm8998.dtsi | 20 +- arch/arm64/boot/dts/xilinx/zynqmp-zc1751-xm016-dc2.dts | 4 arch/arm64/boot/dts/xilinx/zynqmp.dtsi | 4 arch/arm64/kernel/vdso32/Makefile | 3 arch/hexagon/lib/io.c | 4 arch/mips/Kconfig | 3 arch/mips/bcm63xx/clk.c | 6 arch/mips/generic/yamon-dt.c | 2 arch/mips/lantiq/clk.c | 6 arch/mips/sni/time.c | 4 arch/powerpc/boot/dts/charon.dts | 2 arch/powerpc/boot/dts/digsy_mtc.dts | 2 arch/powerpc/boot/dts/lite5200.dts | 2 arch/powerpc/boot/dts/lite5200b.dts | 2 arch/powerpc/boot/dts/media5200.dts | 2 arch/powerpc/boot/dts/mpc5200b.dtsi | 2 arch/powerpc/boot/dts/o2d.dts | 2 arch/powerpc/boot/dts/o2d.dtsi | 2 arch/powerpc/boot/dts/o2dnt2.dts | 2 arch/powerpc/boot/dts/o3dnt.dts | 2 arch/powerpc/boot/dts/pcm032.dts | 2 arch/powerpc/boot/dts/tqm5200.dts | 2 arch/powerpc/kvm/book3s_hv_rmhandlers.S | 4 arch/powerpc/sysdev/dcr-low.S | 2 arch/s390/include/asm/kexec.h | 6 arch/s390/kernel/ipl.c | 3 arch/s390/kernel/machine_kexec_file.c | 18 + arch/sh/Kconfig.debug | 1 arch/sh/include/asm/sfp-machine.h | 8 arch/sh/kernel/cpu/sh4a/smp-shx3.c | 5 arch/sh/math-emu/math.c | 103 ---------- arch/x86/events/intel/uncore_snbep.c | 4 arch/x86/hyperv/hv_init.c | 3 drivers/base/firmware_loader/main.c | 13 - drivers/clk/clk-ast2600.c | 12 - drivers/clk/imx/clk-imx6ul.c | 2 drivers/clk/ingenic/cgu.c | 6 drivers/clk/qcom/gcc-msm8996.c | 15 - drivers/gpu/drm/amd/amdgpu/amdgpu_connectors.c | 1 drivers/gpu/drm/i915/display/intel_dp.c | 11 + drivers/gpu/drm/nouveau/nouveau_drm.c | 2 drivers/gpu/drm/nouveau/nvkm/engine/disp/hdmigv100.c | 1 drivers/gpu/drm/udl/udl_connector.c | 2 drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_core.c | 6 drivers/infiniband/hw/bnxt_re/ib_verbs.c | 12 - drivers/net/ethernet/broadcom/bnx2x/bnx2x_init_ops.h | 4 drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c | 4 drivers/net/ethernet/intel/i40e/i40e.h | 2 drivers/net/ethernet/intel/i40e/i40e_main.c | 160 +++++++++++------ drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c | 70 ++----- drivers/net/ethernet/intel/iavf/iavf_ethtool.c | 13 - drivers/net/ethernet/intel/iavf/iavf_main.c | 14 - drivers/net/ethernet/intel/ice/ice_main.c | 3 drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c | 14 - drivers/net/tun.c | 5 drivers/platform/x86/hp_accel.c | 2 drivers/scsi/advansys.c | 4 drivers/scsi/lpfc/lpfc_sli.c | 1 drivers/scsi/scsi_sysfs.c | 30 ++- drivers/sh/maple/maple.c | 5 drivers/target/target_core_alua.c | 1 drivers/target/target_core_device.c | 2 drivers/target/target_core_internal.h | 1 drivers/target/target_core_transport.c | 76 +++++--- drivers/tty/tty_buffer.c | 3 drivers/usb/host/max3421-hcd.c | 25 -- drivers/usb/host/ohci-tmio.c | 2 drivers/usb/musb/tusb6010.c | 5 drivers/usb/typec/tps6598x.c | 2 drivers/video/console/sticon.c | 12 - fs/btrfs/async-thread.c | 14 + fs/udf/dir.c | 32 +++ fs/udf/namei.c | 3 fs/udf/super.c | 2 include/asm-generic/tlb.h | 55 ++++- include/linux/virtio_net.h | 7 include/rdma/rdma_netlink.h | 2 include/sound/hdaudio_ext.h | 2 include/target/target_core_base.h | 6 include/trace/events/f2fs.h | 12 - ipc/util.c | 6 kernel/events/core.c | 10 - kernel/sched/core.c | 3 kernel/trace/trace_events_hist.c | 41 +++- mm/hugetlb.c | 23 ++ mm/slab.h | 2 net/batman-adv/fragmentation.c | 26 +- net/batman-adv/hard-interface.c | 3 net/nfc/core.c | 32 +-- net/nfc/nci/core.c | 11 - net/sched/act_mirred.c | 11 - net/wireless/util.c | 1 sound/core/Makefile | 2 sound/hda/ext/hdac_ext_stream.c | 46 ++-- sound/hda/hdac_stream.c | 4 sound/isa/Kconfig | 2 sound/isa/gus/gus_dma.c | 2 sound/pci/Kconfig | 1 sound/soc/codecs/nau8824.c | 40 ++++ sound/soc/soc-dapm.c | 29 ++- sound/soc/sof/intel/hda-dai.c | 7 tools/perf/bench/futex-lock-pi.c | 1 tools/perf/bench/futex-requeue.c | 1 tools/perf/bench/futex-wake-parallel.c | 1 tools/perf/bench/futex-wake.c | 1 tools/perf/tests/shell/record+zstd_comp_decomp.sh | 2 tools/perf/util/bpf-event.c | 6 tools/perf/util/env.c | 5 tools/perf/util/env.h | 2 119 files changed, 805 insertions(+), 547 deletions(-)
Alexander Antonov (2):
perf/x86/intel/uncore: Fix filter_tid mask for CHA events on Skylake Server perf/x86/intel/uncore: Fix IIO event constraints for Skylake Server
Alexander Mikhalitsyn (1):
ipc: WARN if trying to remove ipc object which is absent
Amit Kumar Mahapatra (1):
arm64: zynqmp: Do not duplicate flash partition label property
Anatolij Gustschin (1):
powerpc/5200: dts: fix memory node unit name
AngeloGioacchino Del Regno (1):
arm64: dts: qcom: msm8998: Fix CPU/L2 idle state latency and residency
Baoquan He (1):
s390/kexec: fix memory leak of ipl report buffer
Bart Van Assche (1):
MIPS: sni: Fix the build
Chengfeng Ye (1):
ALSA: gus: fix null pointer dereference on pointer block
Christophe JAILLET (1):
platform/x86: hp_accel: Fix an error handling path in 'lis3lv02d_probe()'
Colin Ian King (1):
MIPS: generic/yamon-dt: fix uninitialized variable error
Dmitry Baryshkov (1):
clk: qcom: gcc-msm8996: Drop (again) gcc_aggre1_pnoc_ahb_clk
Eryk Rybak (3):
i40e: Fix correct max_pkt_size on VF RX queue
i40e: Fix changing previously set num_queue_pairs for PFs
i40e: Fix ping is lost after configuring ADq on VF
Gao Xiang (1):
f2fs: fix up f2fs_lookup tracepoints
Greg Kroah-Hartman (2):
Revert "net: mvpp2: disable force link UP during port init procedure" Linux 5.4.162
Greg Thelen (1):
perf/core: Avoid put_page() when GUP fails
Grzegorz Szczurek (1):
i40e: Fix display error code in dmesg
Guanghui Feng (1):
tty: tty_buffer: Fix the softlockup issue in flush_to_ldisc
Guo Zhi (1):
scsi: advansys: Fix kernel pointer leak
Hans Verkuil (1):
drm/nouveau: hdmigv100.c: fix corrupted HDMI Vendor InfoFrame
Hans de Goede (1):
ASoC: nau8824: Add DMI quirk mechanism for active-high jack-detect
Heiko Carstens (1):
s390/kexec: fix return code handling
Ian Rogers (1):
perf bpf: Avoid memory leak from perf_env__insert_btf()
Imre Deak (1):
drm/i915/dp: Ensure sink rate values are always valid
Jacob Keller (1):
iavf: prevent accidental free of filter structure
James Clark (1):
perf tests: Remove bash construct from record+zstd_comp_decomp.sh
James Smart (1):
scsi: lpfc: Fix list_add() corruption in lpfc_drain_txq()
Jan Kara (1):
udf: Fix crash after seekdir
Jedrzej Jagielski (1):
i40e: Fix creation of first queue by omitting it if is not power of two
Jeremy Cline (1):
drm/nouveau: use drm_dev_unplug() during device removal
Joel Stanley (1):
clk/ast2600: Fix soc revision for AHB
Johan Hovold (1):
drm/udl: fix control-message timeout
Jonathan Davies (1):
net: virtio_net_hdr_to_skb: count transport header in UFO
Leon Romanovsky (2):
RDMA/netlink: Add __maybe_unused to static inline in C file
ice: Delete always true check of PF pointer
Li Yang (2):
ARM: dts: ls1021a: move thermal-zones node out of soc/
ARM: dts: ls1021a-tsn: use generic "jedec,spi-nor" compatible for flash
Lin Ma (2):
NFC: reorganize the functions in nci_request
NFC: reorder the logic in nfc_{un,}register_device
Lu Wei (1):
maple: fix wrong return value of maple_bus_init().
Luis Chamberlain (1):
firmware_loader: fix pre-allocated buf built-in firmware use
Masami Hiramatsu (1):
tracing/histogram: Do not copy the fixed-size char array field over the field size
Matthew Hagan (1):
ARM: dts: NSP: Fix mpcore, mmc node names
Michael Ellerman (2):
powerpc/dcr: Use cmplwi instead of 3-argument cmpli
KVM: PPC: Book3S HV: Use GLOBAL_TOC for kvmppc_h_set_dabr/xdabr()
Michael Walle (2):
arm64: dts: hisilicon: fix arm,sp805 compatible string
arm64: dts: freescale: fix arm,sp805 compatible string
Michal Maloszewski (1):
i40e: Fix NULL ptr dereference on VSI filter sync
Michal Simek (1):
arm64: zynqmp: Fix serial compatible string
Mike Christie (3):
scsi: target: Fix ordered tag handling
scsi: target: Fix alua_tg_pt_gps_count tracking
scsi: core: sysfs: Fix hang when device state is set via sysfs
Mitch Williams (1):
iavf: validate pointers
Nadav Amit (1):
hugetlbfs: flush TLBs correctly after huge_pmd_unshare
Nathan Chancellor (1):
hexagon: export raw I/O routines for modules
Nguyen Dinh Phi (1):
cfg80211: call cfg80211_stop_ap when switch from P2P_GO type
Nicholas Nunley (2):
iavf: check for null in iavf_fix_features
iavf: free q_vectors before queues in iavf_disable_vf
Nick Desaulniers (2):
sh: check return code of request_irq
arm64: vdso32: suppress error message for 'make mrproper'
Nicolas Dichtel (1):
tun: fix bonding active backup with arp monitoring
Nikolay Borisov (1):
btrfs: fix memory ordering between normal and ordered work functions
Paul Cercueil (1):
clk: ingenic: Fix bugs with divided dividers
Pavel Skripkin (2):
net: bnx2x: fix variable dereferenced before check
net: dpaa2-eth: fix use-after-free in dpaa2_eth_remove
Peter Zijlstra (Intel) (1):
tlb: mmu_gather: add tlb_flush_*_range APIs
Pierre-Louis Bossart (3):
ASoC: SOF: Intel: hda-dai: fix potential locking issue
ALSA: hda: hdac_ext_stream: fix potential locking issues
ALSA: hda: hdac_stream: fix potential locking issue in snd_hdac_stream_assign()
Piotr Marczak (1):
iavf: Fix failure to exit out from last all-multicast mode
Randy Dunlap (7):
ALSA: ISA: not for M68K
sh: fix kconfig unmet dependency warning for FRAME_POINTER
sh: math-emu: drop unused functions
sh: define __BIG_ENDIAN for math-emu
mips: BCM63XX: ensure that CPU_SUPPORTS_32BIT_KERNEL is set
mips: bcm63xx: add support for clk_get_parent()
mips: lantiq: add support for clk_get_parent()
Roger Quadros (1):
ARM: dts: omap: fix gpmc,mux-add-data type
Rustam Kovhaev (1):
mm: kmemleak: slob: respect SLAB_NOLEAKTRACE flag
Sean Christopherson (1):
x86/hyperv: Fix NULL deref in set_hv_tscchange_cb() if Hyper-V setup fails
Selvin Xavier (1):
RDMA/bnxt_re: Check if the vlan is valid before reporting
Sohaib Mohamed (1):
perf bench futex: Fix memory leak of perf_cpu_map__new()
Stefan Riedmueller (1):
clk: imx: imx6ul: Move csi_sel mux to correct base register
Surabhi Boob (1):
iavf: Fix for the false positive ASQ/ARQ errors while issuing VF reset
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
Sven Peter (1):
usb: typec: tipd: Remove WARN_ON in tps6598x_block_read
Sven Schnelle (1):
parisc/sticon: fix reverse colors
Takashi Iwai (1):
ASoC: DAPM: Cover regression by kctl change notification fix
Teng Qi (1):
iio: imu: st_lsm6dsx: Avoid potential array overflow in st_lsm6dsx_set_odr()
Tom Zanussi (1):
tracing: Save normal string variables
Uwe Kleine-König (1):
usb: max-3421: Use driver data instead of maintaining a list of bound devices
Vincent Donnefort (1):
sched/core: Mitigate race cpus_share_cache()/update_top_cache_domain()
Xin Long (1):
net: sched: act_mirred: drop dst for the direction from egress to ingress
Yang Yingliang (2):
usb: musb: tusb6010: check return value after calling platform_get_resource()
usb: host: ohci-tmio: check return value after calling platform_get_resource()
hongao (1):
drm/amdgpu: fix set scaling mode Full/Full aspect/Center not works on vga and dvi connectors
Greg Kroah-Hartman
maintainerMakefile +1 -1
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 5 PATCHLEVEL = 4 -SUBLEVEL = 161 +SUBLEVEL = 162 EXTRAVERSION = NAME = Kleptomaniac Octopus
arch/arm/boot/dts/bcm-nsp.dtsi +2 -2
@@ -77,7 +77,7 @@ interrupt-affinity = <&cpu0>, <&cpu1>; }; - mpcore@19000000 { + mpcore-bus@19000000 { compatible = "simple-bus"; ranges = <0x00000000 0x19000000 0x00023000>; #address-cells = <1>;
@@ -217,7 +217,7 @@ #dma-cells = <1>; }; - sdio: sdhci@21000 { + sdio: mmc@21000 { compatible = "brcm,sdhci-iproc-cygnus"; reg = <0x21000 0x100>; interrupts = <GIC_SPI 145 IRQ_TYPE_LEVEL_HIGH>;
arch/arm/boot/dts/ls1021a-tsn.dts +1 -1
@@ -247,7 +247,7 @@ flash@0 { /* Rev. A uses 64MB flash, Rev. B & C use 32MB flash */ - compatible = "jedec,spi-nor", "s25fl256s1", "s25fl512s"; + compatible = "jedec,spi-nor"; spi-max-frequency = <20000000>; #address-cells = <1>; #size-cells = <1>;
arch/arm/boot/dts/ls1021a.dtsi +33 -33
76 lines not on this page · raw message
arch/arm/boot/dts/omap-gpmc-smsc9221.dtsi +1 -1
@@ -29,7 +29,7 @@ compatible = "smsc,lan9221","smsc,lan9115"; bank-width = <2>; - gpmc,mux-add-data; + gpmc,mux-add-data = <0>; gpmc,cs-on-ns = <0>; gpmc,cs-rd-off-ns = <42>; gpmc,cs-wr-off-ns = <36>;
arch/arm/boot/dts/omap3-overo-tobiduo-common.dtsi +1 -1
@@ -22,7 +22,7 @@ compatible = "smsc,lan9221","smsc,lan9115"; bank-width = <2>; - gpmc,mux-add-data; + gpmc,mux-add-data = <0>; gpmc,cs-on-ns = <0>; gpmc,cs-rd-off-ns = <42>; gpmc,cs-wr-off-ns = <36>;
arch/arm64/boot/dts/freescale/fsl-ls1088a.dtsi +8 -8
@@ -637,56 +637,56 @@ }; cluster1_core0_watchdog: wdt@c000000 { - compatible = "arm,sp805-wdt", "arm,primecell"; + compatible = "arm,sp805", "arm,primecell"; reg = <0x0 0xc000000 0x0 0x1000>; clocks = <&clockgen 4 3>, <&clockgen 4 3>; clock-names = "wdog_clk", "apb_pclk"; }; cluster1_core1_watchdog: wdt@c010000 { - compatible = "arm,sp805-wdt", "arm,primecell"; + compatible = "arm,sp805", "arm,primecell"; reg = <0x0 0xc010000 0x0 0x1000>; clocks = <&clockgen 4 3>, <&clockgen 4 3>; clock-names = "wdog_clk", "apb_pclk"; }; cluster1_core2_watchdog: wdt@c020000 { - compatible = "arm,sp805-wdt", "arm,primecell"; + compatible = "arm,sp805", "arm,primecell"; reg = <0x0 0xc020000 0x0 0x1000>; clocks = <&clockgen 4 3>, <&clockgen 4 3>; clock-names = "wdog_clk", "apb_pclk"; }; cluster1_core3_watchdog: wdt@c030000 { - compatible = "arm,sp805-wdt", "arm,primecell"; + compatible = "arm,sp805", "arm,primecell"; reg = <0x0 0xc030000 0x0 0x1000>; clocks = <&clockgen 4 3>, <&clockgen 4 3>; clock-names = "wdog_clk", "apb_pclk"; }; cluster2_core0_watchdog: wdt@c100000 { - compatible = "arm,sp805-wdt", "arm,primecell"; + compatible = "arm,sp805", "arm,primecell"; reg = <0x0 0xc100000 0x0 0x1000>; clocks = <&clockgen 4 3>, <&clockgen 4 3>; clock-names = "wdog_clk", "apb_pclk"; }; cluster2_core1_watchdog: wdt@c110000 { - compatible = "arm,sp805-wdt", "arm,primecell"; + compatible = "arm,sp805", "arm,primecell"; reg = <0x0 0xc110000 0x0 0x1000>; clocks = <&clockgen 4 3>, <&clockgen 4 3>; clock-names = "wdog_clk", "apb_pclk"; }; cluster2_core2_watchdog: wdt@c120000 { - compatible = "arm,sp805-wdt", "arm,primecell"; + compatible = "arm,sp805", "arm,primecell"; reg = <0x0 0xc120000 0x0 0x1000>; clocks = <&clockgen 4 3>, <&clockgen 4 3>; clock-names = "wdog_clk", "apb_pclk"; }; cluster2_core3_watchdog: wdt@c130000 { - compatible = "arm,sp805-wdt", "arm,primecell"; + compatible = "arm,sp805", "arm,primecell"; reg = <0x0 0xc130000 0x0 0x1000>; clocks = <&clockgen 4 3>, <&clockgen 4 3>; clock-names = "wdog_clk", "apb_pclk";
arch/arm64/boot/dts/freescale/fsl-ls208xa.dtsi +8 -8
@@ -227,56 +227,56 @@ }; cluster1_core0_watchdog: wdt@c000000 { - compatible = "arm,sp805-wdt", "arm,primecell"; + compatible = "arm,sp805", "arm,primecell"; reg = <0x0 0xc000000 0x0 0x1000>; clocks = <&clockgen 4 3>, <&clockgen 4 3>; clock-names = "wdog_clk", "apb_pclk"; }; cluster1_core1_watchdog: wdt@c010000 { - compatible = "arm,sp805-wdt", "arm,primecell"; + compatible = "arm,sp805", "arm,primecell"; reg = <0x0 0xc010000 0x0 0x1000>; clocks = <&clockgen 4 3>, <&clockgen 4 3>; clock-names = "wdog_clk", "apb_pclk"; }; cluster2_core0_watchdog: wdt@c100000 { - compatible = "arm,sp805-wdt", "arm,primecell"; + compatible = "arm,sp805", "arm,primecell"; reg = <0x0 0xc100000 0x0 0x1000>; clocks = <&clockgen 4 3>, <&clockgen 4 3>; clock-names = "wdog_clk", "apb_pclk"; }; cluster2_core1_watchdog: wdt@c110000 { - compatible = "arm,sp805-wdt", "arm,primecell"; + compatible = "arm,sp805", "arm,primecell"; reg = <0x0 0xc110000 0x0 0x1000>; clocks = <&clockgen 4 3>, <&clockgen 4 3>; clock-names = "wdog_clk", "apb_pclk"; }; cluster3_core0_watchdog: wdt@c200000 { - compatible = "arm,sp805-wdt", "arm,primecell"; + compatible = "arm,sp805", "arm,primecell"; reg = <0x0 0xc200000 0x0 0x1000>; clocks = <&clockgen 4 3>, <&clockgen 4 3>; clock-names = "wdog_clk", "apb_pclk"; }; cluster3_core1_watchdog: wdt@c210000 { - compatible = "arm,sp805-wdt", "arm,primecell"; + compatible = "arm,sp805", "arm,primecell"; reg = <0x0 0xc210000 0x0 0x1000>; clocks = <&clockgen 4 3>, <&clockgen 4 3>; clock-names = "wdog_clk", "apb_pclk"; }; cluster4_core0_watchdog: wdt@c300000 { - compatible = "arm,sp805-wdt", "arm,primecell"; + compatible = "arm,sp805", "arm,primecell"; reg = <0x0 0xc300000 0x0 0x1000>; clocks = <&clockgen 4 3>, <&clockgen 4 3>; clock-names = "wdog_clk", "apb_pclk"; }; cluster4_core1_watchdog: wdt@c310000 { - compatible = "arm,sp805-wdt", "arm,primecell"; + compatible = "arm,sp805", "arm,primecell"; reg = <0x0 0xc310000 0x0 0x1000>; clocks = <&clockgen 4 3>, <&clockgen 4 3>; clock-names = "wdog_clk", "apb_pclk";
arch/arm64/boot/dts/hisilicon/hi3660.dtsi +2 -2
@@ -1086,7 +1086,7 @@ }; watchdog0: watchdog@e8a06000 { - compatible = "arm,sp805-wdt", "arm,primecell"; + compatible = "arm,sp805", "arm,primecell"; reg = <0x0 0xe8a06000 0x0 0x1000>; interrupts = <GIC_SPI 44 IRQ_TYPE_LEVEL_HIGH>; clocks = <&crg_ctrl HI3660_OSC32K>;
@@ -1094,7 +1094,7 @@ }; watchdog1: watchdog@e8a07000 { - compatible = "arm,sp805-wdt", "arm,primecell"; + compatible = "arm,sp805", "arm,primecell"; reg = <0x0 0xe8a07000 0x0 0x1000>; interrupts = <GIC_SPI 45 IRQ_TYPE_LEVEL_HIGH>; clocks = <&crg_ctrl HI3660_OSC32K>;
arch/arm64/boot/dts/hisilicon/hi6220.dtsi +1 -1
@@ -839,7 +839,7 @@ }; watchdog0: watchdog@f8005000 { - compatible = "arm,sp805-wdt", "arm,primecell"; + compatible = "arm,sp805", "arm,primecell"; reg = <0x0 0xf8005000 0x0 0x1000>; interrupts = <GIC_SPI 13 IRQ_TYPE_LEVEL_HIGH>; clocks = <&ao_ctrl HI6220_WDT0_PCLK>;
arch/arm64/boot/dts/qcom/msm8998.dtsi +12 -8
@@ -246,38 +246,42 @@ LITTLE_CPU_SLEEP_0: cpu-sleep-0-0 { compatible = "arm,idle-state"; idle-state-name = "little-retention"; + /* CPU Retention (C2D), L2 Active */ arm,psci-suspend-param = <0x00000002>; entry-latency-us = <81>; exit-latency-us = <86>; - min-residency-us = <200>; + min-residency-us = <504>; }; LITTLE_CPU_SLEEP_1: cpu-sleep-0-1 { compatible = "arm,idle-state"; idle-state-name = "little-power-collapse"; + /* CPU + L2 Power Collapse (C3, D4) */ arm,psci-suspend-param = <0x40000003>; - entry-latency-us = <273>; - exit-latency-us = <612>; - min-residency-us = <1000>; + entry-latency-us = <814>; + exit-latency-us = <4562>; + min-residency-us = <9183>; local-timer-stop; }; BIG_CPU_SLEEP_0: cpu-sleep-1-0 { compatible = "arm,idle-state"; idle-state-name = "big-retention"; + /* CPU Retention (C2D), L2 Active */ arm,psci-suspend-param = <0x00000002>; entry-latency-us = <79>; exit-latency-us = <82>; - min-residency-us = <200>; + min-residency-us = <1302>; }; BIG_CPU_SLEEP_1: cpu-sleep-1-1 { compatible = "arm,idle-state"; idle-state-name = "big-power-collapse"; + /* CPU + L2 Power Collapse (C3, D4) */ arm,psci-suspend-param = <0x40000003>; - entry-latency-us = <336>; - exit-latency-us = <525>; - min-residency-us = <1000>; + entry-latency-us = <724>; + exit-latency-us = <2027>; + min-residency-us = <9419>; local-timer-stop; }; };
arch/arm64/boot/dts/xilinx/zynqmp-zc1751-xm016-dc2.dts +2 -2
@@ -131,7 +131,7 @@ reg = <0>; partition@0 { - label = "data"; + label = "spi0-data"; reg = <0x0 0x100000>; }; };
@@ -149,7 +149,7 @@ reg = <0>; partition@0 { - label = "data"; + label = "spi1-data"; reg = <0x0 0x84000>; }; };
arch/arm64/boot/dts/xilinx/zynqmp.dtsi +2 -2
@@ -582,7 +582,7 @@ }; uart0: serial@ff000000 { - compatible = "cdns,uart-r1p12", "xlnx,xuartps"; + compatible = "xlnx,zynqmp-uart", "cdns,uart-r1p12"; status = "disabled"; interrupt-parent = <&gic>; interrupts = <0 21 4>;
@@ -591,7 +591,7 @@ }; uart1: serial@ff010000 { - compatible = "cdns,uart-r1p12", "xlnx,xuartps"; + compatible = "xlnx,zynqmp-uart", "cdns,uart-r1p12"; status = "disabled"; interrupt-parent = <&gic>; interrupts = <0 22 4>;
arch/arm64/kernel/vdso32/Makefile +2 -1
@@ -32,7 +32,8 @@ cc32-as-instr = $(call try-run,\ # As a result we set our own flags here. # KBUILD_CPPFLAGS and NOSTDINC_FLAGS from top-level Makefile -VDSO_CPPFLAGS := -D__KERNEL__ -nostdinc -isystem $(shell $(CC_COMPAT) -print-file-name=include) +VDSO_CPPFLAGS := -D__KERNEL__ -nostdinc +VDSO_CPPFLAGS += -isystem $(shell $(CC_COMPAT) -print-file-name=include 2>/dev/null) VDSO_CPPFLAGS += $(LINUXINCLUDE) # Common C and assembly flags
arch/hexagon/lib/io.c +4 -0
@@ -27,6 +27,7 @@ void __raw_readsw(const void __iomem *addr, void *data, int len) *dst++ = *src; } +EXPORT_SYMBOL (__raw_readsw);/* * __raw_writesw - read words a short at a time
@@ -47,6 +48,7 @@ void __raw_writesw(void __iomem *addr, const void *data, int len) } +EXPORT_SYMBOL (__raw_writesw);/* Pretty sure len is pre-adjusted for the length of the access already */ void __raw_readsl (const void __iomem *addr,void *data,int len)
@@ -62,6 +64,7 @@ void __raw_readsl(const void __iomem *addr, void *data, int len) } +EXPORT_SYMBOL (__raw_readsl);void __raw_writesl (void __iomem *addr,const void *data,int len) {
@@ -76,3 +79,4 @@ void __raw_writesl(void __iomem *addr, const void *data, int len) } +EXPORT_SYMBOL (__raw_writesl);
arch/mips/Kconfig +3 -0
@@ -294,6 +294,9 @@ config BCM63XX select SYS_SUPPORTS_32BIT_KERNEL select SYS_SUPPORTS_BIG_ENDIAN select SYS_HAS_EARLY_PRINTK + select SYS_HAS_CPU_BMIPS32_3300 + select SYS_HAS_CPU_BMIPS4350 + select SYS_HAS_CPU_BMIPS4380 select SWAP_IO_SPACE select GPIOLIB select HAVE_CLK
arch/mips/bcm63xx/clk.c +6 -0
@@ -381,6 +381,12 @@ void clk_disable(struct clk *clk)EXPORT_SYMBOL (clk_disable); +struct clk *clk_get_parent (struct clk *clk) +{ +return NULL ; +} +EXPORT_SYMBOL (clk_get_parent); +unsigned long clk_get_rate (struct clk *clk) {if (!clk)
arch/mips/generic/yamon-dt.c +1 -1
@@ -75,7 +75,7 @@ static unsigned int __init gen_fdt_mem_array(__init int yamon_dt_append_memory (void *fdt,const struct yamon_mem_region *regions) { -unsigned long phys_memsize, memsize; +unsigned long phys_memsize =0 , memsize;__be32 mem_array[2 *MAX_MEM_ARRAY_ENTRIES ];unsigned int mem_entries;int i, err, mem_off;
arch/mips/lantiq/clk.c +6 -0
@@ -158,6 +158,12 @@ void clk_deactivate(struct clk *clk) }EXPORT_SYMBOL (clk_deactivate); +struct clk *clk_get_parent (struct clk *clk) +{ +return NULL ; +} +EXPORT_SYMBOL (clk_get_parent); +static inline u32 get_counter_resolution (void ) {u32 res;
arch/mips/sni/time.c +2 -2
@@ -18,14 +18,14 @@ static int a20r_set_periodic(struct clock_event_device *evt) { *(volatile u8 *)(A20R_PT_CLOCK_BASE +12 ) =0x34 ;wmb (); - *(volatile u8 *)(A20R_PT_CLOCK_BASE +0 ) =SNI_COUNTER0_DIV ; + *(volatile u8 *)(A20R_PT_CLOCK_BASE +0 ) =SNI_COUNTER0_DIV &0xff ;wmb (); *(volatile u8 *)(A20R_PT_CLOCK_BASE +0 ) =SNI_COUNTER0_DIV >>8 ;wmb (); *(volatile u8 *)(A20R_PT_CLOCK_BASE +12 ) =0xb4 ;wmb (); - *(volatile u8 *)(A20R_PT_CLOCK_BASE +8 ) =SNI_COUNTER2_DIV ; + *(volatile u8 *)(A20R_PT_CLOCK_BASE +8 ) =SNI_COUNTER2_DIV &0xff ;wmb (); *(volatile u8 *)(A20R_PT_CLOCK_BASE +8 ) =SNI_COUNTER2_DIV >>8 ;wmb ();
arch/powerpc/boot/dts/charon.dts +1 -1
@@ -35,7 +35,7 @@ }; }; - memory { + memory@0 { device_type = "memory"; reg = <0x00000000 0x08000000>; // 128MB };
arch/powerpc/boot/dts/digsy_mtc.dts +1 -1
@@ -16,7 +16,7 @@ model = "intercontrol,digsy-mtc"; compatible = "intercontrol,digsy-mtc"; - memory { + memory@0 { reg = <0x00000000 0x02000000>; // 32MB };
arch/powerpc/boot/dts/lite5200.dts +1 -1
@@ -32,7 +32,7 @@ }; }; - memory { + memory@0 { device_type = "memory"; reg = <0x00000000 0x04000000>; // 64MB };
arch/powerpc/boot/dts/lite5200b.dts +1 -1
@@ -31,7 +31,7 @@ led4 { gpios = <&gpio_simple 2 1>; }; }; - memory { + memory@0 { reg = <0x00000000 0x10000000>; // 256MB };
arch/powerpc/boot/dts/media5200.dts +1 -1
@@ -32,7 +32,7 @@ }; }; - memory { + memory@0 { reg = <0x00000000 0x08000000>; // 128MB RAM };
arch/powerpc/boot/dts/mpc5200b.dtsi +1 -1
@@ -33,7 +33,7 @@ }; }; - memory: memory { + memory: memory@0 { device_type = "memory"; reg = <0x00000000 0x04000000>; // 64MB };
arch/powerpc/boot/dts/o2d.dts +1 -1
@@ -12,7 +12,7 @@ model = "ifm,o2d"; compatible = "ifm,o2d"; - memory { + memory@0 { reg = <0x00000000 0x08000000>; // 128MB };
arch/powerpc/boot/dts/o2d.dtsi +1 -1
@@ -19,7 +19,7 @@ model = "ifm,o2d"; compatible = "ifm,o2d"; - memory { + memory@0 { reg = <0x00000000 0x04000000>; // 64MB };
arch/powerpc/boot/dts/o2dnt2.dts +1 -1
@@ -12,7 +12,7 @@ model = "ifm,o2dnt2"; compatible = "ifm,o2d"; - memory { + memory@0 { reg = <0x00000000 0x08000000>; // 128MB };
arch/powerpc/boot/dts/o3dnt.dts +1 -1
@@ -12,7 +12,7 @@ model = "ifm,o3dnt"; compatible = "ifm,o2d"; - memory { + memory@0 { reg = <0x00000000 0x04000000>; // 64MB };
arch/powerpc/boot/dts/pcm032.dts +1 -1
@@ -22,7 +22,7 @@ model = "phytec,pcm032"; compatible = "phytec,pcm032"; - memory { + memory@0 { reg = <0x00000000 0x08000000>; // 128MB };
arch/powerpc/boot/dts/tqm5200.dts +1 -1
@@ -32,7 +32,7 @@ }; }; - memory { + memory@0 { device_type = "memory"; reg = <0x00000000 0x04000000>; // 64MB };
arch/powerpc/kvm/book3s_hv_rmhandlers.S +2 -2
@@ -2535,7 +2535,7 @@ hcall_real_table: .globl hcall_real_table_end hcall_real_table_end: -_GLOBAL(kvmppc_h_set_xdabr) +_GLOBAL_TOC(kvmppc_h_set_xdabr) EXPORT_SYMBOL_GPL(kvmppc_h_set_xdabr) andi. r0, r5, DABRX_USER | DABRX_KERNEL beq 6f
@@ -2545,7 +2545,7 @@ EXPORT_SYMBOL_GPL(kvmppc_h_set_xdabr) 6: li r3, H_PARAMETER blr -_GLOBAL(kvmppc_h_set_dabr) +_GLOBAL_TOC(kvmppc_h_set_dabr) EXPORT_SYMBOL_GPL(kvmppc_h_set_dabr) li r5, DABRX_USER | DABRX_KERNEL 3:
arch/powerpc/sysdev/dcr-low.S +1 -1
@@ -11,7 +11,7 @@ #include <asm/export.h> #define DCR_ACCESS_PROLOG(table) \ - cmpli cr0,r3,1024; \ + cmplwi cr0,r3,1024; \ rlwinm r3,r3,4,18,27; \ lis r5,table@h; \ ori r5,r5,table@l; \
arch/s390/include/asm/kexec.h +6 -0
@@ -74,6 +74,12 @@ void *kexec_file_add_components(struct kimage *image,int arch_kexec_do_relocs (int r_type,void *loc,unsigned long val,unsigned long addr); +#define ARCH_HAS_KIMAGE_ARCH + +struct kimage_arch { +void *ipl_buf; +}; +extern const struct kexec_file_ops s390_kexec_image_ops;extern const struct kexec_file_ops s390_kexec_elf_ops;
arch/s390/kernel/ipl.c +2 -1
@@ -1783,7 +1783,7 @@ void *ipl_report_finish(struct ipl_report *report) buf =vzalloc (report->size);if (!buf) -return ERR_PTR (-ENOMEM ); + goto out; ptr = buf;memcpy (ptr, report->ipib, report->ipib->hdr.len);
@@ -1822,6 +1822,7 @@ void *ipl_report_finish(struct ipl_report *report) }BUG_ON (ptr > buf + report->size); +out:return buf; }
arch/s390/kernel/machine_kexec_file.c +17 -1
@@ -12,6 +12,7 @@#include <linux/kexec.h> #include <linux/module_signature.h> #include <linux/verification.h> +#include <linux/vmalloc.h> #include <asm/boot_data.h> #include <asm/ipl.h> #include <asm/setup.h>
@@ -170,6 +171,7 @@ static int kexec_file_add_ipl_report(struct kimage *image,struct kexec_buf buf;unsigned long addr;void *ptr, *end; +int ret; buf.image = image;
@@ -199,9 +201,13 @@ static int kexec_file_add_ipl_report(struct kimage *image, ptr += len; } + ret = -ENOMEM ; buf.buffer =ipl_report_finish (data->report); +if (!buf.buffer) + goto out; buf.bufsz = data->report->size; buf.memsz = buf.bufsz; + image->arch.ipl_buf = buf.buffer; data->memsz += buf.memsz;
@@ -209,7 +215,9 @@ static int kexec_file_add_ipl_report(struct kimage *image, data->kernel_buf + offsetof(struct lowcore , ipl_parmblock_ptr); *lc_ipl_parmblock_ptr = (__u32 )buf.mem; -return kexec_add_buffer (&buf); + ret =kexec_add_buffer (&buf); +out: +return ret; } void *kexec_file_add_components(struct kimage *image,
@@ -321,3 +329,11 @@ int arch_kexec_kernel_image_probe(struct kimage *image, void *buf,return kexec_image_probe_default (image, buf, buf_len); } + +int arch_kimage_file_post_load_cleanup (struct kimage *image) +{ +vfree (image->arch.ipl_buf); + image->arch.ipl_buf =NULL ; + +return kexec_image_post_load_cleanup_default (image); +}
arch/sh/Kconfig.debug +1 -0
@@ -58,6 +58,7 @@ config DUMP_CODE config DWARF_UNWINDER bool "Enable the DWARF unwinder for stacktraces" + depends on DEBUG_KERNEL select FRAME_POINTER depends on SUPERH32 default n
arch/sh/include/asm/sfp-machine.h +8 -0
@@ -13,6 +13,14 @@#ifndef _SFP_MACHINE_H#define _SFP_MACHINE_H +#ifdef __BIG_ENDIAN__ +#define __BYTE_ORDER __BIG_ENDIAN +#define __LITTLE_ENDIAN 0 +#else +#define __BYTE_ORDER __LITTLE_ENDIAN +#define __BIG_ENDIAN 0 +#endif +#define _FP_W_TYPE_SIZE 32#define _FP_W_TYPE unsigned long#define _FP_WS_TYPE signed long
arch/sh/kernel/cpu/sh4a/smp-shx3.c +3 -2
@@ -73,8 +73,9 @@ static void shx3_prepare_cpus(unsigned int max_cpus)BUILD_BUG_ON (SMP_MSG_NR >=8 );for (i =0 ; i <SMP_MSG_NR ; i++) -request_irq (104 + i, ipi_interrupt_handler, -IRQF_PERCPU ,"IPI" , (void *)(long )i); +if (request_irq (104 + i, ipi_interrupt_handler, +IRQF_PERCPU ,"IPI" , (void *)(long )i)) +pr_err ("Failed to request irq %d\n" , i);for (i =0 ; i < max_cpus; i++)set_cpu_present (i, true);
arch/sh/math-emu/math.c +0 -103
109 lines not on this page · raw message
arch/x86/events/intel/uncore_snbep.c +4 -0
@@ -3479,6 +3479,9 @@ static int skx_cha_hw_config(struct intel_uncore_box *box, struct perf_event *evstruct hw_perf_event_extra *reg1 = &event->hw.extra_reg;struct extra_reg *er;int idx =0 ; +/* Any of the CHA events may be filtered by Thread/Core-ID.*/ +if (event->hw.config &SNBEP_CBO_PMON_CTL_TID_EN ) + idx =SKX_CHA_MSR_PMON_BOX_FILTER_TID ;for (er = skx_uncore_cha_extra_regs; er->msr; er++) {if (er->event != (event->hw.config & er->config_mask))
@@ -3546,6 +3549,7 @@ static struct event_constraint skx_uncore_iio_constraints[] = {UNCORE_EVENT_CONSTRAINT (0xc0 ,0xc ),UNCORE_EVENT_CONSTRAINT (0xc5 ,0xc ),UNCORE_EVENT_CONSTRAINT (0xd4 ,0xc ), +UNCORE_EVENT_CONSTRAINT (0xd5 ,0xc ), EVENT_CONSTRAINT_END };
arch/x86/hyperv/hv_init.c +3 -0
@@ -163,6 +163,9 @@ void set_hv_tscchange_cb(void (*cb)(void))return ; } +if (!hv_vp_index) +return ; + hv_reenlightenment_cb = cb;/* Make sure callback is registered before we write to MSRs */
drivers/base/firmware_loader/main.c +7 -6
@@ -98,12 +98,15 @@ static struct firmware_cache fw_cache;extern struct builtin_fw __start_builtin_fw[];extern struct builtin_fw __end_builtin_fw[]; -static void fw_copy_to_prealloc_buf (struct firmware *fw, +static bool fw_copy_to_prealloc_buf (struct firmware *fw,void *buf,size_t size) { -if (!buf || size < fw->size) -return ; +if (!buf) +return true; +if (size < fw->size) +return false;memcpy (buf, fw->data, fw->size); +return true; } static bool fw_get_builtin_firmware(struct firmware *fw, const char *name,
@@ -115,9 +118,7 @@ static bool fw_get_builtin_firmware(struct firmware *fw, const char *name,if (strcmp (name, b_fw->name) ==0 ) { fw->size = b_fw->size; fw->data = b_fw->data; -fw_copy_to_prealloc_buf (fw, buf, size); - -return true; +return fw_copy_to_prealloc_buf (fw, buf, size); } }
drivers/clk/clk-ast2600.c +7 -5
@@ -48,6 +48,8 @@ static DEFINE_SPINLOCK(aspeed_g6_clk_lock);static struct clk_hw_onecell_data *aspeed_g6_clk_data;static void __iomem *scu_g6_base; +/* AST2600 revision: A0, A1, A2, etc */ +static u8 soc_rev;/* * Clocks marked with CLK_IS_CRITICAL:
@@ -190,9 +192,8 @@ static struct clk_hw *ast2600_calc_pll(const char *name, u32 val)static struct clk_hw *ast2600_calc_apll (const char *name,u32 val) {unsigned int mult, div; -u32 chip_id =readl (scu_g6_base +ASPEED_G6_SILICON_REV ); -if (((chip_id &CHIP_REVISION_ID ) >>16 ) >=2 ) { +if (soc_rev >=2 ) {if (val &BIT (24 )) {/* Pass through mode */ mult = div =1 ;
@@ -664,7 +665,7 @@ static const u32 ast2600_a1_axi_ahb200_tbl[] = {static void __init aspeed_g6_cc (struct regmap *map) {struct clk_hw *hw; -u32 val, div, divbits, chip_id, axi_div, ahb_div; +u32 val, div, divbits, axi_div, ahb_div;clk_hw_register_fixed_rate (NULL ,"clkin" ,NULL ,0 ,25000000 );
@@ -695,8 +696,7 @@ static void __init aspeed_g6_cc(struct regmap *map) axi_div =2 ; divbits = (val >>11 ) &0x3 ; -regmap_read (map,ASPEED_G6_SILICON_REV , &chip_id); -if (chip_id &BIT (16 )) { +if (soc_rev >=1 ) {if (!divbits) { ahb_div = ast2600_a1_axi_ahb200_tbl[(val >>8 ) &0x3 ];if (val &BIT (16 ))
@@ -741,6 +741,8 @@ static void __init aspeed_g6_cc_init(struct device_node *np)if (!scu_g6_base)return ; + soc_rev = (readl (scu_g6_base +ASPEED_G6_SILICON_REV ) &CHIP_REVISION_ID ) >>16 ; + aspeed_g6_clk_data =kzalloc (struct_size (aspeed_g6_clk_data, hws,ASPEED_G6_NUM_CLKS ),GFP_KERNEL );if (!aspeed_g6_clk_data)
drivers/clk/imx/clk-imx6ul.c +1 -1
@@ -161,7 +161,6 @@ static void __init imx6ul_clocks_init(struct device_node *ccm_node) hws[IMX6UL_PLL5_BYPASS ] =imx_clk_hw_mux_flags ("pll5_bypass" , base +0xa0 ,16 ,1 , pll5_bypass_sels,ARRAY_SIZE (pll5_bypass_sels),CLK_SET_RATE_PARENT ); hws[IMX6UL_PLL6_BYPASS ] =imx_clk_hw_mux_flags ("pll6_bypass" , base +0xe0 ,16 ,1 , pll6_bypass_sels,ARRAY_SIZE (pll6_bypass_sels),CLK_SET_RATE_PARENT ); hws[IMX6UL_PLL7_BYPASS ] =imx_clk_hw_mux_flags ("pll7_bypass" , base +0x20 ,16 ,1 , pll7_bypass_sels,ARRAY_SIZE (pll7_bypass_sels),CLK_SET_RATE_PARENT ); - hws[IMX6UL_CLK_CSI_SEL ] =imx_clk_hw_mux_flags ("csi_sel" , base +0x3c ,9 ,2 , csi_sels,ARRAY_SIZE (csi_sels),CLK_SET_RATE_PARENT );/* Do not bypass PLLs initially */ clk_set_parent (hws[IMX6UL_PLL1_BYPASS ]->clk, hws[IMX6UL_CLK_PLL1 ]->clk);
@@ -270,6 +269,7 @@ static void __init imx6ul_clocks_init(struct device_node *ccm_node) hws[IMX6UL_CLK_ECSPI_SEL ] =imx_clk_hw_mux ("ecspi_sel" , base +0x38 ,18 ,1 , ecspi_sels,ARRAY_SIZE (ecspi_sels)); hws[IMX6UL_CLK_LCDIF_PRE_SEL ] =imx_clk_hw_mux_flags ("lcdif_pre_sel" , base +0x38 ,15 ,3 , lcdif_pre_sels,ARRAY_SIZE (lcdif_pre_sels),CLK_SET_RATE_PARENT ); hws[IMX6UL_CLK_LCDIF_SEL ] =imx_clk_hw_mux ("lcdif_sel" , base +0x38 ,9 ,3 , lcdif_sels,ARRAY_SIZE (lcdif_sels)); + hws[IMX6UL_CLK_CSI_SEL ] =imx_clk_hw_mux ("csi_sel" , base +0x3c ,9 ,2 , csi_sels,ARRAY_SIZE (csi_sels)); hws[IMX6UL_CLK_LDB_DI0_DIV_SEL ] =imx_clk_hw_mux ("ldb_di0" , base +0x20 ,10 ,1 , ldb_di0_div_sels,ARRAY_SIZE (ldb_di0_div_sels)); hws[IMX6UL_CLK_LDB_DI1_DIV_SEL ] =imx_clk_hw_mux ("ldb_di1" , base +0x20 ,11 ,1 , ldb_di1_div_sels,ARRAY_SIZE (ldb_di1_div_sels));
drivers/clk/ingenic/cgu.c +3 -3
@@ -426,15 +426,15 @@ ingenic_clk_calc_div(const struct ingenic_cgu_clk_info *clk_info, }/* Impose hardware constraints */ - div =min_t (unsigned, div,1 << clk_info->div.bits); - div =max_t (unsigned, div,1 ); + div = clamp_t(unsigned int, div, clk_info->div.div, + clk_info->div.div << clk_info->div.bits);/* * If the divider value itself must be divided before being written to * the divider register, we must ensure we don't have any bits set that * would be lost as a result of doing so. */ - div /= clk_info->div.div; + div =DIV_ROUND_UP (div, clk_info->div.div); div *= clk_info->div.div;return div;
drivers/clk/qcom/gcc-msm8996.c +0 -15
@@ -2937,20 +2937,6 @@ static struct clk_branch gcc_smmu_aggre0_ahb_clk = { }, }; -static struct clk_branch gcc_aggre1_pnoc_ahb_clk = { - .halt_reg =0x82014 , - .clkr = { - .enable_reg =0x82014 , - .enable_mask =BIT (0 ), - .hw.init = &(struct clk_init_data ){ - .name ="gcc_aggre1_pnoc_ahb_clk" , - .parent_names = (const char *[]){"periph_noc_clk_src" }, - .num_parents =1 , - .ops = &clk_branch2_ops, - }, - }, -}; -static struct clk_branch gcc_aggre2_ufs_axi_clk = { .halt_reg =0x83014 , .clkr = {
@@ -3453,7 +3439,6 @@ static struct clk_regmap *gcc_msm8996_clocks[] = { [GCC_AGGRE0_CNOC_AHB_CLK] = &gcc_aggre0_cnoc_ahb_clk.clkr, [GCC_SMMU_AGGRE0_AXI_CLK] = &gcc_smmu_aggre0_axi_clk.clkr, [GCC_SMMU_AGGRE0_AHB_CLK] = &gcc_smmu_aggre0_ahb_clk.clkr, - [GCC_AGGRE1_PNOC_AHB_CLK] = &gcc_aggre1_pnoc_ahb_clk.clkr, [GCC_AGGRE2_UFS_AXI_CLK] = &gcc_aggre2_ufs_axi_clk.clkr, [GCC_AGGRE2_USB3_AXI_CLK] = &gcc_aggre2_usb3_axi_clk.clkr, [GCC_QSPI_AHB_CLK] = &gcc_qspi_ahb_clk.clkr,
drivers/gpu/drm/amd/amdgpu/amdgpu_connectors.c +1 -0
@@ -829,6 +829,7 @@ static int amdgpu_connector_vga_get_modes(struct drm_connector *connector)amdgpu_connector_get_edid (connector); ret =amdgpu_connector_ddc_get_modes (connector); +amdgpu_get_native_mode (connector);return ret; }
drivers/gpu/drm/i915/display/intel_dp.c +11 -0
@@ -166,6 +166,12 @@ static void vlv_steal_power_sequencer(struct drm_i915_private *dev_priv, enum pipe pipe);static void intel_dp_unset_edid (struct intel_dp *intel_dp); +static void intel_dp_set_default_sink_rates (struct intel_dp *intel_dp) +{ + intel_dp->sink_rates[0 ] =162000 ; + intel_dp->num_sink_rates =1 ; +} +/* update sink rates from dpcd */ static void intel_dp_set_sink_rates (struct intel_dp *intel_dp) {
@@ -4261,6 +4267,9 @@ intel_edp_init_dpcd(struct intel_dp *intel_dp)*/ intel_psr_init_dpcd (intel_dp); +/* Clear the default sink rates */ + intel_dp->num_sink_rates =0 ; +/* Read the eDP 1.4+ supported link rates. */ if (intel_dp->edp_dpcd[0 ] >=DP_EDP_14 ) {__le16 sink_rates[DP_MAX_SUPPORTED_RATES ];
@@ -7167,6 +7176,8 @@ intel_dp_init_connector(struct intel_digital_port *intel_dig_port,return false;intel_dp_set_source_rates (intel_dp); +intel_dp_set_default_sink_rates (intel_dp); +intel_dp_set_common_rates (intel_dp); intel_dp->reset_link_params = true; intel_dp->pps_pipe =INVALID_PIPE ;
drivers/gpu/drm/nouveau/nouveau_drm.c +1 -1
@@ -779,7 +779,7 @@ nouveau_drm_device_remove(struct drm_device *dev)struct nvkm_client *client;struct nvkm_device *device; -drm_dev_unregister (dev); +drm_dev_unplug (dev); dev->irq_enabled = false; client =nvxx_client (&drm->client.base);
drivers/gpu/drm/nouveau/nvkm/engine/disp/hdmigv100.c +0 -1
@@ -62,7 +62,6 @@ gv100_hdmi_ctrl(struct nvkm_ior *ior, int head, bool enable, u8 max_ac_packet,nvkm_wr32 (device,0x6f0108 + hdmi, vendor_infoframe.header);nvkm_wr32 (device,0x6f010c + hdmi, vendor_infoframe.subpack0_low);nvkm_wr32 (device,0x6f0110 + hdmi, vendor_infoframe.subpack0_high); -nvkm_wr32 (device,0x6f0110 + hdmi,0x00000000 );nvkm_wr32 (device,0x6f0114 + hdmi,0x00000000 );nvkm_wr32 (device,0x6f0118 + hdmi,0x00000000 );nvkm_wr32 (device,0x6f011c + hdmi,0x00000000 );
drivers/gpu/drm/udl/udl_connector.c +1 -1
@@ -29,7 +29,7 @@ static int udl_get_edid_block(void *data, u8 *buf, unsigned int block, ret =usb_control_msg (udl->udev,usb_rcvctrlpipe (udl->udev,0 ), (0x02 ), (0x80 | (0x02 <<5 )), bval, -0xA1 , read_buff,2 ,HZ ); +0xA1 , read_buff,2 ,1000 );if (ret <1 ) {DRM_ERROR ("Read EDID byte %d failed err %x\n" , i, ret);kfree (read_buff);
drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_core.c +4 -2
@@ -1015,6 +1015,8 @@ static int st_lsm6dsx_set_odr(struct st_lsm6dsx_sensor *sensor, u16 req_odr)int err;switch (sensor->id) { +case ST_LSM6DSX_ID_GYRO : +break ;case ST_LSM6DSX_ID_EXT0 :case ST_LSM6DSX_ID_EXT1 :case ST_LSM6DSX_ID_EXT2 :
@@ -1040,8 +1042,8 @@ static int st_lsm6dsx_set_odr(struct st_lsm6dsx_sensor *sensor, u16 req_odr) }break ; } -default : -break ; +default :/* should never occur */ +return -EINVAL ; }if (req_odr >0 ) {
drivers/infiniband/hw/bnxt_re/ib_verbs.c +9 -3
@@ -3081,8 +3081,11 @@ static void bnxt_re_process_res_ud_wc(struct bnxt_re_qp *qp,struct ib_wc *wc, struct bnxt_qplib_cqe *cqe) { + struct bnxt_re_dev *rdev; +u16 vlan_id =0 ;u8 nw_type; + rdev = qp->rdev; wc->opcode =IB_WC_RECV ; wc->status =__rc_to_ib_wc_status (cqe->status);
@@ -3094,9 +3097,12 @@ static void bnxt_re_process_res_ud_wc(struct bnxt_re_qp *qp,memcpy (wc->smac, cqe->smac,ETH_ALEN ); wc->wc_flags |=IB_WC_WITH_SMAC ;if (cqe->flags &CQ_RES_UD_FLAGS_META_FORMAT_VLAN ) { - wc->vlan_id = (cqe->cfa_meta &0xFFF ); -if (wc->vlan_id <0x1000 ) - wc->wc_flags |=IB_WC_WITH_VLAN ; + vlan_id = (cqe->cfa_meta &0xFFF ); + } +/* Mark only if vlan_id is non zero */ +if (vlan_id &&bnxt_re_check_if_vlan_valid (rdev, vlan_id)) { + wc->vlan_id = vlan_id; + wc->wc_flags |=IB_WC_WITH_VLAN ; } nw_type = (cqe->flags &CQ_RES_UD_FLAGS_ROCE_IP_VER_MASK ) >>CQ_RES_UD_FLAGS_ROCE_IP_VER_SFT ;
drivers/net/ethernet/broadcom/bnx2x/bnx2x_init_ops.h +3 -1
@@ -635,11 +635,13 @@ static int bnx2x_ilt_client_mem_op(struct bnx2x *bp, int cli_num, {int i, rc;struct bnx2x_ilt *ilt =BP_ILT (bp); -struct ilt_client_info *ilt_cli = &ilt->clients[cli_num]; +struct ilt_client_info *ilt_cli;if (!ilt || !ilt->lines)return -1 ; + ilt_cli = &ilt->clients[cli_num]; +if (ilt_cli->flags & (ILT_CLIENT_SKIP_INIT |ILT_CLIENT_SKIP_MEM ))return 0 ;
drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c +2 -2
@@ -3616,10 +3616,10 @@ static int dpaa2_eth_remove(struct fsl_mc_device *ls_dev)fsl_mc_portal_free (priv->mc_io); -free_netdev (net_dev); -dev_dbg (net_dev->dev.parent,"Removed interface %s\n" , net_dev->name); +free_netdev (net_dev); +return 0 ; }
drivers/net/ethernet/intel/i40e/i40e.h +2 -0
@@ -169,6 +169,7 @@ enum i40e_vsi_state_t { __I40E_VSI_OVERFLOW_PROMISC, __I40E_VSI_REINIT_REQUESTED, __I40E_VSI_DOWN_REQUESTED, + __I40E_VSI_RELEASING,/* This must be last as it determines the size of the BITMAP */ __I40E_VSI_STATE_SIZE__, };
@@ -1146,6 +1147,7 @@ void i40e_ptp_save_hw_time(struct i40e_pf *pf);void i40e_ptp_restore_hw_time (struct i40e_pf *pf);void i40e_ptp_init (struct i40e_pf *pf);void i40e_ptp_stop (struct i40e_pf *pf); +int i40e_update_adq_vsi_queues (struct i40e_vsi *vsi,int vsi_offset);int i40e_is_vsi_uplink_mode_veb (struct i40e_vsi *vsi);i40e_status i40e_get_partition_bw_setting (struct i40e_pf *pf);i40e_status i40e_set_partition_bw_setting (struct i40e_pf *pf);
drivers/net/ethernet/intel/i40e/i40e_main.c +104 -56
229 lines not on this page · raw message
drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c +21 -49
114 lines not on this page · raw message
drivers/net/ethernet/intel/iavf/iavf_ethtool.c +6 -7
@@ -962,14 +962,13 @@ static int iavf_get_rxfh(struct net_device *netdev, u32 *indir, u8 *key,if (hfunc) *hfunc =ETH_RSS_HASH_TOP ; -if (!indir) -return 0 ; - -memcpy (key, adapter->rss_key, adapter->rss_key_size); +if (key) +memcpy (key, adapter->rss_key, adapter->rss_key_size); -/* Each 32 bits pointed by 'indir' is stored with a lut entry */ -for (i =0 ; i < adapter->rss_lut_size; i++) - indir[i] = (u32 )adapter->rss_lut[i]; +if (indir) +/* Each 32 bits pointed by 'indir' is stored with a lut entry */ +for (i =0 ; i < adapter->rss_lut_size; i++) + indir[i] = (u32 )adapter->rss_lut[i];return 0 ; }
drivers/net/ethernet/intel/iavf/iavf_main.c +7 -7
@@ -1626,8 +1626,7 @@ static int iavf_process_aq_command(struct iavf_adapter *adapter)iavf_set_promiscuous (adapter,FLAG_VF_MULTICAST_PROMISC );return 0 ; } - -if ((adapter->aq_required &IAVF_FLAG_AQ_RELEASE_PROMISC ) && +if ((adapter->aq_required &IAVF_FLAG_AQ_RELEASE_PROMISC ) || (adapter->aq_required &IAVF_FLAG_AQ_RELEASE_ALLMULTI )) {iavf_set_promiscuous (adapter,0 );return 0 ;
@@ -2057,8 +2056,8 @@ static void iavf_disable_vf(struct iavf_adapter *adapter)iavf_free_misc_irq (adapter);iavf_reset_interrupt_capability (adapter); -iavf_free_queues (adapter);iavf_free_q_vectors (adapter); +iavf_free_queues (adapter);memset (adapter->vf_res,0 ,IAVF_VIRTCHNL_VF_RESOURCE_SIZE );iavf_shutdown_adminq (&adapter->hw); adapter->netdev->flags &= ~IFF_UP ;
@@ -2342,7 +2341,7 @@ static void iavf_adminq_task(struct work_struct *work)/* check for error indications */ val =rd32 (hw, hw->aq.arq.len); -if (val ==0xdeadbeef )/* indicates device in reset */ +if (val ==0xdeadbeef || val ==0xffffffff )/* device in reset */ goto freedom; oldval = val;if (val &IAVF_VF_ARQLEN1_ARQVFE_MASK ) {
@@ -3034,11 +3033,11 @@ static int iavf_configure_clsflower(struct iavf_adapter *adapter,/* start out with flow type and eth type IPv4 to begin with */ filter->f.flow_type =VIRTCHNL_TCP_V4_FLOW ; err =iavf_parse_cls_flower (adapter, cls_flower, filter); -if (err <0 ) +if (err) goto err; err =iavf_handle_tclass (adapter, tc, filter); -if (err <0 ) +if (err) goto err;/* add filter to the list */
@@ -3425,7 +3424,8 @@ static netdev_features_t iavf_fix_features(struct net_device *netdev, {struct iavf_adapter *adapter =netdev_priv (netdev); -if (!(adapter->vf_res->vf_cap_flags &VIRTCHNL_VF_OFFLOAD_VLAN )) +if (adapter->vf_res && + !(adapter->vf_res->vf_cap_flags &VIRTCHNL_VF_OFFLOAD_VLAN )) features &= ~(NETIF_F_HW_VLAN_CTAG_TX |NETIF_F_HW_VLAN_CTAG_RX |NETIF_F_HW_VLAN_CTAG_FILTER );
drivers/net/ethernet/intel/ice/ice_main.c +0 -3
@@ -3005,9 +3005,6 @@ static void ice_remove(struct pci_dev *pdev)struct ice_pf *pf =pci_get_drvdata (pdev);int i; -if (!pf) -return ; -for (i =0 ; i <ICE_MAX_RESET_WAIT ; i++) {if (!ice_is_reset_in_progress (pf->state))break ;
drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c +1 -13
@@ -4545,7 +4545,7 @@ static int mvpp2_port_init(struct mvpp2_port *port)struct mvpp2 *priv = port->priv;struct mvpp2_txq_pcpu *txq_pcpu;unsigned int thread; -int queue, err, val; +int queue, err;/* Checks for hardware constraints */ if (port->first_rxq + port->nrxqs >
@@ -4559,18 +4559,6 @@ static int mvpp2_port_init(struct mvpp2_port *port)mvpp2_egress_disable (port);mvpp2_port_disable (port); -if (mvpp2_is_xlg (port->phy_interface)) { - val =readl (port->base +MVPP22_XLG_CTRL0_REG ); - val &= ~MVPP22_XLG_CTRL0_FORCE_LINK_PASS ; - val |=MVPP22_XLG_CTRL0_FORCE_LINK_DOWN ; -writel (val, port->base +MVPP22_XLG_CTRL0_REG ); - }else { - val =readl (port->base +MVPP2_GMAC_AUTONEG_CONFIG ); - val &= ~MVPP2_GMAC_FORCE_LINK_PASS ; - val |=MVPP2_GMAC_FORCE_LINK_DOWN ; -writel (val, port->base +MVPP2_GMAC_AUTONEG_CONFIG ); - } - port->tx_time_coal =MVPP2_TXDONE_COAL_USEC ; port->txqs = devm_kcalloc(dev, port->ntxqs, sizeof(*port->txqs),
drivers/net/tun.c +5 -0
@@ -1071,6 +1071,7 @@ static netdev_tx_t tun_net_xmit(struct sk_buff *skb, struct net_device *dev) {struct tun_struct *tun =netdev_priv (dev);int txq = skb->queue_mapping; +struct netdev_queue *queue;struct tun_file *tfile;int len = skb->len;
@@ -1117,6 +1118,10 @@ static netdev_tx_t tun_net_xmit(struct sk_buff *skb, struct net_device *dev)if (ptr_ring_produce (&tfile->tx_ring, skb)) goto drop; +/* NETIF_F_LLTX requires to do our own update of trans_start */ + queue =netdev_get_tx_queue (dev, txq); + queue->trans_start = jiffies; +/* Notify and wake up reader process */ if (tfile->flags &TUN_FASYNC )kill_fasync (&tfile->fasync,SIGIO ,POLL_IN );
drivers/platform/x86/hp_accel.c +2 -0
@@ -372,9 +372,11 @@ static int lis3lv02d_add(struct acpi_device *device)INIT_WORK (&hpled_led.work, delayed_set_status_worker); ret =led_classdev_register (NULL , &hpled_led.led_classdev);if (ret) { +i8042_remove_filter (hp_accel_i8042_filter);lis3lv02d_joystick_disable (&lis3_dev);lis3lv02d_poweroff (&lis3_dev);flush_work (&hpled_led.work); +lis3lv02d_remove_fs (&lis3_dev);return ret; }
drivers/scsi/advansys.c +2 -2
@@ -3366,8 +3366,8 @@ static void asc_prt_adv_board_info(struct seq_file *m, struct Scsi_Host *shost) shost->host_no);seq_printf (m, -" iop_base 0x%lx, cable_detect: %X, err_code %u\n" , - (unsigned long )v->iop_base, +" iop_base 0x%p, cable_detect: %X, err_code %u\n" , + v->iop_base,AdvReadWordRegister (iop_base,IOPW_SCSI_CFG1 ) &CABLE_DETECT , v->err_code);
drivers/scsi/lpfc/lpfc_sli.c +1 -0
@@ -19692,6 +19692,7 @@ lpfc_drain_txq(struct lpfc_hba *phba) fail_msg, piocbq->iotag, piocbq->sli4_xritag);list_add_tail (&piocbq->list, &completions); + fail_msg =NULL ; }spin_unlock_irqrestore (&pring->ring_lock, iflags); }
drivers/scsi/scsi_sysfs.c +19 -11
@@ -776,6 +776,7 @@ store_state_field(struct device *dev, struct device_attribute *attr,int i, ret;struct scsi_device *sdev =to_scsi_device (dev);enum scsi_device_state state =0 ; +bool rescan_dev = false;for (i =0 ; i <ARRAY_SIZE (sdev_states); i++) {const int len =strlen (sdev_states[i].name);
@@ -794,20 +795,27 @@ store_state_field(struct device *dev, struct device_attribute *attr, }mutex_lock (&sdev->state_mutex); - ret =scsi_device_set_state (sdev, state); -/* -* If the device state changes to SDEV_RUNNING, we need to -* run the queue to avoid I/O hang, and rescan the device -* to revalidate it. Running the queue first is necessary -* because another thread may be waiting inside -* blk_mq_freeze_queue_wait() and because that call may be -* waiting for pending I/O to finish. -*/ -if (ret ==0 && state ==SDEV_RUNNING ) { +if (sdev->sdev_state ==SDEV_RUNNING && state ==SDEV_RUNNING ) { + ret = count; + }else { + ret =scsi_device_set_state (sdev, state); +if (ret ==0 && state ==SDEV_RUNNING ) + rescan_dev = true; + } +mutex_unlock (&sdev->state_mutex); + +if (rescan_dev) { +/* +* If the device state changes to SDEV_RUNNING, we need to +* run the queue to avoid I/O hang, and rescan the device +* to revalidate it. Running the queue first is necessary +* because another thread may be waiting inside +* blk_mq_freeze_queue_wait() and because that call may be +* waiting for pending I/O to finish. +*/ blk_mq_run_hw_queues (sdev->request_queue, true);scsi_rescan_device (dev); } -mutex_unlock (&sdev->state_mutex);return ret ==0 ? count : -EINVAL ; }
drivers/sh/maple/maple.c +4 -1
@@ -835,8 +835,10 @@ static int __init maple_bus_init(void) maple_queue_cache =KMEM_CACHE (maple_buffer,SLAB_HWCACHE_ALIGN ); -if (!maple_queue_cache) +if (!maple_queue_cache) { + retval = -ENOMEM ; goto cleanup_bothirqs; + }INIT_LIST_HEAD (&maple_waitq);INIT_LIST_HEAD (&maple_sentq);
@@ -849,6 +851,7 @@ static int __init maple_bus_init(void)if (!mdev[i]) {while (i-- >0 )maple_free_dev (mdev[i]); + retval = -ENOMEM ; goto cleanup_cache; } baseunits[i] = mdev[i];
drivers/target/target_core_alua.c +0 -1
@@ -1702,7 +1702,6 @@ int core_alua_set_tg_pt_gp_id(pr_err ("Maximum ALUA alua_tg_pt_gps_count:" " 0x0000ffff reached\n" );spin_unlock (&dev->t10_alua.tg_pt_gps_lock); -kmem_cache_free (t10_alua_tg_pt_gp_cache, tg_pt_gp);return -ENOSPC ; } again:
drivers/target/target_core_device.c +2 -0
@@ -758,6 +758,8 @@ struct se_device *target_alloc_device(struct se_hba *hba, const char *name)INIT_LIST_HEAD (&dev->t10_alua.lba_map_list);spin_lock_init (&dev->t10_alua.lba_map_lock); +INIT_WORK (&dev->delayed_cmd_work, target_do_delayed_work); + dev->t10_wwn.t10_dev = dev; dev->t10_alua.t10_dev = dev;
drivers/target/target_core_internal.h +1 -0
@@ -150,6 +150,7 @@ int transport_dump_vpd_ident(struct t10_vpd *, unsigned char *, int);void transport_clear_lun_ref (struct se_lun *);sense_reason_t target_cmd_size_check (struct se_cmd *cmd,unsigned int size);void target_qf_do_work (struct work_struct *work); +void target_do_delayed_work (struct work_struct *work);bool target_check_wce (struct se_device *dev);bool target_check_fua (struct se_device *dev);void __target_execute_cmd (struct se_cmd *,bool );
drivers/target/target_core_transport.c +54 -22
142 lines not on this page · raw message
drivers/tty/tty_buffer.c +3 -0
@@ -534,6 +534,9 @@ static void flush_to_ldisc(struct work_struct *work)if (!count)break ; head->read += count; + +if (need_resched ()) +cond_resched (); }mutex_unlock (&buf->lock);
drivers/usb/host/max3421-hcd.c +5 -20
@@ -125,8 +125,6 @@ struct max3421_hcd {struct task_struct *spi_thread; -struct max3421_hcd *next; -enum max3421_rh_state rh_state;/* lower 16 bits contain port status, upper 16 bits the change mask: */ u32 port_status;
@@ -174,8 +172,6 @@ struct max3421_ep {u8 retransmit;/* packet needs retransmission */ }; -static struct max3421_hcd *max3421_hcd_list; -#define MAX3421_FIFO_SIZE 64#define MAX3421_SPI_DIR_RD 0/* read register from MAX3421 */
@@ -1882,9 +1878,8 @@ max3421_probe(struct spi_device *spi) }set_bit (HCD_FLAG_POLL_RH , &hcd->flags); max3421_hcd =hcd_to_max3421 (hcd); - max3421_hcd->next = max3421_hcd_list; - max3421_hcd_list = max3421_hcd;INIT_LIST_HEAD (&max3421_hcd->ep_list); +spi_set_drvdata (spi, max3421_hcd); max3421_hcd->tx =kmalloc (sizeof (*max3421_hcd->tx),GFP_KERNEL );if (!max3421_hcd->tx)
@@ -1934,28 +1929,18 @@ max3421_probe(struct spi_device *spi)static int max3421_remove (struct spi_device *spi) { -struct max3421_hcd *max3421_hcd =NULL , **prev; -struct usb_hcd *hcd =NULL ; +struct max3421_hcd *max3421_hcd; +struct usb_hcd *hcd;unsigned long flags; -for (prev = &max3421_hcd_list; *prev; prev = &(*prev)->next) { - max3421_hcd = *prev; - hcd =max3421_to_hcd (max3421_hcd); -if (hcd->self.controller == &spi->dev) -break ; - } -if (!max3421_hcd) { -dev_err (&spi->dev,"no MAX3421 HCD found for SPI device %p\n" , - spi); -return -ENODEV ; - } + max3421_hcd =spi_get_drvdata (spi); + hcd =max3421_to_hcd (max3421_hcd);usb_remove_hcd (hcd);spin_lock_irqsave (&max3421_hcd->lock, flags);kthread_stop (max3421_hcd->spi_thread); - *prev = max3421_hcd->next;spin_unlock_irqrestore (&max3421_hcd->lock, flags);
drivers/usb/host/ohci-tmio.c +1 -1
@@ -199,7 +199,7 @@ static int ohci_hcd_tmio_drv_probe(struct platform_device *dev)if (usb_disabled ())return -ENODEV ; -if (!cell) +if (!cell || !regs || !config || !sram)return -EINVAL ;if (irq <0 )
drivers/usb/musb/tusb6010.c +5 -0
@@ -1103,6 +1103,11 @@ static int tusb_musb_init(struct musb *musb)/* dma address for async dma */ mem =platform_get_resource (pdev,IORESOURCE_MEM ,0 ); +if (!mem) { +pr_debug ("no async dma resource?\n" ); + ret = -ENODEV ; + goto done; + } musb->async = mem->start;/* dma address for sync dma */
drivers/usb/typec/tps6598x.c +1 -1
@@ -109,7 +109,7 @@ tps6598x_block_read(struct tps6598x *tps, u8 reg, void *val, size_t len)u8 data[TPS_MAX_LEN +1 ];int ret; -if (WARN_ON (len +1 >sizeof (data))) +if (len +1 >sizeof (data))return -EINVAL ;if (!tps->i2c_protocol)
drivers/video/console/sticon.c +6 -6
@@ -291,13 +291,13 @@ static unsigned long sticon_getxy(struct vc_data *conp, unsigned long pos,static u8 sticon_build_attr (struct vc_data *conp,u8 color,u8 intens,u8 blink,u8 underline,u8 reverse,u8 italic) { -u8 attr = ((color &0x70 ) >>1 ) | ((color &7 )); +u8 fg = color &7 ; +u8 bg = (color &0x70 ) >>4 ; -if (reverse) { - color = ((color >>3 ) &0x7 ) | ((color &0x7 ) <<3 ); - } - -return attr; +if (reverse) +return (fg <<3 ) | bg; +else +return (bg <<3 ) | fg; }static void sticon_invert_region (struct vc_data *conp,u16 *p,int count)
fs/btrfs/async-thread.c +14 -0
@@ -237,6 +237,13 @@ static void run_ordered_work(struct __btrfs_workqueue *wq, ordered_list);if (!test_bit (WORK_DONE_BIT , &work->flags))break ; +/* +* Orders all subsequent loads after reading WORK_DONE_BIT, +* paired with the smp_mb__before_atomic in btrfs_work_helper +* this guarantees that the ordered function will see all +* updates from ordinary work function. +*/ +smp_rmb ();/* * we are going to call the ordered done function, but
@@ -325,6 +332,13 @@ static void btrfs_work_helper(struct work_struct *normal_work)thresh_exec_hook (wq); work->func (work);if (need_order) { +/* +* Ensures all memory accesses done in the work function are +* ordered before setting the WORK_DONE_BIT. Ensuring the thread +* which is going to executed the ordered work sees them. +* Pairs with the smp_rmb in run_ordered_work. +*/ +smp_mb__before_atomic ();set_bit (WORK_DONE_BIT , &work->flags);run_ordered_work (wq, work); }
fs/udf/dir.c +30 -2
@@ -31,6 +31,7 @@#include <linux/mm.h> #include <linux/slab.h> #include <linux/bio.h> +#include <linux/iversion.h> #include "udf_i.h" #include "udf_sb.h"
@@ -44,7 +45,7 @@ static int udf_readdir(struct file *file, struct dir_context *ctx)struct fileIdentDesc *fi =NULL ;struct fileIdentDesc cfi;udf_pblk_t block, iblock; -loff_t nf_pos; +loff_t nf_pos, emit_pos =0 ;int flen;unsigned char *fname =NULL , *copy_name =NULL ;unsigned char *nameptr;
@@ -58,6 +59,7 @@ static int udf_readdir(struct file *file, struct dir_context *ctx)int i, num, ret =0 ;struct extent_position epos = {NULL ,0 , {0 ,0 } };struct super_block *sb = dir->i_sb; +bool pos_valid = false;if (ctx->pos ==0 ) {if (!dir_emit_dot (file, ctx))
@@ -68,6 +70,21 @@ static int udf_readdir(struct file *file, struct dir_context *ctx)if (nf_pos >= size) goto out; +/* +* Something changed since last readdir (either lseek was called or dir +* changed)? We need to verify the position correctly points at the +* beginning of some dir entry so that the directory parsing code does +* not get confused. Since UDF does not have any reliable way of +* identifying beginning of dir entry (names are under user control), +* we need to scan the directory from the beginning. +*/ +if (!inode_eq_iversion (dir, file->f_version)) { + emit_pos = nf_pos; + nf_pos =0 ; + }else { + pos_valid = true; + } + fname =kmalloc (UDF_NAME_LEN ,GFP_NOFS );if (!fname) { ret = -ENOMEM ;
@@ -123,13 +140,21 @@ static int udf_readdir(struct file *file, struct dir_context *ctx)while (nf_pos < size) {struct kernel_lb_addr tloc; +loff_t cur_pos = nf_pos; - ctx->pos = (nf_pos >>2 ) +1 ; +/* Update file position only if we got past the current one */ +if (nf_pos >= emit_pos) { + ctx->pos = (nf_pos >>2 ) +1 ; + pos_valid = true; + } fi =udf_fileident_read (dir, &nf_pos, &fibh, &cfi, &epos, &eloc, &elen, &offset);if (!fi) goto out; +/* Still not at offset where user asked us to read from? */ +if (cur_pos < emit_pos) +continue ; liu =le16_to_cpu (cfi.lengthOfImpUse); lfi = cfi.lengthFileIdent;
@@ -187,8 +212,11 @@ static int udf_readdir(struct file *file, struct dir_context *ctx) }/* end while */ ctx->pos = (nf_pos >>2 ) +1 ; + pos_valid = true; out: +if (pos_valid) + file->f_version =inode_query_iversion (dir);if (fibh.sbh != fibh.ebh)brelse (fibh.ebh);brelse (fibh.sbh);
fs/udf/namei.c +3 -0
@@ -30,6 +30,7 @@#include <linux/sched.h> #include <linux/crc-itu-t.h> #include <linux/exportfs.h> +#include <linux/iversion.h> static inline int udf_match (int len1,const unsigned char *name1,int len2,const unsigned char *name2)
@@ -135,6 +136,8 @@ int udf_write_fi(struct inode *inode, struct fileIdentDesc *cfi,mark_buffer_dirty_inode (fibh->ebh, inode);mark_buffer_dirty_inode (fibh->sbh, inode); } +inode_inc_iversion (inode); +return 0 ; }
fs/udf/super.c +2 -0
@@ -57,6 +57,7 @@#include <linux/crc-itu-t.h> #include <linux/log2.h> #include <asm/byteorder.h> +#include <linux/iversion.h> #include "udf_sb.h" #include "udf_i.h"
@@ -149,6 +150,7 @@ static struct inode *udf_alloc_inode(struct super_block *sb)init_rwsem (&ei->i_data_sem); ei->cached_extent.lstart =-1 ;spin_lock_init (&ei->i_extent_cache_lock); +inode_set_iversion (&ei->vfs_inode,1 );return &ei->vfs_inode; }
include/asm-generic/tlb.h +40 -15
108 lines not on this page · raw message
include/linux/virtio_net.h +6 -1
@@ -120,10 +120,15 @@ static inline int virtio_net_hdr_to_skb(struct sk_buff *skb,if (hdr->gso_type !=VIRTIO_NET_HDR_GSO_NONE ) {u16 gso_size =__virtio16_to_cpu (little_endian, hdr->gso_size); +unsigned int nh_off = p_off;struct skb_shared_info *shinfo =skb_shinfo (skb); +/* UFO may not include transport header in gso_size. */ +if (gso_type &SKB_GSO_UDP ) + nh_off -= thlen; +/* Too small packets are not really GSO ones. */ -if (skb->len - p_off > gso_size) { +if (skb->len - nh_off > gso_size) { shinfo->gso_size = gso_size; shinfo->gso_type = gso_type;
include/rdma/rdma_netlink.h +1 -1
@@ -30,7 +30,7 @@ enum rdma_nl_flags {* constant as well and the compiler checks they are the same. */ #define MODULE_ALIAS_RDMA_NETLINK (_index, _val) \ - static inline void __chk_##_index(void) \ + static inline void __maybe_unused __chk_##_index(void) \ { \ BUILD_BUG_ON(_index != _val); \ } \
include/sound/hdaudio_ext.h +2 -0
@@ -88,6 +88,8 @@ struct hdac_ext_stream *snd_hdac_ext_stream_assign(struct hdac_bus *bus,struct snd_pcm_substream *substream, int type);void snd_hdac_ext_stream_release (struct hdac_ext_stream *azx_dev,int type); +void snd_hdac_ext_stream_decouple_locked (struct hdac_bus *bus, +struct hdac_ext_stream *azx_dev,bool decouple);void snd_hdac_ext_stream_decouple (struct hdac_bus *bus,struct hdac_ext_stream *azx_dev,bool decouple);void snd_hdac_ext_stop_streams (struct hdac_bus *bus);
include/target/target_core_base.h +4 -2
@@ -781,8 +781,9 @@ struct se_device {atomic_long_t read_bytes;atomic_long_t write_bytes;/* Active commands on this virtual SE device */ -atomic_t simple_cmds; -atomic_t dev_ordered_sync; +atomic_t non_ordered; +bool ordered_sync_in_progress; +atomic_t delayed_cmd_count;atomic_t dev_qf_count;u32 export_count;spinlock_t delayed_cmd_lock;
@@ -804,6 +805,7 @@ struct se_device {struct list_head dev_sep_list;struct list_head dev_tmr_list;struct work_struct qf_work_queue; +struct work_struct delayed_cmd_work;struct list_head delayed_cmd_list;struct list_head state_list;struct list_head qf_cmd_list;
include/trace/events/f2fs.h +6 -6
@@ -793,20 +793,20 @@ TRACE_EVENT(f2fs_lookup_start,TP_STRUCT__entry (__field (dev_t ,dev )__field (ino_t, ino) - __field(const char *, name) + __string(name, dentry->d_name.name) __field(unsigned int, flags) ),TP_fast_assign ( __entry->dev = dir->i_sb->s_dev; __entry->ino = dir->i_ino; - __entry->name = dentry->d_name.name; +__assign_str (name, dentry->d_name.name); __entry->flags = flags; ),TP_printk ("dev = (%d,%d), pino = %lu, name:%s, flags:%u" ,show_dev_ino (__entry), - __entry->name, +__get_str (name), __entry->flags) );
@@ -820,7 +820,7 @@ TRACE_EVENT(f2fs_lookup_end,TP_STRUCT__entry (__field (dev_t ,dev )__field (ino_t, ino) - __field(const char *, name) + __string(name, dentry->d_name.name)__field (nid_t, cino)__field (int, err) ),
@@ -828,14 +828,14 @@ TRACE_EVENT(f2fs_lookup_end,TP_fast_assign ( __entry->dev = dir->i_sb->s_dev; __entry->ino = dir->i_ino; - __entry->name = dentry->d_name.name; +__assign_str (name, dentry->d_name.name); __entry->cino = ino; __entry->err = err; ),TP_printk ("dev = (%d,%d), pino = %lu, name:%s, ino:%u, err:%d" ,show_dev_ino (__entry), - __entry->name, +__get_str (name), __entry->cino, __entry->err) );
ipc/util.c +3 -3
@@ -446,8 +446,8 @@ static int ipcget_public(struct ipc_namespace *ns, struct ipc_ids *ids,static void ipc_kht_remove (struct ipc_ids *ids,struct kern_ipc_perm *ipcp) {if (ipcp->key !=IPC_PRIVATE ) -rhashtable_remove_fast (&ids->key_ht, &ipcp->khtnode, - ipc_kht_params); +WARN_ON_ONCE (rhashtable_remove_fast (&ids->key_ht, &ipcp->khtnode, + ipc_kht_params)); }/**
@@ -462,7 +462,7 @@ void ipc_rmid(struct ipc_ids *ids, struct kern_ipc_perm *ipcp) {int idx =ipcid_to_idx (ipcp->id); -idr_remove (&ids->ipcs_idr, idx); +WARN_ON_ONCE (idr_remove (&ids->ipcs_idr, idx) != ipcp);ipc_kht_remove (ids, ipcp); ids->in_use--; ipcp->deleted = true;
kernel/events/core.c +5 -5
@@ -6536,7 +6536,6 @@ void perf_output_sample(struct perf_output_handle *handle,static u64 perf_virt_to_phys (u64 virt) {u64 phys_addr =0 ; -struct page *p =NULL ;if (!virt)return 0 ;
@@ -6555,14 +6554,15 @@ static u64 perf_virt_to_phys(u64 virt)* If failed, leave phys_addr as 0. */ if (current->mm !=NULL ) { +struct page *p; +pagefault_disable (); -if (__get_user_pages_fast (virt,1 ,0 , &p) ==1 ) +if (__get_user_pages_fast (virt,1 ,0 , &p) ==1 ) { phys_addr =page_to_phys (p) + virt %PAGE_SIZE ; +put_page (p); + }pagefault_enable (); } - -if (p) -put_page (p); }return phys_addr;
kernel/sched/core.c +3 -0
@@ -2482,6 +2482,9 @@ void wake_up_if_idle(int cpu)bool cpus_share_cache (int this_cpu,int that_cpu) { +if (this_cpu == that_cpu) +return true; +return per_cpu (sd_llc_id, this_cpu) ==per_cpu (sd_llc_id, that_cpu); }#endif /* CONFIG_SMP */
kernel/trace/trace_events_hist.c +36 -5
90 lines not on this page · raw message
mm/hugetlb.c +19 -4
@@ -3589,6 +3589,7 @@ void __unmap_hugepage_range(struct mmu_gather *tlb, struct vm_area_struct *vma,struct hstate *h =hstate_vma (vma);unsigned long sz =huge_page_size (h);struct mmu_notifier_range range; +bool force_flush = false;WARN_ON (!is_vm_hugetlb_page (vma));BUG_ON (start & ~huge_page_mask (h));
@@ -3617,10 +3618,8 @@ void __unmap_hugepage_range(struct mmu_gather *tlb, struct vm_area_struct *vma, ptl =huge_pte_lock (h, mm, ptep);if (huge_pmd_unshare (mm, &address, ptep)) {spin_unlock (ptl); -/* -* We just unmapped a page of PMDs by clearing a PUD. -* The caller's TLB flush range should cover this area. -*/ +tlb_flush_pmd_range (tlb, address &PUD_MASK ,PUD_SIZE ); + force_flush = true;continue ; }
@@ -3677,6 +3676,22 @@ void __unmap_hugepage_range(struct mmu_gather *tlb, struct vm_area_struct *vma, }mmu_notifier_invalidate_range_end (&range);tlb_end_vma (tlb, vma); + +/* +* If we unshared PMDs, the TLB flush was not recorded in mmu_gather. We +* could defer the flush until now, since by holding i_mmap_rwsem we +* guaranteed that the last refernece would not be dropped. But we must +* do the flushing before we return, as otherwise i_mmap_rwsem will be +* dropped and the last reference to the shared PMDs page might be +* dropped as well. +* +* In theory we could defer the freeing of the PMD pages as well, but +* huge_pmd_unshare() relies on the exact page_count for the PMD page to +* detect sharing, so we cannot defer the release of the page either. +* Instead, do flush now. +*/ +if (force_flush) +tlb_flush_mmu_tlbonly (tlb); } void __unmap_hugepage_range_final(struct mmu_gather *tlb,
mm/slab.h +1 -1
@@ -211,7 +211,7 @@ static inline slab_flags_t kmem_cache_flags(unsigned int object_size,#define SLAB_CACHE_FLAGS (SLAB_NOLEAKTRACE | SLAB_RECLAIM_ACCOUNT | \ SLAB_TEMPORARY | SLAB_ACCOUNT)#else -#define SLAB_CACHE_FLAGS (0) +#define SLAB_CACHE_FLAGS (SLAB_NOLEAKTRACE)#endif /* Common flags available with current configuration */
net/batman-adv/fragmentation.c +16 -10
@@ -391,6 +391,7 @@ bool batadv_frag_skb_fwd(struct sk_buff *skb,/** * batadv_frag_create() - create a fragment from skb +* @net_dev: outgoing device for fragment * @skb: skb to create fragment from * @frag_head: header to use in new fragment * @fragment_size: size of new fragment
@@ -401,22 +402,25 @@ bool batadv_frag_skb_fwd(struct sk_buff *skb,* * Return: the new fragment, NULL on error. */ -static struct sk_buff *batadv_frag_create (struct sk_buff *skb, +static struct sk_buff *batadv_frag_create (struct net_device *net_dev, +struct sk_buff *skb,struct batadv_frag_packet *frag_head,unsigned int fragment_size) { +unsigned int ll_reserved =LL_RESERVED_SPACE (net_dev); +unsigned int tailroom = net_dev->needed_tailroom;struct sk_buff *skb_fragment;unsigned int header_size =sizeof (*frag_head);unsigned int mtu = fragment_size + header_size; - skb_fragment =netdev_alloc_skb (NULL , mtu +ETH_HLEN ); + skb_fragment =dev_alloc_skb (ll_reserved + mtu + tailroom);if (!skb_fragment) goto err; skb_fragment->priority = skb->priority;/* Eat the last mtu-bytes of the skb */ -skb_reserve (skb_fragment, header_size +ETH_HLEN ); +skb_reserve (skb_fragment, ll_reserved + header_size);skb_split (skb, skb_fragment, skb->len - fragment_size);/* Add the header */
@@ -439,11 +443,12 @@ int batadv_frag_send_packet(struct sk_buff *skb,struct batadv_orig_node *orig_node, struct batadv_neigh_node *neigh_node) { + struct net_device *net_dev = neigh_node->if_incoming->net_dev;struct batadv_priv *bat_priv;struct batadv_hard_iface *primary_if =NULL ;struct batadv_frag_packet frag_header;struct sk_buff *skb_fragment; -unsigned int mtu = neigh_node->if_incoming->net_dev->mtu; +unsigned int mtu = net_dev->mtu;unsigned int header_size =sizeof (frag_header);unsigned int max_fragment_size, num_fragments;int ret;
@@ -503,7 +508,7 @@ int batadv_frag_send_packet(struct sk_buff *skb, goto put_primary_if; } - skb_fragment =batadv_frag_create (skb, &frag_header, + skb_fragment =batadv_frag_create (net_dev, skb, &frag_header, max_fragment_size);if (!skb_fragment) { ret = -ENOMEM ;
@@ -522,13 +527,14 @@ int batadv_frag_send_packet(struct sk_buff *skb, frag_header.no++; } -/* Make room for the fragment header. */ -if (batadv_skb_head_push (skb, header_size) <0 || -pskb_expand_head (skb, header_size +ETH_HLEN ,0 ,GFP_ATOMIC ) <0 ) { - ret = -ENOMEM ; +/* make sure that there is at least enough head for the fragmentation +* and ethernet headers +*/ + ret =skb_cow_head (skb,ETH_HLEN + header_size); +if (ret <0 ) goto put_primary_if; - } +skb_push (skb, header_size);memcpy (skb->data, &frag_header, header_size);/* Send the last fragment */
net/batman-adv/hard-interface.c +3 -0
@@ -554,6 +554,9 @@ static void batadv_hardif_recalc_extra_skbroom(struct net_device *soft_iface) needed_headroom = lower_headroom + (lower_header_len -ETH_HLEN ); needed_headroom +=batadv_max_header_len (); +/* fragmentation headers don't strip the unicast/... header */ + needed_headroom +=sizeof (struct batadv_frag_packet ); + soft_iface->needed_headroom = needed_headroom; soft_iface->needed_tailroom = lower_tailroom; }
net/nfc/core.c +18 -14
@@ -94,13 +94,13 @@ int nfc_dev_up(struct nfc_dev *dev)device_lock (&dev->dev); -if (dev->rfkill &&rfkill_blocked (dev->rfkill)) { - rc = -ERFKILL ; +if (!device_is_registered (&dev->dev)) { + rc = -ENODEV ; goto error; } -if (!device_is_registered (&dev->dev)) { - rc = -ENODEV ; +if (dev->rfkill &&rfkill_blocked (dev->rfkill)) { + rc = -ERFKILL ; goto error; }
@@ -1118,11 +1118,7 @@ int nfc_register_device(struct nfc_dev *dev)if (rc)pr_err ("Could not register llcp device\n" ); - rc =nfc_genl_device_added (dev); -if (rc) -pr_debug ("The userspace won't be notified that the device %s was added\n" , -dev_name (&dev->dev)); - +device_lock (&dev->dev); dev->rfkill =rfkill_alloc (dev_name (&dev->dev), &dev->dev,RFKILL_TYPE_NFC , &nfc_rfkill_ops, dev);if (dev->rfkill) {
@@ -1131,6 +1127,12 @@ int nfc_register_device(struct nfc_dev *dev) dev->rfkill =NULL ; } } +device_unlock (&dev->dev); + + rc =nfc_genl_device_added (dev); +if (rc) +pr_debug ("The userspace won't be notified that the device %s was added\n" , +dev_name (&dev->dev));return 0 ; }
@@ -1147,10 +1149,17 @@ void nfc_unregister_device(struct nfc_dev *dev)pr_debug ("dev_name=%s\n" ,dev_name (&dev->dev)); + rc =nfc_genl_device_removed (dev); +if (rc) +pr_debug ("The userspace won't be notified that the device %s " +"was removed\n" ,dev_name (&dev->dev)); + +device_lock (&dev->dev);if (dev->rfkill) {rfkill_unregister (dev->rfkill);rfkill_destroy (dev->rfkill); } +device_unlock (&dev->dev);if (dev->ops->check_presence) {device_lock (&dev->dev);
@@ -1160,11 +1169,6 @@ void nfc_unregister_device(struct nfc_dev *dev)cancel_work_sync (&dev->check_pres_work); } - rc =nfc_genl_device_removed (dev); -if (rc) -pr_debug ("The userspace won't be notified that the device %s " -"was removed\n" ,dev_name (&dev->dev)); -nfc_llcp_unregister_device (dev);mutex_lock (&nfc_devlist_mutex);
net/nfc/nci/core.c +7 -4
@@ -144,12 +144,15 @@ inline int nci_request(struct nci_dev *ndev, {int rc; -if (!test_bit (NCI_UP , &ndev->flags)) -return -ENETDOWN ; -/* Serialize all requests */ mutex_lock (&ndev->req_lock); - rc =__nci_request (ndev, req, opt, timeout); +/* check the state after obtaing the lock against any races +* from nci_close_device when the device gets removed. +*/ +if (test_bit (NCI_UP , &ndev->flags)) + rc =__nci_request (ndev, req, opt, timeout); +else + rc = -ENETDOWN ;mutex_unlock (&ndev->req_lock);return rc;
net/sched/act_mirred.c +8 -3
@@ -19,6 +19,7 @@#include <linux/if_arp.h> #include <net/net_namespace.h> #include <net/netlink.h> +#include <net/dst.h> #include <net/pkt_sched.h> #include <net/pkt_cls.h> #include <linux/tc_act/tc_mirred.h>
@@ -218,6 +219,7 @@ static int tcf_mirred_act(struct sk_buff *skb, const struct tc_action *a,bool want_ingress;bool is_redirect;bool expects_nh; +bool at_ingress;int m_eaction;int mac_len;bool at_nh;
@@ -253,7 +255,8 @@ static int tcf_mirred_act(struct sk_buff *skb, const struct tc_action *a,* ingress - that covers the TC S/W datapath. */ is_redirect =tcf_mirred_is_act_redirect (m_eaction); - use_reinsert =skb_at_tc_ingress (skb) && is_redirect && + at_ingress =skb_at_tc_ingress (skb); + use_reinsert = at_ingress && is_redirect &&tcf_mirred_can_reinsert (retval);if (!use_reinsert) { skb2 =skb_clone (skb,GFP_ATOMIC );
@@ -261,10 +264,12 @@ static int tcf_mirred_act(struct sk_buff *skb, const struct tc_action *a, goto out; } + want_ingress =tcf_mirred_act_wants_ingress (m_eaction); +/* All mirred/redirected skbs should clear previous ct info */ nf_reset_ct (skb2); - - want_ingress =tcf_mirred_act_wants_ingress (m_eaction); +if (want_ingress && !at_ingress)/* drop dst for egress -> ingress */ +skb_dst_drop (skb2); expects_nh = want_ingress || !m_mac_header_xmit; at_nh = skb->data ==skb_network_header (skb);
net/wireless/util.c +1 -0
@@ -991,6 +991,7 @@ int cfg80211_change_iface(struct cfg80211_registered_device *rdev,switch (otype) {case NL80211_IFTYPE_AP : +case NL80211_IFTYPE_P2P_GO :cfg80211_stop_ap (rdev, dev, true);break ;case NL80211_IFTYPE_ADHOC :
sound/core/Makefile +2 -0
@@ -9,7 +9,9 @@ ifneq ($(CONFIG_SND_PROC_FS),) snd-y += info.o snd-$(CONFIG_SND_OSSEMUL) += info_oss.o endif +ifneq ($(CONFIG_M68K),y) snd-$(CONFIG_ISA_DMA_API) += isadma.o +endif snd-$(CONFIG_SND_OSSEMUL) += sound_oss.o snd-$(CONFIG_SND_VMASTER) += vmaster.o snd-$(CONFIG_SND_JACK) += ctljack.o jack.o
sound/hda/ext/hdac_ext_stream.c +28 -18
116 lines not on this page · raw message
sound/hda/hdac_stream.c +2 -2
@@ -289,6 +289,7 @@ struct hdac_stream *snd_hdac_stream_assign(struct hdac_bus *bus,int key = (substream->pcm->device <<16 ) | (substream->number <<2 ) | (substream->stream +1 ); +spin_lock_irq (&bus->reg_lock);list_for_each_entry (azx_dev, &bus->stream_list, list) {if (azx_dev->direction != substream->stream)continue ;
@@ -302,13 +303,12 @@ struct hdac_stream *snd_hdac_stream_assign(struct hdac_bus *bus, res = azx_dev; }if (res) { -spin_lock_irq (&bus->reg_lock); res->opened =1 ; res->running =0 ; res->assigned_key = key; res->substream = substream; -spin_unlock_irq (&bus->reg_lock); } +spin_unlock_irq (&bus->reg_lock);return res; }EXPORT_SYMBOL_GPL (snd_hdac_stream_assign);
sound/isa/Kconfig +1 -1
@@ -22,7 +22,7 @@ config SND_SB16_DSP menuconfig SND_ISA bool "ISA sound devices" depends on ISA || COMPILE_TEST - depends on ISA_DMA_API + depends on ISA_DMA_API && !M68K default y help Support for sound devices connected via the ISA bus.
sound/isa/gus/gus_dma.c +2 -0
@@ -126,6 +126,8 @@ static void snd_gf1_dma_interrupt(struct snd_gus_card * gus) } block =snd_gf1_dma_next_block (gus);spin_unlock (&gus->dma_lock); +if (!block) +return ;snd_gf1_dma_program (gus, block->addr, block->buf_addr, block->count, (unsigned short ) block->cmd);kfree (block);#if 0
sound/pci/Kconfig +1 -0
@@ -279,6 +279,7 @@ config SND_CS46XX_NEW_DSP config SND_CS5530 tristate "CS5530 Audio" depends on ISA_DMA_API && (X86_32 || COMPILE_TEST) + depends on !M68K select SND_SB16_DSP help Say Y here to include support for audio on Cyrix/NatSemi CS5530 chips.
sound/soc/codecs/nau8824.c +40 -0
@@ -8,6 +8,7 @@#include <linux/module.h> #include <linux/delay.h> +#include <linux/dmi.h> #include <linux/init.h> #include <linux/i2c.h> #include <linux/regmap.h>
@@ -27,6 +28,12 @@#include "nau8824.h" +#define NAU8824_JD_ACTIVE_HIGH BIT(0) + +static int nau8824_quirk; +static int quirk_override =-1 ; +module_param_named (quirk, quirk_override, uint,0444 ); +MODULE_PARM_DESC (quirk,"Board-specific quirk override" );static int nau8824_config_sysclk (struct nau8824 *nau8824,int clk_id,unsigned int freq);
@@ -1875,6 +1882,34 @@ static int nau8824_read_device_properties(struct device *dev,return 0 ; } +/* Please keep this list alphabetically sorted */ +static const struct dmi_system_id nau8824_quirk_table[] = { + { +/* Cyberbook T116 rugged tablet */ + .matches = { +DMI_EXACT_MATCH (DMI_BOARD_VENDOR ,"Default string" ), +DMI_EXACT_MATCH (DMI_BOARD_NAME ,"Cherry Trail CR" ), +DMI_EXACT_MATCH (DMI_PRODUCT_SKU ,"20170531" ), + }, + .driver_data = (void *)(NAU8824_JD_ACTIVE_HIGH ), + }, + {} +}; + +static void nau8824_check_quirks (void ) +{ +const struct dmi_system_id *dmi_id; + +if (quirk_override !=-1 ) { + nau8824_quirk = quirk_override; +return ; + } + + dmi_id =dmi_first_match (nau8824_quirk_table); +if (dmi_id) + nau8824_quirk = (unsigned long )dmi_id->driver_data; +} +static int nau8824_i2c_probe (struct i2c_client *i2c,const struct i2c_device_id *id) {
@@ -1899,6 +1934,11 @@ static int nau8824_i2c_probe(struct i2c_client *i2c, nau8824->irq = i2c->irq;sema_init (&nau8824->jd_sem,1 ); +nau8824_check_quirks (); + +if (nau8824_quirk &NAU8824_JD_ACTIVE_HIGH ) + nau8824->jkdet_polarity =0 ; +nau8824_print_device_properties (nau8824); ret =regmap_read (nau8824->regmap,NAU8824_REG_I2C_DEVICE_ID , &value);
sound/soc/soc-dapm.c +23 -6
@@ -2542,8 +2542,13 @@ static struct snd_soc_dapm_widget *dapm_find_widget(return NULL ; } -static int snd_soc_dapm_set_pin (struct snd_soc_dapm_context *dapm, -const char *pin,int status) +/* +* set the DAPM pin status: +* returns 1 when the value has been updated, 0 when unchanged, or a negative +* error code; called from kcontrol put callback +*/ +static int __snd_soc_dapm_set_pin (struct snd_soc_dapm_context *dapm, +const char *pin,int status) {struct snd_soc_dapm_widget *w =dapm_find_widget (dapm, pin, true);int ret =0 ;
@@ -2569,6 +2574,18 @@ static int snd_soc_dapm_set_pin(struct snd_soc_dapm_context *dapm,return ret; } +/* +* similar as __snd_soc_dapm_set_pin(), but returns 0 when successful; +* called from several API functions below +*/ +static int snd_soc_dapm_set_pin (struct snd_soc_dapm_context *dapm, +const char *pin,int status) +{ +int ret =__snd_soc_dapm_set_pin (dapm, pin, status); + +return ret <0 ? ret :0 ; +} +/** * snd_soc_dapm_sync_unlocked - scan and power dapm paths * @dapm: DAPM context
@@ -3584,10 +3601,10 @@ int snd_soc_dapm_put_pin_switch(struct snd_kcontrol *kcontrol,const char *pin = (const char *)kcontrol->private_value;int ret; -if (ucontrol->value.integer.value[0 ]) - ret =snd_soc_dapm_enable_pin (&card->dapm, pin); -else - ret =snd_soc_dapm_disable_pin (&card->dapm, pin); +mutex_lock_nested (&card->dapm_mutex,SND_SOC_DAPM_CLASS_RUNTIME ); + ret =__snd_soc_dapm_set_pin (&card->dapm, pin, + !!ucontrol->value.integer.value[0 ]); +mutex_unlock (&card->dapm_mutex);snd_soc_dapm_sync (&card->dapm);return ret;
sound/soc/sof/intel/hda-dai.c +4 -3
@@ -67,6 +67,7 @@ static struct hdac_ext_stream *return NULL ; } +spin_lock_irq (&bus->reg_lock);list_for_each_entry (stream, &bus->stream_list, list) {struct hdac_ext_stream *hstream =stream_to_hdac_ext_stream (stream);
@@ -106,12 +107,12 @@ static struct hdac_ext_stream ** is updated in snd_hdac_ext_stream_decouple(). */ if (!res->decoupled) -snd_hdac_ext_stream_decouple (bus, res, true); -spin_lock_irq (&bus->reg_lock); +snd_hdac_ext_stream_decouple_locked (bus, res, true); + res->link_locked =1 ; res->link_substream = substream; -spin_unlock_irq (&bus->reg_lock); } +spin_unlock_irq (&bus->reg_lock);return res; }
tools/perf/bench/futex-lock-pi.c +1 -0
@@ -224,6 +224,7 @@ int bench_futex_lock_pi(int argc, const char **argv)print_summary ();free (worker); +perf_cpu_map__put (cpu);return ret; err:usage_with_options (bench_futex_lock_pi_usage, options);
tools/perf/bench/futex-requeue.c +1 -0
@@ -215,6 +215,7 @@ int bench_futex_requeue(int argc, const char **argv)print_summary ();free (worker); +perf_cpu_map__put (cpu);return ret; err:usage_with_options (bench_futex_requeue_usage, options);
tools/perf/bench/futex-wake-parallel.c +1 -0
@@ -319,6 +319,7 @@ int bench_futex_wake_parallel(int argc, const char **argv)print_summary ();free (blocked_worker); +perf_cpu_map__put (cpu); return ret; }#endif /* HAVE_PTHREAD_BARRIER */
tools/perf/bench/futex-wake.c +1 -0
@@ -209,5 +209,6 @@ int bench_futex_wake(int argc, const char **argv)print_summary ();free (worker); +perf_cpu_map__put (cpu);return ret; }
tools/perf/tests/shell/record+zstd_comp_decomp.sh +1 -1
@@ -12,7 +12,7 @@ skip_if_no_z_record() { collect_z_record() { echo "Collecting compressed record file:" - [[ "$(uname -m)" != s390x ]] && gflag='-g' + [ "$(uname -m)" != s390x ] && gflag='-g' $perf_tool record -o $trace_file $gflag -z -F 5000 -- \ dd count=500 if=/dev/urandom of=/dev/null }
tools/perf/util/bpf-event.c +5 -1
@@ -108,7 +108,11 @@ static int perf_env__fetch_btf(struct perf_env *env, node->data_size = data_size;memcpy (node->data, data, data_size); -perf_env__insert_btf (env, node); +if (!perf_env__insert_btf (env, node)) {
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.