--- /dev/null
+From 7f1241ed1a06b4846ad7a2a57eb088b757e58e16 Mon Sep 17 00:00:00 2001
+From: Ville Syrjälä <ville.syrjala@linux.intel.com>
+Date: Thu, 18 Dec 2014 11:44:06 +0200
+Subject: drm/i915: Kill check_power_well() calls
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+From: Ville Syrjälä <ville.syrjala@linux.intel.com>
+
+commit 7f1241ed1a06b4846ad7a2a57eb088b757e58e16 upstream.
+
+pps_{lock,unlock}() call intel_display_power_{get,put}() outside
+pps_mutes to avoid deadlocks with the power_domain mutex. In theory
+during aux transfers we should usually have the relevant power domain
+references already held by some higher level code, so this should not
+result in much overhead (exception being userspace i2c-dev access).
+However thanks to the check_power_well() calls in
+intel_display_power_{get/put}() we end up doing a few Punit reads for
+each aux transfer. Obviously doing this for each byte transferred via
+i2c-over-aux is not a good idea.
+
+I can't think of a good way to keep check_power_well() while eliminating
+the overhead, so let's just remove check_power_well() entirely.
+
+Fixes a driver init time regression introduced by:
+ commit 773538e86081d146e0020435d614f4b96996c1f9
+ Author: Ville Syrjälä <ville.syrjala@linux.intel.com>
+ Date: Thu Sep 4 14:54:56 2014 +0300
+
+ drm/i915: Reset power sequencer pipe tracking when disp2d is off
+
+Credit goes to Jani for figuring this out.
+
+v2: Add the regression note in the commit message.
+
+Cc: Egbert Eich <eich@suse.de>
+Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=86201
+Tested-by: Wendy Wang <wendy.wang@intel.com>
+Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
+[Jani: s/intel_runtime_pm.c/intel_pm.c/g and wiggle for 3.18]
+Signed-off-by: Jani Nikula <jani.nikula@intel.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/gpu/drm/i915/intel_pm.c | 27 ---------------------------
+ 1 file changed, 27 deletions(-)
+
+--- a/drivers/gpu/drm/i915/intel_pm.c
++++ b/drivers/gpu/drm/i915/intel_pm.c
+@@ -6520,29 +6520,6 @@ static void chv_pipe_power_well_disable(
+ chv_set_pipe_power_well(dev_priv, power_well, false);
+ }
+
+-static void check_power_well_state(struct drm_i915_private *dev_priv,
+- struct i915_power_well *power_well)
+-{
+- bool enabled = power_well->ops->is_enabled(dev_priv, power_well);
+-
+- if (power_well->always_on || !i915.disable_power_well) {
+- if (!enabled)
+- goto mismatch;
+-
+- return;
+- }
+-
+- if (enabled != (power_well->count > 0))
+- goto mismatch;
+-
+- return;
+-
+-mismatch:
+- WARN(1, "state mismatch for '%s' (always_on %d hw state %d use-count %d disable_power_well %d\n",
+- power_well->name, power_well->always_on, enabled,
+- power_well->count, i915.disable_power_well);
+-}
+-
+ void intel_display_power_get(struct drm_i915_private *dev_priv,
+ enum intel_display_power_domain domain)
+ {
+@@ -6562,8 +6539,6 @@ void intel_display_power_get(struct drm_
+ power_well->ops->enable(dev_priv, power_well);
+ power_well->hw_enabled = true;
+ }
+-
+- check_power_well_state(dev_priv, power_well);
+ }
+
+ power_domains->domain_use_count[domain]++;
+@@ -6593,8 +6568,6 @@ void intel_display_power_put(struct drm_
+ power_well->hw_enabled = false;
+ power_well->ops->disable(dev_priv, power_well);
+ }
+-
+- check_power_well_state(dev_priv, power_well);
+ }
+
+ mutex_unlock(&power_domains->lock);
--- /dev/null
+From 78051e3b7e35722ad3f31dd611f1b34770bddab8 Mon Sep 17 00:00:00 2001
+From: Bandan Das <bsd@redhat.com>
+Date: Sat, 6 Dec 2014 20:32:16 +0530
+Subject: KVM: nVMX: Disable unrestricted mode if ept=0
+
+From: Bandan Das <bsd@redhat.com>
+
+commit 78051e3b7e35722ad3f31dd611f1b34770bddab8 upstream.
+
+If L0 has disabled EPT, don't advertise unrestricted
+mode at all since it depends on EPT to run real mode code.
+
+Fixes: 92fbc7b195b824e201d9f06f2b93105f72384d65
+Reviewed-by: Jan Kiszka <jan.kiszka@siemens.com>
+Signed-off-by: Bandan Das <bsd@redhat.com>
+Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ arch/x86/kvm/vmx.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+--- a/arch/x86/kvm/vmx.c
++++ b/arch/x86/kvm/vmx.c
+@@ -2377,12 +2377,12 @@ static __init void nested_vmx_setup_ctls
+ nested_vmx_secondary_ctls_low = 0;
+ nested_vmx_secondary_ctls_high &=
+ SECONDARY_EXEC_VIRTUALIZE_APIC_ACCESSES |
+- SECONDARY_EXEC_UNRESTRICTED_GUEST |
+ SECONDARY_EXEC_WBINVD_EXITING;
+
+ if (enable_ept) {
+ /* nested EPT: emulate EPT also to L1 */
+- nested_vmx_secondary_ctls_high |= SECONDARY_EXEC_ENABLE_EPT;
++ nested_vmx_secondary_ctls_high |= SECONDARY_EXEC_ENABLE_EPT |
++ SECONDARY_EXEC_UNRESTRICTED_GUEST;
+ nested_vmx_ept_caps = VMX_EPT_PAGE_WALK_4_BIT |
+ VMX_EPTP_WB_BIT | VMX_EPT_2MB_PAGE_BIT |
+ VMX_EPT_INVEPT_BIT;