linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* Linux 4.8.6
@ 2016-10-31 12:47 Greg KH
  2016-10-31 12:47 ` Greg KH
  2016-10-31 20:26 ` Levin, Alexander
  0 siblings, 2 replies; 4+ messages in thread
From: Greg KH @ 2016-10-31 12:47 UTC (permalink / raw)
  To: linux-kernel, Andrew Morton, torvalds, stable; +Cc: lwn, Jiri Slaby

[-- Attachment #1: Type: text/plain, Size: 19453 bytes --]

I'm announcing the release of the 4.8.6 kernel.

All users of the 4.8 kernel series must upgrade.

The updated 4.8.y git tree can be found at:
	git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-4.8.y
and can be browsed at the normal kernel.org git web browser:
	http://git.kernel.org/?p=linux/kernel/git/stable/linux-stable.git;a=summary

thanks,

greg k-h

------------

 Makefile                                                   |    2 
 arch/arm/boot/dts/arm-realview-eb.dtsi                     |   23 
 arch/arm/boot/dts/bcm958625hr.dts                          |    3 
 arch/arm/boot/dts/omap3-overo-common-lcd35.dtsi            |    2 
 arch/arm/boot/dts/sun9i-a80.dtsi                           |    3 
 arch/arm/crypto/ghash-ce-glue.c                            |   24 
 arch/arm/mach-pxa/corgi_pm.c                               |   13 
 arch/arm/mach-pxa/pxa_cplds_irqs.c                         |   24 
 arch/arm/mach-pxa/sharpsl_pm.c                             |    2 
 arch/arm/mach-pxa/sharpsl_pm.h                             |    2 
 arch/arm/mach-pxa/spitz_pm.c                               |    9 
 arch/powerpc/include/asm/book3s/64/pgtable.h               |    2 
 arch/powerpc/kernel/nvram_64.c                             |    6 
 arch/powerpc/kernel/process.c                              |   22 
 arch/powerpc/mm/hugetlbpage.c                              |    7 
 arch/x86/kernel/early-quirks.c                             |    9 
 crypto/gcm.c                                               |    2 
 drivers/char/hw_random/omap-rng.c                          |    4 
 drivers/clk/bcm/clk-bcm2835.c                              |   23 
 drivers/clk/clk-divider.c                                  |    2 
 drivers/clk/clk-qoriq.c                                    |    6 
 drivers/clk/clk.c                                          |   14 
 drivers/clk/imx/clk-imx35.c                                |    2 
 drivers/clk/qcom/Kconfig                                   |    2 
 drivers/clk/qcom/gcc-msm8996.c                             |    4 
 drivers/crypto/ccp/ccp-dmaengine.c                         |    2 
 drivers/crypto/marvell/cesa.c                              |    1 
 drivers/crypto/marvell/hash.c                              |   15 
 drivers/dma/ipu/ipu_irq.c                                  |    9 
 drivers/gpu/drm/amd/amdgpu/amdgpu_ctx.c                    |    3 
 drivers/gpu/drm/amd/amdgpu/amdgpu_dpm.c                    |   14 
 drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c                    |    2 
 drivers/gpu/drm/amd/amdgpu/dce_v10_0.c                     |   23 
 drivers/gpu/drm/amd/amdgpu/dce_v11_0.c                     |   24 
 drivers/gpu/drm/amd/amdgpu/dce_v8_0.c                      |   48 +
 drivers/gpu/drm/amd/powerplay/eventmgr/eventactionchains.c |    2 
 drivers/gpu/drm/amd/powerplay/eventmgr/psm.c               |    3 
 drivers/gpu/drm/drm_prime.c                                |   17 
 drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c                  |    6 
 drivers/gpu/drm/i915/i915_drv.h                            |   36 -
 drivers/gpu/drm/i915/i915_gem_stolen.c                     |   23 
 drivers/gpu/drm/i915/intel_display.c                       |  216 +++++-
 drivers/gpu/drm/i915/intel_dp.c                            |   72 --
 drivers/gpu/drm/i915/intel_drv.h                           |   21 
 drivers/gpu/drm/i915/intel_hdmi.c                          |   43 -
 drivers/gpu/drm/i915/intel_panel.c                         |   32 
 drivers/gpu/drm/i915/intel_pm.c                            |  454 ++++++-------
 drivers/gpu/drm/i915/intel_sprite.c                        |   14 
 drivers/gpu/drm/i915/intel_uncore.c                        |    7 
 drivers/gpu/drm/radeon/r600_dpm.c                          |   15 
 drivers/gpu/drm/radeon/radeon_device.c                     |    5 
 drivers/gpu/drm/radeon/si_dpm.c                            |    2 
 drivers/gpu/drm/radeon/sislands_smc.h                      |    1 
 drivers/gpu/drm/vc4/vc4_drv.h                              |   19 
 drivers/gpu/drm/vc4/vc4_gem.c                              |   13 
 drivers/gpu/drm/vc4/vc4_render_cl.c                        |   21 
 drivers/gpu/drm/vc4/vc4_validate.c                         |   17 
 drivers/gpu/drm/vmwgfx/vmwgfx_execbuf.c                    |   76 +-
 drivers/hid/hid-ids.h                                      |    3 
 drivers/hid/usbhid/hid-quirks.c                            |    1 
 drivers/hwtracing/coresight/coresight-tmc.c                |    3 
 drivers/iio/dac/ad5755.c                                   |    2 
 drivers/iio/light/us5182d.c                                |    2 
 drivers/infiniband/hw/hfi1/qp.c                            |   14 
 drivers/infiniband/hw/mlx5/main.c                          |    1 
 drivers/infiniband/hw/qib/qib.h                            |    1 
 drivers/infiniband/hw/qib/qib_qp.c                         |   13 
 drivers/infiniband/hw/qib/qib_verbs.c                      |    2 
 drivers/infiniband/sw/rdmavt/qp.c                          |    9 
 drivers/net/ethernet/intel/i40e/i40e_client.c              |    1 
 drivers/net/ethernet/intel/i40e/i40e_main.c                |   57 -
 drivers/net/wireless/ath/ath10k/htt_rx.c                   |    2 
 drivers/net/wireless/ath/ath10k/mac.c                      |   22 
 drivers/net/wireless/ath/ath10k/txrx.c                     |    2 
 drivers/net/wireless/ath/ath10k/wmi.h                      |    5 
 drivers/net/wireless/intel/iwlwifi/iwl-nvm-parse.c         |   15 
 drivers/net/wireless/intel/iwlwifi/mvm/fw.c                |    5 
 drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c          |    5 
 drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c              |   12 
 drivers/net/wireless/intel/iwlwifi/mvm/sta.c               |   28 
 drivers/net/wireless/intel/iwlwifi/mvm/tx.c                |    6 
 drivers/net/wireless/marvell/mwifiex/join.c                |    3 
 drivers/net/wireless/marvell/mwifiex/sta_event.c           |    6 
 drivers/net/wireless/ralink/rt2x00/rt2x00usb.c             |    4 
 drivers/nvdimm/bus.c                                       |    2 
 drivers/nvdimm/core.c                                      |   73 +-
 drivers/pci/host/pci-aardvark.c                            |    8 
 drivers/pci/host/pci-host-common.c                         |    8 
 drivers/pci/host/pci-tegra.c                               |    7 
 drivers/pci/host/pci-versatile.c                           |    8 
 drivers/pci/host/pcie-designware.c                         |   21 
 drivers/pci/host/pcie-rcar.c                               |    9 
 drivers/pinctrl/qcom/pinctrl-msm.c                         |    2 
 drivers/power/bq24257_charger.c                            |   12 
 drivers/s390/char/con3270.c                                |   11 
 drivers/s390/cio/chsc.c                                    |   20 
 drivers/scsi/cxlflash/main.c                               |   18 
 drivers/scsi/mpt3sas/mpt3sas_scsih.c                       |    2 
 drivers/spi/spi-fsl-dspi.c                                 |    1 
 drivers/staging/android/ion/Kconfig                        |    1 
 drivers/staging/ks7010/ks_hostif.c                         |   12 
 drivers/staging/rtl8188eu/core/rtw_cmd.c                   |    4 
 drivers/staging/sm750fb/ddk750_mode.c                      |    2 
 drivers/uio/uio_dmem_genirq.c                              |    2 
 fs/9p/acl.c                                                |   40 -
 fs/btrfs/acl.c                                             |    6 
 fs/ceph/acl.c                                              |    6 
 fs/ext2/acl.c                                              |   12 
 fs/ext4/acl.c                                              |   12 
 fs/f2fs/acl.c                                              |    6 
 fs/gfs2/acl.c                                              |   12 
 fs/hfsplus/posix_acl.c                                     |    4 
 fs/jffs2/acl.c                                             |    9 
 fs/jfs/acl.c                                               |    6 
 fs/ocfs2/acl.c                                             |   10 
 fs/orangefs/acl.c                                          |   15 
 fs/posix_acl.c                                             |   31 
 fs/reiserfs/xattr_acl.c                                    |    8 
 fs/xfs/xfs_acl.c                                           |   13 
 include/drm/drmP.h                                         |    3 
 include/linux/hugetlb.h                                    |    6 
 include/linux/libnvdimm.h                                  |    2 
 include/linux/posix_acl.h                                  |    1 
 kernel/irq/generic-chip.c                                  |   21 
 mm/hugetlb.c                                               |   34 
 mm/memory_hotplug.c                                        |    4 
 sound/soc/intel/boards/bxt_da7219_max98357a.c              |   12 
 sound/soc/intel/boards/bxt_rt298.c                         |   14 
 sound/soc/soc-dapm.c                                       |    6 
 sound/soc/soc-topology.c                                   |    1 
 tools/perf/perf-sys.h                                      |    1 
 tools/perf/ui/browsers/hists.c                             |    7 
 tools/perf/ui/stdio/hist.c                                 |   14 
 tools/perf/util/data-convert-bt.c                          |    2 
 tools/perf/util/symbol-elf.c                               |    3 
 tools/perf/util/symbol.c                                   |    5 
 136 files changed, 1387 insertions(+), 854 deletions(-)

Alex Deucher (7):
      drm/amdgpu: fix IB alignment for UVD
      drm/amdgpu/dce10: disable hpd on local panels
      drm/amdgpu/dce8: disable hpd on local panels
      drm/amdgpu/dce11: disable hpd on local panels
      drm/radeon: narrow asic_init for virtualization
      drm/radeon/si/dpm: fix phase shedding setup
      drm/radeon: change vblank_time's calculation method to reduce computational error.

Amitkumar Karwar (1):
      mwifiex: fix failed to reconnect after interface disabled/enabled

Ard Biesheuvel (1):
      crypto: arm/ghash-ce - add missing async import/export

Arnaldo Carvalho de Melo (2):
      perf symbols: Check symbol_conf.allow_aliases for kallsyms loading too
      perf symbols: Fixup symbol sizes before picking best ones

Arnd Bergmann (2):
      staging: android ion/hisi: fix dependencies
      dmaengine: ipu: remove bogus NO_IRQ reference

Ashok Raj Nagarajan (2):
      ath10k: fix sending frame in management path in push txq logic
      ath10k: fix reporting channel survey data

Chen-Yu Tsai (4):
      ASoC: dapm: Fix possible uninitialized variable in snd_soc_dapm_get_volsw()
      ASoC: dapm: Fix value setting for _ENUM_DOUBLE MUX's second channel
      ASoC: dapm: Fix kcontrol creation for output driver widget
      ARM: dts: sun9i: Add missing #interrupt-cells to R_PIO pinctrl device node

Chris Wilson (3):
      drm/prime: Pass the right module owner through to dma_buf_export()
      drm/i915: Just clear the mmiodebug before a register access
      drm/i915: Unalias obj->phys_handle and obj->userptr

Christophe JAILLET (1):
      iio: light: us5182d: Add missing error code assignment before test

Christophe Jaillet (1):
      rt2x00usb: Fix error return code

Christophe Leroy (1):
      powerpc: Fix usage of _PAGE_RO in hugepage

Colin Ian King (1):
      iio: ad5755: fix off-by-one on devnr limit check

Cyril Bur (2):
      powerpc: Always restore FPU/VEC/VSX if hardware transactional memory in use
      powerpc: Add check_if_tm_restore_required() to giveup_all()

Dan Carpenter (1):
      i40e: remove a stray unlock

Dave Gerlach (1):
      hwrng: omap - Only fail if pm_runtime_get_sync returns < 0

David Weinehall (1):
      Revert "drm/i915: Check live status before reading edid"

Dennis Dalessandro (1):
      IB/qib: Remove qpt_mask global

Eric Anholt (2):
      drm/vc4: Fix races when the CS reads from render targets.
      clk: bcm2835: Skip PLLC clocks when deciding on a new clock parent

Geert Uytterhoeven (1):
      clk: divider: Fix clk_divider_round_rate() to use clk_readl()

Georges Savoundararadj (1):
      power: bq24257: Fix use of uninitialized pointer bq->charger

Gerald Schaefer (2):
      mm/hugetlb: check for reserved hugepages during memory offline
      mm/hugetlb: improve locking in dissolve_free_huge_pages()

Grazvydas Ignotas (1):
      drm/amdgpu/dce11: add missing drm_mode_config_cleanup call

Greg Kroah-Hartman (1):
      Linux 4.8.6

Haim Dreyfuss (1):
      iwlwifi: check for valid ethernet address provided by OEM

Jacob Keller (1):
      i40e: fix broken i40e_config_rss_aq function

Jan Kara (1):
      posix_acl: Clear SGID bit when setting file permissions

Jan Viktorin (1):
      uio: fix dmem_region_start computation

Jani Nikula (1):
      drm/i915/backlight: setup and cache pwm alternate increment value

Javier Martinez Canillas (1):
      ARM: dts: omap3: overo: add missing unit name for lcd35 display

Jean-Francois Moine (1):
      clk: core: Force setting the phase delay when no change

Johannes Thumshirn (1):
      mpt3sas: Don't spam logs if logging level is 0

John Crispin (1):
      pinctrl: qcom: fix masking of pinmux functions

Jon Mason (1):
      ARM: dts: NSP: Correct RAM amount for BCM958625HR board

Larry Finger (1):
      staging: r8188eu: Fix scheduling while atomic splat

Liad Kaufman (2):
      iwlwifi: mvm: fix pending frames tracking on tx resp
      iwlwifi: mvm: free reserved queue on STA removal

Linus Walleij (1):
      ARM: dts: fix RealView EB SMSC ethernet version

Lorenzo Pieralisi (6):
      PCI: rcar: Fix pci_remap_iospace() failure path
      PCI: aardvark: Fix pci_remap_iospace() failure path
      PCI: generic: Fix pci_remap_iospace() failure path
      PCI: versatile: Fix pci_remap_iospace() failure path
      PCI: designware: Fix pci_remap_iospace() failure path
      PCI: tegra: Fix pci_remap_iospace() failure path

Luca Coelho (1):
      iwlwifi: mvm: bail out if CTDP start operation fails

Lyude (5):
      drm/i915/skl: Update plane watermarks atomically during plane updates
      drm/i915: Move CRTC updating in atomic_commit into it's own hook
      drm/i915/skl: Update DDB values atomically with wms/plane attrs
      drm/i915/skl: Don't try to update plane watermarks if they haven't changed
      drm/i915/skl: Ensure pipes with changed wms get added to the state

Maor Gottlieb (1):
      IB/mlx5: Fix steering resource leak

Mike Marciniszyn (2):
      IB/hfi1: Move iowait_init() to priv allocate
      IB/rdmavt: Correct sparse annotation

Namhyung Kim (3):
      perf hists browser: Fix event group display
      perf ui/tui: Reset output width for hierarchy
      perf ui/stdio: Always reset output width for hierarchy

Nicholas Mc Guire (2):
      staging: ks7010: fix wait_for_completion_interruptible_timeout return handling
      staging: ks7010: declare private functions static

Nicolai Hähnle (1):
      drm/amdgpu: initialize the context reset_counter in amdgpu_ctx_init

Ondrej Mosnáček (1):
      crypto: gcm - Fix IV buffer size in crypto_gcm_setkey

Pan Xinhui (1):
      powerpc/nvram: Fix an incorrect partition merge

Paulo Zanoni (8):
      drm/i915/gen9: only add the planes actually affected by ddb changes
      drm/i915/gen9: fix the WaWmMemoryReadLatency implementation
      drm/i915/gen9: minimum scanlines for Y tile is not always 4
      drm/i915/gen9: fix plane_blocks_per_line on watermarks calculations
      drm/i915/gen9: fix the watermark res_blocks value
      drm/i915: SAGV is not SKL-only, so rename a few things
      drm/i915: introduce intel_has_sagv()
      drm/i915/kbl: KBL also needs to run the SAGV code

Phil Turnbull (1):
      staging: sm750fb: Correctly set CLOCK_PHASE bit of display controller.

Rajkumar Manoharan (1):
      ath10k: fix throughput regression in multi client mode

Ravi Bangoria (1):
      perf powerpc: Fix build-test failure

Rex Zhu (2):
      drm/amdgpu: change vblank_time's calculation method to reduce computational error.
      drm/amd/powerplay: fix mclk not switching back after multi-head was disabled

Robert Jarzmik (2):
      ARM: pxa: pxa_cplds: fix interrupt handling
      ARM: pxa: fix GPIO double shifts

Romain Perier (2):
      crypto: marvell - Don't overwrite default creq->state during initialization
      crypto: marvell - Update transformation context for each dequeued req

Sara Sharon (3):
      iwlwifi: mvm: call a different txq_enable function
      iwlwifi: mvm: support BAR in reorder buffer
      iwlwifi: mvm: disable P2P queue on mac context release

Sascha Silbe (2):
      s390/con3270: fix use of uninitialised data
      s390/con3270: fix insufficient space padding

Sebastian Frias (1):
      genirq/generic_chip: Add irq_unmap callback

Sebastian Ott (1):
      s390/cio: fix accidental interrupt enabling during resume

Shawn Lee (1):
      drm/i915/backlight: setup backlight pwm alternate increment on backlight enable

Srinivas Kandagatla (2):
      clk: gcc-msm8996: Fix pcie 2 pipe register offset
      clk: qcom: select GDSC for msm8996 gcc and mmcc

Stefan Agner (1):
      drm/fsl-dcu: fix endian issue when using clk_register_divider

Steinar H. Gunderson (1):
      HID: add quirk for Akai MIDImix.

Stephen Boyd (1):
      clk: Return errors from clk providers in __of_clk_get_from_provider()

Suzuki K Poulose (1):
      coresight: Remove erroneous dma_free_coherent in tmc_probe

Takashi Sakamoto (2):
      ASoC: sst-bxt-rt298: fix obsoleted initializers for array
      ASoC: sst-bxt-da7219_max98357a: fix obsoleted initializers for array

Tamizh chelvam (1):
      ath10k: Add WMI_SERVICE_PERIODIC_CHAN_STAT_SUPPORT wmi service

Tang Yuantian (1):
      clk: qoriq: fix a register offset error

Thomas Hellstrom (2):
      drm/vmwgfx: Limit the user-space command buffer size
      drm/vmwgfx: Avoid validating views on view destruction

Uma Krishnan (1):
      scsi: cxlflash: Remove the device cleanly in the system shutdown path

Uwe Kleine-König (1):
      ARM: clk-imx35: fix name for ckil clk

Ville Syrjälä (4):
      drm/i915: Account for TSEG size when determining 865G stolen base
      drm/i915: Allow PCH DPLL sharing regardless of DPLL_SDVO_HIGH_SPEED
      drm/i915: Move long hpd handling into the hotplug work
      drm/i915: Allow DP to work w/o EDID

Vishal Verma (1):
      libnvdimm: clear the internal poison_list when clearing badblocks

Wang Nan (1):
      perf data: Fix building in 32 bit platform with libbabeltrace

Wei Yongjun (3):
      spi: spi-fsl-dspi: Drop extra spi_master_put in device remove function
      crypto: ccp - Fix return value check in ccp_dmaengine_register()
      ASoC: topology: Fix error return code in soc_tplg_dapm_widget_create()

Xinming Hu (1):
      mwifiex: correct aid value during tdls setup


[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 801 bytes --]

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: Linux 4.8.6
  2016-10-31 12:47 Linux 4.8.6 Greg KH
@ 2016-10-31 12:47 ` Greg KH
  2016-10-31 20:26 ` Levin, Alexander
  1 sibling, 0 replies; 4+ messages in thread
From: Greg KH @ 2016-10-31 12:47 UTC (permalink / raw)
  To: linux-kernel, Andrew Morton, torvalds, stable; +Cc: lwn, Jiri Slaby

diff --git a/Makefile b/Makefile
index daa3a01d2525..b249529204cd 100644
--- a/Makefile
+++ b/Makefile
@@ -1,6 +1,6 @@
 VERSION = 4
 PATCHLEVEL = 8
-SUBLEVEL = 5
+SUBLEVEL = 6
 EXTRAVERSION =
 NAME = Psychotic Stoned Sheep
 
diff --git a/arch/arm/boot/dts/arm-realview-eb.dtsi b/arch/arm/boot/dts/arm-realview-eb.dtsi
index 1c6a040218e3..e2e9599596e2 100644
--- a/arch/arm/boot/dts/arm-realview-eb.dtsi
+++ b/arch/arm/boot/dts/arm-realview-eb.dtsi
@@ -51,14 +51,6 @@
 		regulator-boot-on;
         };
 
-	veth: fixedregulator@0 {
-		compatible = "regulator-fixed";
-		regulator-name = "veth";
-		regulator-min-microvolt = <3300000>;
-		regulator-max-microvolt = <3300000>;
-		regulator-boot-on;
-	};
-
 	xtal24mhz: xtal24mhz@24M {
 		#clock-cells = <0>;
 		compatible = "fixed-clock";
@@ -134,16 +126,15 @@
 		bank-width = <4>;
 	};
 
-	/* SMSC 9118 ethernet with PHY and EEPROM */
+	/* SMSC LAN91C111 ethernet with PHY and EEPROM */
 	ethernet: ethernet@4e000000 {
-		compatible = "smsc,lan9118", "smsc,lan9115";
+		compatible = "smsc,lan91c111";
 		reg = <0x4e000000 0x10000>;
-		phy-mode = "mii";
-		reg-io-width = <4>;
-		smsc,irq-active-high;
-		smsc,irq-push-pull;
-		vdd33a-supply = <&veth>;
-		vddvario-supply = <&veth>;
+		/*
+		 * This means the adapter can be accessed with 8, 16 or
+		 * 32 bit reads/writes.
+		 */
+		reg-io-width = <7>;
 	};
 
 	usb: usb@4f000000 {
diff --git a/arch/arm/boot/dts/bcm958625hr.dts b/arch/arm/boot/dts/bcm958625hr.dts
index 03b8bbeb694f..652418aa2700 100644
--- a/arch/arm/boot/dts/bcm958625hr.dts
+++ b/arch/arm/boot/dts/bcm958625hr.dts
@@ -47,7 +47,8 @@
 	};
 
 	memory {
-		reg = <0x60000000 0x20000000>;
+		device_type = "memory";
+		reg = <0x60000000 0x80000000>;
 	};
 };
 
diff --git a/arch/arm/boot/dts/omap3-overo-common-lcd35.dtsi b/arch/arm/boot/dts/omap3-overo-common-lcd35.dtsi
index ca86da68220c..854117dc0b77 100644
--- a/arch/arm/boot/dts/omap3-overo-common-lcd35.dtsi
+++ b/arch/arm/boot/dts/omap3-overo-common-lcd35.dtsi
@@ -119,7 +119,7 @@
 	pinctrl-names = "default";
 	pinctrl-0 = <&mcspi1_pins>;
 
-	lcd0: display {
+	lcd0: display@1 {
 		compatible = "lgphilips,lb035q02";
 		label = "lcd35";
 
diff --git a/arch/arm/boot/dts/sun9i-a80.dtsi b/arch/arm/boot/dts/sun9i-a80.dtsi
index f68b3242b33a..3f528a379288 100644
--- a/arch/arm/boot/dts/sun9i-a80.dtsi
+++ b/arch/arm/boot/dts/sun9i-a80.dtsi
@@ -899,8 +899,7 @@
 			resets = <&apbs_rst 0>;
 			gpio-controller;
 			interrupt-controller;
-			#address-cells = <1>;
-			#size-cells = <0>;
+			#interrupt-cells = <3>;
 			#gpio-cells = <3>;
 
 			r_ir_pins: r_ir {
diff --git a/arch/arm/crypto/ghash-ce-glue.c b/arch/arm/crypto/ghash-ce-glue.c
index 1568cb5cd870..b88364aa149a 100644
--- a/arch/arm/crypto/ghash-ce-glue.c
+++ b/arch/arm/crypto/ghash-ce-glue.c
@@ -220,6 +220,27 @@ static int ghash_async_digest(struct ahash_request *req)
 	}
 }
 
+static int ghash_async_import(struct ahash_request *req, const void *in)
+{
+	struct ahash_request *cryptd_req = ahash_request_ctx(req);
+	struct crypto_ahash *tfm = crypto_ahash_reqtfm(req);
+	struct ghash_async_ctx *ctx = crypto_ahash_ctx(tfm);
+	struct shash_desc *desc = cryptd_shash_desc(cryptd_req);
+
+	desc->tfm = cryptd_ahash_child(ctx->cryptd_tfm);
+	desc->flags = req->base.flags;
+
+	return crypto_shash_import(desc, in);
+}
+
+static int ghash_async_export(struct ahash_request *req, void *out)
+{
+	struct ahash_request *cryptd_req = ahash_request_ctx(req);
+	struct shash_desc *desc = cryptd_shash_desc(cryptd_req);
+
+	return crypto_shash_export(desc, out);
+}
+
 static int ghash_async_setkey(struct crypto_ahash *tfm, const u8 *key,
 			      unsigned int keylen)
 {
@@ -268,7 +289,10 @@ static struct ahash_alg ghash_async_alg = {
 	.final			= ghash_async_final,
 	.setkey			= ghash_async_setkey,
 	.digest			= ghash_async_digest,
+	.import			= ghash_async_import,
+	.export			= ghash_async_export,
 	.halg.digestsize	= GHASH_DIGEST_SIZE,
+	.halg.statesize		= sizeof(struct ghash_desc_ctx),
 	.halg.base		= {
 		.cra_name	= "ghash",
 		.cra_driver_name = "ghash-ce",
diff --git a/arch/arm/mach-pxa/corgi_pm.c b/arch/arm/mach-pxa/corgi_pm.c
index d9206811be9b..c71c483f410e 100644
--- a/arch/arm/mach-pxa/corgi_pm.c
+++ b/arch/arm/mach-pxa/corgi_pm.c
@@ -131,16 +131,11 @@ static int corgi_should_wakeup(unsigned int resume_on_alarm)
 	return is_resume;
 }
 
-static unsigned long corgi_charger_wakeup(void)
+static bool corgi_charger_wakeup(void)
 {
-	unsigned long ret;
-
-	ret = (!gpio_get_value(CORGI_GPIO_AC_IN) << GPIO_bit(CORGI_GPIO_AC_IN))
-		| (!gpio_get_value(CORGI_GPIO_KEY_INT)
-		<< GPIO_bit(CORGI_GPIO_KEY_INT))
-		| (!gpio_get_value(CORGI_GPIO_WAKEUP)
-		<< GPIO_bit(CORGI_GPIO_WAKEUP));
-	return ret;
+	return !gpio_get_value(CORGI_GPIO_AC_IN) ||
+		!gpio_get_value(CORGI_GPIO_KEY_INT) ||
+		!gpio_get_value(CORGI_GPIO_WAKEUP);
 }
 
 unsigned long corgipm_read_devdata(int type)
diff --git a/arch/arm/mach-pxa/pxa_cplds_irqs.c b/arch/arm/mach-pxa/pxa_cplds_irqs.c
index 2385052b0ce1..e362f865fcd2 100644
--- a/arch/arm/mach-pxa/pxa_cplds_irqs.c
+++ b/arch/arm/mach-pxa/pxa_cplds_irqs.c
@@ -41,30 +41,35 @@ static irqreturn_t cplds_irq_handler(int in_irq, void *d)
 	unsigned long pending;
 	unsigned int bit;
 
-	pending = readl(fpga->base + FPGA_IRQ_SET_CLR) & fpga->irq_mask;
-	for_each_set_bit(bit, &pending, CPLDS_NB_IRQ)
-		generic_handle_irq(irq_find_mapping(fpga->irqdomain, bit));
+	do {
+		pending = readl(fpga->base + FPGA_IRQ_SET_CLR) & fpga->irq_mask;
+		for_each_set_bit(bit, &pending, CPLDS_NB_IRQ) {
+			generic_handle_irq(irq_find_mapping(fpga->irqdomain,
+							    bit));
+		}
+	} while (pending);
 
 	return IRQ_HANDLED;
 }
 
-static void cplds_irq_mask_ack(struct irq_data *d)
+static void cplds_irq_mask(struct irq_data *d)
 {
 	struct cplds *fpga = irq_data_get_irq_chip_data(d);
 	unsigned int cplds_irq = irqd_to_hwirq(d);
-	unsigned int set, bit = BIT(cplds_irq);
+	unsigned int bit = BIT(cplds_irq);
 
 	fpga->irq_mask &= ~bit;
 	writel(fpga->irq_mask, fpga->base + FPGA_IRQ_MASK_EN);
-	set = readl(fpga->base + FPGA_IRQ_SET_CLR);
-	writel(set & ~bit, fpga->base + FPGA_IRQ_SET_CLR);
 }
 
 static void cplds_irq_unmask(struct irq_data *d)
 {
 	struct cplds *fpga = irq_data_get_irq_chip_data(d);
 	unsigned int cplds_irq = irqd_to_hwirq(d);
-	unsigned int bit = BIT(cplds_irq);
+	unsigned int set, bit = BIT(cplds_irq);
+
+	set = readl(fpga->base + FPGA_IRQ_SET_CLR);
+	writel(set & ~bit, fpga->base + FPGA_IRQ_SET_CLR);
 
 	fpga->irq_mask |= bit;
 	writel(fpga->irq_mask, fpga->base + FPGA_IRQ_MASK_EN);
@@ -72,7 +77,8 @@ static void cplds_irq_unmask(struct irq_data *d)
 
 static struct irq_chip cplds_irq_chip = {
 	.name		= "pxa_cplds",
-	.irq_mask_ack	= cplds_irq_mask_ack,
+	.irq_ack	= cplds_irq_mask,
+	.irq_mask	= cplds_irq_mask,
 	.irq_unmask	= cplds_irq_unmask,
 	.flags		= IRQCHIP_MASK_ON_SUSPEND | IRQCHIP_SKIP_SET_WAKE,
 };
diff --git a/arch/arm/mach-pxa/sharpsl_pm.c b/arch/arm/mach-pxa/sharpsl_pm.c
index b80eab9993c5..249b7bd5fbc4 100644
--- a/arch/arm/mach-pxa/sharpsl_pm.c
+++ b/arch/arm/mach-pxa/sharpsl_pm.c
@@ -744,7 +744,7 @@ static int sharpsl_off_charge_battery(void)
 		time = RCNR;
 		while (1) {
 			/* Check if any wakeup event had occurred */
-			if (sharpsl_pm.machinfo->charger_wakeup() != 0)
+			if (sharpsl_pm.machinfo->charger_wakeup())
 				return 0;
 			/* Check for timeout */
 			if ((RCNR - time) > SHARPSL_WAIT_CO_TIME)
diff --git a/arch/arm/mach-pxa/sharpsl_pm.h b/arch/arm/mach-pxa/sharpsl_pm.h
index 905be6755f04..fa75b6df8134 100644
--- a/arch/arm/mach-pxa/sharpsl_pm.h
+++ b/arch/arm/mach-pxa/sharpsl_pm.h
@@ -34,7 +34,7 @@ struct sharpsl_charger_machinfo {
 #define SHARPSL_STATUS_LOCK     5
 #define SHARPSL_STATUS_CHRGFULL 6
 #define SHARPSL_STATUS_FATAL    7
-	unsigned long (*charger_wakeup)(void);
+	bool (*charger_wakeup)(void);
 	int (*should_wakeup)(unsigned int resume_on_alarm);
 	void (*backlight_limit)(int);
 	int (*backlight_get_status) (void);
diff --git a/arch/arm/mach-pxa/spitz_pm.c b/arch/arm/mach-pxa/spitz_pm.c
index ea9f9034cb54..4e64a140252e 100644
--- a/arch/arm/mach-pxa/spitz_pm.c
+++ b/arch/arm/mach-pxa/spitz_pm.c
@@ -165,13 +165,10 @@ static int spitz_should_wakeup(unsigned int resume_on_alarm)
 	return is_resume;
 }
 
-static unsigned long spitz_charger_wakeup(void)
+static bool spitz_charger_wakeup(void)
 {
-	unsigned long ret;
-	ret = ((!gpio_get_value(SPITZ_GPIO_KEY_INT)
-		<< GPIO_bit(SPITZ_GPIO_KEY_INT))
-		| gpio_get_value(SPITZ_GPIO_SYNC));
-	return ret;
+	return !gpio_get_value(SPITZ_GPIO_KEY_INT) ||
+		gpio_get_value(SPITZ_GPIO_SYNC);
 }
 
 unsigned long spitzpm_read_devdata(int type)
diff --git a/arch/powerpc/include/asm/book3s/64/pgtable.h b/arch/powerpc/include/asm/book3s/64/pgtable.h
index 263bf39ced40..9bd84ba06ec4 100644
--- a/arch/powerpc/include/asm/book3s/64/pgtable.h
+++ b/arch/powerpc/include/asm/book3s/64/pgtable.h
@@ -6,6 +6,8 @@
  */
 #define _PAGE_BIT_SWAP_TYPE	0
 
+#define _PAGE_RO		0
+
 #define _PAGE_EXEC		0x00001 /* execute permission */
 #define _PAGE_WRITE		0x00002 /* write access allowed */
 #define _PAGE_READ		0x00004	/* read access allowed */
diff --git a/arch/powerpc/kernel/nvram_64.c b/arch/powerpc/kernel/nvram_64.c
index 64174bf95611..05a0a913ec38 100644
--- a/arch/powerpc/kernel/nvram_64.c
+++ b/arch/powerpc/kernel/nvram_64.c
@@ -956,7 +956,7 @@ int __init nvram_remove_partition(const char *name, int sig,
 
 		/* Make partition a free partition */
 		part->header.signature = NVRAM_SIG_FREE;
-		strncpy(part->header.name, "wwwwwwwwwwww", 12);
+		memset(part->header.name, 'w', 12);
 		part->header.checksum = nvram_checksum(&part->header);
 		rc = nvram_write_header(part);
 		if (rc <= 0) {
@@ -974,8 +974,8 @@ int __init nvram_remove_partition(const char *name, int sig,
 		}
 		if (prev) {
 			prev->header.length += part->header.length;
-			prev->header.checksum = nvram_checksum(&part->header);
-			rc = nvram_write_header(part);
+			prev->header.checksum = nvram_checksum(&prev->header);
+			rc = nvram_write_header(prev);
 			if (rc <= 0) {
 				printk(KERN_ERR "nvram_remove_partition: nvram_write failed (%d)\n", rc);
 				return rc;
diff --git a/arch/powerpc/kernel/process.c b/arch/powerpc/kernel/process.c
index 9ee2623e0f67..ad37aa175f59 100644
--- a/arch/powerpc/kernel/process.c
+++ b/arch/powerpc/kernel/process.c
@@ -88,7 +88,13 @@ static void check_if_tm_restore_required(struct task_struct *tsk)
 		set_thread_flag(TIF_RESTORE_TM);
 	}
 }
+
+static inline bool msr_tm_active(unsigned long msr)
+{
+	return MSR_TM_ACTIVE(msr);
+}
 #else
+static inline bool msr_tm_active(unsigned long msr) { return false; }
 static inline void check_if_tm_restore_required(struct task_struct *tsk) { }
 #endif /* CONFIG_PPC_TRANSACTIONAL_MEM */
 
@@ -208,7 +214,7 @@ void enable_kernel_fp(void)
 EXPORT_SYMBOL(enable_kernel_fp);
 
 static int restore_fp(struct task_struct *tsk) {
-	if (tsk->thread.load_fp) {
+	if (tsk->thread.load_fp || msr_tm_active(tsk->thread.regs->msr)) {
 		load_fp_state(&current->thread.fp_state);
 		current->thread.load_fp++;
 		return 1;
@@ -278,7 +284,8 @@ EXPORT_SYMBOL_GPL(flush_altivec_to_thread);
 
 static int restore_altivec(struct task_struct *tsk)
 {
-	if (cpu_has_feature(CPU_FTR_ALTIVEC) && tsk->thread.load_vec) {
+	if (cpu_has_feature(CPU_FTR_ALTIVEC) &&
+		(tsk->thread.load_vec || msr_tm_active(tsk->thread.regs->msr))) {
 		load_vr_state(&tsk->thread.vr_state);
 		tsk->thread.used_vr = 1;
 		tsk->thread.load_vec++;
@@ -438,6 +445,7 @@ void giveup_all(struct task_struct *tsk)
 		return;
 
 	msr_check_and_set(msr_all_available);
+	check_if_tm_restore_required(tsk);
 
 #ifdef CONFIG_PPC_FPU
 	if (usermsr & MSR_FP)
@@ -464,7 +472,8 @@ void restore_math(struct pt_regs *regs)
 {
 	unsigned long msr;
 
-	if (!current->thread.load_fp && !loadvec(current->thread))
+	if (!msr_tm_active(regs->msr) &&
+		!current->thread.load_fp && !loadvec(current->thread))
 		return;
 
 	msr = regs->msr;
@@ -983,6 +992,13 @@ void restore_tm_state(struct pt_regs *regs)
 	msr_diff = current->thread.ckpt_regs.msr & ~regs->msr;
 	msr_diff &= MSR_FP | MSR_VEC | MSR_VSX;
 
+	/* Ensure that restore_math() will restore */
+	if (msr_diff & MSR_FP)
+		current->thread.load_fp = 1;
+#ifdef CONFIG_ALIVEC
+	if (cpu_has_feature(CPU_FTR_ALTIVEC) && msr_diff & MSR_VEC)
+		current->thread.load_vec = 1;
+#endif
 	restore_math(regs);
 
 	regs->msr |= msr_diff;
diff --git a/arch/powerpc/mm/hugetlbpage.c b/arch/powerpc/mm/hugetlbpage.c
index 7372ee13eb1e..a5d3ecdabc44 100644
--- a/arch/powerpc/mm/hugetlbpage.c
+++ b/arch/powerpc/mm/hugetlbpage.c
@@ -1019,8 +1019,15 @@ int gup_hugepte(pte_t *ptep, unsigned long sz, unsigned long addr,
 
 	pte = READ_ONCE(*ptep);
 	mask = _PAGE_PRESENT | _PAGE_READ;
+
+	/*
+	 * On some CPUs like the 8xx, _PAGE_RW hence _PAGE_WRITE is defined
+	 * as 0 and _PAGE_RO has to be set when a page is not writable
+	 */
 	if (write)
 		mask |= _PAGE_WRITE;
+	else
+		mask |= _PAGE_RO;
 
 	if ((pte_val(pte) & mask) != mask)
 		return 0;
diff --git a/arch/x86/kernel/early-quirks.c b/arch/x86/kernel/early-quirks.c
index de7501edb21c..8b8852bc2f4a 100644
--- a/arch/x86/kernel/early-quirks.c
+++ b/arch/x86/kernel/early-quirks.c
@@ -317,16 +317,11 @@ static phys_addr_t __init i85x_stolen_base(int num, int slot, int func,
 static phys_addr_t __init i865_stolen_base(int num, int slot, int func,
 					   size_t stolen_size)
 {
-	u16 toud;
+	u16 toud = 0;
 
-	/*
-	 * FIXME is the graphics stolen memory region
-	 * always at TOUD? Ie. is it always the last
-	 * one to be allocated by the BIOS?
-	 */
 	toud = read_pci_config_16(0, 0, 0, I865_TOUD);
 
-	return (phys_addr_t)toud << 16;
+	return (phys_addr_t)(toud << 16) + i845_tseg_size();
 }
 
 static phys_addr_t __init gen3_stolen_base(int num, int slot, int func,
diff --git a/crypto/gcm.c b/crypto/gcm.c
index 70a892e87ccb..f624ac98c94e 100644
--- a/crypto/gcm.c
+++ b/crypto/gcm.c
@@ -117,7 +117,7 @@ static int crypto_gcm_setkey(struct crypto_aead *aead, const u8 *key,
 	struct crypto_skcipher *ctr = ctx->ctr;
 	struct {
 		be128 hash;
-		u8 iv[8];
+		u8 iv[16];
 
 		struct crypto_gcm_setkey_result result;
 
diff --git a/drivers/char/hw_random/omap-rng.c b/drivers/char/hw_random/omap-rng.c
index 01d4be2c354b..f5c26a5f6875 100644
--- a/drivers/char/hw_random/omap-rng.c
+++ b/drivers/char/hw_random/omap-rng.c
@@ -385,7 +385,7 @@ static int omap_rng_probe(struct platform_device *pdev)
 
 	pm_runtime_enable(&pdev->dev);
 	ret = pm_runtime_get_sync(&pdev->dev);
-	if (ret) {
+	if (ret < 0) {
 		dev_err(&pdev->dev, "Failed to runtime_get device: %d\n", ret);
 		pm_runtime_put_noidle(&pdev->dev);
 		goto err_ioremap;
@@ -443,7 +443,7 @@ static int __maybe_unused omap_rng_resume(struct device *dev)
 	int ret;
 
 	ret = pm_runtime_get_sync(dev);
-	if (ret) {
+	if (ret < 0) {
 		dev_err(dev, "Failed to runtime_get device: %d\n", ret);
 		pm_runtime_put_noidle(dev);
 		return ret;
diff --git a/drivers/clk/bcm/clk-bcm2835.c b/drivers/clk/bcm/clk-bcm2835.c
index 7a7970865c2d..0fc71cbaa440 100644
--- a/drivers/clk/bcm/clk-bcm2835.c
+++ b/drivers/clk/bcm/clk-bcm2835.c
@@ -1006,16 +1006,28 @@ static int bcm2835_clock_set_rate(struct clk_hw *hw,
 	return 0;
 }
 
+static bool
+bcm2835_clk_is_pllc(struct clk_hw *hw)
+{
+	if (!hw)
+		return false;
+
+	return strncmp(clk_hw_get_name(hw), "pllc", 4) == 0;
+}
+
 static int bcm2835_clock_determine_rate(struct clk_hw *hw,
 					struct clk_rate_request *req)
 {
 	struct bcm2835_clock *clock = bcm2835_clock_from_hw(hw);
 	struct clk_hw *parent, *best_parent = NULL;
+	bool current_parent_is_pllc;
 	unsigned long rate, best_rate = 0;
 	unsigned long prate, best_prate = 0;
 	size_t i;
 	u32 div;
 
+	current_parent_is_pllc = bcm2835_clk_is_pllc(clk_hw_get_parent(hw));
+
 	/*
 	 * Select parent clock that results in the closest but lower rate
 	 */
@@ -1023,6 +1035,17 @@ static int bcm2835_clock_determine_rate(struct clk_hw *hw,
 		parent = clk_hw_get_parent_by_index(hw, i);
 		if (!parent)
 			continue;
+
+		/*
+		 * Don't choose a PLLC-derived clock as our parent
+		 * unless it had been manually set that way.  PLLC's
+		 * frequency gets adjusted by the firmware due to
+		 * over-temp or under-voltage conditions, without
+		 * prior notification to our clock consumer.
+		 */
+		if (bcm2835_clk_is_pllc(parent) && !current_parent_is_pllc)
+			continue;
+
 		prate = clk_hw_get_rate(parent);
 		div = bcm2835_clock_choose_div(hw, req->rate, prate, true);
 		rate = bcm2835_clock_rate_from_divisor(clock, prate, div);
diff --git a/drivers/clk/clk-divider.c b/drivers/clk/clk-divider.c
index a0f55bc1ad3d..96386ffc8483 100644
--- a/drivers/clk/clk-divider.c
+++ b/drivers/clk/clk-divider.c
@@ -352,7 +352,7 @@ static long clk_divider_round_rate(struct clk_hw *hw, unsigned long rate,
 
 	/* if read only, just return current value */
 	if (divider->flags & CLK_DIVIDER_READ_ONLY) {
-		bestdiv = readl(divider->reg) >> divider->shift;
+		bestdiv = clk_readl(divider->reg) >> divider->shift;
 		bestdiv &= div_mask(divider->width);
 		bestdiv = _get_div(divider->table, bestdiv, divider->flags,
 			divider->width);
diff --git a/drivers/clk/clk-qoriq.c b/drivers/clk/clk-qoriq.c
index 58566a17944a..20b105584f82 100644
--- a/drivers/clk/clk-qoriq.c
+++ b/drivers/clk/clk-qoriq.c
@@ -766,7 +766,11 @@ static struct clk * __init create_one_cmux(struct clockgen *cg, int idx)
 	if (!hwc)
 		return NULL;
 
-	hwc->reg = cg->regs + 0x20 * idx;
+	if (cg->info.flags & CG_VER3)
+		hwc->reg = cg->regs + 0x70000 + 0x20 * idx;
+	else
+		hwc->reg = cg->regs + 0x20 * idx;
+
 	hwc->info = cg->info.cmux_groups[cg->info.cmux_to_group[idx]];
 
 	/*
diff --git a/drivers/clk/clk.c b/drivers/clk/clk.c
index 820a939fb6bb..2877a4ddeda2 100644
--- a/drivers/clk/clk.c
+++ b/drivers/clk/clk.c
@@ -1908,10 +1908,6 @@ int clk_set_phase(struct clk *clk, int degrees)
 
 	clk_prepare_lock();
 
-	/* bail early if nothing to do */
-	if (degrees == clk->core->phase)
-		goto out;
-
 	trace_clk_set_phase(clk->core, degrees);
 
 	if (clk->core->ops->set_phase)
@@ -1922,7 +1918,6 @@ int clk_set_phase(struct clk *clk, int degrees)
 	if (!ret)
 		clk->core->phase = degrees;
 
-out:
 	clk_prepare_unlock();
 
 	return ret;
@@ -3186,7 +3181,7 @@ struct clk *__of_clk_get_from_provider(struct of_phandle_args *clkspec,
 {
 	struct of_clk_provider *provider;
 	struct clk *clk = ERR_PTR(-EPROBE_DEFER);
-	struct clk_hw *hw = ERR_PTR(-EPROBE_DEFER);
+	struct clk_hw *hw;
 
 	if (!clkspec)
 		return ERR_PTR(-EINVAL);
@@ -3194,12 +3189,13 @@ struct clk *__of_clk_get_from_provider(struct of_phandle_args *clkspec,
 	/* Check if we have such a provider in our array */
 	mutex_lock(&of_clk_mutex);
 	list_for_each_entry(provider, &of_clk_providers, link) {
-		if (provider->node == clkspec->np)
+		if (provider->node == clkspec->np) {
 			hw = __of_clk_get_hw_from_provider(provider, clkspec);
-		if (!IS_ERR(hw)) {
 			clk = __clk_create_clk(hw, dev_id, con_id);
+		}
 
-			if (!IS_ERR(clk) && !__clk_get(clk)) {
+		if (!IS_ERR(clk)) {
+			if (!__clk_get(clk)) {
 				__clk_free_clk(clk);
 				clk = ERR_PTR(-ENOENT);
 			}
diff --git a/drivers/clk/imx/clk-imx35.c b/drivers/clk/imx/clk-imx35.c
index b0978d3b83e2..d302ed3b8225 100644
--- a/drivers/clk/imx/clk-imx35.c
+++ b/drivers/clk/imx/clk-imx35.c
@@ -115,7 +115,7 @@ static void __init _mx35_clocks_init(void)
 	}
 
 	clk[ckih] = imx_clk_fixed("ckih", 24000000);
-	clk[ckil] = imx_clk_fixed("ckih", 32768);
+	clk[ckil] = imx_clk_fixed("ckil", 32768);
 	clk[mpll] = imx_clk_pllv1(IMX_PLLV1_IMX35, "mpll", "ckih", base + MX35_CCM_MPCTL);
 	clk[ppll] = imx_clk_pllv1(IMX_PLLV1_IMX35, "ppll", "ckih", base + MX35_CCM_PPCTL);
 
diff --git a/drivers/clk/qcom/Kconfig b/drivers/clk/qcom/Kconfig
index 95e3b3e0fa1c..98909b184d44 100644
--- a/drivers/clk/qcom/Kconfig
+++ b/drivers/clk/qcom/Kconfig
@@ -117,6 +117,7 @@ config MSM_MMCC_8974
 
 config MSM_GCC_8996
 	tristate "MSM8996 Global Clock Controller"
+	select QCOM_GDSC
 	depends on COMMON_CLK_QCOM
 	help
 	  Support for the global clock controller on msm8996 devices.
@@ -126,6 +127,7 @@ config MSM_GCC_8996
 config MSM_MMCC_8996
 	tristate "MSM8996 Multimedia Clock Controller"
 	select MSM_GCC_8996
+	select QCOM_GDSC
 	depends on COMMON_CLK_QCOM
 	help
 	  Support for the multimedia clock controller on msm8996 devices.
diff --git a/drivers/clk/qcom/gcc-msm8996.c b/drivers/clk/qcom/gcc-msm8996.c
index bbf732bbc3fd..9f643cca85d0 100644
--- a/drivers/clk/qcom/gcc-msm8996.c
+++ b/drivers/clk/qcom/gcc-msm8996.c
@@ -2592,9 +2592,9 @@ static struct clk_branch gcc_pcie_2_aux_clk = {
 };
 
 static struct clk_branch gcc_pcie_2_pipe_clk = {
-	.halt_reg = 0x6e108,
+	.halt_reg = 0x6e018,
 	.clkr = {
-		.enable_reg = 0x6e108,
+		.enable_reg = 0x6e018,
 		.enable_mask = BIT(0),
 		.hw.init = &(struct clk_init_data){
 			.name = "gcc_pcie_2_pipe_clk",
diff --git a/drivers/crypto/ccp/ccp-dmaengine.c b/drivers/crypto/ccp/ccp-dmaengine.c
index 94f77b0f9ae7..32f645ea77b8 100644
--- a/drivers/crypto/ccp/ccp-dmaengine.c
+++ b/drivers/crypto/ccp/ccp-dmaengine.c
@@ -650,7 +650,7 @@ int ccp_dmaengine_register(struct ccp_device *ccp)
 	dma_desc_cache_name = devm_kasprintf(ccp->dev, GFP_KERNEL,
 					     "%s-dmaengine-desc-cache",
 					     ccp->name);
-	if (!dma_cmd_cache_name)
+	if (!dma_desc_cache_name)
 		return -ENOMEM;
 	ccp->dma_desc_cache = kmem_cache_create(dma_desc_cache_name,
 						sizeof(struct ccp_dma_desc),
diff --git a/drivers/crypto/marvell/cesa.c b/drivers/crypto/marvell/cesa.c
index d64af8625d7e..37dadb2a4feb 100644
--- a/drivers/crypto/marvell/cesa.c
+++ b/drivers/crypto/marvell/cesa.c
@@ -166,6 +166,7 @@ static irqreturn_t mv_cesa_int(int irq, void *priv)
 			if (!req)
 				break;
 
+			ctx = crypto_tfm_ctx(req->tfm);
 			mv_cesa_complete_req(ctx, req, 0);
 		}
 	}
diff --git a/drivers/crypto/marvell/hash.c b/drivers/crypto/marvell/hash.c
index 82e0f4e6eb1c..b111e14bac1e 100644
--- a/drivers/crypto/marvell/hash.c
+++ b/drivers/crypto/marvell/hash.c
@@ -805,13 +805,14 @@ static int mv_cesa_md5_init(struct ahash_request *req)
 	struct mv_cesa_op_ctx tmpl = { };
 
 	mv_cesa_set_op_cfg(&tmpl, CESA_SA_DESC_CFG_MACM_MD5);
+
+	mv_cesa_ahash_init(req, &tmpl, true);
+
 	creq->state[0] = MD5_H0;
 	creq->state[1] = MD5_H1;
 	creq->state[2] = MD5_H2;
 	creq->state[3] = MD5_H3;
 
-	mv_cesa_ahash_init(req, &tmpl, true);
-
 	return 0;
 }
 
@@ -873,14 +874,15 @@ static int mv_cesa_sha1_init(struct ahash_request *req)
 	struct mv_cesa_op_ctx tmpl = { };
 
 	mv_cesa_set_op_cfg(&tmpl, CESA_SA_DESC_CFG_MACM_SHA1);
+
+	mv_cesa_ahash_init(req, &tmpl, false);
+
 	creq->state[0] = SHA1_H0;
 	creq->state[1] = SHA1_H1;
 	creq->state[2] = SHA1_H2;
 	creq->state[3] = SHA1_H3;
 	creq->state[4] = SHA1_H4;
 
-	mv_cesa_ahash_init(req, &tmpl, false);
-
 	return 0;
 }
 
@@ -942,6 +944,9 @@ static int mv_cesa_sha256_init(struct ahash_request *req)
 	struct mv_cesa_op_ctx tmpl = { };
 
 	mv_cesa_set_op_cfg(&tmpl, CESA_SA_DESC_CFG_MACM_SHA256);
+
+	mv_cesa_ahash_init(req, &tmpl, false);
+
 	creq->state[0] = SHA256_H0;
 	creq->state[1] = SHA256_H1;
 	creq->state[2] = SHA256_H2;
@@ -951,8 +956,6 @@ static int mv_cesa_sha256_init(struct ahash_request *req)
 	creq->state[6] = SHA256_H6;
 	creq->state[7] = SHA256_H7;
 
-	mv_cesa_ahash_init(req, &tmpl, false);
-
 	return 0;
 }
 
diff --git a/drivers/dma/ipu/ipu_irq.c b/drivers/dma/ipu/ipu_irq.c
index 2bf37e68ad0f..dd184b50e5b4 100644
--- a/drivers/dma/ipu/ipu_irq.c
+++ b/drivers/dma/ipu/ipu_irq.c
@@ -286,22 +286,21 @@ static void ipu_irq_handler(struct irq_desc *desc)
 		raw_spin_unlock(&bank_lock);
 		while ((line = ffs(status))) {
 			struct ipu_irq_map *map;
-			unsigned int irq = NO_IRQ;
+			unsigned int irq;
 
 			line--;
 			status &= ~(1UL << line);
 
 			raw_spin_lock(&bank_lock);
 			map = src2map(32 * i + line);
-			if (map)
-				irq = map->irq;
-			raw_spin_unlock(&bank_lock);
-
 			if (!map) {
+				raw_spin_unlock(&bank_lock);
 				pr_err("IPU: Interrupt on unmapped source %u bank %d\n",
 				       line, i);
 				continue;
 			}
+			irq = map->irq;
+			raw_spin_unlock(&bank_lock);
 			generic_handle_irq(irq);
 		}
 	}
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ctx.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ctx.c
index 17e13621fae9..4e71a680e91b 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ctx.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ctx.c
@@ -43,6 +43,9 @@ static int amdgpu_ctx_init(struct amdgpu_device *adev, struct amdgpu_ctx *ctx)
 		ctx->rings[i].sequence = 1;
 		ctx->rings[i].fences = &ctx->fences[amdgpu_sched_jobs * i];
 	}
+
+	ctx->reset_counter = atomic_read(&adev->gpu_reset_counter);
+
 	/* create context entity for each ring */
 	for (i = 0; i < adev->num_rings; i++) {
 		struct amdgpu_ring *ring = adev->rings[i];
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_dpm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_dpm.c
index fe36caf1b7d7..14f57d9915e3 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_dpm.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_dpm.c
@@ -113,24 +113,26 @@ void amdgpu_dpm_print_ps_status(struct amdgpu_device *adev,
 	printk("\n");
 }
 
+
 u32 amdgpu_dpm_get_vblank_time(struct amdgpu_device *adev)
 {
 	struct drm_device *dev = adev->ddev;
 	struct drm_crtc *crtc;
 	struct amdgpu_crtc *amdgpu_crtc;
-	u32 line_time_us, vblank_lines;
+	u32 vblank_in_pixels;
 	u32 vblank_time_us = 0xffffffff; /* if the displays are off, vblank time is max */
 
 	if (adev->mode_info.num_crtc && adev->mode_info.mode_config_initialized) {
 		list_for_each_entry(crtc, &dev->mode_config.crtc_list, head) {
 			amdgpu_crtc = to_amdgpu_crtc(crtc);
 			if (crtc->enabled && amdgpu_crtc->enabled && amdgpu_crtc->hw_mode.clock) {
-				line_time_us = (amdgpu_crtc->hw_mode.crtc_htotal * 1000) /
-					amdgpu_crtc->hw_mode.clock;
-				vblank_lines = amdgpu_crtc->hw_mode.crtc_vblank_end -
+				vblank_in_pixels =
+					amdgpu_crtc->hw_mode.crtc_htotal *
+					(amdgpu_crtc->hw_mode.crtc_vblank_end -
 					amdgpu_crtc->hw_mode.crtc_vdisplay +
-					(amdgpu_crtc->v_border * 2);
-				vblank_time_us = vblank_lines * line_time_us;
+					(amdgpu_crtc->v_border * 2));
+
+				vblank_time_us = vblank_in_pixels * 1000 / amdgpu_crtc->hw_mode.clock;
 				break;
 			}
 		}
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c
index d942654a1de0..e24a8af72d90 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c
@@ -292,7 +292,7 @@ static int amdgpu_info_ioctl(struct drm_device *dev, void *data, struct drm_file
 			type = AMD_IP_BLOCK_TYPE_UVD;
 			ring_mask = adev->uvd.ring.ready ? 1 : 0;
 			ib_start_alignment = AMDGPU_GPU_PAGE_SIZE;
-			ib_size_alignment = 8;
+			ib_size_alignment = 16;
 			break;
 		case AMDGPU_HW_IP_VCE:
 			type = AMD_IP_BLOCK_TYPE_VCE;
diff --git a/drivers/gpu/drm/amd/amdgpu/dce_v10_0.c b/drivers/gpu/drm/amd/amdgpu/dce_v10_0.c
index c1b04e9aab57..172bed946287 100644
--- a/drivers/gpu/drm/amd/amdgpu/dce_v10_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/dce_v10_0.c
@@ -425,16 +425,6 @@ static void dce_v10_0_hpd_init(struct amdgpu_device *adev)
 	list_for_each_entry(connector, &dev->mode_config.connector_list, head) {
 		struct amdgpu_connector *amdgpu_connector = to_amdgpu_connector(connector);
 
-		if (connector->connector_type == DRM_MODE_CONNECTOR_eDP ||
-		    connector->connector_type == DRM_MODE_CONNECTOR_LVDS) {
-			/* don't try to enable hpd on eDP or LVDS avoid breaking the
-			 * aux dp channel on imac and help (but not completely fix)
-			 * https://bugzilla.redhat.com/show_bug.cgi?id=726143
-			 * also avoid interrupt storms during dpms.
-			 */
-			continue;
-		}
-
 		switch (amdgpu_connector->hpd.hpd) {
 		case AMDGPU_HPD_1:
 			idx = 0;
@@ -458,6 +448,19 @@ static void dce_v10_0_hpd_init(struct amdgpu_device *adev)
 			continue;
 		}
 
+		if (connector->connector_type == DRM_MODE_CONNECTOR_eDP ||
+		    connector->connector_type == DRM_MODE_CONNECTOR_LVDS) {
+			/* don't try to enable hpd on eDP or LVDS avoid breaking the
+			 * aux dp channel on imac and help (but not completely fix)
+			 * https://bugzilla.redhat.com/show_bug.cgi?id=726143
+			 * also avoid interrupt storms during dpms.
+			 */
+			tmp = RREG32(mmDC_HPD_INT_CONTROL + hpd_offsets[idx]);
+			tmp = REG_SET_FIELD(tmp, DC_HPD_INT_CONTROL, DC_HPD_INT_EN, 0);
+			WREG32(mmDC_HPD_INT_CONTROL + hpd_offsets[idx], tmp);
+			continue;
+		}
+
 		tmp = RREG32(mmDC_HPD_CONTROL + hpd_offsets[idx]);
 		tmp = REG_SET_FIELD(tmp, DC_HPD_CONTROL, DC_HPD_EN, 1);
 		WREG32(mmDC_HPD_CONTROL + hpd_offsets[idx], tmp);
diff --git a/drivers/gpu/drm/amd/amdgpu/dce_v11_0.c b/drivers/gpu/drm/amd/amdgpu/dce_v11_0.c
index d4bf133908b1..67c7c05a751c 100644
--- a/drivers/gpu/drm/amd/amdgpu/dce_v11_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/dce_v11_0.c
@@ -443,16 +443,6 @@ static void dce_v11_0_hpd_init(struct amdgpu_device *adev)
 	list_for_each_entry(connector, &dev->mode_config.connector_list, head) {
 		struct amdgpu_connector *amdgpu_connector = to_amdgpu_connector(connector);
 
-		if (connector->connector_type == DRM_MODE_CONNECTOR_eDP ||
-		    connector->connector_type == DRM_MODE_CONNECTOR_LVDS) {
-			/* don't try to enable hpd on eDP or LVDS avoid breaking the
-			 * aux dp channel on imac and help (but not completely fix)
-			 * https://bugzilla.redhat.com/show_bug.cgi?id=726143
-			 * also avoid interrupt storms during dpms.
-			 */
-			continue;
-		}
-
 		switch (amdgpu_connector->hpd.hpd) {
 		case AMDGPU_HPD_1:
 			idx = 0;
@@ -476,6 +466,19 @@ static void dce_v11_0_hpd_init(struct amdgpu_device *adev)
 			continue;
 		}
 
+		if (connector->connector_type == DRM_MODE_CONNECTOR_eDP ||
+		    connector->connector_type == DRM_MODE_CONNECTOR_LVDS) {
+			/* don't try to enable hpd on eDP or LVDS avoid breaking the
+			 * aux dp channel on imac and help (but not completely fix)
+			 * https://bugzilla.redhat.com/show_bug.cgi?id=726143
+			 * also avoid interrupt storms during dpms.
+			 */
+			tmp = RREG32(mmDC_HPD_INT_CONTROL + hpd_offsets[idx]);
+			tmp = REG_SET_FIELD(tmp, DC_HPD_INT_CONTROL, DC_HPD_INT_EN, 0);
+			WREG32(mmDC_HPD_INT_CONTROL + hpd_offsets[idx], tmp);
+			continue;
+		}
+
 		tmp = RREG32(mmDC_HPD_CONTROL + hpd_offsets[idx]);
 		tmp = REG_SET_FIELD(tmp, DC_HPD_CONTROL, DC_HPD_EN, 1);
 		WREG32(mmDC_HPD_CONTROL + hpd_offsets[idx], tmp);
@@ -3109,6 +3112,7 @@ static int dce_v11_0_sw_fini(void *handle)
 
 	dce_v11_0_afmt_fini(adev);
 
+	drm_mode_config_cleanup(adev->ddev);
 	adev->mode_info.mode_config_initialized = false;
 
 	return 0;
diff --git a/drivers/gpu/drm/amd/amdgpu/dce_v8_0.c b/drivers/gpu/drm/amd/amdgpu/dce_v8_0.c
index 4fdfab1e9200..ea07c50369b4 100644
--- a/drivers/gpu/drm/amd/amdgpu/dce_v8_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/dce_v8_0.c
@@ -395,15 +395,6 @@ static void dce_v8_0_hpd_init(struct amdgpu_device *adev)
 	list_for_each_entry(connector, &dev->mode_config.connector_list, head) {
 		struct amdgpu_connector *amdgpu_connector = to_amdgpu_connector(connector);
 
-		if (connector->connector_type == DRM_MODE_CONNECTOR_eDP ||
-		    connector->connector_type == DRM_MODE_CONNECTOR_LVDS) {
-			/* don't try to enable hpd on eDP or LVDS avoid breaking the
-			 * aux dp channel on imac and help (but not completely fix)
-			 * https://bugzilla.redhat.com/show_bug.cgi?id=726143
-			 * also avoid interrupt storms during dpms.
-			 */
-			continue;
-		}
 		switch (amdgpu_connector->hpd.hpd) {
 		case AMDGPU_HPD_1:
 			WREG32(mmDC_HPD1_CONTROL, tmp);
@@ -426,6 +417,45 @@ static void dce_v8_0_hpd_init(struct amdgpu_device *adev)
 		default:
 			break;
 		}
+
+		if (connector->connector_type == DRM_MODE_CONNECTOR_eDP ||
+		    connector->connector_type == DRM_MODE_CONNECTOR_LVDS) {
+			/* don't try to enable hpd on eDP or LVDS avoid breaking the
+			 * aux dp channel on imac and help (but not completely fix)
+			 * https://bugzilla.redhat.com/show_bug.cgi?id=726143
+			 * also avoid interrupt storms during dpms.
+			 */
+			u32 dc_hpd_int_cntl_reg, dc_hpd_int_cntl;
+
+			switch (amdgpu_connector->hpd.hpd) {
+			case AMDGPU_HPD_1:
+				dc_hpd_int_cntl_reg = mmDC_HPD1_INT_CONTROL;
+				break;
+			case AMDGPU_HPD_2:
+				dc_hpd_int_cntl_reg = mmDC_HPD2_INT_CONTROL;
+				break;
+			case AMDGPU_HPD_3:
+				dc_hpd_int_cntl_reg = mmDC_HPD3_INT_CONTROL;
+				break;
+			case AMDGPU_HPD_4:
+				dc_hpd_int_cntl_reg = mmDC_HPD4_INT_CONTROL;
+				break;
+			case AMDGPU_HPD_5:
+				dc_hpd_int_cntl_reg = mmDC_HPD5_INT_CONTROL;
+				break;
+			case AMDGPU_HPD_6:
+				dc_hpd_int_cntl_reg = mmDC_HPD6_INT_CONTROL;
+				break;
+			default:
+				continue;
+			}
+
+			dc_hpd_int_cntl = RREG32(dc_hpd_int_cntl_reg);
+			dc_hpd_int_cntl &= ~DC_HPD1_INT_CONTROL__DC_HPD1_INT_EN_MASK;
+			WREG32(dc_hpd_int_cntl_reg, dc_hpd_int_cntl);
+			continue;
+		}
+
 		dce_v8_0_hpd_set_polarity(adev, amdgpu_connector->hpd.hpd);
 		amdgpu_irq_get(adev, &adev->hpd_irq, amdgpu_connector->hpd.hpd);
 	}
diff --git a/drivers/gpu/drm/amd/powerplay/eventmgr/eventactionchains.c b/drivers/gpu/drm/amd/powerplay/eventmgr/eventactionchains.c
index 635fc4b48184..92b117843875 100644
--- a/drivers/gpu/drm/amd/powerplay/eventmgr/eventactionchains.c
+++ b/drivers/gpu/drm/amd/powerplay/eventmgr/eventactionchains.c
@@ -262,6 +262,8 @@ static const pem_event_action * const display_config_change_event[] = {
 	unblock_adjust_power_state_tasks,
 	set_cpu_power_state,
 	notify_hw_power_source_tasks,
+	get_2d_performance_state_tasks,
+	set_performance_state_tasks,
 	/* updateDALConfigurationTasks,
 	variBrightDisplayConfigurationChangeTasks, */
 	adjust_power_state_tasks,
diff --git a/drivers/gpu/drm/amd/powerplay/eventmgr/psm.c b/drivers/gpu/drm/amd/powerplay/eventmgr/psm.c
index a46225c0fc01..d6bee727497c 100644
--- a/drivers/gpu/drm/amd/powerplay/eventmgr/psm.c
+++ b/drivers/gpu/drm/amd/powerplay/eventmgr/psm.c
@@ -100,11 +100,12 @@ int psm_adjust_power_state_dynamic(struct pp_eventmgr *eventmgr, bool skip)
 	if (requested == NULL)
 		return 0;
 
+	phm_apply_state_adjust_rules(hwmgr, requested, pcurrent);
+
 	if (pcurrent == NULL || (0 != phm_check_states_equal(hwmgr, &pcurrent->hardware, &requested->hardware, &equal)))
 		equal = false;
 
 	if (!equal || phm_check_smc_update_required_for_display_configuration(hwmgr)) {
-		phm_apply_state_adjust_rules(hwmgr, requested, pcurrent);
 		phm_set_power_state(hwmgr, &pcurrent->hardware, &requested->hardware);
 		hwmgr->current_ps = requested;
 	}
diff --git a/drivers/gpu/drm/drm_prime.c b/drivers/gpu/drm/drm_prime.c
index 780589b420a4..9c4387d79d11 100644
--- a/drivers/gpu/drm/drm_prime.c
+++ b/drivers/gpu/drm/drm_prime.c
@@ -335,14 +335,17 @@ static const struct dma_buf_ops drm_gem_prime_dmabuf_ops =  {
  * using the PRIME helpers.
  */
 struct dma_buf *drm_gem_prime_export(struct drm_device *dev,
-				     struct drm_gem_object *obj, int flags)
+				     struct drm_gem_object *obj,
+				     int flags)
 {
-	DEFINE_DMA_BUF_EXPORT_INFO(exp_info);
-
-	exp_info.ops = &drm_gem_prime_dmabuf_ops;
-	exp_info.size = obj->size;
-	exp_info.flags = flags;
-	exp_info.priv = obj;
+	struct dma_buf_export_info exp_info = {
+		.exp_name = KBUILD_MODNAME, /* white lie for debug */
+		.owner = dev->driver->fops->owner,
+		.ops = &drm_gem_prime_dmabuf_ops,
+		.size = obj->size,
+		.flags = flags,
+		.priv = obj,
+	};
 
 	if (dev->driver->gem_prime_res_obj)
 		exp_info.resv = dev->driver->gem_prime_res_obj(obj);
diff --git a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c b/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c
index 7882387f9bff..5fc8ebdf40b2 100644
--- a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c
+++ b/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c
@@ -330,6 +330,7 @@ static int fsl_dcu_drm_probe(struct platform_device *pdev)
 	const char *pix_clk_in_name;
 	const struct of_device_id *id;
 	int ret;
+	u8 div_ratio_shift = 0;
 
 	fsl_dev = devm_kzalloc(dev, sizeof(*fsl_dev), GFP_KERNEL);
 	if (!fsl_dev)
@@ -382,11 +383,14 @@ static int fsl_dcu_drm_probe(struct platform_device *pdev)
 		pix_clk_in = fsl_dev->clk;
 	}
 
+	if (of_property_read_bool(dev->of_node, "big-endian"))
+		div_ratio_shift = 24;
+
 	pix_clk_in_name = __clk_get_name(pix_clk_in);
 	snprintf(pix_clk_name, sizeof(pix_clk_name), "%s_pix", pix_clk_in_name);
 	fsl_dev->pix_clk = clk_register_divider(dev, pix_clk_name,
 			pix_clk_in_name, 0, base + DCU_DIV_RATIO,
-			0, 8, CLK_DIVIDER_ROUND_CLOSEST, NULL);
+			div_ratio_shift, 8, CLK_DIVIDER_ROUND_CLOSEST, NULL);
 	if (IS_ERR(fsl_dev->pix_clk)) {
 		dev_err(dev, "failed to register pix clk\n");
 		ret = PTR_ERR(fsl_dev->pix_clk);
diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
index f68c78918d63..84a00105871d 100644
--- a/drivers/gpu/drm/i915/i915_drv.h
+++ b/drivers/gpu/drm/i915/i915_drv.h
@@ -631,6 +631,8 @@ struct drm_i915_display_funcs {
 				  struct intel_crtc_state *crtc_state);
 	void (*crtc_enable)(struct drm_crtc *crtc);
 	void (*crtc_disable)(struct drm_crtc *crtc);
+	void (*update_crtcs)(struct drm_atomic_state *state,
+			     unsigned int *crtc_vblank_mask);
 	void (*audio_codec_enable)(struct drm_connector *connector,
 				   struct intel_encoder *encoder,
 				   const struct drm_display_mode *adjusted_mode);
@@ -1965,11 +1967,11 @@ struct drm_i915_private {
 	struct vlv_s0ix_state vlv_s0ix_state;
 
 	enum {
-		I915_SKL_SAGV_UNKNOWN = 0,
-		I915_SKL_SAGV_DISABLED,
-		I915_SKL_SAGV_ENABLED,
-		I915_SKL_SAGV_NOT_CONTROLLED
-	} skl_sagv_status;
+		I915_SAGV_UNKNOWN = 0,
+		I915_SAGV_DISABLED,
+		I915_SAGV_ENABLED,
+		I915_SAGV_NOT_CONTROLLED
+	} sagv_status;
 
 	struct {
 		/*
@@ -2280,21 +2282,19 @@ struct drm_i915_gem_object {
 	/** Record of address bit 17 of each page at last unbind. */
 	unsigned long *bit_17;
 
-	union {
-		/** for phy allocated objects */
-		struct drm_dma_handle *phys_handle;
-
-		struct i915_gem_userptr {
-			uintptr_t ptr;
-			unsigned read_only :1;
-			unsigned workers :4;
+	struct i915_gem_userptr {
+		uintptr_t ptr;
+		unsigned read_only :1;
+		unsigned workers :4;
 #define I915_GEM_USERPTR_MAX_WORKERS 15
 
-			struct i915_mm_struct *mm;
-			struct i915_mmu_object *mmu_object;
-			struct work_struct *work;
-		} userptr;
-	};
+		struct i915_mm_struct *mm;
+		struct i915_mmu_object *mmu_object;
+		struct work_struct *work;
+	} userptr;
+
+	/** for phys allocated objects */
+	struct drm_dma_handle *phys_handle;
 };
 #define to_intel_bo(x) container_of(x, struct drm_i915_gem_object, base)
 
diff --git a/drivers/gpu/drm/i915/i915_gem_stolen.c b/drivers/gpu/drm/i915/i915_gem_stolen.c
index 66be299a1486..2bb69f3c5b84 100644
--- a/drivers/gpu/drm/i915/i915_gem_stolen.c
+++ b/drivers/gpu/drm/i915/i915_gem_stolen.c
@@ -115,17 +115,28 @@ static unsigned long i915_stolen_to_physical(struct drm_device *dev)
 
 		base = bsm & INTEL_BSM_MASK;
 	} else if (IS_I865G(dev)) {
+		u32 tseg_size = 0;
 		u16 toud = 0;
+		u8 tmp;
+
+		pci_bus_read_config_byte(dev->pdev->bus, PCI_DEVFN(0, 0),
+					 I845_ESMRAMC, &tmp);
+
+		if (tmp & TSEG_ENABLE) {
+			switch (tmp & I845_TSEG_SIZE_MASK) {
+			case I845_TSEG_SIZE_512K:
+				tseg_size = KB(512);
+				break;
+			case I845_TSEG_SIZE_1M:
+				tseg_size = MB(1);
+				break;
+			}
+		}
 
-		/*
-		 * FIXME is the graphics stolen memory region
-		 * always at TOUD? Ie. is it always the last
-		 * one to be allocated by the BIOS?
-		 */
 		pci_bus_read_config_word(dev->pdev->bus, PCI_DEVFN(0, 0),
 					 I865_TOUD, &toud);
 
-		base = toud << 16;
+		base = (toud << 16) + tseg_size;
 	} else if (IS_I85X(dev)) {
 		u32 tseg_size = 0;
 		u32 tom;
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
index 175595fc3e45..e9a64fba6333 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -2980,6 +2980,7 @@ static void skylake_update_primary_plane(struct drm_plane *plane,
 	struct intel_crtc *intel_crtc = to_intel_crtc(crtc_state->base.crtc);
 	struct drm_framebuffer *fb = plane_state->base.fb;
 	struct drm_i915_gem_object *obj = intel_fb_obj(fb);
+	const struct skl_wm_values *wm = &dev_priv->wm.skl_results;
 	int pipe = intel_crtc->pipe;
 	u32 plane_ctl, stride_div, stride;
 	u32 tile_height, plane_offset, plane_size;
@@ -3031,6 +3032,9 @@ static void skylake_update_primary_plane(struct drm_plane *plane,
 	intel_crtc->adjusted_x = x_offset;
 	intel_crtc->adjusted_y = y_offset;
 
+	if (wm->dirty_pipes & drm_crtc_mask(&intel_crtc->base))
+		skl_write_plane_wm(intel_crtc, wm, 0);
+
 	I915_WRITE(PLANE_CTL(pipe, 0), plane_ctl);
 	I915_WRITE(PLANE_OFFSET(pipe, 0), plane_offset);
 	I915_WRITE(PLANE_SIZE(pipe, 0), plane_size);
@@ -3061,7 +3065,15 @@ static void skylake_disable_primary_plane(struct drm_plane *primary,
 {
 	struct drm_device *dev = crtc->dev;
 	struct drm_i915_private *dev_priv = to_i915(dev);
-	int pipe = to_intel_crtc(crtc)->pipe;
+	struct intel_crtc *intel_crtc = to_intel_crtc(crtc);
+	int pipe = intel_crtc->pipe;
+
+	/*
+	 * We only populate skl_results on watermark updates, and if the
+	 * plane's visiblity isn't actually changing neither is its watermarks.
+	 */
+	if (!to_intel_plane_state(crtc->primary->state)->visible)
+		skl_write_plane_wm(intel_crtc, &dev_priv->wm.skl_results, 0);
 
 	I915_WRITE(PLANE_CTL(pipe, 0), 0);
 	I915_WRITE(PLANE_SURF(pipe, 0), 0);
@@ -8995,6 +9007,24 @@ static void ironlake_compute_dpll(struct intel_crtc *intel_crtc,
 	if (intel_crtc_has_dp_encoder(crtc_state))
 		dpll |= DPLL_SDVO_HIGH_SPEED;
 
+	/*
+	 * The high speed IO clock is only really required for
+	 * SDVO/HDMI/DP, but we also enable it for CRT to make it
+	 * possible to share the DPLL between CRT and HDMI. Enabling
+	 * the clock needlessly does no real harm, except use up a
+	 * bit of power potentially.
+	 *
+	 * We'll limit this to IVB with 3 pipes, since it has only two
+	 * DPLLs and so DPLL sharing is the only way to get three pipes
+	 * driving PCH ports at the same time. On SNB we could do this,
+	 * and potentially avoid enabling the second DPLL, but it's not
+	 * clear if it''s a win or loss power wise. No point in doing
+	 * this on ILK at all since it has a fixed DPLL<->pipe mapping.
+	 */
+	if (INTEL_INFO(dev_priv)->num_pipes == 3 &&
+	    intel_crtc_has_type(crtc_state, INTEL_OUTPUT_ANALOG))
+		dpll |= DPLL_SDVO_HIGH_SPEED;
+
 	/* compute bitmask from p1 value */
 	dpll |= (1 << (crtc_state->dpll.p1 - 1)) << DPLL_FPA01_P1_POST_DIV_SHIFT;
 	/* also FPA1 */
@@ -10306,9 +10336,13 @@ static void i9xx_update_cursor(struct drm_crtc *crtc, u32 base,
 	struct drm_device *dev = crtc->dev;
 	struct drm_i915_private *dev_priv = to_i915(dev);
 	struct intel_crtc *intel_crtc = to_intel_crtc(crtc);
+	const struct skl_wm_values *wm = &dev_priv->wm.skl_results;
 	int pipe = intel_crtc->pipe;
 	uint32_t cntl = 0;
 
+	if (INTEL_GEN(dev_priv) >= 9 && wm->dirty_pipes & drm_crtc_mask(crtc))
+		skl_write_cursor_wm(intel_crtc, wm);
+
 	if (plane_state && plane_state->visible) {
 		cntl = MCURSOR_GAMMA_ENABLE;
 		switch (plane_state->base.crtc_w) {
@@ -12956,16 +12990,23 @@ static void verify_wm_state(struct drm_crtc *crtc,
 			  hw_entry->start, hw_entry->end);
 	}
 
-	/* cursor */
-	hw_entry = &hw_ddb.plane[pipe][PLANE_CURSOR];
-	sw_entry = &sw_ddb->plane[pipe][PLANE_CURSOR];
-
-	if (!skl_ddb_entry_equal(hw_entry, sw_entry)) {
-		DRM_ERROR("mismatch in DDB state pipe %c cursor "
-			  "(expected (%u,%u), found (%u,%u))\n",
-			  pipe_name(pipe),
-			  sw_entry->start, sw_entry->end,
-			  hw_entry->start, hw_entry->end);
+	/*
+	 * cursor
+	 * If the cursor plane isn't active, we may not have updated it's ddb
+	 * allocation. In that case since the ddb allocation will be updated
+	 * once the plane becomes visible, we can skip this check
+	 */
+	if (intel_crtc->cursor_addr) {
+		hw_entry = &hw_ddb.plane[pipe][PLANE_CURSOR];
+		sw_entry = &sw_ddb->plane[pipe][PLANE_CURSOR];
+
+		if (!skl_ddb_entry_equal(hw_entry, sw_entry)) {
+			DRM_ERROR("mismatch in DDB state pipe %c cursor "
+				  "(expected (%u,%u), found (%u,%u))\n",
+				  pipe_name(pipe),
+				  sw_entry->start, sw_entry->end,
+				  hw_entry->start, hw_entry->end);
+		}
 	}
 }
 
@@ -13671,6 +13712,111 @@ static bool needs_vblank_wait(struct intel_crtc_state *crtc_state)
 	return false;
 }
 
+static void intel_update_crtc(struct drm_crtc *crtc,
+			      struct drm_atomic_state *state,
+			      struct drm_crtc_state *old_crtc_state,
+			      unsigned int *crtc_vblank_mask)
+{
+	struct drm_device *dev = crtc->dev;
+	struct drm_i915_private *dev_priv = to_i915(dev);
+	struct intel_crtc *intel_crtc = to_intel_crtc(crtc);
+	struct intel_crtc_state *pipe_config = to_intel_crtc_state(crtc->state);
+	bool modeset = needs_modeset(crtc->state);
+
+	if (modeset) {
+		update_scanline_offset(intel_crtc);
+		dev_priv->display.crtc_enable(crtc);
+	} else {
+		intel_pre_plane_update(to_intel_crtc_state(old_crtc_state));
+	}
+
+	if (drm_atomic_get_existing_plane_state(state, crtc->primary)) {
+		intel_fbc_enable(
+		    intel_crtc, pipe_config,
+		    to_intel_plane_state(crtc->primary->state));
+	}
+
+	drm_atomic_helper_commit_planes_on_crtc(old_crtc_state);
+
+	if (needs_vblank_wait(pipe_config))
+		*crtc_vblank_mask |= drm_crtc_mask(crtc);
+}
+
+static void intel_update_crtcs(struct drm_atomic_state *state,
+			       unsigned int *crtc_vblank_mask)
+{
+	struct drm_crtc *crtc;
+	struct drm_crtc_state *old_crtc_state;
+	int i;
+
+	for_each_crtc_in_state(state, crtc, old_crtc_state, i) {
+		if (!crtc->state->active)
+			continue;
+
+		intel_update_crtc(crtc, state, old_crtc_state,
+				  crtc_vblank_mask);
+	}
+}
+
+static void skl_update_crtcs(struct drm_atomic_state *state,
+			     unsigned int *crtc_vblank_mask)
+{
+	struct drm_device *dev = state->dev;
+	struct drm_i915_private *dev_priv = to_i915(dev);
+	struct intel_atomic_state *intel_state = to_intel_atomic_state(state);
+	struct drm_crtc *crtc;
+	struct drm_crtc_state *old_crtc_state;
+	struct skl_ddb_allocation *new_ddb = &intel_state->wm_results.ddb;
+	struct skl_ddb_allocation *cur_ddb = &dev_priv->wm.skl_hw.ddb;
+	unsigned int updated = 0;
+	bool progress;
+	enum pipe pipe;
+
+	/*
+	 * Whenever the number of active pipes changes, we need to make sure we
+	 * update the pipes in the right order so that their ddb allocations
+	 * never overlap with eachother inbetween CRTC updates. Otherwise we'll
+	 * cause pipe underruns and other bad stuff.
+	 */
+	do {
+		int i;
+		progress = false;
+
+		for_each_crtc_in_state(state, crtc, old_crtc_state, i) {
+			bool vbl_wait = false;
+			unsigned int cmask = drm_crtc_mask(crtc);
+			pipe = to_intel_crtc(crtc)->pipe;
+
+			if (updated & cmask || !crtc->state->active)
+				continue;
+			if (skl_ddb_allocation_overlaps(state, cur_ddb, new_ddb,
+							pipe))
+				continue;
+
+			updated |= cmask;
+
+			/*
+			 * If this is an already active pipe, it's DDB changed,
+			 * and this isn't the last pipe that needs updating
+			 * then we need to wait for a vblank to pass for the
+			 * new ddb allocation to take effect.
+			 */
+			if (!skl_ddb_allocation_equals(cur_ddb, new_ddb, pipe) &&
+			    !crtc->state->active_changed &&
+			    intel_state->wm_results.dirty_pipes != updated)
+				vbl_wait = true;
+
+			intel_update_crtc(crtc, state, old_crtc_state,
+					  crtc_vblank_mask);
+
+			if (vbl_wait)
+				intel_wait_for_vblank(dev, pipe);
+
+			progress = true;
+		}
+	} while (progress);
+}
+
 static void intel_atomic_commit_tail(struct drm_atomic_state *state)
 {
 	struct drm_device *dev = state->dev;
@@ -13763,23 +13909,15 @@ static void intel_atomic_commit_tail(struct drm_atomic_state *state)
 		 * SKL workaround: bspec recommends we disable the SAGV when we
 		 * have more then one pipe enabled
 		 */
-		if (IS_SKYLAKE(dev_priv) && !skl_can_enable_sagv(state))
-			skl_disable_sagv(dev_priv);
+		if (!intel_can_enable_sagv(state))
+			intel_disable_sagv(dev_priv);
 
 		intel_modeset_verify_disabled(dev);
 	}
 
-	/* Now enable the clocks, plane, pipe, and connectors that we set up. */
+	/* Complete the events for pipes that have now been disabled */
 	for_each_crtc_in_state(state, crtc, old_crtc_state, i) {
-		struct intel_crtc *intel_crtc = to_intel_crtc(crtc);
 		bool modeset = needs_modeset(crtc->state);
-		struct intel_crtc_state *pipe_config =
-			to_intel_crtc_state(crtc->state);
-
-		if (modeset && crtc->state->active) {
-			update_scanline_offset(to_intel_crtc(crtc));
-			dev_priv->display.crtc_enable(crtc);
-		}
 
 		/* Complete events for now disable pipes here. */
 		if (modeset && !crtc->state->active && crtc->state->event) {
@@ -13789,21 +13927,11 @@ static void intel_atomic_commit_tail(struct drm_atomic_state *state)
 
 			crtc->state->event = NULL;
 		}
-
-		if (!modeset)
-			intel_pre_plane_update(to_intel_crtc_state(old_crtc_state));
-
-		if (crtc->state->active &&
-		    drm_atomic_get_existing_plane_state(state, crtc->primary))
-			intel_fbc_enable(intel_crtc, pipe_config, to_intel_plane_state(crtc->primary->state));
-
-		if (crtc->state->active)
-			drm_atomic_helper_commit_planes_on_crtc(old_crtc_state);
-
-		if (pipe_config->base.active && needs_vblank_wait(pipe_config))
-			crtc_vblank_mask |= 1 << i;
 	}
 
+	/* Now enable the clocks, plane, pipe, and connectors that we set up. */
+	dev_priv->display.update_crtcs(state, &crtc_vblank_mask);
+
 	/* FIXME: We should call drm_atomic_helper_commit_hw_done() here
 	 * already, but still need the state for the delayed optimization. To
 	 * fix this:
@@ -13839,9 +13967,8 @@ static void intel_atomic_commit_tail(struct drm_atomic_state *state)
 		intel_modeset_verify_crtc(crtc, old_crtc_state, crtc->state);
 	}
 
-	if (IS_SKYLAKE(dev_priv) && intel_state->modeset &&
-	    skl_can_enable_sagv(state))
-		skl_enable_sagv(dev_priv);
+	if (intel_state->modeset && intel_can_enable_sagv(state))
+		intel_enable_sagv(dev_priv);
 
 	drm_atomic_helper_commit_hw_done(state);
 
@@ -14221,10 +14348,12 @@ static void intel_begin_crtc_commit(struct drm_crtc *crtc,
 				    struct drm_crtc_state *old_crtc_state)
 {
 	struct drm_device *dev = crtc->dev;
+	struct drm_i915_private *dev_priv = to_i915(dev);
 	struct intel_crtc *intel_crtc = to_intel_crtc(crtc);
 	struct intel_crtc_state *old_intel_state =
 		to_intel_crtc_state(old_crtc_state);
 	bool modeset = needs_modeset(crtc->state);
+	enum pipe pipe = intel_crtc->pipe;
 
 	/* Perform vblank evasion around commit operation */
 	intel_pipe_update_start(intel_crtc);
@@ -14239,8 +14368,12 @@ static void intel_begin_crtc_commit(struct drm_crtc *crtc,
 
 	if (to_intel_crtc_state(crtc->state)->update_pipe)
 		intel_update_pipe_config(intel_crtc, old_intel_state);
-	else if (INTEL_INFO(dev)->gen >= 9)
+	else if (INTEL_GEN(dev_priv) >= 9) {
 		skl_detach_scalers(intel_crtc);
+
+		I915_WRITE(PIPE_WM_LINETIME(pipe),
+			   dev_priv->wm.skl_hw.wm_linetime[pipe]);
+	}
 }
 
 static void intel_finish_crtc_commit(struct drm_crtc *crtc,
@@ -15347,6 +15480,11 @@ void intel_init_display_hooks(struct drm_i915_private *dev_priv)
 			skl_modeset_calc_cdclk;
 	}
 
+	if (dev_priv->info.gen >= 9)
+		dev_priv->display.update_crtcs = skl_update_crtcs;
+	else
+		dev_priv->display.update_crtcs = intel_update_crtcs;
+
 	switch (INTEL_INFO(dev_priv)->gen) {
 	case 2:
 		dev_priv->display.queue_flip = intel_gen2_queue_flip;
diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
index 21b04c3eda41..1ca155f4d368 100644
--- a/drivers/gpu/drm/i915/intel_dp.c
+++ b/drivers/gpu/drm/i915/intel_dp.c
@@ -4148,7 +4148,7 @@ static bool bxt_digital_port_connected(struct drm_i915_private *dev_priv,
  *
  * Return %true if @port is connected, %false otherwise.
  */
-bool intel_digital_port_connected(struct drm_i915_private *dev_priv,
+static bool intel_digital_port_connected(struct drm_i915_private *dev_priv,
 					 struct intel_digital_port *port)
 {
 	if (HAS_PCH_IBX(dev_priv))
@@ -4207,7 +4207,7 @@ intel_dp_unset_edid(struct intel_dp *intel_dp)
 	intel_dp->has_audio = false;
 }
 
-static void
+static enum drm_connector_status
 intel_dp_long_pulse(struct intel_connector *intel_connector)
 {
 	struct drm_connector *connector = &intel_connector->base;
@@ -4232,7 +4232,7 @@ intel_dp_long_pulse(struct intel_connector *intel_connector)
 	else
 		status = connector_status_disconnected;
 
-	if (status != connector_status_connected) {
+	if (status == connector_status_disconnected) {
 		intel_dp->compliance_test_active = 0;
 		intel_dp->compliance_test_type = 0;
 		intel_dp->compliance_test_data = 0;
@@ -4284,8 +4284,8 @@ intel_dp_long_pulse(struct intel_connector *intel_connector)
 	intel_dp->aux.i2c_defer_count = 0;
 
 	intel_dp_set_edid(intel_dp);
-
-	status = connector_status_connected;
+	if (is_edp(intel_dp) || intel_connector->detect_edid)
+		status = connector_status_connected;
 	intel_dp->detect_done = true;
 
 	/* Try to read the source of the interrupt */
@@ -4303,12 +4303,11 @@ intel_dp_long_pulse(struct intel_connector *intel_connector)
 	}
 
 out:
-	if ((status != connector_status_connected) &&
-	    (intel_dp->is_mst == false))
+	if (status != connector_status_connected && !intel_dp->is_mst)
 		intel_dp_unset_edid(intel_dp);
 
 	intel_display_power_put(to_i915(dev), power_domain);
-	return;
+	return status;
 }
 
 static enum drm_connector_status
@@ -4317,7 +4316,7 @@ intel_dp_detect(struct drm_connector *connector, bool force)
 	struct intel_dp *intel_dp = intel_attached_dp(connector);
 	struct intel_digital_port *intel_dig_port = dp_to_dig_port(intel_dp);
 	struct intel_encoder *intel_encoder = &intel_dig_port->base;
-	struct intel_connector *intel_connector = to_intel_connector(connector);
+	enum drm_connector_status status = connector->status;
 
 	DRM_DEBUG_KMS("[CONNECTOR:%d:%s]\n",
 		      connector->base.id, connector->name);
@@ -4332,14 +4331,11 @@ intel_dp_detect(struct drm_connector *connector, bool force)
 
 	/* If full detect is not performed yet, do a full detect */
 	if (!intel_dp->detect_done)
-		intel_dp_long_pulse(intel_dp->attached_connector);
+		status = intel_dp_long_pulse(intel_dp->attached_connector);
 
 	intel_dp->detect_done = false;
 
-	if (is_edp(intel_dp) || intel_connector->detect_edid)
-		return connector_status_connected;
-	else
-		return connector_status_disconnected;
+	return status;
 }
 
 static void
@@ -4696,36 +4692,34 @@ intel_dp_hpd_pulse(struct intel_digital_port *intel_dig_port, bool long_hpd)
 		      port_name(intel_dig_port->port),
 		      long_hpd ? "long" : "short");
 
+	if (long_hpd) {
+		intel_dp->detect_done = false;
+		return IRQ_NONE;
+	}
+
 	power_domain = intel_display_port_aux_power_domain(intel_encoder);
 	intel_display_power_get(dev_priv, power_domain);
 
-	if (long_hpd) {
-		intel_dp_long_pulse(intel_dp->attached_connector);
-		if (intel_dp->is_mst)
-			ret = IRQ_HANDLED;
-		goto put_power;
-
-	} else {
-		if (intel_dp->is_mst) {
-			if (intel_dp_check_mst_status(intel_dp) == -EINVAL) {
-				/*
-				 * If we were in MST mode, and device is not
-				 * there, get out of MST mode
-				 */
-				DRM_DEBUG_KMS("MST device may have disappeared %d vs %d\n",
-					      intel_dp->is_mst, intel_dp->mst_mgr.mst_state);
-				intel_dp->is_mst = false;
-				drm_dp_mst_topology_mgr_set_mst(&intel_dp->mst_mgr,
-								intel_dp->is_mst);
-				goto put_power;
-			}
+	if (intel_dp->is_mst) {
+		if (intel_dp_check_mst_status(intel_dp) == -EINVAL) {
+			/*
+			 * If we were in MST mode, and device is not
+			 * there, get out of MST mode
+			 */
+			DRM_DEBUG_KMS("MST device may have disappeared %d vs %d\n",
+				      intel_dp->is_mst, intel_dp->mst_mgr.mst_state);
+			intel_dp->is_mst = false;
+			drm_dp_mst_topology_mgr_set_mst(&intel_dp->mst_mgr,
+							intel_dp->is_mst);
+			intel_dp->detect_done = false;
+			goto put_power;
 		}
+	}
 
-		if (!intel_dp->is_mst) {
-			if (!intel_dp_short_pulse(intel_dp)) {
-				intel_dp_long_pulse(intel_dp->attached_connector);
-				goto put_power;
-			}
+	if (!intel_dp->is_mst) {
+		if (!intel_dp_short_pulse(intel_dp)) {
+			intel_dp->detect_done = false;
+			goto put_power;
 		}
 	}
 
diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h
index ff399b9a5c1f..9a58800cba3b 100644
--- a/drivers/gpu/drm/i915/intel_drv.h
+++ b/drivers/gpu/drm/i915/intel_drv.h
@@ -236,6 +236,7 @@ struct intel_panel {
 		bool enabled;
 		bool combination_mode;	/* gen 2/4 only */
 		bool active_low_pwm;
+		bool alternate_pwm_increment;	/* lpt+ */
 
 		/* PWM chip */
 		bool util_pin_active_low;	/* bxt+ */
@@ -1387,8 +1388,6 @@ void intel_edp_drrs_disable(struct intel_dp *intel_dp);
 void intel_edp_drrs_invalidate(struct drm_device *dev,
 		unsigned frontbuffer_bits);
 void intel_edp_drrs_flush(struct drm_device *dev, unsigned frontbuffer_bits);
-bool intel_digital_port_connected(struct drm_i915_private *dev_priv,
-					 struct intel_digital_port *port);
 
 void
 intel_dp_program_link_training_pattern(struct intel_dp *intel_dp,
@@ -1716,9 +1715,21 @@ void ilk_wm_get_hw_state(struct drm_device *dev);
 void skl_wm_get_hw_state(struct drm_device *dev);
 void skl_ddb_get_hw_state(struct drm_i915_private *dev_priv,
 			  struct skl_ddb_allocation *ddb /* out */);
-bool skl_can_enable_sagv(struct drm_atomic_state *state);
-int skl_enable_sagv(struct drm_i915_private *dev_priv);
-int skl_disable_sagv(struct drm_i915_private *dev_priv);
+bool intel_can_enable_sagv(struct drm_atomic_state *state);
+int intel_enable_sagv(struct drm_i915_private *dev_priv);
+int intel_disable_sagv(struct drm_i915_private *dev_priv);
+bool skl_ddb_allocation_equals(const struct skl_ddb_allocation *old,
+			       const struct skl_ddb_allocation *new,
+			       enum pipe pipe);
+bool skl_ddb_allocation_overlaps(struct drm_atomic_state *state,
+				 const struct skl_ddb_allocation *old,
+				 const struct skl_ddb_allocation *new,
+				 enum pipe pipe);
+void skl_write_cursor_wm(struct intel_crtc *intel_crtc,
+			 const struct skl_wm_values *wm);
+void skl_write_plane_wm(struct intel_crtc *intel_crtc,
+			const struct skl_wm_values *wm,
+			int plane);
 uint32_t ilk_pipe_pixel_rate(const struct intel_crtc_state *pipe_config);
 bool ilk_disable_lp_wm(struct drm_device *dev);
 int sanitize_rc6_option(struct drm_i915_private *dev_priv, int enable_rc6);
diff --git a/drivers/gpu/drm/i915/intel_hdmi.c b/drivers/gpu/drm/i915/intel_hdmi.c
index 4df9f384910c..c3aa9e670d15 100644
--- a/drivers/gpu/drm/i915/intel_hdmi.c
+++ b/drivers/gpu/drm/i915/intel_hdmi.c
@@ -1422,24 +1422,22 @@ intel_hdmi_dp_dual_mode_detect(struct drm_connector *connector, bool has_edid)
 }
 
 static bool
-intel_hdmi_set_edid(struct drm_connector *connector, bool force)
+intel_hdmi_set_edid(struct drm_connector *connector)
 {
 	struct drm_i915_private *dev_priv = to_i915(connector->dev);
 	struct intel_hdmi *intel_hdmi = intel_attached_hdmi(connector);
-	struct edid *edid = NULL;
+	struct edid *edid;
 	bool connected = false;
 
-	if (force) {
-		intel_display_power_get(dev_priv, POWER_DOMAIN_GMBUS);
+	intel_display_power_get(dev_priv, POWER_DOMAIN_GMBUS);
 
-		edid = drm_get_edid(connector,
-				    intel_gmbus_get_adapter(dev_priv,
-				    intel_hdmi->ddc_bus));
+	edid = drm_get_edid(connector,
+			    intel_gmbus_get_adapter(dev_priv,
+			    intel_hdmi->ddc_bus));
 
-		intel_hdmi_dp_dual_mode_detect(connector, edid != NULL);
+	intel_hdmi_dp_dual_mode_detect(connector, edid != NULL);
 
-		intel_display_power_put(dev_priv, POWER_DOMAIN_GMBUS);
-	}
+	intel_display_power_put(dev_priv, POWER_DOMAIN_GMBUS);
 
 	to_intel_connector(connector)->detect_edid = edid;
 	if (edid && edid->input & DRM_EDID_INPUT_DIGITAL) {
@@ -1465,37 +1463,16 @@ static enum drm_connector_status
 intel_hdmi_detect(struct drm_connector *connector, bool force)
 {
 	enum drm_connector_status status;
-	struct intel_hdmi *intel_hdmi = intel_attached_hdmi(connector);
 	struct drm_i915_private *dev_priv = to_i915(connector->dev);
-	bool live_status = false;
-	unsigned int try;
 
 	DRM_DEBUG_KMS("[CONNECTOR:%d:%s]\n",
 		      connector->base.id, connector->name);
 
 	intel_display_power_get(dev_priv, POWER_DOMAIN_GMBUS);
 
-	for (try = 0; !live_status && try < 9; try++) {
-		if (try)
-			msleep(10);
-		live_status = intel_digital_port_connected(dev_priv,
-				hdmi_to_dig_port(intel_hdmi));
-	}
-
-	if (!live_status) {
-		DRM_DEBUG_KMS("HDMI live status down\n");
-		/*
-		 * Live status register is not reliable on all intel platforms.
-		 * So consider live_status only for certain platforms, for
-		 * others, read EDID to determine presence of sink.
-		 */
-		if (INTEL_INFO(dev_priv)->gen < 7 || IS_IVYBRIDGE(dev_priv))
-			live_status = true;
-	}
-
 	intel_hdmi_unset_edid(connector);
 
-	if (intel_hdmi_set_edid(connector, live_status)) {
+	if (intel_hdmi_set_edid(connector)) {
 		struct intel_hdmi *intel_hdmi = intel_attached_hdmi(connector);
 
 		hdmi_to_dig_port(intel_hdmi)->base.type = INTEL_OUTPUT_HDMI;
@@ -1521,7 +1498,7 @@ intel_hdmi_force(struct drm_connector *connector)
 	if (connector->status != connector_status_connected)
 		return;
 
-	intel_hdmi_set_edid(connector, true);
+	intel_hdmi_set_edid(connector);
 	hdmi_to_dig_port(intel_hdmi)->base.type = INTEL_OUTPUT_HDMI;
 }
 
diff --git a/drivers/gpu/drm/i915/intel_panel.c b/drivers/gpu/drm/i915/intel_panel.c
index 96c65d77e886..9a2393a6b277 100644
--- a/drivers/gpu/drm/i915/intel_panel.c
+++ b/drivers/gpu/drm/i915/intel_panel.c
@@ -841,7 +841,7 @@ static void lpt_enable_backlight(struct intel_connector *connector)
 {
 	struct drm_i915_private *dev_priv = to_i915(connector->base.dev);
 	struct intel_panel *panel = &connector->panel;
-	u32 pch_ctl1, pch_ctl2;
+	u32 pch_ctl1, pch_ctl2, schicken;
 
 	pch_ctl1 = I915_READ(BLC_PWM_PCH_CTL1);
 	if (pch_ctl1 & BLM_PCH_PWM_ENABLE) {
@@ -850,6 +850,22 @@ static void lpt_enable_backlight(struct intel_connector *connector)
 		I915_WRITE(BLC_PWM_PCH_CTL1, pch_ctl1);
 	}
 
+	if (HAS_PCH_LPT(dev_priv)) {
+		schicken = I915_READ(SOUTH_CHICKEN2);
+		if (panel->backlight.alternate_pwm_increment)
+			schicken |= LPT_PWM_GRANULARITY;
+		else
+			schicken &= ~LPT_PWM_GRANULARITY;
+		I915_WRITE(SOUTH_CHICKEN2, schicken);
+	} else {
+		schicken = I915_READ(SOUTH_CHICKEN1);
+		if (panel->backlight.alternate_pwm_increment)
+			schicken |= SPT_PWM_GRANULARITY;
+		else
+			schicken &= ~SPT_PWM_GRANULARITY;
+		I915_WRITE(SOUTH_CHICKEN1, schicken);
+	}
+
 	pch_ctl2 = panel->backlight.max << 16;
 	I915_WRITE(BLC_PWM_PCH_CTL2, pch_ctl2);
 
@@ -1242,10 +1258,10 @@ static u32 bxt_hz_to_pwm(struct intel_connector *connector, u32 pwm_freq_hz)
  */
 static u32 spt_hz_to_pwm(struct intel_connector *connector, u32 pwm_freq_hz)
 {
-	struct drm_i915_private *dev_priv = to_i915(connector->base.dev);
+	struct intel_panel *panel = &connector->panel;
 	u32 mul;
 
-	if (I915_READ(SOUTH_CHICKEN1) & SPT_PWM_GRANULARITY)
+	if (panel->backlight.alternate_pwm_increment)
 		mul = 128;
 	else
 		mul = 16;
@@ -1261,9 +1277,10 @@ static u32 spt_hz_to_pwm(struct intel_connector *connector, u32 pwm_freq_hz)
 static u32 lpt_hz_to_pwm(struct intel_connector *connector, u32 pwm_freq_hz)
 {
 	struct drm_i915_private *dev_priv = to_i915(connector->base.dev);
+	struct intel_panel *panel = &connector->panel;
 	u32 mul, clock;
 
-	if (I915_READ(SOUTH_CHICKEN2) & LPT_PWM_GRANULARITY)
+	if (panel->backlight.alternate_pwm_increment)
 		mul = 16;
 	else
 		mul = 128;
@@ -1414,6 +1431,13 @@ static int lpt_setup_backlight(struct intel_connector *connector, enum pipe unus
 	struct drm_i915_private *dev_priv = to_i915(connector->base.dev);
 	struct intel_panel *panel = &connector->panel;
 	u32 pch_ctl1, pch_ctl2, val;
+	bool alt;
+
+	if (HAS_PCH_LPT(dev_priv))
+		alt = I915_READ(SOUTH_CHICKEN2) & LPT_PWM_GRANULARITY;
+	else
+		alt = I915_READ(SOUTH_CHICKEN1) & SPT_PWM_GRANULARITY;
+	panel->backlight.alternate_pwm_increment = alt;
 
 	pch_ctl1 = I915_READ(BLC_PWM_PCH_CTL1);
 	panel->backlight.active_low_pwm = pch_ctl1 & BLM_PCH_POLARITY;
diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c
index 2d2481392824..e59a28cb3158 100644
--- a/drivers/gpu/drm/i915/intel_pm.c
+++ b/drivers/gpu/drm/i915/intel_pm.c
@@ -2119,32 +2119,34 @@ static void intel_read_wm_latency(struct drm_device *dev, uint16_t wm[8])
 				GEN9_MEM_LATENCY_LEVEL_MASK;
 
 		/*
+		 * If a level n (n > 1) has a 0us latency, all levels m (m >= n)
+		 * need to be disabled. We make sure to sanitize the values out
+		 * of the punit to satisfy this requirement.
+		 */
+		for (level = 1; level <= max_level; level++) {
+			if (wm[level] == 0) {
+				for (i = level + 1; i <= max_level; i++)
+					wm[i] = 0;
+				break;
+			}
+		}
+
+		/*
 		 * WaWmMemoryReadLatency:skl
 		 *
 		 * punit doesn't take into account the read latency so we need
-		 * to add 2us to the various latency levels we retrieve from
-		 * the punit.
-		 *   - W0 is a bit special in that it's the only level that
-		 *   can't be disabled if we want to have display working, so
-		 *   we always add 2us there.
-		 *   - For levels >=1, punit returns 0us latency when they are
-		 *   disabled, so we respect that and don't add 2us then
-		 *
-		 * Additionally, if a level n (n > 1) has a 0us latency, all
-		 * levels m (m >= n) need to be disabled. We make sure to
-		 * sanitize the values out of the punit to satisfy this
-		 * requirement.
+		 * to add 2us to the various latency levels we retrieve from the
+		 * punit when level 0 response data us 0us.
 		 */
-		wm[0] += 2;
-		for (level = 1; level <= max_level; level++)
-			if (wm[level] != 0)
+		if (wm[0] == 0) {
+			wm[0] += 2;
+			for (level = 1; level <= max_level; level++) {
+				if (wm[level] == 0)
+					break;
 				wm[level] += 2;
-			else {
-				for (i = level + 1; i <= max_level; i++)
-					wm[i] = 0;
-
-				break;
 			}
+		}
+
 	} else if (IS_HASWELL(dev) || IS_BROADWELL(dev)) {
 		uint64_t sskpd = I915_READ64(MCH_SSKPD);
 
@@ -2876,6 +2878,19 @@ skl_wm_plane_id(const struct intel_plane *plane)
 	}
 }
 
+static bool
+intel_has_sagv(struct drm_i915_private *dev_priv)
+{
+	if (IS_KABYLAKE(dev_priv))
+		return true;
+
+	if (IS_SKYLAKE(dev_priv) &&
+	    dev_priv->sagv_status != I915_SAGV_NOT_CONTROLLED)
+		return true;
+
+	return false;
+}
+
 /*
  * SAGV dynamically adjusts the system agent voltage and clock frequencies
  * depending on power and performance requirements. The display engine access
@@ -2888,12 +2903,14 @@ skl_wm_plane_id(const struct intel_plane *plane)
  *  - We're not using an interlaced display configuration
  */
 int
-skl_enable_sagv(struct drm_i915_private *dev_priv)
+intel_enable_sagv(struct drm_i915_private *dev_priv)
 {
 	int ret;
 
-	if (dev_priv->skl_sagv_status == I915_SKL_SAGV_NOT_CONTROLLED ||
-	    dev_priv->skl_sagv_status == I915_SKL_SAGV_ENABLED)
+	if (!intel_has_sagv(dev_priv))
+		return 0;
+
+	if (dev_priv->sagv_status == I915_SAGV_ENABLED)
 		return 0;
 
 	DRM_DEBUG_KMS("Enabling the SAGV\n");
@@ -2909,21 +2926,21 @@ skl_enable_sagv(struct drm_i915_private *dev_priv)
 	 * Some skl systems, pre-release machines in particular,
 	 * don't actually have an SAGV.
 	 */
-	if (ret == -ENXIO) {
+	if (IS_SKYLAKE(dev_priv) && ret == -ENXIO) {
 		DRM_DEBUG_DRIVER("No SAGV found on system, ignoring\n");
-		dev_priv->skl_sagv_status = I915_SKL_SAGV_NOT_CONTROLLED;
+		dev_priv->sagv_status = I915_SAGV_NOT_CONTROLLED;
 		return 0;
 	} else if (ret < 0) {
 		DRM_ERROR("Failed to enable the SAGV\n");
 		return ret;
 	}
 
-	dev_priv->skl_sagv_status = I915_SKL_SAGV_ENABLED;
+	dev_priv->sagv_status = I915_SAGV_ENABLED;
 	return 0;
 }
 
 static int
-skl_do_sagv_disable(struct drm_i915_private *dev_priv)
+intel_do_sagv_disable(struct drm_i915_private *dev_priv)
 {
 	int ret;
 	uint32_t temp = GEN9_SAGV_DISABLE;
@@ -2937,19 +2954,21 @@ skl_do_sagv_disable(struct drm_i915_private *dev_priv)
 }
 
 int
-skl_disable_sagv(struct drm_i915_private *dev_priv)
+intel_disable_sagv(struct drm_i915_private *dev_priv)
 {
 	int ret, result;
 
-	if (dev_priv->skl_sagv_status == I915_SKL_SAGV_NOT_CONTROLLED ||
-	    dev_priv->skl_sagv_status == I915_SKL_SAGV_DISABLED)
+	if (!intel_has_sagv(dev_priv))
+		return 0;
+
+	if (dev_priv->sagv_status == I915_SAGV_DISABLED)
 		return 0;
 
 	DRM_DEBUG_KMS("Disabling the SAGV\n");
 	mutex_lock(&dev_priv->rps.hw_lock);
 
 	/* bspec says to keep retrying for at least 1 ms */
-	ret = wait_for(result = skl_do_sagv_disable(dev_priv), 1);
+	ret = wait_for(result = intel_do_sagv_disable(dev_priv), 1);
 	mutex_unlock(&dev_priv->rps.hw_lock);
 
 	if (ret == -ETIMEDOUT) {
@@ -2961,20 +2980,20 @@ skl_disable_sagv(struct drm_i915_private *dev_priv)
 	 * Some skl systems, pre-release machines in particular,
 	 * don't actually have an SAGV.
 	 */
-	if (result == -ENXIO) {
+	if (IS_SKYLAKE(dev_priv) && result == -ENXIO) {
 		DRM_DEBUG_DRIVER("No SAGV found on system, ignoring\n");
-		dev_priv->skl_sagv_status = I915_SKL_SAGV_NOT_CONTROLLED;
+		dev_priv->sagv_status = I915_SAGV_NOT_CONTROLLED;
 		return 0;
 	} else if (result < 0) {
 		DRM_ERROR("Failed to disable the SAGV\n");
 		return result;
 	}
 
-	dev_priv->skl_sagv_status = I915_SKL_SAGV_DISABLED;
+	dev_priv->sagv_status = I915_SAGV_DISABLED;
 	return 0;
 }
 
-bool skl_can_enable_sagv(struct drm_atomic_state *state)
+bool intel_can_enable_sagv(struct drm_atomic_state *state)
 {
 	struct drm_device *dev = state->dev;
 	struct drm_i915_private *dev_priv = to_i915(dev);
@@ -2983,6 +3002,9 @@ bool skl_can_enable_sagv(struct drm_atomic_state *state)
 	enum pipe pipe;
 	int level, plane;
 
+	if (!intel_has_sagv(dev_priv))
+		return false;
+
 	/*
 	 * SKL workaround: bspec recommends we disable the SAGV when we have
 	 * more then one pipe enabled
@@ -3473,29 +3495,14 @@ static uint32_t skl_wm_method1(uint32_t pixel_rate, uint8_t cpp, uint32_t latenc
 }
 
 static uint32_t skl_wm_method2(uint32_t pixel_rate, uint32_t pipe_htotal,
-			       uint32_t horiz_pixels, uint8_t cpp,
-			       uint64_t tiling, uint32_t latency)
+			       uint32_t latency, uint32_t plane_blocks_per_line)
 {
 	uint32_t ret;
-	uint32_t plane_bytes_per_line, plane_blocks_per_line;
 	uint32_t wm_intermediate_val;
 
 	if (latency == 0)
 		return UINT_MAX;
 
-	plane_bytes_per_line = horiz_pixels * cpp;
-
-	if (tiling == I915_FORMAT_MOD_Y_TILED ||
-	    tiling == I915_FORMAT_MOD_Yf_TILED) {
-		plane_bytes_per_line *= 4;
-		plane_blocks_per_line = DIV_ROUND_UP(plane_bytes_per_line, 512);
-		plane_blocks_per_line /= 4;
-	} else if (tiling == DRM_FORMAT_MOD_NONE) {
-		plane_blocks_per_line = DIV_ROUND_UP(plane_bytes_per_line, 512) + 1;
-	} else {
-		plane_blocks_per_line = DIV_ROUND_UP(plane_bytes_per_line, 512);
-	}
-
 	wm_intermediate_val = latency * pixel_rate;
 	ret = DIV_ROUND_UP(wm_intermediate_val, pipe_htotal * 1000) *
 				plane_blocks_per_line;
@@ -3546,6 +3553,7 @@ static int skl_compute_plane_wm(const struct drm_i915_private *dev_priv,
 	uint8_t cpp;
 	uint32_t width = 0, height = 0;
 	uint32_t plane_pixel_rate;
+	uint32_t y_tile_minimum, y_min_scanlines;
 
 	if (latency == 0 || !cstate->base.active || !intel_pstate->visible) {
 		*enabled = false;
@@ -3561,38 +3569,51 @@ static int skl_compute_plane_wm(const struct drm_i915_private *dev_priv,
 	cpp = drm_format_plane_cpp(fb->pixel_format, 0);
 	plane_pixel_rate = skl_adjusted_plane_pixel_rate(cstate, intel_pstate);
 
+	if (intel_rotation_90_or_270(pstate->rotation)) {
+		int cpp = (fb->pixel_format == DRM_FORMAT_NV12) ?
+			drm_format_plane_cpp(fb->pixel_format, 1) :
+			drm_format_plane_cpp(fb->pixel_format, 0);
+
+		switch (cpp) {
+		case 1:
+			y_min_scanlines = 16;
+			break;
+		case 2:
+			y_min_scanlines = 8;
+			break;
+		default:
+			WARN(1, "Unsupported pixel depth for rotation");
+		case 4:
+			y_min_scanlines = 4;
+			break;
+		}
+	} else {
+		y_min_scanlines = 4;
+	}
+
+	plane_bytes_per_line = width * cpp;
+	if (fb->modifier[0] == I915_FORMAT_MOD_Y_TILED ||
+	    fb->modifier[0] == I915_FORMAT_MOD_Yf_TILED) {
+		plane_blocks_per_line =
+		      DIV_ROUND_UP(plane_bytes_per_line * y_min_scanlines, 512);
+		plane_blocks_per_line /= y_min_scanlines;
+	} else if (fb->modifier[0] == DRM_FORMAT_MOD_NONE) {
+		plane_blocks_per_line = DIV_ROUND_UP(plane_bytes_per_line, 512)
+					+ 1;
+	} else {
+		plane_blocks_per_line = DIV_ROUND_UP(plane_bytes_per_line, 512);
+	}
+
 	method1 = skl_wm_method1(plane_pixel_rate, cpp, latency);
 	method2 = skl_wm_method2(plane_pixel_rate,
 				 cstate->base.adjusted_mode.crtc_htotal,
-				 width,
-				 cpp,
-				 fb->modifier[0],
-				 latency);
+				 latency,
+				 plane_blocks_per_line);
 
-	plane_bytes_per_line = width * cpp;
-	plane_blocks_per_line = DIV_ROUND_UP(plane_bytes_per_line, 512);
+	y_tile_minimum = plane_blocks_per_line * y_min_scanlines;
 
 	if (fb->modifier[0] == I915_FORMAT_MOD_Y_TILED ||
 	    fb->modifier[0] == I915_FORMAT_MOD_Yf_TILED) {
-		uint32_t min_scanlines = 4;
-		uint32_t y_tile_minimum;
-		if (intel_rotation_90_or_270(pstate->rotation)) {
-			int cpp = (fb->pixel_format == DRM_FORMAT_NV12) ?
-				drm_format_plane_cpp(fb->pixel_format, 1) :
-				drm_format_plane_cpp(fb->pixel_format, 0);
-
-			switch (cpp) {
-			case 1:
-				min_scanlines = 16;
-				break;
-			case 2:
-				min_scanlines = 8;
-				break;
-			case 8:
-				WARN(1, "Unsupported pixel depth for rotation");
-			}
-		}
-		y_tile_minimum = plane_blocks_per_line * min_scanlines;
 		selected_result = max(method2, y_tile_minimum);
 	} else {
 		if ((ddb_allocation / plane_blocks_per_line) >= 1)
@@ -3606,10 +3627,12 @@ static int skl_compute_plane_wm(const struct drm_i915_private *dev_priv,
 
 	if (level >= 1 && level <= 7) {
 		if (fb->modifier[0] == I915_FORMAT_MOD_Y_TILED ||
-		    fb->modifier[0] == I915_FORMAT_MOD_Yf_TILED)
-			res_lines += 4;
-		else
+		    fb->modifier[0] == I915_FORMAT_MOD_Yf_TILED) {
+			res_blocks += y_tile_minimum;
+			res_lines += y_min_scanlines;
+		} else {
 			res_blocks++;
+		}
 	}
 
 	if (res_blocks >= ddb_allocation || res_lines > 31) {
@@ -3828,183 +3851,82 @@ static void skl_ddb_entry_write(struct drm_i915_private *dev_priv,
 		I915_WRITE(reg, 0);
 }
 
-static void skl_write_wm_values(struct drm_i915_private *dev_priv,
-				const struct skl_wm_values *new)
+void skl_write_plane_wm(struct intel_crtc *intel_crtc,
+			const struct skl_wm_values *wm,
+			int plane)
 {
-	struct drm_device *dev = &dev_priv->drm;
-	struct intel_crtc *crtc;
-
-	for_each_intel_crtc(dev, crtc) {
-		int i, level, max_level = ilk_wm_max_level(dev);
-		enum pipe pipe = crtc->pipe;
-
-		if ((new->dirty_pipes & drm_crtc_mask(&crtc->base)) == 0)
-			continue;
-		if (!crtc->active)
-			continue;
-
-		I915_WRITE(PIPE_WM_LINETIME(pipe), new->wm_linetime[pipe]);
-
-		for (level = 0; level <= max_level; level++) {
-			for (i = 0; i < intel_num_planes(crtc); i++)
-				I915_WRITE(PLANE_WM(pipe, i, level),
-					   new->plane[pipe][i][level]);
-			I915_WRITE(CUR_WM(pipe, level),
-				   new->plane[pipe][PLANE_CURSOR][level]);
-		}
-		for (i = 0; i < intel_num_planes(crtc); i++)
-			I915_WRITE(PLANE_WM_TRANS(pipe, i),
-				   new->plane_trans[pipe][i]);
-		I915_WRITE(CUR_WM_TRANS(pipe),
-			   new->plane_trans[pipe][PLANE_CURSOR]);
-
-		for (i = 0; i < intel_num_planes(crtc); i++) {
-			skl_ddb_entry_write(dev_priv,
-					    PLANE_BUF_CFG(pipe, i),
-					    &new->ddb.plane[pipe][i]);
-			skl_ddb_entry_write(dev_priv,
-					    PLANE_NV12_BUF_CFG(pipe, i),
-					    &new->ddb.y_plane[pipe][i]);
-		}
+	struct drm_crtc *crtc = &intel_crtc->base;
+	struct drm_device *dev = crtc->dev;
+	struct drm_i915_private *dev_priv = to_i915(dev);
+	int level, max_level = ilk_wm_max_level(dev);
+	enum pipe pipe = intel_crtc->pipe;
 
-		skl_ddb_entry_write(dev_priv, CUR_BUF_CFG(pipe),
-				    &new->ddb.plane[pipe][PLANE_CURSOR]);
+	for (level = 0; level <= max_level; level++) {
+		I915_WRITE(PLANE_WM(pipe, plane, level),
+			   wm->plane[pipe][plane][level]);
 	}
-}
+	I915_WRITE(PLANE_WM_TRANS(pipe, plane), wm->plane_trans[pipe][plane]);
 
-/*
- * When setting up a new DDB allocation arrangement, we need to correctly
- * sequence the times at which the new allocations for the pipes are taken into
- * account or we'll have pipes fetching from space previously allocated to
- * another pipe.
- *
- * Roughly the sequence looks like:
- *  1. re-allocate the pipe(s) with the allocation being reduced and not
- *     overlapping with a previous light-up pipe (another way to put it is:
- *     pipes with their new allocation strickly included into their old ones).
- *  2. re-allocate the other pipes that get their allocation reduced
- *  3. allocate the pipes having their allocation increased
- *
- * Steps 1. and 2. are here to take care of the following case:
- * - Initially DDB looks like this:
- *     |   B    |   C    |
- * - enable pipe A.
- * - pipe B has a reduced DDB allocation that overlaps with the old pipe C
- *   allocation
- *     |  A  |  B  |  C  |
- *
- * We need to sequence the re-allocation: C, B, A (and not B, C, A).
- */
+	skl_ddb_entry_write(dev_priv, PLANE_BUF_CFG(pipe, plane),
+			    &wm->ddb.plane[pipe][plane]);
+	skl_ddb_entry_write(dev_priv, PLANE_NV12_BUF_CFG(pipe, plane),
+			    &wm->ddb.y_plane[pipe][plane]);
+}
 
-static void
-skl_wm_flush_pipe(struct drm_i915_private *dev_priv, enum pipe pipe, int pass)
+void skl_write_cursor_wm(struct intel_crtc *intel_crtc,
+			 const struct skl_wm_values *wm)
 {
-	int plane;
-
-	DRM_DEBUG_KMS("flush pipe %c (pass %d)\n", pipe_name(pipe), pass);
+	struct drm_crtc *crtc = &intel_crtc->base;
+	struct drm_device *dev = crtc->dev;
+	struct drm_i915_private *dev_priv = to_i915(dev);
+	int level, max_level = ilk_wm_max_level(dev);
+	enum pipe pipe = intel_crtc->pipe;
 
-	for_each_plane(dev_priv, pipe, plane) {
-		I915_WRITE(PLANE_SURF(pipe, plane),
-			   I915_READ(PLANE_SURF(pipe, plane)));
+	for (level = 0; level <= max_level; level++) {
+		I915_WRITE(CUR_WM(pipe, level),
+			   wm->plane[pipe][PLANE_CURSOR][level]);
 	}
-	I915_WRITE(CURBASE(pipe), I915_READ(CURBASE(pipe)));
+	I915_WRITE(CUR_WM_TRANS(pipe), wm->plane_trans[pipe][PLANE_CURSOR]);
+
+	skl_ddb_entry_write(dev_priv, CUR_BUF_CFG(pipe),
+			    &wm->ddb.plane[pipe][PLANE_CURSOR]);
 }
 
-static bool
-skl_ddb_allocation_included(const struct skl_ddb_allocation *old,
-			    const struct skl_ddb_allocation *new,
-			    enum pipe pipe)
+bool skl_ddb_allocation_equals(const struct skl_ddb_allocation *old,
+			       const struct skl_ddb_allocation *new,
+			       enum pipe pipe)
 {
-	uint16_t old_size, new_size;
-
-	old_size = skl_ddb_entry_size(&old->pipe[pipe]);
-	new_size = skl_ddb_entry_size(&new->pipe[pipe]);
-
-	return old_size != new_size &&
-	       new->pipe[pipe].start >= old->pipe[pipe].start &&
-	       new->pipe[pipe].end <= old->pipe[pipe].end;
+	return new->pipe[pipe].start == old->pipe[pipe].start &&
+	       new->pipe[pipe].end == old->pipe[pipe].end;
 }
 
-static void skl_flush_wm_values(struct drm_i915_private *dev_priv,
-				struct skl_wm_values *new_values)
+static inline bool skl_ddb_entries_overlap(const struct skl_ddb_entry *a,
+					   const struct skl_ddb_entry *b)
 {
-	struct drm_device *dev = &dev_priv->drm;
-	struct skl_ddb_allocation *cur_ddb, *new_ddb;
-	bool reallocated[I915_MAX_PIPES] = {};
-	struct intel_crtc *crtc;
-	enum pipe pipe;
-
-	new_ddb = &new_values->ddb;
-	cur_ddb = &dev_priv->wm.skl_hw.ddb;
-
-	/*
-	 * First pass: flush the pipes with the new allocation contained into
-	 * the old space.
-	 *
-	 * We'll wait for the vblank on those pipes to ensure we can safely
-	 * re-allocate the freed space without this pipe fetching from it.
-	 */
-	for_each_intel_crtc(dev, crtc) {
-		if (!crtc->active)
-			continue;
-
-		pipe = crtc->pipe;
-
-		if (!skl_ddb_allocation_included(cur_ddb, new_ddb, pipe))
-			continue;
-
-		skl_wm_flush_pipe(dev_priv, pipe, 1);
-		intel_wait_for_vblank(dev, pipe);
-
-		reallocated[pipe] = true;
-	}
-
+	return a->start < b->end && b->start < a->end;
+}
 
-	/*
-	 * Second pass: flush the pipes that are having their allocation
-	 * reduced, but overlapping with a previous allocation.
-	 *
-	 * Here as well we need to wait for the vblank to make sure the freed
-	 * space is not used anymore.
-	 */
-	for_each_intel_crtc(dev, crtc) {
-		if (!crtc->active)
-			continue;
+bool skl_ddb_allocation_overlaps(struct drm_atomic_state *state,
+				 const struct skl_ddb_allocation *old,
+				 const struct skl_ddb_allocation *new,
+				 enum pipe pipe)
+{
+	struct drm_device *dev = state->dev;
+	struct intel_crtc *intel_crtc;
+	enum pipe otherp;
 
-		pipe = crtc->pipe;
+	for_each_intel_crtc(dev, intel_crtc) {
+		otherp = intel_crtc->pipe;
 
-		if (reallocated[pipe])
+		if (otherp == pipe)
 			continue;
 
-		if (skl_ddb_entry_size(&new_ddb->pipe[pipe]) <
-		    skl_ddb_entry_size(&cur_ddb->pipe[pipe])) {
-			skl_wm_flush_pipe(dev_priv, pipe, 2);
-			intel_wait_for_vblank(dev, pipe);
-			reallocated[pipe] = true;
-		}
+		if (skl_ddb_entries_overlap(&new->pipe[pipe],
+					    &old->pipe[otherp]))
+			return true;
 	}
 
-	/*
-	 * Third pass: flush the pipes that got more space allocated.
-	 *
-	 * We don't need to actively wait for the update here, next vblank
-	 * will just get more DDB space with the correct WM values.
-	 */
-	for_each_intel_crtc(dev, crtc) {
-		if (!crtc->active)
-			continue;
-
-		pipe = crtc->pipe;
-
-		/*
-		 * At this point, only the pipes more space than before are
-		 * left to re-allocate.
-		 */
-		if (reallocated[pipe])
-			continue;
-
-		skl_wm_flush_pipe(dev_priv, pipe, 3);
-	}
+	return false;
 }
 
 static int skl_update_pipe_wm(struct drm_crtc_state *cstate,
@@ -4041,6 +3963,41 @@ pipes_modified(struct drm_atomic_state *state)
 	return ret;
 }
 
+int
+skl_ddb_add_affected_planes(struct intel_crtc_state *cstate)
+{
+	struct drm_atomic_state *state = cstate->base.state;
+	struct drm_device *dev = state->dev;
+	struct drm_crtc *crtc = cstate->base.crtc;
+	struct intel_crtc *intel_crtc = to_intel_crtc(crtc);
+	struct drm_i915_private *dev_priv = to_i915(dev);
+	struct intel_atomic_state *intel_state = to_intel_atomic_state(state);
+	struct skl_ddb_allocation *new_ddb = &intel_state->wm_results.ddb;
+	struct skl_ddb_allocation *cur_ddb = &dev_priv->wm.skl_hw.ddb;
+	struct drm_plane_state *plane_state;
+	struct drm_plane *plane;
+	enum pipe pipe = intel_crtc->pipe;
+	int id;
+
+	WARN_ON(!drm_atomic_get_existing_crtc_state(state, crtc));
+
+	drm_for_each_plane_mask(plane, dev, crtc->state->plane_mask) {
+		id = skl_wm_plane_id(to_intel_plane(plane));
+
+		if (skl_ddb_entry_equal(&cur_ddb->plane[pipe][id],
+					&new_ddb->plane[pipe][id]) &&
+		    skl_ddb_entry_equal(&cur_ddb->y_plane[pipe][id],
+					&new_ddb->y_plane[pipe][id]))
+			continue;
+
+		plane_state = drm_atomic_get_plane_state(state, plane);
+		if (IS_ERR(plane_state))
+			return PTR_ERR(plane_state);
+	}
+
+	return 0;
+}
+
 static int
 skl_compute_ddb(struct drm_atomic_state *state)
 {
@@ -4105,6 +4062,10 @@ skl_compute_ddb(struct drm_atomic_state *state)
 		if (ret)
 			return ret;
 
+		ret = skl_ddb_add_affected_planes(cstate);
+		if (ret)
+			return ret;
+
 		ret = drm_atomic_add_affected_planes(state, &intel_crtc->base);
 		if (ret)
 			return ret;
@@ -4206,7 +4167,7 @@ static void skl_update_wm(struct drm_crtc *crtc)
 	struct skl_wm_values *hw_vals = &dev_priv->wm.skl_hw;
 	struct intel_crtc_state *cstate = to_intel_crtc_state(crtc->state);
 	struct skl_pipe_wm *pipe_wm = &cstate->wm.skl.optimal;
-	int pipe;
+	enum pipe pipe = intel_crtc->pipe;
 
 	if ((results->dirty_pipes & drm_crtc_mask(crtc)) == 0)
 		return;
@@ -4215,15 +4176,22 @@ static void skl_update_wm(struct drm_crtc *crtc)
 
 	mutex_lock(&dev_priv->wm.wm_mutex);
 
-	skl_write_wm_values(dev_priv, results);
-	skl_flush_wm_values(dev_priv, results);
-
 	/*
-	 * Store the new configuration (but only for the pipes that have
-	 * changed; the other values weren't recomputed).
+	 * If this pipe isn't active already, we're going to be enabling it
+	 * very soon. Since it's safe to update a pipe's ddb allocation while
+	 * the pipe's shut off, just do so here. Already active pipes will have
+	 * their watermarks updated once we update their planes.
 	 */
-	for_each_pipe_masked(dev_priv, pipe, results->dirty_pipes)
-		skl_copy_wm_for_pipe(hw_vals, results, pipe);
+	if (crtc->state->active_changed) {
+		int plane;
+
+		for (plane = 0; plane < intel_num_planes(intel_crtc); plane++)
+			skl_write_plane_wm(intel_crtc, results, plane);
+
+		skl_write_cursor_wm(intel_crtc, results);
+	}
+
+	skl_copy_wm_for_pipe(hw_vals, results, pipe);
 
 	mutex_unlock(&dev_priv->wm.wm_mutex);
 }
diff --git a/drivers/gpu/drm/i915/intel_sprite.c b/drivers/gpu/drm/i915/intel_sprite.c
index 7c08e4f29032..4178849631ad 100644
--- a/drivers/gpu/drm/i915/intel_sprite.c
+++ b/drivers/gpu/drm/i915/intel_sprite.c
@@ -203,6 +203,9 @@ skl_update_plane(struct drm_plane *drm_plane,
 	struct intel_plane *intel_plane = to_intel_plane(drm_plane);
 	struct drm_framebuffer *fb = plane_state->base.fb;
 	struct drm_i915_gem_object *obj = intel_fb_obj(fb);
+	const struct skl_wm_values *wm = &dev_priv->wm.skl_results;
+	struct drm_crtc *crtc = crtc_state->base.crtc;
+	struct intel_crtc *intel_crtc = to_intel_crtc(crtc);
 	const int pipe = intel_plane->pipe;
 	const int plane = intel_plane->plane + 1;
 	u32 plane_ctl, stride_div, stride;
@@ -238,6 +241,9 @@ skl_update_plane(struct drm_plane *drm_plane,
 	crtc_w--;
 	crtc_h--;
 
+	if (wm->dirty_pipes & drm_crtc_mask(crtc))
+		skl_write_plane_wm(intel_crtc, wm, plane);
+
 	if (key->flags) {
 		I915_WRITE(PLANE_KEYVAL(pipe, plane), key->min_value);
 		I915_WRITE(PLANE_KEYMAX(pipe, plane), key->max_value);
@@ -308,6 +314,14 @@ skl_disable_plane(struct drm_plane *dplane, struct drm_crtc *crtc)
 	const int pipe = intel_plane->pipe;
 	const int plane = intel_plane->plane + 1;
 
+	/*
+	 * We only populate skl_results on watermark updates, and if the
+	 * plane's visiblity isn't actually changing neither is its watermarks.
+	 */
+	if (!to_intel_plane_state(dplane->state)->visible)
+		skl_write_plane_wm(to_intel_crtc(crtc),
+				   &dev_priv->wm.skl_results, plane);
+
 	I915_WRITE(PLANE_CTL(pipe, plane), 0);
 
 	I915_WRITE(PLANE_SURF(pipe, plane), 0);
diff --git a/drivers/gpu/drm/i915/intel_uncore.c b/drivers/gpu/drm/i915/intel_uncore.c
index ff80a81b1a84..ec28b15f2724 100644
--- a/drivers/gpu/drm/i915/intel_uncore.c
+++ b/drivers/gpu/drm/i915/intel_uncore.c
@@ -796,10 +796,9 @@ __unclaimed_reg_debug(struct drm_i915_private *dev_priv,
 		      const bool read,
 		      const bool before)
 {
-	if (WARN(check_for_unclaimed_mmio(dev_priv),
-		 "Unclaimed register detected %s %s register 0x%x\n",
-		 before ? "before" : "after",
-		 read ? "reading" : "writing to",
+	if (WARN(check_for_unclaimed_mmio(dev_priv) && !before,
+		 "Unclaimed %s register 0x%x\n",
+		 read ? "read from" : "write to",
 		 i915_mmio_reg_offset(reg)))
 		i915.mmio_debug--; /* Only report the first N failures */
 }
diff --git a/drivers/gpu/drm/radeon/r600_dpm.c b/drivers/gpu/drm/radeon/r600_dpm.c
index 6a4b020dd0b4..5a26eb4545aa 100644
--- a/drivers/gpu/drm/radeon/r600_dpm.c
+++ b/drivers/gpu/drm/radeon/r600_dpm.c
@@ -156,19 +156,20 @@ u32 r600_dpm_get_vblank_time(struct radeon_device *rdev)
 	struct drm_device *dev = rdev->ddev;
 	struct drm_crtc *crtc;
 	struct radeon_crtc *radeon_crtc;
-	u32 line_time_us, vblank_lines;
+	u32 vblank_in_pixels;
 	u32 vblank_time_us = 0xffffffff; /* if the displays are off, vblank time is max */
 
 	if (rdev->num_crtc && rdev->mode_info.mode_config_initialized) {
 		list_for_each_entry(crtc, &dev->mode_config.crtc_list, head) {
 			radeon_crtc = to_radeon_crtc(crtc);
 			if (crtc->enabled && radeon_crtc->enabled && radeon_crtc->hw_mode.clock) {
-				line_time_us = (radeon_crtc->hw_mode.crtc_htotal * 1000) /
-					radeon_crtc->hw_mode.clock;
-				vblank_lines = radeon_crtc->hw_mode.crtc_vblank_end -
-					radeon_crtc->hw_mode.crtc_vdisplay +
-					(radeon_crtc->v_border * 2);
-				vblank_time_us = vblank_lines * line_time_us;
+				vblank_in_pixels =
+					radeon_crtc->hw_mode.crtc_htotal *
+					(radeon_crtc->hw_mode.crtc_vblank_end -
+					 radeon_crtc->hw_mode.crtc_vdisplay +
+					 (radeon_crtc->v_border * 2));
+
+				vblank_time_us = vblank_in_pixels * 1000 / radeon_crtc->hw_mode.clock;
 				break;
 			}
 		}
diff --git a/drivers/gpu/drm/radeon/radeon_device.c b/drivers/gpu/drm/radeon/radeon_device.c
index a00dd2f74527..554ca7115f98 100644
--- a/drivers/gpu/drm/radeon/radeon_device.c
+++ b/drivers/gpu/drm/radeon/radeon_device.c
@@ -661,8 +661,9 @@ bool radeon_card_posted(struct radeon_device *rdev)
 {
 	uint32_t reg;
 
-	/* for pass through, always force asic_init */
-	if (radeon_device_is_virtual())
+	/* for pass through, always force asic_init for CI */
+	if (rdev->family >= CHIP_BONAIRE &&
+	    radeon_device_is_virtual())
 		return false;
 
 	/* required for EFI mode on macbook2,1 which uses an r5xx asic */
diff --git a/drivers/gpu/drm/radeon/si_dpm.c b/drivers/gpu/drm/radeon/si_dpm.c
index 1f78ec2548ec..89bdf20344ae 100644
--- a/drivers/gpu/drm/radeon/si_dpm.c
+++ b/drivers/gpu/drm/radeon/si_dpm.c
@@ -4112,7 +4112,7 @@ static int si_populate_smc_voltage_tables(struct radeon_device *rdev,
 							      &rdev->pm.dpm.dyn_state.phase_shedding_limits_table)) {
 				si_populate_smc_voltage_table(rdev, &si_pi->vddc_phase_shed_table, table);
 
-				table->phaseMaskTable.lowMask[SISLANDS_SMC_VOLTAGEMASK_VDDC] =
+				table->phaseMaskTable.lowMask[SISLANDS_SMC_VOLTAGEMASK_VDDC_PHASE_SHEDDING] =
 					cpu_to_be32(si_pi->vddc_phase_shed_table.mask_low);
 
 				si_write_smc_soft_register(rdev, SI_SMC_SOFT_REGISTER_phase_shedding_delay,
diff --git a/drivers/gpu/drm/radeon/sislands_smc.h b/drivers/gpu/drm/radeon/sislands_smc.h
index 3c779838d9ab..966e3a556011 100644
--- a/drivers/gpu/drm/radeon/sislands_smc.h
+++ b/drivers/gpu/drm/radeon/sislands_smc.h
@@ -194,6 +194,7 @@ typedef struct SISLANDS_SMC_SWSTATE SISLANDS_SMC_SWSTATE;
 #define SISLANDS_SMC_VOLTAGEMASK_VDDC  0
 #define SISLANDS_SMC_VOLTAGEMASK_MVDD  1
 #define SISLANDS_SMC_VOLTAGEMASK_VDDCI 2
+#define SISLANDS_SMC_VOLTAGEMASK_VDDC_PHASE_SHEDDING 3
 #define SISLANDS_SMC_VOLTAGEMASK_MAX   4
 
 struct SISLANDS_SMC_VOLTAGEMASKTABLE
diff --git a/drivers/gpu/drm/vc4/vc4_drv.h b/drivers/gpu/drm/vc4/vc4_drv.h
index 428e24919ef1..f696b752886b 100644
--- a/drivers/gpu/drm/vc4/vc4_drv.h
+++ b/drivers/gpu/drm/vc4/vc4_drv.h
@@ -122,9 +122,16 @@ to_vc4_dev(struct drm_device *dev)
 struct vc4_bo {
 	struct drm_gem_cma_object base;
 
-	/* seqno of the last job to render to this BO. */
+	/* seqno of the last job to render using this BO. */
 	uint64_t seqno;
 
+	/* seqno of the last job to use the RCL to write to this BO.
+	 *
+	 * Note that this doesn't include binner overflow memory
+	 * writes.
+	 */
+	uint64_t write_seqno;
+
 	/* List entry for the BO's position in either
 	 * vc4_exec_info->unref_list or vc4_dev->bo_cache.time_list
 	 */
@@ -216,6 +223,9 @@ struct vc4_exec_info {
 	/* Sequence number for this bin/render job. */
 	uint64_t seqno;
 
+	/* Latest write_seqno of any BO that binning depends on. */
+	uint64_t bin_dep_seqno;
+
 	/* Last current addresses the hardware was processing when the
 	 * hangcheck timer checked on us.
 	 */
@@ -230,6 +240,13 @@ struct vc4_exec_info {
 	struct drm_gem_cma_object **bo;
 	uint32_t bo_count;
 
+	/* List of BOs that are being written by the RCL.  Other than
+	 * the binner temporary storage, this is all the BOs written
+	 * by the job.
+	 */
+	struct drm_gem_cma_object *rcl_write_bo[4];
+	uint32_t rcl_write_bo_count;
+
 	/* Pointers for our position in vc4->job_list */
 	struct list_head head;
 
diff --git a/drivers/gpu/drm/vc4/vc4_gem.c b/drivers/gpu/drm/vc4/vc4_gem.c
index b262c5c26f10..ae1609e739ef 100644
--- a/drivers/gpu/drm/vc4/vc4_gem.c
+++ b/drivers/gpu/drm/vc4/vc4_gem.c
@@ -471,6 +471,11 @@ vc4_update_bo_seqnos(struct vc4_exec_info *exec, uint64_t seqno)
 	list_for_each_entry(bo, &exec->unref_list, unref_head) {
 		bo->seqno = seqno;
 	}
+
+	for (i = 0; i < exec->rcl_write_bo_count; i++) {
+		bo = to_vc4_bo(&exec->rcl_write_bo[i]->base);
+		bo->write_seqno = seqno;
+	}
 }
 
 /* Queues a struct vc4_exec_info for execution.  If no job is
@@ -673,6 +678,14 @@ vc4_get_bcl(struct drm_device *dev, struct vc4_exec_info *exec)
 		goto fail;
 
 	ret = vc4_validate_shader_recs(dev, exec);
+	if (ret)
+		goto fail;
+
+	/* Block waiting on any previous rendering into the CS's VBO,
+	 * IB, or textures, so that pixels are actually written by the
+	 * time we try to read them.
+	 */
+	ret = vc4_wait_for_seqno(dev, exec->bin_dep_seqno, ~0ull, true);
 
 fail:
 	drm_free_large(temp);
diff --git a/drivers/gpu/drm/vc4/vc4_render_cl.c b/drivers/gpu/drm/vc4/vc4_render_cl.c
index 0f12418725e5..08886a309757 100644
--- a/drivers/gpu/drm/vc4/vc4_render_cl.c
+++ b/drivers/gpu/drm/vc4/vc4_render_cl.c
@@ -45,6 +45,8 @@ struct vc4_rcl_setup {
 
 	struct drm_gem_cma_object *rcl;
 	u32 next_offset;
+
+	u32 next_write_bo_index;
 };
 
 static inline void rcl_u8(struct vc4_rcl_setup *setup, u8 val)
@@ -407,6 +409,8 @@ static int vc4_rcl_msaa_surface_setup(struct vc4_exec_info *exec,
 	if (!*obj)
 		return -EINVAL;
 
+	exec->rcl_write_bo[exec->rcl_write_bo_count++] = *obj;
+
 	if (surf->offset & 0xf) {
 		DRM_ERROR("MSAA write must be 16b aligned.\n");
 		return -EINVAL;
@@ -417,7 +421,8 @@ static int vc4_rcl_msaa_surface_setup(struct vc4_exec_info *exec,
 
 static int vc4_rcl_surface_setup(struct vc4_exec_info *exec,
 				 struct drm_gem_cma_object **obj,
-				 struct drm_vc4_submit_rcl_surface *surf)
+				 struct drm_vc4_submit_rcl_surface *surf,
+				 bool is_write)
 {
 	uint8_t tiling = VC4_GET_FIELD(surf->bits,
 				       VC4_LOADSTORE_TILE_BUFFER_TILING);
@@ -440,6 +445,9 @@ static int vc4_rcl_surface_setup(struct vc4_exec_info *exec,
 	if (!*obj)
 		return -EINVAL;
 
+	if (is_write)
+		exec->rcl_write_bo[exec->rcl_write_bo_count++] = *obj;
+
 	if (surf->flags & VC4_SUBMIT_RCL_SURFACE_READ_IS_FULL_RES) {
 		if (surf == &exec->args->zs_write) {
 			DRM_ERROR("general zs write may not be a full-res.\n");
@@ -542,6 +550,8 @@ vc4_rcl_render_config_surface_setup(struct vc4_exec_info *exec,
 	if (!*obj)
 		return -EINVAL;
 
+	exec->rcl_write_bo[exec->rcl_write_bo_count++] = *obj;
+
 	if (tiling > VC4_TILING_FORMAT_LT) {
 		DRM_ERROR("Bad tiling format\n");
 		return -EINVAL;
@@ -599,15 +609,18 @@ int vc4_get_rcl(struct drm_device *dev, struct vc4_exec_info *exec)
 	if (ret)
 		return ret;
 
-	ret = vc4_rcl_surface_setup(exec, &setup.color_read, &args->color_read);
+	ret = vc4_rcl_surface_setup(exec, &setup.color_read, &args->color_read,
+				    false);
 	if (ret)
 		return ret;
 
-	ret = vc4_rcl_surface_setup(exec, &setup.zs_read, &args->zs_read);
+	ret = vc4_rcl_surface_setup(exec, &setup.zs_read, &args->zs_read,
+				    false);
 	if (ret)
 		return ret;
 
-	ret = vc4_rcl_surface_setup(exec, &setup.zs_write, &args->zs_write);
+	ret = vc4_rcl_surface_setup(exec, &setup.zs_write, &args->zs_write,
+				    true);
 	if (ret)
 		return ret;
 
diff --git a/drivers/gpu/drm/vc4/vc4_validate.c b/drivers/gpu/drm/vc4/vc4_validate.c
index 9ce1d0adf882..26503e307438 100644
--- a/drivers/gpu/drm/vc4/vc4_validate.c
+++ b/drivers/gpu/drm/vc4/vc4_validate.c
@@ -267,6 +267,9 @@ validate_indexed_prim_list(VALIDATE_ARGS)
 	if (!ib)
 		return -EINVAL;
 
+	exec->bin_dep_seqno = max(exec->bin_dep_seqno,
+				  to_vc4_bo(&ib->base)->write_seqno);
+
 	if (offset > ib->base.size ||
 	    (ib->base.size - offset) / index_size < length) {
 		DRM_ERROR("IB access overflow (%d + %d*%d > %zd)\n",
@@ -555,8 +558,7 @@ static bool
 reloc_tex(struct vc4_exec_info *exec,
 	  void *uniform_data_u,
 	  struct vc4_texture_sample_info *sample,
-	  uint32_t texture_handle_index)
-
+	  uint32_t texture_handle_index, bool is_cs)
 {
 	struct drm_gem_cma_object *tex;
 	uint32_t p0 = *(uint32_t *)(uniform_data_u + sample->p_offset[0]);
@@ -714,6 +716,11 @@ reloc_tex(struct vc4_exec_info *exec,
 
 	*validated_p0 = tex->paddr + p0;
 
+	if (is_cs) {
+		exec->bin_dep_seqno = max(exec->bin_dep_seqno,
+					  to_vc4_bo(&tex->base)->write_seqno);
+	}
+
 	return true;
  fail:
 	DRM_INFO("Texture p0 at %d: 0x%08x\n", sample->p_offset[0], p0);
@@ -835,7 +842,8 @@ validate_gl_shader_rec(struct drm_device *dev,
 			if (!reloc_tex(exec,
 				       uniform_data_u,
 				       &validated_shader->texture_samples[tex],
-				       texture_handles_u[tex])) {
+				       texture_handles_u[tex],
+				       i == 2)) {
 				return -EINVAL;
 			}
 		}
@@ -867,6 +875,9 @@ validate_gl_shader_rec(struct drm_device *dev,
 		uint32_t stride = *(uint8_t *)(pkt_u + o + 5);
 		uint32_t max_index;
 
+		exec->bin_dep_seqno = max(exec->bin_dep_seqno,
+					  to_vc4_bo(&vbo->base)->write_seqno);
+
 		if (state->addr & 0x8)
 			stride |= (*(uint32_t *)(pkt_u + 100 + i * 4)) & ~0xff;
 
diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_execbuf.c b/drivers/gpu/drm/vmwgfx/vmwgfx_execbuf.c
index dc5beff2b4aa..8a15c4aa84c1 100644
--- a/drivers/gpu/drm/vmwgfx/vmwgfx_execbuf.c
+++ b/drivers/gpu/drm/vmwgfx/vmwgfx_execbuf.c
@@ -34,6 +34,24 @@
 
 #define VMW_RES_HT_ORDER 12
 
+ /**
+ * enum vmw_resource_relocation_type - Relocation type for resources
+ *
+ * @vmw_res_rel_normal: Traditional relocation. The resource id in the
+ * command stream is replaced with the actual id after validation.
+ * @vmw_res_rel_nop: NOP relocation. The command is unconditionally replaced
+ * with a NOP.
+ * @vmw_res_rel_cond_nop: Conditional NOP relocation. If the resource id
+ * after validation is -1, the command is replaced with a NOP. Otherwise no
+ * action.
+ */
+enum vmw_resource_relocation_type {
+	vmw_res_rel_normal,
+	vmw_res_rel_nop,
+	vmw_res_rel_cond_nop,
+	vmw_res_rel_max
+};
+
 /**
  * struct vmw_resource_relocation - Relocation info for resources
  *
@@ -41,11 +59,13 @@
  * @res: Non-ref-counted pointer to the resource.
  * @offset: Offset of 4 byte entries into the command buffer where the
  * id that needs fixup is located.
+ * @rel_type: Type of relocation.
  */
 struct vmw_resource_relocation {
 	struct list_head head;
 	const struct vmw_resource *res;
-	unsigned long offset;
+	u32 offset:29;
+	enum vmw_resource_relocation_type rel_type:3;
 };
 
 /**
@@ -410,10 +430,13 @@ static int vmw_resource_context_res_add(struct vmw_private *dev_priv,
  * @res: The resource.
  * @offset: Offset into the command buffer currently being parsed where the
  * id that needs fixup is located. Granularity is 4 bytes.
+ * @rel_type: Relocation type.
  */
 static int vmw_resource_relocation_add(struct list_head *list,
 				       const struct vmw_resource *res,
-				       unsigned long offset)
+				       unsigned long offset,
+				       enum vmw_resource_relocation_type
+				       rel_type)
 {
 	struct vmw_resource_relocation *rel;
 
@@ -425,6 +448,7 @@ static int vmw_resource_relocation_add(struct list_head *list,
 
 	rel->res = res;
 	rel->offset = offset;
+	rel->rel_type = rel_type;
 	list_add_tail(&rel->head, list);
 
 	return 0;
@@ -459,11 +483,23 @@ static void vmw_resource_relocations_apply(uint32_t *cb,
 {
 	struct vmw_resource_relocation *rel;
 
+	/* Validate the struct vmw_resource_relocation member size */
+	BUILD_BUG_ON(SVGA_CB_MAX_SIZE >= (1 << 29));
+	BUILD_BUG_ON(vmw_res_rel_max >= (1 << 3));
+
 	list_for_each_entry(rel, list, head) {
-		if (likely(rel->res != NULL))
+		switch (rel->rel_type) {
+		case vmw_res_rel_normal:
 			cb[rel->offset] = rel->res->id;
-		else
+			break;
+		case vmw_res_rel_nop:
 			cb[rel->offset] = SVGA_3D_CMD_NOP;
+			break;
+		default:
+			if (rel->res->id == -1)
+				cb[rel->offset] = SVGA_3D_CMD_NOP;
+			break;
+		}
 	}
 }
 
@@ -655,7 +691,8 @@ static int vmw_cmd_res_reloc_add(struct vmw_private *dev_priv,
 	*p_val = NULL;
 	ret = vmw_resource_relocation_add(&sw_context->res_relocations,
 					  res,
-					  id_loc - sw_context->buf_start);
+					  id_loc - sw_context->buf_start,
+					  vmw_res_rel_normal);
 	if (unlikely(ret != 0))
 		return ret;
 
@@ -721,7 +758,8 @@ vmw_cmd_res_check(struct vmw_private *dev_priv,
 
 		return vmw_resource_relocation_add
 			(&sw_context->res_relocations, res,
-			 id_loc - sw_context->buf_start);
+			 id_loc - sw_context->buf_start,
+			 vmw_res_rel_normal);
 	}
 
 	ret = vmw_user_resource_lookup_handle(dev_priv,
@@ -2144,7 +2182,8 @@ static int vmw_cmd_shader_define(struct vmw_private *dev_priv,
 
 	return vmw_resource_relocation_add(&sw_context->res_relocations,
 					   NULL, &cmd->header.id -
-					   sw_context->buf_start);
+					   sw_context->buf_start,
+					   vmw_res_rel_nop);
 
 	return 0;
 }
@@ -2189,7 +2228,8 @@ static int vmw_cmd_shader_destroy(struct vmw_private *dev_priv,
 
 	return vmw_resource_relocation_add(&sw_context->res_relocations,
 					   NULL, &cmd->header.id -
-					   sw_context->buf_start);
+					   sw_context->buf_start,
+					   vmw_res_rel_nop);
 
 	return 0;
 }
@@ -2848,8 +2888,7 @@ static int vmw_cmd_dx_cid_check(struct vmw_private *dev_priv,
  * @header: Pointer to the command header in the command stream.
  *
  * Check that the view exists, and if it was not created using this
- * command batch, make sure it's validated (present in the device) so that
- * the remove command will not confuse the device.
+ * command batch, conditionally make this command a NOP.
  */
 static int vmw_cmd_dx_view_remove(struct vmw_private *dev_priv,
 				  struct vmw_sw_context *sw_context,
@@ -2877,10 +2916,15 @@ static int vmw_cmd_dx_view_remove(struct vmw_private *dev_priv,
 		return ret;
 
 	/*
-	 * Add view to the validate list iff it was not created using this
-	 * command batch.
+	 * If the view wasn't created during this command batch, it might
+	 * have been removed due to a context swapout, so add a
+	 * relocation to conditionally make this command a NOP to avoid
+	 * device errors.
 	 */
-	return vmw_view_res_val_add(sw_context, view);
+	return vmw_resource_relocation_add(&sw_context->res_relocations,
+					   view,
+					   &cmd->header.id - sw_context->buf_start,
+					   vmw_res_rel_cond_nop);
 }
 
 /**
@@ -3848,14 +3892,14 @@ static void *vmw_execbuf_cmdbuf(struct vmw_private *dev_priv,
 	int ret;
 
 	*header = NULL;
-	if (!dev_priv->cman || kernel_commands)
-		return kernel_commands;
-
 	if (command_size > SVGA_CB_MAX_SIZE) {
 		DRM_ERROR("Command buffer is too large.\n");
 		return ERR_PTR(-EINVAL);
 	}
 
+	if (!dev_priv->cman || kernel_commands)
+		return kernel_commands;
+
 	/* If possible, add a little space for fencing. */
 	cmdbuf_size = command_size + 512;
 	cmdbuf_size = min_t(size_t, cmdbuf_size, SVGA_CB_MAX_SIZE);
diff --git a/drivers/hid/hid-ids.h b/drivers/hid/hid-ids.h
index 4ed9a4fdfea7..e92b09d32605 100644
--- a/drivers/hid/hid-ids.h
+++ b/drivers/hid/hid-ids.h
@@ -64,6 +64,9 @@
 #define USB_VENDOR_ID_AKAI		0x2011
 #define USB_DEVICE_ID_AKAI_MPKMINI2	0x0715
 
+#define USB_VENDOR_ID_AKAI_09E8		0x09E8
+#define USB_DEVICE_ID_AKAI_09E8_MIDIMIX	0x0031
+
 #define USB_VENDOR_ID_ALCOR		0x058f
 #define USB_DEVICE_ID_ALCOR_USBRS232	0x9720
 
diff --git a/drivers/hid/usbhid/hid-quirks.c b/drivers/hid/usbhid/hid-quirks.c
index b4b8c6abb03e..bb400081efe4 100644
--- a/drivers/hid/usbhid/hid-quirks.c
+++ b/drivers/hid/usbhid/hid-quirks.c
@@ -56,6 +56,7 @@ static const struct hid_blacklist {
 
 	{ USB_VENDOR_ID_AIREN, USB_DEVICE_ID_AIREN_SLIMPLUS, HID_QUIRK_NOGET },
 	{ USB_VENDOR_ID_AKAI, USB_DEVICE_ID_AKAI_MPKMINI2, HID_QUIRK_NO_INIT_REPORTS },
+	{ USB_VENDOR_ID_AKAI_09E8, USB_DEVICE_ID_AKAI_09E8_MIDIMIX, HID_QUIRK_NO_INIT_REPORTS },
 	{ USB_VENDOR_ID_ATEN, USB_DEVICE_ID_ATEN_UC100KM, HID_QUIRK_NOGET },
 	{ USB_VENDOR_ID_ATEN, USB_DEVICE_ID_ATEN_CS124U, HID_QUIRK_NOGET },
 	{ USB_VENDOR_ID_ATEN, USB_DEVICE_ID_ATEN_2PORTKVM, HID_QUIRK_NOGET },
diff --git a/drivers/hwtracing/coresight/coresight-tmc.c b/drivers/hwtracing/coresight/coresight-tmc.c
index 9e02ac963cd0..3978cbb6b038 100644
--- a/drivers/hwtracing/coresight/coresight-tmc.c
+++ b/drivers/hwtracing/coresight/coresight-tmc.c
@@ -388,9 +388,6 @@ static int tmc_probe(struct amba_device *adev, const struct amba_id *id)
 err_misc_register:
 	coresight_unregister(drvdata->csdev);
 err_devm_kzalloc:
-	if (drvdata->config_type == TMC_CONFIG_TYPE_ETR)
-		dma_free_coherent(dev, drvdata->size,
-				drvdata->vaddr, drvdata->paddr);
 	return ret;
 }
 
diff --git a/drivers/iio/dac/ad5755.c b/drivers/iio/dac/ad5755.c
index 0fde593ec0d9..5f7968232564 100644
--- a/drivers/iio/dac/ad5755.c
+++ b/drivers/iio/dac/ad5755.c
@@ -655,7 +655,7 @@ static struct ad5755_platform_data *ad5755_parse_dt(struct device *dev)
 
 	devnr = 0;
 	for_each_child_of_node(np, pp) {
-		if (devnr > AD5755_NUM_CHANNELS) {
+		if (devnr >= AD5755_NUM_CHANNELS) {
 			dev_err(dev,
 				"There is to many channels defined in DT\n");
 			goto error_out;
diff --git a/drivers/iio/light/us5182d.c b/drivers/iio/light/us5182d.c
index 20c40f780964..18cf2e29e4d5 100644
--- a/drivers/iio/light/us5182d.c
+++ b/drivers/iio/light/us5182d.c
@@ -894,7 +894,7 @@ static int us5182d_probe(struct i2c_client *client,
 		goto out_err;
 
 	if (data->default_continuous) {
-		pm_runtime_set_active(&client->dev);
+		ret = pm_runtime_set_active(&client->dev);
 		if (ret < 0)
 			goto out_err;
 	}
diff --git a/drivers/infiniband/hw/hfi1/qp.c b/drivers/infiniband/hw/hfi1/qp.c
index 4e4d8317c281..c17c9dd7cde1 100644
--- a/drivers/infiniband/hw/hfi1/qp.c
+++ b/drivers/infiniband/hw/hfi1/qp.c
@@ -808,6 +808,13 @@ void *qp_priv_alloc(struct rvt_dev_info *rdi, struct rvt_qp *qp,
 		kfree(priv);
 		return ERR_PTR(-ENOMEM);
 	}
+	iowait_init(
+		&priv->s_iowait,
+		1,
+		_hfi1_do_send,
+		iowait_sleep,
+		iowait_wakeup,
+		iowait_sdma_drained);
 	setup_timer(&priv->s_rnr_timer, hfi1_rc_rnr_retry, (unsigned long)qp);
 	qp->s_timer.function = hfi1_rc_timeout;
 	return priv;
@@ -873,13 +880,6 @@ void notify_qp_reset(struct rvt_qp *qp)
 {
 	struct hfi1_qp_priv *priv = qp->priv;
 
-	iowait_init(
-		&priv->s_iowait,
-		1,
-		_hfi1_do_send,
-		iowait_sleep,
-		iowait_wakeup,
-		iowait_sdma_drained);
 	priv->r_adefered = 0;
 	clear_ahg(qp);
 }
diff --git a/drivers/infiniband/hw/mlx5/main.c b/drivers/infiniband/hw/mlx5/main.c
index e19537cf44ab..bff8707a2f1f 100644
--- a/drivers/infiniband/hw/mlx5/main.c
+++ b/drivers/infiniband/hw/mlx5/main.c
@@ -1843,6 +1843,7 @@ static struct mlx5_ib_flow_handler *create_leftovers_rule(struct mlx5_ib_dev *de
 						 &leftovers_specs[LEFTOVERS_UC].flow_attr,
 						 dst);
 		if (IS_ERR(handler_ucast)) {
+			mlx5_del_flow_rule(handler->rule);
 			kfree(handler);
 			handler = handler_ucast;
 		} else {
diff --git a/drivers/infiniband/hw/qib/qib.h b/drivers/infiniband/hw/qib/qib.h
index bbf0a163aeab..54bb655f5332 100644
--- a/drivers/infiniband/hw/qib/qib.h
+++ b/drivers/infiniband/hw/qib/qib.h
@@ -1131,7 +1131,6 @@ extern spinlock_t qib_devs_lock;
 extern struct qib_devdata *qib_lookup(int unit);
 extern u32 qib_cpulist_count;
 extern unsigned long *qib_cpulist;
-extern u16 qpt_mask;
 extern unsigned qib_cc_table_size;
 
 int qib_init(struct qib_devdata *, int);
diff --git a/drivers/infiniband/hw/qib/qib_qp.c b/drivers/infiniband/hw/qib/qib_qp.c
index f9b8cd2354d1..99d31efe4c2f 100644
--- a/drivers/infiniband/hw/qib/qib_qp.c
+++ b/drivers/infiniband/hw/qib/qib_qp.c
@@ -41,14 +41,6 @@
 
 #include "qib.h"
 
-/*
- * mask field which was present in now deleted qib_qpn_table
- * is not present in rvt_qpn_table. Defining the same field
- * as qpt_mask here instead of adding the mask field to
- * rvt_qpn_table.
- */
-u16 qpt_mask;
-
 static inline unsigned mk_qpn(struct rvt_qpn_table *qpt,
 			      struct rvt_qpn_map *map, unsigned off)
 {
@@ -57,7 +49,7 @@ static inline unsigned mk_qpn(struct rvt_qpn_table *qpt,
 
 static inline unsigned find_next_offset(struct rvt_qpn_table *qpt,
 					struct rvt_qpn_map *map, unsigned off,
-					unsigned n)
+					unsigned n, u16 qpt_mask)
 {
 	if (qpt_mask) {
 		off++;
@@ -179,6 +171,7 @@ int qib_alloc_qpn(struct rvt_dev_info *rdi, struct rvt_qpn_table *qpt,
 	struct qib_ibdev *verbs_dev = container_of(rdi, struct qib_ibdev, rdi);
 	struct qib_devdata *dd = container_of(verbs_dev, struct qib_devdata,
 					      verbs_dev);
+	u16 qpt_mask = dd->qpn_mask;
 
 	if (type == IB_QPT_SMI || type == IB_QPT_GSI) {
 		unsigned n;
@@ -215,7 +208,7 @@ int qib_alloc_qpn(struct rvt_dev_info *rdi, struct rvt_qpn_table *qpt,
 				goto bail;
 			}
 			offset = find_next_offset(qpt, map, offset,
-				dd->n_krcv_queues);
+				dd->n_krcv_queues, qpt_mask);
 			qpn = mk_qpn(qpt, map, offset);
 			/*
 			 * This test differs from alloc_pidmap().
diff --git a/drivers/infiniband/hw/qib/qib_verbs.c b/drivers/infiniband/hw/qib/qib_verbs.c
index fd1dfbce5539..b2b845f9f7df 100644
--- a/drivers/infiniband/hw/qib/qib_verbs.c
+++ b/drivers/infiniband/hw/qib/qib_verbs.c
@@ -1606,8 +1606,6 @@ int qib_register_ib_device(struct qib_devdata *dd)
 	/* Only need to initialize non-zero fields. */
 	setup_timer(&dev->mem_timer, mem_timer, (unsigned long)dev);
 
-	qpt_mask = dd->qpn_mask;
-
 	INIT_LIST_HEAD(&dev->piowait);
 	INIT_LIST_HEAD(&dev->dmawait);
 	INIT_LIST_HEAD(&dev->txwait);
diff --git a/drivers/infiniband/sw/rdmavt/qp.c b/drivers/infiniband/sw/rdmavt/qp.c
index 870b4f212fbc..5911c534cc18 100644
--- a/drivers/infiniband/sw/rdmavt/qp.c
+++ b/drivers/infiniband/sw/rdmavt/qp.c
@@ -501,12 +501,9 @@ static void rvt_remove_qp(struct rvt_dev_info *rdi, struct rvt_qp *qp)
  */
 static void rvt_reset_qp(struct rvt_dev_info *rdi, struct rvt_qp *qp,
 		  enum ib_qp_type type)
-	__releases(&qp->s_lock)
-	__releases(&qp->s_hlock)
-	__releases(&qp->r_lock)
-	__acquires(&qp->r_lock)
-	__acquires(&qp->s_hlock)
-	__acquires(&qp->s_lock)
+	__must_hold(&qp->r_lock)
+	__must_hold(&qp->s_hlock)
+	__must_hold(&qp->s_lock)
 {
 	if (qp->state != IB_QPS_RESET) {
 		qp->state = IB_QPS_RESET;
diff --git a/drivers/net/ethernet/intel/i40e/i40e_client.c b/drivers/net/ethernet/intel/i40e/i40e_client.c
index 618f18436618..c65e17fae24e 100644
--- a/drivers/net/ethernet/intel/i40e/i40e_client.c
+++ b/drivers/net/ethernet/intel/i40e/i40e_client.c
@@ -1009,7 +1009,6 @@ int i40e_unregister_client(struct i40e_client *client)
 	if (!i40e_client_is_registered(client)) {
 		pr_info("i40e: Client %s has not been registered\n",
 			client->name);
-		mutex_unlock(&i40e_client_mutex);
 		ret = -ENODEV;
 		goto out;
 	}
diff --git a/drivers/net/ethernet/intel/i40e/i40e_main.c b/drivers/net/ethernet/intel/i40e/i40e_main.c
index dad15b6c66dd..c74d16409941 100644
--- a/drivers/net/ethernet/intel/i40e/i40e_main.c
+++ b/drivers/net/ethernet/intel/i40e/i40e_main.c
@@ -7990,45 +7990,34 @@ static int i40e_setup_misc_vector(struct i40e_pf *pf)
 static int i40e_config_rss_aq(struct i40e_vsi *vsi, const u8 *seed,
 			      u8 *lut, u16 lut_size)
 {
-	struct i40e_aqc_get_set_rss_key_data rss_key;
 	struct i40e_pf *pf = vsi->back;
 	struct i40e_hw *hw = &pf->hw;
-	bool pf_lut = false;
-	u8 *rss_lut;
-	int ret, i;
-
-	memcpy(&rss_key, seed, sizeof(rss_key));
-
-	rss_lut = kzalloc(pf->rss_table_size, GFP_KERNEL);
-	if (!rss_lut)
-		return -ENOMEM;
-
-	/* Populate the LUT with max no. of queues in round robin fashion */
-	for (i = 0; i < vsi->rss_table_size; i++)
-		rss_lut[i] = i % vsi->rss_size;
+	int ret = 0;
 
-	ret = i40e_aq_set_rss_key(hw, vsi->id, &rss_key);
-	if (ret) {
-		dev_info(&pf->pdev->dev,
-			 "Cannot set RSS key, err %s aq_err %s\n",
-			 i40e_stat_str(&pf->hw, ret),
-			 i40e_aq_str(&pf->hw, pf->hw.aq.asq_last_status));
-		goto config_rss_aq_out;
+	if (seed) {
+		struct i40e_aqc_get_set_rss_key_data *seed_dw =
+			(struct i40e_aqc_get_set_rss_key_data *)seed;
+		ret = i40e_aq_set_rss_key(hw, vsi->id, seed_dw);
+		if (ret) {
+			dev_info(&pf->pdev->dev,
+				 "Cannot set RSS key, err %s aq_err %s\n",
+				 i40e_stat_str(hw, ret),
+				 i40e_aq_str(hw, hw->aq.asq_last_status));
+			return ret;
+		}
 	}
+	if (lut) {
+		bool pf_lut = vsi->type == I40E_VSI_MAIN ? true : false;
 
-	if (vsi->type == I40E_VSI_MAIN)
-		pf_lut = true;
-
-	ret = i40e_aq_set_rss_lut(hw, vsi->id, pf_lut, rss_lut,
-				  vsi->rss_table_size);
-	if (ret)
-		dev_info(&pf->pdev->dev,
-			 "Cannot set RSS lut, err %s aq_err %s\n",
-			 i40e_stat_str(&pf->hw, ret),
-			 i40e_aq_str(&pf->hw, pf->hw.aq.asq_last_status));
-
-config_rss_aq_out:
-	kfree(rss_lut);
+		ret = i40e_aq_set_rss_lut(hw, vsi->id, pf_lut, lut, lut_size);
+		if (ret) {
+			dev_info(&pf->pdev->dev,
+				 "Cannot set RSS lut, err %s aq_err %s\n",
+				 i40e_stat_str(hw, ret),
+				 i40e_aq_str(hw, hw->aq.asq_last_status));
+			return ret;
+		}
+	}
 	return ret;
 }
 
diff --git a/drivers/net/wireless/ath/ath10k/htt_rx.c b/drivers/net/wireless/ath/ath10k/htt_rx.c
index 24c8d65bcf34..09ca63466504 100644
--- a/drivers/net/wireless/ath/ath10k/htt_rx.c
+++ b/drivers/net/wireless/ath/ath10k/htt_rx.c
@@ -2394,6 +2394,8 @@ static void ath10k_htt_txrx_compl_task(unsigned long ptr)
 	skb_queue_splice_init(&htt->rx_in_ord_compl_q, &rx_ind_q);
 	spin_unlock_irqrestore(&htt->rx_in_ord_compl_q.lock, flags);
 
+	ath10k_mac_tx_push_pending(ar);
+
 	spin_lock_irqsave(&htt->tx_fetch_ind_q.lock, flags);
 	skb_queue_splice_init(&htt->tx_fetch_ind_q, &tx_ind_q);
 	spin_unlock_irqrestore(&htt->tx_fetch_ind_q.lock, flags);
diff --git a/drivers/net/wireless/ath/ath10k/mac.c b/drivers/net/wireless/ath/ath10k/mac.c
index 0bbd0a00edcc..146365b93ff5 100644
--- a/drivers/net/wireless/ath/ath10k/mac.c
+++ b/drivers/net/wireless/ath/ath10k/mac.c
@@ -3777,7 +3777,9 @@ int ath10k_mac_tx_push_txq(struct ieee80211_hw *hw,
 	enum ath10k_hw_txrx_mode txmode;
 	enum ath10k_mac_tx_path txpath;
 	struct sk_buff *skb;
+	struct ieee80211_hdr *hdr;
 	size_t skb_len;
+	bool is_mgmt, is_presp;
 	int ret;
 
 	spin_lock_bh(&ar->htt.tx_lock);
@@ -3801,6 +3803,22 @@ int ath10k_mac_tx_push_txq(struct ieee80211_hw *hw,
 	skb_len = skb->len;
 	txmode = ath10k_mac_tx_h_get_txmode(ar, vif, sta, skb);
 	txpath = ath10k_mac_tx_h_get_txpath(ar, skb, txmode);
+	is_mgmt = (txpath == ATH10K_MAC_TX_HTT_MGMT);
+
+	if (is_mgmt) {
+		hdr = (struct ieee80211_hdr *)skb->data;
+		is_presp = ieee80211_is_probe_resp(hdr->frame_control);
+
+		spin_lock_bh(&ar->htt.tx_lock);
+		ret = ath10k_htt_tx_mgmt_inc_pending(htt, is_mgmt, is_presp);
+
+		if (ret) {
+			ath10k_htt_tx_dec_pending(htt);
+			spin_unlock_bh(&ar->htt.tx_lock);
+			return ret;
+		}
+		spin_unlock_bh(&ar->htt.tx_lock);
+	}
 
 	ret = ath10k_mac_tx(ar, vif, sta, txmode, txpath, skb);
 	if (unlikely(ret)) {
@@ -3808,6 +3826,8 @@ int ath10k_mac_tx_push_txq(struct ieee80211_hw *hw,
 
 		spin_lock_bh(&ar->htt.tx_lock);
 		ath10k_htt_tx_dec_pending(htt);
+		if (is_mgmt)
+			ath10k_htt_tx_mgmt_dec_pending(htt);
 		spin_unlock_bh(&ar->htt.tx_lock);
 
 		return ret;
@@ -6538,7 +6558,7 @@ static int ath10k_get_survey(struct ieee80211_hw *hw, int idx,
 		goto exit;
 	}
 
-	ath10k_mac_update_bss_chan_survey(ar, survey->channel);
+	ath10k_mac_update_bss_chan_survey(ar, &sband->channels[idx]);
 
 	spin_lock_bh(&ar->data_lock);
 	memcpy(survey, ar_survey, sizeof(*survey));
diff --git a/drivers/net/wireless/ath/ath10k/txrx.c b/drivers/net/wireless/ath/ath10k/txrx.c
index b29a86a26c13..28ff5cb4ec28 100644
--- a/drivers/net/wireless/ath/ath10k/txrx.c
+++ b/drivers/net/wireless/ath/ath10k/txrx.c
@@ -119,8 +119,6 @@ int ath10k_txrx_tx_unref(struct ath10k_htt *htt,
 	ieee80211_tx_status(htt->ar->hw, msdu);
 	/* we do not own the msdu anymore */
 
-	ath10k_mac_tx_push_pending(ar);
-
 	return 0;
 }
 
diff --git a/drivers/net/wireless/ath/ath10k/wmi.h b/drivers/net/wireless/ath/ath10k/wmi.h
index 3ef468893b3f..f67cc198bc0e 100644
--- a/drivers/net/wireless/ath/ath10k/wmi.h
+++ b/drivers/net/wireless/ath/ath10k/wmi.h
@@ -180,6 +180,7 @@ enum wmi_service {
 	WMI_SERVICE_MESH_NON_11S,
 	WMI_SERVICE_PEER_STATS,
 	WMI_SERVICE_RESTRT_CHNL_SUPPORT,
+	WMI_SERVICE_PERIODIC_CHAN_STAT_SUPPORT,
 	WMI_SERVICE_TX_MODE_PUSH_ONLY,
 	WMI_SERVICE_TX_MODE_PUSH_PULL,
 	WMI_SERVICE_TX_MODE_DYNAMIC,
@@ -305,6 +306,7 @@ enum wmi_10_4_service {
 	WMI_10_4_SERVICE_RESTRT_CHNL_SUPPORT,
 	WMI_10_4_SERVICE_PEER_STATS,
 	WMI_10_4_SERVICE_MESH_11S,
+	WMI_10_4_SERVICE_PERIODIC_CHAN_STAT_SUPPORT,
 	WMI_10_4_SERVICE_TX_MODE_PUSH_ONLY,
 	WMI_10_4_SERVICE_TX_MODE_PUSH_PULL,
 	WMI_10_4_SERVICE_TX_MODE_DYNAMIC,
@@ -402,6 +404,7 @@ static inline char *wmi_service_name(int service_id)
 	SVCSTR(WMI_SERVICE_MESH_NON_11S);
 	SVCSTR(WMI_SERVICE_PEER_STATS);
 	SVCSTR(WMI_SERVICE_RESTRT_CHNL_SUPPORT);
+	SVCSTR(WMI_SERVICE_PERIODIC_CHAN_STAT_SUPPORT);
 	SVCSTR(WMI_SERVICE_TX_MODE_PUSH_ONLY);
 	SVCSTR(WMI_SERVICE_TX_MODE_PUSH_PULL);
 	SVCSTR(WMI_SERVICE_TX_MODE_DYNAMIC);
@@ -652,6 +655,8 @@ static inline void wmi_10_4_svc_map(const __le32 *in, unsigned long *out,
 	       WMI_SERVICE_PEER_STATS, len);
 	SVCMAP(WMI_10_4_SERVICE_MESH_11S,
 	       WMI_SERVICE_MESH_11S, len);
+	SVCMAP(WMI_10_4_SERVICE_PERIODIC_CHAN_STAT_SUPPORT,
+	       WMI_SERVICE_PERIODIC_CHAN_STAT_SUPPORT, len);
 	SVCMAP(WMI_10_4_SERVICE_TX_MODE_PUSH_ONLY,
 	       WMI_SERVICE_TX_MODE_PUSH_ONLY, len);
 	SVCMAP(WMI_10_4_SERVICE_TX_MODE_PUSH_PULL,
diff --git a/drivers/net/wireless/intel/iwlwifi/iwl-nvm-parse.c b/drivers/net/wireless/intel/iwlwifi/iwl-nvm-parse.c
index 43f8f7d45ddb..adba3b003f55 100644
--- a/drivers/net/wireless/intel/iwlwifi/iwl-nvm-parse.c
+++ b/drivers/net/wireless/intel/iwlwifi/iwl-nvm-parse.c
@@ -564,11 +564,16 @@ static void iwl_set_hw_address_from_csr(struct iwl_trans *trans,
 	__le32 mac_addr0 = cpu_to_le32(iwl_read32(trans, CSR_MAC_ADDR0_STRAP));
 	__le32 mac_addr1 = cpu_to_le32(iwl_read32(trans, CSR_MAC_ADDR1_STRAP));
 
-	/* If OEM did not fuse address - get it from OTP */
-	if (!mac_addr0 && !mac_addr1) {
-		mac_addr0 = cpu_to_le32(iwl_read32(trans, CSR_MAC_ADDR0_OTP));
-		mac_addr1 = cpu_to_le32(iwl_read32(trans, CSR_MAC_ADDR1_OTP));
-	}
+	iwl_flip_hw_address(mac_addr0, mac_addr1, data->hw_addr);
+	/*
+	 * If the OEM fused a valid address, use it instead of the one in the
+	 * OTP
+	 */
+	if (is_valid_ether_addr(data->hw_addr))
+		return;
+
+	mac_addr0 = cpu_to_le32(iwl_read32(trans, CSR_MAC_ADDR0_OTP));
+	mac_addr1 = cpu_to_le32(iwl_read32(trans, CSR_MAC_ADDR1_OTP));
 
 	iwl_flip_hw_address(mac_addr0, mac_addr1, data->hw_addr);
 }
diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/fw.c b/drivers/net/wireless/intel/iwlwifi/mvm/fw.c
index 7e0cdbf8bf74..794c57486e02 100644
--- a/drivers/net/wireless/intel/iwlwifi/mvm/fw.c
+++ b/drivers/net/wireless/intel/iwlwifi/mvm/fw.c
@@ -1214,9 +1214,12 @@ int iwl_mvm_up(struct iwl_mvm *mvm)
 	}
 
 	/* TODO: read the budget from BIOS / Platform NVM */
-	if (iwl_mvm_is_ctdp_supported(mvm) && mvm->cooling_dev.cur_state > 0)
+	if (iwl_mvm_is_ctdp_supported(mvm) && mvm->cooling_dev.cur_state > 0) {
 		ret = iwl_mvm_ctdp_command(mvm, CTDP_CMD_OPERATION_START,
 					   mvm->cooling_dev.cur_state);
+		if (ret)
+			goto error;
+	}
 #else
 	/* Initialize tx backoffs to the minimal possible */
 	iwl_mvm_tt_tx_backoff(mvm, 0);
diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c b/drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c
index 69c42ce45b8a..d742d27d8de0 100644
--- a/drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c
+++ b/drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c
@@ -539,6 +539,11 @@ void iwl_mvm_mac_ctxt_release(struct iwl_mvm *mvm, struct ieee80211_vif *vif)
 			iwl_mvm_disable_txq(mvm, IWL_MVM_OFFCHANNEL_QUEUE,
 					    IWL_MVM_OFFCHANNEL_QUEUE,
 					    IWL_MAX_TID_COUNT, 0);
+		else
+			iwl_mvm_disable_txq(mvm,
+					    IWL_MVM_DQA_P2P_DEVICE_QUEUE,
+					    vif->hw_queue[0], IWL_MAX_TID_COUNT,
+					    0);
 
 		break;
 	case NL80211_IFTYPE_AP:
diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c b/drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c
index df6c32caa5f0..afb7eb60e454 100644
--- a/drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c
+++ b/drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c
@@ -598,9 +598,10 @@ static bool iwl_mvm_reorder(struct iwl_mvm *mvm,
 
 	mvm_sta = iwl_mvm_sta_from_mac80211(sta);
 
-	/* not a data packet */
-	if (!ieee80211_is_data_qos(hdr->frame_control) ||
-	    is_multicast_ether_addr(hdr->addr1))
+	/* not a data packet or a bar */
+	if (!ieee80211_is_back_req(hdr->frame_control) &&
+	    (!ieee80211_is_data_qos(hdr->frame_control) ||
+	     is_multicast_ether_addr(hdr->addr1)))
 		return false;
 
 	if (unlikely(!ieee80211_is_data_present(hdr->frame_control)))
@@ -624,6 +625,11 @@ static bool iwl_mvm_reorder(struct iwl_mvm *mvm,
 
 	spin_lock_bh(&buffer->lock);
 
+	if (ieee80211_is_back_req(hdr->frame_control)) {
+		iwl_mvm_release_frames(mvm, sta, napi, buffer, nssn);
+		goto drop;
+	}
+
 	/*
 	 * If there was a significant jump in the nssn - adjust.
 	 * If the SN is smaller than the NSSN it might need to first go into
diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/sta.c b/drivers/net/wireless/intel/iwlwifi/mvm/sta.c
index 3130b9c68a74..e933c12d80aa 100644
--- a/drivers/net/wireless/intel/iwlwifi/mvm/sta.c
+++ b/drivers/net/wireless/intel/iwlwifi/mvm/sta.c
@@ -576,9 +576,7 @@ static int iwl_mvm_scd_queue_redirect(struct iwl_mvm *mvm, int queue, int tid,
 			ret);
 
 	/* Make sure the SCD wrptr is correctly set before reconfiguring */
-	iwl_trans_txq_enable(mvm->trans, queue, iwl_mvm_ac_to_tx_fifo[ac],
-			     cmd.sta_id, tid, LINK_QUAL_AGG_FRAME_LIMIT_DEF,
-			     ssn, wdg_timeout);
+	iwl_trans_txq_enable_cfg(mvm->trans, queue, ssn, NULL, wdg_timeout);
 
 	/* TODO: Work-around SCD bug when moving back by multiples of 0x40 */
 
@@ -1270,9 +1268,31 @@ int iwl_mvm_rm_sta(struct iwl_mvm *mvm,
 		ret = iwl_mvm_drain_sta(mvm, mvm_sta, false);
 
 		/* If DQA is supported - the queues can be disabled now */
-		if (iwl_mvm_is_dqa_supported(mvm))
+		if (iwl_mvm_is_dqa_supported(mvm)) {
+			u8 reserved_txq = mvm_sta->reserved_queue;
+			enum iwl_mvm_queue_status *status;
+
 			iwl_mvm_disable_sta_queues(mvm, vif, mvm_sta);
 
+			/*
+			 * If no traffic has gone through the reserved TXQ - it
+			 * is still marked as IWL_MVM_QUEUE_RESERVED, and
+			 * should be manually marked as free again
+			 */
+			spin_lock_bh(&mvm->queue_info_lock);
+			status = &mvm->queue_info[reserved_txq].status;
+			if (WARN((*status != IWL_MVM_QUEUE_RESERVED) &&
+				 (*status != IWL_MVM_QUEUE_FREE),
+				 "sta_id %d reserved txq %d status %d",
+				 mvm_sta->sta_id, reserved_txq, *status)) {
+				spin_unlock_bh(&mvm->queue_info_lock);
+				return -EINVAL;
+			}
+
+			*status = IWL_MVM_QUEUE_FREE;
+			spin_unlock_bh(&mvm->queue_info_lock);
+		}
+
 		if (vif->type == NL80211_IFTYPE_STATION &&
 		    mvmvif->ap_sta_id == mvm_sta->sta_id) {
 			/* if associated - we can't remove the AP STA now */
diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/tx.c b/drivers/net/wireless/intel/iwlwifi/mvm/tx.c
index b3a87a31de30..a0c1e3d07db5 100644
--- a/drivers/net/wireless/intel/iwlwifi/mvm/tx.c
+++ b/drivers/net/wireless/intel/iwlwifi/mvm/tx.c
@@ -903,9 +903,13 @@ static int iwl_mvm_tx_mpdu(struct iwl_mvm *mvm, struct sk_buff *skb,
 		tid = IWL_MAX_TID_COUNT;
 	}
 
-	if (iwl_mvm_is_dqa_supported(mvm))
+	if (iwl_mvm_is_dqa_supported(mvm)) {
 		txq_id = mvmsta->tid_data[tid].txq_id;
 
+		if (ieee80211_is_mgmt(fc))
+			tx_cmd->tid_tspec = IWL_TID_NON_QOS;
+	}
+
 	/* Copy MAC header from skb into command buffer */
 	memcpy(tx_cmd->hdr, hdr, hdrlen);
 
diff --git a/drivers/net/wireless/marvell/mwifiex/join.c b/drivers/net/wireless/marvell/mwifiex/join.c
index 1c7b00630b90..b89596c18b41 100644
--- a/drivers/net/wireless/marvell/mwifiex/join.c
+++ b/drivers/net/wireless/marvell/mwifiex/join.c
@@ -669,9 +669,8 @@ int mwifiex_ret_802_11_associate(struct mwifiex_private *priv,
 	priv->assoc_rsp_size = min(le16_to_cpu(resp->size) - S_DS_GEN,
 				   sizeof(priv->assoc_rsp_buf));
 
-	memcpy(priv->assoc_rsp_buf, &resp->params, priv->assoc_rsp_size);
-
 	assoc_rsp->a_id = cpu_to_le16(aid);
+	memcpy(priv->assoc_rsp_buf, &resp->params, priv->assoc_rsp_size);
 
 	if (status_code) {
 		priv->adapter->dbg.num_cmd_assoc_failure++;
diff --git a/drivers/net/wireless/marvell/mwifiex/sta_event.c b/drivers/net/wireless/marvell/mwifiex/sta_event.c
index a422f3306d4d..7e394d485f54 100644
--- a/drivers/net/wireless/marvell/mwifiex/sta_event.c
+++ b/drivers/net/wireless/marvell/mwifiex/sta_event.c
@@ -708,7 +708,11 @@ int mwifiex_process_sta_event(struct mwifiex_private *priv)
 
 	case EVENT_EXT_SCAN_REPORT:
 		mwifiex_dbg(adapter, EVENT, "event: EXT_SCAN Report\n");
-		if (adapter->ext_scan && !priv->scan_aborting)
+		/* We intend to skip this event during suspend, but handle
+		 * it in interface disabled case
+		 */
+		if (adapter->ext_scan && (!priv->scan_aborting ||
+					  !netif_running(priv->netdev)))
 			ret = mwifiex_handle_event_ext_scan_report(priv,
 						adapter->event_skb->data);
 
diff --git a/drivers/net/wireless/ralink/rt2x00/rt2x00usb.c b/drivers/net/wireless/ralink/rt2x00/rt2x00usb.c
index 7cf26c6124d1..6005e14213ca 100644
--- a/drivers/net/wireless/ralink/rt2x00/rt2x00usb.c
+++ b/drivers/net/wireless/ralink/rt2x00/rt2x00usb.c
@@ -831,8 +831,10 @@ int rt2x00usb_probe(struct usb_interface *usb_intf,
 	rt2x00dev->anchor = devm_kmalloc(&usb_dev->dev,
 					sizeof(struct usb_anchor),
 					GFP_KERNEL);
-	if (!rt2x00dev->anchor)
+	if (!rt2x00dev->anchor) {
+		retval = -ENOMEM;
 		goto exit_free_reg;
+	}
 
 	init_usb_anchor(rt2x00dev->anchor);
 	return 0;
diff --git a/drivers/nvdimm/bus.c b/drivers/nvdimm/bus.c
index 935866fe5ec2..a8b6949a8778 100644
--- a/drivers/nvdimm/bus.c
+++ b/drivers/nvdimm/bus.c
@@ -217,6 +217,8 @@ long nvdimm_clear_poison(struct device *dev, phys_addr_t phys,
 		return rc;
 	if (cmd_rc < 0)
 		return cmd_rc;
+
+	nvdimm_clear_from_poison_list(nvdimm_bus, phys, len);
 	return clear_err.cleared;
 }
 EXPORT_SYMBOL_GPL(nvdimm_clear_poison);
diff --git a/drivers/nvdimm/core.c b/drivers/nvdimm/core.c
index 4d7bbd2df5c0..7ceba08774b6 100644
--- a/drivers/nvdimm/core.c
+++ b/drivers/nvdimm/core.c
@@ -547,11 +547,12 @@ void nvdimm_badblocks_populate(struct nd_region *nd_region,
 }
 EXPORT_SYMBOL_GPL(nvdimm_badblocks_populate);
 
-static int add_poison(struct nvdimm_bus *nvdimm_bus, u64 addr, u64 length)
+static int add_poison(struct nvdimm_bus *nvdimm_bus, u64 addr, u64 length,
+			gfp_t flags)
 {
 	struct nd_poison *pl;
 
-	pl = kzalloc(sizeof(*pl), GFP_KERNEL);
+	pl = kzalloc(sizeof(*pl), flags);
 	if (!pl)
 		return -ENOMEM;
 
@@ -567,7 +568,7 @@ static int bus_add_poison(struct nvdimm_bus *nvdimm_bus, u64 addr, u64 length)
 	struct nd_poison *pl;
 
 	if (list_empty(&nvdimm_bus->poison_list))
-		return add_poison(nvdimm_bus, addr, length);
+		return add_poison(nvdimm_bus, addr, length, GFP_KERNEL);
 
 	/*
 	 * There is a chance this is a duplicate, check for those first.
@@ -587,7 +588,7 @@ static int bus_add_poison(struct nvdimm_bus *nvdimm_bus, u64 addr, u64 length)
 	 * as any overlapping ranges will get resolved when the list is consumed
 	 * and converted to badblocks
 	 */
-	return add_poison(nvdimm_bus, addr, length);
+	return add_poison(nvdimm_bus, addr, length, GFP_KERNEL);
 }
 
 int nvdimm_bus_add_poison(struct nvdimm_bus *nvdimm_bus, u64 addr, u64 length)
@@ -602,6 +603,70 @@ int nvdimm_bus_add_poison(struct nvdimm_bus *nvdimm_bus, u64 addr, u64 length)
 }
 EXPORT_SYMBOL_GPL(nvdimm_bus_add_poison);
 
+void nvdimm_clear_from_poison_list(struct nvdimm_bus *nvdimm_bus,
+		phys_addr_t start, unsigned int len)
+{
+	struct list_head *poison_list = &nvdimm_bus->poison_list;
+	u64 clr_end = start + len - 1;
+	struct nd_poison *pl, *next;
+
+	nvdimm_bus_lock(&nvdimm_bus->dev);
+	WARN_ON_ONCE(list_empty(poison_list));
+
+	/*
+	 * [start, clr_end] is the poison interval being cleared.
+	 * [pl->start, pl_end] is the poison_list entry we're comparing
+	 * the above interval against. The poison list entry may need
+	 * to be modified (update either start or length), deleted, or
+	 * split into two based on the overlap characteristics
+	 */
+
+	list_for_each_entry_safe(pl, next, poison_list, list) {
+		u64 pl_end = pl->start + pl->length - 1;
+
+		/* Skip intervals with no intersection */
+		if (pl_end < start)
+			continue;
+		if (pl->start >  clr_end)
+			continue;
+		/* Delete completely overlapped poison entries */
+		if ((pl->start >= start) && (pl_end <= clr_end)) {
+			list_del(&pl->list);
+			kfree(pl);
+			continue;
+		}
+		/* Adjust start point of partially cleared entries */
+		if ((start <= pl->start) && (clr_end > pl->start)) {
+			pl->length -= clr_end - pl->start + 1;
+			pl->start = clr_end + 1;
+			continue;
+		}
+		/* Adjust pl->length for partial clearing at the tail end */
+		if ((pl->start < start) && (pl_end <= clr_end)) {
+			/* pl->start remains the same */
+			pl->length = start - pl->start;
+			continue;
+		}
+		/*
+		 * If clearing in the middle of an entry, we split it into
+		 * two by modifying the current entry to represent one half of
+		 * the split, and adding a new entry for the second half.
+		 */
+		if ((pl->start < start) && (pl_end > clr_end)) {
+			u64 new_start = clr_end + 1;
+			u64 new_len = pl_end - new_start + 1;
+
+			/* Add new entry covering the right half */
+			add_poison(nvdimm_bus, new_start, new_len, GFP_NOIO);
+			/* Adjust this entry to cover the left half */
+			pl->length = start - pl->start;
+			continue;
+		}
+	}
+	nvdimm_bus_unlock(&nvdimm_bus->dev);
+}
+EXPORT_SYMBOL_GPL(nvdimm_clear_from_poison_list);
+
 #ifdef CONFIG_BLK_DEV_INTEGRITY
 int nd_integrity_init(struct gendisk *disk, unsigned long meta_size)
 {
diff --git a/drivers/pci/host/pci-aardvark.c b/drivers/pci/host/pci-aardvark.c
index ef9893fa3176..4f5e567fd7e0 100644
--- a/drivers/pci/host/pci-aardvark.c
+++ b/drivers/pci/host/pci-aardvark.c
@@ -848,7 +848,7 @@ static int advk_pcie_parse_request_of_pci_ranges(struct advk_pcie *pcie)
 	int err, res_valid = 0;
 	struct device *dev = &pcie->pdev->dev;
 	struct device_node *np = dev->of_node;
-	struct resource_entry *win;
+	struct resource_entry *win, *tmp;
 	resource_size_t iobase;
 
 	INIT_LIST_HEAD(&pcie->resources);
@@ -862,7 +862,7 @@ static int advk_pcie_parse_request_of_pci_ranges(struct advk_pcie *pcie)
 	if (err)
 		goto out_release_res;
 
-	resource_list_for_each_entry(win, &pcie->resources) {
+	resource_list_for_each_entry_safe(win, tmp, &pcie->resources) {
 		struct resource *res = win->res;
 
 		switch (resource_type(res)) {
@@ -874,9 +874,11 @@ static int advk_pcie_parse_request_of_pci_ranges(struct advk_pcie *pcie)
 					     lower_32_bits(res->start),
 					     OB_PCIE_IO);
 			err = pci_remap_iospace(res, iobase);
-			if (err)
+			if (err) {
 				dev_warn(dev, "error %d: failed to map resource %pR\n",
 					 err, res);
+				resource_list_destroy_entry(win);
+			}
 			break;
 		case IORESOURCE_MEM:
 			advk_pcie_set_ob_win(pcie, 0,
diff --git a/drivers/pci/host/pci-host-common.c b/drivers/pci/host/pci-host-common.c
index 9d9d34e959b6..61eb4d46eb50 100644
--- a/drivers/pci/host/pci-host-common.c
+++ b/drivers/pci/host/pci-host-common.c
@@ -29,7 +29,7 @@ static int gen_pci_parse_request_of_pci_ranges(struct device *dev,
 	int err, res_valid = 0;
 	struct device_node *np = dev->of_node;
 	resource_size_t iobase;
-	struct resource_entry *win;
+	struct resource_entry *win, *tmp;
 
 	err = of_pci_get_host_bridge_resources(np, 0, 0xff, resources, &iobase);
 	if (err)
@@ -39,15 +39,17 @@ static int gen_pci_parse_request_of_pci_ranges(struct device *dev,
 	if (err)
 		return err;
 
-	resource_list_for_each_entry(win, resources) {
+	resource_list_for_each_entry_safe(win, tmp, resources) {
 		struct resource *res = win->res;
 
 		switch (resource_type(res)) {
 		case IORESOURCE_IO:
 			err = pci_remap_iospace(res, iobase);
-			if (err)
+			if (err) {
 				dev_warn(dev, "error %d: failed to map resource %pR\n",
 					 err, res);
+				resource_list_destroy_entry(win);
+			}
 			break;
 		case IORESOURCE_MEM:
 			res_valid |= !(res->flags & IORESOURCE_PREFETCH);
diff --git a/drivers/pci/host/pci-tegra.c b/drivers/pci/host/pci-tegra.c
index 84d650d892e7..7ec1e800096a 100644
--- a/drivers/pci/host/pci-tegra.c
+++ b/drivers/pci/host/pci-tegra.c
@@ -621,7 +621,11 @@ static int tegra_pcie_setup(int nr, struct pci_sys_data *sys)
 	if (err < 0)
 		return err;
 
-	pci_add_resource_offset(&sys->resources, &pcie->pio, sys->io_offset);
+	err = pci_remap_iospace(&pcie->pio, pcie->io.start);
+	if (!err)
+		pci_add_resource_offset(&sys->resources, &pcie->pio,
+					sys->io_offset);
+
 	pci_add_resource_offset(&sys->resources, &pcie->mem, sys->mem_offset);
 	pci_add_resource_offset(&sys->resources, &pcie->prefetch,
 				sys->mem_offset);
@@ -631,7 +635,6 @@ static int tegra_pcie_setup(int nr, struct pci_sys_data *sys)
 	if (err < 0)
 		return err;
 
-	pci_remap_iospace(&pcie->pio, pcie->io.start);
 	return 1;
 }
 
diff --git a/drivers/pci/host/pci-versatile.c b/drivers/pci/host/pci-versatile.c
index f234405770ab..b7dc07002f13 100644
--- a/drivers/pci/host/pci-versatile.c
+++ b/drivers/pci/host/pci-versatile.c
@@ -74,7 +74,7 @@ static int versatile_pci_parse_request_of_pci_ranges(struct device *dev,
 	int err, mem = 1, res_valid = 0;
 	struct device_node *np = dev->of_node;
 	resource_size_t iobase;
-	struct resource_entry *win;
+	struct resource_entry *win, *tmp;
 
 	err = of_pci_get_host_bridge_resources(np, 0, 0xff, res, &iobase);
 	if (err)
@@ -84,15 +84,17 @@ static int versatile_pci_parse_request_of_pci_ranges(struct device *dev,
 	if (err)
 		goto out_release_res;
 
-	resource_list_for_each_entry(win, res) {
+	resource_list_for_each_entry_safe(win, tmp, res) {
 		struct resource *res = win->res;
 
 		switch (resource_type(res)) {
 		case IORESOURCE_IO:
 			err = pci_remap_iospace(res, iobase);
-			if (err)
+			if (err) {
 				dev_warn(dev, "error %d: failed to map resource %pR\n",
 					 err, res);
+				resource_list_destroy_entry(win);
+			}
 			break;
 		case IORESOURCE_MEM:
 			res_valid |= !(res->flags & IORESOURCE_PREFETCH);
diff --git a/drivers/pci/host/pcie-designware.c b/drivers/pci/host/pcie-designware.c
index 12afce19890b..2a500f270c01 100644
--- a/drivers/pci/host/pcie-designware.c
+++ b/drivers/pci/host/pcie-designware.c
@@ -436,7 +436,7 @@ int dw_pcie_host_init(struct pcie_port *pp)
 	struct resource *cfg_res;
 	int i, ret;
 	LIST_HEAD(res);
-	struct resource_entry *win;
+	struct resource_entry *win, *tmp;
 
 	cfg_res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "config");
 	if (cfg_res) {
@@ -457,17 +457,20 @@ int dw_pcie_host_init(struct pcie_port *pp)
 		goto error;
 
 	/* Get the I/O and memory ranges from DT */
-	resource_list_for_each_entry(win, &res) {
+	resource_list_for_each_entry_safe(win, tmp, &res) {
 		switch (resource_type(win->res)) {
 		case IORESOURCE_IO:
-			pp->io = win->res;
-			pp->io->name = "I/O";
-			pp->io_size = resource_size(pp->io);
-			pp->io_bus_addr = pp->io->start - win->offset;
-			ret = pci_remap_iospace(pp->io, pp->io_base);
-			if (ret)
+			ret = pci_remap_iospace(win->res, pp->io_base);
+			if (ret) {
 				dev_warn(pp->dev, "error %d: failed to map resource %pR\n",
-					 ret, pp->io);
+					 ret, win->res);
+				resource_list_destroy_entry(win);
+			} else {
+				pp->io = win->res;
+				pp->io->name = "I/O";
+				pp->io_size = resource_size(pp->io);
+				pp->io_bus_addr = pp->io->start - win->offset;
+			}
 			break;
 		case IORESOURCE_MEM:
 			pp->mem = win->res;
diff --git a/drivers/pci/host/pcie-rcar.c b/drivers/pci/host/pcie-rcar.c
index 65db7a221509..5f7fcc971cae 100644
--- a/drivers/pci/host/pcie-rcar.c
+++ b/drivers/pci/host/pcie-rcar.c
@@ -945,7 +945,7 @@ static int rcar_pcie_parse_request_of_pci_ranges(struct rcar_pcie *pci)
 	struct device *dev = pci->dev;
 	struct device_node *np = dev->of_node;
 	resource_size_t iobase;
-	struct resource_entry *win;
+	struct resource_entry *win, *tmp;
 
 	err = of_pci_get_host_bridge_resources(np, 0, 0xff, &pci->resources, &iobase);
 	if (err)
@@ -955,14 +955,17 @@ static int rcar_pcie_parse_request_of_pci_ranges(struct rcar_pcie *pci)
 	if (err)
 		goto out_release_res;
 
-	resource_list_for_each_entry(win, &pci->resources) {
+	resource_list_for_each_entry_safe(win, tmp, &pci->resources) {
 		struct resource *res = win->res;
 
 		if (resource_type(res) == IORESOURCE_IO) {
 			err = pci_remap_iospace(res, iobase);
-			if (err)
+			if (err) {
 				dev_warn(dev, "error %d: failed to map resource %pR\n",
 					 err, res);
+
+				resource_list_destroy_entry(win);
+			}
 		}
 	}
 
diff --git a/drivers/pinctrl/qcom/pinctrl-msm.c b/drivers/pinctrl/qcom/pinctrl-msm.c
index 51c42d746883..775c88303017 100644
--- a/drivers/pinctrl/qcom/pinctrl-msm.c
+++ b/drivers/pinctrl/qcom/pinctrl-msm.c
@@ -156,7 +156,7 @@ static int msm_pinmux_set_mux(struct pinctrl_dev *pctldev,
 	spin_lock_irqsave(&pctrl->lock, flags);
 
 	val = readl(pctrl->regs + g->ctl_reg);
-	val &= mask;
+	val &= ~mask;
 	val |= i << g->mux_bit;
 	writel(val, pctrl->regs + g->ctl_reg);
 
diff --git a/drivers/power/bq24257_charger.c b/drivers/power/bq24257_charger.c
index 1fea2c7ef97f..6fc31bdc639b 100644
--- a/drivers/power/bq24257_charger.c
+++ b/drivers/power/bq24257_charger.c
@@ -1068,6 +1068,12 @@ static int bq24257_probe(struct i2c_client *client,
 		return ret;
 	}
 
+	ret = bq24257_power_supply_init(bq);
+	if (ret < 0) {
+		dev_err(dev, "Failed to register power supply\n");
+		return ret;
+	}
+
 	ret = devm_request_threaded_irq(dev, client->irq, NULL,
 					bq24257_irq_handler_thread,
 					IRQF_TRIGGER_FALLING |
@@ -1078,12 +1084,6 @@ static int bq24257_probe(struct i2c_client *client,
 		return ret;
 	}
 
-	ret = bq24257_power_supply_init(bq);
-	if (ret < 0) {
-		dev_err(dev, "Failed to register power supply\n");
-		return ret;
-	}
-
 	ret = sysfs_create_group(&bq->charger->dev.kobj, &bq24257_attr_group);
 	if (ret < 0) {
 		dev_err(dev, "Can't create sysfs entries\n");
diff --git a/drivers/s390/char/con3270.c b/drivers/s390/char/con3270.c
index 6b1577c73fe7..285b4006f44b 100644
--- a/drivers/s390/char/con3270.c
+++ b/drivers/s390/char/con3270.c
@@ -124,7 +124,12 @@ con3270_create_status(struct con3270 *cp)
 static void
 con3270_update_string(struct con3270 *cp, struct string *s, int nr)
 {
-	if (s->len >= cp->view.cols - 5)
+	if (s->len < 4) {
+		/* This indicates a bug, but printing a warning would
+		 * cause a deadlock. */
+		return;
+	}
+	if (s->string[s->len - 4] != TO_RA)
 		return;
 	raw3270_buffer_address(cp->view.dev, s->string + s->len - 3,
 			       cp->view.cols * (nr + 1));
@@ -460,11 +465,11 @@ con3270_cline_end(struct con3270 *cp)
 		cp->cline->len + 4 : cp->view.cols;
 	s = con3270_alloc_string(cp, size);
 	memcpy(s->string, cp->cline->string, cp->cline->len);
-	if (s->len < cp->view.cols - 5) {
+	if (cp->cline->len < cp->view.cols - 5) {
 		s->string[s->len - 4] = TO_RA;
 		s->string[s->len - 1] = 0;
 	} else {
-		while (--size > cp->cline->len)
+		while (--size >= cp->cline->len)
 			s->string[size] = cp->view.ascebc[' '];
 	}
 	/* Replace cline with allocated line s and reset cline. */
diff --git a/drivers/s390/cio/chsc.c b/drivers/s390/cio/chsc.c
index 940e725bde1e..11674698b36d 100644
--- a/drivers/s390/cio/chsc.c
+++ b/drivers/s390/cio/chsc.c
@@ -95,12 +95,13 @@ struct chsc_ssd_area {
 int chsc_get_ssd_info(struct subchannel_id schid, struct chsc_ssd_info *ssd)
 {
 	struct chsc_ssd_area *ssd_area;
+	unsigned long flags;
 	int ccode;
 	int ret;
 	int i;
 	int mask;
 
-	spin_lock_irq(&chsc_page_lock);
+	spin_lock_irqsave(&chsc_page_lock, flags);
 	memset(chsc_page, 0, PAGE_SIZE);
 	ssd_area = chsc_page;
 	ssd_area->request.length = 0x0010;
@@ -144,7 +145,7 @@ int chsc_get_ssd_info(struct subchannel_id schid, struct chsc_ssd_info *ssd)
 			ssd->fla[i] = ssd_area->fla[i];
 	}
 out:
-	spin_unlock_irq(&chsc_page_lock);
+	spin_unlock_irqrestore(&chsc_page_lock, flags);
 	return ret;
 }
 
@@ -832,9 +833,10 @@ int __chsc_do_secm(struct channel_subsystem *css, int enable)
 		u32 fmt : 4;
 		u32 : 16;
 	} __attribute__ ((packed)) *secm_area;
+	unsigned long flags;
 	int ret, ccode;
 
-	spin_lock_irq(&chsc_page_lock);
+	spin_lock_irqsave(&chsc_page_lock, flags);
 	memset(chsc_page, 0, PAGE_SIZE);
 	secm_area = chsc_page;
 	secm_area->request.length = 0x0050;
@@ -864,7 +866,7 @@ int __chsc_do_secm(struct channel_subsystem *css, int enable)
 		CIO_CRW_EVENT(2, "chsc: secm failed (rc=%04x)\n",
 			      secm_area->response.code);
 out:
-	spin_unlock_irq(&chsc_page_lock);
+	spin_unlock_irqrestore(&chsc_page_lock, flags);
 	return ret;
 }
 
@@ -992,6 +994,7 @@ chsc_initialize_cmg_chars(struct channel_path *chp, u8 cmcv,
 
 int chsc_get_channel_measurement_chars(struct channel_path *chp)
 {
+	unsigned long flags;
 	int ccode, ret;
 
 	struct {
@@ -1021,7 +1024,7 @@ int chsc_get_channel_measurement_chars(struct channel_path *chp)
 	if (!css_chsc_characteristics.scmc || !css_chsc_characteristics.secm)
 		return -EINVAL;
 
-	spin_lock_irq(&chsc_page_lock);
+	spin_lock_irqsave(&chsc_page_lock, flags);
 	memset(chsc_page, 0, PAGE_SIZE);
 	scmc_area = chsc_page;
 	scmc_area->request.length = 0x0010;
@@ -1053,7 +1056,7 @@ int chsc_get_channel_measurement_chars(struct channel_path *chp)
 	chsc_initialize_cmg_chars(chp, scmc_area->cmcv,
 				  (struct cmg_chars *) &scmc_area->data);
 out:
-	spin_unlock_irq(&chsc_page_lock);
+	spin_unlock_irqrestore(&chsc_page_lock, flags);
 	return ret;
 }
 
@@ -1134,6 +1137,7 @@ struct css_chsc_char css_chsc_characteristics;
 int __init
 chsc_determine_css_characteristics(void)
 {
+	unsigned long flags;
 	int result;
 	struct {
 		struct chsc_header request;
@@ -1146,7 +1150,7 @@ chsc_determine_css_characteristics(void)
 		u32 chsc_char[508];
 	} __attribute__ ((packed)) *scsc_area;
 
-	spin_lock_irq(&chsc_page_lock);
+	spin_lock_irqsave(&chsc_page_lock, flags);
 	memset(chsc_page, 0, PAGE_SIZE);
 	scsc_area = chsc_page;
 	scsc_area->request.length = 0x0010;
@@ -1168,7 +1172,7 @@ chsc_determine_css_characteristics(void)
 		CIO_CRW_EVENT(2, "chsc: scsc failed (rc=%04x)\n",
 			      scsc_area->response.code);
 exit:
-	spin_unlock_irq(&chsc_page_lock);
+	spin_unlock_irqrestore(&chsc_page_lock, flags);
 	return result;
 }
 
diff --git a/drivers/scsi/cxlflash/main.c b/drivers/scsi/cxlflash/main.c
index 661bb94e2548..228b99ee0483 100644
--- a/drivers/scsi/cxlflash/main.c
+++ b/drivers/scsi/cxlflash/main.c
@@ -823,17 +823,6 @@ static void notify_shutdown(struct cxlflash_cfg *cfg, bool wait)
 }
 
 /**
- * cxlflash_shutdown() - shutdown handler
- * @pdev:	PCI device associated with the host.
- */
-static void cxlflash_shutdown(struct pci_dev *pdev)
-{
-	struct cxlflash_cfg *cfg = pci_get_drvdata(pdev);
-
-	notify_shutdown(cfg, false);
-}
-
-/**
  * cxlflash_remove() - PCI entry point to tear down host
  * @pdev:	PCI device associated with the host.
  *
@@ -844,6 +833,11 @@ static void cxlflash_remove(struct pci_dev *pdev)
 	struct cxlflash_cfg *cfg = pci_get_drvdata(pdev);
 	ulong lock_flags;
 
+	if (!pci_is_enabled(pdev)) {
+		pr_debug("%s: Device is disabled\n", __func__);
+		return;
+	}
+
 	/* If a Task Management Function is active, wait for it to complete
 	 * before continuing with remove.
 	 */
@@ -2685,7 +2679,7 @@ static struct pci_driver cxlflash_driver = {
 	.id_table = cxlflash_pci_table,
 	.probe = cxlflash_probe,
 	.remove = cxlflash_remove,
-	.shutdown = cxlflash_shutdown,
+	.shutdown = cxlflash_remove,
 	.err_handler = &cxlflash_err_handler,
 };
 
diff --git a/drivers/scsi/mpt3sas/mpt3sas_scsih.c b/drivers/scsi/mpt3sas/mpt3sas_scsih.c
index cd91a684c945..4cb79902e7a8 100644
--- a/drivers/scsi/mpt3sas/mpt3sas_scsih.c
+++ b/drivers/scsi/mpt3sas/mpt3sas_scsih.c
@@ -4701,7 +4701,7 @@ _scsih_io_done(struct MPT3SAS_ADAPTER *ioc, u16 smid, u8 msix_index, u32 reply)
 			    le16_to_cpu(mpi_reply->DevHandle));
 		mpt3sas_trigger_scsi(ioc, data.skey, data.asc, data.ascq);
 
-		if (!(ioc->logging_level & MPT_DEBUG_REPLY) &&
+		if ((ioc->logging_level & MPT_DEBUG_REPLY) &&
 		     ((scmd->sense_buffer[2] == UNIT_ATTENTION) ||
 		     (scmd->sense_buffer[2] == MEDIUM_ERROR) ||
 		     (scmd->sense_buffer[2] == HARDWARE_ERROR)))
diff --git a/drivers/spi/spi-fsl-dspi.c b/drivers/spi/spi-fsl-dspi.c
index 9e9dadb52b3d..eec5e3f6e06b 100644
--- a/drivers/spi/spi-fsl-dspi.c
+++ b/drivers/spi/spi-fsl-dspi.c
@@ -760,7 +760,6 @@ static int dspi_remove(struct platform_device *pdev)
 	/* Disconnect from the SPI framework */
 	clk_disable_unprepare(dspi->clk);
 	spi_unregister_master(dspi->master);
-	spi_master_put(dspi->master);
 
 	return 0;
 }
diff --git a/drivers/staging/android/ion/Kconfig b/drivers/staging/android/ion/Kconfig
index 19c1572f1525..800245eac390 100644
--- a/drivers/staging/android/ion/Kconfig
+++ b/drivers/staging/android/ion/Kconfig
@@ -36,6 +36,7 @@ config ION_TEGRA
 config ION_HISI
 	tristate "Ion for Hisilicon"
 	depends on ARCH_HISI && ION
+	select ION_OF
 	help
 	  Choose this option if you wish to use ion on Hisilicon Platform.
 
diff --git a/drivers/staging/ks7010/ks_hostif.c b/drivers/staging/ks7010/ks_hostif.c
index a8822fe2bd60..f4cee811cabd 100644
--- a/drivers/staging/ks7010/ks_hostif.c
+++ b/drivers/staging/ks7010/ks_hostif.c
@@ -69,16 +69,20 @@ inline u32 get_DWORD(struct ks_wlan_private *priv)
 	return data;
 }
 
-void ks_wlan_hw_wakeup_task(struct work_struct *work)
+static void ks_wlan_hw_wakeup_task(struct work_struct *work)
 {
 	struct ks_wlan_private *priv =
 	    container_of(work, struct ks_wlan_private, ks_wlan_wakeup_task);
 	int ps_status = atomic_read(&priv->psstatus.status);
+	long time_left;
 
 	if (ps_status == PS_SNOOZE) {
 		ks_wlan_hw_wakeup_request(priv);
-		if (!wait_for_completion_interruptible_timeout(&priv->psstatus.wakeup_wait, HZ / 50)) {	/* 20ms timeout */
-			DPRINTK(1, "wake up timeout !!!\n");
+		time_left = wait_for_completion_interruptible_timeout(
+				&priv->psstatus.wakeup_wait,
+				msecs_to_jiffies(20));
+		if (time_left <= 0) {
+			DPRINTK(1, "wake up timeout or interrupted !!!\n");
 			schedule_work(&priv->ks_wlan_wakeup_task);
 			return;
 		}
@@ -1505,7 +1509,7 @@ void hostif_infrastructure_set_request(struct ks_wlan_private *priv)
 	ks_wlan_hw_tx(priv, pp, hif_align_size(sizeof(*pp)), NULL, NULL, NULL);
 }
 
-void hostif_infrastructure_set2_request(struct ks_wlan_private *priv)
+static void hostif_infrastructure_set2_request(struct ks_wlan_private *priv)
 {
 	struct hostif_infrastructure_set2_request_t *pp;
 	uint16_t capability;
diff --git a/drivers/staging/rtl8188eu/core/rtw_cmd.c b/drivers/staging/rtl8188eu/core/rtw_cmd.c
index 77485235c615..32d3a9c07aa3 100644
--- a/drivers/staging/rtl8188eu/core/rtw_cmd.c
+++ b/drivers/staging/rtl8188eu/core/rtw_cmd.c
@@ -670,13 +670,13 @@ u8 rtw_addbareq_cmd(struct adapter *padapter, u8 tid, u8 *addr)
 	u8	res = _SUCCESS;
 
 
-	ph2c = kzalloc(sizeof(struct cmd_obj), GFP_KERNEL);
+	ph2c = kzalloc(sizeof(struct cmd_obj), GFP_ATOMIC);
 	if (!ph2c) {
 		res = _FAIL;
 		goto exit;
 	}
 
-	paddbareq_parm = kzalloc(sizeof(struct addBaReq_parm), GFP_KERNEL);
+	paddbareq_parm = kzalloc(sizeof(struct addBaReq_parm), GFP_ATOMIC);
 	if (!paddbareq_parm) {
 		kfree(ph2c);
 		res = _FAIL;
diff --git a/drivers/staging/sm750fb/ddk750_mode.c b/drivers/staging/sm750fb/ddk750_mode.c
index ccb4e067661a..e29d4bd5dcec 100644
--- a/drivers/staging/sm750fb/ddk750_mode.c
+++ b/drivers/staging/sm750fb/ddk750_mode.c
@@ -63,7 +63,7 @@ static unsigned long displayControlAdjust_SM750LE(mode_parameter_t *pModeParam,
 	dispControl |= (CRT_DISPLAY_CTRL_CRTSELECT | CRT_DISPLAY_CTRL_RGBBIT);
 
 	/* Set bit 14 of display controller */
-	dispControl = DISPLAY_CTRL_CLOCK_PHASE;
+	dispControl |= DISPLAY_CTRL_CLOCK_PHASE;
 
 	POKE32(CRT_DISPLAY_CTRL, dispControl);
 
diff --git a/drivers/uio/uio_dmem_genirq.c b/drivers/uio/uio_dmem_genirq.c
index 915facbf552e..e1134a4d97f3 100644
--- a/drivers/uio/uio_dmem_genirq.c
+++ b/drivers/uio/uio_dmem_genirq.c
@@ -229,7 +229,7 @@ static int uio_dmem_genirq_probe(struct platform_device *pdev)
 		++uiomem;
 	}
 
-	priv->dmem_region_start = i;
+	priv->dmem_region_start = uiomem - &uioinfo->mem[0];
 	priv->num_dmem_regions = pdata->num_dynamic_regions;
 
 	for (i = 0; i < pdata->num_dynamic_regions; ++i) {
diff --git a/fs/9p/acl.c b/fs/9p/acl.c
index 5b6a1743ea17..b3c2cc79c20d 100644
--- a/fs/9p/acl.c
+++ b/fs/9p/acl.c
@@ -276,32 +276,26 @@ static int v9fs_xattr_set_acl(const struct xattr_handler *handler,
 	switch (handler->flags) {
 	case ACL_TYPE_ACCESS:
 		if (acl) {
-			umode_t mode = inode->i_mode;
-			retval = posix_acl_equiv_mode(acl, &mode);
-			if (retval < 0)
+			struct iattr iattr;
+
+			retval = posix_acl_update_mode(inode, &iattr.ia_mode, &acl);
+			if (retval)
 				goto err_out;
-			else {
-				struct iattr iattr;
-				if (retval == 0) {
-					/*
-					 * ACL can be represented
-					 * by the mode bits. So don't
-					 * update ACL.
-					 */
-					acl = NULL;
-					value = NULL;
-					size = 0;
-				}
-				/* Updte the mode bits */
-				iattr.ia_mode = ((mode & S_IALLUGO) |
-						 (inode->i_mode & ~S_IALLUGO));
-				iattr.ia_valid = ATTR_MODE;
-				/* FIXME should we update ctime ?
-				 * What is the following setxattr update the
-				 * mode ?
+			if (!acl) {
+				/*
+				 * ACL can be represented
+				 * by the mode bits. So don't
+				 * update ACL.
 				 */
-				v9fs_vfs_setattr_dotl(dentry, &iattr);
+				value = NULL;
+				size = 0;
 			}
+			iattr.ia_valid = ATTR_MODE;
+			/* FIXME should we update ctime ?
+			 * What is the following setxattr update the
+			 * mode ?
+			 */
+			v9fs_vfs_setattr_dotl(dentry, &iattr);
 		}
 		break;
 	case ACL_TYPE_DEFAULT:
diff --git a/fs/btrfs/acl.c b/fs/btrfs/acl.c
index 53bb7af4e5f0..247b8dfaf6e5 100644
--- a/fs/btrfs/acl.c
+++ b/fs/btrfs/acl.c
@@ -79,11 +79,9 @@ static int __btrfs_set_acl(struct btrfs_trans_handle *trans,
 	case ACL_TYPE_ACCESS:
 		name = XATTR_NAME_POSIX_ACL_ACCESS;
 		if (acl) {
-			ret = posix_acl_equiv_mode(acl, &inode->i_mode);
-			if (ret < 0)
+			ret = posix_acl_update_mode(inode, &inode->i_mode, &acl);
+			if (ret)
 				return ret;
-			if (ret == 0)
-				acl = NULL;
 		}
 		ret = 0;
 		break;
diff --git a/fs/ceph/acl.c b/fs/ceph/acl.c
index 4f67227f69a5..d0b6b342dff9 100644
--- a/fs/ceph/acl.c
+++ b/fs/ceph/acl.c
@@ -95,11 +95,9 @@ int ceph_set_acl(struct inode *inode, struct posix_acl *acl, int type)
 	case ACL_TYPE_ACCESS:
 		name = XATTR_NAME_POSIX_ACL_ACCESS;
 		if (acl) {
-			ret = posix_acl_equiv_mode(acl, &new_mode);
-			if (ret < 0)
+			ret = posix_acl_update_mode(inode, &new_mode, &acl);
+			if (ret)
 				goto out;
-			if (ret == 0)
-				acl = NULL;
 		}
 		break;
 	case ACL_TYPE_DEFAULT:
diff --git a/fs/ext2/acl.c b/fs/ext2/acl.c
index 42f1d1814083..e725aa0890e0 100644
--- a/fs/ext2/acl.c
+++ b/fs/ext2/acl.c
@@ -190,15 +190,11 @@ ext2_set_acl(struct inode *inode, struct posix_acl *acl, int type)
 		case ACL_TYPE_ACCESS:
 			name_index = EXT2_XATTR_INDEX_POSIX_ACL_ACCESS;
 			if (acl) {
-				error = posix_acl_equiv_mode(acl, &inode->i_mode);
-				if (error < 0)
+				error = posix_acl_update_mode(inode, &inode->i_mode, &acl);
+				if (error)
 					return error;
-				else {
-					inode->i_ctime = CURRENT_TIME_SEC;
-					mark_inode_dirty(inode);
-					if (error == 0)
-						acl = NULL;
-				}
+				inode->i_ctime = CURRENT_TIME_SEC;
+				mark_inode_dirty(inode);
 			}
 			break;
 
diff --git a/fs/ext4/acl.c b/fs/ext4/acl.c
index c6601a476c02..dfa519979038 100644
--- a/fs/ext4/acl.c
+++ b/fs/ext4/acl.c
@@ -193,15 +193,11 @@ __ext4_set_acl(handle_t *handle, struct inode *inode, int type,
 	case ACL_TYPE_ACCESS:
 		name_index = EXT4_XATTR_INDEX_POSIX_ACL_ACCESS;
 		if (acl) {
-			error = posix_acl_equiv_mode(acl, &inode->i_mode);
-			if (error < 0)
+			error = posix_acl_update_mode(inode, &inode->i_mode, &acl);
+			if (error)
 				return error;
-			else {
-				inode->i_ctime = ext4_current_time(inode);
-				ext4_mark_inode_dirty(handle, inode);
-				if (error == 0)
-					acl = NULL;
-			}
+			inode->i_ctime = ext4_current_time(inode);
+			ext4_mark_inode_dirty(handle, inode);
 		}
 		break;
 
diff --git a/fs/f2fs/acl.c b/fs/f2fs/acl.c
index 4dcc9e28dc5c..31344247ce89 100644
--- a/fs/f2fs/acl.c
+++ b/fs/f2fs/acl.c
@@ -210,12 +210,10 @@ static int __f2fs_set_acl(struct inode *inode, int type,
 	case ACL_TYPE_ACCESS:
 		name_index = F2FS_XATTR_INDEX_POSIX_ACL_ACCESS;
 		if (acl) {
-			error = posix_acl_equiv_mode(acl, &inode->i_mode);
-			if (error < 0)
+			error = posix_acl_update_mode(inode, &inode->i_mode, &acl);
+			if (error)
 				return error;
 			set_acl_inode(inode, inode->i_mode);
-			if (error == 0)
-				acl = NULL;
 		}
 		break;
 
diff --git a/fs/gfs2/acl.c b/fs/gfs2/acl.c
index 363ba9e9d8d0..2524807ee070 100644
--- a/fs/gfs2/acl.c
+++ b/fs/gfs2/acl.c
@@ -92,17 +92,11 @@ int __gfs2_set_acl(struct inode *inode, struct posix_acl *acl, int type)
 	if (type == ACL_TYPE_ACCESS) {
 		umode_t mode = inode->i_mode;
 
-		error = posix_acl_equiv_mode(acl, &mode);
-		if (error < 0)
+		error = posix_acl_update_mode(inode, &inode->i_mode, &acl);
+		if (error)
 			return error;
-
-		if (error == 0)
-			acl = NULL;
-
-		if (mode != inode->i_mode) {
-			inode->i_mode = mode;
+		if (mode != inode->i_mode)
 			mark_inode_dirty(inode);
-		}
 	}
 
 	if (acl) {
diff --git a/fs/hfsplus/posix_acl.c b/fs/hfsplus/posix_acl.c
index ab7ea2506b4d..9b92058a1240 100644
--- a/fs/hfsplus/posix_acl.c
+++ b/fs/hfsplus/posix_acl.c
@@ -65,8 +65,8 @@ int hfsplus_set_posix_acl(struct inode *inode, struct posix_acl *acl,
 	case ACL_TYPE_ACCESS:
 		xattr_name = XATTR_NAME_POSIX_ACL_ACCESS;
 		if (acl) {
-			err = posix_acl_equiv_mode(acl, &inode->i_mode);
-			if (err < 0)
+			err = posix_acl_update_mode(inode, &inode->i_mode, &acl);
+			if (err)
 				return err;
 		}
 		err = 0;
diff --git a/fs/jffs2/acl.c b/fs/jffs2/acl.c
index bc2693d56298..2a0f2a1044c1 100644
--- a/fs/jffs2/acl.c
+++ b/fs/jffs2/acl.c
@@ -233,9 +233,10 @@ int jffs2_set_acl(struct inode *inode, struct posix_acl *acl, int type)
 	case ACL_TYPE_ACCESS:
 		xprefix = JFFS2_XPREFIX_ACL_ACCESS;
 		if (acl) {
-			umode_t mode = inode->i_mode;
-			rc = posix_acl_equiv_mode(acl, &mode);
-			if (rc < 0)
+			umode_t mode;
+
+			rc = posix_acl_update_mode(inode, &mode, &acl);
+			if (rc)
 				return rc;
 			if (inode->i_mode != mode) {
 				struct iattr attr;
@@ -247,8 +248,6 @@ int jffs2_set_acl(struct inode *inode, struct posix_acl *acl, int type)
 				if (rc < 0)
 					return rc;
 			}
-			if (rc == 0)
-				acl = NULL;
 		}
 		break;
 	case ACL_TYPE_DEFAULT:
diff --git a/fs/jfs/acl.c b/fs/jfs/acl.c
index 21fa92ba2c19..3a1e1554a4e3 100644
--- a/fs/jfs/acl.c
+++ b/fs/jfs/acl.c
@@ -78,13 +78,11 @@ static int __jfs_set_acl(tid_t tid, struct inode *inode, int type,
 	case ACL_TYPE_ACCESS:
 		ea_name = XATTR_NAME_POSIX_ACL_ACCESS;
 		if (acl) {
-			rc = posix_acl_equiv_mode(acl, &inode->i_mode);
-			if (rc < 0)
+			rc = posix_acl_update_mode(inode, &inode->i_mode, &acl);
+			if (rc)
 				return rc;
 			inode->i_ctime = CURRENT_TIME;
 			mark_inode_dirty(inode);
-			if (rc == 0)
-				acl = NULL;
 		}
 		break;
 	case ACL_TYPE_DEFAULT:
diff --git a/fs/ocfs2/acl.c b/fs/ocfs2/acl.c
index 2162434728c0..164307b99405 100644
--- a/fs/ocfs2/acl.c
+++ b/fs/ocfs2/acl.c
@@ -241,13 +241,11 @@ int ocfs2_set_acl(handle_t *handle,
 	case ACL_TYPE_ACCESS:
 		name_index = OCFS2_XATTR_INDEX_POSIX_ACL_ACCESS;
 		if (acl) {
-			umode_t mode = inode->i_mode;
-			ret = posix_acl_equiv_mode(acl, &mode);
-			if (ret < 0)
-				return ret;
+			umode_t mode;
 
-			if (ret == 0)
-				acl = NULL;
+			ret = posix_acl_update_mode(inode, &mode, &acl);
+			if (ret)
+				return ret;
 
 			ret = ocfs2_acl_set_mode(inode, di_bh,
 						 handle, mode);
diff --git a/fs/orangefs/acl.c b/fs/orangefs/acl.c
index 28f2195cd798..7a3754488312 100644
--- a/fs/orangefs/acl.c
+++ b/fs/orangefs/acl.c
@@ -73,14 +73,11 @@ int orangefs_set_acl(struct inode *inode, struct posix_acl *acl, int type)
 	case ACL_TYPE_ACCESS:
 		name = XATTR_NAME_POSIX_ACL_ACCESS;
 		if (acl) {
-			umode_t mode = inode->i_mode;
-			/*
-			 * can we represent this with the traditional file
-			 * mode permission bits?
-			 */
-			error = posix_acl_equiv_mode(acl, &mode);
-			if (error < 0) {
-				gossip_err("%s: posix_acl_equiv_mode err: %d\n",
+			umode_t mode;
+
+			error = posix_acl_update_mode(inode, &mode, &acl);
+			if (error) {
+				gossip_err("%s: posix_acl_update_mode err: %d\n",
 					   __func__,
 					   error);
 				return error;
@@ -90,8 +87,6 @@ int orangefs_set_acl(struct inode *inode, struct posix_acl *acl, int type)
 				SetModeFlag(orangefs_inode);
 			inode->i_mode = mode;
 			mark_inode_dirty_sync(inode);
-			if (error == 0)
-				acl = NULL;
 		}
 		break;
 	case ACL_TYPE_DEFAULT:
diff --git a/fs/posix_acl.c b/fs/posix_acl.c
index 59d47ab0791a..bfc3ec388322 100644
--- a/fs/posix_acl.c
+++ b/fs/posix_acl.c
@@ -626,6 +626,37 @@ no_mem:
 }
 EXPORT_SYMBOL_GPL(posix_acl_create);
 
+/**
+ * posix_acl_update_mode  -  update mode in set_acl
+ *
+ * Update the file mode when setting an ACL: compute the new file permission
+ * bits based on the ACL.  In addition, if the ACL is equivalent to the new
+ * file mode, set *acl to NULL to indicate that no ACL should be set.
+ *
+ * As with chmod, clear the setgit bit if the caller is not in the owning group
+ * or capable of CAP_FSETID (see inode_change_ok).
+ *
+ * Called from set_acl inode operations.
+ */
+int posix_acl_update_mode(struct inode *inode, umode_t *mode_p,
+			  struct posix_acl **acl)
+{
+	umode_t mode = inode->i_mode;
+	int error;
+
+	error = posix_acl_equiv_mode(*acl, &mode);
+	if (error < 0)
+		return error;
+	if (error == 0)
+		*acl = NULL;
+	if (!in_group_p(inode->i_gid) &&
+	    !capable_wrt_inode_uidgid(inode, CAP_FSETID))
+		mode &= ~S_ISGID;
+	*mode_p = mode;
+	return 0;
+}
+EXPORT_SYMBOL(posix_acl_update_mode);
+
 /*
  * Fix up the uids and gids in posix acl extended attributes in place.
  */
diff --git a/fs/reiserfs/xattr_acl.c b/fs/reiserfs/xattr_acl.c
index dbed42f755e0..27376681c640 100644
--- a/fs/reiserfs/xattr_acl.c
+++ b/fs/reiserfs/xattr_acl.c
@@ -242,13 +242,9 @@ __reiserfs_set_acl(struct reiserfs_transaction_handle *th, struct inode *inode,
 	case ACL_TYPE_ACCESS:
 		name = XATTR_NAME_POSIX_ACL_ACCESS;
 		if (acl) {
-			error = posix_acl_equiv_mode(acl, &inode->i_mode);
-			if (error < 0)
+			error = posix_acl_update_mode(inode, &inode->i_mode, &acl);
+			if (error)
 				return error;
-			else {
-				if (error == 0)
-					acl = NULL;
-			}
 		}
 		break;
 	case ACL_TYPE_DEFAULT:
diff --git a/fs/xfs/xfs_acl.c b/fs/xfs/xfs_acl.c
index b6e527b8eccb..8a0dec89ca56 100644
--- a/fs/xfs/xfs_acl.c
+++ b/fs/xfs/xfs_acl.c
@@ -257,16 +257,11 @@ xfs_set_acl(struct inode *inode, struct posix_acl *acl, int type)
 		return error;
 
 	if (type == ACL_TYPE_ACCESS) {
-		umode_t mode = inode->i_mode;
-		error = posix_acl_equiv_mode(acl, &mode);
-
-		if (error <= 0) {
-			acl = NULL;
-
-			if (error < 0)
-				return error;
-		}
+		umode_t mode;
 
+		error = posix_acl_update_mode(inode, &mode, &acl);
+		if (error)
+			return error;
 		error = xfs_set_mode(inode, mode);
 		if (error)
 			return error;
diff --git a/include/drm/drmP.h b/include/drm/drmP.h
index d3778652e462..988903a59007 100644
--- a/include/drm/drmP.h
+++ b/include/drm/drmP.h
@@ -938,7 +938,8 @@ static inline int drm_debugfs_remove_files(const struct drm_info_list *files,
 #endif
 
 extern struct dma_buf *drm_gem_prime_export(struct drm_device *dev,
-		struct drm_gem_object *obj, int flags);
+					    struct drm_gem_object *obj,
+					    int flags);
 extern int drm_gem_prime_handle_to_fd(struct drm_device *dev,
 		struct drm_file *file_priv, uint32_t handle, uint32_t flags,
 		int *prime_fd);
diff --git a/include/linux/hugetlb.h b/include/linux/hugetlb.h
index c26d4638f665..fe99e6f956e2 100644
--- a/include/linux/hugetlb.h
+++ b/include/linux/hugetlb.h
@@ -450,8 +450,8 @@ static inline pgoff_t basepage_index(struct page *page)
 	return __basepage_index(page);
 }
 
-extern void dissolve_free_huge_pages(unsigned long start_pfn,
-				     unsigned long end_pfn);
+extern int dissolve_free_huge_pages(unsigned long start_pfn,
+				    unsigned long end_pfn);
 static inline bool hugepage_migration_supported(struct hstate *h)
 {
 #ifdef CONFIG_ARCH_ENABLE_HUGEPAGE_MIGRATION
@@ -518,7 +518,7 @@ static inline pgoff_t basepage_index(struct page *page)
 {
 	return page->index;
 }
-#define dissolve_free_huge_pages(s, e)	do {} while (0)
+#define dissolve_free_huge_pages(s, e)	0
 #define hugepage_migration_supported(h)	false
 
 static inline spinlock_t *huge_pte_lockptr(struct hstate *h,
diff --git a/include/linux/libnvdimm.h b/include/linux/libnvdimm.h
index b519e137b9b7..bbfce62a0bd7 100644
--- a/include/linux/libnvdimm.h
+++ b/include/linux/libnvdimm.h
@@ -129,6 +129,8 @@ static inline struct nd_blk_region_desc *to_blk_region_desc(
 }
 
 int nvdimm_bus_add_poison(struct nvdimm_bus *nvdimm_bus, u64 addr, u64 length);
+void nvdimm_clear_from_poison_list(struct nvdimm_bus *nvdimm_bus,
+		phys_addr_t start, unsigned int len);
 struct nvdimm_bus *nvdimm_bus_register(struct device *parent,
 		struct nvdimm_bus_descriptor *nfit_desc);
 void nvdimm_bus_unregister(struct nvdimm_bus *nvdimm_bus);
diff --git a/include/linux/posix_acl.h b/include/linux/posix_acl.h
index d5d3d741f028..bf1046d0397b 100644
--- a/include/linux/posix_acl.h
+++ b/include/linux/posix_acl.h
@@ -93,6 +93,7 @@ extern int set_posix_acl(struct inode *, int, struct posix_acl *);
 extern int posix_acl_chmod(struct inode *, umode_t);
 extern int posix_acl_create(struct inode *, umode_t *, struct posix_acl **,
 		struct posix_acl **);
+extern int posix_acl_update_mode(struct inode *, umode_t *, struct posix_acl **);
 
 extern int simple_set_acl(struct inode *, struct posix_acl *, int);
 extern int simple_acl_create(struct inode *, struct inode *);
diff --git a/kernel/irq/generic-chip.c b/kernel/irq/generic-chip.c
index abd286afbd27..a4775f3451b9 100644
--- a/kernel/irq/generic-chip.c
+++ b/kernel/irq/generic-chip.c
@@ -411,8 +411,29 @@ int irq_map_generic_chip(struct irq_domain *d, unsigned int virq,
 }
 EXPORT_SYMBOL_GPL(irq_map_generic_chip);
 
+static void irq_unmap_generic_chip(struct irq_domain *d, unsigned int virq)
+{
+	struct irq_data *data = irq_domain_get_irq_data(d, virq);
+	struct irq_domain_chip_generic *dgc = d->gc;
+	unsigned int hw_irq = data->hwirq;
+	struct irq_chip_generic *gc;
+	int irq_idx;
+
+	gc = irq_get_domain_generic_chip(d, hw_irq);
+	if (!gc)
+		return;
+
+	irq_idx = hw_irq % dgc->irqs_per_chip;
+
+	clear_bit(irq_idx, &gc->installed);
+	irq_domain_set_info(d, virq, hw_irq, &no_irq_chip, NULL, NULL, NULL,
+			    NULL);
+
+}
+
 struct irq_domain_ops irq_generic_chip_ops = {
 	.map	= irq_map_generic_chip,
+	.unmap  = irq_unmap_generic_chip,
 	.xlate	= irq_domain_xlate_onetwocell,
 };
 EXPORT_SYMBOL_GPL(irq_generic_chip_ops);
diff --git a/mm/hugetlb.c b/mm/hugetlb.c
index 603bdd01ec2c..770d83eb3f48 100644
--- a/mm/hugetlb.c
+++ b/mm/hugetlb.c
@@ -1437,22 +1437,32 @@ static int free_pool_huge_page(struct hstate *h, nodemask_t *nodes_allowed,
 
 /*
  * Dissolve a given free hugepage into free buddy pages. This function does
- * nothing for in-use (including surplus) hugepages.
+ * nothing for in-use (including surplus) hugepages. Returns -EBUSY if the
+ * number of free hugepages would be reduced below the number of reserved
+ * hugepages.
  */
-static void dissolve_free_huge_page(struct page *page)
+static int dissolve_free_huge_page(struct page *page)
 {
+	int rc = 0;
+
 	spin_lock(&hugetlb_lock);
 	if (PageHuge(page) && !page_count(page)) {
 		struct page *head = compound_head(page);
 		struct hstate *h = page_hstate(head);
 		int nid = page_to_nid(head);
+		if (h->free_huge_pages - h->resv_huge_pages == 0) {
+			rc = -EBUSY;
+			goto out;
+		}
 		list_del(&head->lru);
 		h->free_huge_pages--;
 		h->free_huge_pages_node[nid]--;
 		h->max_huge_pages--;
 		update_and_free_page(h, head);
 	}
+out:
 	spin_unlock(&hugetlb_lock);
+	return rc;
 }
 
 /*
@@ -1460,16 +1470,28 @@ static void dissolve_free_huge_page(struct page *page)
  * make specified memory blocks removable from the system.
  * Note that this will dissolve a free gigantic hugepage completely, if any
  * part of it lies within the given range.
+ * Also note that if dissolve_free_huge_page() returns with an error, all
+ * free hugepages that were dissolved before that error are lost.
  */
-void dissolve_free_huge_pages(unsigned long start_pfn, unsigned long end_pfn)
+int dissolve_free_huge_pages(unsigned long start_pfn, unsigned long end_pfn)
 {
 	unsigned long pfn;
+	struct page *page;
+	int rc = 0;
 
 	if (!hugepages_supported())
-		return;
+		return rc;
+
+	for (pfn = start_pfn; pfn < end_pfn; pfn += 1 << minimum_order) {
+		page = pfn_to_page(pfn);
+		if (PageHuge(page) && !page_count(page)) {
+			rc = dissolve_free_huge_page(page);
+			if (rc)
+				break;
+		}
+	}
 
-	for (pfn = start_pfn; pfn < end_pfn; pfn += 1 << minimum_order)
-		dissolve_free_huge_page(pfn_to_page(pfn));
+	return rc;
 }
 
 /*
diff --git a/mm/memory_hotplug.c b/mm/memory_hotplug.c
index 9d29ba0f7192..962927309b6e 100644
--- a/mm/memory_hotplug.c
+++ b/mm/memory_hotplug.c
@@ -1945,7 +1945,9 @@ repeat:
 	 * dissolve free hugepages in the memory block before doing offlining
 	 * actually in order to make hugetlbfs's object counting consistent.
 	 */
-	dissolve_free_huge_pages(start_pfn, end_pfn);
+	ret = dissolve_free_huge_pages(start_pfn, end_pfn);
+	if (ret)
+		goto failed_removal;
 	/* check again */
 	offlined_pages = check_pages_isolated(start_pfn, end_pfn);
 	if (offlined_pages < 0) {
diff --git a/sound/soc/intel/boards/bxt_da7219_max98357a.c b/sound/soc/intel/boards/bxt_da7219_max98357a.c
index 3774b117d365..49b65d481949 100644
--- a/sound/soc/intel/boards/bxt_da7219_max98357a.c
+++ b/sound/soc/intel/boards/bxt_da7219_max98357a.c
@@ -255,7 +255,7 @@ static struct snd_soc_ops broxton_da7219_ops = {
 /* broxton digital audio interface glue - connects codec <--> CPU */
 static struct snd_soc_dai_link broxton_dais[] = {
 	/* Front End DAI links */
-	[BXT_DPCM_AUDIO_PB]
+	[BXT_DPCM_AUDIO_PB] =
 	{
 		.name = "Bxt Audio Port",
 		.stream_name = "Audio",
@@ -271,7 +271,7 @@ static struct snd_soc_dai_link broxton_dais[] = {
 		.dpcm_playback = 1,
 		.ops = &broxton_da7219_fe_ops,
 	},
-	[BXT_DPCM_AUDIO_CP]
+	[BXT_DPCM_AUDIO_CP] =
 	{
 		.name = "Bxt Audio Capture Port",
 		.stream_name = "Audio Record",
@@ -286,7 +286,7 @@ static struct snd_soc_dai_link broxton_dais[] = {
 		.dpcm_capture = 1,
 		.ops = &broxton_da7219_fe_ops,
 	},
-	[BXT_DPCM_AUDIO_REF_CP]
+	[BXT_DPCM_AUDIO_REF_CP] =
 	{
 		.name = "Bxt Audio Reference cap",
 		.stream_name = "Refcap",
@@ -300,7 +300,7 @@ static struct snd_soc_dai_link broxton_dais[] = {
 		.nonatomic = 1,
 		.dynamic = 1,
 	},
-	[BXT_DPCM_AUDIO_HDMI1_PB]
+	[BXT_DPCM_AUDIO_HDMI1_PB] =
 	{
 		.name = "Bxt HDMI Port1",
 		.stream_name = "Hdmi1",
@@ -313,7 +313,7 @@ static struct snd_soc_dai_link broxton_dais[] = {
 		.nonatomic = 1,
 		.dynamic = 1,
 	},
-	[BXT_DPCM_AUDIO_HDMI2_PB]
+	[BXT_DPCM_AUDIO_HDMI2_PB] =
 	{
 		.name = "Bxt HDMI Port2",
 		.stream_name = "Hdmi2",
@@ -326,7 +326,7 @@ static struct snd_soc_dai_link broxton_dais[] = {
 		.nonatomic = 1,
 		.dynamic = 1,
 	},
-	[BXT_DPCM_AUDIO_HDMI3_PB]
+	[BXT_DPCM_AUDIO_HDMI3_PB] =
 	{
 		.name = "Bxt HDMI Port3",
 		.stream_name = "Hdmi3",
diff --git a/sound/soc/intel/boards/bxt_rt298.c b/sound/soc/intel/boards/bxt_rt298.c
index 253d7bfbf511..d610bdca1608 100644
--- a/sound/soc/intel/boards/bxt_rt298.c
+++ b/sound/soc/intel/boards/bxt_rt298.c
@@ -271,7 +271,7 @@ static const struct snd_soc_ops broxton_rt286_fe_ops = {
 /* broxton digital audio interface glue - connects codec <--> CPU */
 static struct snd_soc_dai_link broxton_rt298_dais[] = {
 	/* Front End DAI links */
-	[BXT_DPCM_AUDIO_PB]
+	[BXT_DPCM_AUDIO_PB] =
 	{
 		.name = "Bxt Audio Port",
 		.stream_name = "Audio",
@@ -286,7 +286,7 @@ static struct snd_soc_dai_link broxton_rt298_dais[] = {
 		.dpcm_playback = 1,
 		.ops = &broxton_rt286_fe_ops,
 	},
-	[BXT_DPCM_AUDIO_CP]
+	[BXT_DPCM_AUDIO_CP] =
 	{
 		.name = "Bxt Audio Capture Port",
 		.stream_name = "Audio Record",
@@ -300,7 +300,7 @@ static struct snd_soc_dai_link broxton_rt298_dais[] = {
 		.dpcm_capture = 1,
 		.ops = &broxton_rt286_fe_ops,
 	},
-	[BXT_DPCM_AUDIO_REF_CP]
+	[BXT_DPCM_AUDIO_REF_CP] =
 	{
 		.name = "Bxt Audio Reference cap",
 		.stream_name = "refcap",
@@ -313,7 +313,7 @@ static struct snd_soc_dai_link broxton_rt298_dais[] = {
 		.nonatomic = 1,
 		.dynamic = 1,
 	},
-	[BXT_DPCM_AUDIO_DMIC_CP]
+	[BXT_DPCM_AUDIO_DMIC_CP] =
 	{
 		.name = "Bxt Audio DMIC cap",
 		.stream_name = "dmiccap",
@@ -327,7 +327,7 @@ static struct snd_soc_dai_link broxton_rt298_dais[] = {
 		.dynamic = 1,
 		.ops = &broxton_dmic_ops,
 	},
-	[BXT_DPCM_AUDIO_HDMI1_PB]
+	[BXT_DPCM_AUDIO_HDMI1_PB] =
 	{
 		.name = "Bxt HDMI Port1",
 		.stream_name = "Hdmi1",
@@ -340,7 +340,7 @@ static struct snd_soc_dai_link broxton_rt298_dais[] = {
 		.nonatomic = 1,
 		.dynamic = 1,
 	},
-	[BXT_DPCM_AUDIO_HDMI2_PB]
+	[BXT_DPCM_AUDIO_HDMI2_PB] =
 	{
 		.name = "Bxt HDMI Port2",
 		.stream_name = "Hdmi2",
@@ -353,7 +353,7 @@ static struct snd_soc_dai_link broxton_rt298_dais[] = {
 		.nonatomic = 1,
 		.dynamic = 1,
 	},
-	[BXT_DPCM_AUDIO_HDMI3_PB]
+	[BXT_DPCM_AUDIO_HDMI3_PB] =
 	{
 		.name = "Bxt HDMI Port3",
 		.stream_name = "Hdmi3",
diff --git a/sound/soc/soc-dapm.c b/sound/soc/soc-dapm.c
index d908ff8f9755..801082fdc3e0 100644
--- a/sound/soc/soc-dapm.c
+++ b/sound/soc/soc-dapm.c
@@ -823,6 +823,7 @@ static int dapm_create_or_share_kcontrol(struct snd_soc_dapm_widget *w,
 			case snd_soc_dapm_switch:
 			case snd_soc_dapm_mixer:
 			case snd_soc_dapm_pga:
+			case snd_soc_dapm_out_drv:
 				wname_in_long_name = true;
 				kcname_in_long_name = true;
 				break;
@@ -3049,6 +3050,9 @@ int snd_soc_dapm_get_volsw(struct snd_kcontrol *kcontrol,
 	}
 	mutex_unlock(&card->dapm_mutex);
 
+	if (ret)
+		return ret;
+
 	if (invert)
 		ucontrol->value.integer.value[0] = max - val;
 	else
@@ -3200,7 +3204,7 @@ int snd_soc_dapm_put_enum_double(struct snd_kcontrol *kcontrol,
 	if (e->shift_l != e->shift_r) {
 		if (item[1] > e->items)
 			return -EINVAL;
-		val |= snd_soc_enum_item_to_val(e, item[1]) << e->shift_l;
+		val |= snd_soc_enum_item_to_val(e, item[1]) << e->shift_r;
 		mask |= e->mask << e->shift_r;
 	}
 
diff --git a/sound/soc/soc-topology.c b/sound/soc/soc-topology.c
index ee7f15aa46fc..34069076bf8e 100644
--- a/sound/soc/soc-topology.c
+++ b/sound/soc/soc-topology.c
@@ -1475,6 +1475,7 @@ widget:
 	if (widget == NULL) {
 		dev_err(tplg->dev, "ASoC: failed to create widget %s controls\n",
 			w->name);
+		ret = -ENOMEM;
 		goto hdr_err;
 	}
 
diff --git a/tools/perf/perf-sys.h b/tools/perf/perf-sys.h
index 7ed72a475c57..e4b717e9eb6c 100644
--- a/tools/perf/perf-sys.h
+++ b/tools/perf/perf-sys.h
@@ -20,7 +20,6 @@
 #endif
 
 #ifdef __powerpc__
-#include "../../arch/powerpc/include/uapi/asm/unistd.h"
 #define CPUINFO_PROC	{"cpu"}
 #endif
 
diff --git a/tools/perf/ui/browsers/hists.c b/tools/perf/ui/browsers/hists.c
index 13d414384739..7aee954b307f 100644
--- a/tools/perf/ui/browsers/hists.c
+++ b/tools/perf/ui/browsers/hists.c
@@ -1091,7 +1091,6 @@ static int __hpp__slsmg_color_printf(struct perf_hpp *hpp, const char *fmt, ...)
 	ret = scnprintf(hpp->buf, hpp->size, fmt, len, percent);
 	ui_browser__printf(arg->b, "%s", hpp->buf);
 
-	advance_hpp(hpp, ret);
 	return ret;
 }
 
@@ -2046,6 +2045,7 @@ void hist_browser__init(struct hist_browser *browser,
 			struct hists *hists)
 {
 	struct perf_hpp_fmt *fmt;
+	struct perf_hpp_list_node *node;
 
 	browser->hists			= hists;
 	browser->b.refresh		= hist_browser__refresh;
@@ -2058,6 +2058,11 @@ void hist_browser__init(struct hist_browser *browser,
 		perf_hpp__reset_width(fmt, hists);
 		++browser->b.columns;
 	}
+	/* hierarchy entries have their own hpp list */
+	list_for_each_entry(node, &hists->hpp_formats, list) {
+		perf_hpp_list__for_each_format(&node->hpp, fmt)
+			perf_hpp__reset_width(fmt, hists);
+	}
 }
 
 struct hist_browser *hist_browser__new(struct hists *hists)
diff --git a/tools/perf/ui/stdio/hist.c b/tools/perf/ui/stdio/hist.c
index f04a63112079..d0cae75408ff 100644
--- a/tools/perf/ui/stdio/hist.c
+++ b/tools/perf/ui/stdio/hist.c
@@ -628,14 +628,6 @@ hists__fprintf_hierarchy_headers(struct hists *hists,
 				 struct perf_hpp *hpp,
 				 FILE *fp)
 {
-	struct perf_hpp_list_node *fmt_node;
-	struct perf_hpp_fmt *fmt;
-
-	list_for_each_entry(fmt_node, &hists->hpp_formats, list) {
-		perf_hpp_list__for_each_format(&fmt_node->hpp, fmt)
-			perf_hpp__reset_width(fmt, hists);
-	}
-
 	return print_hierarchy_header(hists, hpp, symbol_conf.field_sep, fp);
 }
 
@@ -714,6 +706,7 @@ size_t hists__fprintf(struct hists *hists, bool show_header, int max_rows,
 		      bool use_callchain)
 {
 	struct perf_hpp_fmt *fmt;
+	struct perf_hpp_list_node *node;
 	struct rb_node *nd;
 	size_t ret = 0;
 	const char *sep = symbol_conf.field_sep;
@@ -726,6 +719,11 @@ size_t hists__fprintf(struct hists *hists, bool show_header, int max_rows,
 
 	hists__for_each_format(hists, fmt)
 		perf_hpp__reset_width(fmt, hists);
+	/* hierarchy entries have their own hpp list */
+	list_for_each_entry(node, &hists->hpp_formats, list) {
+		perf_hpp_list__for_each_format(&node->hpp, fmt)
+			perf_hpp__reset_width(fmt, hists);
+	}
 
 	if (symbol_conf.col_width_list_str)
 		perf_hpp__set_user_width(symbol_conf.col_width_list_str);
diff --git a/tools/perf/util/data-convert-bt.c b/tools/perf/util/data-convert-bt.c
index 4f979bb27b6c..7123f4de32cc 100644
--- a/tools/perf/util/data-convert-bt.c
+++ b/tools/perf/util/data-convert-bt.c
@@ -437,7 +437,7 @@ add_bpf_output_values(struct bt_ctf_event_class *event_class,
 	int ret;
 
 	if (nr_elements * sizeof(u32) != raw_size)
-		pr_warning("Incorrect raw_size (%u) in bpf output event, skip %lu bytes\n",
+		pr_warning("Incorrect raw_size (%u) in bpf output event, skip %zu bytes\n",
 			   raw_size, nr_elements * sizeof(u32) - raw_size);
 
 	len_type = bt_ctf_event_class_get_field_by_name(event_class, "raw_len");
diff --git a/tools/perf/util/symbol-elf.c b/tools/perf/util/symbol-elf.c
index a811c13a74d6..f77b3167585c 100644
--- a/tools/perf/util/symbol-elf.c
+++ b/tools/perf/util/symbol-elf.c
@@ -1113,9 +1113,8 @@ new_symbol:
 	 * For misannotated, zeroed, ASM function sizes.
 	 */
 	if (nr > 0) {
-		if (!symbol_conf.allow_aliases)
-			symbols__fixup_duplicate(&dso->symbols[map->type]);
 		symbols__fixup_end(&dso->symbols[map->type]);
+		symbols__fixup_duplicate(&dso->symbols[map->type]);
 		if (kmap) {
 			/*
 			 * We need to fixup this here too because we create new
diff --git a/tools/perf/util/symbol.c b/tools/perf/util/symbol.c
index 37e8d20ae03e..f29f336ed17b 100644
--- a/tools/perf/util/symbol.c
+++ b/tools/perf/util/symbol.c
@@ -152,6 +152,9 @@ void symbols__fixup_duplicate(struct rb_root *symbols)
 	struct rb_node *nd;
 	struct symbol *curr, *next;
 
+	if (symbol_conf.allow_aliases)
+		return;
+
 	nd = rb_first(symbols);
 
 	while (nd) {
@@ -1234,8 +1237,8 @@ int __dso__load_kallsyms(struct dso *dso, const char *filename,
 	if (kallsyms__delta(map, filename, &delta))
 		return -1;
 
-	symbols__fixup_duplicate(&dso->symbols[map->type]);
 	symbols__fixup_end(&dso->symbols[map->type]);
+	symbols__fixup_duplicate(&dso->symbols[map->type]);
 
 	if (dso->kernel == DSO_TYPE_GUEST_KERNEL)
 		dso->symtab_type = DSO_BINARY_TYPE__GUEST_KALLSYMS;

^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: Linux 4.8.6
  2016-10-31 12:47 Linux 4.8.6 Greg KH
  2016-10-31 12:47 ` Greg KH
@ 2016-10-31 20:26 ` Levin, Alexander
  2016-11-14  7:10   ` Greg KH
  1 sibling, 1 reply; 4+ messages in thread
From: Levin, Alexander @ 2016-10-31 20:26 UTC (permalink / raw)
  To: Greg KH; +Cc: linux-kernel, Andrew Morton, torvalds, stable, lwn, Jiri Slaby

On Mon, Oct 31, 2016 at 06:47:10AM -0600, Greg KH wrote:
> I'm announcing the release of the 4.8.6 kernel.

Hey Greg,

I've put more work into improving my filters to find stable commits upstream.

The list below, taken from v4.8..v4.9-rc2 commits contains mostly commits that aren't tagged for stable, but should probably be there. In this case, it also includes one CVE fix that falls under that description.

Note that I've filtered "prerequisite" commits out to leave only the actual commits we're interested in, so for example - for the first commit on the list you'd need either bbdc070 ("drm/i915: rename macro parameter(ring) to (engine)") or backport those changes yourself. If the list below looks good to you I can send you a pull request with a complete branch.

5ac9793bf9f43cb4d8ecdcc521be1ba87057841a (v4.9-rc1) drm/i915: Fix use of engine->index for register offset
25dc556a2a0a2747cf3651462076d86410bd6b90 (v4.9-rc1) drm/i915: Wrap drm_gem_object_reference in i915_gem_object_get
1f061316cf556fe07804ca2eb30f7807cffc3f53 (v4.9-rc1) drm/i915: Call intel_fbc_pre_update() after pinning the new pageflip
27399eeec28ff33a0c5216a80cf57cbc6ba3c15e (v4.9-rc1) drm/i915: Use correct index for backtracking HUNG semaphores
c83ed4c9dbb358b9e7707486e167e940d48bfeed (v4.9-rc2) ubifs: Abort readdir upon error
5ab57c7020697942ea15f45ad14c69cecb164329 (v4.9-rc1) drm/i915: Flush logical context image out to memory upon suspend
c13d87ea53851880ab117f23a3e4fde1645da472 (v4.9-rc1) drm/i915: Wait on external rendering for GEM objects
4ba1eeeb609f93f904dadf5e304345ea10fb543a (v4.9-rc1) HID: sony: disable descriptor fixup for FutureMax Dance Mat
7d3ea5c1e958e4cbabf170b8dee42b5aeac7d530 (v4.9-rc1) HID: Add a new Saitek mouse device ID (RAT 9)
4e9121e6b4f9fee47e6746bfdb6745951b7a9b20 (v4.9-rc1) drm/i915: Fix copy_to_user usage for pipe_crc
a168f5b3f1797d6704d2edb36a3674e663154f80 (v4.9-rc1) drm/i915: Don't mark PCH underrun reporting as disabled for transcoder B/C on LPT-H
2eab9b1a3006b4f7bf49c55ce23943170a0068db (v4.9-rc1) dmaengine: ioatdma: fix uninitialized array usage
7f2084fa55e6cb61f61b4224d4a8bafaeee55f9f (v4.9-rc1) [kbuild] handle exports in lib-y objects reliably
dc0a50a8411e2a3a3ca5a9d97581bbc5420c2687 (v4.9-rc1) EDAC, amd64: Fix channel decode on Fam15hMod60h systems
1752371e1335a3a820ed7b64a2b8386ff3157751 (v4.9-rc1) ARM: dts: rockchip: add the panel power supply for rk3288-evb board with act8846 pmu
ea6bead7ebd99bab1fcc5728beb4c3a791886d77 (v4.9-rc1) gpu: ipu-v3: Fix CSI data format for 16-bit media bus formats
58e366eb86e9d9e5ba4bc369daa04a8d8418d515 (v4.9-rc1) gpu: ipu-v3: Fix IRT usage
6f906814a5a8045874910f9c21c3ffd758a22f65 (v4.9-rc1) drm/amd/amdgpu: Fix VCE CG order and resume defaults
178ca5312ad358fb129876bacbee8dac4681673a (v4.9-rc1) clk: sunxi-ng: mux: Increase fixed pre-divider div size
df86af9133b4958a04c44828d29617eb1a6ff31c (v4.9-rc1) drm/plane-helper: Add drm_plane_helper_check_state()
0e4faf679e67b5ab55752d18fc82f3c7351b2f03 (v4.9-rc1) drm/mediatek: Use drm_plane_helper_check_state()
4be12cc23d5030dcf7dfe055e26c0ab6e79dbb38 (v4.9-rc1) drm/simple_kms_helper: Use drm_plane_helper_check_state()
ac08500c1bcb620810838c735143a00e5acf5b5f (v4.9-rc1) drm/mediatek: Fix mtk_atomic_complete for runtime_pm
8fe5616b20e5742bb5fee0e77dffe2fc76ac92a0 (v4.9-rc1) drm/tilcdc: Restore old dpms state in pm_resume()
20a98acba5baf925d0d6fb334f1c55aa2ca7a708 (v4.9-rc1) drm/tilcdc: Fix tilcdc component master unloading
678a6241c64ef85c0f8acd0d60ca6fd5ff3e6887 (v4.9-rc1) net/sched/sch_hfsc.c: keep fsc and virtual times in sync; fix an old bug
2602625b7e46576b00db619ac788c508ba3bcb2c (v4.9-rc1) security, overlayfs: Provide hook to correctly label newly created files
310c8e40d5cd2512b6d46177563460726cc6166a (v4.9-rc1) mpt3sas: Ensure the connector_name string is NUL-terminated
38b8da79163be3fe4a83f02df77edb0157b1b49f (v4.9-rc1) ARM: dts: da850: Add new ECAP and EPWM bindings
10badea259fab2ec91a5e6bf1e568a01e4cb5263 (v4.9-rc1) crypto: img-hash - Fix null pointer exception
dd4f677b0c89280e66ab9bebf97c8c90fbc1c330 (v4.9-rc1) crypto: img-hash - Fix hash request context
5e38d20088d48b60775bdbdfdf47f8a2c4f6288f (v4.9-rc1) crypto: img-hash - Fix set_reqsize call
3d5a2db695574a3780d15e42f771f35344258d8b (v4.9-rc1) crypto: caam - fix DMA API mapping leak
bc13c69e29697f90200cf77d133a39ca1e525590 (v4.9-rc1) crypto: caam - check and use dma_map_sg() return code
833415a3e781a26fe480a34d45086bdb4fe1e4c0 (v4.9-rc1) cdc-wdm: fix "out-of-sync" due to missing notifications
517abe495df7279f3a45ae01ed709e07d384309e (v4.9-rc1) iommu/amd: Fix error return code in irq_remapping_alloc()
423595e89ddf9b657812a33932a5e2ad1bb9dd54 (v4.9-rc1) iommu/exynos: Fix error handling for of_platform_device_create
535fd072202dbc8afe5a4093178132bdd4ac2424 (v4.9-rc1) libata-scsi: fix MODE SELECT translation for Control mode page
287849cb3814a5077c79a2489bef055c9f5e656c (v4.9-rc1) gpio: stmpe: Fix edge and rising/falling edge detection
d3bafff783311cb2e8f4b63e45548079948df989 (v4.9-rc1) ARM: EXYNOS: Enable ARCH_SUPPORTS_BIG_ENDIAN explicitly
4e968d9e46ceee57e3f5b96d1486745416c9a4a5 (v4.9-rc1) remoteproc: qcom: hexagon: Fix error return code in q6v5_probe()
7d4a8088f69eac7e3391da6905e817d52cbbc79c (v4.9-rc1) video: s3c2410fb: Register cpufreq notifier only on S3C24xx
e0299908d606a99e7ffb467bc3c11dfe54133af3 (v4.9-rc1) video: fbdev: pxafb: potential NULL dereference on error
904e6ead02dcb409cb6eb5ec1c31dc2c7c28b5df (v4.9-rc1) clk: migrate ref counts when orphans are reunited
1fd92dbaabe3096ded391eed2e8dd74afe02d0d2 (v4.9-rc1) clk: imx7d: do not set the parent of IMX7D_ENET_AXI_ROOT_SRC
911a9b842874f52429d0b0a420bf0fed22117611 (v4.9-rc1) ACPICA: Applications: Fix a potential issue that help messages may be dumped to acpi_gbl_debug_file
6e434627bce2a4ccf6d7eea50c08b4fdbb70dd3e (v4.9-rc1) drivers: net: xgene: fix: Add dma_unmap_single
15e32296e44738e6c8dff56c46fd18e9b4c9b6f6 (v4.9-rc1) drivers: net: xgene: fix: Delete descriptor rings and buffer pools
cecd6e510c65b25c9a3fcc09480f561189a7c3b8 (v4.9-rc1) drivers: net: xgene: Fix error deconstruction path
29b4eafbae9cc5eec19377f4e5637a6e2dedd6bc (v4.9-rc1) drivers: net: xgene: Fix RSS indirection table fields
3eb7cb9dc94609c14c51029964ac4bfd59cc4d25 (v4.9-rc1) drivers: net: xgene: XFI PCS reset when link is down
03377e381bf48d7aaa797577789551b04bce7006 (v4.9-rc1) drivers: net: xgene: Fix backward compatibility
5ac6caab224921fd3331a7e4b19d34623c752d09 (v4.9-rc1) dtb: xgene: Fix backward compatibility
f8c46cb39079b7415ada1affc4631ae761d8b621 (v4.9-rc1) netns: do not call pernet ops for not yet set up init_net namespace
7829451c695e5b795fef95d72cd258e78d52f62d (v4.9-rc1) cxgb4: Add control net_device for configuring PCIe VF
02ee9b18dedf1d72afa0fbfb0d7c15f6b4904a07 (v4.9-rc1) qed: Fix possible memory leak in qed_dcbnl_get_ieee_pfc()
b22ae0b4d9669495158a7fa0fd027bd0fcd8896e (v4.9-rc1) net: macb: add missing free_netdev() on error in macb_probe()
31b02dd718712f4c45afbeea7fbd187ecb1b202c (v4.9-rc1) x86/apic, ACPI: Fix incorrect assignment when handling apic/x2apic entries
8736f8022e532a3c1d8873aac78e1113c6ffc3b9 (v4.9-rc1) spi: spidev_test: fix build with musl libc
73442e3ccbc3136cf92a6785d81d118932292681 (v4.9-rc1) ASoC: Intel: bytcr-rt5640: add Asus T100TAF quirks
038a50e735c85a7a9fbcda090785a588443ffa26 (v4.9-rc1) ASoC: Intel: bytcr_rt5640: fix dai/clock setup for SSP0 routing
e494df039df0fc73587fda48752bfdbe88a6e7ce (v4.9-rc1) staging: most: v4l2-aim: fix interrupt unsafe spinlocks
6ebb3727ead795a4dc80f99d2e8065dbc041ccce (v4.9-rc1) staging: most: dim2-hdm: fix race condition when closing a channel
1c88f8ff4290fd348de1cf27d403e0fc86474007 (v4.9-rc1) staging: most: dim2-hdm: fix possible kernel freeze when reusing a dim2 channel
d2cec82c28802da31596b395ad292cb8f132fd63 (v4.9-rc1) power: sbs-battery: Request threaded irq and fix dev callback cookie
b0f566838cfe086a96bffd9c67dd8844a41870ea (v4.9-rc1) drm/mgag200: fix error return code in mgag200fb_create()
a9ccc123a8e05365f7515dcd023b01100809a6fa (v4.9-rc1) soc/tegra: pmc: Fix incorrect DPD request
a70cb07bb397fce6675d7ab055fb447519fc7c76 (v4.9-rc1) ARM: tegra: Fix Tegra114 USB compatible values
8f98307d023810669391555e370a8c2a8e2af9b6 (v4.9-rc1) ASoC: Intel: bytcr_rt5640: quirk for Acer Aspire SWS-012
6fa06b0d9e9514bfca9b89493161f2a2cbb079a9 (v4.9-rc1) EDAC, mpc85xx: Fix PCIe error capture
29dd3288705f26cc27663e79061209dabce2d5b9 (v4.9-rc1) bitmap.h, perf/core: Fix the mask in perf_output_sample_regs()
6ab7eba5db93c11d61f6f7fbe21edbc875b26c1a (v4.9-rc1) x86/ioapic: Fix setup_res() failing to get resource
162b83bd5f1d7124e21da78bcf2685b9824d9ef0 (v4.9-rc1) x86/ioapic: Fix lost IOAPIC resource after hot-removal and hotadd
624cad9d2907a0788b56e3ca664c5d7d02645ed4 (v4.9-rc1) x86/ioapic: Fix IOAPIC failing to request resource
a75c03126f93713e121ea90fbaa2eaf55063c236 (v4.9-rc1) staging: most: aim-network: fix interrupt unsafe spinlocks
23e5671a79be00b2f1c895aa93ff40fb75a4647e (v4.9-rc1) gfs2: Fix extended attribute readahead optimization
3a0f52928a0a06a7c4c735cd325ca646a1e40fae (v4.9-rc1) i40e: Fix a bug where a client close can be called before an open is complete
70df973b5eb48b19ba29105ecfecb3e50efe3c6d (v4.9-rc1) i40e: Force register writes to mitigate sync issues with iwarp VF driver
d8ec98646483a9e1c0c9f511236ce8b933deed17 (v4.9-rc1) i40e: fix lookup table when RSS disabled/enabled
b7d2cd951f7147f979d9e82773246416dcef2e3e (v4.9-rc1) i40e: fix memory leak
3497971a71d8b15a41b7bf2bf66ebf5909b2bd3f (v4.9-rc1) agp/intel: Flush chipset writes after updating a single PTE
d4c3e6e1b193497da3a2ce495fb1db0243e41e37 (v4.9-rc1) livepatch/x86: apply alternatives and paravirt patches after relocations
e48ba1cbce12eb4546771d45c09dd94c3404efe8 (v4.9-rc1) KVM: PPC: Book3S: Don't crash if irqfd used with no in-kernel XICS emulation
d5709f7ab77679d407a7687fc5ad7cc7442cc651 (v4.9-rc1) flow_dissector: For stripped vlan, get vlan info from skb->vlan_tci
339ba878cfb01b68de3d281ba33fd5e4c9f76546 (v4.9-rc1) net_sched: flower: Avoid dissection of unmasked keys
f1b7764f8626b5ee7a42b6648427e71111c5cbb5 (v4.9-rc1) wil6210: fix HALP handling in case of HALP vote time-out
d35c2b6f8ffa75d430fd0fbbc5062f738c44f6e4 (v4.9-rc1) wil6210: fix stop p2p device handling
b0c0e688e523eba14abf21ac246b7dd88f5574fa (v4.9-rc1) wil6210: Fix driver down flow
2690c4c0e83b1aa5aa8b8b258ae422b067720224 (v4.9-rc1) wil6210: fix wiphy registration sequence
0f02b4f75245c9f11f38ed983a2f5e21fd780e80 (v4.9-rc1) dsa: mv88e6xxx: Use mv88e6xx_wait in mv88e6xxx_update()
acc1be1d351e8d5c0c8d14dad904ae0e39fc3653 (v4.9-rc1) drm/vc4: Fix handling of interlaced video modes.
b7eeef495f62412bc8b0a9f8c94710653e4cdd28 (v4.9-rc1) i40e: Fix byte ordering in ARP NS code for X722
c64269710ef28eb0dea03098853e425851214496 (v4.9-rc1) ixgbevf: fix incorrect MAC address on load
a0ad55a36e33905c7a79627f1f3448db1105210f (v4.9-rc1) ixgbe: Fix led interface for X557 devices
a8610297ea8849fe47a9442291b38936e3d403cc (v4.9-rc1) staging: lustre: obdclass: bug fixes for lu_device_type handling
29792c81f90ed85d94b23f3fc31e646c241bd44a (v4.9-rc1) staging: lustre: mdc: fixup MDS_SWAP_LAYOUTS ELC handling
c68c3fa4368fcb16b0bbff0808a64012a2d86640 (v4.9-rc1) staging: lustre: ldlm: flock completion fixes.
c948390f10ccc7ba67dcc17c9e5b313744f554aa (v4.9-rc1) staging: lustre: llite: fix inconsistencies of root squash feature
297e908f08cb40c4bbe11b06c30ff1de1a3740c0 (v4.9-rc1) staging: lustre: llite: Fix the deadlock in balance_dirty_pages()
099d5adf1ebb1d9d60097ece334930d9dab1bbc9 (v4.9-rc1) staging: lustre: ldlm: improve ldlm_lock_create() return value
af96bab11b4cdc009fa78e55c328a0baccd7db90 (v4.9-rc1) staging: lustre: lnet: Correct position of lnet_ni_decref()
3a77df1180acf1cbe2276a0cbe91e5d07fbf3c47 (v4.9-rc1) staging/lustre: Always return EEXIST on mkdir for existing names
ef6687c627a5338f1fbea134efca6e7f479cd70c (v4.9-rc1) staging: wilc1000: fix error handling in wilc_debugfs_init()
0ad1ed99d6ce86bc76b8768a49a65155281aad44 (v4.9-rc1) staging: octeon: validate interface before calling INDEX
95d2a324660ac46420b64481507dcedab7341dad (v4.9-rc1) staging: ks7010: don't print skb->dev->name if skb is null
9731ee897356c9077995b0c454fe19f7fa93ea5d (v4.9-rc1) staging: rtl8723au: hal: check BT_Active and BT_State with correct bit pattern
637ee29eff53fd718a454aacd3b7190cb4e15df8 (v4.9-rc1) drm/i915: Fix nesting of filelist_mutex vs struct_mutex in i915_ppgtt_info
bedc1969150d480c462cdac320fa944b694a7162 (v4.9-rc1) rcu: Fix soft lockup for rcu_nocb_kthread
fe48cb8538421fbd16ecf8bf95829faf8d8c001e (v4.9-rc1) PCI: designware: Keep viewport fixed for IO transaction if num_viewport > 2
080d5c5ac8e4cfab4f3b1239667cf422925efcc3 (v4.9-rc1) net: ethernet: ti: davinci_cpdma: fix locking while ctrl_stop
8737caafd16790c654f1fb8564abcf6e1f3ffe19 (v4.9-rc1) hv_netvsc: fix rtnl locking in callback
ea89604f3d8dc49e9b28020bd25880aabd84c6cd (v4.9-rc1) scsi: be2iscsi: Fix to use correct configuration values
37f216482a72ea8ffc2935b2e7e926ba1241a2dd (v4.9-rc1) scsi: be2iscsi: Fix gateway APIs to support IPv4 & IPv6
e1f9d31eb3272b4351239ecb7481f541d9eb76be (v4.9-rc1) scsi: be2iscsi: Fix bad WRB index error
0f6625fd00a534b47add4134c1fc760c9ef2cb58 (v4.9-rc1) arm64: dts: qcom: Fix broken interrupt trigger settings
384d9fe3741657c8ed8cd9bf30bc1d4611864d56 (v4.9-rc1) x86/smpboot: Check APIC ID before setting up default routing
7e0739cd9c40752fc9d31cac86e3a31d5537be18 (v4.9-rc1) [media] videodev2.h: fix sYCC/AdobeYCC default quantization range
08ee01789eebf433c27e8b3eecc3ddbb5f7c4d51 (v4.9-rc1) drm/tegra: Fix window[0] base address corruption
ffe67c2fabf128122b30fbf0ac498928e171b0b3 (v4.9-rc1) perf tools: Fix error handling of lzma decompression
3b2aa383b3bc4e16ee15a145f8d9575a73779337 (v4.9-rc1) [media] s5p-jpeg: set capablity bus_info as required by VIDIOC_QUERYCAP
4f355cb5676039b98232bb86d4ed1542eaa9e0be (v4.9-rc1) [media] exynos4-is: Fix fimc_is_parse_sensor_config() nodes handling
d695c12c57feae371c943e019af920bc8b732dfb (v4.9-rc1) [media] media: s5p-mfc fix invalid memory access from s5p_mfc_release()
b956fb2d2e562a344df41a8f2fc51314bac5b300 (v4.9-rc1) [media] adv7511: fix error return code in adv7511_probe()
05b01dd936b46f2c3cfbb10bc89c0ec79c745e5d (v4.9-rc1) ARM: dts: exynos: Use 'hpd-gpios' instead of 'hpd-gpio'
fd3223966cac9e6c3751b43c500963e9c71356f0 (v4.9-rc1) [media] helene: fix memory leak when heleno_x_pon fails
33145fac8e7e9eb0e064cd0cd0032d6786b6420c (v4.9-rc1) ARM: dts: bcm283x: Add missing USB clock
00a33ec4649e059dfcf81d0f90402fb02db50691 (v4.9-rc1) ARM: dts: bcm283x: Add dtsi for USB host mode
9835a6ef1a96b203278629bbcf5099622070c32b (v4.9-rc1) usb: phy: generic: cope with initial state
1de2ebfb8cd522ad7d0deae94ae47592f975e017 (v4.9-rc1) usb: gadget: net2280: fix infinite loop in irq handler
16b114a6d7973cf027e4c2b23eae1076eaf98c25 (v4.9-rc1) usb: gadget: fix usb_ep_align_maybe endianness and new usb_ep_align
cc945ce3ab563d7dd7657510e1990f6f606c9b46 (v4.9-rc1) drm/amd/amdgpu: Fix memleak in cz_parse_power_table()
9a0a5c4cb1af98b625dcefd72e987ca4929db71d (v4.9-rc1) net: systemport: Fix ordering in intrl2_*_mask_clear macro
7e84a8d13f97aa4487371c39e2b8918883e0ce3a (v4.9-rc1) ARM: dts: kirkwood: Fix Openblock A6 external GPIO pins
6ffe9923f2350c19b95a2c9ebf1b4f5f275986f2 (v4.9-rc1) arm64: errata: Pass --fix-cortex-a53-843419 to ld if workaround enabled
0895b3a8fd855a448b5c37e54f0c57ece4f421fa (v4.9-rc1) arm64: dts: rockchip: fix the address map for WDT0 and WDT1
143778ebc8c97f74b16feca4da7736cdf69f7a9a (v4.9-rc1) ARM: dts: lpc4350-hitex-eval: fix binding for SE97 i2c device
ae0f74be6e3db97b23f33be2219044576525176a (v4.9-rc1) power: bq24735-charger: Assume not charging when charger is missing
f9dc70744dc74bc9e128d579f2bc85eb7c0ad8ce (v4.9-rc1) net/xgene: fix error handling during reset
2a334cfaf393187d592999d1039135e000a68e9a (v4.9-rc1) usb: gadget: goku_udc: fix memory leak in goku_probe()
0680b0cabcd0a2264f0ad8ac569caf928f65afb6 (v4.9-rc1) memory: omap-gpmc: Fix build with CONFIG_OMAP_GPMC disabled
e59a393d089d08a4622de07f941dd3629fcaec6a (v4.9-rc1) fm10k: fix PCI device enable_cnt leak in .io_slot_reset
e5fbfb78641ff0c5139ae665289ed9f91524265e (v4.9-rc1) fm10k: NAPI polling routine must return actual work done
e3014d14a81edde488d9a6758eea8afc41752d2d (v4.9-rc1) ext4: fixup free space calculations when expanding inodes
58383befc3377b4e2305b98f91e445af73ba8d62 (v4.9-rc1) f2fs: fix to do f2fs_balance_fs in f2fs_map_blocks correctly
dfd02e4de1c5f40c268984254045d388ab0c3e74 (v4.9-rc1) f2fs: fix to preallocate block only aligned to 4K
5d2b42ede71c9da0bf4248fd2d409918fb065b5f (v4.9-rc1) f2fs: fix a bug when using namehash to locate dentry bucket
03577d6a0beff2aded55d4ae40d1058905233536 (v4.9-rc1) video: mxsfb: Fix framebuffer corruption on mx6sx
b0118e7d936c550c88bcb0e4687020e8d5cb9b54 (v4.9-rc1) drm: bridge/dw-hdmi: Fix colorspace and scan information registers values
d6a2c5c78dcbbbe9dc20ff6e126b83f088cd0501 (v4.9-rc1) iwlwifi: pcie: fix ucode load flow for a000 devices
ccbd3dbe85e1445231a7e0da2dada130cedce9d0 (v4.9-rc1) rxrpc: Fix a potential NULL-pointer deref in rxrpc_abort_calls
7c686af071ade663d0995aa30b262495a6c68c88 (v4.9-rc1) selinux: fix overflow and 0 length allocations
b80b13f0cd775669828199ce9b3aee12b9cf8314 (v4.9-rc1) drm/amd/powerplay: Fix CZ SMU firmware load check (v4)
610ecfd6b4989c9bad40f75d4693bfc5c1aac287 (v4.9-rc1) drm/amd/powerplay: Fix up return codes in cz SMU manager
dfa46c50f65b6ca10cea389327a6f1f1749bc633 (v4.9-rc1) ACPI / button: Fix an issue in button.lid_init_state=ignore mode
fa162a05de280e7e62f30eac4dc591e8f5052483 (v4.9-rc1) ACPI / tables: fix incorrect counts returned by acpi_parse_entries_array()
8726d4f441505def8a488d50e50568403f6ad191 (v4.9-rc1) ACPI / tables: fix acpi_parse_entries_array() so it traverses all subtables
99b0efd7c886f4c985cb2727a86548413922cbe2 (v4.9-rc1) ACPI / tables: do not report the number of entries ignored by acpi_parse_entries()
6c28a90fb30cd3fe504e7dafe0b60b733f240f8c (v4.9-rc1) k3dma: Fix hisi burst clipping
aceaaa17e795b963880d71a03ab1ca9f4f597185 (v4.9-rc1) k3dma: Fix dma err offsets
b77f262ae351d467c22b056f6d13afeeab7ea69a (v4.9-rc1) k3dma: Fix occasional DMA ERR issue by using proper dma api
36387a2b1f62b5c087c5fe6f0f7b23b94f722ad7 (v4.9-rc1) k3dma: Fix memory handling in preparation for cyclic mode
48d2ab609b6bbecb7698487c8579bc40de9d6dfa (v4.9-rc1) net: mpls: Fixups for GSO
aa381a7259c3f53727bcaa8c5f9359e940a0e3fd (v4.9-rc1) usb: dwc2: gadget: fix TX FIFO size and address initialization
5ffae43208ec160e584117fabee2cddc5ad0e39a (v4.9-rc1) wil6210: fix protection of wil->scan_request
e0fa3e5e7df61eb2c339c9f0067c202c0cdeec2c (v4.9-rc1) Drivers: hv: utils: fix a race on userspace daemons registration
638fea33aee858cc665297a76f0039e95a28ce0c (v4.9-rc1) Drivers: hv: vmbus: fix the race when querying & updating the percpu list
068c0a542f6edce90f7d8a9b35a849d990001018 (v4.9-rc1) coresight: Fix csdev connections initialisation
cebf8fd16900fdfd58c0028617944f808f97fe50 (v4.9-rc1) driver core: fix race between creating/querying glue dir and its cleanup
c90aab9c96c2a7f7bf3f7a54167dc5c0ba2b178c (v4.9-rc1) platform driver: fix use-after-free in platform_device_del()
d68827c62a105eec547945daedf4d1d3e283717d (v4.9-rc1) tty: serial: fsl_lpuart: fix clearing of receive flag
aa9e7d78039e34ac0f56b370e21ac719482823ee (v4.9-rc1) tty: serial: fsl_lpuart: Fix broken 8m/s1 support
dbb9c1963285d5d1d3a8c12ad72ddacbd46fc845 (v4.9-rc1) ARM: dts: dra7: Fix clock data for gmac_gmii_ref_clk_div
c097338ebd3f7a0920dbe1a5d9bf276207f7b024 (v4.9-rc1) ARM: dts: dra7: cpsw: fix clocks tree
21b5b8eebbae427d7d890b7dd1e43a63aca7c26c (v4.9-rc1) PCI: quirk fixup for cavium invalid sriov link value.
93ba73fed31d0ec96489fedaeef1a1c402f9c8e4 (v4.9-rc1) crypto: qat - fix constants table DMA
8913f343cdb568222c95afe3cad78aee1a4df56b (v4.9-rc1) mbcache: fix to detect failure of register_shrinker
83ab7dad06b74e390c2ce0e7b5136daf286e1f5e (v4.9-rc1) rtc: pcf2123: Add missing error code assignment before test
59e5e70c9516a0ba34dd5a1a44ed89518cd5eda9 (v4.9-rc1) rtc: ds1390: Fix the SPI chip select number
50d6c0ea8111100a102c03b4410ba1e45fa8b771 (v4.9-rc1) rtc: ds1307: fix century bit support
84281c2d72a70456a3ba8d1e49548dd469f2e9d8 (v4.9-rc1) rtc: sysfs: fix a cast removing the const attribute
421a5ba24b3ef23b8972a6c238bd300abef532da (v4.9-rc1) rtc: bq32k: Fix handling of oscillator failure flag
7922118f8f3e76eb6534e9221a6c9f496c0ae699 (v4.9-rc1) memory: atmel-sdramc: fix a possible NULL dereference
fa1bc2a09f5f6c83eeb49686911565d9630ef054 (v4.9-rc1) platform/x86: toshiba_acpi: Fix typo in *_cooling_method_set function
371991353af424559eaeae147d094c8612099d73 (v4.9-rc1) staging/lustre/mdc: fix panic at mdc_free_open()
8d897d2540ff7f97941f1f3cb065ce4a9d808774 (v4.9-rc1) staging/lustre/llite: Fix suspicious dereference of pointer 'vma->vm_file'
44fae22b36e218ed30d3f4debba9b0c1d3d6fdf1 (v4.9-rc1) staging/lustre: Fix max_dirty_mb output in sysfs
ba3d0dda6d5facd6fe63a3276825bd2b9fa2990e (v4.9-rc1) net: xgene: fix backward compatibility fix
a3479c4fa0f149d9f3f6f88c173c4f4cd07a1714 (v4.9-rc1) drm/tilcdc: Fix check for remote port parent
de34dcfe70576792a6312f9af4a1f880182b2d3b (v4.9-rc1) ASoC: Intel: Atom: Fix message handling during drop stream
189f06c031d431d4fb7a78952df4c83ac7822b79 (v4.9-rc1) ASoC: core: fix shift used for second item in snd_soc_get_enum_double
0b6d76bbd5e223d33ccdd73f3a717692d500d221 (v4.9-rc1) ASoC: Intel: Skylake: Fix DMA control config size
aee6598748335794dc25d7c4f16f0d4801f6b584 (v4.9-rc1) libnvdimm: Fix nvdimm_probe error on NVDIMM-N
dc08267ac4ee7d4b602dd0ac000114e4426e2769 (v4.9-rc1) drm/amdgpu: handle runtime pm correctly in amdgpu_driver_open_kms
32c59dc14b72803f20742e5b6e515d39e90dbb83 (v4.9-rc1) drm/radeon: handle runtime pm correctly in amdgpu_driver_open_kms
7d42298eb43d27442e64d1e52e9f55f9cf9387e1 (v4.9-rc1) ath10k: fix group privacy action frame decryption for qca4019
2cdce425aa3301648e3a68a361f7f48b681fc5a6 (v4.9-rc1) ath10k: Fix broken NULL func data frame status for 10.4
dd19bde36739702bbd9a832b5d4995bc0fa8d6d7 (v4.9-rc1) switchdev: Fix return value of switchdev_port_fdb_dump().
45383f528fcf417539892440dd0eb9fb96990ef7 (v4.9-rc1) net: stmmac: dwmac-rk: fixes the gmac resume after PD on/off
902831a7629b8b72d333d214b031a717309bb1eb (v4.9-rc1) mwifiex: Fixed endianness problem for big endian platform
441756b6a6e3818dc6f2e76b9526558d450ce778 (v4.9-rc1) mwifiex: fix radar detection issue
af8a9a67c3466f70ab28a112d18eb5d327d40ca2 (v4.9-rc1) ath5k: fix EEPROM dumping via debugfs
d393be3ed0bebb30a4666d7f5ed4486cd6b31716 (v4.9-rc1) mwifiex: fix missing break on IEEE80211_STYPE_ACTION case
a0c7858e74793242733a09a3e34356f434bc1571 (v4.9-rc1) rtlwifi: rtl8192de: Fix leak in _rtl92de_read_adapter_info()
3eeacaa902a31bdf06bc53f23087dcb1c5f260d6 (v4.9-rc1) rtlwifi: rtl8723ae: Fix leak in _rtl8723e_read_adapter_info()
deb6176e561324884652dd6a49a862bd8b152959 (v4.9-rc1) rtl8xxxu: Fix error handling if rtl8xxxu_init_device() fails
f6dbe38edf1ef4929847c90e244204ef4c6b3ce7 (v4.9-rc1) scsi: ibmvscsis: Fixed a bug reported by Dan Carpenter
9369554d73c79396772c5e20dd19c75249a4ecbe (v4.9-rc1) ARM: dts: rockchip: fix L3G4200D i2c address on PopMetal-RK3288 board
b1e2afca635bb01f93ecd8112c265b980f1abc08 (v4.9-rc1) iommu/ipmmu-vmsa: Fix wrong error handle of ipmmu_add_device
1c5ebba95b486f1ea0e17d76dd8f6d7f1a8d1e89 (v4.9-rc1) iommu/vt-d: Make sure RMRRs are mapped before domain goes public
524c6e04f826cea8a34a27136d8f5925df9213ed (v4.9-rc1) dmaengine: sirf: fix irq number error check
2665621506e178a1f62e59200403c359c463ea5e (v4.9-rc1) sched/fair: Fix load_above_capacity fixed point arithmetic width
61c7aca695b6fabe85d0fc424fe8ae2f66f267dd (v4.9-rc1) sched/deadline: Fix the intention to re-evalute tick dependency for offline CPU
0733424c9ba9f42242409d1ece780777272f7ea1 (v4.9-rc1) pwm: Unexport children before chip removal
4e7482332236d9f0c8f6df2e80fd73ad68363c35 (v4.9-rc1) Input: wdt87xx_i2c - fix the flash erase issue
4001dfb4b54dc4b7e5e765f686766e3db88d175b (v4.9-rc1) [media] cx231xx-i2c: handle errors with cx231xx_get_i2c_adap()
04d68dea26b0a409d44e87ea573a131b6dc67e78 (v4.9-rc1) pwm: samsung: Fix to use lowest div for large enough modulation bits
f3f6c61452e28ffdf93b101555546af8ef63def5 (v4.9-rc1) ALSA: pcm: Fix avail to return error if stream is suspended
13b10301b858e355613bfc6dc297580bf34d3fb5 (v4.9-rc1) spi: dw: fix multiple slaves with different baudrates
b2bf482a5099264fb75936b5b552cdf3c247c93a (v4.9-rc1) ARM: 8605/1: V7M: fix notrace variant of save_and_disable_irqs
a5b45b7b952822aa5fbe842d2ee497c7c9dd7f55 (v4.9-rc1) PCI: hv: Handle hv_pci_generic_compl() error case
4e9951d960932d648197d691aa28a7bc0ced1b56 (v4.9-rc1) drm/atomic: Reject properties not part of the object.
ae0119f5f73b1e9cf7177fbbeea68d74c5751def (v4.9-rc1) drm: fix signed integer overflow
68cb9fe47ea661bffd48c8ca35790be26935e1c5 (v4.9-rc1) netfilter: nf_ct_sip: correct parsing of continuation lines in SIP headers
f0608ceaa79d99d24e97517f9a9a0fed2b9698b4 (v4.9-rc1) netfilter: nf_ct_sip: correct allowed characters in Call-ID SIP header
9d6173e125d92e38d4e39bc71f0c3c2cf95cba1a (v4.9-rc1) usb: dwc3: Fix dr_mode validation
1bcabc81ee94c0a65989128258f8c1d3e1c1b0ea (v4.9-rc1) netfilter: nf_ct_sip: allow tab character in SIP headers
1548a37da044aa123492638e61283a23cb4b475d (v4.9-rc1) crypto: qat - fix incorrect accelerator mask for C3X devices
5ba1c7b5ffc16ecf245f41805e46f7351c115e57 (v4.9-rc1) crypto: caam - fix rfc3686(ctr(aes)) IV load
0bec90571cb95afee80beb98c12cd82bd9136ac6 (v4.9-rc1) PCI: Fix cavium quirk compile failure with PCI_ATS off
9421d57051c534c7477f98d0576b876237fbbc4c (v4.9-rc1) f2fs: fix to do security initialization of encrypted inode with original filename
bbf156f7afa7f3cc07177f1119878f6f60855fd1 (v4.9-rc1) f2fs: fix lost xattrs of directories
c2a080aefa94c4b3dad35fbd9fa6cd0c8039b128 (v4.9-rc1) f2fs: fix to set superblock dirty correctly
6bf6b267d27d381fd43d2ac6152fa25de716ceaa (v4.9-rc1) f2fs: set dentry bits on random location in memory
7732c26ac3925e2aebfa84e14673240201ddc9de (v4.9-rc1) f2fs: fix to detect temporary name of multimedia file
62259ac4b36e348077635e673f253cc139dd6032 (v4.9-rc1) be2net: Add privilege level check for OPCODE_COMMON_GET_EXT_FAT_CAPABILITIES SLI cmd.
3ec979658e5cc0fab86a42af79a650299e4d7135 (v4.9-rc1) x86/e820: Fix very large 'size' handling boundary condition
2938fc63e0c26bf694436ac81bc776c8b7eced0c (v4.9-rc1) usb: dwc2: Properly account for the force mode delays
f6f7017192ad62669dc8aa4cb33e5f5a0ecd2d81 (v4.9-rc1) KVM: MIPS: Override HVA error values for EVA
77821b4678f93b0b45870c04b7c06c364ed090de (v4.9-rc1) i2c: tegra: proper handling of error cases
f48ccb26e264b112afc087d562fa2d68e2e1174b (v4.9-rc1) hwmon: (lm95241) Fix overflow problems, write conversion rate to chip
73615428c7e1289d493578a7c83959e39e9023e5 (v4.9-rc1) scsi: ufs: Fix a wrong string in power mode change
79775f441838403be856e06eaab893a3fe9dd7b2 (v4.9-rc1) usb: gadget: u_ether: fix another dereference after null check
d64e9a2c750930272492952c16f3f2c95311a6c9 (v4.9-rc1) dmaengine: pl330: fix residual for non-running BUSY descriptors
a40235a2278a315261ee007fc433ec1cfb31666f (v4.9-rc1) dmaengine: pl330: Acquire dmac's spinlock in pl330_tx_status
bffba4737bf39542c4cb4d276f4bf18cfa0ffa21 (v4.9-rc1) [media] v4l: vsp1: Fix tri-planar format support through DRM API
0513fe1d28e45deb39159dbeedf0660c3f0effd2 (v4.9-rc1) x86/efi: Map in physical addresses in efi_map_region_fixed
22c2b77f419bdc9317f00b395283abd33157368e (v4.9-rc1) fs/efivarfs: Fix double kfree() in error path
7bfaddf057f3ae774fa355cb7d87324ca67add94 (v4.9-rc1) drm/i915/dp: Move max. vswing check to it's own function
b93e1fa7106582e3a81cc818b719e0341585ff1b (v4.9-rc1) ipv4: fix value of ->nlmsg_flags reported in RTM_NEWROUTE events
de56ba95e8d6d760910711744a548b50b3a4262d (v4.9-rc1) ACPICA: Interpreter: Fix MLC issues by switching to new term_list grammar for table loading
74f51b80a0c4ff84fbeb7f12ea43ce66934d29aa (v4.9-rc1) ACPICA: Namespace: Fix dynamic table loading issues
441ad11d078f35093ceaf510742df423c2d89a3b (v4.9-rc1) ACPICA: Dispatcher: Fix a mutex issue for method auto serialization
10b68700add43d0c38fedefb7a2b7df931f8e84e (v4.9-rc1) ACPI / PCI: fix GIC irq model default PCI IRQ polarity
b80cfea24b02bcdc94cdbf67091d7b1c27ba6cd4 (v4.9-rc1) staging: ks7010: fix memory leak
332e99d5ae4056523bcb24ab16cd7a41474c4807 (v4.9-rc1) gpio/gpiolib: Forbid irqchip default trigger if probed over DT
f5dc9399c07ee141924bcdccfeeacd7597a44cfe (v4.9-rc1) staging: ks7010: fix warning on return for void functions
aeaf5d86faa5d8c64674465da544c26c97e9404a (v4.9-rc1) staging: ks7010: fix two memory leaks on error return path
b7fb44dacae04219c82f20897382ba34860d1a16 (v4.9-rc1) nl80211: Allow GET_INTERFACE dumps to be filtered
5803348cfcead8ac768e3c86bbe6f5afb5a10935 (v4.9-rc1) pinctrl/at91: Don't provide a default trigger type
c11a0442b0fe01244de09849f62a0370482a0196 (v4.9-rc1) pinctrl: intel: merrifield: fix dup size in probe
7f3037a5ec0672e03f96d4b0b86169c4c48e479e (v4.9-rc1) f2fs: check free_sections for defragmentation
7c7289a40425d48bbfcaacc454a8caf5b47f63b0 (v4.9-rc1) spi: pxa2xx: Default thresholds to PXA configuration
f6ce410a59a48aff47bb7e18ab40497e4e80d275 (v4.9-rc1) drm/fence: allow fence waiting to be interrupted by userspace
74b0b157845748e5817cae56c891b05d98da5f47 (v4.9-rc1) drm/amd/amdgpu: S4 issue for amdgpu (v2)
a3fd80740a659ae1d20d090749958cc06f172b7e (v4.9-rc1) drm/amd/powerplay: fix issue power containment not enabled on Tonga.
26619804e733bbe8a01ab8a438f91e230e91373a (v4.9-rc1) cpufreq: create link to policy only for registered CPUs
ad38677df44b67e0f5b6c4d31e9c2734abde8ed9 (v4.9-rc1) cpufreq: CPPC: Force reporting values in KHz to fix user space interface
50246787655d41faea35a83031c47c429144d531 (v4.9-rc1) powerpc/pasemi: Fix Nemo SB600 i8259 interrupts.
e1c0d66fcb179a1737b3d5cc11c6e37bcabbd861 (v4.9-rc1) powerpc: Set used_(vsr|vr|spe) in sigreturn path when MSR bits are active
5a793bcadbe97df7823598b429c0af052e50df1c (v4.9-rc1) crypto: omap-sham - fix software fallback handling
cb8d5c8346640f3622bc832fede4b514096f762e (v4.9-rc1) crypto: omap-sham - fix SW fallback HMAC handling for omap2/omap3
5f4761dda2ba3743ceb5eb5b5e7483172927831a (v4.9-rc1) ath10k: fix memory leak on caldata on error exit path
214d553944815245897f6ac71f0b2e1905badcd9 (v4.9-rc1) ath10k: remove unused variable ar_pci
378bc4ed74a6c30c25012935c7af175501dda374 (v4.9-rc1) crypto: qat - fix leak on error path
58b022acac8dd435dad0b162ad92cbe8ec90a703 (v4.9-rc1) hwrng: core - Allocate memory during module init
94879fa82275f161f3b4fdabab00cd4d625781f3 (v4.9-rc1) hwrng: st - Fix missing clk_disable_unprepare() on error in st_rng_probe()
65b3f50ed6fa121f2f8f0cb51c49bf038016ab46 (v4.9-rc1) usb: musb: Add PM runtime support for MUSB DSPS glue layer
48fed03b4b37f03f469333269fec50b2b41ed7fb (v4.9-rc1) usb: musb: am35x: fix error return code in am35x_probe()
b175b38a0fa6767e1eae2e94b9d5f81d7342850a (v4.9-rc1) usb: host: xhci-tegra: Fix error return code in tegra_xusb_probe()
a7c22bda52e24094c7bc96afcd897ddad2b28bc0 (v4.9-rc1) net: macb: fix missing unlock on error in macb_start_xmit()
b6b5555bc89f52e49244104ca4d7764c7b0f11cd (v4.9-rc1) cfg80211: disallow shared key authentication with key index 4
42ee231cd12c2e1eb015163d04a65950e895d4b7 (v4.9-rc1) nl80211: fix connect keys range check
d59dc7bcfa649ef2128a76b6487b16f4b3f14d23 (v4.9-rc1) sched/numa, mm: Revert to checking pmd/pte_write instead of VMA flags
649d7df29ca83b2c9e81a4a305a8de8ab02b5e9d (v4.9-rc1) f2fs: fix to set PageUptodate in f2fs_write_end correctly
9b6a9ecc2d88ccdc57efc22d69436b9dd7e2eceb (v4.9-rc1) selinux: fix error return code in policydb_read()
79c350e45ebc5a718cc2d7114b45ad560069423d (v4.9-rc1) xfs: fix signed integer overflow
08f9268b2a2e16ad89187a49ac06bfc7e1dc36a6 (v4.9-rc1) ARM: dts: ARM: dts: Fix omap5 SDIO dat1 interrupt
42531686639d6a3fe49518f2baca3f7256708242 (v4.9-rc1) spi: st-ssc4: Fix misuse of devm_gpio_request/devm_gpio_free APIs
f11766143caa065b3aef4d794c104ea0f37ada76 (v4.9-rc1) ASoC: dpcm: Don't apply symmetry for BE with hw param fixup
1d3324c382b1a617eb567e3650dcb51f22dfec9a (v4.9-rc1) scsi: cxlflash: Fix to avoid EEH and host reset collisions
85bd6cf3be44602a85714ca61442c3b0666dbb62 (v4.9-rc1) scsi: hisi_sas: fix phy8 linkrate calculation in phy_up_v2_hw()
d82debecf29b4d89e2d17a52dc32c745ba97c999 (v4.9-rc1) scsi: hisi_sas: fix HBA SAS addr endianness for v2 hw
44c4abe08f224817747795fb8d0677888166e4cd (v4.9-rc1) scsi: hisi_sas: fix HBA SAS addr endianness for v1 hw
8cc123671a08f35be6b00f6131d3bf8504372ae0 (v4.9-rc1) ASoC: rt5659: Fix incorrect register addresses
8383278d28b9bc598225f163b6644b8b09f2733d (v4.9-rc1) scsi: hpsa: Check for vpd support before sending
fd5065584d5f3532d9ffb6e3832e8064f9242c7e (v4.9-rc1) drm/amdgpu: move some release handles into fail labels (v2)
4bf5beef578e46393f11eb69dda7d17a065e05ff (v4.9-rc1) iommu/amd: Don't put completion-wait semaphore on stack
061b5c1d013a94af385ba8980ea3b2617f1ff0f6 (v4.9-rc1) leds: gpio: fix an unhandled error case in create_gpio_led
15985fba2e93872f3070af63ae9b0d0f42b2c7ea (v4.9-rc1) iwlwifi: mvm: don't free queue after delba in dqa
13ce5b6e38b7e487d3b900520f8d608122730095 (v4.9-rc1) drm/msm/mdp4: Fix issue with LCDC/LVDS port parsing
5f6f5e08b1fba96fab0f7fa14025f956d25067ff (v4.9-rc1) drm/msm/hdmi: Clean up HDMI gpio DT bindings
55f142ca5f2d0fbb1e3c438f4a5aa86b339437d0 (v4.9-rc1) staging: most: hdm-dim2: fix channel configuration
7c7b08bfbd5a3361985ce466842986f8d847f218 (v4.9-rc1) arm64: dts: apm: Fix interrupt polarity for X-Gene PCIe legacy interrupts
ef1eb3aa50930f026135085cd160b1212cdfe817 (v4.9-rc1) fscrypto: make filename crypto functions return 0 on success
b4163fb3333cf2279f5bfa2bb4d2d93aa66a3eac (v4.9-rc1) iommu/arm-smmu: Fix event queues synchronization
bcfced1580c40662d1c095899af9d0dd3ed9e7bc (v4.9-rc1) iommu/arm-smmu: Fix polling of command queue
82db33dc5e49fb625262d81125625d07a0d6184e (v4.9-rc1) iommu/io-pgtable-arm: Check for v7s-incapable systems
c568d68341be7030f5647def68851e469b21ca11 (v4.9-rc1) locks: fix file locking on overlayfs
2b6bc7f48d34a6043915beddbf53b981603737c8 (v4.9-rc1) ovl: lookup: do getxattr with mounter's permission
d932f37c4aa8b380f8ed529d1472a2ff49b95727 (v4.9-rc1) drm/amdgpu: not set cg for vce/uvd in late init.
f89f4147f76f91bfff6f32890fc34148178f144d (v4.9-rc1) cpufreq: CPPC: Avoid overflow when calculating desired_perf
307ecb0aa3a24528efd1cfcea8215b2d82df6e10 (v4.9-rc1) ACPI / sysfs: Fix an issue for LoadTable opcode
7e426671704d2266757dff9c4254b788561aa11e (v4.9-rc1) net/mlx5e: Single flow order-0 pages for Striding RQ
e996e2089f25b84149ae82b5ddf37a263a7fcc71 (v4.9-rc1) drm/sun4i: dotclock: Fix clock rate read back calcation
17879e8f865f4ed8b6f9041a2687ad40f13ae460 (v4.9-rc1) xfs: fix locking for DAX writes
66388f2c08dfa38071f9eceae7bb29060d9be9aa (v4.9-rc1) sctp: do not return the transmit err back to sctp_sendmsg
41001faf95faaff7c4f4f93c6bb544ee227ad0cc (v4.9-rc1) sctp: not return ENOMEM err back in sctp_packet_transmit
695b4ec0f0a9cf29deabd3ac075911d58b31f42b (v4.9-rc1) pkt_sched: fq: use proper locking in fq_dump_stats()
95357907ae73a8039c2106897ee2694f26ac3caf (v4.9-rc1) mlx4: fix XDP_TX is acting like XDP_PASS on TX ring full
3ee0f0e23e4f290b2ee0a273b34c6e4f95a209a0 (v4.9-rc1) iwlwifi: mvm: fix DQA AP mode station assumption
31ebe86d6ef5f3280705e7ac9ab366f60f4e699c (v4.9-rc1) pinctrl: nomadik: don't default-flag IRQs as falling
b7c8c5d6927f9e6f3b4c0f8fcc99daa4568ad185 (v4.9-rc1) ASoC: sti: fix missing clk_disable_unprepare() on error in uni_player_start()
7ee2eaa3641827a9ecdffa190cde31846024d2e3 (v4.9-rc1) HID: alps: Fix memory leak
c3db901c54466a9c135d1e6e95fec452e8a42666 (v4.9-rc1) iommu/amd: Free domain id when free a domain of struct dma_ops_domain
3b01c11ee8bfa9d5d14b028e9fbe861a0f22d328 (v4.9-rc1) NFSv4.x: Fix up the global tracking of the callback server
a38aaaa43d1acd037afd1bd84ebf9d855afdf714 (v4.9-rc1) [media] vivid: fix error return code in vivid_create_instance()
c07aefc268acf53c551dbd50d4fc08a82bee899f (v4.9-rc1) drm/amd/powerplay: fix potential issue of array access violation
7a9e7bd32ba43a050e868ba44c4a0665079a8264 (v4.9-rc1) [media] v4l: vsp1: Ensure pipeline locking in resume path
abe9609f808140f46d092035b75dd58ae80db056 (v4.9-rc1) [media] v4l: vsp1: Fix RPF cropping
1d602430d335c88d4b5a4def4464e9d3a59cdcca (v4.9-rc1) drm/amdkfd: Fix possible infinite loop
225c2926d85bd2f9aebd5a122fa14a44b74d2594 (v4.9-rc1) [media] v4l: vsp1: Fix spinlock in mixed IRQ context function
ee6ee49fd09fa17c92aadf07961d0ff406fceab8 (v4.9-rc1) x86/PCI: VMD: Synchronize with RCU freeing MSI IRQ descs
f0a70a04ca10d07a383a89edea142e3cbab1f2ca (v4.9-rc1) Bluetooth: btusb, hci_intel: Fix wait_on_bit_timeout() return value checks
37d3a1fab50fa07ac706787646e61c60e7c520e0 (v4.9-rc1) Bluetooth: mgmt: Fix sending redundant event for Advertising Instance
56f787c5024de7829f8cccce7569feb520829baf (v4.9-rc1) Bluetooth: Fix wrong Get Clock Information return parameters
bdca1fd9a6df745857e23c6056494b7fe062b4e6 (v4.9-rc1) fakelb: fix schedule while atomic
baab793225c9badf46309f56982eb1012dbaac80 (v4.9-rc1) Bluetooth: Fix wrong New Settings event when closing HCI User Channel
3c0975a7a1087add3bf873601f0270aa695d7616 (v4.9-rc1) Bluetooth: Fix reason code used for rejecting SCO connections
83ebb9ec734e9e768a9fae469e4a7ed1762ef43a (v4.9-rc1) Bluetooth: Fix not registering BR/EDR SMP channel with force_bredr flag
6de690dd4e78b1bfd8e6777905203e55649d4d52 (v4.9-rc1) [media] adv7180: rcar-vin: change mbus format to UYVY
47f8e8b9bbbbe00740786bd1da0d5097d45ba46b (v4.9-rc1) bnxt_en: Fix ethtool -l|-L inconsistent channel counts.
350a714960eb8a980c913c9be5a96bb18b2fe9da (v4.9-rc1) bnxt_en: Fixed the VF link status after a link state change
0d0fecc5b5bfddb0e67bef985cdeda2eac7ad6d8 (v4.9-rc1) powerpc/nvram: Fix a memory leak in err path
90ce35145cb622b3cd0007d50e1f6a5a97321235 (v4.9-rc1) powerpc/pseries: fix memory leak in queue_hotplug_event() error path
fd07160bb7180cdd0afeb089d8cdfd66002f17e6 (v4.9-rc1) xen-netfront: avoid packet loss when ethernet header crosses page boundary
f622b517563b0d3be6c41e932124e0b717149ad8 (v4.9-rc1) s390/vmur: fix irq pointer dereference in int handler
f666ac0dab5afaf6ebed2c361251581bfccc4003 (v4.9-rc1) perf hists: Fix width computation for srcline sort entry
88a7fcf961a27fbd248e3c914fc9df8327f7cdbb (v4.9-rc1) perf annotate: Do not ignore call instruction with indirect target
2458d66b245e39786bc5b51062e6d30aa5ad0282 (v4.9-rc1) ACPI / APEI: Send correct severity to calculate AER severity
1d72706f0485b58e151b5a7584c4c65d66670587 (v4.9-rc1) power: supply: bq27xxx_battery: allow kernel poll_interval parameter runtime update
58c3e3ac7a1daf56523567507a096a3e4026596d (v4.9-rc1) xtensa: xtfpga: use clock provider, don't update DT
ad9798967dd67f080bf0e8d611b382a5d292aae2 (v4.9-rc1) 6pack: fix buffer length mishandling
190aa3e77880a05332ea1ccb382a51285d57adb5 (v4.9-rc1) openvswitch: Fix Frame-size larger than 1024 bytes warning.
b2d3ea4a730f812b9c0f67a67b6762ce66ddb17c (v4.9-rc1) tcp: switch back to proper tcp_skb_cb size check in tcp_init()
2ad9d544f2497a7bf239c34bd2b86fd19683dbb5 (v4.9-rc1) cdc-acm: hardening against malicious devices
f71f1cf97c781db1be8ae0190e0983e1fceac14a (v4.9-rc1) md/bitmap: fix wrong cleanup
90bcf1338193da4c87fb7492c716f225b907acf4 (v4.9-rc1) md: fix a potential deadlock
6a0f53ff351dfd10e74752e57b9c27d3397a3c4d (v4.9-rc1) raid5: fix to detect failure of register_shrinker
e0d735c1cc2749598f2d29f60f9a16658fd96ae9 (v4.9-rc1) gfs2: fix to detect failure of register_shrinker
e7051556b63dac163a82db6e6f324196c0c81e5b (v4.9-rc1) i2c: octeon: Fix set SCL recovery function
a7e1f04905e5b2b90251974dddde781301b6be37 (v4.9-rc1) net/mlx4_core: Fix deadlock when switching between polling and event fw commands
636c2628086e40c86dac7ddc84a1c4b4fcccc6e3 (v4.9-rc1) net: skbuff: Remove errornous length validation in skb_vlan_pop()
c222f399045de480d4af0b9e4cdfff1a083e3e1d (v4.9-rc1) drm/sun4i: Fix formats usable by the primary plane
f0188ef8301ccbb128bbfd10751a9aeca8c9172e (v4.9-rc1) drm/sun4i: Fix the high buffer address mask
69bca80744eef58fa155e8042996b968fec17b26 (v4.9-rc1) xfs: Propagate dentry down to inode_change_ok()
fd5472ed44683cf593322a2ef54b9a7675dc780a (v4.9-rc1) ceph: Propagate dentry down to inode_change_ok()
62490330769c1ce5dcba3f1f3e8f4005e9b797e6 (v4.9-rc1) fuse: Propagate dentry down to inode_change_ok()
31051c85b5e2aaaf6315f74c72a732673632a905 (v4.9-rc1) fs: Give dentry to inode_change_ok() instead of inode
030b533c4fd4d2ec3402363323de4bb2983c9cee (v4.9-rc1) fs: Avoid premature clearing of capabilities
04fd4cb0b098789725d04e9d4a7e7dda373b1121 (v4.9-rc1) HID: alps: fix stick device not working after resume
46a41b512f6800b531e94bdf5f1ca0e226492d91 (v4.9-rc1) HID: alps: fix error return code in alps_input_configured()
669e0a51b1b50052b1615683cde64e1c28ae895f (v4.9-rc1) vt: Fix a read-past-array in vc_t416_color().
1664bc40d31403a755fe88307410ed858fe2c6c9 (v4.9-rc1) serial: mxs-auart: Fix missing clk_disable_unprepare() on error in mxs_get_clks()
4fa5cd5245b627db88c9ca08ae442373b02596b4 (v4.9-rc1) sched/core: Do not use smp_processor_id() with preempt enabled in smpboot_thread_fn()
57b978ada073106d8fc12614f504cb92366a7ce1 (v4.9-rc1) [media] s5p-cec: fix system and runtime PM integration
6e7122a3c83ad468037e7f22f324feccb6252bf4 (v4.9-rc1) [media] s5p-cec: Fix memory allocation failure check
cb47b415fd5cda7c9ef8f9d158e59f8af5bcb094 (v4.9-rc1) [media] s5c73m3: Fix entity function assignment for the OIF subdev
8bf46a39be910937d4c9e8d999a7438a7ae1a75b (v4.9-rc1) sched/fair: Fix SCHED_HRTICK bug leading to late preemption of tasks
033919e0f8debfc2e5cfb13edf8fbdeff5b47b7d (v4.9-rc1) [media] media: rc: fix deadlock when module ir_lirc_codec is removed
3aa601492babdf3acdec89e5aa9c44e1a357a4d8 (v4.9-rc1) clocksource/drivers/ti-32k: Prevent ftrace recursion
dd7e39bbfce1fa6de8315d790d1fe01e92cba44d (v4.9-rc1) Bluetooth: Fix NULL pointer dereference in mgmt context
7dc6f16c68757548a332a0c5fbe661987c2189a9 (v4.9-rc1) Bluetooth: Fix not updating scan rsp when adv off
866969668aebe9626c083b9ababc8f88454ce049 (v4.9-rc1) f2fs: fix to return error number of read_all_xattrs correctly
7f66ea03644e197a29af5a00a6e26ff120d8edd0 (v4.9-rc1) iwlwifi: mvm: correct rate_idx bounds-check
ace0e14f4fe5f5944d27d8bd4d3492ad0d2b09e2 (v4.9-rc1) SUNRPC: Fix corruption of xdr->nwords in xdr_copy_to_scratch
a6cebd41b83a271d5b1dcaa5b4676df899f8d4ea (v4.9-rc1) SUNRPC: Fix setting of buffer length in xdr_set_next_buffer()
fe036a0605d60d6c81ffdcd6241e9ae0013fe235 (v4.9-rc1) powerpc/64/kexec: Fix MMU cleanup on radix
40e1b1cfb529891307b21f6e336d6375d4662cb7 (v4.9-rc1) powerpc/pseries: Fix HV facility unavailable to use correct handler
af2e3a009e7f73c3def283a768ea2cef69ae883e (v4.9-rc1) powerpc/eeh: Skip finding bus until after failure reporting
c5a6d5f7faad8549bb5ff7e3e5792e33933c5b9f (v4.9-rc1) KVM: nVMX: Fix the NMI IDT-vectoring handling
f15823510246444052b35f148c7ae627842b0e05 (v4.9-rc1) i40e: fix setting user defined RSS hash key
a01c7f6709925919e2e3c6c190a92692f63f74e4 (v4.9-rc1) i40e: fix "dump port" command when NPAR enabled
8d9d927f4ab8d87fee91d9aa8bdcdf19a1787ce0 (v4.9-rc1) i40e: return correct opcode to VF
d4a0658d813ec72965a52f04f07258a4018ccb17 (v4.9-rc1) i40e: Fix to check for NULL
b3f5c7bc88bab134e9649e42d30be15e3775f00d (v4.9-rc1) i40e: Fix for extra byte swap in tunnel setup
ff918912e1b8ba4e743d1f0b06ced1d01969e17c (v4.9-rc1) i40e: avoid potential null pointer dereference when assigning len
2e91838bf7ffdedabdb29e091207d6531d04ef4f (v4.9-rc1) watchdog: core: Fix devres_alloc() allocation size
36b701fae12ac763a568037e4e7c96b5727a8b3e (v4.9-rc1) netfilter: nf_tables: validate maximum value of u32 netlink attributes
74a332e78e8f0e2b8bef7ebb6b3470bb0df1a0bf (v4.9-rc1) mtd: nand: timings: Fix tADL_min for ONFI 4.0 chips
fde85cfd2d079bdd733d7b07d9a5775a6f70f458 (v4.9-rc1) mtd: nand: Fix nand_command_lp() for 8bits opcodes
590abbdd273304b55824bcb9ea91840ea375575d (v4.9-rc1) initramfs: Escape colons in depfile
a3007446e53af07c53bdb4cabad7b3ea60859da4 (v4.9-rc1) sctp: fix the handling of SACK Gap Ack blocks
7b993855dfd5d87e07ac84285d3d9bb0c743dede (v4.9-rc1) drm/tilcdc: fix wrong error handling
e3978673f514fa4999f04dfad9bbd5bb70d0edc6 (v4.9-rc1) drivers: net: xgene: Fix MSS programming
cace564f8b6260e806f5e28d7f192fd0e0c603ed (v4.9-rc1) svcrdma: Tail iovec leaves an orphaned DMA mapping
9995237bba702281e0e8e677edd5bb225f4f6c30 (v4.9-rc1) svcrdma: Skip put_page() when send_reply() fails
999d4376c62828b260fbb59d5ab6bc28918ca448 (v4.9-rc1) platform/x86: asus-wmi: fix asus ux303ub brightness issue
9febcdc071aaec30d8dee4a21d91f6c7e9c62503 (v4.9-rc1) ACPICA: Tables: Fix "UNLOAD" code path lock issues
7a0b71dc80f2b829c8587267d188712f614a4727 (v4.9-rc1) ACPICA: Parser: Fix a regression in LoadTable support
eadc4fe17d04723373ada219d382b3b413b21dad (v4.9-rc1) watchdog: cadence_wdt: Fix the suspend resume
fcbd4bddb314346a35295701f385b9627bb3a137 (v4.9-rc1) i2c: uniphier-f: fix misdetection of incomplete STOP condition
c9cc599a96a6822c52cd72ed31dd7f813d792b4f (v4.9-rc1) net/mlx4_core: Fix QUERY FUNC CAP flags
a114580f8f3e5bdefc14d75d6c3ba7032210b980 (v4.9-rc1) ASoC: tpa6130a2: fix volume setting when no stream is running
a6cb91464b5b09c0ff749e4b01048f93ce450275 (v4.9-rc1) i40e: fix deleting mac filters
234dc4e67611c11bb3990abced26cb75b8ef262a (v4.9-rc1) i40e: cleanup ATR auto_disable_flags use
625f3eea40024d0fc6562fc737761bba696c662b (v4.9-rc1) powerpc/sgy_cts1000: Fix gpio_halt_cb()'s signature
64bfd68eaecdce7b86e179fe39662340c8aed20d (v4.9-rc1) i40e: Fix Flow Director raw_buf cleanup
63f1de882081919f2b548d04b6cf617398b8da12 (v4.9-rc1) powerpc/fsl_pci: Size upper inbound window based on RAM size
7a682575ad4829b4de3e672a6ad5f73a05826b82 (v4.9-rc1) netfilter: xt_socket: fix transparent match for IPv6 request sockets
36d050d913333ea21e9728cbbc1fc07ae5be8d6c (v4.9-rc1) m68knommu: fix IO write size in nettel pin set
8b44f00f8c952ab6eb658090383571b2ec7d253f (v4.9-rc1) x86/RAS/mce_amd_inj: Fix signed wrap around when decrementing index 'i'
52dc085a50c6b4b8143087ce194d0b193cb3662d (v4.9-rc1) Revert "HID: microsoft: fix invalid rdesc for 3k kbd"
a9f6273ff9c80dd2c226f7a2d5c16272e5092d3e (v4.9-rc1) s390/dasd: fix hanging offline processing
c020d722b110a44c613ef71e657e6dd4116e09d9 (v4.9-rc1) s390/dasd: fix panic during offline processing
c79a175175d5a908a7c4d923d44f36808f56536e (v4.9-rc1) Btrfs: fix memory leak of block group cache
07f6a480436595394a06a69d0ebc18fef6736197 (v4.9-rc1) btrfs: fix perms on demonstration debugfs interface
afce772e87c36c7f07f230a76d525025aaf09e41 (v4.9-rc1) btrfs: fix check_shared for fiemap ioctl
2571e739677f1e4c0c63f5ed49adcc0857923625 (v4.9-rc1) Btrfs: fix memory leak in reading btree blocks
6bdf131fac2336adb1a628f992ba32384f653a55 (v4.9-rc1) Btrfs: don't leak reloc root nodes on error
bc981641360183990de59da17f9f560f9150b801 (v4.9-rc1) brcmfmac: fix memory leak in brcmf_flowring_add_tdls_peer()
2b7425f3629b38c438f890c20c5faeca64b144ff (v4.9-rc1) brcmfmac: fix clearing entry IPv6 address
a7ed7828ecda0c2b5e0d7f55dedd4230afd4b583 (v4.9-rc1) brcmfmac: fix out of bound access on clearing wowl wake indicator
a958eab0ed7fdc1b977bc25d3af6efedaa945488 (v4.9-rc1) Btrfs: fix memory leak in do_walk_down
0ccd05285e7f5a8e297e1d6dfc41e7c65757d6fa (v4.9-rc1) btrfs: fix a possible umount deadlock
1afac196c16753f93d482eedb9aeb802e740e67e (v4.9-rc1) mwifiex: fix kernel crash for USB chipsets
5476f8030d9a9f7082ba5a4d4f0a1bfbf6936800 (v4.9-rc1) mwifiex: fix race condition causing tx timeout
3a589fae4a2cff317c3cabd4f76578ffd2761808 (v4.9-rc1) rtl8xxxu: Fix off by one error calculating pubq
332f51d7db13ffb7fcbe2407ed5b3667bc3750a7 (v4.9-rc1) gfs2: Initialize atime of I_NEW inodes
4c5f4bf412eabc355b9c2bc99f8283ca0bd7d6ef (v4.9-rc1) mmc: sunxi: Disable sample clks on remove
41f469cac2663a41a7b0c84cb94e8f7024385ae4 (v4.9-rc1) mmc: moxart: fix wait_for_completion_interruptible_timeout return variable type
66fe6ac5d5e120b85c2ed310eb25b15a77c110c0 (v4.9-rc1) mmc: sdhci-bcm-kona: fix error return code in sdhci_bcm_kona_probe()
b2db9c6743f2622f279af3a022a47a08e6e6f2c9 (v4.9-rc1) mmc: sdhci-of-arasan: Don't power PHY w/ slow/no clock
b2ca77c98390304722c2baf289b181d6f0fa3c49 (v4.9-rc1) mmc: sdhci-of-arasan: Properly set corecfg_clockmultiplier on rk3399
4ae12588e028f66a505b2287e8237a1815ee31a3 (v4.9-rc1) mmc: tegra: Mark 64-bit DMA broken on Tegra124
6a3d8ced09482bd5b0e831740d83ed722aa2c5e6 (v4.9-rc1) mmc: sdhci-brcmstb: Fix incorrect capability
086acff2cf8a6a41f533e5da5f51923db5f68df4 (v4.9-rc1) scsi: scsi_dh_alua: Fix memory leak in alua_rtpg()
466678790650a9dff6f107ca09a2f5e6480799e9 (v4.9-rc1) thermal: rockchip: fixes the period time for tsadc
1955351da41caa1dbf4139191358fed84909d64b (v4.9-rc1) bpf: Set register type according to is_valid_access()
43da7575cdecaf5af2d6b3f3a9e4e6c9144be428 (v4.9-rc1) omapfb: fix return value check in dsi_bind()
59921b239056fb6389a865083284e00ce0518db6 (v4.9-rc1) matroxfb: fix size of memcpy
ca8b3fa7ea44738f02979dfdc72a1d75a27dcddb (v4.9-rc1) staging: most: fix error return code in audio_probe_channel()
9a54cf462d6f3c383a5a4f5fe15c020a03db44e6 (v4.9-rc1) HID: alps: fix multitouch cursor issue
98695eab3c2de34265ac797b1c057215f8e78a1a (v4.9-rc1) ASoC: wm8991: fix wrong usage of DECLARE_TLV_DB_LINEAR()
f2b2f6dcd48adf81007b66e39bb7ca21d9bde250 (v4.9-rc1) ASoC: stac9766: fix wrong usage of DECLARE_TLV_DB_LINEAR()
b1a318de9bc4946ad4a20481ab3ce28c2e8cd72c (v4.9-rc1) NFSv4: Fix a race in nfs_inode_reclaim_delegation()
1393d9612ba02d8bb8dae1dab319807e92354fe3 (v4.9-rc1) NFSv4: Fix a race when updating an open_stateid
bfc505ded01e3c57d12c6f939f352200655d8635 (v4.9-rc1) pNFS: Fix atime updates on pNFS clients
ac28b41aac35e1000712aaa3aee19bf30fd9a312 (v4.9-rc1) igb: restore PPS signal on igb_ptp_reset
b7862742feadf22cc1496bb6b460236a900512db (v4.9-rc1) dmaengine: edma: Fix of_device_id data parameter usage (legacy vs TPCC)
5990b39e26db1126f475f94ea78fe07ea3782e28 (v4.9-rc1) staging: unisys: visorbus: fix vbus info generated for s-Par livedumps
931eb6b7fee31f63d33fd5e1e62a60375fa6fb32 (v4.9-rc1) ath10k: fix error return code in ahb
b93015057e31933e1ab600290e014779efe5b5a3 (v4.9-rc1) ath6kl: fix return value in ath6kl_wmi_set_pvb_cmd
5e149073ba427f99c5e751e558670d034a278f77 (v4.9-rc1) mtdpart: Propagate _get/put_device()
2a82ec21b9ba342dc90e054458e430f577beca89 (v4.9-rc1) drm/amdgpu: fix initializing the VM last eviction counter
2befa60e4c538a094853ea00ac03b209b7ad272d (v4.9-rc1) drm/amdgpu: fix initializing the VM BO shadow
186294f9c57856887b0efe3ce0dd8ca66605caef (v4.9-rc1) drm/amdgpu: fix GART_DEBUGFS define
f0b99f70e92dcdc4fecf5cf7ce2f6857ddd82c65 (v4.9-rc1) PCI: Ignore requested alignment for PROBE_ONLY and fixed resources
5c01ad60b8a23f8ff59b9a5a756f07ed08f0b6d1 (v4.9-rc1) perf record: Fix error paths
4d34e10a9f9a38c611cac0deda8f91b064282747 (v4.9-rc1) perf intel-pt: Fix missing error codes processing auxtrace_info
f8da4b5155ed9a639ee4250746b5f7ffa6302bf6 (v4.9-rc1) perf probe: Ignore the error of finding inline instance
0ad45b33c58dca60dec7e1fb44766753bc4a7a38 (v4.9-rc1) perf probe: Skip if the function address is 0
35726d3a4ca9ce10811032baf6fa0b3529aac087 (v4.9-rc1) perf probe: Fix to cut off incompatible chars from group name
d5a00296a63fdd049273f86d0a0cdef6b230f8e6 (v4.9-rc1) perf probe: Match linkage name with mangled name
8ff232c1a819c2e98d85974a3bff0b7b8e2970ed (v4.9-rc1) dm mpath: always return reservation conflict without failing over
089bd46d8bc1fe5a28351e82e4adcaa5a40121b5 (v4.9-rc1) spi: pxa2xx: Fix build error because of missing header
73811c942954a1d2470656d1bd9e990e327ac580 (v4.9-rc1) scsi: ufs: Fix error return code in ufshcd_init()
5404fb7cec7473413bc1dd2d114dbe7c291dfb15 (v4.9-rc1) scsi: ufs: Kconfig fix
1ce788d24268a33513d832d9030ceab93f1c2ce2 (v4.9-rc1) ahci: qoriq: Revert "ahci: qoriq: Disable NCQ on ls2080a SoC"
8f37961cf22304fb286c7604d3a7f6104dcc1283 (v4.9-rc1) sched/core, x86/topology: Fix NUMA in package topology bug
ab522e33f91799661aad47bebb691f241a9f6bb8 (v4.9-rc1) sched/fair: Fix fixed point arithmetic width for shares and effective load
38a3e1fc1dac480f3672ab22fc97e1f995c80ed7 (v4.9-rc1) sched/wait: Fix abort_exclusive_wait(), it should pass TASK_NORMAL to wake_up()
a399d233078edbba7cf7902a6d080100cdf75636 (v4.9-rc1) sched/core: Fix incorrect utilization accounting when switching to fair class
49bd21efe7fc84f9c82c8475b8ff6f8b865b1692 (v4.9-rc1) sched/core: Fix set_user_nice()
fadb2fb8af5348c1bc59cab17c6f8bf515e50d55 (v4.9-rc1) f2fs: fix to avoid race condition when updating sbi flag
9f0df936b1b93a7fab5b9ed73009f43369c121ea (v4.9-rc1) dmaengine: coh901318: fix integer overflow when shifting more than 32 places
fc878efe84c342441706fcdf776e08fe455fe9c1 (v4.9-rc1) dmaengine: jz4780: fix resource leaks on error exit return
3f5f4959b144d9ba6657ccc0ab9edcc78fcc1d8a (v4.9-rc1) f2fs: fix to commit bio cache after flushing node pages
0b115ef100a3734265a46e13707446d2de00df5c (v4.9-rc1) IB/hfi1: Fix the count of user packets submitted to an SDMA engine
60368186fd853899c1819bcefa47f85fe8d5e5ad (v4.9-rc1) IB/hfi1: Fix user-space buffers mapping with IOMMU enabled
584d9577ffecdb411f1fd0d160e76a1e141554c8 (v4.9-rc1) IB/hfi1: Fix locking scheme for affinity settings
3a6982dfd3a7931d679a1aac651fda83ecbad0a0 (v4.9-rc1) IB/hfi1: Fix resource release in context allocation
f97581cfa6e7db9818520597b8a44f8268d75013 (v4.9-rc1) crypto: caam - treat SGT address pointer as u64
3f84e454eb6cd712bf1fed6870df46bfe8c772f0 (v4.9-rc1) UBI: fix add_fastmap() to use the vid_hdr passed in argument
ecbfa8eabae9cd73522d1d3d15869703c263d859 (v4.9-rc1) UBI: fastmap: scrub PEB when bitflips are detected in a free PEB EC header
74e9c700bcb7529a0ab3f57d1125f4494ec97b3c (v4.9-rc1) ubifs: fix host xattr_len when changing xattr
b82d44d78480faff7456e9e0999acb9d38666057 (v4.9-rc1) net: fec: set mac address unconditionally
63d75463c91a5b5be7c0aca11ceb45ea5a0ae81d (v4.9-rc1) net: pktgen: fix pkt_size
f7d49bce8e741e1e6aa14ce4db1b6cea7e4be4e8 (v4.9-rc1) openvswitch: mpls: set network header correctly on key extract
bd85f4b37ddf2da22ccf5b29d264b2459b6722df (v4.9-rc2) ipmi: fix crash on reading version from proc after unregisted bmc
c2e82414884718ad6ec33a7528606cb07cf55cb4 (v4.9-rc1) rbd: mark the original request as done if stat request fails
1afe478569ba7414dde8a874dda9c1ea621c0c63 (v4.9-rc1) ceph: fix error handling of start_read()
db4a63aab43b2040292b2023512864702b5f9799 (v4.9-rc1) ceph: fix mandatory flock check
ead1a57457c0324a167f3f9e3a70e26c2d75fb12 (v4.9-rc1) perf probe: Check if *ptr2 is zero and not ptr2
0e97cd4e4632e385b3bf7edcf0c803de0487212a (v4.9-rc1) net: hns: fix port unavailable after hnae_reserve_buffer_map fail
6771cbf9446121cb7b64810395391712a03b899d (v4.9-rc1) net: hns: bug fix about setting coalsecs-usecs to 0
ea870bf93c5cd3635a07a0570cb7fe61436b0c3d (v4.9-rc1) net: hns: fix port not available after testing loopback
58035fd92dcd54c8954c0813f229346b8febd5c0 (v4.9-rc1) net: hns: fix the bug of forwarding table
2162a4a1ed8b61afed3b76137aff3ea031d9c6a6 (v4.9-rc1) net: hns: bug fix about broadcast/multicast packets
9426ce754fab0f02a45b61402119c57de446ffa3 (v4.9-rc1) Btrfs: fix extent buffer bitmap tests on big-endian systems
265d426d7470d53e900379960eef5b4482125089 (v4.9-rc1) Input: elan_i2c - fix return tests of i2c_smbus_read_block_data()
f39acc84aad10710e89835c60d3b6694c43a8dd9 (v4.9-rc1) net/sched: act_vlan: Push skb->data to mac_header prior calling skb_vlan_*() functions
b6a7920848cab619b5e434fdc0338778c63ef3f3 (v4.9-rc1) net: skbuff: Limit skb_vlan_pop/push() to expect skb->data at mac header
b9118b7221ebb12156d2b08d4d5647bc6076d6bb (v4.9-rc1) ptp: Fix resource leak in case of error
4ce20abc645fc1822e86d9845a8562347e877b36 (v4.9-rc1) i40e: fix MSI-X vector redistribution if hw limit is reached
abd97a94ba913d121a920d5541aba1e568be6972 (v4.9-rc1) i40e: fix sideband flow director vector allocation
066bcd785aac9c10e5f9b873f9bd2e438653340d (v4.9-rc1) powerpc/powernv: Specify proper data type for PCI_SLOT_ID_PREFIX
0e7736c6b806b24c693367196a076c78328ed742 (v4.9-rc1) powerpc/powernv: Fix data type for @r in pnv_ioda_parse_m64_window()
93409033ae653f1c9a949202fb537ab095b2092f (v4.9-rc1) net: Add netdev all_adj_list refcnt propagation to fix panic
29c4684e76193bc318305b5d8ebe40a4141f029e (v4.9-rc1) fsl/fman: fix loadable module compilation
0af46590d415ee672f9056c7cda5da63e02dbebf (v4.9-rc1) fsl/fman: fix return value checking
dbb5918cb333dfeb8897f8e8d542661d2ff5b9a0 (v4.9-rc1) netfilter: fix namespace handling in nf_log_proc_dostring
2fa46c130193300f06e68727ae98ec9f6184cad4 (v4.9-rc1) netfilter: nft_limit: fix divided by zero panic
2685f826e5ffd1ab73b26fd5ac4e1f7048cb6ff6 (v4.9-rc1) powerpc/fadump: Fix build break when CONFIG_PROC_VMCORE=n
8ddee393a566a4df0b2dbbf1baeaad3a61999b6b (v4.9-rc1) dt-bindings: add vendor prefix for Auvidea GmbH
e6e5b7b6d0de7e2c25b45fc7a0c914ed6aa1d5e8 (v4.9-rc1) MIPS: Octeon: Fix PCI interrupt routing on D-Link DSR-500N.
09185a5999c733ec37220ad4a0baa7598a2044d2 (v4.9-rc1) mfd: ucb1x00: Allow IRQ probing to work with IRQs > 32
75d8a2b041f24ee5cb8b701c2cc62826b65dfb8c (v4.9-rc1) mfd: arizona: Add sensible return value to some error paths
3612b27cfb4a074c83cc74b928517aca2d872861 (v4.9-rc1) mfd: arizona: Use suspend_noirq inplace of suspend_late
bbc2ceeb3220e54c7574f0b5e3a252fd9a62cf8a (v4.9-rc1) Input: synaptics-rmi4 - fix error handling in SPI transport driver
261d7794c49b9a3bb5115c5ffc452e00f969bf43 (v4.9-rc1) Input: synaptics-rmi4 - fix error handling in I2C transport driver
ea908ba8f73446dfbf87ff71f7cadb1994d2c5bb (v4.9-rc2) drm/armada: fix clock counts
feb7d387a6cf6c1ec66d4a2b6d4b2cc52309876e (v4.9-rc1) mlxsw: spectrum: Fix misuse of hard_header_len
251d41c58b765f00d73b1b4230cad256e25f2735 (v4.9-rc1) mlxsw: switchx2: Fix misuse of hard_header_len
997198ba1ed691c09457120576c27dbd953d0557 (v4.9-rc1) fs/block_dev.c: return the right error in thaw_bdev()
3ffc17d8768be705e292ac4c2e3ab1f18dc06047 (v4.9-rc1) MIPS: Adjust MIPS64 CAC_BASE to reflect Config.K0
ffae955d49e6cff28589d6e7388bb9275f9ce2d1 (v4.9-rc1) IB/rxe: Fix sending out loopback packet on netdev interface.
d9703650f4aba7555fde92636d8d9a689029e8f8 (v4.9-rc1) IB/{rxe,core,rdmavt}: Fix kernel crash for reg MR
b9fe856e545491fd57fc7ca195d0123df0124e7c (v4.9-rc1) rdma_rxe: Ensure rdma_rxe init occurs at correct time
2b29bf16611a1aabb310406dd171dce6e6d51322 (v4.9-rc1) drm/vc4: Increase timeout for HDMI_SCHEDULER_CONTROL changes.
6664498280cf17a59c3e7cf1a931444c02633ed1 (v4.9-rc1) packet: call fanout_release, while UNREGISTERING a netdev
d35c99ff77ecb2eb239731b799386f3b3637a31e (v4.9-rc1) netlink: do not enter direct reclaim from netlink_dump()
4af1474e6198b10fee7bb20e81f7e033ad1b586c (v4.9-rc1) net: bgmac: Fix errant feature flag check
c7e163fe282f34efdf77fb09b333529de97a6a10 (v4.9-rc1) Bluetooth: btusb: Fix atheros firmware download error
fd10ed8e6f4246ac5e18b921ba50562959502117 (v4.9-rc1) IB/mlx4: Fix possible vl/sl field mismatch in LRH header in QP1 packets
4e65e9381c7ac211ec2133e473fcbdd8656c779a (v4.9-rc1) /dev/dax: fix Kconfig dependency build breakage
252e5c6e2e5b4557599ef86ea5d02b0395e9056c (v4.9-rc1) mm/vmalloc.c: fix align value calculation error
06ed29989f39f5129d4f76f4a2d7ce2efa46a6a1 (v4.9-rc1) mm, compaction: make whole_zone flag ignore cached scanner positions
e506b99696a296e9aba2e5f3bc5768aa7d8e2396 (v4.9-rc1) mem-hotplug: fix node spanned pages when we have a movable node
e780149bcd4be171421535db0514fa9ff556cb87 (v4.9-rc1) mm: fix set pageblock migratetype in deferred struct page init
2382705f22c1436a153800cf6051b08f0ea14838 (v4.9-rc1) mm/nobootmem.c: remove duplicate macro ARCH_LOW_ADDRESS_LIMIT statements
0cf2f6f6dc605e587d2c1120f295934c77e810e8 (v4.9-rc1) mm: mlock: check against vma for actual mlock() size
03e86dba5b628a13a58adae62e5b918b969ae93e (v4.9-rc1) cpu: fix node state for whether it contains CPU
d66ba15bde22703b3c0cec6782519cb0765a6777 (v4.9-rc1) memory-hotplug: fix store_mem_state() return value
87744ab3832b83ba71b931f86f9cfdb000d07da5 (v4.9-rc1) mm: fix cache mode tracking in vm_insert_mixed()
3250845d0526407330592dd43b9f1354b6fe7a14 (v4.9-rc1) Revert "mm, oom: prevent premature OOM killer invocation for high order request"
e86f15ee64d8ee46255d964d55f74f5ba9af8c36 (v4.9-rc1) mm: vma_merge: fix vm_page_prot SMP race condition against rmap_walk
05fd007e46296afb24d15c7d589d535e5a5b9d5c (v4.9-rc1) console: don't prefer first registered if DT specifies stdout-path
21d9629a7abd87512d062fbe57b04a1baedf93d2 (v4.9-rc1) Fixing a bug in team driver due to incorrect 'unsigned int' to 'int' conversion
912e27e85e070596ed4964ebde29fa9781390f2a (v4.9-rc1) xen-netback: make sure that hashes are not send to unaware frontends
776482cd8d8af063878ed22a1a0d44e4c6238a94 (v4.9-rc1) wan/fsl_ucc_hdlc: Fix size used in dma_free_coherent()
4c3897cce0774b6196f59f98a44eed7e011db5aa (v4.9-rc1) befs: make consistent use of befs_error()
f5ef017e1195d0a8c69a82bf95fea9c776b93ff0 (v4.9-rc1) be2net: NCSI FW section should be properly updated with ethtool for BE3
f3d6ad84807254954fc69bdebb6123e5a2883baf (v4.9-rc1) be2net: Fix TX stats for TSO packets
84baf1725dc532d9746df2d216c1921154767109 (v4.9-rc1) ACPI / fan: Fix error reading cur_state
3d1355b3cfad53feba76a73b052c757a7de7f4de (v4.9-rc2) HID: hid-led: fix issue with transfer buffer not being dma capable
1bcaa05ebee115213e34f1806cc6a4f7a6175a88 (v4.9-rc2) Revert "HID: dragonrise: fix HID Descriptor for 0x0006 PID"
fc605f1d8060133596bb6083fc4b7b306d1d5931 (v4.9-rc2) mmc: sdhci: Fix SDHCI_QUIRK2_STOP_WITH_TC
fee686b74a9c115d3c4c851eb6613d1378ad0e0c (v4.9-rc2) mmc: sdhci-pci: Fix bus power failing to enable for some Intel controllers
cd27e455042da85b088bdd3a6e00da1d5b4df9f1 (v4.9-rc1) [btrfs] fix check_direct_IO() for non-iovec iterators
0cc482ee41d609811bd7b91abdbcd1c5dbdfb783 (v4.9-rc1) ocfs2: fix memory leak in dlm_migrate_request_handler()
22dd6d356628bccb1a83e12212ec2934f4444e2c (v4.9-rc1) block: invalidate the page cache when issuing BLKZEROOUT
915045fe15a5fc376f263d594aee4fca4fba5323 (v4.9-rc1) radix-tree: 'slot' can be NULL in radix_tree_next_slot()
1973a122697168c0585ffce9d4bd46745ddaa6f6 (v4.9-rc1) autofs: fix autofs4_fill_super() error exit handling
aa8419367b62044e92bd7993eeb83d861b59bafa (v4.9-rc1) autofs: fix dev ioctl number range check
390855547c3d20cda0646dc7ac83110208303dd6 (v4.9-rc1) autofs: fix print format for ioctl warning message
f491bd71118beba608d39ac2d5f1530e1160cd2e (v4.9-rc1) pipe: relocate round_pipe_size() above pipe_set_size()
d37d41666408102bf0ac8e48d8efdce7b809e5f6 (v4.9-rc1) pipe: move limit checking logic into pipe_set_size()
3734a13b96ebf039b293d8d37a934fd1bd9e03ab (v4.9-rc1) pipe: refactor argument for account_pipe_buffers()
b0b91d18e2e97b741b294af9333824ecc3fadfd8 (v4.9-rc1) pipe: fix limit checking in pipe_set_size()
09b4d1990094dd22c27fb0163534db419458569c (v4.9-rc1) pipe: simplify logic in alloc_pipe_info()
a005ca0e6813e1d796a7422a7e31d8b8d6555df1 (v4.9-rc1) pipe: fix limit checking in alloc_pipe_info()
ab47deb6bb03ddf1c1e253bfbbdbf5f867975ca5 (v4.9-rc1) pps: kc: fix non-tickless system config dependency
2a1613a586de91457fa93c3e468a6e2438fe52a0 (v4.9-rc1) ipc/sem.c: add cond_resched in exit_sme
40c30bbf3377babc4d6bb16b699184236a8bfa27 (v4.9-rc2) platform/x86: ideapad-laptop: Add Lenovo Yoga 910-13IKB to no_hw_rfkill dmi list
1fa9ce8d0e903449842943a77e8ba100169964be (v4.9-rc2) badblocks: fix overlapping check for clearing
7065906096273b39b90a512a7170a6697ed94b23 (v4.9-rc2) nvme: Delete created IO queues on reset
e311404f7925f6879817ebf471651c0bb5935604 (v4.9-rc1) ACPI / PAD: don't register acpi_pad driver if running as Xen dom0
b0c80bd5d2e317f7596fe2badc1a3379fb3211e5 (v4.9-rc2) drm/radeon: fix up dp aux tear down (v2)
9305ee6fe52035f63d70d023235b792ba22107f0 (v4.9-rc2) drm/radeon: fix modeset tear down code
c611152373e84a7677cd7d496e849de4debdab66 (v4.9-rc2) perf top: Fix refreshing hierarchy entries on TUI
02a9079c66341836c4914c33c06a73245060df2e (v4.9-rc1) drivers/ptp: Fix kernel memory disclosure
ab102b80cef28c20b3ef7794806c3a982c6444fc (v4.9-rc1) net_sched: reorder pernet ops and act ops registrations
be9b3174c49109457c490a0ad8976aaeb3df5585 (v4.9-rc1) stmmac: fix ptp init for gmac4
8ce48623f0cf3d632e32448411feddccb693d351 (v4.9-rc1) ipv6: tcp: restore IP6CB for pktoptions skbs
eeb2fa0c97ba661f8b7fb210a1de10928b67a47b (v4.9-rc2) drm/amdgpu: potential NULL dereference in debugfs code
de74025052ef63852d80a444ea19f2bdd7bec63f (v4.9-rc1) CIFS: Reset read oplock to NONE if we have mandatory locks after reopen
655042cc1406fcec20aa7ffd7d790ada18ac5211 (v4.9-rc1) overlayfs: Fix setting IOP_XATTR flag
d0679cfaf54c9e42e3ba4f8d5e67969932040d16 (v4.9-rc2) mailbox: PCC: Fix return value of pcc_mbox_request_channel()
f72f94555aa32b2c4374dde5ad9b960cc4ff32e2 (v4.9-rc2) ceph: fix readdir vs fragmentation race
b0dddf6c147e6fe61374d625c4bb2b7c52018639 (v4.9-rc2) efi/arm: Fix absolute relocation detection for older toolchains
1a40f0a36fb669226f0fd29aaece5ff7b6399e80 (v4.9-rc2) iscsi-target: fix iscsi cmd leak
1b4c59b7a1d0b9d8019254a5f2e35b2663f49a9e (v4.9-rc2) target: fix potential race window in target_sess_cmd_list_waiting()

--

Thanks,
Sasha

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: Linux 4.8.6
  2016-10-31 20:26 ` Levin, Alexander
@ 2016-11-14  7:10   ` Greg KH
  0 siblings, 0 replies; 4+ messages in thread
From: Greg KH @ 2016-11-14  7:10 UTC (permalink / raw)
  To: Levin, Alexander
  Cc: linux-kernel, Andrew Morton, torvalds, stable, lwn, Jiri Slaby

On Mon, Oct 31, 2016 at 04:26:39PM -0400, Levin, Alexander wrote:
> On Mon, Oct 31, 2016 at 06:47:10AM -0600, Greg KH wrote:
> > I'm announcing the release of the 4.8.6 kernel.
> 
> Hey Greg,
> 
> I've put more work into improving my filters to find stable commits upstream.
> 
> The list below, taken from v4.8..v4.9-rc2 commits contains mostly commits that aren't tagged for stable, but should probably be there. In this case, it also includes one CVE fix that falls under that description.
> 
> Note that I've filtered "prerequisite" commits out to leave only the actual commits we're interested in, so for example - for the first commit on the list you'd need either bbdc070 ("drm/i915: rename macro parameter(ring) to (engine)") or backport those changes yourself. If the list below looks good to you I can send you a pull request with a complete branch.

[what happened to wrapping email lines...]

This looks good, but it's a lot of patches, what are you using to
determine what "should be here"?  I should have caught up with all of
the patches marked as "stable@", and almost all of the ones that looked
correct that were marked with "fixes:", so is there any way you can
rebase your tree to see what is left?

And yes, a git tree would be great to pull from, that makes it easier to
look at for me.

thanks,

greg k-h

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2016-11-14  7:10 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-10-31 12:47 Linux 4.8.6 Greg KH
2016-10-31 12:47 ` Greg KH
2016-10-31 20:26 ` Levin, Alexander
2016-11-14  7:10   ` Greg KH

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).