summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlexandre Oliva <lxoliva@fsfla.org>2016-07-19 06:29:33 +0000
committerAlexandre Oliva <lxoliva@fsfla.org>2016-07-19 06:29:33 +0000
commit32e6237e75be21b8e908b299ac521add9dda97aa (patch)
treeb54aa577af189fac2bdf24a62d9b963c7414fc4d
parent7f0ca8af397dcb3294a3266f7350c64d1a21c308 (diff)
downloadlinux-libre-raptor-32e6237e75be21b8e908b299ac521add9dda97aa.tar.gz
linux-libre-raptor-32e6237e75be21b8e908b299ac521add9dda97aa.zip
4.7.0-0.rc7.git0.1.fc25.gnu
-rw-r--r--freed-ora/current/master/0001-Work-around-for-addition-of-metag-def-but-not-reloca.patch50
-rw-r--r--freed-ora/current/master/0001-drm-i915-Reorganize-WM-structs-unions-in-CRTC-state.patch227
-rw-r--r--freed-ora/current/master/0002-drm-i915-Rename-s-skl_compute_pipe_wm-skl_build_pipe.patch50
-rw-r--r--freed-ora/current/master/0003-drm-i915-gen9-Cache-plane-data-rates-in-CRTC-state.patch204
-rw-r--r--freed-ora/current/master/0004-drm-i915-gen9-Allow-calculation-of-data-rate-for-in-.patch131
-rw-r--r--freed-ora/current/master/0005-drm-i915-gen9-Store-plane-minimum-blocks-in-CRTC-wm-.patch57
-rw-r--r--freed-ora/current/master/0006-drm-i915-Track-whether-an-atomic-transaction-changes.patch58
-rw-r--r--freed-ora/current/master/0007-drm-i915-gen9-Allow-skl_allocate_pipe_ddb-to-operate.patch342
-rw-r--r--freed-ora/current/master/0008-drm-i915-Add-distrust_bios_wm-flag-to-dev_priv-v2.patch84
-rw-r--r--freed-ora/current/master/0009-drm-i915-gen9-Compute-DDB-allocation-at-atomic-check.patch244
-rw-r--r--freed-ora/current/master/0010-drm-i915-gen9-Drop-re-allocation-of-DDB-at-atomic-co.patch379
-rw-r--r--freed-ora/current/master/0011-drm-i915-gen9-Calculate-plane-WM-s-from-state.patch81
-rw-r--r--freed-ora/current/master/0012-drm-i915-gen9-Allow-watermark-calculation-on-in-flig.patch146
-rw-r--r--freed-ora/current/master/0013-drm-i915-gen9-Use-a-bitmask-to-track-dirty-pipe-wate.patch81
-rw-r--r--freed-ora/current/master/0014-drm-i915-gen9-Propagate-watermark-calculation-failur.patch244
-rw-r--r--freed-ora/current/master/0015-drm-i915-gen9-Calculate-watermarks-during-atomic-che.patch302
-rw-r--r--freed-ora/current/master/0016-drm-i915-gen9-Reject-display-updates-that-exceed-wm-.patch53
-rw-r--r--freed-ora/current/master/0017-drm-i915-Remove-wm_config-from-dev_priv-intel_atomic.patch105
-rw-r--r--freed-ora/current/master/ALSA-timer-Fix-leak-in-SNDRV_TIMER_IOCTL_PARAMS.patch33
-rw-r--r--freed-ora/current/master/ALSA-timer-Fix-leak-in-events-via-snd_timer_user_cca.patch34
-rw-r--r--freed-ora/current/master/ALSA-timer-Fix-leak-in-events-via-snd_timer_user_tin.patch34
-rw-r--r--freed-ora/current/master/Add-EFI-signature-data-types.patch20
-rw-r--r--freed-ora/current/master/Add-an-EFI-signature-blob-parser-and-key-loader.patch31
-rw-r--r--freed-ora/current/master/Add-option-to-automatically-enforce-module-signature.patch85
-rw-r--r--freed-ora/current/master/Add-secure_modules-call.patch16
-rw-r--r--freed-ora/current/master/Add-sysrq-option-to-disable-secure-boot-mode.patch38
-rw-r--r--freed-ora/current/master/Fix-tegra-to-use-stdout-path-for-serial-console.patch318
-rw-r--r--freed-ora/current/master/KEYS-Add-a-system-blacklist-keyring.patch77
-rw-r--r--freed-ora/current/master/KVM-MTRR-remove-MSR-0x2f8.patch49
-rw-r--r--freed-ora/current/master/MODSIGN-Import-certificates-from-UEFI-Secure-Boot.patch81
-rw-r--r--freed-ora/current/master/MODSIGN-Support-not-importing-certs-from-db.patch20
-rw-r--r--freed-ora/current/master/Makefile1
-rw-r--r--freed-ora/current/master/Makefile.release1
-rw-r--r--freed-ora/current/master/USB-usbfs-fix-potential-infoleak-in-devio.patch41
-rw-r--r--freed-ora/current/master/antenna_select.patch227
-rw-r--r--freed-ora/current/master/arm-i.MX6-Utilite-device-dtb.patch342
-rw-r--r--freed-ora/current/master/arm64-acpi-drop-expert-patch.patch21
-rw-r--r--freed-ora/current/master/config-arm-generic130
-rw-r--r--freed-ora/current/master/config-arm6481
-rw-r--r--freed-ora/current/master/config-armv721
-rw-r--r--freed-ora/current/master/config-armv7-generic67
-rw-r--r--freed-ora/current/master/config-armv7-lpae12
-rw-r--r--freed-ora/current/master/config-debug3
-rw-r--r--freed-ora/current/master/config-generic211
-rw-r--r--freed-ora/current/master/config-nodebug3
-rw-r--r--freed-ora/current/master/config-powerpc64-generic7
-rw-r--r--freed-ora/current/master/config-s390x1
-rw-r--r--freed-ora/current/master/config-x86-generic28
-rw-r--r--freed-ora/current/master/config-x86_64-generic5
-rw-r--r--freed-ora/current/master/drm-i915-hush-check-crtc-state.patch24
-rw-r--r--freed-ora/current/master/efi-Add-EFI_SECURE_BOOT-bit.patch14
-rw-r--r--freed-ora/current/master/efi-Disable-secure-boot-if-shim-is-in-insecure-mode.patch12
-rw-r--r--freed-ora/current/master/efi-Make-EFI_SECURE_BOOT_SIG_ENFORCE-depend-on-EFI.patch30
-rw-r--r--freed-ora/current/master/filter-aarch64.sh2
-rw-r--r--freed-ora/current/master/filter-armv7hl.sh2
-rw-r--r--freed-ora/current/master/filter-i686.sh2
-rwxr-xr-xfreed-ora/current/master/filter-modules.sh2
-rw-r--r--freed-ora/current/master/filter-ppc64.sh2
-rw-r--r--freed-ora/current/master/filter-ppc64le.sh2
-rw-r--r--freed-ora/current/master/filter-ppc64p7.sh2
-rw-r--r--freed-ora/current/master/geekbox-v4-device-tree-support.patch367
-rw-r--r--freed-ora/current/master/gitrev2
-rw-r--r--freed-ora/current/master/hibernate-Disable-in-a-signed-modules-environment.patch8
-rw-r--r--freed-ora/current/master/hp-wmi-fix-wifi-cannot-be-hard-unblock.patch48
-rw-r--r--freed-ora/current/master/ideapad-laptop-Add-Lenovo-ideapad-Y700-17ISK-to-no_h.patch40
-rw-r--r--freed-ora/current/master/ipv4-fib-don-t-warn-when-primary-address-is-missing-.patch40
-rw-r--r--freed-ora/current/master/kernel.spec267
-rw-r--r--freed-ora/current/master/netfilter-x_tables-deal-with-bogus-nextoffset-values.patch97
-rw-r--r--freed-ora/current/master/patch-4.6-gnu-4.7-rc7-gnu.xz.sign7
-rwxr-xr-xfreed-ora/current/master/scripts/allarchconfig.sh16
-rwxr-xr-xfreed-ora/current/master/scripts/bumpspecfile.py76
-rwxr-xr-xfreed-ora/current/master/scripts/fast-build.sh13
-rwxr-xr-xfreed-ora/current/master/scripts/fast-x86_643
-rwxr-xr-xfreed-ora/current/master/scripts/generate-git-snapshot.sh18
-rwxr-xr-xfreed-ora/current/master/scripts/grab-logs.sh31
-rw-r--r--freed-ora/current/master/scripts/rediffall.pl64
-rw-r--r--freed-ora/current/master/sources1
77 files changed, 4204 insertions, 1864 deletions
diff --git a/freed-ora/current/master/0001-Work-around-for-addition-of-metag-def-but-not-reloca.patch b/freed-ora/current/master/0001-Work-around-for-addition-of-metag-def-but-not-reloca.patch
new file mode 100644
index 000000000..fcafe4d29
--- /dev/null
+++ b/freed-ora/current/master/0001-Work-around-for-addition-of-metag-def-but-not-reloca.patch
@@ -0,0 +1,50 @@
+From 4196017cd0e50e434ee72ca706742804f75c8827 Mon Sep 17 00:00:00 2001
+From: Laura Abbott <labbott@fedoraproject.org>
+Date: Fri, 8 Jul 2016 11:15:43 -0700
+Subject: [PATCH] Work around for addition of metag def but not relocations
+
+Caused by commit in sync up from
+http://pkgs.fedoraproject.org/cgit/rpms/glibc.git/commit/?id=9a78be1808600ca5e66eab741542447a29cfbeb3
+
+Fixes build errors like:
+
+scripts/recordmcount.c: In function 'do_file':
+scripts/recordmcount.c:466:28: error: 'R_METAG_ADDR32' undeclared (first use in this function)
+ case EM_METAG: reltype = R_METAG_ADDR32;
+ ^~~~~~~~~~~~~~
+scripts/recordmcount.c:466:28: note: each undeclared identifier is reported only once for each function it appears in
+scripts/recordmcount.c:468:20: error: 'R_METAG_NONE' undeclared (first use in this function)
+ rel_type_nop = R_METAG_NONE;
+ ^~~~~~~~~~~~
+
+Signed-off-by: Laura Abbott <labbott@fedoraproject.org>
+---
+ scripts/recordmcount.c | 9 ++++++++-
+ 1 file changed, 8 insertions(+), 1 deletion(-)
+
+diff --git a/scripts/recordmcount.c b/scripts/recordmcount.c
+index e1675927..42396a7 100644
+--- a/scripts/recordmcount.c
++++ b/scripts/recordmcount.c
+@@ -33,10 +33,17 @@
+ #include <string.h>
+ #include <unistd.h>
+
++/*
++ * glibc synced up and added the metag number but didn't add the relocations.
++ * Work around this in a crude manner for now.
++ */
+ #ifndef EM_METAG
+-/* Remove this when these make it to the standard system elf.h. */
+ #define EM_METAG 174
++#endif
++#ifndef R_METAG_ADDR32
+ #define R_METAG_ADDR32 2
++#endif
++#ifndef R_METAG_NONE
+ #define R_METAG_NONE 3
+ #endif
+
+--
+2.9.0
+
diff --git a/freed-ora/current/master/0001-drm-i915-Reorganize-WM-structs-unions-in-CRTC-state.patch b/freed-ora/current/master/0001-drm-i915-Reorganize-WM-structs-unions-in-CRTC-state.patch
new file mode 100644
index 000000000..f30e32dc4
--- /dev/null
+++ b/freed-ora/current/master/0001-drm-i915-Reorganize-WM-structs-unions-in-CRTC-state.patch
@@ -0,0 +1,227 @@
+From 0042e1e7a03a2fb5d6c464c03ce84d55b31add11 Mon Sep 17 00:00:00 2001
+From: Matt Roper <matthew.d.roper@intel.com>
+Date: Thu, 12 May 2016 07:05:55 -0700
+Subject: [PATCH 01/17] drm/i915: Reorganize WM structs/unions in CRTC state
+
+Reorganize the nested structures and unions we have for pipe watermark
+data in intel_crtc_state so that platform-specific data can be added in
+a more sensible manner (and save a bit of memory at the same time).
+
+The change basically changes the organization from:
+
+ union {
+ struct intel_pipe_wm ilk;
+ struct intel_pipe_wm skl;
+ } optimal;
+
+ struct intel_pipe_wm intermediate /* ILK-only */
+
+to
+
+ union {
+ struct {
+ struct intel_pipe_wm intermediate;
+ struct intel_pipe_wm optimal;
+ } ilk;
+
+ struct {
+ struct intel_pipe_wm optimal;
+ } skl;
+ }
+
+There should be no functional change here, but it will allow us to add
+more platform-specific fields going forward (and more easily extend to
+other platform types like VLV).
+
+While we're at it, let's move the entire watermark substructure out to
+its own structure definition to make the code slightly more readable.
+
+Signed-off-by: Matt Roper <matthew.d.roper@intel.com>
+Reviewed-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
+Link: http://patchwork.freedesktop.org/patch/msgid/1463061971-19638-2-git-send-email-matthew.d.roper@intel.com
+---
+ drivers/gpu/drm/i915/intel_display.c | 2 +-
+ drivers/gpu/drm/i915/intel_drv.h | 61 +++++++++++++++++++++---------------
+ drivers/gpu/drm/i915/intel_pm.c | 18 +++++------
+ 3 files changed, 45 insertions(+), 36 deletions(-)
+
+diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
+index d19b392..4633aec 100644
+--- a/drivers/gpu/drm/i915/intel_display.c
++++ b/drivers/gpu/drm/i915/intel_display.c
+@@ -12027,7 +12027,7 @@ static int intel_crtc_atomic_check(struct drm_crtc *crtc,
+ }
+ } else if (dev_priv->display.compute_intermediate_wm) {
+ if (HAS_PCH_SPLIT(dev_priv) && INTEL_GEN(dev_priv) < 9)
+- pipe_config->wm.intermediate = pipe_config->wm.optimal.ilk;
++ pipe_config->wm.ilk.intermediate = pipe_config->wm.ilk.optimal;
+ }
+
+ if (INTEL_INFO(dev)->gen >= 9) {
+diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h
+index 4a24b00..5a186bf 100644
+--- a/drivers/gpu/drm/i915/intel_drv.h
++++ b/drivers/gpu/drm/i915/intel_drv.h
+@@ -405,6 +405,40 @@ struct skl_pipe_wm {
+ uint32_t linetime;
+ };
+
++struct intel_crtc_wm_state {
++ union {
++ struct {
++ /*
++ * Intermediate watermarks; these can be
++ * programmed immediately since they satisfy
++ * both the current configuration we're
++ * switching away from and the new
++ * configuration we're switching to.
++ */
++ struct intel_pipe_wm intermediate;
++
++ /*
++ * Optimal watermarks, programmed post-vblank
++ * when this state is committed.
++ */
++ struct intel_pipe_wm optimal;
++ } ilk;
++
++ struct {
++ /* gen9+ only needs 1-step wm programming */
++ struct skl_pipe_wm optimal;
++ } skl;
++ };
++
++ /*
++ * Platforms with two-step watermark programming will need to
++ * update watermark programming post-vblank to switch from the
++ * safe intermediate watermarks to the optimal final
++ * watermarks.
++ */
++ bool need_postvbl_update;
++};
++
+ struct intel_crtc_state {
+ struct drm_crtc_state base;
+
+@@ -558,32 +592,7 @@ struct intel_crtc_state {
+ /* IVB sprite scaling w/a (WaCxSRDisabledForSpriteScaling:ivb) */
+ bool disable_lp_wm;
+
+- struct {
+- /*
+- * Optimal watermarks, programmed post-vblank when this state
+- * is committed.
+- */
+- union {
+- struct intel_pipe_wm ilk;
+- struct skl_pipe_wm skl;
+- } optimal;
+-
+- /*
+- * Intermediate watermarks; these can be programmed immediately
+- * since they satisfy both the current configuration we're
+- * switching away from and the new configuration we're switching
+- * to.
+- */
+- struct intel_pipe_wm intermediate;
+-
+- /*
+- * Platforms with two-step watermark programming will need to
+- * update watermark programming post-vblank to switch from the
+- * safe intermediate watermarks to the optimal final
+- * watermarks.
+- */
+- bool need_postvbl_update;
+- } wm;
++ struct intel_crtc_wm_state wm;
+
+ /* Gamma mode programmed on the pipe */
+ uint32_t gamma_mode;
+diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c
+index a7ef45d..4353fec 100644
+--- a/drivers/gpu/drm/i915/intel_pm.c
++++ b/drivers/gpu/drm/i915/intel_pm.c
+@@ -2309,7 +2309,7 @@ static int ilk_compute_pipe_wm(struct intel_crtc_state *cstate)
+ int level, max_level = ilk_wm_max_level(dev), usable_level;
+ struct ilk_wm_maximums max;
+
+- pipe_wm = &cstate->wm.optimal.ilk;
++ pipe_wm = &cstate->wm.ilk.optimal;
+
+ for_each_intel_plane_on_crtc(dev, intel_crtc, intel_plane) {
+ struct intel_plane_state *ps;
+@@ -2391,7 +2391,7 @@ static int ilk_compute_intermediate_wm(struct drm_device *dev,
+ struct intel_crtc *intel_crtc,
+ struct intel_crtc_state *newstate)
+ {
+- struct intel_pipe_wm *a = &newstate->wm.intermediate;
++ struct intel_pipe_wm *a = &newstate->wm.ilk.intermediate;
+ struct intel_pipe_wm *b = &intel_crtc->wm.active.ilk;
+ int level, max_level = ilk_wm_max_level(dev);
+
+@@ -2400,7 +2400,7 @@ static int ilk_compute_intermediate_wm(struct drm_device *dev,
+ * currently active watermarks to get values that are safe both before
+ * and after the vblank.
+ */
+- *a = newstate->wm.optimal.ilk;
++ *a = newstate->wm.ilk.optimal;
+ a->pipe_enabled |= b->pipe_enabled;
+ a->sprites_enabled |= b->sprites_enabled;
+ a->sprites_scaled |= b->sprites_scaled;
+@@ -2429,7 +2429,7 @@ static int ilk_compute_intermediate_wm(struct drm_device *dev,
+ * If our intermediate WM are identical to the final WM, then we can
+ * omit the post-vblank programming; only update if it's different.
+ */
+- if (memcmp(a, &newstate->wm.optimal.ilk, sizeof(*a)) == 0)
++ if (memcmp(a, &newstate->wm.ilk.optimal, sizeof(*a)) == 0)
+ newstate->wm.need_postvbl_update = false;
+
+ return 0;
+@@ -3678,7 +3678,7 @@ static void skl_update_wm(struct drm_crtc *crtc)
+ struct drm_i915_private *dev_priv = dev->dev_private;
+ struct skl_wm_values *results = &dev_priv->wm.skl_results;
+ struct intel_crtc_state *cstate = to_intel_crtc_state(crtc->state);
+- struct skl_pipe_wm *pipe_wm = &cstate->wm.optimal.skl;
++ struct skl_pipe_wm *pipe_wm = &cstate->wm.skl.optimal;
+
+
+ /* Clear all dirty flags */
+@@ -3757,7 +3757,7 @@ static void ilk_initial_watermarks(struct intel_crtc_state *cstate)
+ struct intel_crtc *intel_crtc = to_intel_crtc(cstate->base.crtc);
+
+ mutex_lock(&dev_priv->wm.wm_mutex);
+- intel_crtc->wm.active.ilk = cstate->wm.intermediate;
++ intel_crtc->wm.active.ilk = cstate->wm.ilk.intermediate;
+ ilk_program_watermarks(dev_priv);
+ mutex_unlock(&dev_priv->wm.wm_mutex);
+ }
+@@ -3769,7 +3769,7 @@ static void ilk_optimize_watermarks(struct intel_crtc_state *cstate)
+
+ mutex_lock(&dev_priv->wm.wm_mutex);
+ if (cstate->wm.need_postvbl_update) {
+- intel_crtc->wm.active.ilk = cstate->wm.optimal.ilk;
++ intel_crtc->wm.active.ilk = cstate->wm.ilk.optimal;
+ ilk_program_watermarks(dev_priv);
+ }
+ mutex_unlock(&dev_priv->wm.wm_mutex);
+@@ -3826,7 +3826,7 @@ static void skl_pipe_wm_get_hw_state(struct drm_crtc *crtc)
+ struct skl_wm_values *hw = &dev_priv->wm.skl_hw;
+ struct intel_crtc *intel_crtc = to_intel_crtc(crtc);
+ struct intel_crtc_state *cstate = to_intel_crtc_state(crtc->state);
+- struct skl_pipe_wm *active = &cstate->wm.optimal.skl;
++ struct skl_pipe_wm *active = &cstate->wm.skl.optimal;
+ enum pipe pipe = intel_crtc->pipe;
+ int level, i, max_level;
+ uint32_t temp;
+@@ -3892,7 +3892,7 @@ static void ilk_pipe_wm_get_hw_state(struct drm_crtc *crtc)
+ struct ilk_wm_values *hw = &dev_priv->wm.hw;
+ struct intel_crtc *intel_crtc = to_intel_crtc(crtc);
+ struct intel_crtc_state *cstate = to_intel_crtc_state(crtc->state);
+- struct intel_pipe_wm *active = &cstate->wm.optimal.ilk;
++ struct intel_pipe_wm *active = &cstate->wm.ilk.optimal;
+ enum pipe pipe = intel_crtc->pipe;
+ static const i915_reg_t wm0_pipe_reg[] = {
+ [PIPE_A] = WM0_PIPEA_ILK,
+--
+2.7.4
+
diff --git a/freed-ora/current/master/0002-drm-i915-Rename-s-skl_compute_pipe_wm-skl_build_pipe.patch b/freed-ora/current/master/0002-drm-i915-Rename-s-skl_compute_pipe_wm-skl_build_pipe.patch
new file mode 100644
index 000000000..0415ea294
--- /dev/null
+++ b/freed-ora/current/master/0002-drm-i915-Rename-s-skl_compute_pipe_wm-skl_build_pipe.patch
@@ -0,0 +1,50 @@
+From 95a9343e4b4e61d4c16da8bffc6a6e392d666dea Mon Sep 17 00:00:00 2001
+From: Matt Roper <matthew.d.roper@intel.com>
+Date: Thu, 12 May 2016 07:05:56 -0700
+Subject: [PATCH 02/17] drm/i915: Rename
+ s/skl_compute_pipe_wm/skl_build_pipe_wm/
+
+When we added atomic watermarks, we added a new display vfunc
+'compute_pipe_wm' that is used to compute any pipe-specific watermark
+information that we can at atomic check time. This was a somewhat poor
+naming choice since we already had a 'skl_compute_pipe_wm' function that
+doesn't quite fit this model --- the existing SKL function is something
+that gets used at atomic commit time, after the DDB allocation has been
+determined. Let's rename the existing SKL function to avoid confusion.
+
+Signed-off-by: Matt Roper <matthew.d.roper@intel.com>
+Reviewed-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
+Link: http://patchwork.freedesktop.org/patch/msgid/1463061971-19638-3-git-send-email-matthew.d.roper@intel.com
+---
+ drivers/gpu/drm/i915/intel_pm.c | 8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c
+index 4353fec..e15cb2a 100644
+--- a/drivers/gpu/drm/i915/intel_pm.c
++++ b/drivers/gpu/drm/i915/intel_pm.c
+@@ -3327,9 +3327,9 @@ static void skl_compute_transition_wm(struct intel_crtc_state *cstate,
+ }
+ }
+
+-static void skl_compute_pipe_wm(struct intel_crtc_state *cstate,
+- struct skl_ddb_allocation *ddb,
+- struct skl_pipe_wm *pipe_wm)
++static void skl_build_pipe_wm(struct intel_crtc_state *cstate,
++ struct skl_ddb_allocation *ddb,
++ struct skl_pipe_wm *pipe_wm)
+ {
+ struct drm_device *dev = cstate->base.crtc->dev;
+ const struct drm_i915_private *dev_priv = dev->dev_private;
+@@ -3596,7 +3596,7 @@ static bool skl_update_pipe_wm(struct drm_crtc *crtc,
+ struct intel_crtc_state *cstate = to_intel_crtc_state(crtc->state);
+
+ skl_allocate_pipe_ddb(cstate, ddb);
+- skl_compute_pipe_wm(cstate, ddb, pipe_wm);
++ skl_build_pipe_wm(cstate, ddb, pipe_wm);
+
+ if (!memcmp(&intel_crtc->wm.active.skl, pipe_wm, sizeof(*pipe_wm)))
+ return false;
+--
+2.7.4
+
diff --git a/freed-ora/current/master/0003-drm-i915-gen9-Cache-plane-data-rates-in-CRTC-state.patch b/freed-ora/current/master/0003-drm-i915-gen9-Cache-plane-data-rates-in-CRTC-state.patch
new file mode 100644
index 000000000..9dcebc04c
--- /dev/null
+++ b/freed-ora/current/master/0003-drm-i915-gen9-Cache-plane-data-rates-in-CRTC-state.patch
@@ -0,0 +1,204 @@
+From be60f2176911a4ac8e0450ab51f11c235a4984de Mon Sep 17 00:00:00 2001
+From: Matt Roper <matthew.d.roper@intel.com>
+Date: Thu, 12 May 2016 07:05:57 -0700
+Subject: [PATCH 03/17] drm/i915/gen9: Cache plane data rates in CRTC state
+
+This will be important when we start calculating CRTC data rates for
+in-flight CRTC states since it will allow us to calculate the total data
+rate without needing to grab the plane state for any planes that aren't
+updated by the transaction.
+
+Signed-off-by: Matt Roper <matthew.d.roper@intel.com>
+Reviewed-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
+Link: http://patchwork.freedesktop.org/patch/msgid/1463061971-19638-4-git-send-email-matthew.d.roper@intel.com
+---
+ drivers/gpu/drm/i915/intel_drv.h | 4 ++
+ drivers/gpu/drm/i915/intel_pm.c | 92 ++++++++++++++++++++++++++--------------
+ 2 files changed, 63 insertions(+), 33 deletions(-)
+
+diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h
+index 5a186bf..6a95696 100644
+--- a/drivers/gpu/drm/i915/intel_drv.h
++++ b/drivers/gpu/drm/i915/intel_drv.h
+@@ -427,6 +427,10 @@ struct intel_crtc_wm_state {
+ struct {
+ /* gen9+ only needs 1-step wm programming */
+ struct skl_pipe_wm optimal;
++
++ /* cached plane data rate */
++ unsigned plane_data_rate[I915_MAX_PLANES];
++ unsigned plane_y_data_rate[I915_MAX_PLANES];
+ } skl;
+ };
+
+diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c
+index e15cb2a..6835614 100644
+--- a/drivers/gpu/drm/i915/intel_pm.c
++++ b/drivers/gpu/drm/i915/intel_pm.c
+@@ -2940,6 +2940,14 @@ skl_plane_relative_data_rate(const struct intel_crtc_state *cstate,
+ struct intel_plane_state *intel_pstate = to_intel_plane_state(pstate);
+ struct drm_framebuffer *fb = pstate->fb;
+ uint32_t width = 0, height = 0;
++ unsigned format = fb ? fb->pixel_format : DRM_FORMAT_XRGB8888;
++
++ if (!intel_pstate->visible)
++ return 0;
++ if (pstate->plane->type == DRM_PLANE_TYPE_CURSOR)
++ return 0;
++ if (y && format != DRM_FORMAT_NV12)
++ return 0;
+
+ width = drm_rect_width(&intel_pstate->src) >> 16;
+ height = drm_rect_height(&intel_pstate->src) >> 16;
+@@ -2948,17 +2956,17 @@ skl_plane_relative_data_rate(const struct intel_crtc_state *cstate,
+ swap(width, height);
+
+ /* for planar format */
+- if (fb->pixel_format == DRM_FORMAT_NV12) {
++ if (format == DRM_FORMAT_NV12) {
+ if (y) /* y-plane data rate */
+ return width * height *
+- drm_format_plane_cpp(fb->pixel_format, 0);
++ drm_format_plane_cpp(format, 0);
+ else /* uv-plane data rate */
+ return (width / 2) * (height / 2) *
+- drm_format_plane_cpp(fb->pixel_format, 1);
++ drm_format_plane_cpp(format, 1);
+ }
+
+ /* for packed formats */
+- return width * height * drm_format_plane_cpp(fb->pixel_format, 0);
++ return width * height * drm_format_plane_cpp(format, 0);
+ }
+
+ /*
+@@ -2967,32 +2975,34 @@ skl_plane_relative_data_rate(const struct intel_crtc_state *cstate,
+ * 3 * 4096 * 8192 * 4 < 2^32
+ */
+ static unsigned int
+-skl_get_total_relative_data_rate(const struct intel_crtc_state *cstate)
++skl_get_total_relative_data_rate(struct intel_crtc_state *cstate)
+ {
+ struct intel_crtc *intel_crtc = to_intel_crtc(cstate->base.crtc);
+ struct drm_device *dev = intel_crtc->base.dev;
+ const struct intel_plane *intel_plane;
+- unsigned int total_data_rate = 0;
++ unsigned int rate, total_data_rate = 0;
+
++ /* Calculate and cache data rate for each plane */
+ for_each_intel_plane_on_crtc(dev, intel_crtc, intel_plane) {
+ const struct drm_plane_state *pstate = intel_plane->base.state;
++ int id = skl_wm_plane_id(intel_plane);
+
+- if (pstate->fb == NULL)
+- continue;
++ /* packed/uv */
++ rate = skl_plane_relative_data_rate(cstate, pstate, 0);
++ cstate->wm.skl.plane_data_rate[id] = rate;
+
+- if (intel_plane->base.type == DRM_PLANE_TYPE_CURSOR)
+- continue;
++ /* y-plane */
++ rate = skl_plane_relative_data_rate(cstate, pstate, 1);
++ cstate->wm.skl.plane_y_data_rate[id] = rate;
++ }
+
+- /* packed/uv */
+- total_data_rate += skl_plane_relative_data_rate(cstate,
+- pstate,
+- 0);
++ /* Calculate CRTC's total data rate from cached values */
++ for_each_intel_plane_on_crtc(dev, intel_crtc, intel_plane) {
++ int id = skl_wm_plane_id(intel_plane);
+
+- if (pstate->fb->pixel_format == DRM_FORMAT_NV12)
+- /* y-plane */
+- total_data_rate += skl_plane_relative_data_rate(cstate,
+- pstate,
+- 1);
++ /* packed/uv */
++ total_data_rate += cstate->wm.skl.plane_data_rate[id];
++ total_data_rate += cstate->wm.skl.plane_y_data_rate[id];
+ }
+
+ return total_data_rate;
+@@ -3056,6 +3066,8 @@ skl_allocate_pipe_ddb(struct intel_crtc_state *cstate,
+ * FIXME: we may not allocate every single block here.
+ */
+ total_data_rate = skl_get_total_relative_data_rate(cstate);
++ if (total_data_rate == 0)
++ return;
+
+ start = alloc->start;
+ for_each_intel_plane_on_crtc(dev, intel_crtc, intel_plane) {
+@@ -3070,7 +3082,7 @@ skl_allocate_pipe_ddb(struct intel_crtc_state *cstate,
+ if (plane->type == DRM_PLANE_TYPE_CURSOR)
+ continue;
+
+- data_rate = skl_plane_relative_data_rate(cstate, pstate, 0);
++ data_rate = cstate->wm.skl.plane_data_rate[id];
+
+ /*
+ * allocation for (packed formats) or (uv-plane part of planar format):
+@@ -3089,20 +3101,16 @@ skl_allocate_pipe_ddb(struct intel_crtc_state *cstate,
+ /*
+ * allocation for y_plane part of planar format:
+ */
+- if (pstate->fb->pixel_format == DRM_FORMAT_NV12) {
+- y_data_rate = skl_plane_relative_data_rate(cstate,
+- pstate,
+- 1);
+- y_plane_blocks = y_minimum[id];
+- y_plane_blocks += div_u64((uint64_t)alloc_size * y_data_rate,
+- total_data_rate);
+-
+- ddb->y_plane[pipe][id].start = start;
+- ddb->y_plane[pipe][id].end = start + y_plane_blocks;
+-
+- start += y_plane_blocks;
+- }
++ y_data_rate = cstate->wm.skl.plane_y_data_rate[id];
++
++ y_plane_blocks = y_minimum[id];
++ y_plane_blocks += div_u64((uint64_t)alloc_size * y_data_rate,
++ total_data_rate);
+
++ ddb->y_plane[pipe][id].start = start;
++ ddb->y_plane[pipe][id].end = start + y_plane_blocks;
++
++ start += y_plane_blocks;
+ }
+
+ }
+@@ -3879,10 +3887,28 @@ void skl_wm_get_hw_state(struct drm_device *dev)
+ struct drm_i915_private *dev_priv = dev->dev_private;
+ struct skl_ddb_allocation *ddb = &dev_priv->wm.skl_hw.ddb;
+ struct drm_crtc *crtc;
++ struct intel_crtc *intel_crtc;
+
+ skl_ddb_get_hw_state(dev_priv, ddb);
+ list_for_each_entry(crtc, &dev->mode_config.crtc_list, head)
+ skl_pipe_wm_get_hw_state(crtc);
++
++ /* Calculate plane data rates */
++ for_each_intel_crtc(dev, intel_crtc) {
++ struct intel_crtc_state *cstate = intel_crtc->config;
++ struct intel_plane *intel_plane;
++
++ for_each_intel_plane_on_crtc(dev, intel_crtc, intel_plane) {
++ const struct drm_plane_state *pstate =
++ intel_plane->base.state;
++ int id = skl_wm_plane_id(intel_plane);
++
++ cstate->wm.skl.plane_data_rate[id] =
++ skl_plane_relative_data_rate(cstate, pstate, 0);
++ cstate->wm.skl.plane_y_data_rate[id] =
++ skl_plane_relative_data_rate(cstate, pstate, 1);
++ }
++ }
+ }
+
+ static void ilk_pipe_wm_get_hw_state(struct drm_crtc *crtc)
+--
+2.7.4
+
diff --git a/freed-ora/current/master/0004-drm-i915-gen9-Allow-calculation-of-data-rate-for-in-.patch b/freed-ora/current/master/0004-drm-i915-gen9-Allow-calculation-of-data-rate-for-in-.patch
new file mode 100644
index 000000000..6bb9ea5e3
--- /dev/null
+++ b/freed-ora/current/master/0004-drm-i915-gen9-Allow-calculation-of-data-rate-for-in-.patch
@@ -0,0 +1,131 @@
+From 2bf927b92091d11f778a2a972b996f24a63281be Mon Sep 17 00:00:00 2001
+From: Matt Roper <matthew.d.roper@intel.com>
+Date: Thu, 12 May 2016 07:05:58 -0700
+Subject: [PATCH 04/17] drm/i915/gen9: Allow calculation of data rate for
+ in-flight state (v2)
+
+Our skl_get_total_relative_data_rate() function gets passed a crtc state
+object to calculate the data rate for, but it currently always looks
+up the committed plane states that correspond to that CRTC. Let's
+check whether the CRTC state is an in-flight state (meaning
+cstate->state is non-NULL) and if so, use the corresponding in-flight
+plane states.
+
+We'll soon be using this function exclusively for in-flight states; at
+that time we'll be able to simplify the function a bit, but for now we
+allow it to be used in either mode.
+
+v2:
+ - Rebase on top of changes to cache plane data rates.
+
+Signed-off-by: Matt Roper <matthew.d.roper@intel.com>
+Reviewed-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
+Link: http://patchwork.freedesktop.org/patch/msgid/1463061971-19638-5-git-send-email-matthew.d.roper@intel.com
+---
+ drivers/gpu/drm/i915/intel_pm.c | 74 +++++++++++++++++++++++++++++++++--------
+ 1 file changed, 60 insertions(+), 14 deletions(-)
+
+diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c
+index 6835614..5104ba7 100644
+--- a/drivers/gpu/drm/i915/intel_pm.c
++++ b/drivers/gpu/drm/i915/intel_pm.c
+@@ -2975,25 +2975,69 @@ skl_plane_relative_data_rate(const struct intel_crtc_state *cstate,
+ * 3 * 4096 * 8192 * 4 < 2^32
+ */
+ static unsigned int
+-skl_get_total_relative_data_rate(struct intel_crtc_state *cstate)
++skl_get_total_relative_data_rate(struct intel_crtc_state *intel_cstate)
+ {
+- struct intel_crtc *intel_crtc = to_intel_crtc(cstate->base.crtc);
+- struct drm_device *dev = intel_crtc->base.dev;
++ struct drm_crtc_state *cstate = &intel_cstate->base;
++ struct drm_atomic_state *state = cstate->state;
++ struct drm_crtc *crtc = cstate->crtc;
++ struct drm_device *dev = crtc->dev;
++ struct intel_crtc *intel_crtc = to_intel_crtc(crtc);
+ const struct intel_plane *intel_plane;
+ unsigned int rate, total_data_rate = 0;
++ int id;
+
+ /* Calculate and cache data rate for each plane */
+- for_each_intel_plane_on_crtc(dev, intel_crtc, intel_plane) {
+- const struct drm_plane_state *pstate = intel_plane->base.state;
+- int id = skl_wm_plane_id(intel_plane);
++ /*
++ * FIXME: At the moment this function can be called on either an
++ * in-flight or a committed state object. If it's in-flight then we
++ * only want to re-calculate the plane data rate for planes that are
++ * part of the transaction (i.e., we don't want to grab any additional
++ * plane states if we don't have to). If we're operating on committed
++ * state, we'll just go ahead and recalculate the plane data rate for
++ * all planes.
++ *
++ * Once we finish moving our DDB allocation to the atomic check phase,
++ * we'll only be calling this function on in-flight state objects, so
++ * the 'else' branch here will go away.
++ */
++ if (state) {
++ struct drm_plane *plane;
++ struct drm_plane_state *pstate;
++ int i;
++
++ for_each_plane_in_state(state, plane, pstate, i) {
++ intel_plane = to_intel_plane(plane);
++ id = skl_wm_plane_id(intel_plane);
++
++ if (intel_plane->pipe != intel_crtc->pipe)
++ continue;
++
++ /* packed/uv */
++ rate = skl_plane_relative_data_rate(intel_cstate,
++ pstate, 0);
++ intel_cstate->wm.skl.plane_data_rate[id] = rate;
++
++ /* y-plane */
++ rate = skl_plane_relative_data_rate(intel_cstate,
++ pstate, 1);
++ intel_cstate->wm.skl.plane_y_data_rate[id] = rate;
++ }
++ } else {
++ for_each_intel_plane_on_crtc(dev, intel_crtc, intel_plane) {
++ const struct drm_plane_state *pstate =
++ intel_plane->base.state;
++ int id = skl_wm_plane_id(intel_plane);
+
+- /* packed/uv */
+- rate = skl_plane_relative_data_rate(cstate, pstate, 0);
+- cstate->wm.skl.plane_data_rate[id] = rate;
++ /* packed/uv */
++ rate = skl_plane_relative_data_rate(intel_cstate,
++ pstate, 0);
++ intel_cstate->wm.skl.plane_data_rate[id] = rate;
+
+- /* y-plane */
+- rate = skl_plane_relative_data_rate(cstate, pstate, 1);
+- cstate->wm.skl.plane_y_data_rate[id] = rate;
++ /* y-plane */
++ rate = skl_plane_relative_data_rate(intel_cstate,
++ pstate, 1);
++ intel_cstate->wm.skl.plane_y_data_rate[id] = rate;
++ }
+ }
+
+ /* Calculate CRTC's total data rate from cached values */
+@@ -3001,10 +3045,12 @@ skl_get_total_relative_data_rate(struct intel_crtc_state *cstate)
+ int id = skl_wm_plane_id(intel_plane);
+
+ /* packed/uv */
+- total_data_rate += cstate->wm.skl.plane_data_rate[id];
+- total_data_rate += cstate->wm.skl.plane_y_data_rate[id];
++ total_data_rate += intel_cstate->wm.skl.plane_data_rate[id];
++ total_data_rate += intel_cstate->wm.skl.plane_y_data_rate[id];
+ }
+
++ WARN_ON(cstate->plane_mask && total_data_rate == 0);
++
+ return total_data_rate;
+ }
+
+--
+2.7.4
+
diff --git a/freed-ora/current/master/0005-drm-i915-gen9-Store-plane-minimum-blocks-in-CRTC-wm-.patch b/freed-ora/current/master/0005-drm-i915-gen9-Store-plane-minimum-blocks-in-CRTC-wm-.patch
new file mode 100644
index 000000000..a5e34c39c
--- /dev/null
+++ b/freed-ora/current/master/0005-drm-i915-gen9-Store-plane-minimum-blocks-in-CRTC-wm-.patch
@@ -0,0 +1,57 @@
+From f28225dda2a2bf1e2d96bbe44b45d43a7d5071d3 Mon Sep 17 00:00:00 2001
+From: Matt Roper <matthew.d.roper@intel.com>
+Date: Thu, 12 May 2016 07:05:59 -0700
+Subject: [PATCH 05/17] drm/i915/gen9: Store plane minimum blocks in CRTC wm
+ state (v2)
+
+This will eventually allow us to re-use old values without
+re-calculating them for unchanged planes (which also helps us avoid
+re-grabbing extra plane states).
+
+v2:
+ - Drop unnecessary memset's; they were meant for a later patch (which
+ got reworked anyway to not need them, but were mis-rebased into this
+ one. (Maarten)
+
+Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
+Signed-off-by: Matt Roper <matthew.d.roper@intel.com>
+Reviewed-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
+Link: http://patchwork.freedesktop.org/patch/msgid/1463061971-19638-6-git-send-email-matthew.d.roper@intel.com
+---
+ drivers/gpu/drm/i915/intel_drv.h | 4 ++++
+ drivers/gpu/drm/i915/intel_pm.c | 4 ++--
+ 2 files changed, 6 insertions(+), 2 deletions(-)
+
+diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h
+index 6a95696..9308cff 100644
+--- a/drivers/gpu/drm/i915/intel_drv.h
++++ b/drivers/gpu/drm/i915/intel_drv.h
+@@ -431,6 +431,10 @@ struct intel_crtc_wm_state {
+ /* cached plane data rate */
+ unsigned plane_data_rate[I915_MAX_PLANES];
+ unsigned plane_y_data_rate[I915_MAX_PLANES];
++
++ /* minimum block allocation */
++ uint16_t minimum_blocks[I915_MAX_PLANES];
++ uint16_t minimum_y_blocks[I915_MAX_PLANES];
+ } skl;
+ };
+
+diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c
+index 5104ba7..6c7a048 100644
+--- a/drivers/gpu/drm/i915/intel_pm.c
++++ b/drivers/gpu/drm/i915/intel_pm.c
+@@ -3067,8 +3067,8 @@ skl_allocate_pipe_ddb(struct intel_crtc_state *cstate,
+ enum pipe pipe = intel_crtc->pipe;
+ struct skl_ddb_entry *alloc = &ddb->pipe[pipe];
+ uint16_t alloc_size, start, cursor_blocks;
+- uint16_t minimum[I915_MAX_PLANES];
+- uint16_t y_minimum[I915_MAX_PLANES];
++ uint16_t *minimum = cstate->wm.skl.minimum_blocks;
++ uint16_t *y_minimum = cstate->wm.skl.minimum_y_blocks;
+ unsigned int total_data_rate;
+
+ skl_ddb_get_pipe_allocation_limits(dev, cstate, config, alloc);
+--
+2.7.4
+
diff --git a/freed-ora/current/master/0006-drm-i915-Track-whether-an-atomic-transaction-changes.patch b/freed-ora/current/master/0006-drm-i915-Track-whether-an-atomic-transaction-changes.patch
new file mode 100644
index 000000000..5a8fd0cf8
--- /dev/null
+++ b/freed-ora/current/master/0006-drm-i915-Track-whether-an-atomic-transaction-changes.patch
@@ -0,0 +1,58 @@
+From 21b8f4f57b5f37796b4aa6d24ad8b326fe68902b Mon Sep 17 00:00:00 2001
+From: Matt Roper <matthew.d.roper@intel.com>
+Date: Thu, 12 May 2016 07:06:00 -0700
+Subject: [PATCH 06/17] drm/i915: Track whether an atomic transaction changes
+ the active CRTC's
+
+For the purposes of DDB re-allocation we need to know whether a
+transaction changes the list of CRTC's that are active. While
+state->modeset could be used for this purpose, that would be slightly
+too aggressive since it would lead us to re-allocate the DDB when a
+CRTC's mode changes, but not its final active state.
+
+Signed-off-by: Matt Roper <matthew.d.roper@intel.com>
+Reviewed-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
+Link: http://patchwork.freedesktop.org/patch/msgid/1463061971-19638-7-git-send-email-matthew.d.roper@intel.com
+---
+ drivers/gpu/drm/i915/intel_display.c | 3 +++
+ drivers/gpu/drm/i915/intel_drv.h | 10 ++++++++++
+ 2 files changed, 13 insertions(+)
+
+diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
+index 4633aec..f26d1c5 100644
+--- a/drivers/gpu/drm/i915/intel_display.c
++++ b/drivers/gpu/drm/i915/intel_display.c
+@@ -13300,6 +13300,9 @@ static int intel_modeset_checks(struct drm_atomic_state *state)
+ intel_state->active_crtcs |= 1 << i;
+ else
+ intel_state->active_crtcs &= ~(1 << i);
++
++ if (crtc_state->active != crtc->state->active)
++ intel_state->active_pipe_changes |= drm_crtc_mask(crtc);
+ }
+
+ /*
+diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h
+index 9308cff..d19e83e 100644
+--- a/drivers/gpu/drm/i915/intel_drv.h
++++ b/drivers/gpu/drm/i915/intel_drv.h
+@@ -291,6 +291,16 @@ struct intel_atomic_state {
+
+ bool dpll_set, modeset;
+
++ /*
++ * Does this transaction change the pipes that are active? This mask
++ * tracks which CRTC's have changed their active state at the end of
++ * the transaction (not counting the temporary disable during modesets).
++ * This mask should only be non-zero when intel_state->modeset is true,
++ * but the converse is not necessarily true; simply changing a mode may
++ * not flip the final active status of any CRTC's
++ */
++ unsigned int active_pipe_changes;
++
+ unsigned int active_crtcs;
+ unsigned int min_pixclk[I915_MAX_PIPES];
+
+--
+2.7.4
+
diff --git a/freed-ora/current/master/0007-drm-i915-gen9-Allow-skl_allocate_pipe_ddb-to-operate.patch b/freed-ora/current/master/0007-drm-i915-gen9-Allow-skl_allocate_pipe_ddb-to-operate.patch
new file mode 100644
index 000000000..c1d98ba35
--- /dev/null
+++ b/freed-ora/current/master/0007-drm-i915-gen9-Allow-skl_allocate_pipe_ddb-to-operate.patch
@@ -0,0 +1,342 @@
+From c336cf7907da066978af5f2d7d4acd88c78b8c86 Mon Sep 17 00:00:00 2001
+From: Matt Roper <matthew.d.roper@intel.com>
+Date: Thu, 12 May 2016 07:06:01 -0700
+Subject: [PATCH 07/17] drm/i915/gen9: Allow skl_allocate_pipe_ddb() to operate
+ on in-flight state (v3)
+
+We eventually want to calculate watermark values at atomic 'check' time
+instead of atomic 'commit' time so that any requested configurations
+that result in impossible watermark requirements are properly rejected.
+The first step along this path is to allocate the DDB at atomic 'check'
+time. As we perform this transition, allow the main allocation function
+to operate successfully on either an in-flight state or an
+already-commited state. Once we complete the transition in a future
+patch, we'll come back and remove the unnecessary logic for the
+already-committed case.
+
+v2: Rebase/refactor; we should no longer need to grab extra plane states
+ while allocating the DDB since we can pull cached data rates and
+ minimum block counts from the CRTC state for any planes that aren't
+ being modified by this transaction.
+
+v3:
+ - Simplify memsets to clear DDB plane entries. (Maarten)
+ - Drop a redundant memset of plane[pipe][PLANE_CURSOR] that was added
+ by an earlier Coccinelle patch. (Maarten)
+ - Assign *num_active at the top of skl_ddb_get_pipe_allocation_limits()
+ so that no code paths return without setting it. (kbuild robot)
+
+Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
+Signed-off-by: Matt Roper <matthew.d.roper@intel.com>
+Reviewed-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
+Link: http://patchwork.freedesktop.org/patch/msgid/1463061971-19638-8-git-send-email-matthew.d.roper@intel.com
+---
+ drivers/gpu/drm/i915/i915_drv.h | 6 ++
+ drivers/gpu/drm/i915/intel_pm.c | 179 +++++++++++++++++++++++++++++-----------
+ 2 files changed, 139 insertions(+), 46 deletions(-)
+
+diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
+index 7c334e9..611c128 100644
+--- a/drivers/gpu/drm/i915/i915_drv.h
++++ b/drivers/gpu/drm/i915/i915_drv.h
+@@ -324,6 +324,12 @@ struct i915_hotplug {
+ &dev->mode_config.plane_list, \
+ base.head)
+
++#define for_each_intel_plane_mask(dev, intel_plane, plane_mask) \
++ list_for_each_entry(intel_plane, &dev->mode_config.plane_list, \
++ base.head) \
++ for_each_if ((plane_mask) & \
++ (1 << drm_plane_index(&intel_plane->base)))
++
+ #define for_each_intel_plane_on_crtc(dev, intel_crtc, intel_plane) \
+ list_for_each_entry(intel_plane, \
+ &(dev)->mode_config.plane_list, \
+diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c
+index 6c7a048..f009d43 100644
+--- a/drivers/gpu/drm/i915/intel_pm.c
++++ b/drivers/gpu/drm/i915/intel_pm.c
+@@ -2849,13 +2849,25 @@ skl_wm_plane_id(const struct intel_plane *plane)
+ static void
+ skl_ddb_get_pipe_allocation_limits(struct drm_device *dev,
+ const struct intel_crtc_state *cstate,
+- const struct intel_wm_config *config,
+- struct skl_ddb_entry *alloc /* out */)
++ struct intel_wm_config *config,
++ struct skl_ddb_entry *alloc, /* out */
++ int *num_active /* out */)
+ {
++ struct drm_atomic_state *state = cstate->base.state;
++ struct intel_atomic_state *intel_state = to_intel_atomic_state(state);
++ struct drm_i915_private *dev_priv = to_i915(dev);
+ struct drm_crtc *for_crtc = cstate->base.crtc;
+ struct drm_crtc *crtc;
+ unsigned int pipe_size, ddb_size;
+ int nth_active_pipe;
++ int pipe = to_intel_crtc(for_crtc)->pipe;
++
++ if (intel_state && intel_state->active_pipe_changes)
++ *num_active = hweight32(intel_state->active_crtcs);
++ else if (intel_state)
++ *num_active = hweight32(dev_priv->active_crtcs);
++ else
++ *num_active = config->num_pipes_active;
+
+ if (!cstate->base.active) {
+ alloc->start = 0;
+@@ -2870,25 +2882,56 @@ skl_ddb_get_pipe_allocation_limits(struct drm_device *dev,
+
+ ddb_size -= 4; /* 4 blocks for bypass path allocation */
+
+- nth_active_pipe = 0;
+- for_each_crtc(dev, crtc) {
+- if (!to_intel_crtc(crtc)->active)
+- continue;
++ /*
++ * FIXME: At the moment we may be called on either in-flight or fully
++ * committed cstate's. Once we fully move DDB allocation in the check
++ * phase, we'll only be called on in-flight states and the 'else'
++ * branch here will go away.
++ *
++ * The 'else' branch is slightly racy here, but it was racy to begin
++ * with; since it's going away soon, no effort is made to address that.
++ */
++ if (state) {
++ /*
++ * If the state doesn't change the active CRTC's, then there's
++ * no need to recalculate; the existing pipe allocation limits
++ * should remain unchanged. Note that we're safe from racing
++ * commits since any racing commit that changes the active CRTC
++ * list would need to grab _all_ crtc locks, including the one
++ * we currently hold.
++ */
++ if (!intel_state->active_pipe_changes) {
++ *alloc = dev_priv->wm.skl_hw.ddb.pipe[pipe];
++ return;
++ }
+
+- if (crtc == for_crtc)
+- break;
++ nth_active_pipe = hweight32(intel_state->active_crtcs &
++ (drm_crtc_mask(for_crtc) - 1));
++ pipe_size = ddb_size / hweight32(intel_state->active_crtcs);
++ alloc->start = nth_active_pipe * ddb_size / *num_active;
++ alloc->end = alloc->start + pipe_size;
++ } else {
++ nth_active_pipe = 0;
++ for_each_crtc(dev, crtc) {
++ if (!to_intel_crtc(crtc)->active)
++ continue;
+
+- nth_active_pipe++;
+- }
++ if (crtc == for_crtc)
++ break;
+
+- pipe_size = ddb_size / config->num_pipes_active;
+- alloc->start = nth_active_pipe * ddb_size / config->num_pipes_active;
+- alloc->end = alloc->start + pipe_size;
++ nth_active_pipe++;
++ }
++
++ pipe_size = ddb_size / config->num_pipes_active;
++ alloc->start = nth_active_pipe * ddb_size /
++ config->num_pipes_active;
++ alloc->end = alloc->start + pipe_size;
++ }
+ }
+
+-static unsigned int skl_cursor_allocation(const struct intel_wm_config *config)
++static unsigned int skl_cursor_allocation(int num_active)
+ {
+- if (config->num_pipes_active == 1)
++ if (num_active == 1)
+ return 32;
+
+ return 8;
+@@ -3054,33 +3097,44 @@ skl_get_total_relative_data_rate(struct intel_crtc_state *intel_cstate)
+ return total_data_rate;
+ }
+
+-static void
++static int
+ skl_allocate_pipe_ddb(struct intel_crtc_state *cstate,
+ struct skl_ddb_allocation *ddb /* out */)
+ {
++ struct drm_atomic_state *state = cstate->base.state;
+ struct drm_crtc *crtc = cstate->base.crtc;
+ struct drm_device *dev = crtc->dev;
+ struct drm_i915_private *dev_priv = to_i915(dev);
+ struct intel_wm_config *config = &dev_priv->wm.config;
+ struct intel_crtc *intel_crtc = to_intel_crtc(crtc);
+ struct intel_plane *intel_plane;
++ struct drm_plane *plane;
++ struct drm_plane_state *pstate;
+ enum pipe pipe = intel_crtc->pipe;
+ struct skl_ddb_entry *alloc = &ddb->pipe[pipe];
+ uint16_t alloc_size, start, cursor_blocks;
+ uint16_t *minimum = cstate->wm.skl.minimum_blocks;
+ uint16_t *y_minimum = cstate->wm.skl.minimum_y_blocks;
+ unsigned int total_data_rate;
++ int num_active;
++ int id, i;
+
+- skl_ddb_get_pipe_allocation_limits(dev, cstate, config, alloc);
++ if (!cstate->base.active) {
++ ddb->pipe[pipe].start = ddb->pipe[pipe].end = 0;
++ memset(ddb->plane[pipe], 0, sizeof(ddb->plane[pipe]));
++ memset(ddb->y_plane[pipe], 0, sizeof(ddb->y_plane[pipe]));
++ return 0;
++ }
++
++ skl_ddb_get_pipe_allocation_limits(dev, cstate, config, alloc,
++ &num_active);
+ alloc_size = skl_ddb_entry_size(alloc);
+ if (alloc_size == 0) {
+ memset(ddb->plane[pipe], 0, sizeof(ddb->plane[pipe]));
+- memset(&ddb->plane[pipe][PLANE_CURSOR], 0,
+- sizeof(ddb->plane[pipe][PLANE_CURSOR]));
+- return;
++ return 0;
+ }
+
+- cursor_blocks = skl_cursor_allocation(config);
++ cursor_blocks = skl_cursor_allocation(num_active);
+ ddb->plane[pipe][PLANE_CURSOR].start = alloc->end - cursor_blocks;
+ ddb->plane[pipe][PLANE_CURSOR].end = alloc->end;
+
+@@ -3088,21 +3142,55 @@ skl_allocate_pipe_ddb(struct intel_crtc_state *cstate,
+ alloc->end -= cursor_blocks;
+
+ /* 1. Allocate the mininum required blocks for each active plane */
+- for_each_intel_plane_on_crtc(dev, intel_crtc, intel_plane) {
+- struct drm_plane *plane = &intel_plane->base;
+- struct drm_framebuffer *fb = plane->state->fb;
+- int id = skl_wm_plane_id(intel_plane);
++ /*
++ * TODO: Remove support for already-committed state once we
++ * only allocate DDB on in-flight states.
++ */
++ if (state) {
++ for_each_plane_in_state(state, plane, pstate, i) {
++ intel_plane = to_intel_plane(plane);
++ id = skl_wm_plane_id(intel_plane);
+
+- if (!to_intel_plane_state(plane->state)->visible)
+- continue;
++ if (intel_plane->pipe != pipe)
++ continue;
+
+- if (plane->type == DRM_PLANE_TYPE_CURSOR)
+- continue;
++ if (!to_intel_plane_state(pstate)->visible) {
++ minimum[id] = 0;
++ y_minimum[id] = 0;
++ continue;
++ }
++ if (plane->type == DRM_PLANE_TYPE_CURSOR) {
++ minimum[id] = 0;
++ y_minimum[id] = 0;
++ continue;
++ }
++
++ minimum[id] = 8;
++ if (pstate->fb->pixel_format == DRM_FORMAT_NV12)
++ y_minimum[id] = 8;
++ else
++ y_minimum[id] = 0;
++ }
++ } else {
++ for_each_intel_plane_on_crtc(dev, intel_crtc, intel_plane) {
++ struct drm_plane *plane = &intel_plane->base;
++ struct drm_framebuffer *fb = plane->state->fb;
++ int id = skl_wm_plane_id(intel_plane);
++
++ if (!to_intel_plane_state(plane->state)->visible)
++ continue;
++
++ if (plane->type == DRM_PLANE_TYPE_CURSOR)
++ continue;
++
++ minimum[id] = 8;
++ y_minimum[id] = (fb->pixel_format == DRM_FORMAT_NV12) ? 8 : 0;
++ }
++ }
+
+- minimum[id] = 8;
+- alloc_size -= minimum[id];
+- y_minimum[id] = (fb->pixel_format == DRM_FORMAT_NV12) ? 8 : 0;
+- alloc_size -= y_minimum[id];
++ for (i = 0; i < PLANE_CURSOR; i++) {
++ alloc_size -= minimum[i];
++ alloc_size -= y_minimum[i];
+ }
+
+ /*
+@@ -3113,21 +3201,14 @@ skl_allocate_pipe_ddb(struct intel_crtc_state *cstate,
+ */
+ total_data_rate = skl_get_total_relative_data_rate(cstate);
+ if (total_data_rate == 0)
+- return;
++ return 0;
+
+ start = alloc->start;
+ for_each_intel_plane_on_crtc(dev, intel_crtc, intel_plane) {
+- struct drm_plane *plane = &intel_plane->base;
+- struct drm_plane_state *pstate = intel_plane->base.state;
+ unsigned int data_rate, y_data_rate;
+ uint16_t plane_blocks, y_plane_blocks = 0;
+ int id = skl_wm_plane_id(intel_plane);
+
+- if (!to_intel_plane_state(pstate)->visible)
+- continue;
+- if (plane->type == DRM_PLANE_TYPE_CURSOR)
+- continue;
+-
+ data_rate = cstate->wm.skl.plane_data_rate[id];
+
+ /*
+@@ -3139,8 +3220,11 @@ skl_allocate_pipe_ddb(struct intel_crtc_state *cstate,
+ plane_blocks += div_u64((uint64_t)alloc_size * data_rate,
+ total_data_rate);
+
+- ddb->plane[pipe][id].start = start;
+- ddb->plane[pipe][id].end = start + plane_blocks;
++ /* Leave disabled planes at (0,0) */
++ if (data_rate) {
++ ddb->plane[pipe][id].start = start;
++ ddb->plane[pipe][id].end = start + plane_blocks;
++ }
+
+ start += plane_blocks;
+
+@@ -3153,12 +3237,15 @@ skl_allocate_pipe_ddb(struct intel_crtc_state *cstate,
+ y_plane_blocks += div_u64((uint64_t)alloc_size * y_data_rate,
+ total_data_rate);
+
+- ddb->y_plane[pipe][id].start = start;
+- ddb->y_plane[pipe][id].end = start + y_plane_blocks;
++ if (y_data_rate) {
++ ddb->y_plane[pipe][id].start = start;
++ ddb->y_plane[pipe][id].end = start + y_plane_blocks;
++ }
+
+ start += y_plane_blocks;
+ }
+
++ return 0;
+ }
+
+ static uint32_t skl_pipe_pixel_rate(const struct intel_crtc_state *config)
+@@ -3649,7 +3736,7 @@ static bool skl_update_pipe_wm(struct drm_crtc *crtc,
+ struct intel_crtc *intel_crtc = to_intel_crtc(crtc);
+ struct intel_crtc_state *cstate = to_intel_crtc_state(crtc->state);
+
+- skl_allocate_pipe_ddb(cstate, ddb);
++ WARN_ON(skl_allocate_pipe_ddb(cstate, ddb) != 0);
+ skl_build_pipe_wm(cstate, ddb, pipe_wm);
+
+ if (!memcmp(&intel_crtc->wm.active.skl, pipe_wm, sizeof(*pipe_wm)))
+--
+2.7.4
+
diff --git a/freed-ora/current/master/0008-drm-i915-Add-distrust_bios_wm-flag-to-dev_priv-v2.patch b/freed-ora/current/master/0008-drm-i915-Add-distrust_bios_wm-flag-to-dev_priv-v2.patch
new file mode 100644
index 000000000..9131a60da
--- /dev/null
+++ b/freed-ora/current/master/0008-drm-i915-Add-distrust_bios_wm-flag-to-dev_priv-v2.patch
@@ -0,0 +1,84 @@
+From 7207eecfcb3095442bce30227b551003edc7b908 Mon Sep 17 00:00:00 2001
+From: Matt Roper <matthew.d.roper@intel.com>
+Date: Thu, 12 May 2016 07:06:02 -0700
+Subject: [PATCH 08/17] drm/i915: Add distrust_bios_wm flag to dev_priv (v2)
+
+SKL-style platforms can't fully trust the watermark/DDB settings
+programmed by the BIOS and need to do extra sanitization on their first
+atomic update. Add a flag to dev_priv that is set during hardware
+readout and cleared at the end of the first commit.
+
+Note that for the somewhat common case where everything is turned off
+when the driver starts up, we don't need to bother with a recompute...we
+know exactly what the DDB should be (all zero's) so just setup the DDB
+directly in that case.
+
+v2:
+ - Move clearing of distrust_bios_wm up below the swap_state call since
+ it's a more natural / self-explanatory location. (Maarten)
+ - Use dev_priv->active_crtcs to test whether any CRTC's are turned on
+ during HW WM readout rather than trying to count the active CRTC's
+ again ourselves. (Maarten)
+
+Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
+Signed-off-by: Matt Roper <matthew.d.roper@intel.com>
+Reviewed-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
+Link: http://patchwork.freedesktop.org/patch/msgid/1463061971-19638-9-git-send-email-matthew.d.roper@intel.com
+---
+ drivers/gpu/drm/i915/i915_drv.h | 7 +++++++
+ drivers/gpu/drm/i915/intel_display.c | 1 +
+ drivers/gpu/drm/i915/intel_pm.c | 8 ++++++++
+ 3 files changed, 16 insertions(+)
+
+diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
+index 611c128..e21960d 100644
+--- a/drivers/gpu/drm/i915/i915_drv.h
++++ b/drivers/gpu/drm/i915/i915_drv.h
+@@ -1981,6 +1981,13 @@ struct drm_i915_private {
+ * cstate->wm.need_postvbl_update.
+ */
+ struct mutex wm_mutex;
++
++ /*
++ * Set during HW readout of watermarks/DDB. Some platforms
++ * need to know when we're still using BIOS-provided values
++ * (which we don't fully trust).
++ */
++ bool distrust_bios_wm;
+ } wm;
+
+ struct i915_runtime_pm pm;
+diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
+index f26d1c5..a9d2e30 100644
+--- a/drivers/gpu/drm/i915/intel_display.c
++++ b/drivers/gpu/drm/i915/intel_display.c
+@@ -13621,6 +13621,7 @@ static int intel_atomic_commit(struct drm_device *dev,
+
+ drm_atomic_helper_swap_state(dev, state);
+ dev_priv->wm.config = intel_state->wm_config;
++ dev_priv->wm.distrust_bios_wm = false;
+ intel_shared_dpll_commit(state);
+
+ if (intel_state->modeset) {
+diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c
+index f009d43..a49faa7 100644
+--- a/drivers/gpu/drm/i915/intel_pm.c
++++ b/drivers/gpu/drm/i915/intel_pm.c
+@@ -4026,6 +4026,14 @@ void skl_wm_get_hw_state(struct drm_device *dev)
+ list_for_each_entry(crtc, &dev->mode_config.crtc_list, head)
+ skl_pipe_wm_get_hw_state(crtc);
+
++ if (dev_priv->active_crtcs) {
++ /* Fully recompute DDB on first atomic commit */
++ dev_priv->wm.distrust_bios_wm = true;
++ } else {
++ /* Easy/common case; just sanitize DDB now if everything off */
++ memset(ddb, 0, sizeof(*ddb));
++ }
++
+ /* Calculate plane data rates */
+ for_each_intel_crtc(dev, intel_crtc) {
+ struct intel_crtc_state *cstate = intel_crtc->config;
+--
+2.7.4
+
diff --git a/freed-ora/current/master/0009-drm-i915-gen9-Compute-DDB-allocation-at-atomic-check.patch b/freed-ora/current/master/0009-drm-i915-gen9-Compute-DDB-allocation-at-atomic-check.patch
new file mode 100644
index 000000000..80cdacf9a
--- /dev/null
+++ b/freed-ora/current/master/0009-drm-i915-gen9-Compute-DDB-allocation-at-atomic-check.patch
@@ -0,0 +1,244 @@
+From fbf53d8f1b7d1bcea1411f1f2cd0df6a6cc95332 Mon Sep 17 00:00:00 2001
+From: Matt Roper <matthew.d.roper@intel.com>
+Date: Thu, 12 May 2016 07:06:03 -0700
+Subject: [PATCH 09/17] drm/i915/gen9: Compute DDB allocation at atomic check
+ time (v4)
+
+Calculate the DDB blocks needed to satisfy the current atomic
+transaction at atomic check time. This is a prerequisite to calculating
+SKL watermarks during the 'check' phase and rejecting any configurations
+that we can't find valid watermarks for.
+
+Due to the nature of DDB allocation, it's possible for the addition of a
+new CRTC to make the watermark configuration already in use on another,
+unchanged CRTC become invalid. A change in which CRTC's are active
+triggers a recompute of the entire DDB, which unfortunately means we
+need to disallow any other atomic commits from racing with such an
+update. If the active CRTC's change, we need to grab the lock on all
+CRTC's and run all CRTC's through their 'check' handler to recompute and
+re-check their per-CRTC DDB allocations.
+
+Note that with this patch we only compute the DDB allocation but we
+don't actually use the computed values during watermark programming yet.
+For ease of review/testing/bisecting, we still recompute the DDB at
+watermark programming time and just WARN() if it doesn't match the
+precomputed values. A future patch will switch over to using the
+precomputed values once we're sure they're being properly computed.
+
+Another clarifying note: DDB allocation itself shouldn't ever fail with
+the algorithm we use today (i.e., we have enough DDB blocks on BXT to
+support the minimum needs of the worst-case scenario of every pipe/plane
+enabled at full size). However the watermarks calculations based on the
+DDB may fail and we'll be moving those to the atomic check as well in
+future patches.
+
+v2:
+ - Skip DDB calculations in the rare case where our transaction doesn't
+ actually touch any CRTC's at all. Assuming at least one CRTC state
+ is present in our transaction, then it means we can't race with any
+ transactions that would update dev_priv->active_crtcs (which requires
+ _all_ CRTC locks).
+
+v3:
+ - Also calculate DDB during initial hw readout, to prevent using
+ incorrect bios values. (Maarten)
+
+v4:
+ - Use new distrust_bios_wm flag instead of skip_initial_wm (which was
+ never actually set).
+ - Set intel_state->active_pipe_changes instead of just realloc_pipes
+
+Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
+Cc: Lyude Paul <cpaul@redhat.com>
+Cc: Radhakrishna Sripada <radhakrishna.sripada@intel.com>
+Signed-off-by: Matt Roper <matthew.d.roper@intel.com>
+Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
+Reviewed-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
+Link: http://patchwork.freedesktop.org/patch/msgid/1463061971-19638-10-git-send-email-matthew.d.roper@intel.com
+---
+ drivers/gpu/drm/i915/i915_drv.h | 5 +++
+ drivers/gpu/drm/i915/intel_display.c | 18 ++++++++
+ drivers/gpu/drm/i915/intel_drv.h | 3 ++
+ drivers/gpu/drm/i915/intel_pm.c | 79 ++++++++++++++++++++++++++++++++++++
+ 4 files changed, 105 insertions(+)
+
+diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
+index e21960d..b908a41 100644
+--- a/drivers/gpu/drm/i915/i915_drv.h
++++ b/drivers/gpu/drm/i915/i915_drv.h
+@@ -339,6 +339,10 @@ struct i915_hotplug {
+ #define for_each_intel_crtc(dev, intel_crtc) \
+ list_for_each_entry(intel_crtc, &dev->mode_config.crtc_list, base.head)
+
++#define for_each_intel_crtc_mask(dev, intel_crtc, crtc_mask) \
++ list_for_each_entry(intel_crtc, &dev->mode_config.crtc_list, base.head) \
++ for_each_if ((crtc_mask) & (1 << drm_crtc_index(&intel_crtc->base)))
++
+ #define for_each_intel_encoder(dev, intel_encoder) \
+ list_for_each_entry(intel_encoder, \
+ &(dev)->mode_config.encoder_list, \
+@@ -594,6 +598,7 @@ struct drm_i915_display_funcs {
+ struct intel_crtc_state *newstate);
+ void (*initial_watermarks)(struct intel_crtc_state *cstate);
+ void (*optimize_watermarks)(struct intel_crtc_state *cstate);
++ int (*compute_global_watermarks)(struct drm_atomic_state *state);
+ void (*update_wm)(struct drm_crtc *crtc);
+ int (*modeset_calc_cdclk)(struct drm_atomic_state *state);
+ void (*modeset_commit_cdclk)(struct drm_atomic_state *state);
+diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
+index a9d2e30..ecad0ef 100644
+--- a/drivers/gpu/drm/i915/intel_display.c
++++ b/drivers/gpu/drm/i915/intel_display.c
+@@ -13342,6 +13342,7 @@ static int intel_modeset_checks(struct drm_atomic_state *state)
+ static void calc_watermark_data(struct drm_atomic_state *state)
+ {
+ 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 *cstate;
+@@ -13371,6 +13372,10 @@ static void calc_watermark_data(struct drm_atomic_state *state)
+ pstate->crtc_h != pstate->src_h >> 16)
+ intel_state->wm_config.sprites_scaled = true;
+ }
++
++ /* Is there platform-specific watermark information to calculate? */
++ if (dev_priv->display.compute_global_watermarks)
++ dev_priv->display.compute_global_watermarks(state);
+ }
+
+ /**
+@@ -13739,6 +13744,19 @@ static int intel_atomic_commit(struct drm_device *dev,
+ intel_modeset_verify_crtc(crtc, old_crtc_state, crtc->state);
+ }
+
++ /*
++ * Temporary sanity check: make sure our pre-computed DDB matches the
++ * one we actually wind up programming.
++ *
++ * Not a great place to put this, but the easiest place we have access
++ * to both the pre-computed and final DDB's; we'll be removing this
++ * check in the next patch anyway.
++ */
++ WARN(IS_GEN9(dev) &&
++ memcmp(&intel_state->ddb, &dev_priv->wm.skl_results.ddb,
++ sizeof(intel_state->ddb)),
++ "Pre-computed DDB does not match final DDB!\n");
++
+ if (intel_state->modeset)
+ intel_display_power_put(dev_priv, POWER_DOMAIN_MODESET);
+
+diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h
+index d19e83e..2218290 100644
+--- a/drivers/gpu/drm/i915/intel_drv.h
++++ b/drivers/gpu/drm/i915/intel_drv.h
+@@ -312,6 +312,9 @@ struct intel_atomic_state {
+ * don't bother calculating intermediate watermarks.
+ */
+ bool skip_intermediate_wm;
++
++ /* Gen9+ only */
++ struct skl_ddb_allocation ddb;
+ };
+
+ struct intel_plane_state {
+diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c
+index a49faa7..cfa4f80 100644
+--- a/drivers/gpu/drm/i915/intel_pm.c
++++ b/drivers/gpu/drm/i915/intel_pm.c
+@@ -3812,6 +3812,84 @@ static void skl_clear_wm(struct skl_wm_values *watermarks, enum pipe pipe)
+
+ }
+
++static int
++skl_compute_ddb(struct drm_atomic_state *state)
++{
++ 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 intel_crtc *intel_crtc;
++ unsigned realloc_pipes = dev_priv->active_crtcs;
++ int ret;
++
++ /*
++ * If this is our first atomic update following hardware readout,
++ * we can't trust the DDB that the BIOS programmed for us. Let's
++ * pretend that all pipes switched active status so that we'll
++ * ensure a full DDB recompute.
++ */
++ if (dev_priv->wm.distrust_bios_wm)
++ intel_state->active_pipe_changes = ~0;
++
++ /*
++ * If the modeset changes which CRTC's are active, we need to
++ * recompute the DDB allocation for *all* active pipes, even
++ * those that weren't otherwise being modified in any way by this
++ * atomic commit. Due to the shrinking of the per-pipe allocations
++ * when new active CRTC's are added, it's possible for a pipe that
++ * we were already using and aren't changing at all here to suddenly
++ * become invalid if its DDB needs exceeds its new allocation.
++ *
++ * Note that if we wind up doing a full DDB recompute, we can't let
++ * any other display updates race with this transaction, so we need
++ * to grab the lock on *all* CRTC's.
++ */
++ if (intel_state->active_pipe_changes)
++ realloc_pipes = ~0;
++
++ for_each_intel_crtc_mask(dev, intel_crtc, realloc_pipes) {
++ struct intel_crtc_state *cstate;
++
++ cstate = intel_atomic_get_crtc_state(state, intel_crtc);
++ if (IS_ERR(cstate))
++ return PTR_ERR(cstate);
++
++ ret = skl_allocate_pipe_ddb(cstate, &intel_state->ddb);
++ if (ret)
++ return ret;
++ }
++
++ return 0;
++}
++
++static int
++skl_compute_wm(struct drm_atomic_state *state)
++{
++ struct drm_crtc *crtc;
++ struct drm_crtc_state *cstate;
++ int ret, i;
++ bool changed = false;
++
++ /*
++ * If this transaction isn't actually touching any CRTC's, don't
++ * bother with watermark calculation. Note that if we pass this
++ * test, we're guaranteed to hold at least one CRTC state mutex,
++ * which means we can safely use values like dev_priv->active_crtcs
++ * since any racing commits that want to update them would need to
++ * hold _all_ CRTC state mutexes.
++ */
++ for_each_crtc_in_state(state, crtc, cstate, i)
++ changed = true;
++ if (!changed)
++ return 0;
++
++ ret = skl_compute_ddb(state);
++ if (ret)
++ return ret;
++
++ return 0;
++}
++
+ static void skl_update_wm(struct drm_crtc *crtc)
+ {
+ struct intel_crtc *intel_crtc = to_intel_crtc(crtc);
+@@ -7384,6 +7462,7 @@ void intel_init_pm(struct drm_device *dev)
+ if (INTEL_INFO(dev)->gen >= 9) {
+ skl_setup_wm_latency(dev);
+ dev_priv->display.update_wm = skl_update_wm;
++ dev_priv->display.compute_global_watermarks = skl_compute_wm;
+ } else if (HAS_PCH_SPLIT(dev)) {
+ ilk_setup_wm_latency(dev);
+
+--
+2.7.4
+
diff --git a/freed-ora/current/master/0010-drm-i915-gen9-Drop-re-allocation-of-DDB-at-atomic-co.patch b/freed-ora/current/master/0010-drm-i915-gen9-Drop-re-allocation-of-DDB-at-atomic-co.patch
new file mode 100644
index 000000000..26f7e750c
--- /dev/null
+++ b/freed-ora/current/master/0010-drm-i915-gen9-Drop-re-allocation-of-DDB-at-atomic-co.patch
@@ -0,0 +1,379 @@
+From a9abdc6767855e1668301a1dcc4b5fa8bed1ddfa Mon Sep 17 00:00:00 2001
+From: Matt Roper <matthew.d.roper@intel.com>
+Date: Thu, 12 May 2016 07:06:04 -0700
+Subject: [PATCH 10/17] drm/i915/gen9: Drop re-allocation of DDB at atomic
+ commit (v2)
+
+Now that we're properly pre-allocating the DDB during the atomic check
+phase and we trust that the allocation is appropriate, let's actually
+use the allocation computed and not duplicate that work during the
+commit phase.
+
+v2:
+ - Significant rebasing now that we can use cached data rates and
+ minimum block allocations to avoid grabbing additional plane states.
+
+Signed-off-by: Matt Roper <matthew.d.roper@intel.com>
+Reviewed-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
+Link: http://patchwork.freedesktop.org/patch/msgid/1463061971-19638-11-git-send-email-matthew.d.roper@intel.com
+---
+ drivers/gpu/drm/i915/intel_display.c | 14 +--
+ drivers/gpu/drm/i915/intel_pm.c | 224 +++++++++++------------------------
+ 2 files changed, 67 insertions(+), 171 deletions(-)
+
+diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
+index ecad0ef..4db10d7 100644
+--- a/drivers/gpu/drm/i915/intel_display.c
++++ b/drivers/gpu/drm/i915/intel_display.c
+@@ -13627,6 +13627,7 @@ static int intel_atomic_commit(struct drm_device *dev,
+ drm_atomic_helper_swap_state(dev, state);
+ dev_priv->wm.config = intel_state->wm_config;
+ dev_priv->wm.distrust_bios_wm = false;
++ dev_priv->wm.skl_results.ddb = intel_state->ddb;
+ intel_shared_dpll_commit(state);
+
+ if (intel_state->modeset) {
+@@ -13744,19 +13745,6 @@ static int intel_atomic_commit(struct drm_device *dev,
+ intel_modeset_verify_crtc(crtc, old_crtc_state, crtc->state);
+ }
+
+- /*
+- * Temporary sanity check: make sure our pre-computed DDB matches the
+- * one we actually wind up programming.
+- *
+- * Not a great place to put this, but the easiest place we have access
+- * to both the pre-computed and final DDB's; we'll be removing this
+- * check in the next patch anyway.
+- */
+- WARN(IS_GEN9(dev) &&
+- memcmp(&intel_state->ddb, &dev_priv->wm.skl_results.ddb,
+- sizeof(intel_state->ddb)),
+- "Pre-computed DDB does not match final DDB!\n");
+-
+ if (intel_state->modeset)
+ intel_display_power_put(dev_priv, POWER_DOMAIN_MODESET);
+
+diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c
+index cfa4f80..0f0d4e1 100644
+--- a/drivers/gpu/drm/i915/intel_pm.c
++++ b/drivers/gpu/drm/i915/intel_pm.c
+@@ -2849,7 +2849,6 @@ skl_wm_plane_id(const struct intel_plane *plane)
+ static void
+ skl_ddb_get_pipe_allocation_limits(struct drm_device *dev,
+ const struct intel_crtc_state *cstate,
+- struct intel_wm_config *config,
+ struct skl_ddb_entry *alloc, /* out */
+ int *num_active /* out */)
+ {
+@@ -2857,24 +2856,22 @@ skl_ddb_get_pipe_allocation_limits(struct drm_device *dev,
+ struct intel_atomic_state *intel_state = to_intel_atomic_state(state);
+ struct drm_i915_private *dev_priv = to_i915(dev);
+ struct drm_crtc *for_crtc = cstate->base.crtc;
+- struct drm_crtc *crtc;
+ unsigned int pipe_size, ddb_size;
+ int nth_active_pipe;
+ int pipe = to_intel_crtc(for_crtc)->pipe;
+
+- if (intel_state && intel_state->active_pipe_changes)
+- *num_active = hweight32(intel_state->active_crtcs);
+- else if (intel_state)
+- *num_active = hweight32(dev_priv->active_crtcs);
+- else
+- *num_active = config->num_pipes_active;
+-
+- if (!cstate->base.active) {
++ if (WARN_ON(!state) || !cstate->base.active) {
+ alloc->start = 0;
+ alloc->end = 0;
++ *num_active = hweight32(dev_priv->active_crtcs);
+ return;
+ }
+
++ if (intel_state->active_pipe_changes)
++ *num_active = hweight32(intel_state->active_crtcs);
++ else
++ *num_active = hweight32(dev_priv->active_crtcs);
++
+ if (IS_BROXTON(dev))
+ ddb_size = BXT_DDB_SIZE;
+ else
+@@ -2883,50 +2880,23 @@ skl_ddb_get_pipe_allocation_limits(struct drm_device *dev,
+ ddb_size -= 4; /* 4 blocks for bypass path allocation */
+
+ /*
+- * FIXME: At the moment we may be called on either in-flight or fully
+- * committed cstate's. Once we fully move DDB allocation in the check
+- * phase, we'll only be called on in-flight states and the 'else'
+- * branch here will go away.
+- *
+- * The 'else' branch is slightly racy here, but it was racy to begin
+- * with; since it's going away soon, no effort is made to address that.
++ * If the state doesn't change the active CRTC's, then there's
++ * no need to recalculate; the existing pipe allocation limits
++ * should remain unchanged. Note that we're safe from racing
++ * commits since any racing commit that changes the active CRTC
++ * list would need to grab _all_ crtc locks, including the one
++ * we currently hold.
+ */
+- if (state) {
+- /*
+- * If the state doesn't change the active CRTC's, then there's
+- * no need to recalculate; the existing pipe allocation limits
+- * should remain unchanged. Note that we're safe from racing
+- * commits since any racing commit that changes the active CRTC
+- * list would need to grab _all_ crtc locks, including the one
+- * we currently hold.
+- */
+- if (!intel_state->active_pipe_changes) {
+- *alloc = dev_priv->wm.skl_hw.ddb.pipe[pipe];
+- return;
+- }
+-
+- nth_active_pipe = hweight32(intel_state->active_crtcs &
+- (drm_crtc_mask(for_crtc) - 1));
+- pipe_size = ddb_size / hweight32(intel_state->active_crtcs);
+- alloc->start = nth_active_pipe * ddb_size / *num_active;
+- alloc->end = alloc->start + pipe_size;
+- } else {
+- nth_active_pipe = 0;
+- for_each_crtc(dev, crtc) {
+- if (!to_intel_crtc(crtc)->active)
+- continue;
+-
+- if (crtc == for_crtc)
+- break;
+-
+- nth_active_pipe++;
+- }
+-
+- pipe_size = ddb_size / config->num_pipes_active;
+- alloc->start = nth_active_pipe * ddb_size /
+- config->num_pipes_active;
+- alloc->end = alloc->start + pipe_size;
++ if (!intel_state->active_pipe_changes) {
++ *alloc = dev_priv->wm.skl_hw.ddb.pipe[pipe];
++ return;
+ }
++
++ nth_active_pipe = hweight32(intel_state->active_crtcs &
++ (drm_crtc_mask(for_crtc) - 1));
++ pipe_size = ddb_size / hweight32(intel_state->active_crtcs);
++ alloc->start = nth_active_pipe * ddb_size / *num_active;
++ alloc->end = alloc->start + pipe_size;
+ }
+
+ static unsigned int skl_cursor_allocation(int num_active)
+@@ -3025,62 +2995,33 @@ skl_get_total_relative_data_rate(struct intel_crtc_state *intel_cstate)
+ struct drm_crtc *crtc = cstate->crtc;
+ struct drm_device *dev = crtc->dev;
+ struct intel_crtc *intel_crtc = to_intel_crtc(crtc);
++ const struct drm_plane *plane;
+ const struct intel_plane *intel_plane;
++ struct drm_plane_state *pstate;
+ unsigned int rate, total_data_rate = 0;
+ int id;
++ int i;
++
++ if (WARN_ON(!state))
++ return 0;
+
+ /* Calculate and cache data rate for each plane */
+- /*
+- * FIXME: At the moment this function can be called on either an
+- * in-flight or a committed state object. If it's in-flight then we
+- * only want to re-calculate the plane data rate for planes that are
+- * part of the transaction (i.e., we don't want to grab any additional
+- * plane states if we don't have to). If we're operating on committed
+- * state, we'll just go ahead and recalculate the plane data rate for
+- * all planes.
+- *
+- * Once we finish moving our DDB allocation to the atomic check phase,
+- * we'll only be calling this function on in-flight state objects, so
+- * the 'else' branch here will go away.
+- */
+- if (state) {
+- struct drm_plane *plane;
+- struct drm_plane_state *pstate;
+- int i;
+-
+- for_each_plane_in_state(state, plane, pstate, i) {
+- intel_plane = to_intel_plane(plane);
+- id = skl_wm_plane_id(intel_plane);
+-
+- if (intel_plane->pipe != intel_crtc->pipe)
+- continue;
+-
+- /* packed/uv */
+- rate = skl_plane_relative_data_rate(intel_cstate,
+- pstate, 0);
+- intel_cstate->wm.skl.plane_data_rate[id] = rate;
+-
+- /* y-plane */
+- rate = skl_plane_relative_data_rate(intel_cstate,
+- pstate, 1);
+- intel_cstate->wm.skl.plane_y_data_rate[id] = rate;
+- }
+- } else {
+- for_each_intel_plane_on_crtc(dev, intel_crtc, intel_plane) {
+- const struct drm_plane_state *pstate =
+- intel_plane->base.state;
+- int id = skl_wm_plane_id(intel_plane);
++ for_each_plane_in_state(state, plane, pstate, i) {
++ id = skl_wm_plane_id(to_intel_plane(plane));
++ intel_plane = to_intel_plane(plane);
+
+- /* packed/uv */
+- rate = skl_plane_relative_data_rate(intel_cstate,
+- pstate, 0);
+- intel_cstate->wm.skl.plane_data_rate[id] = rate;
++ if (intel_plane->pipe != intel_crtc->pipe)
++ continue;
+
+- /* y-plane */
+- rate = skl_plane_relative_data_rate(intel_cstate,
+- pstate, 1);
+- intel_cstate->wm.skl.plane_y_data_rate[id] = rate;
+- }
++ /* packed/uv */
++ rate = skl_plane_relative_data_rate(intel_cstate,
++ pstate, 0);
++ intel_cstate->wm.skl.plane_data_rate[id] = rate;
++
++ /* y-plane */
++ rate = skl_plane_relative_data_rate(intel_cstate,
++ pstate, 1);
++ intel_cstate->wm.skl.plane_y_data_rate[id] = rate;
+ }
+
+ /* Calculate CRTC's total data rate from cached values */
+@@ -3104,8 +3045,6 @@ skl_allocate_pipe_ddb(struct intel_crtc_state *cstate,
+ struct drm_atomic_state *state = cstate->base.state;
+ struct drm_crtc *crtc = cstate->base.crtc;
+ struct drm_device *dev = crtc->dev;
+- struct drm_i915_private *dev_priv = to_i915(dev);
+- struct intel_wm_config *config = &dev_priv->wm.config;
+ struct intel_crtc *intel_crtc = to_intel_crtc(crtc);
+ struct intel_plane *intel_plane;
+ struct drm_plane *plane;
+@@ -3119,6 +3058,9 @@ skl_allocate_pipe_ddb(struct intel_crtc_state *cstate,
+ int num_active;
+ int id, i;
+
++ if (WARN_ON(!state))
++ return 0;
++
+ if (!cstate->base.active) {
+ ddb->pipe[pipe].start = ddb->pipe[pipe].end = 0;
+ memset(ddb->plane[pipe], 0, sizeof(ddb->plane[pipe]));
+@@ -3126,8 +3068,7 @@ skl_allocate_pipe_ddb(struct intel_crtc_state *cstate,
+ return 0;
+ }
+
+- skl_ddb_get_pipe_allocation_limits(dev, cstate, config, alloc,
+- &num_active);
++ skl_ddb_get_pipe_allocation_limits(dev, cstate, alloc, &num_active);
+ alloc_size = skl_ddb_entry_size(alloc);
+ if (alloc_size == 0) {
+ memset(ddb->plane[pipe], 0, sizeof(ddb->plane[pipe]));
+@@ -3139,53 +3080,31 @@ skl_allocate_pipe_ddb(struct intel_crtc_state *cstate,
+ ddb->plane[pipe][PLANE_CURSOR].end = alloc->end;
+
+ alloc_size -= cursor_blocks;
+- alloc->end -= cursor_blocks;
+
+ /* 1. Allocate the mininum required blocks for each active plane */
+- /*
+- * TODO: Remove support for already-committed state once we
+- * only allocate DDB on in-flight states.
+- */
+- if (state) {
+- for_each_plane_in_state(state, plane, pstate, i) {
+- intel_plane = to_intel_plane(plane);
+- id = skl_wm_plane_id(intel_plane);
+-
+- if (intel_plane->pipe != pipe)
+- continue;
+-
+- if (!to_intel_plane_state(pstate)->visible) {
+- minimum[id] = 0;
+- y_minimum[id] = 0;
+- continue;
+- }
+- if (plane->type == DRM_PLANE_TYPE_CURSOR) {
+- minimum[id] = 0;
+- y_minimum[id] = 0;
+- continue;
+- }
+-
+- minimum[id] = 8;
+- if (pstate->fb->pixel_format == DRM_FORMAT_NV12)
+- y_minimum[id] = 8;
+- else
+- y_minimum[id] = 0;
+- }
+- } else {
+- for_each_intel_plane_on_crtc(dev, intel_crtc, intel_plane) {
+- struct drm_plane *plane = &intel_plane->base;
+- struct drm_framebuffer *fb = plane->state->fb;
+- int id = skl_wm_plane_id(intel_plane);
+-
+- if (!to_intel_plane_state(plane->state)->visible)
+- continue;
++ for_each_plane_in_state(state, plane, pstate, i) {
++ intel_plane = to_intel_plane(plane);
++ id = skl_wm_plane_id(intel_plane);
+
+- if (plane->type == DRM_PLANE_TYPE_CURSOR)
+- continue;
++ if (intel_plane->pipe != pipe)
++ continue;
+
+- minimum[id] = 8;
+- y_minimum[id] = (fb->pixel_format == DRM_FORMAT_NV12) ? 8 : 0;
++ if (!to_intel_plane_state(pstate)->visible) {
++ minimum[id] = 0;
++ y_minimum[id] = 0;
++ continue;
++ }
++ if (plane->type == DRM_PLANE_TYPE_CURSOR) {
++ minimum[id] = 0;
++ y_minimum[id] = 0;
++ continue;
+ }
++
++ minimum[id] = 8;
++ if (pstate->fb->pixel_format == DRM_FORMAT_NV12)
++ y_minimum[id] = 8;
++ else
++ y_minimum[id] = 0;
+ }
+
+ for (i = 0; i < PLANE_CURSOR; i++) {
+@@ -3736,7 +3655,6 @@ static bool skl_update_pipe_wm(struct drm_crtc *crtc,
+ struct intel_crtc *intel_crtc = to_intel_crtc(crtc);
+ struct intel_crtc_state *cstate = to_intel_crtc_state(crtc->state);
+
+- WARN_ON(skl_allocate_pipe_ddb(cstate, ddb) != 0);
+ skl_build_pipe_wm(cstate, ddb, pipe_wm);
+
+ if (!memcmp(&intel_crtc->wm.active.skl, pipe_wm, sizeof(*pipe_wm)))
+@@ -3800,16 +3718,6 @@ static void skl_clear_wm(struct skl_wm_values *watermarks, enum pipe pipe)
+ memset(watermarks->plane_trans[pipe],
+ 0, sizeof(uint32_t) * I915_MAX_PLANES);
+ watermarks->plane_trans[pipe][PLANE_CURSOR] = 0;
+-
+- /* Clear ddb entries for pipe */
+- memset(&watermarks->ddb.pipe[pipe], 0, sizeof(struct skl_ddb_entry));
+- memset(&watermarks->ddb.plane[pipe], 0,
+- sizeof(struct skl_ddb_entry) * I915_MAX_PLANES);
+- memset(&watermarks->ddb.y_plane[pipe], 0,
+- sizeof(struct skl_ddb_entry) * I915_MAX_PLANES);
+- memset(&watermarks->ddb.plane[pipe][PLANE_CURSOR], 0,
+- sizeof(struct skl_ddb_entry));
+-
+ }
+
+ static int
+--
+2.7.4
+
diff --git a/freed-ora/current/master/0011-drm-i915-gen9-Calculate-plane-WM-s-from-state.patch b/freed-ora/current/master/0011-drm-i915-gen9-Calculate-plane-WM-s-from-state.patch
new file mode 100644
index 000000000..ddcb70f1e
--- /dev/null
+++ b/freed-ora/current/master/0011-drm-i915-gen9-Calculate-plane-WM-s-from-state.patch
@@ -0,0 +1,81 @@
+From dede2d508785eda5affae9d3ac2e245e0d864144 Mon Sep 17 00:00:00 2001
+From: Matt Roper <matthew.d.roper@intel.com>
+Date: Thu, 12 May 2016 07:06:05 -0700
+Subject: [PATCH 11/17] drm/i915/gen9: Calculate plane WM's from state
+
+In a future patch we'll want to calculate plane watermarks for in-flight
+atomic state rather than the already-committed state.
+
+Signed-off-by: Matt Roper <matthew.d.roper@intel.com>
+Reviewed-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
+Link: http://patchwork.freedesktop.org/patch/msgid/1463061971-19638-12-git-send-email-matthew.d.roper@intel.com
+---
+ drivers/gpu/drm/i915/intel_pm.c | 16 ++++++++--------
+ 1 file changed, 8 insertions(+), 8 deletions(-)
+
+diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c
+index 0f0d4e1..518178a 100644
+--- a/drivers/gpu/drm/i915/intel_pm.c
++++ b/drivers/gpu/drm/i915/intel_pm.c
+@@ -3240,16 +3240,14 @@ static bool skl_ddb_allocation_changed(const struct skl_ddb_allocation *new_ddb,
+
+ static bool skl_compute_plane_wm(const struct drm_i915_private *dev_priv,
+ struct intel_crtc_state *cstate,
+- struct intel_plane *intel_plane,
++ struct intel_plane_state *intel_pstate,
+ uint16_t ddb_allocation,
+ int level,
+ uint16_t *out_blocks, /* out */
+ uint8_t *out_lines /* out */)
+ {
+- struct drm_plane *plane = &intel_plane->base;
+- struct drm_framebuffer *fb = plane->state->fb;
+- struct intel_plane_state *intel_pstate =
+- to_intel_plane_state(plane->state);
++ struct drm_plane_state *pstate = &intel_pstate->base;
++ struct drm_framebuffer *fb = pstate->fb;
+ uint32_t latency = dev_priv->wm.skl_latency[level];
+ uint32_t method1, method2;
+ uint32_t plane_bytes_per_line, plane_blocks_per_line;
+@@ -3264,7 +3262,7 @@ static bool skl_compute_plane_wm(const struct drm_i915_private *dev_priv,
+ width = drm_rect_width(&intel_pstate->src) >> 16;
+ height = drm_rect_height(&intel_pstate->src) >> 16;
+
+- if (intel_rotation_90_or_270(plane->state->rotation))
++ if (intel_rotation_90_or_270(pstate->rotation))
+ swap(width, height);
+
+ cpp = drm_format_plane_cpp(fb->pixel_format, 0);
+@@ -3284,7 +3282,7 @@ static bool skl_compute_plane_wm(const struct drm_i915_private *dev_priv,
+ fb->modifier[0] == I915_FORMAT_MOD_Yf_TILED) {
+ uint32_t min_scanlines = 4;
+ uint32_t y_tile_minimum;
+- if (intel_rotation_90_or_270(plane->state->rotation)) {
++ 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);
+@@ -3338,17 +3336,19 @@ static void skl_compute_wm_level(const struct drm_i915_private *dev_priv,
+ struct drm_device *dev = dev_priv->dev;
+ struct intel_crtc *intel_crtc = to_intel_crtc(cstate->base.crtc);
+ struct intel_plane *intel_plane;
++ struct intel_plane_state *intel_pstate;
+ uint16_t ddb_blocks;
+ enum pipe pipe = intel_crtc->pipe;
+
+ for_each_intel_plane_on_crtc(dev, intel_crtc, intel_plane) {
+ int i = skl_wm_plane_id(intel_plane);
+
++ intel_pstate = to_intel_plane_state(intel_plane->base.state);
+ ddb_blocks = skl_ddb_entry_size(&ddb->plane[pipe][i]);
+
+ result->plane_en[i] = skl_compute_plane_wm(dev_priv,
+ cstate,
+- intel_plane,
++ intel_pstate,
+ ddb_blocks,
+ level,
+ &result->plane_res_b[i],
+--
+2.7.4
+
diff --git a/freed-ora/current/master/0012-drm-i915-gen9-Allow-watermark-calculation-on-in-flig.patch b/freed-ora/current/master/0012-drm-i915-gen9-Allow-watermark-calculation-on-in-flig.patch
new file mode 100644
index 000000000..a5314d69c
--- /dev/null
+++ b/freed-ora/current/master/0012-drm-i915-gen9-Allow-watermark-calculation-on-in-flig.patch
@@ -0,0 +1,146 @@
+From 5f63c44c510f45953a6b2387799baac49da2ffb5 Mon Sep 17 00:00:00 2001
+From: Matt Roper <matthew.d.roper@intel.com>
+Date: Thu, 12 May 2016 07:06:06 -0700
+Subject: [PATCH 12/17] drm/i915/gen9: Allow watermark calculation on in-flight
+ atomic state (v3)
+
+In an upcoming patch we'll move this calculation to the atomic 'check'
+phase so that the display update can be rejected early if no valid
+watermark programming is possible.
+
+v2:
+ - Drop intel_pstate_for_cstate_plane() helper and add note about how
+ the code needs to evolve in the future if we start allowing more than
+ one pending commit against a CRTC. (Maarten)
+
+v3:
+ - Only have skl_compute_wm_level calculate watermarks for enabled
+ planes; we can just set the other planes on a CRTC to disabled
+ without having to look at the plane state. This is important because
+ despite our CRTC lock we can still have racing commits that modify
+ a disabled plane's property without turning it on. (Maarten)
+
+Signed-off-by: Matt Roper <matthew.d.roper@intel.com>
+Reviewed-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
+Link: http://patchwork.freedesktop.org/patch/msgid/1463061971-19638-13-git-send-email-matthew.d.roper@intel.com
+---
+ drivers/gpu/drm/i915/intel_pm.c | 61 ++++++++++++++++++++++++++++++++---------
+ 1 file changed, 48 insertions(+), 13 deletions(-)
+
+diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c
+index 518178a..c9f050e 100644
+--- a/drivers/gpu/drm/i915/intel_pm.c
++++ b/drivers/gpu/drm/i915/intel_pm.c
+@@ -3327,23 +3327,56 @@ static bool skl_compute_plane_wm(const struct drm_i915_private *dev_priv,
+ return true;
+ }
+
+-static void skl_compute_wm_level(const struct drm_i915_private *dev_priv,
+- struct skl_ddb_allocation *ddb,
+- struct intel_crtc_state *cstate,
+- int level,
+- struct skl_wm_level *result)
++static int
++skl_compute_wm_level(const struct drm_i915_private *dev_priv,
++ struct skl_ddb_allocation *ddb,
++ struct intel_crtc_state *cstate,
++ int level,
++ struct skl_wm_level *result)
+ {
+ struct drm_device *dev = dev_priv->dev;
++ struct drm_atomic_state *state = cstate->base.state;
+ struct intel_crtc *intel_crtc = to_intel_crtc(cstate->base.crtc);
++ struct drm_plane *plane;
+ struct intel_plane *intel_plane;
+ struct intel_plane_state *intel_pstate;
+ uint16_t ddb_blocks;
+ enum pipe pipe = intel_crtc->pipe;
+
+- for_each_intel_plane_on_crtc(dev, intel_crtc, intel_plane) {
++ /*
++ * We'll only calculate watermarks for planes that are actually
++ * enabled, so make sure all other planes are set as disabled.
++ */
++ memset(result, 0, sizeof(*result));
++
++ for_each_intel_plane_mask(dev, intel_plane, cstate->base.plane_mask) {
+ int i = skl_wm_plane_id(intel_plane);
+
+- intel_pstate = to_intel_plane_state(intel_plane->base.state);
++ plane = &intel_plane->base;
++ intel_pstate = NULL;
++ if (state)
++ intel_pstate =
++ intel_atomic_get_existing_plane_state(state,
++ intel_plane);
++
++ /*
++ * Note: If we start supporting multiple pending atomic commits
++ * against the same planes/CRTC's in the future, plane->state
++ * will no longer be the correct pre-state to use for the
++ * calculations here and we'll need to change where we get the
++ * 'unchanged' plane data from.
++ *
++ * For now this is fine because we only allow one queued commit
++ * against a CRTC. Even if the plane isn't modified by this
++ * transaction and we don't have a plane lock, we still have
++ * the CRTC's lock, so we know that no other transactions are
++ * racing with us to update it.
++ */
++ if (!intel_pstate)
++ intel_pstate = to_intel_plane_state(plane->state);
++
++ WARN_ON(!intel_pstate->base.fb);
++
+ ddb_blocks = skl_ddb_entry_size(&ddb->plane[pipe][i]);
+
+ result->plane_en[i] = skl_compute_plane_wm(dev_priv,
+@@ -3354,6 +3387,8 @@ static void skl_compute_wm_level(const struct drm_i915_private *dev_priv,
+ &result->plane_res_b[i],
+ &result->plane_res_l[i]);
+ }
++
++ return 0;
+ }
+
+ static uint32_t
+@@ -3648,14 +3683,14 @@ static void skl_flush_wm_values(struct drm_i915_private *dev_priv,
+ }
+ }
+
+-static bool skl_update_pipe_wm(struct drm_crtc *crtc,
++static bool skl_update_pipe_wm(struct drm_crtc_state *cstate,
+ struct skl_ddb_allocation *ddb, /* out */
+ struct skl_pipe_wm *pipe_wm /* out */)
+ {
+- struct intel_crtc *intel_crtc = to_intel_crtc(crtc);
+- struct intel_crtc_state *cstate = to_intel_crtc_state(crtc->state);
++ struct intel_crtc *intel_crtc = to_intel_crtc(cstate->crtc);
++ struct intel_crtc_state *intel_cstate = to_intel_crtc_state(cstate);
+
+- skl_build_pipe_wm(cstate, ddb, pipe_wm);
++ skl_build_pipe_wm(intel_cstate, ddb, pipe_wm);
+
+ if (!memcmp(&intel_crtc->wm.active.skl, pipe_wm, sizeof(*pipe_wm)))
+ return false;
+@@ -3695,7 +3730,7 @@ static void skl_update_other_pipe_wm(struct drm_device *dev,
+ if (!intel_crtc->active)
+ continue;
+
+- wm_changed = skl_update_pipe_wm(&intel_crtc->base,
++ wm_changed = skl_update_pipe_wm(intel_crtc->base.state,
+ &r->ddb, &pipe_wm);
+
+ /*
+@@ -3813,7 +3848,7 @@ static void skl_update_wm(struct drm_crtc *crtc)
+
+ skl_clear_wm(results, intel_crtc->pipe);
+
+- if (!skl_update_pipe_wm(crtc, &results->ddb, pipe_wm))
++ if (!skl_update_pipe_wm(crtc->state, &results->ddb, pipe_wm))
+ return;
+
+ skl_compute_wm_results(dev, pipe_wm, results, intel_crtc);
+--
+2.7.4
+
diff --git a/freed-ora/current/master/0013-drm-i915-gen9-Use-a-bitmask-to-track-dirty-pipe-wate.patch b/freed-ora/current/master/0013-drm-i915-gen9-Use-a-bitmask-to-track-dirty-pipe-wate.patch
new file mode 100644
index 000000000..1eafe831b
--- /dev/null
+++ b/freed-ora/current/master/0013-drm-i915-gen9-Use-a-bitmask-to-track-dirty-pipe-wate.patch
@@ -0,0 +1,81 @@
+From bb7c6f4efe65f77ba2ed3a09e6d6bc4d021a395d Mon Sep 17 00:00:00 2001
+From: Matt Roper <matthew.d.roper@intel.com>
+Date: Thu, 12 May 2016 07:06:07 -0700
+Subject: [PATCH 13/17] drm/i915/gen9: Use a bitmask to track dirty pipe
+ watermarks
+
+Slightly easier to work with than an array of bools.
+
+Signed-off-by: Matt Roper <matthew.d.roper@intel.com>
+Reviewed-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
+Link: http://patchwork.freedesktop.org/patch/msgid/1463061971-19638-14-git-send-email-matthew.d.roper@intel.com
+---
+ drivers/gpu/drm/i915/i915_drv.h | 2 +-
+ drivers/gpu/drm/i915/intel_pm.c | 10 +++++-----
+ 2 files changed, 6 insertions(+), 6 deletions(-)
+
+diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
+index b908a41..e7bde72 100644
+--- a/drivers/gpu/drm/i915/i915_drv.h
++++ b/drivers/gpu/drm/i915/i915_drv.h
+@@ -1591,7 +1591,7 @@ struct skl_ddb_allocation {
+ };
+
+ struct skl_wm_values {
+- bool dirty[I915_MAX_PIPES];
++ unsigned dirty_pipes;
+ struct skl_ddb_allocation ddb;
+ uint32_t wm_linetime[I915_MAX_PIPES];
+ uint32_t plane[I915_MAX_PIPES][I915_MAX_PLANES][8];
+diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c
+index c9f050e..cb6b6f4 100644
+--- a/drivers/gpu/drm/i915/intel_pm.c
++++ b/drivers/gpu/drm/i915/intel_pm.c
+@@ -3516,7 +3516,7 @@ static void skl_write_wm_values(struct drm_i915_private *dev_priv,
+ int i, level, max_level = ilk_wm_max_level(dev);
+ enum pipe pipe = crtc->pipe;
+
+- if (!new->dirty[pipe])
++ if ((new->dirty_pipes & drm_crtc_mask(&crtc->base)) == 0)
+ continue;
+
+ I915_WRITE(PIPE_WM_LINETIME(pipe), new->wm_linetime[pipe]);
+@@ -3741,7 +3741,7 @@ static void skl_update_other_pipe_wm(struct drm_device *dev,
+ WARN_ON(!wm_changed);
+
+ skl_compute_wm_results(dev, &pipe_wm, r, intel_crtc);
+- r->dirty[intel_crtc->pipe] = true;
++ r->dirty_pipes |= drm_crtc_mask(&intel_crtc->base);
+ }
+ }
+
+@@ -3844,7 +3844,7 @@ static void skl_update_wm(struct drm_crtc *crtc)
+
+
+ /* Clear all dirty flags */
+- memset(results->dirty, 0, sizeof(bool) * I915_MAX_PIPES);
++ results->dirty_pipes = 0;
+
+ skl_clear_wm(results, intel_crtc->pipe);
+
+@@ -3852,7 +3852,7 @@ static void skl_update_wm(struct drm_crtc *crtc)
+ return;
+
+ skl_compute_wm_results(dev, pipe_wm, results, intel_crtc);
+- results->dirty[intel_crtc->pipe] = true;
++ results->dirty_pipes |= drm_crtc_mask(&intel_crtc->base);
+
+ skl_update_other_pipe_wm(dev, crtc, results);
+ skl_write_wm_values(dev_priv, results);
+@@ -4011,7 +4011,7 @@ static void skl_pipe_wm_get_hw_state(struct drm_crtc *crtc)
+ if (!intel_crtc->active)
+ return;
+
+- hw->dirty[pipe] = true;
++ hw->dirty_pipes |= drm_crtc_mask(crtc);
+
+ active->linetime = hw->wm_linetime[pipe];
+
+--
+2.7.4
+
diff --git a/freed-ora/current/master/0014-drm-i915-gen9-Propagate-watermark-calculation-failur.patch b/freed-ora/current/master/0014-drm-i915-gen9-Propagate-watermark-calculation-failur.patch
new file mode 100644
index 000000000..134ffad16
--- /dev/null
+++ b/freed-ora/current/master/0014-drm-i915-gen9-Propagate-watermark-calculation-failur.patch
@@ -0,0 +1,244 @@
+From 0830cf3698b5966d3409745f751fb6d3a555c254 Mon Sep 17 00:00:00 2001
+From: Matt Roper <matthew.d.roper@intel.com>
+Date: Thu, 12 May 2016 07:06:08 -0700
+Subject: [PATCH 14/17] drm/i915/gen9: Propagate watermark calculation failures
+ up the call chain
+
+Once we move watermark calculation to the atomic check phase, we'll want
+to start rejecting display configurations that exceed out watermark
+limits. At the moment we just assume that there's always a valid set of
+watermarks, even though this may not actually be true. Let's prepare by
+passing return codes up through the call stack in preparation.
+
+Signed-off-by: Matt Roper <matthew.d.roper@intel.com>
+Reviewed-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
+Link: http://patchwork.freedesktop.org/patch/msgid/1463061971-19638-15-git-send-email-matthew.d.roper@intel.com
+---
+ drivers/gpu/drm/i915/intel_display.c | 10 ++--
+ drivers/gpu/drm/i915/intel_pm.c | 90 ++++++++++++++++++++++--------------
+ 2 files changed, 61 insertions(+), 39 deletions(-)
+
+diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
+index 4db10d7..2190bac 100644
+--- a/drivers/gpu/drm/i915/intel_display.c
++++ b/drivers/gpu/drm/i915/intel_display.c
+@@ -13339,7 +13339,7 @@ static int intel_modeset_checks(struct drm_atomic_state *state)
+ * phase. The code here should be run after the per-crtc and per-plane 'check'
+ * handlers to ensure that all derived state has been updated.
+ */
+-static void calc_watermark_data(struct drm_atomic_state *state)
++static int calc_watermark_data(struct drm_atomic_state *state)
+ {
+ struct drm_device *dev = state->dev;
+ struct drm_i915_private *dev_priv = to_i915(dev);
+@@ -13375,7 +13375,9 @@ static void calc_watermark_data(struct drm_atomic_state *state)
+
+ /* Is there platform-specific watermark information to calculate? */
+ if (dev_priv->display.compute_global_watermarks)
+- dev_priv->display.compute_global_watermarks(state);
++ return dev_priv->display.compute_global_watermarks(state);
++
++ return 0;
+ }
+
+ /**
+@@ -13459,9 +13461,7 @@ static int intel_atomic_check(struct drm_device *dev,
+ return ret;
+
+ intel_fbc_choose_crtc(dev_priv, state);
+- calc_watermark_data(state);
+-
+- return 0;
++ return calc_watermark_data(state);
+ }
+
+ static int intel_atomic_prepare_commit(struct drm_device *dev,
+diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c
+index cb6b6f4..342aa66 100644
+--- a/drivers/gpu/drm/i915/intel_pm.c
++++ b/drivers/gpu/drm/i915/intel_pm.c
+@@ -3238,13 +3238,14 @@ static bool skl_ddb_allocation_changed(const struct skl_ddb_allocation *new_ddb,
+ return false;
+ }
+
+-static bool skl_compute_plane_wm(const struct drm_i915_private *dev_priv,
+- struct intel_crtc_state *cstate,
+- struct intel_plane_state *intel_pstate,
+- uint16_t ddb_allocation,
+- int level,
+- uint16_t *out_blocks, /* out */
+- uint8_t *out_lines /* out */)
++static int skl_compute_plane_wm(const struct drm_i915_private *dev_priv,
++ struct intel_crtc_state *cstate,
++ struct intel_plane_state *intel_pstate,
++ uint16_t ddb_allocation,
++ int level,
++ uint16_t *out_blocks, /* out */
++ uint8_t *out_lines, /* out */
++ bool *enabled /* out */)
+ {
+ struct drm_plane_state *pstate = &intel_pstate->base;
+ struct drm_framebuffer *fb = pstate->fb;
+@@ -3256,8 +3257,10 @@ static bool skl_compute_plane_wm(const struct drm_i915_private *dev_priv,
+ uint8_t cpp;
+ uint32_t width = 0, height = 0;
+
+- if (latency == 0 || !cstate->base.active || !intel_pstate->visible)
+- return false;
++ if (latency == 0 || !cstate->base.active || !intel_pstate->visible) {
++ *enabled = false;
++ return 0;
++ }
+
+ width = drm_rect_width(&intel_pstate->src) >> 16;
+ height = drm_rect_height(&intel_pstate->src) >> 16;
+@@ -3318,13 +3321,16 @@ static bool skl_compute_plane_wm(const struct drm_i915_private *dev_priv,
+ res_blocks++;
+ }
+
+- if (res_blocks >= ddb_allocation || res_lines > 31)
+- return false;
++ if (res_blocks >= ddb_allocation || res_lines > 31) {
++ *enabled = false;
++ return 0;
++ }
+
+ *out_blocks = res_blocks;
+ *out_lines = res_lines;
++ *enabled = true;
+
+- return true;
++ return 0;
+ }
+
+ static int
+@@ -3342,6 +3348,7 @@ skl_compute_wm_level(const struct drm_i915_private *dev_priv,
+ struct intel_plane_state *intel_pstate;
+ uint16_t ddb_blocks;
+ enum pipe pipe = intel_crtc->pipe;
++ int ret;
+
+ /*
+ * We'll only calculate watermarks for planes that are actually
+@@ -3379,13 +3386,16 @@ skl_compute_wm_level(const struct drm_i915_private *dev_priv,
+
+ ddb_blocks = skl_ddb_entry_size(&ddb->plane[pipe][i]);
+
+- result->plane_en[i] = skl_compute_plane_wm(dev_priv,
+- cstate,
+- intel_pstate,
+- ddb_blocks,
+- level,
+- &result->plane_res_b[i],
+- &result->plane_res_l[i]);
++ ret = skl_compute_plane_wm(dev_priv,
++ cstate,
++ intel_pstate,
++ ddb_blocks,
++ level,
++ &result->plane_res_b[i],
++ &result->plane_res_l[i],
++ &result->plane_en[i]);
++ if (ret)
++ return ret;
+ }
+
+ return 0;
+@@ -3422,21 +3432,26 @@ static void skl_compute_transition_wm(struct intel_crtc_state *cstate,
+ }
+ }
+
+-static void skl_build_pipe_wm(struct intel_crtc_state *cstate,
+- struct skl_ddb_allocation *ddb,
+- struct skl_pipe_wm *pipe_wm)
++static int skl_build_pipe_wm(struct intel_crtc_state *cstate,
++ struct skl_ddb_allocation *ddb,
++ struct skl_pipe_wm *pipe_wm)
+ {
+ struct drm_device *dev = cstate->base.crtc->dev;
+ const struct drm_i915_private *dev_priv = dev->dev_private;
+ int level, max_level = ilk_wm_max_level(dev);
++ int ret;
+
+ for (level = 0; level <= max_level; level++) {
+- skl_compute_wm_level(dev_priv, ddb, cstate,
+- level, &pipe_wm->wm[level]);
++ ret = skl_compute_wm_level(dev_priv, ddb, cstate,
++ level, &pipe_wm->wm[level]);
++ if (ret)
++ return ret;
+ }
+ pipe_wm->linetime = skl_compute_linetime_wm(cstate);
+
+ skl_compute_transition_wm(cstate, &pipe_wm->trans_wm);
++
++ return 0;
+ }
+
+ static void skl_compute_wm_results(struct drm_device *dev,
+@@ -3683,21 +3698,27 @@ static void skl_flush_wm_values(struct drm_i915_private *dev_priv,
+ }
+ }
+
+-static bool skl_update_pipe_wm(struct drm_crtc_state *cstate,
+- struct skl_ddb_allocation *ddb, /* out */
+- struct skl_pipe_wm *pipe_wm /* out */)
++static int skl_update_pipe_wm(struct drm_crtc_state *cstate,
++ struct skl_ddb_allocation *ddb, /* out */
++ struct skl_pipe_wm *pipe_wm, /* out */
++ bool *changed /* out */)
+ {
+ struct intel_crtc *intel_crtc = to_intel_crtc(cstate->crtc);
+ struct intel_crtc_state *intel_cstate = to_intel_crtc_state(cstate);
++ int ret;
+
+- skl_build_pipe_wm(intel_cstate, ddb, pipe_wm);
++ ret = skl_build_pipe_wm(intel_cstate, ddb, pipe_wm);
++ if (ret)
++ return ret;
+
+ if (!memcmp(&intel_crtc->wm.active.skl, pipe_wm, sizeof(*pipe_wm)))
+- return false;
++ *changed = false;
++ else
++ *changed = true;
+
+ intel_crtc->wm.active.skl = *pipe_wm;
+
+- return true;
++ return 0;
+ }
+
+ static void skl_update_other_pipe_wm(struct drm_device *dev,
+@@ -3730,8 +3751,8 @@ static void skl_update_other_pipe_wm(struct drm_device *dev,
+ if (!intel_crtc->active)
+ continue;
+
+- wm_changed = skl_update_pipe_wm(intel_crtc->base.state,
+- &r->ddb, &pipe_wm);
++ skl_update_pipe_wm(intel_crtc->base.state,
++ &r->ddb, &pipe_wm, &wm_changed);
+
+ /*
+ * If we end up re-computing the other pipe WM values, it's
+@@ -3841,14 +3862,15 @@ static void skl_update_wm(struct drm_crtc *crtc)
+ struct skl_wm_values *results = &dev_priv->wm.skl_results;
+ struct intel_crtc_state *cstate = to_intel_crtc_state(crtc->state);
+ struct skl_pipe_wm *pipe_wm = &cstate->wm.skl.optimal;
+-
++ bool wm_changed;
+
+ /* Clear all dirty flags */
+ results->dirty_pipes = 0;
+
+ skl_clear_wm(results, intel_crtc->pipe);
+
+- if (!skl_update_pipe_wm(crtc->state, &results->ddb, pipe_wm))
++ skl_update_pipe_wm(crtc->state, &results->ddb, pipe_wm, &wm_changed);
++ if (!wm_changed)
+ return;
+
+ skl_compute_wm_results(dev, pipe_wm, results, intel_crtc);
+--
+2.7.4
+
diff --git a/freed-ora/current/master/0015-drm-i915-gen9-Calculate-watermarks-during-atomic-che.patch b/freed-ora/current/master/0015-drm-i915-gen9-Calculate-watermarks-during-atomic-che.patch
new file mode 100644
index 000000000..691b6b985
--- /dev/null
+++ b/freed-ora/current/master/0015-drm-i915-gen9-Calculate-watermarks-during-atomic-che.patch
@@ -0,0 +1,302 @@
+From 664f87c5bfcc7798bd5b16e14792f1e9ba2956ea Mon Sep 17 00:00:00 2001
+From: Matt Roper <matthew.d.roper@intel.com>
+Date: Thu, 12 May 2016 15:11:40 -0700
+Subject: [PATCH 15/17] drm/i915/gen9: Calculate watermarks during atomic
+ 'check' (v2)
+
+Moving watermark calculation into the check phase will allow us to to
+reject display configurations for which there are no valid watermark
+values before we start trying to program the hardware (although those
+tests will come in a subsequent patch).
+
+Another advantage of moving this calculation to the check phase is that
+we can calculate the watermarks in a single shot as part of the atomic
+transaction. The watermark interfaces we inherited from our legacy
+modesetting days are a bit broken in the atomic design because they use
+per-crtc entry points but actually re-calculate and re-program something
+that is really more of a global state. That worked okay in the legacy
+modesetting world because operations only ever updated a single CRTC at
+a time. However in the atomic world, a transaction can involve multiple
+CRTC's, which means we wind up computing and programming the watermarks
+NxN times (where N is the number of CRTC's involved). With this patch
+we eliminate the redundant re-calculation of watermark data for atomic
+states (which was the cause of the WARN_ON(!wm_changed) problems that
+have plagued us for a while).
+
+We still need to work on the 'commit' side of watermark handling so that
+we aren't doing redundant NxN programming of watermarks, but that's
+content for future patches.
+
+v2:
+ - Bail out of skl_write_wm_values() if the CRTC isn't active. Now that
+ we set dirty_pipes to ~0 if the active pipes change (because
+ we need to deal with DDB changes), we can now wind up here for
+ disabled pipes, whereas we couldn't before.
+
+Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=89055
+Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=92181
+Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
+Signed-off-by: Matt Roper <matthew.d.roper@intel.com>
+Tested-by: Daniel Stone <daniels@collabora.com>
+Reviewed-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
+Link: http://patchwork.freedesktop.org/patch/msgid/1463091100-13747-1-git-send-email-matthew.d.roper@intel.com
+---
+ drivers/gpu/drm/i915/intel_display.c | 2 +-
+ drivers/gpu/drm/i915/intel_drv.h | 2 +-
+ drivers/gpu/drm/i915/intel_pm.c | 140 +++++++++++++----------------------
+ 3 files changed, 54 insertions(+), 90 deletions(-)
+
+diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
+index 2190bac..a75daac 100644
+--- a/drivers/gpu/drm/i915/intel_display.c
++++ b/drivers/gpu/drm/i915/intel_display.c
+@@ -13627,7 +13627,7 @@ static int intel_atomic_commit(struct drm_device *dev,
+ drm_atomic_helper_swap_state(dev, state);
+ dev_priv->wm.config = intel_state->wm_config;
+ dev_priv->wm.distrust_bios_wm = false;
+- dev_priv->wm.skl_results.ddb = intel_state->ddb;
++ dev_priv->wm.skl_results = intel_state->wm_results;
+ intel_shared_dpll_commit(state);
+
+ if (intel_state->modeset) {
+diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h
+index 2218290..ab0be7a 100644
+--- a/drivers/gpu/drm/i915/intel_drv.h
++++ b/drivers/gpu/drm/i915/intel_drv.h
+@@ -314,7 +314,7 @@ struct intel_atomic_state {
+ bool skip_intermediate_wm;
+
+ /* Gen9+ only */
+- struct skl_ddb_allocation ddb;
++ struct skl_wm_values wm_results;
+ };
+
+ struct intel_plane_state {
+diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c
+index 342aa66..b072417 100644
+--- a/drivers/gpu/drm/i915/intel_pm.c
++++ b/drivers/gpu/drm/i915/intel_pm.c
+@@ -3221,23 +3221,6 @@ static uint32_t skl_wm_method2(uint32_t pixel_rate, uint32_t pipe_htotal,
+ return ret;
+ }
+
+-static bool skl_ddb_allocation_changed(const struct skl_ddb_allocation *new_ddb,
+- const struct intel_crtc *intel_crtc)
+-{
+- struct drm_device *dev = intel_crtc->base.dev;
+- struct drm_i915_private *dev_priv = dev->dev_private;
+- const struct skl_ddb_allocation *cur_ddb = &dev_priv->wm.skl_hw.ddb;
+-
+- /*
+- * If ddb allocation of pipes changed, it may require recalculation of
+- * watermarks
+- */
+- if (memcmp(new_ddb->pipe, cur_ddb->pipe, sizeof(new_ddb->pipe)))
+- return true;
+-
+- return false;
+-}
+-
+ static int skl_compute_plane_wm(const struct drm_i915_private *dev_priv,
+ struct intel_crtc_state *cstate,
+ struct intel_plane_state *intel_pstate,
+@@ -3533,6 +3516,8 @@ static void skl_write_wm_values(struct drm_i915_private *dev_priv,
+
+ 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]);
+
+@@ -3716,66 +3701,9 @@ static int skl_update_pipe_wm(struct drm_crtc_state *cstate,
+ else
+ *changed = true;
+
+- intel_crtc->wm.active.skl = *pipe_wm;
+-
+ return 0;
+ }
+
+-static void skl_update_other_pipe_wm(struct drm_device *dev,
+- struct drm_crtc *crtc,
+- struct skl_wm_values *r)
+-{
+- struct intel_crtc *intel_crtc;
+- struct intel_crtc *this_crtc = to_intel_crtc(crtc);
+-
+- /*
+- * If the WM update hasn't changed the allocation for this_crtc (the
+- * crtc we are currently computing the new WM values for), other
+- * enabled crtcs will keep the same allocation and we don't need to
+- * recompute anything for them.
+- */
+- if (!skl_ddb_allocation_changed(&r->ddb, this_crtc))
+- return;
+-
+- /*
+- * Otherwise, because of this_crtc being freshly enabled/disabled, the
+- * other active pipes need new DDB allocation and WM values.
+- */
+- for_each_intel_crtc(dev, intel_crtc) {
+- struct skl_pipe_wm pipe_wm = {};
+- bool wm_changed;
+-
+- if (this_crtc->pipe == intel_crtc->pipe)
+- continue;
+-
+- if (!intel_crtc->active)
+- continue;
+-
+- skl_update_pipe_wm(intel_crtc->base.state,
+- &r->ddb, &pipe_wm, &wm_changed);
+-
+- /*
+- * If we end up re-computing the other pipe WM values, it's
+- * because it was really needed, so we expect the WM values to
+- * be different.
+- */
+- WARN_ON(!wm_changed);
+-
+- skl_compute_wm_results(dev, &pipe_wm, r, intel_crtc);
+- r->dirty_pipes |= drm_crtc_mask(&intel_crtc->base);
+- }
+-}
+-
+-static void skl_clear_wm(struct skl_wm_values *watermarks, enum pipe pipe)
+-{
+- watermarks->wm_linetime[pipe] = 0;
+- memset(watermarks->plane[pipe], 0,
+- sizeof(uint32_t) * 8 * I915_MAX_PLANES);
+- memset(watermarks->plane_trans[pipe],
+- 0, sizeof(uint32_t) * I915_MAX_PLANES);
+- watermarks->plane_trans[pipe][PLANE_CURSOR] = 0;
+-}
+-
+ static int
+ skl_compute_ddb(struct drm_atomic_state *state)
+ {
+@@ -3783,6 +3711,7 @@ skl_compute_ddb(struct drm_atomic_state *state)
+ struct drm_i915_private *dev_priv = to_i915(dev);
+ struct intel_atomic_state *intel_state = to_intel_atomic_state(state);
+ struct intel_crtc *intel_crtc;
++ struct skl_ddb_allocation *ddb = &intel_state->wm_results.ddb;
+ unsigned realloc_pipes = dev_priv->active_crtcs;
+ int ret;
+
+@@ -3808,8 +3737,10 @@ skl_compute_ddb(struct drm_atomic_state *state)
+ * any other display updates race with this transaction, so we need
+ * to grab the lock on *all* CRTC's.
+ */
+- if (intel_state->active_pipe_changes)
++ if (intel_state->active_pipe_changes) {
+ realloc_pipes = ~0;
++ intel_state->wm_results.dirty_pipes = ~0;
++ }
+
+ for_each_intel_crtc_mask(dev, intel_crtc, realloc_pipes) {
+ struct intel_crtc_state *cstate;
+@@ -3818,7 +3749,7 @@ skl_compute_ddb(struct drm_atomic_state *state)
+ if (IS_ERR(cstate))
+ return PTR_ERR(cstate);
+
+- ret = skl_allocate_pipe_ddb(cstate, &intel_state->ddb);
++ ret = skl_allocate_pipe_ddb(cstate, ddb);
+ if (ret)
+ return ret;
+ }
+@@ -3831,8 +3762,11 @@ skl_compute_wm(struct drm_atomic_state *state)
+ {
+ struct drm_crtc *crtc;
+ struct drm_crtc_state *cstate;
+- int ret, i;
++ struct intel_atomic_state *intel_state = to_intel_atomic_state(state);
++ struct skl_wm_values *results = &intel_state->wm_results;
++ struct skl_pipe_wm *pipe_wm;
+ bool changed = false;
++ int ret, i;
+
+ /*
+ * If this transaction isn't actually touching any CRTC's, don't
+@@ -3847,10 +3781,45 @@ skl_compute_wm(struct drm_atomic_state *state)
+ if (!changed)
+ return 0;
+
++ /* Clear all dirty flags */
++ results->dirty_pipes = 0;
++
+ ret = skl_compute_ddb(state);
+ if (ret)
+ return ret;
+
++ /*
++ * Calculate WM's for all pipes that are part of this transaction.
++ * Note that the DDB allocation above may have added more CRTC's that
++ * weren't otherwise being modified (and set bits in dirty_pipes) if
++ * pipe allocations had to change.
++ *
++ * FIXME: Now that we're doing this in the atomic check phase, we
++ * should allow skl_update_pipe_wm() to return failure in cases where
++ * no suitable watermark values can be found.
++ */
++ for_each_crtc_in_state(state, crtc, cstate, i) {
++ struct intel_crtc *intel_crtc = to_intel_crtc(crtc);
++ struct intel_crtc_state *intel_cstate =
++ to_intel_crtc_state(cstate);
++
++ pipe_wm = &intel_cstate->wm.skl.optimal;
++ ret = skl_update_pipe_wm(cstate, &results->ddb, pipe_wm,
++ &changed);
++ if (ret)
++ return ret;
++
++ if (changed)
++ results->dirty_pipes |= drm_crtc_mask(crtc);
++
++ if ((results->dirty_pipes & drm_crtc_mask(crtc)) == 0)
++ /* This pipe's WM's did not change */
++ continue;
++
++ intel_cstate->update_wm_pre = true;
++ skl_compute_wm_results(crtc->dev, pipe_wm, results, intel_crtc);
++ }
++
+ return 0;
+ }
+
+@@ -3862,26 +3831,21 @@ static void skl_update_wm(struct drm_crtc *crtc)
+ struct skl_wm_values *results = &dev_priv->wm.skl_results;
+ struct intel_crtc_state *cstate = to_intel_crtc_state(crtc->state);
+ struct skl_pipe_wm *pipe_wm = &cstate->wm.skl.optimal;
+- bool wm_changed;
+-
+- /* Clear all dirty flags */
+- results->dirty_pipes = 0;
+
+- skl_clear_wm(results, intel_crtc->pipe);
+-
+- skl_update_pipe_wm(crtc->state, &results->ddb, pipe_wm, &wm_changed);
+- if (!wm_changed)
++ if ((results->dirty_pipes & drm_crtc_mask(crtc)) == 0)
+ return;
+
+- skl_compute_wm_results(dev, pipe_wm, results, intel_crtc);
+- results->dirty_pipes |= drm_crtc_mask(&intel_crtc->base);
++ intel_crtc->wm.active.skl = *pipe_wm;
++
++ mutex_lock(&dev_priv->wm.wm_mutex);
+
+- skl_update_other_pipe_wm(dev, crtc, results);
+ skl_write_wm_values(dev_priv, results);
+ skl_flush_wm_values(dev_priv, results);
+
+ /* store the new configuration */
+ dev_priv->wm.skl_hw = *results;
++
++ mutex_unlock(&dev_priv->wm.wm_mutex);
+ }
+
+ static void ilk_compute_wm_config(struct drm_device *dev,
+--
+2.7.4
+
diff --git a/freed-ora/current/master/0016-drm-i915-gen9-Reject-display-updates-that-exceed-wm-.patch b/freed-ora/current/master/0016-drm-i915-gen9-Reject-display-updates-that-exceed-wm-.patch
new file mode 100644
index 000000000..4fe8d8a98
--- /dev/null
+++ b/freed-ora/current/master/0016-drm-i915-gen9-Reject-display-updates-that-exceed-wm-.patch
@@ -0,0 +1,53 @@
+From 2ad01780bf59b3a785975bf48a066645e5b6f7f5 Mon Sep 17 00:00:00 2001
+From: Matt Roper <matthew.d.roper@intel.com>
+Date: Thu, 12 May 2016 07:06:10 -0700
+Subject: [PATCH 16/17] drm/i915/gen9: Reject display updates that exceed wm
+ limitations (v2)
+
+If we can't find any valid level 0 watermark values for the requested
+atomic transaction, reject the configuration before we try to start
+programming the hardware.
+
+v2:
+ - Add extra debugging output when we reject level 0 watermarks so that
+ we can more easily debug how/why they were rejected.
+
+Cc: Lyude Paul <cpaul@redhat.com>
+Signed-off-by: Matt Roper <matthew.d.roper@intel.com>
+Reviewed-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
+Link: http://patchwork.freedesktop.org/patch/msgid/1463061971-19638-17-git-send-email-matthew.d.roper@intel.com
+---
+ drivers/gpu/drm/i915/intel_pm.c | 17 ++++++++++++++++-
+ 1 file changed, 16 insertions(+), 1 deletion(-)
+
+diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c
+index b072417..f764d28 100644
+--- a/drivers/gpu/drm/i915/intel_pm.c
++++ b/drivers/gpu/drm/i915/intel_pm.c
+@@ -3306,7 +3306,22 @@ static int skl_compute_plane_wm(const struct drm_i915_private *dev_priv,
+
+ if (res_blocks >= ddb_allocation || res_lines > 31) {
+ *enabled = false;
+- return 0;
++
++ /*
++ * If there are no valid level 0 watermarks, then we can't
++ * support this display configuration.
++ */
++ if (level) {
++ return 0;
++ } else {
++ DRM_DEBUG_KMS("Requested display configuration exceeds system watermark limitations\n");
++ DRM_DEBUG_KMS("Plane %d.%d: blocks required = %u/%u, lines required = %u/31\n",
++ to_intel_crtc(cstate->base.crtc)->pipe,
++ skl_wm_plane_id(to_intel_plane(pstate->plane)),
++ res_blocks, ddb_allocation, res_lines);
++
++ return -EINVAL;
++ }
+ }
+
+ *out_blocks = res_blocks;
+--
+2.7.4
+
diff --git a/freed-ora/current/master/0017-drm-i915-Remove-wm_config-from-dev_priv-intel_atomic.patch b/freed-ora/current/master/0017-drm-i915-Remove-wm_config-from-dev_priv-intel_atomic.patch
new file mode 100644
index 000000000..73a6dacc6
--- /dev/null
+++ b/freed-ora/current/master/0017-drm-i915-Remove-wm_config-from-dev_priv-intel_atomic.patch
@@ -0,0 +1,105 @@
+From 73a35468564f4e47deade0a4a5eb7ec289611ebc Mon Sep 17 00:00:00 2001
+From: Matt Roper <matthew.d.roper@intel.com>
+Date: Thu, 12 May 2016 07:06:11 -0700
+Subject: [PATCH 17/17] drm/i915: Remove wm_config from
+ dev_priv/intel_atomic_state
+
+We calculate the watermark config into intel_atomic_state and then save
+it into dev_priv, but never actually use it from there. This is
+left-over from some early ILK-style watermark programming designs that
+got changed over time.
+
+Signed-off-by: Matt Roper <matthew.d.roper@intel.com>
+Reviewed-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
+Link: http://patchwork.freedesktop.org/patch/msgid/1463061971-19638-18-git-send-email-matthew.d.roper@intel.com
+---
+ drivers/gpu/drm/i915/i915_drv.h | 3 ---
+ drivers/gpu/drm/i915/intel_display.c | 31 -------------------------------
+ drivers/gpu/drm/i915/intel_drv.h | 1 -
+ 3 files changed, 35 deletions(-)
+
+diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
+index e7bde72..608f8e4 100644
+--- a/drivers/gpu/drm/i915/i915_drv.h
++++ b/drivers/gpu/drm/i915/i915_drv.h
+@@ -1961,9 +1961,6 @@ struct drm_i915_private {
+ */
+ uint16_t skl_latency[8];
+
+- /* Committed wm config */
+- struct intel_wm_config config;
+-
+ /*
+ * The skl_wm_values structure is a bit too big for stack
+ * allocation, so we keep the staging struct where we store
+diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
+index a75daac..9c109c6 100644
+--- a/drivers/gpu/drm/i915/intel_display.c
++++ b/drivers/gpu/drm/i915/intel_display.c
+@@ -13343,35 +13343,6 @@ static int calc_watermark_data(struct drm_atomic_state *state)
+ {
+ 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 *cstate;
+- struct drm_plane *plane;
+- struct drm_plane_state *pstate;
+-
+- /*
+- * Calculate watermark configuration details now that derived
+- * plane/crtc state is all properly updated.
+- */
+- drm_for_each_crtc(crtc, dev) {
+- cstate = drm_atomic_get_existing_crtc_state(state, crtc) ?:
+- crtc->state;
+-
+- if (cstate->active)
+- intel_state->wm_config.num_pipes_active++;
+- }
+- drm_for_each_legacy_plane(plane, dev) {
+- pstate = drm_atomic_get_existing_plane_state(state, plane) ?:
+- plane->state;
+-
+- if (!to_intel_plane_state(pstate)->visible)
+- continue;
+-
+- intel_state->wm_config.sprites_enabled = true;
+- if (pstate->crtc_w != pstate->src_w >> 16 ||
+- pstate->crtc_h != pstate->src_h >> 16)
+- intel_state->wm_config.sprites_scaled = true;
+- }
+
+ /* Is there platform-specific watermark information to calculate? */
+ if (dev_priv->display.compute_global_watermarks)
+@@ -13625,7 +13596,6 @@ static int intel_atomic_commit(struct drm_device *dev,
+ }
+
+ drm_atomic_helper_swap_state(dev, state);
+- dev_priv->wm.config = intel_state->wm_config;
+ dev_priv->wm.distrust_bios_wm = false;
+ dev_priv->wm.skl_results = intel_state->wm_results;
+ intel_shared_dpll_commit(state);
+@@ -15405,7 +15375,6 @@ retry:
+ }
+
+ /* Write calculated watermark values back */
+- to_i915(dev)->wm.config = to_intel_atomic_state(state)->wm_config;
+ for_each_crtc_in_state(state, crtc, cstate, i) {
+ struct intel_crtc_state *cs = to_intel_crtc_state(cstate);
+
+diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h
+index ab0be7a..8d73c20 100644
+--- a/drivers/gpu/drm/i915/intel_drv.h
++++ b/drivers/gpu/drm/i915/intel_drv.h
+@@ -305,7 +305,6 @@ struct intel_atomic_state {
+ unsigned int min_pixclk[I915_MAX_PIPES];
+
+ struct intel_shared_dpll_config shared_dpll[I915_NUM_PLLS];
+- struct intel_wm_config wm_config;
+
+ /*
+ * Current watermarks can't be trusted during hardware readout, so
+--
+2.7.4
+
diff --git a/freed-ora/current/master/ALSA-timer-Fix-leak-in-SNDRV_TIMER_IOCTL_PARAMS.patch b/freed-ora/current/master/ALSA-timer-Fix-leak-in-SNDRV_TIMER_IOCTL_PARAMS.patch
deleted file mode 100644
index 3eb8bf183..000000000
--- a/freed-ora/current/master/ALSA-timer-Fix-leak-in-SNDRV_TIMER_IOCTL_PARAMS.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-From 527a5767c165abd2b4dba99da992c51ca7547562 Mon Sep 17 00:00:00 2001
-From: Kangjie Lu <kangjielu@gmail.com>
-Date: Tue, 3 May 2016 16:44:07 -0400
-Subject: [PATCH 1/3] ALSA: timer: Fix leak in SNDRV_TIMER_IOCTL_PARAMS
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-The stack object “tread” has a total size of 32 bytes. Its field
-“event” and “val” both contain 4 bytes padding. These 8 bytes
-padding bytes are sent to user without being initialized.
-
-Signed-off-by: Kangjie Lu <kjlu@gatech.edu>
-Signed-off-by: Takashi Iwai <tiwai@suse.de>
----
- sound/core/timer.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/sound/core/timer.c b/sound/core/timer.c
-index 6469bedda2f3..964f5ebf495e 100644
---- a/sound/core/timer.c
-+++ b/sound/core/timer.c
-@@ -1739,6 +1739,7 @@ static int snd_timer_user_params(struct file *file,
- if (tu->timeri->flags & SNDRV_TIMER_IFLG_EARLY_EVENT) {
- if (tu->tread) {
- struct snd_timer_tread tread;
-+ memset(&tread, 0, sizeof(tread));
- tread.event = SNDRV_TIMER_EVENT_EARLY;
- tread.tstamp.tv_sec = 0;
- tread.tstamp.tv_nsec = 0;
---
-2.5.5
-
diff --git a/freed-ora/current/master/ALSA-timer-Fix-leak-in-events-via-snd_timer_user_cca.patch b/freed-ora/current/master/ALSA-timer-Fix-leak-in-events-via-snd_timer_user_cca.patch
deleted file mode 100644
index e6f46f8a8..000000000
--- a/freed-ora/current/master/ALSA-timer-Fix-leak-in-events-via-snd_timer_user_cca.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From addd6e9f0e25efb00d813d54528607c75b77c416 Mon Sep 17 00:00:00 2001
-From: Kangjie Lu <kangjielu@gmail.com>
-Date: Tue, 3 May 2016 16:44:20 -0400
-Subject: [PATCH 2/3] ALSA: timer: Fix leak in events via
- snd_timer_user_ccallback
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-The stack object “r1” has a total size of 32 bytes. Its field
-“event” and “val” both contain 4 bytes padding. These 8 bytes
-padding bytes are sent to user without being initialized.
-
-Signed-off-by: Kangjie Lu <kjlu@gatech.edu>
-Signed-off-by: Takashi Iwai <tiwai@suse.de>
----
- sound/core/timer.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/sound/core/timer.c b/sound/core/timer.c
-index 964f5ebf495e..e98fa5feb731 100644
---- a/sound/core/timer.c
-+++ b/sound/core/timer.c
-@@ -1225,6 +1225,7 @@ static void snd_timer_user_ccallback(struct snd_timer_instance *timeri,
- tu->tstamp = *tstamp;
- if ((tu->filter & (1 << event)) == 0 || !tu->tread)
- return;
-+ memset(&r1, 0, sizeof(r1));
- r1.event = event;
- r1.tstamp = *tstamp;
- r1.val = resolution;
---
-2.5.5
-
diff --git a/freed-ora/current/master/ALSA-timer-Fix-leak-in-events-via-snd_timer_user_tin.patch b/freed-ora/current/master/ALSA-timer-Fix-leak-in-events-via-snd_timer_user_tin.patch
deleted file mode 100644
index 7851c55a2..000000000
--- a/freed-ora/current/master/ALSA-timer-Fix-leak-in-events-via-snd_timer_user_tin.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From b06a443b5679e9a0298e2f206ddb60845569f62f Mon Sep 17 00:00:00 2001
-From: Kangjie Lu <kangjielu@gmail.com>
-Date: Tue, 3 May 2016 16:44:32 -0400
-Subject: [PATCH 3/3] ALSA: timer: Fix leak in events via
- snd_timer_user_tinterrupt
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-The stack object “r1” has a total size of 32 bytes. Its field
-“event” and “val” both contain 4 bytes padding. These 8 bytes
-padding bytes are sent to user without being initialized.
-
-Signed-off-by: Kangjie Lu <kjlu@gatech.edu>
-Signed-off-by: Takashi Iwai <tiwai@suse.de>
----
- sound/core/timer.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/sound/core/timer.c b/sound/core/timer.c
-index e98fa5feb731..c69a27155433 100644
---- a/sound/core/timer.c
-+++ b/sound/core/timer.c
-@@ -1268,6 +1268,7 @@ static void snd_timer_user_tinterrupt(struct snd_timer_instance *timeri,
- }
- if ((tu->filter & (1 << SNDRV_TIMER_EVENT_RESOLUTION)) &&
- tu->last_resolution != resolution) {
-+ memset(&r1, 0, sizeof(r1));
- r1.event = SNDRV_TIMER_EVENT_RESOLUTION;
- r1.tstamp = tstamp;
- r1.val = resolution;
---
-2.5.5
-
diff --git a/freed-ora/current/master/Add-EFI-signature-data-types.patch b/freed-ora/current/master/Add-EFI-signature-data-types.patch
index 4bdea30ae..094c5a34c 100644
--- a/freed-ora/current/master/Add-EFI-signature-data-types.patch
+++ b/freed-ora/current/master/Add-EFI-signature-data-types.patch
@@ -1,7 +1,7 @@
-From 24ceffbbe2764a31328e1146a2cf4bdcf85664e7 Mon Sep 17 00:00:00 2001
+From 5216de8394ff599e41c8540c0572368c18c51459 Mon Sep 17 00:00:00 2001
From: Dave Howells <dhowells@redhat.com>
Date: Tue, 23 Oct 2012 09:30:54 -0400
-Subject: [PATCH] Add EFI signature data types
+Subject: [PATCH 4/9] Add EFI signature data types
Add the data types that are used for containing hashes, keys and certificates
for cryptographic verification.
@@ -15,12 +15,12 @@ Signed-off-by: David Howells <dhowells@redhat.com>
1 file changed, 20 insertions(+)
diff --git a/include/linux/efi.h b/include/linux/efi.h
-index 333d0ca6940f..b3efb6d06344 100644
+index 8cb38cfcba74..8c274b4ea8e6 100644
--- a/include/linux/efi.h
+++ b/include/linux/efi.h
-@@ -603,6 +603,12 @@ void efi_native_runtime_setup(void);
- EFI_GUID(0x3152bca5, 0xeade, 0x433d, \
- 0x86, 0x2e, 0xc0, 0x1c, 0xdc, 0x29, 0x1f, 0x44)
+@@ -647,6 +647,12 @@ void efi_native_runtime_setup(void);
+ EFI_GUID(0x4a67b082, 0x0a4c, 0x41cf, \
+ 0xb6, 0xc7, 0x44, 0x0b, 0x29, 0xbb, 0x8c, 0x4f)
+#define EFI_CERT_SHA256_GUID \
+ EFI_GUID( 0xc1c41626, 0x504c, 0x4092, 0xac, 0xa9, 0x41, 0xf9, 0x36, 0x93, 0x43, 0x28 )
@@ -31,9 +31,9 @@ index 333d0ca6940f..b3efb6d06344 100644
typedef struct {
efi_guid_t guid;
u64 table;
-@@ -827,6 +833,20 @@ typedef struct {
-
- #define EFI_INVALID_TABLE_ADDR (~0UL)
+@@ -879,6 +885,20 @@ typedef struct {
+ efi_memory_desc_t entry[0];
+ } efi_memory_attributes_table_t;
+typedef struct {
+ efi_guid_t signature_owner;
@@ -53,5 +53,5 @@ index 333d0ca6940f..b3efb6d06344 100644
* All runtime access to EFI goes through this structure:
*/
--
-2.5.0
+2.5.5
diff --git a/freed-ora/current/master/Add-an-EFI-signature-blob-parser-and-key-loader.patch b/freed-ora/current/master/Add-an-EFI-signature-blob-parser-and-key-loader.patch
index 86a285581..3697a4b74 100644
--- a/freed-ora/current/master/Add-an-EFI-signature-blob-parser-and-key-loader.patch
+++ b/freed-ora/current/master/Add-an-EFI-signature-blob-parser-and-key-loader.patch
@@ -1,25 +1,26 @@
-From c279ba86f93cf6a75d078e2d0e3f59d4ba8a2dd0 Mon Sep 17 00:00:00 2001
+From e36a2d65e25fdf42b50aa5dc17583d7bfd09c4c4 Mon Sep 17 00:00:00 2001
From: Dave Howells <dhowells@redhat.com>
Date: Tue, 23 Oct 2012 09:36:28 -0400
-Subject: [PATCH 16/20] Add an EFI signature blob parser and key loader.
+Subject: [PATCH 5/9] Add an EFI signature blob parser and key loader.
X.509 certificates are loaded into the specified keyring as asymmetric type
keys.
+[labbott@fedoraproject.org: Drop KEY_ALLOC_TRUSTED]
Signed-off-by: David Howells <dhowells@redhat.com>
---
crypto/asymmetric_keys/Kconfig | 8 +++
crypto/asymmetric_keys/Makefile | 1 +
- crypto/asymmetric_keys/efi_parser.c | 109 ++++++++++++++++++++++++++++++++++++
+ crypto/asymmetric_keys/efi_parser.c | 108 ++++++++++++++++++++++++++++++++++++
include/linux/efi.h | 4 ++
- 4 files changed, 122 insertions(+)
+ 4 files changed, 121 insertions(+)
create mode 100644 crypto/asymmetric_keys/efi_parser.c
diff --git a/crypto/asymmetric_keys/Kconfig b/crypto/asymmetric_keys/Kconfig
-index 4870f28403f5..4a1b50d73b80 100644
+index e28e912000a7..94024e8aedaa 100644
--- a/crypto/asymmetric_keys/Kconfig
+++ b/crypto/asymmetric_keys/Kconfig
-@@ -67,4 +67,12 @@ config SIGNED_PE_FILE_VERIFICATION
+@@ -60,4 +60,12 @@ config SIGNED_PE_FILE_VERIFICATION
This option provides support for verifying the signature(s) on a
signed PE binary.
@@ -33,10 +34,11 @@ index 4870f28403f5..4a1b50d73b80 100644
+
endif # ASYMMETRIC_KEY_TYPE
diff --git a/crypto/asymmetric_keys/Makefile b/crypto/asymmetric_keys/Makefile
-index cd1406f9b14a..d9db380bbe53 100644
+index 6516855bec18..c099fe15ed6d 100644
--- a/crypto/asymmetric_keys/Makefile
+++ b/crypto/asymmetric_keys/Makefile
-@@ -7,5 +7,6 @@ asymmetric_keys-y := asymmetric_type.o signature.o
+@@ -10,6 +10,7 @@ asymmetric_keys-y := \
+ signature.o
obj-$(CONFIG_ASYMMETRIC_PUBLIC_KEY_SUBTYPE) += public_key.o
+obj-$(CONFIG_EFI_SIGNATURE_LIST_PARSER) += efi_parser.o
@@ -45,10 +47,10 @@ index cd1406f9b14a..d9db380bbe53 100644
# X.509 Certificate handling
diff --git a/crypto/asymmetric_keys/efi_parser.c b/crypto/asymmetric_keys/efi_parser.c
new file mode 100644
-index 000000000000..424896a0b169
+index 000000000000..636feb18b733
--- /dev/null
+++ b/crypto/asymmetric_keys/efi_parser.c
-@@ -0,0 +1,109 @@
+@@ -0,0 +1,108 @@
+/* EFI signature/key/certificate list parser
+ *
+ * Copyright (C) 2012 Red Hat, Inc. All Rights Reserved.
@@ -139,8 +141,7 @@ index 000000000000..424896a0b169
+ esize - sizeof(*elem),
+ (KEY_POS_ALL & ~KEY_POS_SETATTR) |
+ KEY_USR_VIEW,
-+ KEY_ALLOC_NOT_IN_QUOTA |
-+ KEY_ALLOC_TRUSTED);
++ KEY_ALLOC_NOT_IN_QUOTA);
+
+ if (IS_ERR(key))
+ pr_err("Problem loading in-kernel X.509 certificate (%ld)\n",
@@ -159,10 +160,10 @@ index 000000000000..424896a0b169
+ return 0;
+}
diff --git a/include/linux/efi.h b/include/linux/efi.h
-index fac43c611614..414c3c3d988d 100644
+index 8c274b4ea8e6..ff1877145aa4 100644
--- a/include/linux/efi.h
+++ b/include/linux/efi.h
-@@ -941,6 +941,10 @@ extern bool efi_poweroff_required(void);
+@@ -1044,6 +1044,10 @@ extern int efi_memattr_apply_permissions(struct mm_struct *mm,
char * __init efi_md_typeattr_format(char *buf, size_t size,
const efi_memory_desc_t *md);
@@ -174,5 +175,5 @@ index fac43c611614..414c3c3d988d 100644
* efi_range_is_wc - check the WC bit on an address range
* @start: starting kvirt address
--
-2.4.3
+2.5.5
diff --git a/freed-ora/current/master/Add-option-to-automatically-enforce-module-signature.patch b/freed-ora/current/master/Add-option-to-automatically-enforce-module-signature.patch
index 015371b8b..aa1983377 100644
--- a/freed-ora/current/master/Add-option-to-automatically-enforce-module-signature.patch
+++ b/freed-ora/current/master/Add-option-to-automatically-enforce-module-signature.patch
@@ -1,8 +1,8 @@
-From 37431394b3eeb1ef6d38d0e6b2693210606c2c2c Mon Sep 17 00:00:00 2001
+From 0000dc9edd5997cc49b8893a9d5407f89dfa1307 Mon Sep 17 00:00:00 2001
From: Matthew Garrett <matthew.garrett@nebula.com>
Date: Fri, 9 Aug 2013 18:36:30 -0400
-Subject: [PATCH 10/20] Add option to automatically enforce module signatures
- when in Secure Boot mode
+Subject: [PATCH] Add option to automatically enforce module signatures when in
+ Secure Boot mode
UEFI Secure Boot provides a mechanism for ensuring that the firmware will
only load signed bootloaders and kernels. Certain use cases may also
@@ -12,13 +12,13 @@ that enforces this automatically when enabled.
Signed-off-by: Matthew Garrett <matthew.garrett@nebula.com>
---
Documentation/x86/zero-page.txt | 2 ++
- arch/x86/Kconfig | 10 ++++++++++
- arch/x86/boot/compressed/eboot.c | 36 +++++++++++++++++++++++++++++++++++
- arch/x86/include/uapi/asm/bootparam.h | 3 ++-
- arch/x86/kernel/setup.c | 6 ++++++
- include/linux/module.h | 6 ++++++
- kernel/module.c | 7 +++++++
- 7 files changed, 69 insertions(+), 1 deletion(-)
+ arch/x86/Kconfig | 11 ++++++
+ arch/x86/boot/compressed/eboot.c | 66 +++++++++++++++++++++++++++++++++++
+ arch/x86/include/uapi/asm/bootparam.h | 3 +-
+ arch/x86/kernel/setup.c | 6 ++++
+ include/linux/module.h | 6 ++++
+ kernel/module.c | 7 ++++
+ 7 files changed, 100 insertions(+), 1 deletion(-)
diff --git a/Documentation/x86/zero-page.txt b/Documentation/x86/zero-page.txt
index 95a4d34af3fd..b8527c6b7646 100644
@@ -34,15 +34,16 @@ index 95a4d34af3fd..b8527c6b7646 100644
290/040 ALL edd_mbr_sig_buffer EDD MBR signatures
2D0/A00 ALL e820_map E820 memory map table
diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
-index cc0d73eac047..14db458f4774 100644
+index 0a7b885964ba..29b8ba9ae713 100644
--- a/arch/x86/Kconfig
+++ b/arch/x86/Kconfig
-@@ -1734,6 +1734,16 @@ config EFI_MIXED
+@@ -1776,6 +1776,17 @@ config EFI_MIXED
If unsure, say N.
+config EFI_SECURE_BOOT_SIG_ENFORCE
-+ def_bool n
++ def_bool n
++ depends on EFI
+ prompt "Force module signing when UEFI Secure Boot is enabled"
+ ---help---
+ UEFI Secure Boot provides a mechanism for ensuring that the
@@ -55,7 +56,7 @@ index cc0d73eac047..14db458f4774 100644
def_bool y
prompt "Enable seccomp to safely compute untrusted bytecode"
diff --git a/arch/x86/boot/compressed/eboot.c b/arch/x86/boot/compressed/eboot.c
-index ee1b6d346b98..b4de3faa3f29 100644
+index 52fef606bc54..6b8b9a775b46 100644
--- a/arch/x86/boot/compressed/eboot.c
+++ b/arch/x86/boot/compressed/eboot.c
@@ -12,6 +12,7 @@
@@ -66,8 +67,8 @@ index ee1b6d346b98..b4de3faa3f29 100644
#include "../string.h"
#include "eboot.h"
-@@ -827,6 +828,37 @@ out:
- return status;
+@@ -571,6 +572,67 @@ free_handle:
+ efi_call_early(free_pool, pci_handle);
}
+static int get_secure_boot(void)
@@ -101,10 +102,40 @@ index ee1b6d346b98..b4de3faa3f29 100644
+}
+
+
- /*
- * See if we have Graphics Output Protocol
- */
-@@ -1412,6 +1444,10 @@ struct boot_params *efi_main(struct efi_config *c,
++/*
++ * See if we have Graphics Output Protocol
++ */
++static efi_status_t setup_gop(struct screen_info *si, efi_guid_t *proto,
++ unsigned long size)
++{
++ efi_status_t status;
++ void **gop_handle = NULL;
++
++ status = efi_call_early(allocate_pool, EFI_LOADER_DATA,
++ size, (void **)&gop_handle);
++ if (status != EFI_SUCCESS)
++ return status;
++
++ status = efi_call_early(locate_handle,
++ EFI_LOCATE_BY_PROTOCOL,
++ proto, NULL, &size, gop_handle);
++ if (status != EFI_SUCCESS)
++ goto free_handle;
++
++ if (efi_early->is64)
++ status = setup_gop64(si, proto, size, gop_handle);
++ else
++ status = setup_gop32(si, proto, size, gop_handle);
++
++free_handle:
++ efi_call_early(free_pool, gop_handle);
++ return status;
++}
++
+ static efi_status_t
+ setup_uga32(void **uga_handle, unsigned long size, u32 *width, u32 *height)
+ {
+@@ -1126,6 +1188,10 @@ struct boot_params *efi_main(struct efi_config *c,
else
setup_boot_services32(efi_early);
@@ -116,7 +147,7 @@ index ee1b6d346b98..b4de3faa3f29 100644
setup_efi_pci(boot_params);
diff --git a/arch/x86/include/uapi/asm/bootparam.h b/arch/x86/include/uapi/asm/bootparam.h
-index 329254373479..b61f8533c0fd 100644
+index c18ce67495fa..2b3e5427097b 100644
--- a/arch/x86/include/uapi/asm/bootparam.h
+++ b/arch/x86/include/uapi/asm/bootparam.h
@@ -134,7 +134,8 @@ struct boot_params {
@@ -130,10 +161,10 @@ index 329254373479..b61f8533c0fd 100644
* The sentinel is set to a nonzero value (0xff) in header.S.
*
diff --git a/arch/x86/kernel/setup.c b/arch/x86/kernel/setup.c
-index baadbf90a7c5..1ac118146e90 100644
+index c4e7b3991b60..bdb9881c7afd 100644
--- a/arch/x86/kernel/setup.c
+++ b/arch/x86/kernel/setup.c
-@@ -1135,6 +1135,12 @@ void __init setup_arch(char **cmdline_p)
+@@ -1152,6 +1152,12 @@ void __init setup_arch(char **cmdline_p)
io_delay_init();
@@ -147,7 +178,7 @@ index baadbf90a7c5..1ac118146e90 100644
* Parse the ACPI tables for possible boot-time SMP configuration.
*/
diff --git a/include/linux/module.h b/include/linux/module.h
-index db386349cd01..4b8df91f03cd 100644
+index 082298a09df1..38d0597f7615 100644
--- a/include/linux/module.h
+++ b/include/linux/module.h
@@ -273,6 +273,12 @@ const struct exception_table_entry *search_exception_tables(unsigned long add);
@@ -164,10 +195,10 @@ index db386349cd01..4b8df91f03cd 100644
extern int modules_disabled; /* for sysctl */
diff --git a/kernel/module.c b/kernel/module.c
-index 7f045246e123..2b403ab0ef29 100644
+index 3c384968f553..ea484f3a35b2 100644
--- a/kernel/module.c
+++ b/kernel/module.c
-@@ -4088,6 +4088,13 @@ void module_layout(struct module *mod,
+@@ -4200,6 +4200,13 @@ void module_layout(struct module *mod,
EXPORT_SYMBOL(module_layout);
#endif
@@ -182,5 +213,5 @@ index 7f045246e123..2b403ab0ef29 100644
{
#ifdef CONFIG_MODULE_SIG
--
-2.4.3
+2.5.5
diff --git a/freed-ora/current/master/Add-secure_modules-call.patch b/freed-ora/current/master/Add-secure_modules-call.patch
index b6e039ff0..5c272a983 100644
--- a/freed-ora/current/master/Add-secure_modules-call.patch
+++ b/freed-ora/current/master/Add-secure_modules-call.patch
@@ -1,4 +1,4 @@
-From a1aaf20cffb1a949c5d6b1198690c7c30cfda4d5 Mon Sep 17 00:00:00 2001
+From 0f6eec5ca124baf1372fb4edeacd11a002378f5e Mon Sep 17 00:00:00 2001
From: Matthew Garrett <matthew.garrett@nebula.com>
Date: Fri, 9 Aug 2013 17:58:15 -0400
Subject: [PATCH 01/20] Add secure_modules() call
@@ -17,19 +17,19 @@ Signed-off-by: Matthew Garrett <matthew.garrett@nebula.com>
2 files changed, 16 insertions(+)
diff --git a/include/linux/module.h b/include/linux/module.h
-index 3a19c79918e0..db386349cd01 100644
+index 3daf2b3..082298a 100644
--- a/include/linux/module.h
+++ b/include/linux/module.h
-@@ -635,6 +635,8 @@ static inline bool module_requested_async_probing(struct module *module)
- return module && module->async_probe_requested;
+@@ -655,6 +655,8 @@ static inline bool is_livepatch_module(struct module *mod)
}
+ #endif /* CONFIG_LIVEPATCH */
+extern bool secure_modules(void);
+
#else /* !CONFIG_MODULES... */
/* Given an address, look for it in the exception tables. */
-@@ -751,6 +753,10 @@ static inline bool module_requested_async_probing(struct module *module)
+@@ -771,6 +773,10 @@ static inline bool module_requested_async_probing(struct module *module)
return false;
}
@@ -41,10 +41,10 @@ index 3a19c79918e0..db386349cd01 100644
#ifdef CONFIG_SYSFS
diff --git a/kernel/module.c b/kernel/module.c
-index b86b7bf1be38..7f045246e123 100644
+index 5f71aa6..3c38496 100644
--- a/kernel/module.c
+++ b/kernel/module.c
-@@ -4087,3 +4087,13 @@ void module_layout(struct module *mod,
+@@ -4199,3 +4199,13 @@ void module_layout(struct module *mod,
}
EXPORT_SYMBOL(module_layout);
#endif
@@ -59,5 +59,5 @@ index b86b7bf1be38..7f045246e123 100644
+}
+EXPORT_SYMBOL(secure_modules);
--
-2.4.3
+2.5.5
diff --git a/freed-ora/current/master/Add-sysrq-option-to-disable-secure-boot-mode.patch b/freed-ora/current/master/Add-sysrq-option-to-disable-secure-boot-mode.patch
index 4600848cf..3cecd1399 100644
--- a/freed-ora/current/master/Add-sysrq-option-to-disable-secure-boot-mode.patch
+++ b/freed-ora/current/master/Add-sysrq-option-to-disable-secure-boot-mode.patch
@@ -1,7 +1,7 @@
-From 16d2ba5d5bc46e67e6aa7a3d113fbcc18c217388 Mon Sep 17 00:00:00 2001
+From e27a9a98dcf3ff95568593026da065a72ad21b92 Mon Sep 17 00:00:00 2001
From: Kyle McMartin <kyle@redhat.com>
Date: Fri, 30 Aug 2013 09:28:51 -0400
-Subject: [PATCH 20/20] Add sysrq option to disable secure boot mode
+Subject: [PATCH 9/9] Add sysrq option to disable secure boot mode
Bugzilla: N/A
Upstream-status: Fedora mustard
@@ -16,7 +16,7 @@ Upstream-status: Fedora mustard
7 files changed, 64 insertions(+), 9 deletions(-)
diff --git a/arch/x86/kernel/setup.c b/arch/x86/kernel/setup.c
-index f93826b8522c..41679b1aca83 100644
+index a666b6c29c77..7732c769937b 100644
--- a/arch/x86/kernel/setup.c
+++ b/arch/x86/kernel/setup.c
@@ -70,6 +70,11 @@
@@ -31,7 +31,7 @@ index f93826b8522c..41679b1aca83 100644
#include <video/edid.h>
#include <asm/mtrr.h>
-@@ -1261,6 +1266,37 @@ void __init i386_reserve_resources(void)
+@@ -1286,6 +1291,37 @@ void __init i386_reserve_resources(void)
#endif /* CONFIG_X86_32 */
@@ -70,10 +70,10 @@ index f93826b8522c..41679b1aca83 100644
.notifier_call = dump_kernel_offset
};
diff --git a/drivers/input/misc/uinput.c b/drivers/input/misc/uinput.c
-index 345df9b03aed..dea6a6c4a39b 100644
+index abe1a927b332..f4126fcec10c 100644
--- a/drivers/input/misc/uinput.c
+++ b/drivers/input/misc/uinput.c
-@@ -364,6 +364,7 @@ static int uinput_allocate_device(struct uinput_device *udev)
+@@ -379,6 +379,7 @@ static int uinput_allocate_device(struct uinput_device *udev)
if (!udev->dev)
return -ENOMEM;
@@ -82,10 +82,10 @@ index 345df9b03aed..dea6a6c4a39b 100644
input_set_drvdata(udev->dev, udev);
diff --git a/drivers/tty/sysrq.c b/drivers/tty/sysrq.c
-index 95b330a9ea98..dfa3e154a719 100644
+index e5139402e7f8..5ef2e04a03ad 100644
--- a/drivers/tty/sysrq.c
+++ b/drivers/tty/sysrq.c
-@@ -472,6 +472,7 @@ static struct sysrq_key_op *sysrq_key_table[36] = {
+@@ -478,6 +478,7 @@ static struct sysrq_key_op *sysrq_key_table[36] = {
/* x: May be registered on mips for TLB dump */
/* x: May be registered on ppc/powerpc for xmon */
/* x: May be registered on sparc64 for global PMU dump */
@@ -93,7 +93,7 @@ index 95b330a9ea98..dfa3e154a719 100644
NULL, /* x */
/* y: May be registered on sparc64 for global register dump */
NULL, /* y */
-@@ -515,7 +516,7 @@ static void __sysrq_put_key_op(int key, struct sysrq_key_op *op_p)
+@@ -521,7 +522,7 @@ static void __sysrq_put_key_op(int key, struct sysrq_key_op *op_p)
sysrq_key_table[i] = op_p;
}
@@ -102,7 +102,7 @@ index 95b330a9ea98..dfa3e154a719 100644
{
struct sysrq_key_op *op_p;
int orig_log_level;
-@@ -535,11 +536,15 @@ void __handle_sysrq(int key, bool check_mask)
+@@ -541,11 +542,15 @@ void __handle_sysrq(int key, bool check_mask)
op_p = __sysrq_get_key_op(key);
if (op_p) {
@@ -119,7 +119,7 @@ index 95b330a9ea98..dfa3e154a719 100644
pr_cont("%s\n", op_p->action_msg);
console_loglevel = orig_log_level;
op_p->handler(key);
-@@ -571,7 +576,7 @@ void __handle_sysrq(int key, bool check_mask)
+@@ -577,7 +582,7 @@ void __handle_sysrq(int key, bool check_mask)
void handle_sysrq(int key)
{
if (sysrq_on())
@@ -128,7 +128,7 @@ index 95b330a9ea98..dfa3e154a719 100644
}
EXPORT_SYMBOL(handle_sysrq);
-@@ -652,7 +657,7 @@ static void sysrq_do_reset(unsigned long _state)
+@@ -658,7 +663,7 @@ static void sysrq_do_reset(unsigned long _state)
static void sysrq_handle_reset_request(struct sysrq_state *state)
{
if (state->reset_requested)
@@ -137,7 +137,7 @@ index 95b330a9ea98..dfa3e154a719 100644
if (sysrq_reset_downtime_ms)
mod_timer(&state->keyreset_timer,
-@@ -803,8 +808,10 @@ static bool sysrq_handle_keypress(struct sysrq_state *sysrq,
+@@ -809,8 +814,10 @@ static bool sysrq_handle_keypress(struct sysrq_state *sysrq,
default:
if (sysrq->active && value && value != 2) {
@@ -149,7 +149,7 @@ index 95b330a9ea98..dfa3e154a719 100644
}
break;
}
-@@ -1084,7 +1091,7 @@ static ssize_t write_sysrq_trigger(struct file *file, const char __user *buf,
+@@ -1094,7 +1101,7 @@ static ssize_t write_sysrq_trigger(struct file *file, const char __user *buf,
if (get_user(c, buf))
return -EFAULT;
@@ -159,7 +159,7 @@ index 95b330a9ea98..dfa3e154a719 100644
return count;
diff --git a/include/linux/input.h b/include/linux/input.h
-index 82ce323b9986..9e534f228945 100644
+index 1e967694e9a5..2b56c6f9673c 100644
--- a/include/linux/input.h
+++ b/include/linux/input.h
@@ -42,6 +42,7 @@ struct input_value {
@@ -216,7 +216,7 @@ index 387fa7d05c98..4b07e30b3279 100644
int unregister_sysrq_key(int key, struct sysrq_key_op *op);
struct sysrq_key_op *__sysrq_get_key_op(int key);
diff --git a/kernel/debug/kdb/kdb_main.c b/kernel/debug/kdb/kdb_main.c
-index 4121345498e0..0ff3cef5df96 100644
+index 2a20c0dfdafc..3d17205dab77 100644
--- a/kernel/debug/kdb/kdb_main.c
+++ b/kernel/debug/kdb/kdb_main.c
@@ -1968,7 +1968,7 @@ static int kdb_sr(int argc, const char **argv)
@@ -229,10 +229,10 @@ index 4121345498e0..0ff3cef5df96 100644
return 0;
diff --git a/kernel/module.c b/kernel/module.c
-index 2b403ab0ef29..7818c110e95c 100644
+index ea484f3a35b2..84b00659b0ee 100644
--- a/kernel/module.c
+++ b/kernel/module.c
-@@ -292,7 +292,7 @@ static void module_assert_mutex_or_preempt(void)
+@@ -269,7 +269,7 @@ static void module_assert_mutex_or_preempt(void)
#endif
}
@@ -242,5 +242,5 @@ index 2b403ab0ef29..7818c110e95c 100644
module_param(sig_enforce, bool_enable_only, 0644);
#endif /* !CONFIG_MODULE_SIG_FORCE */
--
-2.4.3
+2.5.5
diff --git a/freed-ora/current/master/Fix-tegra-to-use-stdout-path-for-serial-console.patch b/freed-ora/current/master/Fix-tegra-to-use-stdout-path-for-serial-console.patch
deleted file mode 100644
index 80a2d1b95..000000000
--- a/freed-ora/current/master/Fix-tegra-to-use-stdout-path-for-serial-console.patch
+++ /dev/null
@@ -1,318 +0,0 @@
-From 15b8caef5f380d9465876478ff5e365bc6afa5b6 Mon Sep 17 00:00:00 2001
-From: Peter Robinson <pbrobinson@gmail.com>
-Date: Sun, 6 Mar 2016 10:59:13 +0000
-Subject: [PATCH] Fix tegra to use stdout-path for serial console
-
----
- arch/arm/boot/dts/tegra114-dalmore.dts | 4 ++++
- arch/arm/boot/dts/tegra124-jetson-tk1.dts | 4 ++++
- arch/arm/boot/dts/tegra124-nyan.dtsi | 4 ++++
- arch/arm/boot/dts/tegra124-venice2.dts | 4 ++++
- arch/arm/boot/dts/tegra20-harmony.dts | 4 ++++
- arch/arm/boot/dts/tegra20-iris-512.dts | 4 ++++
- arch/arm/boot/dts/tegra20-medcom-wide.dts | 4 ++++
- arch/arm/boot/dts/tegra20-paz00.dts | 4 ++++
- arch/arm/boot/dts/tegra20-seaboard.dts | 4 ++++
- arch/arm/boot/dts/tegra20-tamonten.dtsi | 4 ++++
- arch/arm/boot/dts/tegra20-trimslice.dts | 4 ++++
- arch/arm/boot/dts/tegra20-ventana.dts | 4 ++++
- arch/arm/boot/dts/tegra20-whistler.dts | 4 ++++
- arch/arm/boot/dts/tegra30-apalis-eval.dts | 4 ++++
- arch/arm/boot/dts/tegra30-beaver.dts | 4 ++++
- arch/arm/boot/dts/tegra30-cardhu.dtsi | 4 ++++
- arch/arm/boot/dts/tegra30-colibri-eval-v3.dts | 4 ++++
- arch/arm64/boot/dts/nvidia/tegra132-norrin.dts | 5 ++++-
- arch/arm64/boot/dts/nvidia/tegra210-p2530.dtsi | 4 ++++
- 19 files changed, 76 insertions(+), 1 deletion(-)
-
-diff --git a/arch/arm/boot/dts/tegra114-dalmore.dts b/arch/arm/boot/dts/tegra114-dalmore.dts
-index 8b7aa0d..b5748ee 100644
---- a/arch/arm/boot/dts/tegra114-dalmore.dts
-+++ b/arch/arm/boot/dts/tegra114-dalmore.dts
-@@ -18,6 +18,10 @@
- serial0 = &uartd;
- };
-
-+ chosen {
-+ stdout-path = "serial0:115200n8";
-+ };
-+
- memory {
- reg = <0x80000000 0x40000000>;
- };
-diff --git a/arch/arm/boot/dts/tegra124-jetson-tk1.dts b/arch/arm/boot/dts/tegra124-jetson-tk1.dts
-index 66b4451..abf046a 100644
---- a/arch/arm/boot/dts/tegra124-jetson-tk1.dts
-+++ b/arch/arm/boot/dts/tegra124-jetson-tk1.dts
-@@ -15,6 +15,10 @@
- serial0 = &uartd;
- };
-
-+ chosen {
-+ stdout-path = "serial0:115200n8";
-+ };
-+
- memory {
- reg = <0x0 0x80000000 0x0 0x80000000>;
- };
-diff --git a/arch/arm/boot/dts/tegra124-nyan.dtsi b/arch/arm/boot/dts/tegra124-nyan.dtsi
-index ec1aa64..e2cd39e 100644
---- a/arch/arm/boot/dts/tegra124-nyan.dtsi
-+++ b/arch/arm/boot/dts/tegra124-nyan.dtsi
-@@ -8,6 +8,10 @@
- serial0 = &uarta;
- };
-
-+ chosen {
-+ stdout-path = "serial0:115200n8";
-+ };
-+
- memory {
- reg = <0x0 0x80000000 0x0 0x80000000>;
- };
-diff --git a/arch/arm/boot/dts/tegra124-venice2.dts b/arch/arm/boot/dts/tegra124-venice2.dts
-index cfbdf42..604f4b7 100644
---- a/arch/arm/boot/dts/tegra124-venice2.dts
-+++ b/arch/arm/boot/dts/tegra124-venice2.dts
-@@ -13,6 +13,10 @@
- serial0 = &uarta;
- };
-
-+ chosen {
-+ stdout-path = "serial0:115200n8";
-+ };
-+
- memory {
- reg = <0x0 0x80000000 0x0 0x80000000>;
- };
-diff --git a/arch/arm/boot/dts/tegra20-harmony.dts b/arch/arm/boot/dts/tegra20-harmony.dts
-index b926a07..4b73c76 100644
---- a/arch/arm/boot/dts/tegra20-harmony.dts
-+++ b/arch/arm/boot/dts/tegra20-harmony.dts
-@@ -13,6 +13,10 @@
- serial0 = &uartd;
- };
-
-+ chosen {
-+ stdout-path = "serial0:115200n8";
-+ };
-+
- memory {
- reg = <0x00000000 0x40000000>;
- };
-diff --git a/arch/arm/boot/dts/tegra20-iris-512.dts b/arch/arm/boot/dts/tegra20-iris-512.dts
-index 1dd7d7b..bb56dfe 100644
---- a/arch/arm/boot/dts/tegra20-iris-512.dts
-+++ b/arch/arm/boot/dts/tegra20-iris-512.dts
-@@ -11,6 +11,10 @@
- serial1 = &uartd;
- };
-
-+ chosen {
-+ stdout-path = "serial0:115200n8";
-+ };
-+
- host1x@50000000 {
- hdmi@54280000 {
- status = "okay";
-diff --git a/arch/arm/boot/dts/tegra20-medcom-wide.dts b/arch/arm/boot/dts/tegra20-medcom-wide.dts
-index 9b87526..34c6588 100644
---- a/arch/arm/boot/dts/tegra20-medcom-wide.dts
-+++ b/arch/arm/boot/dts/tegra20-medcom-wide.dts
-@@ -10,6 +10,10 @@
- serial0 = &uartd;
- };
-
-+ chosen {
-+ stdout-path = "serial0:115200n8";
-+ };
-+
- pwm@7000a000 {
- status = "okay";
- };
-diff --git a/arch/arm/boot/dts/tegra20-paz00.dts b/arch/arm/boot/dts/tegra20-paz00.dts
-index ed7e100..81a10a9 100644
---- a/arch/arm/boot/dts/tegra20-paz00.dts
-+++ b/arch/arm/boot/dts/tegra20-paz00.dts
-@@ -14,6 +14,10 @@
- serial1 = &uartc;
- };
-
-+ chosen {
-+ stdout-path = "serial0:115200n8";
-+ };
-+
- memory {
- reg = <0x00000000 0x20000000>;
- };
-diff --git a/arch/arm/boot/dts/tegra20-seaboard.dts b/arch/arm/boot/dts/tegra20-seaboard.dts
-index aea8994..0aed748 100644
---- a/arch/arm/boot/dts/tegra20-seaboard.dts
-+++ b/arch/arm/boot/dts/tegra20-seaboard.dts
-@@ -13,6 +13,10 @@
- serial0 = &uartd;
- };
-
-+ chosen {
-+ stdout-path = "serial0:115200n8";
-+ };
-+
- memory {
- reg = <0x00000000 0x40000000>;
- };
-diff --git a/arch/arm/boot/dts/tegra20-tamonten.dtsi b/arch/arm/boot/dts/tegra20-tamonten.dtsi
-index 13d4e61..025e9e8 100644
---- a/arch/arm/boot/dts/tegra20-tamonten.dtsi
-+++ b/arch/arm/boot/dts/tegra20-tamonten.dtsi
-@@ -10,6 +10,10 @@
- serial0 = &uartd;
- };
-
-+ chosen {
-+ stdout-path = "serial0:115200n8";
-+ };
-+
- memory {
- reg = <0x00000000 0x20000000>;
- };
-diff --git a/arch/arm/boot/dts/tegra20-trimslice.dts b/arch/arm/boot/dts/tegra20-trimslice.dts
-index d99af4e..69d25ca 100644
---- a/arch/arm/boot/dts/tegra20-trimslice.dts
-+++ b/arch/arm/boot/dts/tegra20-trimslice.dts
-@@ -13,6 +13,10 @@
- serial0 = &uarta;
- };
-
-+ chosen {
-+ stdout-path = "serial0:115200n8";
-+ };
-+
- memory {
- reg = <0x00000000 0x40000000>;
- };
-diff --git a/arch/arm/boot/dts/tegra20-ventana.dts b/arch/arm/boot/dts/tegra20-ventana.dts
-index 04c58e9..c61533a 100644
---- a/arch/arm/boot/dts/tegra20-ventana.dts
-+++ b/arch/arm/boot/dts/tegra20-ventana.dts
-@@ -13,6 +13,10 @@
- serial0 = &uartd;
- };
-
-+ chosen {
-+ stdout-path = "serial0:115200n8";
-+ };
-+
- memory {
- reg = <0x00000000 0x40000000>;
- };
-diff --git a/arch/arm/boot/dts/tegra20-whistler.dts b/arch/arm/boot/dts/tegra20-whistler.dts
-index 340d811..bd76585 100644
---- a/arch/arm/boot/dts/tegra20-whistler.dts
-+++ b/arch/arm/boot/dts/tegra20-whistler.dts
-@@ -13,6 +13,10 @@
- serial0 = &uarta;
- };
-
-+ chosen {
-+ stdout-path = "serial0:115200n8";
-+ };
-+
- memory {
- reg = <0x00000000 0x20000000>;
- };
-diff --git a/arch/arm/boot/dts/tegra30-apalis-eval.dts b/arch/arm/boot/dts/tegra30-apalis-eval.dts
-index f2879cf..b914bcb 100644
---- a/arch/arm/boot/dts/tegra30-apalis-eval.dts
-+++ b/arch/arm/boot/dts/tegra30-apalis-eval.dts
-@@ -17,6 +17,10 @@
- serial3 = &uartd;
- };
-
-+ chosen {
-+ stdout-path = "serial0:115200n8";
-+ };
-+
- pcie-controller@00003000 {
- status = "okay";
-
-diff --git a/arch/arm/boot/dts/tegra30-beaver.dts b/arch/arm/boot/dts/tegra30-beaver.dts
-index 3dede39..1eca3b2 100644
---- a/arch/arm/boot/dts/tegra30-beaver.dts
-+++ b/arch/arm/boot/dts/tegra30-beaver.dts
-@@ -12,6 +12,10 @@
- serial0 = &uarta;
- };
-
-+ chosen {
-+ stdout-path = "serial0:115200n8";
-+ };
-+
- memory {
- reg = <0x80000000 0x7ff00000>;
- };
-diff --git a/arch/arm/boot/dts/tegra30-cardhu.dtsi b/arch/arm/boot/dts/tegra30-cardhu.dtsi
-index bb1ca15..de9d6cc 100644
---- a/arch/arm/boot/dts/tegra30-cardhu.dtsi
-+++ b/arch/arm/boot/dts/tegra30-cardhu.dtsi
-@@ -35,6 +35,10 @@
- serial1 = &uartc;
- };
-
-+ chosen {
-+ stdout-path = "serial0:115200n8";
-+ };
-+
- memory {
- reg = <0x80000000 0x40000000>;
- };
-diff --git a/arch/arm/boot/dts/tegra30-colibri-eval-v3.dts b/arch/arm/boot/dts/tegra30-colibri-eval-v3.dts
-index 3ff019f..93e1ffd 100644
---- a/arch/arm/boot/dts/tegra30-colibri-eval-v3.dts
-+++ b/arch/arm/boot/dts/tegra30-colibri-eval-v3.dts
-@@ -15,6 +15,10 @@
- serial2 = &uartd;
- };
-
-+ chosen {
-+ stdout-path = "serial0:115200n8";
-+ };
-+
- host1x@50000000 {
- dc@54200000 {
- rgb {
-diff --git a/arch/arm64/boot/dts/nvidia/tegra132-norrin.dts b/arch/arm64/boot/dts/nvidia/tegra132-norrin.dts
-index 62f33fc..3c0b4d7 100644
---- a/arch/arm64/boot/dts/nvidia/tegra132-norrin.dts
-+++ b/arch/arm64/boot/dts/nvidia/tegra132-norrin.dts
-@@ -10,9 +10,12 @@
- aliases {
- rtc0 = "/i2c@0,7000d000/as3722@40";
- rtc1 = "/rtc@0,7000e000";
-+ serial0 = &uarta;
- };
-
-- chosen { };
-+ chosen {
-+ stdout-path = "serial0:115200n8";
-+ };
-
- memory {
- device_type = "memory";
-diff --git a/arch/arm64/boot/dts/nvidia/tegra210-p2530.dtsi b/arch/arm64/boot/dts/nvidia/tegra210-p2530.dtsi
-index ece0dec..73ba582 100644
---- a/arch/arm64/boot/dts/nvidia/tegra210-p2530.dtsi
-+++ b/arch/arm64/boot/dts/nvidia/tegra210-p2530.dtsi
-@@ -9,6 +9,10 @@
- serial0 = &uarta;
- };
-
-+ chosen {
-+ stdout-path = "serial0:115200n8";
-+ };
-+
- memory {
- device_type = "memory";
- reg = <0x0 0x80000000 0x0 0xc0000000>;
---
-2.5.0
-
diff --git a/freed-ora/current/master/KEYS-Add-a-system-blacklist-keyring.patch b/freed-ora/current/master/KEYS-Add-a-system-blacklist-keyring.patch
index 469ac35ab..4f5678a15 100644
--- a/freed-ora/current/master/KEYS-Add-a-system-blacklist-keyring.patch
+++ b/freed-ora/current/master/KEYS-Add-a-system-blacklist-keyring.patch
@@ -1,7 +1,7 @@
-From f630ce576114bfede02d8a0bafa97e4d6f978a74 Mon Sep 17 00:00:00 2001
+From 096da19de900a115ee3610b666ecb7e55926623d Mon Sep 17 00:00:00 2001
From: Josh Boyer <jwboyer@fedoraproject.org>
Date: Fri, 26 Oct 2012 12:36:24 -0400
-Subject: [PATCH 17/20] KEYS: Add a system blacklist keyring
+Subject: [PATCH 6/9] KEYS: Add a system blacklist keyring
This adds an additional keyring that is used to store certificates that
are blacklisted. This keyring is searched first when loading signed modules
@@ -10,52 +10,48 @@ useful in cases where third party certificates are used for module signing.
Signed-off-by: Josh Boyer <jwboyer@fedoraproject.org>
---
- certs/system_keyring.c | 27 +++++++++++++++++++++++++++
+ certs/system_keyring.c | 22 ++++++++++++++++++++++
include/keys/system_keyring.h | 4 ++++
init/Kconfig | 9 +++++++++
- 3 files changed, 40 insertions(+)
+ 3 files changed, 35 insertions(+)
diff --git a/certs/system_keyring.c b/certs/system_keyring.c
-index 2570598b784d..53733822993f 100644
+index 50979d6dcecd..787eeead2f57 100644
--- a/certs/system_keyring.c
+++ b/certs/system_keyring.c
-@@ -20,6 +20,9 @@
-
- struct key *system_trusted_keyring;
- EXPORT_SYMBOL_GPL(system_trusted_keyring);
+@@ -22,6 +22,9 @@ static struct key *builtin_trusted_keys;
+ #ifdef CONFIG_SECONDARY_TRUSTED_KEYRING
+ static struct key *secondary_trusted_keys;
+ #endif
+#ifdef CONFIG_SYSTEM_BLACKLIST_KEYRING
+struct key *system_blacklist_keyring;
+#endif
extern __initconst const u8 system_certificate_list[];
extern __initconst const unsigned long system_certificate_list_size;
-@@ -41,6 +44,20 @@ static __init int system_trusted_keyring_init(void)
- panic("Can't allocate system trusted keyring\n");
-
- set_bit(KEY_FLAG_TRUSTED_ONLY, &system_trusted_keyring->flags);
-+
-+ #ifdef CONFIG_SYSTEM_BLACKLIST_KEYRING
+@@ -99,6 +102,16 @@ static __init int system_trusted_keyring_init(void)
+ if (key_link(secondary_trusted_keys, builtin_trusted_keys) < 0)
+ panic("Can't link trusted keyrings\n");
+ #endif
++#ifdef CONFIG_SYSTEM_BLACKLIST_KEYRING
+ system_blacklist_keyring = keyring_alloc(".system_blacklist_keyring",
-+ KUIDT_INIT(0), KGIDT_INIT(0),
-+ current_cred(),
-+ (KEY_POS_ALL & ~KEY_POS_SETATTR) |
-+ KEY_USR_VIEW | KEY_USR_READ,
-+ KEY_ALLOC_NOT_IN_QUOTA, NULL);
++ KUIDT_INIT(0), KGIDT_INIT(0), current_cred(),
++ ((KEY_POS_ALL & ~KEY_POS_SETATTR) |
++ KEY_USR_VIEW | KEY_USR_READ | KEY_USR_SEARCH),
++ KEY_ALLOC_NOT_IN_QUOTA,
++ NULL, NULL);
+ if (IS_ERR(system_blacklist_keyring))
+ panic("Can't allocate system blacklist keyring\n");
-+
-+ set_bit(KEY_FLAG_TRUSTED_ONLY, &system_blacklist_keyring->flags);
+#endif
-+
+
return 0;
}
-
-@@ -138,6 +155,16 @@ int system_verify_data(const void *data, unsigned long len,
- if (ret < 0)
- goto error;
-
+@@ -214,6 +227,15 @@ int verify_pkcs7_signature(const void *data, size_t len,
+ trusted_keys = builtin_trusted_keys;
+ #endif
+ }
+#ifdef CONFIG_SYSTEM_BLACKLIST_KEYRING
-+ ret = pkcs7_validate_trust(pkcs7, system_blacklist_keyring, &trusted);
++ ret = pkcs7_validate_trust(pkcs7, system_blacklist_keyring);
+ if (!ret) {
+ /* module is signed with a cert in the blacklist. reject */
+ pr_err("Module key is in the blacklist\n");
@@ -63,30 +59,29 @@ index 2570598b784d..53733822993f 100644
+ goto error;
+ }
+#endif
-+
- ret = pkcs7_validate_trust(pkcs7, system_trusted_keyring, &trusted);
- if (ret < 0)
- goto error;
+ ret = pkcs7_validate_trust(pkcs7, trusted_keys);
+ if (ret < 0) {
+ if (ret == -ENOKEY)
diff --git a/include/keys/system_keyring.h b/include/keys/system_keyring.h
-index b20cd885c1fd..51d8ddc60e0f 100644
+index fbd4647767e9..5bc291a3d261 100644
--- a/include/keys/system_keyring.h
+++ b/include/keys/system_keyring.h
-@@ -35,6 +35,10 @@ extern int system_verify_data(const void *data, unsigned long len,
- enum key_being_used_for usage);
+@@ -33,6 +33,10 @@ extern int restrict_link_by_builtin_and_secondary_trusted(
+ #define restrict_link_by_builtin_and_secondary_trusted restrict_link_by_builtin_trusted
#endif
+#ifdef CONFIG_SYSTEM_BLACKLIST_KEYRING
+extern struct key *system_blacklist_keyring;
+#endif
+
- #ifdef CONFIG_IMA_MOK_KEYRING
- extern struct key *ima_mok_keyring;
+ #ifdef CONFIG_IMA_BLACKLIST_KEYRING
extern struct key *ima_blacklist_keyring;
+
diff --git a/init/Kconfig b/init/Kconfig
-index 02da9f1fd9df..782d26f02885 100644
+index a9c4aefd5436..e5449d5aeff9 100644
--- a/init/Kconfig
+++ b/init/Kconfig
-@@ -1783,6 +1783,15 @@ config SYSTEM_DATA_VERIFICATION
+@@ -1829,6 +1829,15 @@ config SYSTEM_DATA_VERIFICATION
module verification, kexec image verification and firmware blob
verification.
@@ -103,5 +98,5 @@ index 02da9f1fd9df..782d26f02885 100644
bool "Profiling support"
help
--
-2.4.3
+2.5.5
diff --git a/freed-ora/current/master/KVM-MTRR-remove-MSR-0x2f8.patch b/freed-ora/current/master/KVM-MTRR-remove-MSR-0x2f8.patch
deleted file mode 100644
index 8066b2e8f..000000000
--- a/freed-ora/current/master/KVM-MTRR-remove-MSR-0x2f8.patch
+++ /dev/null
@@ -1,49 +0,0 @@
-From bb0f06280beb6507226627a85076ae349a23fe22 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Radim=20Kr=C4=8Dm=C3=A1=C5=99?= <rkrcmar@redhat.com>
-Date: Mon, 16 May 2016 09:45:35 -0400
-Subject: [PATCH] KVM: MTRR: remove MSR 0x2f8
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-MSR 0x2f8 accessed the 124th Variable Range MTRR ever since MTRR support
-was introduced by 9ba075a664df ("KVM: MTRR support").
-
-0x2f8 became harmful when 910a6aae4e2e ("KVM: MTRR: exactly define the
-size of variable MTRRs") shrinked the array of VR MTRRs from 256 to 8,
-which made access to index 124 out of bounds. The surrounding code only
-WARNs in this situation, thus the guest gained a limited read/write
-access to struct kvm_arch_vcpu.
-
-0x2f8 is not a valid VR MTRR MSR, because KVM has/advertises only 16 VR
-MTRR MSRs, 0x200-0x20f. Every VR MTRR is set up using two MSRs, 0x2f8
-was treated as a PHYSBASE and 0x2f9 would be its PHYSMASK, but 0x2f9 was
-not implemented in KVM, therefore 0x2f8 could never do anything useful
-and getting rid of it is safe.
-
-This fixes CVE-2016-TBD.
-
-Fixes: 910a6aae4e2e ("KVM: MTRR: exactly define the size of variable MTRRs")
-Cc: stable@vger.kernel.org
-Reported-by: David Matlack <dmatlack@google.com>
-Signed-off-by: Radim Krčmář <rkrcmar@redhat.com>
----
- arch/x86/kvm/mtrr.c | 2 --
- 1 file changed, 2 deletions(-)
-
-diff --git a/arch/x86/kvm/mtrr.c b/arch/x86/kvm/mtrr.c
-index 3f8c732117ec..c146f3c262c3 100644
---- a/arch/x86/kvm/mtrr.c
-+++ b/arch/x86/kvm/mtrr.c
-@@ -44,8 +44,6 @@ static bool msr_mtrr_valid(unsigned msr)
- case MSR_MTRRdefType:
- case MSR_IA32_CR_PAT:
- return true;
-- case 0x2f8:
-- return true;
- }
- return false;
- }
---
-2.5.5
-
diff --git a/freed-ora/current/master/MODSIGN-Import-certificates-from-UEFI-Secure-Boot.patch b/freed-ora/current/master/MODSIGN-Import-certificates-from-UEFI-Secure-Boot.patch
index 8a484b6d8..05be7a028 100644
--- a/freed-ora/current/master/MODSIGN-Import-certificates-from-UEFI-Secure-Boot.patch
+++ b/freed-ora/current/master/MODSIGN-Import-certificates-from-UEFI-Secure-Boot.patch
@@ -1,4 +1,4 @@
-From 2246a781c8dbb1207a0b0abbfae201f998c3954b Mon Sep 17 00:00:00 2001
+From ba2b209daf984514229626803472e0b055832345 Mon Sep 17 00:00:00 2001
From: Josh Boyer <jwboyer@fedoraproject.org>
Date: Fri, 26 Oct 2012 12:42:16 -0400
Subject: [PATCH] MODSIGN: Import certificates from UEFI Secure Boot
@@ -18,18 +18,56 @@ signed with those from loading.
Signed-off-by: Josh Boyer <jwboyer@fedoraproject.org>
---
- include/linux/efi.h | 6 ++++
- init/Kconfig | 9 +++++
- kernel/Makefile | 3 ++
- kernel/modsign_uefi.c | 92 +++++++++++++++++++++++++++++++++++++++++++++++++++
- 4 files changed, 110 insertions(+)
+ certs/system_keyring.c | 13 ++++++
+ include/keys/system_keyring.h | 1 +
+ include/linux/efi.h | 6 +++
+ init/Kconfig | 9 ++++
+ kernel/Makefile | 3 ++
+ kernel/modsign_uefi.c | 99 +++++++++++++++++++++++++++++++++++++++++++
+ 6 files changed, 131 insertions(+)
create mode 100644 kernel/modsign_uefi.c
+diff --git a/certs/system_keyring.c b/certs/system_keyring.c
+index 787eeead2f57..4d9123ed5c07 100644
+--- a/certs/system_keyring.c
++++ b/certs/system_keyring.c
+@@ -30,6 +30,19 @@ extern __initconst const u8 system_certificate_list[];
+ extern __initconst const unsigned long system_certificate_list_size;
+
+ /**
++ * get_system_keyring - Return a pointer to the system keyring
++ *
++ */
++struct key *get_system_keyring(void)
++{
++ struct key *system_keyring = NULL;
++
++ system_keyring = builtin_trusted_keys;
++ return system_keyring;
++}
++EXPORT_SYMBOL_GPL(get_system_keyring);
++
++/**
+ * restrict_link_to_builtin_trusted - Restrict keyring addition by built in CA
+ *
+ * Restrict the addition of keys into a keyring based on the key-to-be-added
+diff --git a/include/keys/system_keyring.h b/include/keys/system_keyring.h
+index 5bc291a3d261..56ff5715ab67 100644
+--- a/include/keys/system_keyring.h
++++ b/include/keys/system_keyring.h
+@@ -36,6 +36,7 @@ extern int restrict_link_by_builtin_and_secondary_trusted(
+ #ifdef CONFIG_SYSTEM_BLACKLIST_KEYRING
+ extern struct key *system_blacklist_keyring;
+ #endif
++extern struct key *get_system_keyring(void);
+
+ #ifdef CONFIG_IMA_BLACKLIST_KEYRING
+ extern struct key *ima_blacklist_keyring;
diff --git a/include/linux/efi.h b/include/linux/efi.h
-index 85ef051ac6fb..a042b2ece788 100644
+index ff1877145aa4..2483de19c719 100644
--- a/include/linux/efi.h
+++ b/include/linux/efi.h
-@@ -600,6 +600,12 @@ typedef struct {
+@@ -658,6 +658,12 @@ typedef struct {
u64 table;
} efi_config_table_64_t;
@@ -43,10 +81,10 @@ index 85ef051ac6fb..a042b2ece788 100644
efi_guid_t guid;
u32 table;
diff --git a/init/Kconfig b/init/Kconfig
-index 02da9f1fd9df..90c73a0564b1 100644
+index e5449d5aeff9..5408c96f6604 100644
--- a/init/Kconfig
+++ b/init/Kconfig
-@@ -1924,6 +1924,15 @@ config MODULE_SIG_ALL
+@@ -1979,6 +1979,15 @@ config MODULE_SIG_ALL
comment "Do not forget to sign required modules with scripts/sign-file"
depends on MODULE_SIG_FORCE && !MODULE_SIG_ALL
@@ -63,10 +101,10 @@ index 02da9f1fd9df..90c73a0564b1 100644
prompt "Which hash algorithm should modules be signed with?"
depends on MODULE_SIG
diff --git a/kernel/Makefile b/kernel/Makefile
-index d4988410b410..55e886239e7e 100644
+index e2ec54e2b952..8dab549985d8 100644
--- a/kernel/Makefile
+++ b/kernel/Makefile
-@@ -47,6 +47,7 @@ endif
+@@ -57,6 +57,7 @@ endif
obj-$(CONFIG_UID16) += uid16.o
obj-$(CONFIG_MODULES) += module.o
obj-$(CONFIG_MODULE_SIG) += module_signing.o
@@ -74,7 +112,7 @@ index d4988410b410..55e886239e7e 100644
obj-$(CONFIG_KALLSYMS) += kallsyms.o
obj-$(CONFIG_BSD_PROCESS_ACCT) += acct.o
obj-$(CONFIG_KEXEC_CORE) += kexec_core.o
-@@ -103,6 +104,8 @@ obj-$(CONFIG_TORTURE_TEST) += torture.o
+@@ -113,6 +114,8 @@ obj-$(CONFIG_MEMBARRIER) += membarrier.o
obj-$(CONFIG_HAS_IOMEM) += memremap.o
@@ -85,10 +123,10 @@ index d4988410b410..55e886239e7e 100644
# config_data.h contains the same information as ikconfig.h but gzipped.
diff --git a/kernel/modsign_uefi.c b/kernel/modsign_uefi.c
new file mode 100644
-index 000000000000..94b0eb38a284
+index 000000000000..fe4a6f2bf10a
--- /dev/null
+++ b/kernel/modsign_uefi.c
-@@ -0,0 +1,92 @@
+@@ -0,0 +1,99 @@
+#include <linux/kernel.h>
+#include <linux/sched.h>
+#include <linux/cred.h>
@@ -139,11 +177,18 @@ index 000000000000..94b0eb38a284
+ void *db = NULL, *dbx = NULL, *mok = NULL;
+ unsigned long dbsize = 0, dbxsize = 0, moksize = 0;
+ int rc = 0;
++ struct key *keyring = NULL;
+
+ /* Check if SB is enabled and just return if not */
+ if (!efi_enabled(EFI_SECURE_BOOT))
+ return 0;
+
++ keyring = get_system_keyring();
++ if (!keyring) {
++ pr_err("MODSIGN: Couldn't get system keyring\n");
++ return -EINVAL;
++ }
++
+ /* Get db, MokListRT, and dbx. They might not exist, so it isn't
+ * an error if we can't get them.
+ */
@@ -151,7 +196,7 @@ index 000000000000..94b0eb38a284
+ if (!db) {
+ pr_err("MODSIGN: Couldn't get UEFI db list\n");
+ } else {
-+ rc = parse_efi_signature_list(db, dbsize, system_trusted_keyring);
++ rc = parse_efi_signature_list(db, dbsize, keyring);
+ if (rc)
+ pr_err("Couldn't parse db signatures: %d\n", rc);
+ kfree(db);
@@ -161,7 +206,7 @@ index 000000000000..94b0eb38a284
+ if (!mok) {
+ pr_info("MODSIGN: Couldn't get UEFI MokListRT\n");
+ } else {
-+ rc = parse_efi_signature_list(mok, moksize, system_trusted_keyring);
++ rc = parse_efi_signature_list(mok, moksize, keyring);
+ if (rc)
+ pr_err("Couldn't parse MokListRT signatures: %d\n", rc);
+ kfree(mok);
@@ -182,5 +227,5 @@ index 000000000000..94b0eb38a284
+}
+late_initcall(load_uefi_certs);
--
-2.4.3
+2.5.5
diff --git a/freed-ora/current/master/MODSIGN-Support-not-importing-certs-from-db.patch b/freed-ora/current/master/MODSIGN-Support-not-importing-certs-from-db.patch
index bb5ae2a2c..3339ce76e 100644
--- a/freed-ora/current/master/MODSIGN-Support-not-importing-certs-from-db.patch
+++ b/freed-ora/current/master/MODSIGN-Support-not-importing-certs-from-db.patch
@@ -1,7 +1,7 @@
-From d7c9efa4ab647d6ccb617f2504e79a398d56f7d4 Mon Sep 17 00:00:00 2001
+From 7ce860189df19a38176c1510f4e5615bf35495c1 Mon Sep 17 00:00:00 2001
From: Josh Boyer <jwboyer@fedoraproject.org>
Date: Thu, 3 Oct 2013 10:14:23 -0400
-Subject: [PATCH 19/20] MODSIGN: Support not importing certs from db
+Subject: [PATCH 2/2] MODSIGN: Support not importing certs from db
If a user tells shim to not use the certs/hashes in the UEFI db variable
for verification purposes, shim will set a UEFI variable called MokIgnoreDB.
@@ -14,7 +14,7 @@ Signed-off-by: Josh Boyer <jwboyer@fedoraproject.org>
1 file changed, 31 insertions(+), 9 deletions(-)
diff --git a/kernel/modsign_uefi.c b/kernel/modsign_uefi.c
-index 94b0eb38a284..ae28b974d49a 100644
+index 03f601a0052c..321c79a3b282 100644
--- a/kernel/modsign_uefi.c
+++ b/kernel/modsign_uefi.c
@@ -8,6 +8,23 @@
@@ -41,16 +41,18 @@ index 94b0eb38a284..ae28b974d49a 100644
static __init void *get_cert_list(efi_char16_t *name, efi_guid_t *guid, unsigned long *size)
{
efi_status_t status;
-@@ -47,23 +64,28 @@ static int __init load_uefi_certs(void)
+@@ -47,7 +64,7 @@ static int __init load_uefi_certs(void)
efi_guid_t mok_var = EFI_SHIM_LOCK_GUID;
void *db = NULL, *dbx = NULL, *mok = NULL;
unsigned long dbsize = 0, dbxsize = 0, moksize = 0;
- int rc = 0;
+ int ignore_db, rc = 0;
+ struct key *keyring = NULL;
/* Check if SB is enabled and just return if not */
- if (!efi_enabled(EFI_SECURE_BOOT))
- return 0;
+@@ -60,17 +77,22 @@ static int __init load_uefi_certs(void)
+ return -EINVAL;
+ }
+ /* See if the user has setup Ignore DB mode */
+ ignore_db = check_ignore_db();
@@ -62,7 +64,7 @@ index 94b0eb38a284..ae28b974d49a 100644
- if (!db) {
- pr_err("MODSIGN: Couldn't get UEFI db list\n");
- } else {
-- rc = parse_efi_signature_list(db, dbsize, system_trusted_keyring);
+- rc = parse_efi_signature_list(db, dbsize, keyring);
- if (rc)
- pr_err("Couldn't parse db signatures: %d\n", rc);
- kfree(db);
@@ -71,7 +73,7 @@ index 94b0eb38a284..ae28b974d49a 100644
+ if (!db) {
+ pr_err("MODSIGN: Couldn't get UEFI db list\n");
+ } else {
-+ rc = parse_efi_signature_list(db, dbsize, system_trusted_keyring);
++ rc = parse_efi_signature_list(db, dbsize, keyring);
+ if (rc)
+ pr_err("Couldn't parse db signatures: %d\n", rc);
+ kfree(db);
@@ -80,5 +82,5 @@ index 94b0eb38a284..ae28b974d49a 100644
mok = get_cert_list(L"MokListRT", &mok_var, &moksize);
--
-2.4.3
+2.5.5
diff --git a/freed-ora/current/master/Makefile b/freed-ora/current/master/Makefile
index f81123332..535403510 100644
--- a/freed-ora/current/master/Makefile
+++ b/freed-ora/current/master/Makefile
@@ -37,6 +37,7 @@ debug:
@perl -pi -e 's/# CONFIG_PROVE_RCU is not set/CONFIG_PROVE_RCU=y/' config-nodebug
@perl -pi -e 's/# CONFIG_DEBUG_SPINLOCK is not set/CONFIG_DEBUG_SPINLOCK=y/' config-nodebug
@perl -pi -e 's/# CONFIG_DEBUG_VM is not set/CONFIG_DEBUG_VM=y/' config-nodebug
+ @perl -pi -e 's/# CONFIG_DEBUG_VM_PGFLAGS is not set/CONFIG_DEBUG_VM_PGFLAGS=y/' config-nodebug
@perl -pi -e 's/# CONFIG_FAULT_INJECTION is not set/CONFIG_FAULT_INJECTION=y/' config-nodebug
@perl -pi -e 's/# CONFIG_FAILSLAB is not set/CONFIG_FAILSLAB=y/' config-nodebug
@perl -pi -e 's/# CONFIG_FAIL_PAGE_ALLOC is not set/CONFIG_FAIL_PAGE_ALLOC=y/' config-nodebug
diff --git a/freed-ora/current/master/Makefile.release b/freed-ora/current/master/Makefile.release
index f1d31bb0c..3e850d614 100644
--- a/freed-ora/current/master/Makefile.release
+++ b/freed-ora/current/master/Makefile.release
@@ -17,6 +17,7 @@ config-release:
@perl -pi -e 's/CONFIG_PROVE_RCU=y/# CONFIG_PROVE_RCU is not set/' config-nodebug
@perl -pi -e 's/CONFIG_DEBUG_SPINLOCK=y/# CONFIG_DEBUG_SPINLOCK is not set/' config-nodebug
@perl -pi -e 's/CONFIG_DEBUG_VM=y/# CONFIG_DEBUG_VM is not set/' config-nodebug
+ @perl -pi -e 's/CONFIG_DEBUG_VM_PGFLAGS=y/# CONFIG_DEBUG_VM_PGFLAGS is not set/' config-nodebug
@perl -pi -e 's/CONFIG_FAULT_INJECTION=y/# CONFIG_FAULT_INJECTION is not set/' config-nodebug
@perl -pi -e 's/CONFIG_FAILSLAB=y/# CONFIG_FAILSLAB is not set/' config-nodebug
@perl -pi -e 's/CONFIG_FAIL_PAGE_ALLOC=y/# CONFIG_FAIL_PAGE_ALLOC is not set/' config-nodebug
diff --git a/freed-ora/current/master/USB-usbfs-fix-potential-infoleak-in-devio.patch b/freed-ora/current/master/USB-usbfs-fix-potential-infoleak-in-devio.patch
deleted file mode 100644
index 48360c930..000000000
--- a/freed-ora/current/master/USB-usbfs-fix-potential-infoleak-in-devio.patch
+++ /dev/null
@@ -1,41 +0,0 @@
-From 7adc5cbc25dcc47dc3856108d9823d08da75da9d Mon Sep 17 00:00:00 2001
-From: Kangjie Lu <kangjielu@gmail.com>
-Date: Tue, 3 May 2016 16:32:16 -0400
-Subject: [PATCH] USB: usbfs: fix potential infoleak in devio
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-The stack object “ci” has a total size of 8 bytes. Its last 3 bytes
-are padding bytes which are not initialized and leaked to userland
-via “copy_to_user”.
-
-Signed-off-by: Kangjie Lu <kjlu@gatech.edu>
-Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
----
- drivers/usb/core/devio.c | 9 +++++----
- 1 file changed, 5 insertions(+), 4 deletions(-)
-
-diff --git a/drivers/usb/core/devio.c b/drivers/usb/core/devio.c
-index 52c4461dfccd..9b7f1f75e887 100644
---- a/drivers/usb/core/devio.c
-+++ b/drivers/usb/core/devio.c
-@@ -1316,10 +1316,11 @@ static int proc_getdriver(struct usb_dev_state *ps, void __user *arg)
-
- static int proc_connectinfo(struct usb_dev_state *ps, void __user *arg)
- {
-- struct usbdevfs_connectinfo ci = {
-- .devnum = ps->dev->devnum,
-- .slow = ps->dev->speed == USB_SPEED_LOW
-- };
-+ struct usbdevfs_connectinfo ci;
-+
-+ memset(&ci, 0, sizeof(ci));
-+ ci.devnum = ps->dev->devnum;
-+ ci.slow = ps->dev->speed == USB_SPEED_LOW;
-
- if (copy_to_user(arg, &ci, sizeof(ci)))
- return -EFAULT;
---
-2.5.5
-
diff --git a/freed-ora/current/master/antenna_select.patch b/freed-ora/current/master/antenna_select.patch
deleted file mode 100644
index 15763e9bc..000000000
--- a/freed-ora/current/master/antenna_select.patch
+++ /dev/null
@@ -1,227 +0,0 @@
-From c18d8f5095715c56bb3cd9cba64242542632054b Mon Sep 17 00:00:00 2001
-From: Larry Finger <Larry.Finger@lwfinger.net>
-Date: Wed, 16 Mar 2016 13:33:34 -0500
-Subject: rtlwifi: rtl8723be: Add antenna select module parameter
-
-A number of new laptops have been delivered with only a single antenna.
-In principle, this is OK; however, a problem arises when the on-board
-EEPROM is programmed to use the other antenna connection. The option
-of opening the computer and moving the connector is not always possible
-as it will void the warranty in some cases. In addition, this solution
-breaks the Windows driver when the box dual boots Linux and Windows.
-
-A fix involving a new module parameter has been developed. This commit
-adds the new parameter and implements the changes needed for the driver.
-
-Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
-Cc: Stable <stable@vger.kernel.org> [V4.0+]
-Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
----
- drivers/net/wireless/realtek/rtlwifi/rtl8723be/hw.c | 5 +++++
- drivers/net/wireless/realtek/rtlwifi/rtl8723be/sw.c | 3 +++
- drivers/net/wireless/realtek/rtlwifi/wifi.h | 3 +++
- 3 files changed, 11 insertions(+)
-
-diff --git a/drivers/net/wireless/realtek/rtlwifi/rtl8723be/hw.c b/drivers/net/wireless/realtek/rtlwifi/rtl8723be/hw.c
-index c983d2f..5a3df91 100644
---- a/drivers/net/wireless/realtek/rtlwifi/rtl8723be/hw.c
-+++ b/drivers/net/wireless/realtek/rtlwifi/rtl8723be/hw.c
-@@ -2684,6 +2684,7 @@ void rtl8723be_read_bt_coexist_info_from_hwpg(struct ieee80211_hw *hw,
- bool auto_load_fail, u8 *hwinfo)
- {
- struct rtl_priv *rtlpriv = rtl_priv(hw);
-+ struct rtl_mod_params *mod_params = rtlpriv->cfg->mod_params;
- u8 value;
- u32 tmpu_32;
-
-@@ -2702,6 +2703,10 @@ void rtl8723be_read_bt_coexist_info_from_hwpg(struct ieee80211_hw *hw,
- rtlpriv->btcoexist.btc_info.ant_num = ANT_X2;
- }
-
-+ /* override ant_num / ant_path */
-+ if (mod_params->ant_sel)
-+ rtlpriv->btcoexist.btc_info.ant_num =
-+ (mod_params->ant_sel == 1 ? ANT_X2 : ANT_X1);
- }
-
- void rtl8723be_bt_reg_init(struct ieee80211_hw *hw)
-diff --git a/drivers/net/wireless/realtek/rtlwifi/rtl8723be/sw.c b/drivers/net/wireless/realtek/rtlwifi/rtl8723be/sw.c
-index a78eaed..2101793 100644
---- a/drivers/net/wireless/realtek/rtlwifi/rtl8723be/sw.c
-+++ b/drivers/net/wireless/realtek/rtlwifi/rtl8723be/sw.c
-@@ -273,6 +273,7 @@ static struct rtl_mod_params rtl8723be_mod_params = {
- .msi_support = false,
- .disable_watchdog = false,
- .debug = DBG_EMERG,
-+ .ant_sel = 0,
- };
-
- static struct rtl_hal_cfg rtl8723be_hal_cfg = {
-@@ -394,6 +395,7 @@ module_param_named(fwlps, rtl8723be_mod_params.fwctrl_lps, bool, 0444);
- module_param_named(msi, rtl8723be_mod_params.msi_support, bool, 0444);
- module_param_named(disable_watchdog, rtl8723be_mod_params.disable_watchdog,
- bool, 0444);
-+module_param_named(ant_sel, rtl8723be_mod_params.ant_sel, int, 0444);
- MODULE_PARM_DESC(swenc, "Set to 1 for software crypto (default 0)\n");
- MODULE_PARM_DESC(ips, "Set to 0 to not use link power save (default 1)\n");
- MODULE_PARM_DESC(swlps, "Set to 1 to use SW control power save (default 0)\n");
-@@ -402,6 +404,7 @@ MODULE_PARM_DESC(msi, "Set to 1 to use MSI interrupts mode (default 0)\n");
- MODULE_PARM_DESC(debug, "Set debug level (0-5) (default 0)");
- MODULE_PARM_DESC(disable_watchdog,
- "Set to 1 to disable the watchdog (default 0)\n");
-+MODULE_PARM_DESC(ant_sel, "Set to 1 or 2 to force antenna number (default 0)\n");
-
- static SIMPLE_DEV_PM_OPS(rtlwifi_pm_ops, rtl_pci_suspend, rtl_pci_resume);
-
-diff --git a/drivers/net/wireless/realtek/rtlwifi/wifi.h b/drivers/net/wireless/realtek/rtlwifi/wifi.h
-index 554d814..93bd7fc 100644
---- a/drivers/net/wireless/realtek/rtlwifi/wifi.h
-+++ b/drivers/net/wireless/realtek/rtlwifi/wifi.h
-@@ -2246,6 +2246,9 @@ struct rtl_mod_params {
-
- /* default 0: 1 means do not disable interrupts */
- bool int_clear;
-+
-+ /* select antenna */
-+ int ant_sel;
- };
-
- struct rtl_hal_usbint_cfg {
---
-cgit v0.12
-
-From baa1702290953295e421f0f433e2b1ff4815827c Mon Sep 17 00:00:00 2001
-From: Larry Finger <Larry.Finger@lwfinger.net>
-Date: Wed, 16 Mar 2016 13:33:35 -0500
-Subject: rtlwifi: btcoexist: Implement antenna selection
-
-The previous patch added an option to rtl8723be to manually select the
-antenna for those cases when only a single antenna is present, and the
-on-board EEPROM is incorrectly programmed. This patch implements the
-necessary changes in the Bluetooth coexistence driver.
-
-Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
-Cc: Stable <stable@vger.kernel.org> [V4.0+]
-Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
----
- .../realtek/rtlwifi/btcoexist/halbtc8723b2ant.c | 9 ++++++--
- .../realtek/rtlwifi/btcoexist/halbtcoutsrc.c | 27 +++++++++++++++++++++-
- .../realtek/rtlwifi/btcoexist/halbtcoutsrc.h | 2 +-
- .../wireless/realtek/rtlwifi/btcoexist/rtl_btc.c | 5 +++-
- 4 files changed, 38 insertions(+), 5 deletions(-)
-
-diff --git a/drivers/net/wireless/realtek/rtlwifi/btcoexist/halbtc8723b2ant.c b/drivers/net/wireless/realtek/rtlwifi/btcoexist/halbtc8723b2ant.c
-index c43ab59..77cbd10 100644
---- a/drivers/net/wireless/realtek/rtlwifi/btcoexist/halbtc8723b2ant.c
-+++ b/drivers/net/wireless/realtek/rtlwifi/btcoexist/halbtc8723b2ant.c
-@@ -1203,7 +1203,6 @@ static void btc8723b2ant_set_ant_path(struct btc_coexist *btcoexist,
-
- /* Force GNT_BT to low */
- btcoexist->btc_write_1byte_bitmask(btcoexist, 0x765, 0x18, 0x0);
-- btcoexist->btc_write_2byte(btcoexist, 0x948, 0x0);
-
- if (board_info->btdm_ant_pos == BTC_ANTENNA_AT_MAIN_PORT) {
- /* tell firmware "no antenna inverse" */
-@@ -1211,19 +1210,25 @@ static void btc8723b2ant_set_ant_path(struct btc_coexist *btcoexist,
- h2c_parameter[1] = 1; /* ext switch type */
- btcoexist->btc_fill_h2c(btcoexist, 0x65, 2,
- h2c_parameter);
-+ btcoexist->btc_write_2byte(btcoexist, 0x948, 0x0);
- } else {
- /* tell firmware "antenna inverse" */
- h2c_parameter[0] = 1;
- h2c_parameter[1] = 1; /* ext switch type */
- btcoexist->btc_fill_h2c(btcoexist, 0x65, 2,
- h2c_parameter);
-+ btcoexist->btc_write_2byte(btcoexist, 0x948, 0x280);
- }
- }
-
- /* ext switch setting */
- if (use_ext_switch) {
- /* fixed internal switch S1->WiFi, S0->BT */
-- btcoexist->btc_write_2byte(btcoexist, 0x948, 0x0);
-+ if (board_info->btdm_ant_pos == BTC_ANTENNA_AT_MAIN_PORT)
-+ btcoexist->btc_write_2byte(btcoexist, 0x948, 0x0);
-+ else
-+ btcoexist->btc_write_2byte(btcoexist, 0x948, 0x280);
-+
- switch (antpos_type) {
- case BTC_ANT_WIFI_AT_MAIN:
- /* ext switch main at wifi */
-diff --git a/drivers/net/wireless/realtek/rtlwifi/btcoexist/halbtcoutsrc.c b/drivers/net/wireless/realtek/rtlwifi/btcoexist/halbtcoutsrc.c
-index b2791c8..babd149 100644
---- a/drivers/net/wireless/realtek/rtlwifi/btcoexist/halbtcoutsrc.c
-+++ b/drivers/net/wireless/realtek/rtlwifi/btcoexist/halbtcoutsrc.c
-@@ -965,13 +965,38 @@ void exhalbtc_set_chip_type(u8 chip_type)
- }
- }
-
--void exhalbtc_set_ant_num(u8 type, u8 ant_num)
-+void exhalbtc_set_ant_num(struct rtl_priv *rtlpriv, u8 type, u8 ant_num)
- {
- if (BT_COEX_ANT_TYPE_PG == type) {
- gl_bt_coexist.board_info.pg_ant_num = ant_num;
- gl_bt_coexist.board_info.btdm_ant_num = ant_num;
-+ /* The antenna position:
-+ * Main (default) or Aux for pgAntNum=2 && btdmAntNum =1.
-+ * The antenna position should be determined by
-+ * auto-detect mechanism.
-+ * The following is assumed to main,
-+ * and those must be modified
-+ * if y auto-detect mechanism is ready
-+ */
-+ if ((gl_bt_coexist.board_info.pg_ant_num == 2) &&
-+ (gl_bt_coexist.board_info.btdm_ant_num == 1))
-+ gl_bt_coexist.board_info.btdm_ant_pos =
-+ BTC_ANTENNA_AT_MAIN_PORT;
-+ else
-+ gl_bt_coexist.board_info.btdm_ant_pos =
-+ BTC_ANTENNA_AT_MAIN_PORT;
- } else if (BT_COEX_ANT_TYPE_ANTDIV == type) {
- gl_bt_coexist.board_info.btdm_ant_num = ant_num;
-+ gl_bt_coexist.board_info.btdm_ant_pos =
-+ BTC_ANTENNA_AT_MAIN_PORT;
-+ } else if (type == BT_COEX_ANT_TYPE_DETECTED) {
-+ gl_bt_coexist.board_info.btdm_ant_num = ant_num;
-+ if (rtlpriv->cfg->mod_params->ant_sel == 1)
-+ gl_bt_coexist.board_info.btdm_ant_pos =
-+ BTC_ANTENNA_AT_AUX_PORT;
-+ else
-+ gl_bt_coexist.board_info.btdm_ant_pos =
-+ BTC_ANTENNA_AT_MAIN_PORT;
- }
- }
-
-diff --git a/drivers/net/wireless/realtek/rtlwifi/btcoexist/halbtcoutsrc.h b/drivers/net/wireless/realtek/rtlwifi/btcoexist/halbtcoutsrc.h
-index 0a903ea..f41ca57 100644
---- a/drivers/net/wireless/realtek/rtlwifi/btcoexist/halbtcoutsrc.h
-+++ b/drivers/net/wireless/realtek/rtlwifi/btcoexist/halbtcoutsrc.h
-@@ -535,7 +535,7 @@ void exhalbtc_set_bt_patch_version(u16 bt_hci_version, u16 bt_patch_version);
- void exhalbtc_update_min_bt_rssi(char bt_rssi);
- void exhalbtc_set_bt_exist(bool bt_exist);
- void exhalbtc_set_chip_type(u8 chip_type);
--void exhalbtc_set_ant_num(u8 type, u8 ant_num);
-+void exhalbtc_set_ant_num(struct rtl_priv *rtlpriv, u8 type, u8 ant_num);
- void exhalbtc_display_bt_coex_info(struct btc_coexist *btcoexist);
- void exhalbtc_signal_compensation(struct btc_coexist *btcoexist,
- u8 *rssi_wifi, u8 *rssi_bt);
-diff --git a/drivers/net/wireless/realtek/rtlwifi/btcoexist/rtl_btc.c b/drivers/net/wireless/realtek/rtlwifi/btcoexist/rtl_btc.c
-index b9b0cb7..d3fd921 100644
---- a/drivers/net/wireless/realtek/rtlwifi/btcoexist/rtl_btc.c
-+++ b/drivers/net/wireless/realtek/rtlwifi/btcoexist/rtl_btc.c
-@@ -72,7 +72,10 @@ void rtl_btc_init_hal_vars(struct rtl_priv *rtlpriv)
- __func__, bt_type);
- exhalbtc_set_chip_type(bt_type);
-
-- exhalbtc_set_ant_num(BT_COEX_ANT_TYPE_PG, ant_num);
-+ if (rtlpriv->cfg->mod_params->ant_sel == 1)
-+ exhalbtc_set_ant_num(rtlpriv, BT_COEX_ANT_TYPE_DETECTED, 1);
-+ else
-+ exhalbtc_set_ant_num(rtlpriv, BT_COEX_ANT_TYPE_PG, ant_num);
- }
-
- void rtl_btc_init_hw_config(struct rtl_priv *rtlpriv)
---
-cgit v0.12
-
diff --git a/freed-ora/current/master/arm-i.MX6-Utilite-device-dtb.patch b/freed-ora/current/master/arm-i.MX6-Utilite-device-dtb.patch
index 86f9e763d..efffd77bd 100644
--- a/freed-ora/current/master/arm-i.MX6-Utilite-device-dtb.patch
+++ b/freed-ora/current/master/arm-i.MX6-Utilite-device-dtb.patch
@@ -1,62 +1,354 @@
-From: Peter Robinson <pbrobinson@gmail.com>
-Date: Fri, 11 Jul 2014 00:10:56 +0100
-Subject: [PATCH] arm: i.MX6 Utilite device dtb
+From: Christopher Spinrath <christopher.spinrath@xxxxxxxxxxxxxx>
+The CompuLab Utilite Pro is a miniature fanless desktop pc based on
+the i.MX6 Quad powered cm-fx6 module. It features two serial ports,
+USB OTG, 4x USB, analog audio and S/PDIF, 2x Gb Ethernet, HDMI and
+DVI ports, an on-board 32GB SSD, a mmc slot, and on-board wifi/bt.
+
+Add initial support for it including USB, Ethernet (both ports), sata
+and HDMI support.
+
+Signed-off-by: Christopher Spinrath <christopher.spinrath@xxxxxxxxxxxxxx>
+---
+ arch/arm/boot/dts/Makefile | 1 +
+ arch/arm/boot/dts/imx6q-utilite-pro.dts | 128 ++++++++++++++++++++++++++++++++
+ 2 files changed, 129 insertions(+)
+ create mode 100644 arch/arm/boot/dts/imx6q-utilite-pro.dts
+
+diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
+index 515a428..287044c 100644
+--- a/arch/arm/boot/dts/Makefile
++++ b/arch/arm/boot/dts/Makefile
+@@ -369,6 +369,7 @@ dtb-$(CONFIG_SOC_IMX6Q) += \
+ imx6q-tx6q-1110.dtb \
+ imx6q-tx6q-11x0-mb7.dtb \
+ imx6q-udoo.dtb \
++ imx6q-utilite-pro.dtb \
+ imx6q-wandboard.dtb \
+ imx6q-wandboard-revb1.dtb \
+ imx6qp-nitrogen6_max.dtb \
+diff --git a/arch/arm/boot/dts/imx6q-utilite-pro.dts b/arch/arm/boot/dts/imx6q-utilite-pro.dts
+new file mode 100644
+index 0000000..bcd8e0d
+--- /dev/null
++++ b/arch/arm/boot/dts/imx6q-utilite-pro.dts
+@@ -0,0 +1,128 @@
++/*
++ * Copyright 2016 Christopher Spinrath
++ * Copyright 2013 CompuLab Ltd.
++ *
++ * Based on the GPLv2 licensed devicetree distributed with the vendor
++ * kernel for the Utilite Pro:
++ * Copyright 2013 CompuLab Ltd.
++ * Author: Valentin Raevsky <valentin@xxxxxxxxxxxxxx>
++ *
++ * The code contained herein is licensed under the GNU General Public
++ * License. You may obtain a copy of the GNU General Public License
++ * Version 2 or later at the following locations:
++ *
++ * http://www.opensource.org/licenses/gpl-license.html
++ * http://www.gnu.org/copyleft/gpl.html
++ */
++
++#include "imx6q-cm-fx6.dts"
++
++/ {
++ model = "CompuLab Utilite Pro";
++ compatible = "compulab,utilite-pro", "compulab,cm-fx6", "fsl,imx6q";
++
++ aliases {
++ ethernet1 = &eth1;
++ rtc0 = &em3027;
++ rtc1 = &snvs_rtc;
++ };
++
++ gpio-keys {
++ compatible = "gpio-keys";
++ power {
++ label = "Power Button";
++ gpios = <&gpio1 29 1>;
++ linux,code = <116>; /* KEY_POWER */
++ gpio-key,wakeup;
++ };
++ };
++};
++
++&hdmi {
++ ddc-i2c-bus = <&i2c2>;
++ status = "okay";
++};
++
++&i2c1 {
++ pinctrl-names = "default";
++ pinctrl-0 = <&pinctrl_i2c1>;
++ status = "okay";
++
++ eeprom@50 {
++ compatible = "at24,24c02";
++ reg = <0x50>;
++ pagesize = <16>;
++ };
++
++ em3027: rtc@56 {
++ compatible = "emmicro,em3027";
++ reg = <0x56>;
++ };
++};
++
++&i2c2 {
++ pinctrl-names = "default";
++ pinctrl-0 = <&pinctrl_i2c2>;
++ status = "okay";
++};
++
++&iomuxc {
++ pinctrl-names = "default";
++ pinctrl-0 = <&pinctrl_hog>;
++
++ hog {
++ pinctrl_hog: hoggrp {
++ fsl,pins = <
++ /* power button */
++ MX6QDL_PAD_ENET_TXD1__GPIO1_IO29 0x80000000
++ >;
++ };
++ };
++
++ imx6q-utilite-pro {
++ pinctrl_i2c1: i2c1grp {
++ fsl,pins = <
++ MX6QDL_PAD_EIM_D21__I2C1_SCL 0x4001b8b1
++ MX6QDL_PAD_EIM_D28__I2C1_SDA 0x4001b8b1
++ >;
++ };
++
++ pinctrl_i2c2: i2c2grp {
++ fsl,pins = <
++ MX6QDL_PAD_KEY_COL3__I2C2_SCL 0x4001b8b1
++ MX6QDL_PAD_KEY_ROW3__I2C2_SDA 0x4001b8b1
++ >;
++ };
++
++ pinctrl_uart2: uart2grp {
++ fsl,pins = <
++ MX6QDL_PAD_GPIO_7__UART2_TX_DATA 0x1b0b1
++ MX6QDL_PAD_GPIO_8__UART2_RX_DATA 0x1b0b1
++ MX6QDL_PAD_SD4_DAT5__UART2_RTS_B 0x1b0b1
++ MX6QDL_PAD_SD4_DAT6__UART2_CTS_B 0x1b0b1
++ >;
++ };
++ };
++};
++
++&pcie {
++ pcie@0,0 {
++ reg = <0x000000 0 0 0 0>;
++ #address-cells = <3>;
++ #size-cells = <2>;
++
++ /* non-removable i211 ethernet card */
++ eth1: intel,i211@pcie0,0 {
++ reg = <0x010000 0 0 0 0>;
++ };
++ };
++};
++
++&uart2 {
++ pinctrl-names = "default";
++ pinctrl-0 = <&pinctrl_uart2>;
++ fsl,uart-has-rtscts;
++ dma-names = "rx", "tx";
++ dmas = <&sdma 27 4 0>, <&sdma 28 4 0>;
++ status = "okay";
++};
+--
+2.8.2
+From: Christopher Spinrath <christopher.spinrath@xxxxxxxxxxxxxx>
+
+The cm-fx6 module has an on-board spi-flash chip for its firmware, an
+eeprom (containing e.g. the mac address of the on-board Ethernet),
+a sata port, a pcie controller, an USB hub, and an USB otg port.
+Enable support for them. In addition, enable syscon poweroff support.
+
+Signed-off-by: Christopher Spinrath <christopher.spinrath@xxxxxxxxxxxxxx>
---
- arch/arm/boot/dts/imx6q-cm-fx6.dts | 38 ++++++++++++++++++++++++++++++++++++++
- 1 file changed, 38 insertions(+)
+ arch/arm/boot/dts/imx6q-cm-fx6.dts | 136 +++++++++++++++++++++++++++++++++++++
+ 1 file changed, 136 insertions(+)
diff --git a/arch/arm/boot/dts/imx6q-cm-fx6.dts b/arch/arm/boot/dts/imx6q-cm-fx6.dts
-index 99b46f8030ad..8b6ddd16dcc5 100644
+index 99b46f8..f4fc22e 100644
--- a/arch/arm/boot/dts/imx6q-cm-fx6.dts
+++ b/arch/arm/boot/dts/imx6q-cm-fx6.dts
-@@ -97,11 +97,49 @@
+@@ -31,6 +31,61 @@
+ linux,default-trigger = "heartbeat";
+ };
+ };
++
++ regulators {
++ compatible = "simple-bus";
++ #address-cells = <1>;
++ #size-cells = <0>;
++
++ reg_usb_otg_vbus: usb_otg_vbus {
++ compatible = "regulator-fixed";
++ regulator-name = "usb_otg_vbus";
++ regulator-min-microvolt = <5000000>;
++ regulator-max-microvolt = <5000000>;
++ gpio = <&gpio3 22 0>;
++ enable-active-high;
++ };
++
++ reg_usb_h1_vbus: usb_h1_vbus {
++ compatible = "regulator-fixed";
++ regulator-name = "usb_h1_vbus";
++ regulator-min-microvolt = <5000000>;
++ regulator-max-microvolt = <5000000>;
++ gpio = <&gpio7 8 0>;
++ enable-active-high;
++ };
++ };
++};
++
++&ecspi1 {
++ fsl,spi-num-chipselects = <2>;
++ cs-gpios = <&gpio2 30 0>, <&gpio3 19 0>;
++ pinctrl-names = "default";
++ pinctrl-0 = <&pinctrl_ecspi1>;
++ status = "okay";
++
++ flash: m25p80@0 {
++ #address-cells = <1>;
++ #size-cells = <1>;
++ compatible = "st,m25p", "jedec,spi-nor";
++ spi-max-frequency = <20000000>;
++ reg = <0>;
++
++ partition@0 {
++ label = "uboot";
++ reg = <0x0 0xc0000>;
++ };
++
++ partition@c0000 {
++ label = "uboot environment";
++ reg = <0xc0000 0x40000>;
++ };
++
++ partition@100000 {
++ label = "reserved";
++ reg = <0x100000 0x100000>;
++ };
++ };
+ };
+
+ &fec {
+@@ -46,8 +101,31 @@
+ status = "okay";
+ };
+
++&i2c3 {
++ pinctrl-names = "default";
++ pinctrl-0 = <&pinctrl_i2c3>;
++ status = "okay";
++ clock-frequency = <100000>;
++
++ eeprom@50 {
++ compatible = "at24,24c02";
++ reg = <0x50>;
++ pagesize = <16>;
++ };
++};
++
+ &iomuxc {
+ imx6q-cm-fx6 {
++ pinctrl_ecspi1: ecspi1grp {
++ fsl,pins = <
++ MX6QDL_PAD_EIM_D16__ECSPI1_SCLK 0x100b1
++ MX6QDL_PAD_EIM_D17__ECSPI1_MISO 0x100b1
++ MX6QDL_PAD_EIM_D18__ECSPI1_MOSI 0x100b1
++ MX6QDL_PAD_EIM_EB2__GPIO2_IO30 0x100b1
++ MX6QDL_PAD_EIM_D19__GPIO3_IO19 0x100b1
++ >;
++ };
++
+ pinctrl_enet: enetgrp {
+ fsl,pins = <
+ MX6QDL_PAD_RGMII_RXC__RGMII_RXC 0x1b0b0
+@@ -91,17 +169,75 @@
+ >;
+ };
+
++ pinctrl_i2c3: i2c3grp {
++ fsl,pins = <
++ MX6QDL_PAD_GPIO_3__I2C3_SCL 0x4001b8b1
++ MX6QDL_PAD_GPIO_6__I2C3_SDA 0x4001b8b1
++ >;
++ };
++
++ pinctrl_pcie: pciegrp {
++ fsl,pins = <
++ MX6QDL_PAD_ENET_RXD1__GPIO1_IO26 0x80000000
++ MX6QDL_PAD_EIM_CS1__GPIO2_IO24 0x80000000
++ >;
++ };
++
+ pinctrl_uart4: uart4grp {
+ fsl,pins = <
+ MX6QDL_PAD_KEY_COL0__UART4_TX_DATA 0x1b0b1
MX6QDL_PAD_KEY_ROW0__UART4_RX_DATA 0x1b0b1
>;
};
+
-+ pinctrl_usdhc1: usdhc1grp {
++ pinctrl_usbh1: usbh1grp {
+ fsl,pins = <
-+ MX6QDL_PAD_SD1_CMD__SD1_CMD 0x17059
-+ MX6QDL_PAD_SD1_CLK__SD1_CLK 0x10059
-+ MX6QDL_PAD_SD1_DAT0__SD1_DATA0 0x17059
-+ MX6QDL_PAD_SD1_DAT1__SD1_DATA1 0x17059
-+ MX6QDL_PAD_SD1_DAT2__SD1_DATA2 0x17059
-+ MX6QDL_PAD_SD1_DAT3__SD1_DATA3 0x17059
++ MX6QDL_PAD_SD3_RST__GPIO7_IO08 0x80000000
+ >;
+ };
+
-+ pinctrl_usdhc3: usdhc3grp {
++ pinctrl_usbotg: usbotggrp {
+ fsl,pins = <
-+ MX6QDL_PAD_SD3_CMD__SD3_CMD 0x17059
-+ MX6QDL_PAD_SD3_CLK__SD3_CLK 0x10059
-+ MX6QDL_PAD_SD3_DAT0__SD3_DATA0 0x17059
-+ MX6QDL_PAD_SD3_DAT1__SD3_DATA1 0x17059
-+ MX6QDL_PAD_SD3_DAT2__SD3_DATA2 0x17059
-+ MX6QDL_PAD_SD3_DAT3__SD3_DATA3 0x17059
++ MX6QDL_PAD_ENET_RX_ER__USB_OTG_ID 0x17059
++ MX6QDL_PAD_EIM_D22__GPIO3_IO22 0x80000000
+ >;
+ };
};
};
++&pcie {
++ pinctrl-names = "default";
++ pinctrl-0 = <&pinctrl_pcie>;
++ reset-gpio = <&gpio1 26 0>;
++ power-on-gpio = <&gpio2 24 0>;
++ status = "okay";
++};
++
+&sata {
+ status = "okay";
+};
+
++&snvs_poweroff {
++ status = "okay";
++};
++
&uart4 {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_uart4>;
status = "okay";
};
+
-+&usdhc1 {
++&usbotg {
++ vbus-supply = <&reg_usb_otg_vbus>;
+ pinctrl-names = "default";
-+ pinctrl-0 = <&pinctrl_usdhc1>;
++ pinctrl-0 = <&pinctrl_usbotg>;
++ dr_mode = "otg";
+ status = "okay";
+};
+
-+&usdhc3 {
++&usbh1 {
++ vbus-supply = <&reg_usb_h1_vbus>;
+ pinctrl-names = "default";
-+ pinctrl-0 = <&pinctrl_usdhc3>;
++ pinctrl-0 = <&pinctrl_usbh1>;
+ status = "okay";
+};
+--
+2.8.2
+
diff --git a/freed-ora/current/master/arm64-acpi-drop-expert-patch.patch b/freed-ora/current/master/arm64-acpi-drop-expert-patch.patch
deleted file mode 100644
index 6122732d6..000000000
--- a/freed-ora/current/master/arm64-acpi-drop-expert-patch.patch
+++ /dev/null
@@ -1,21 +0,0 @@
-From: Peter Robinson <pbrobinson@gmail.com>
-Date: Sun, 3 May 2015 18:35:23 +0100
-Subject: [PATCH] arm64: acpi drop expert patch
-
----
- drivers/acpi/Kconfig | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/drivers/acpi/Kconfig b/drivers/acpi/Kconfig
-index 114cf48085ab..70ba3ef9a37b 100644
---- a/drivers/acpi/Kconfig
-+++ b/drivers/acpi/Kconfig
-@@ -5,7 +5,7 @@
- menuconfig ACPI
- bool "ACPI (Advanced Configuration and Power Interface) Support"
- depends on !IA64_HP_SIM
-- depends on IA64 || X86 || (ARM64 && EXPERT)
-+ depends on IA64 || X86 || ARM64
- depends on PCI
- select PNP
- default y
diff --git a/freed-ora/current/master/config-arm-generic b/freed-ora/current/master/config-arm-generic
index 5b03071db..4153f33c0 100644
--- a/freed-ora/current/master/config-arm-generic
+++ b/freed-ora/current/master/config-arm-generic
@@ -6,8 +6,12 @@ CONFIG_EARLY_PRINTK=y
CONFIG_SERIAL_EARLYCON_ARM_SEMIHOST=y
CONFIG_FB_SSD1307=m
CONFIG_HW_PERF_EVENTS=y
-CONFIG_NFS_FS=y
CONFIG_FORCE_MAX_ZONEORDER=11
+CONFIG_XZ_DEC_ARM=y
+CONFIG_XZ_DEC_ARMTHUMB=y
+
+CONFIG_SCHED_MC=y
+CONFIG_SCHED_SMT=y
CONFIG_CC_STACKPROTECTOR=y
@@ -53,7 +57,6 @@ CONFIG_ARM_GIC=y
CONFIG_ARM_GIC_V2M=y
CONFIG_ARM_GIC_V3=y
CONFIG_ARM_GIC_V3_ITS=y
-# CONFIG_HISILICON_IRQ_MBIGEN is not set
CONFIG_ARM_GLOBAL_TIMER=y
CONFIG_ARM_SMMU=y
CONFIG_MMC_ARMMMCI=y
@@ -66,6 +69,8 @@ CONFIG_PL330_DMA=m
CONFIG_GPIO_PL061=y
CONFIG_USB_ISP1760=m
CONFIG_ARM_PL172_MPMC=m
+CONFIG_DRM_HDLCD=m
+# CONFIG_DRM_HDLCD_SHOW_UNDERRUN is not set
# HW crypto and rng
CONFIG_ARM_CRYPTO=y
@@ -81,6 +86,15 @@ CONFIG_EDAC=y
CONFIG_EDAC_MM_EDAC=m
CONFIG_EDAC_LEGACY_SYSFS=y
+# Regulators
+CONFIG_REGULATOR=y
+CONFIG_RFKILL_REGULATOR=m
+CONFIG_REGULATOR_FIXED_VOLTAGE=y
+CONFIG_REGULATOR_VIRTUAL_CONSUMER=m
+CONFIG_REGULATOR_USERSPACE_CONSUMER=m
+CONFIG_REGULATOR_GPIO=m
+CONFIG_REGULATOR_PWM=m
+
# ARM VExpress
CONFIG_ARCH_VEXPRESS=y
CONFIG_MFD_VEXPRESS_SYSREG=y
@@ -97,6 +111,41 @@ CONFIG_CLKSRC_VERSATILE=y
CONFIG_POWER_RESET_VERSATILE=y
# CONFIG_ARM_CHARLCD is not set
+# Marvell EBU
+CONFIG_ARCH_MVEBU=y
+CONFIG_SERIAL_MVEBU_UART=y
+CONFIG_SERIAL_MVEBU_CONSOLE=y
+CONFIG_MVEBU_DEVBUS=y
+CONFIG_MVEBU_MBUS=y
+CONFIG_PCI_MVEBU=y
+CONFIG_PCIE_ARMADA_8K=y
+CONFIG_MV_XOR=y
+CONFIG_CRYPTO_DEV_MV_CESA=m
+CONFIG_CRYPTO_DEV_MARVELL_CESA=m
+CONFIG_ARMADA_THERMAL=m
+CONFIG_MMC_SDHCI_PXAV3=m
+CONFIG_MV643XX_ETH=m
+CONFIG_PINCTRL_MVEBU=y
+CONFIG_EDAC_MV64X60=m
+CONFIG_RTC_DRV_S35390A=m
+CONFIG_RTC_DRV_88PM80X=m
+CONFIG_RTC_DRV_ISL12057=m
+CONFIG_RTC_DRV_MV=m
+CONFIG_RTC_DRV_ARMADA38X=m
+CONFIG_MVNETA=m
+CONFIG_MVNETA_BM_ENABLE=m
+CONFIG_GPIO_MVEBU=y
+CONFIG_MVEBU_CLK_CORE=y
+CONFIG_MVEBU_CLK_COREDIV=y
+CONFIG_MMC_MVSDIO=m
+CONFIG_SPI_ORION=m
+CONFIG_USB_MV_UDC=m
+CONFIG_USB_XHCI_MVEBU=m
+CONFIG_PHY_MVEBU_SATA=y
+CONFIG_AHCI_MVEBU=m
+# CONFIG_CACHE_FEROCEON_L2 is not set
+# CONFIG_CACHE_FEROCEON_L2_WRITETHROUGH is not set
+
# Rockchips
CONFIG_ARCH_ROCKCHIP=y
CONFIG_I2C_RK3X=m
@@ -115,9 +164,11 @@ CONFIG_ROCKCHIP_SARADC=m
CONFIG_ROCKCHIP_IOMMU=y
CONFIG_ROCKCHIP_THERMAL=m
CONFIG_DRM_ROCKCHIP=m
+CONFIG_ROCKCHIP_ANALOGIX_DP=m
CONFIG_ROCKCHIP_DW_HDMI=m
-CONFIG_ROCKCHIP_DW_MIPI_DSI=y
+CONFIG_ROCKCHIP_DW_MIPI_DSI=m
CONFIG_ROCKCHIP_INNO_HDMI=m
+CONFIG_DRM_ANALOGIX_DP=m
CONFIG_PHY_ROCKCHIP_USB=m
CONFIG_DWMAC_ROCKCHIP=m
CONFIG_SND_SOC_ROCKCHIP=m
@@ -154,6 +205,8 @@ CONFIG_RTC_DRV_TEGRA=m
CONFIG_ARM_TEGRA_DEVFREQ=m
CONFIG_ARM_TEGRA124_CPUFREQ=m
CONFIG_TEGRA_SOCTHERM=m
+CONFIG_PHY_TEGRA_XUSB=m
+CONFIG_USB_XHCI_TEGRA=m
CONFIG_TEGRA_HOST1X=m
CONFIG_TEGRA_HOST1X_FIREWALL=y
@@ -166,6 +219,18 @@ CONFIG_SND_HDA_TEGRA=m
# CONFIG_ARM_TEGRA20_CPUFREQ is not set
# CONFIG_MFD_NVEC is not set
+# Qualcomm - Don't currently support IPQ router devices
+# CONFIG_IPQ_GCC_806X is not set
+# CONFIG_IPQ_LCC_806X is not set
+# CONFIG_IPQ_GCC_4019 is not set
+# CONFIG_PHY_QCOM_IPQ806X_SATA is not set
+# CONFIG_DWMAC_IPQ806X is not set
+# CONFIG_PINCTRL_IPQ8064 is not set
+# CONFIG_PINCTRL_IPQ4019 is not set
+# CONFIG_REGULATOR_QCOM_SPMI is not set
+# CONFIG_QCOM_SPMI_IADC is not set
+# CONFIG_QCOM_SPMI_VADC is not set
+
# Virt
CONFIG_PARAVIRT=y
CONFIG_PARAVIRT_TIME_ACCOUNTING=y
@@ -175,11 +240,23 @@ CONFIG_EFI_VARS=y
CONFIG_EFIVAR_FS=y
CONFIG_EFI_VARS_PSTORE=y
CONFIG_EFI_VARS_PSTORE_DEFAULT_DISABLE=y
+# CONFIG_EFI_BOOTLOADER_CONTROL is not set
+# CONFIG_EFI_CAPSULE_LOADER is not set
# Power management / thermal / cpu scaling
+CONFIG_PM_OPP=y
+CONFIG_ARM_PSCI=y
+CONFIG_THERMAL=y
+CONFIG_CLOCK_THERMAL=y
+CONFIG_CPUFREQ_DT=m
+CONFIG_CPUFREQ_DT_PLATDEV=y
+CONFIG_DEVFREQ_THERMAL=y
# CONFIG_ARM_CPUIDLE is not set
# CONFIG_ARM_DT_BL_CPUFREQ is not set
# CONFIG_ARM_BIG_LITTLE_CPUFREQ is not set
+CONFIG_SPMI=m
+CONFIG_MFD_SPMI_PMIC=m
+CONFIG_REGMAP_SPMI=m
# Device tree
CONFIG_DTC=y
@@ -359,6 +436,7 @@ CONFIG_MTD_OF_PARTS=m
# CONFIG_MTD_CFI_ADV_OPTIONS is not set
CONFIG_MTD_PHYSMAP=m
CONFIG_MTD_PHYSMAP_OF=m
+CONFIG_MTD_PHYSMAP_OF_VERSATILE=y
# CONFIG_MTD_PHYSMAP_COMPAT is not set
# CONFIG_MTD_LPDDR2_NVM is not set
@@ -386,6 +464,10 @@ CONFIG_PINCTRL=y
CONFIG_GENERIC_PINCONF=y
CONFIG_PINCTRL_SINGLE=y
+# gpio
+CONFIG_GPIO_PCA953X=y
+CONFIG_GPIO_PCA953X_IRQ=y
+
#i2c
CONFIG_I2C_ARB_GPIO_CHALLENGE=m
CONFIG_I2C_BOARDINFO=y
@@ -455,7 +537,6 @@ CONFIG_COMMON_CLK_SCPI=m
# CONFIG_ARM_PTDUMP is not set
# CONFIG_PATA_PLATFORM is not set
-# CONFIG_USB_ULPI is not set
# CONFIG_KEYBOARD_OMAP4 is not set
# CONFIG_KEYBOARD_BCM is not set
# CONFIG_PHY_SAMSUNG_USB2 is not set
@@ -465,7 +546,6 @@ CONFIG_COMMON_CLK_SCPI=m
# core
-# CONFIG_INFINIBAND is not set
# CONFIG_ISDN is not set
# CONFIG_PCMCIA is not set
# CONFIG_PARPORT is not set
@@ -500,8 +580,6 @@ CONFIG_NET_VENDOR_MELLANOX=y
# CONFIG_SCSI_3W_SAS is not set
# CONFIG_SCSI_PM8001 is not set
# CONFIG_SCSI_IPS is not set
-# CONFIG_SCSI_CXGB3_ISCSI is not set
-# CONFIG_SCSI_CXGB4_ISCSI is not set
# CONFIG_SCSI_BFA_FC is not set
# CONFIG_FUSION is not set
# CONFIG_SCSI_3W_9XXX is not set
@@ -517,10 +595,37 @@ CONFIG_NET_VENDOR_MELLANOX=y
# CONFIG_SERIAL_MAX310X is not set
# CONFIG_SERIAL_IFX6X60 is not set
+# regulator
+# CONFIG_REGULATOR_AD5398 is not set
+# CONFIG_REGULATOR_ANATOP is not set
+# CONFIG_REGULATOR_DA9210 is not set
+# CONFIG_REGULATOR_DA9211 is not set
+# CONFIG_REGULATOR_FAN53555 is not set
+# CONFIG_REGULATOR_ISL9305 is not set
+# CONFIG_REGULATOR_ISL6271A is not set
+# CONFIG_REGULATOR_LP3971 is not set
+# CONFIG_REGULATOR_LP3972 is not set
+# CONFIG_REGULATOR_LP872X is not set
+# CONFIG_REGULATOR_LP8755 is not set
+# CONFIG_REGULATOR_LTC3589 is not set
+# CONFIG_REGULATOR_MAX1586 is not set
+# CONFIG_REGULATOR_MAX8649 is not set
+# CONFIG_REGULATOR_MAX8660 is not set
+# CONFIG_REGULATOR_MAX8952 is not set
+# CONFIG_REGULATOR_MAX8973 is not set
+# CONFIG_REGULATOR_MT6311 is not set
+# CONFIG_REGULATOR_PFUZE100 is not set
+# CONFIG_REGULATOR_PV88060 is not set
+# CONFIG_REGULATOR_PV88080 is not set
+# CONFIG_REGULATOR_PV88090 is not set
+# CONFIG_REGULATOR_TPS51632 is not set
+# CONFIG_REGULATOR_TPS62360 is not set
+# CONFIG_REGULATOR_TPS65023 is not set
+# CONFIG_REGULATOR_TPS6507X is not set
+# CONFIG_REGULATOR_TPS6524X is not set
+
# drm
# CONFIG_DRM_VMWGFX is not set
-# CONFIG_DRM_MSM_DSI is not set
-# CONFIG_DRM_HDLCD is not set
# CONFIG_IMX_IPUV3_CORE is not set
# CONFIG_DEBUG_SET_MODULE_RONX is not set
@@ -537,3 +642,10 @@ CONFIG_CHECKPOINT_RESTORE=y
# CONFIG_PINCTRL_CHERRYVIEW is not set
# CONFIG_PINCTRL_BROXTON is not set
# CONFIG_PINCTRL_SUNRISEPOINT is not set
+
+# CONFIG_HW_RANDOM_HISI is not set
+# CONFIG_HISILICON_IRQ_MBIGEN is not set
+# CONFIG_QRTR is not set
+
+# This Xilinx option is now built for arm64 as well as ARM
+CONFIG_XILINX_VDMA=m
diff --git a/freed-ora/current/master/config-arm64 b/freed-ora/current/master/config-arm64
index e461c8cb2..60aa6cbbe 100644
--- a/freed-ora/current/master/config-arm64
+++ b/freed-ora/current/master/config-arm64
@@ -1,13 +1,9 @@
CONFIG_64BIT=y
CONFIG_ARM64=y
-CONFIG_SCHED_MC=y
-CONFIG_SCHED_SMT=y
-
-# CONFIG_CPU_BIG_ENDIAN is not set
-
# arm64 only SoCs
CONFIG_ARCH_HISI=y
+CONFIG_ARCH_QCOM=y
CONFIG_ARCH_SEATTLE=y
CONFIG_ARCH_SUNXI=y
CONFIG_ARCH_TEGRA=y
@@ -19,8 +15,6 @@ CONFIG_ARCH_XGENE=y
# CONFIG_ARCH_LAYERSCAPE is not set
# CONFIG_ARCH_MEDIATEK is not set
# CONFIG_ARCH_MESON is not set
-# CONFIG_ARCH_MVEBU is not set
-# CONFIG_ARCH_QCOM is not set
# CONFIG_ARCH_RENESAS is not set
# CONFIG_ARCH_SPRD is not set
# CONFIG_ARCH_STRATIX10 is not set
@@ -28,6 +22,7 @@ CONFIG_ARCH_XGENE=y
# CONFIG_ARCH_VULCAN is not set
# CONFIG_ARCH_ZYNQMP is not set
# CONFIG_ARCH_UNIPHIER is not set
+# CONFIG_ARCH_LG1K is not set
# Erratum
CONFIG_ARM64_ERRATUM_826319=y
@@ -78,6 +73,7 @@ CONFIG_HVC_DRIVER=y
CONFIG_HZ=100
CONFIG_KVM=y
+CONFIG_KVM_NEW_VGIC=y
CONFIG_RCU_FANOUT=64
CONFIG_SPARSE_IRQ=y
@@ -157,10 +153,17 @@ CONFIG_REGULATOR_HI655X=m
CONFIG_PHY_HI6220_USB=m
CONFIG_COMMON_RESET_HI6220=m
CONFIG_HI6220_MBOX=m
+CONFIG_RESET_HISI=y
+CONFIG_MFD_HI655X_PMIC=m
+CONFIG_DRM_HISI_KIRIN=m
+CONFIG_HISI_KIRIN_DW_DSI=m
# Tegra
CONFIG_ARCH_TEGRA_132_SOC=y
CONFIG_ARCH_TEGRA_210_SOC=y
+CONFIG_TEGRA210_ADMA=y
+CONFIG_MFD_MAX77620=y
+CONFIG_REGULATOR_MAX77620=m
# AllWinner
CONFIG_MACH_SUN50I=y
@@ -182,6 +185,66 @@ CONFIG_PWM_SUN4I=m
# CONFIG_PHY_SUN9I_USB is not set
CONFIG_NVMEM_SUNXI_SID=m
+# qcom
+# MSM8996 = SD-820, MSM8916 = SD-410
+CONFIG_SERIAL_MSM=y
+CONFIG_SERIAL_MSM_CONSOLE=y
+CONFIG_QCOM_GSBI=y
+CONFIG_PCIE_QCOM=y
+CONFIG_POWER_RESET_MSM=y
+CONFIG_MMC_SDHCI_MSM=m
+CONFIG_I2C_QUP=m
+CONFIG_SPI_QUP=m
+CONFIG_QCOM_WDT=m
+CONFIG_MFD_QCOM_RPM=m
+CONFIG_PINCTRL_MSM=y
+CONFIG_PINCTRL_MSM8916=y
+CONFIG_PINCTRL_MSM8996=y
+CONFIG_REGULATOR_QCOM_RPM=m
+CONFIG_REGULATOR_QCOM_SMD_RPM=m
+CONFIG_QCOM_BAM_DMA=y
+CONFIG_HWSPINLOCK_QCOM=m
+CONFIG_HW_RANDOM_MSM=m
+CONFIG_CRYPTO_DEV_QCE=m
+CONFIG_RTC_DRV_PM8XXX=m
+CONFIG_QCOM_QFPROM=m
+CONFIG_QCOM_SMEM=m
+CONFIG_QCOM_SMP2P=m
+CONFIG_QCOM_SMSM=m
+CONFIG_QCOM_SMD=m
+CONFIG_QCOM_SMD_RPM=m
+CONFIG_PINCTRL_QCOM_SPMI_PMIC=m
+CONFIG_REGULATOR_QCOM_SPMI=m
+CONFIG_QCOM_SPMI_TEMP_ALARM=m
+CONFIG_QCOM_SPMI_IADC=m
+CONFIG_QCOM_SPMI_VADC=m
+CONFIG_SPMI_MSM_PMIC_ARB=m
+CONFIG_USB_QCOM_8X16_PHY=m
+CONFIG_USB_EHCI_MSM=m
+CONFIG_USB_CHIPIDEA=m
+CONFIG_USB_CHIPIDEA_UDC=y
+CONFIG_USB_CHIPIDEA_HOST=y
+CONFIG_USB_MSM_OTG=m
+CONFIG_DRM_MSM=m
+# CONFIG_DRM_MSM_DSI is not set
+CONFIG_DRM_MSM_HDMI_HDCP=y
+# CONFIG_DRM_MSM_REGISTER_LOGGING is not set
+CONFIG_QCOM_WCNSS_CTRL=m
+CONFIG_QCOM_COINCELL=m
+# CONFIG_PHY_QCOM_APQ8064_SATA is not set
+# CONFIG_PHY_QCOM_UFS is not set
+# CONFIG_PINCTRL_QCOM_SSBI_PMIC is not set
+# CONFIG_PINCTRL_APQ8064 is not set
+# CONFIG_PINCTRL_APQ8084 is not set
+# CONFIG_PINCTRL_MSM8660 is not set
+# CONFIG_PINCTRL_MSM8960 is not set
+# CONFIG_PINCTRL_MSM8X74 is not set
+# CONFIG_PINCTRL_QDF2XXX is not set
+# CONFIG_INPUT_PM8941_PWRKEY is not set
+# CONFIG_INPUT_REGULATOR_HAPTIC is not set
+# CONFIG_CHARGER_MANAGER is not set
+# CONFIG_SENSORS_LTC2978_REGULATOR is not set
+
# ThunderX
# CONFIG_MDIO_OCTEON is not set
# CONFIG_MDIO_THUNDER is not set
@@ -222,3 +285,7 @@ CONFIG_DEBUG_SECTION_MISMATCH=y
# CONFIG_FUJITSU_ES is not set
# CONFIG_IMX_THERMAL is not set
# CONFIG_PNP_DEBUG_MESSAGES is not set
+
+# Will probably need to be changed later
+# CONFIG_NUMA is not set
+
diff --git a/freed-ora/current/master/config-armv7 b/freed-ora/current/master/config-armv7
index bcf054c3e..44685c2fd 100644
--- a/freed-ora/current/master/config-armv7
+++ b/freed-ora/current/master/config-armv7
@@ -21,11 +21,12 @@ CONFIG_ARCH_OMAP2PLUS_TYPICAL=y
CONFIG_SOC_OMAP5=y
# CONFIG_SOC_DRA7XX is not set
CONFIG_SOC_OMAP3430=y
-# CONFIG_SOC_TI81XX is not set
+CONFIG_SOC_TI81XX=y
# CONFIG_MACH_NOKIA_RX51 is not set
# CONFIG_MACH_OMAP_LDP is not set
# CONFIG_MACH_OMAP3517EVM is not set
# CONFIG_MACH_OMAP3_PANDORA is not set
+CONFIG_OMAP5_ERRATA_801819=y
CONFIG_SOC_HAS_REALTIME_COUNTER=y
CONFIG_OMAP_RESET_CLOCKS=y
@@ -72,6 +73,8 @@ CONFIG_TWL4030_USB=m
CONFIG_TWL6030_USB=m
CONFIG_TWL6040_CORE=y
CONFIG_CLK_TWL6040=m
+# DM814x such as hp-t410
+CONFIG_COMMON_CLK_TI_ADPLL=m
CONFIG_OMAP_INTERCONNECT=m
CONFIG_MFD_OMAP_USB_HOST=y
CONFIG_HDQ_MASTER_OMAP=m
@@ -277,7 +280,6 @@ CONFIG_SERIAL_MSM=y
CONFIG_SERIAL_MSM_CONSOLE=y
CONFIG_PINCTRL_APQ8064=m
CONFIG_PINCTRL_APQ8084=m
-CONFIG_PINCTRL_IPQ8064=m
CONFIG_PINCTRL_MSM8660=m
CONFIG_PINCTRL_MSM8960=m
CONFIG_PINCTRL_MSM8X74=m
@@ -286,7 +288,6 @@ CONFIG_PINCTRL_QCOM_SPMI_PMIC=m
CONFIG_PINCTRL_QCOM_SSBI_PMIC=m
CONFIG_COMMON_CLK_QCOM=m
# CONFIG_MSM_GCC_8916 is not set
-# CONFIG_IPQ_LCC_806X is not set
# CONFIG_MSM_LCC_8960 is not set
CONFIG_MFD_QCOM_RPM=m
CONFIG_MFD_PM8921_CORE=m
@@ -294,8 +295,6 @@ CONFIG_REGULATOR_QCOM_RPM=m
CONFIG_REGULATOR_QCOM_SPMI=m
CONFIG_APQ_GCC_8084=m
CONFIG_APQ_MMCC_8084=m
-CONFIG_IPQ_GCC_806X=m
-CONFIG_IPQ_GCC_4019=m
CONFIG_MSM_GCC_8660=m
CONFIG_MSM_GCC_8960=m
CONFIG_MSM_MMCC_8960=m
@@ -314,10 +313,12 @@ CONFIG_QCOM_BAM_DMA=m
CONFIG_QCOM_GSBI=m
CONFIG_QCOM_PM=y
CONFIG_PHY_QCOM_APQ8064_SATA=m
-CONFIG_PHY_QCOM_IPQ806X_SATA=m
-CONFIG_DWMAC_IPQ806X=m
+CONFIG_USB_DWC3_QCOM=m
CONFIG_CRYPTO_DEV_QCE=m
CONFIG_DRM_MSM=m
+# CONFIG_DRM_MSM_DSI is not set
+CONFIG_DRM_MSM_HDMI_HDCP=y
+# CONFIG_DRM_MSM_REGISTER_LOGGING is not set
CONFIG_USB_EHCI_MSM=m
CONFIG_MFD_PM8XXX=m
CONFIG_KEYBOARD_PMIC8XXX=m
@@ -325,10 +326,7 @@ CONFIG_INPUT_PM8XXX_VIBRATOR=m
CONFIG_INPUT_PMIC8XXX_PWRKEY=m
CONFIG_INPUT_PM8941_PWRKEY=m
CONFIG_RTC_DRV_PM8XXX=m
-# CONFIG_DRM_MSM_REGISTER_LOGGING is not set
CONFIG_QCOM_WDT=m
-CONFIG_MFD_SPMI_PMIC=m
-CONFIG_SPMI=m
CONFIG_SPMI_MSM_PMIC_ARB=m
CONFIG_QCOM_SPMI_IADC=m
CONFIG_QCOM_SPMI_VADC=m
@@ -368,6 +366,7 @@ CONFIG_SOC_IMX7D=y
CONFIG_ARM_IMX6Q_CPUFREQ=m
CONFIG_POWER_RESET_IMX=y
CONFIG_PCI_IMX6=y
+CONFIG_IMX_GPCV2=y
CONFIG_IMX_THERMAL=m
CONFIG_IMX_SDMA=m
CONFIG_IMX_DMA=m
@@ -415,6 +414,7 @@ CONFIG_CRYPTO_DEV_FSL_CAAM_AHASH_API=m
CONFIG_CRYPTO_DEV_FSL_CAAM_RNG_API=m
# CONFIG_CRYPTO_DEV_FSL_CAAM_DEBUG is not set
# CONFIG_CRYPTO_DEV_MXS_DCP is not set
+# CONFIG_CRYPTO_DEV_MXC_SCC is not set
CONFIG_RTC_DRV_SNVS=m
CONFIG_FB_MXS=m
# CONFIG_FB_MX3 is not set
@@ -586,7 +586,6 @@ CONFIG_SPI_CADENCE=m
CONFIG_I2C_CADENCE=m
CONFIG_XILINX_WATCHDOG=m
CONFIG_XILINX_XADC=m
-CONFIG_XILINX_VDMA=m
CONFIG_SND_SOC_ADI=m
CONFIG_SND_SOC_ADI_AXI_I2S=m
CONFIG_SND_SOC_ADI_AXI_SPDIF=m
diff --git a/freed-ora/current/master/config-armv7-generic b/freed-ora/current/master/config-armv7-generic
index ed26d946e..063b57e11 100644
--- a/freed-ora/current/master/config-armv7-generic
+++ b/freed-ora/current/master/config-armv7-generic
@@ -30,11 +30,11 @@ CONFIG_ATAGS=y
CONFIG_ATAGS_PROC=y
CONFIG_ZBOOT_ROM_TEXT=0x0
CONFIG_ZBOOT_ROM_BSS=0x0
-CONFIG_XZ_DEC_ARMTHUMB=y
CONFIG_ARCH_HAS_TICK_BROADCAST=y
CONFIG_IRQ_CROSSBAR=y
CONFIG_IOMMU_IO_PGTABLE_LPAE=y
CONFIG_CPU_SW_DOMAIN_PAN=y
+CONFIG_ARM_CPU_SUSPEND=y
# CONFIG_MCPM is not set
# CONFIG_OABI_COMPAT is not set
@@ -138,22 +138,9 @@ CONFIG_HIGHMEM=y
CONFIG_CC_OPTIMIZE_FOR_SIZE=y
# CONFIG_ARM_MODULE_PLTS is not set
-CONFIG_SCHED_MC=y
-CONFIG_SCHED_SMT=y
-
CONFIG_RCU_FANOUT=32
-CONFIG_CHECKPOINT_RESTORE=y
-
-# Power management / thermal / cpu scaling
-CONFIG_PM_OPP=y
-CONFIG_ARM_CPU_SUSPEND=y
-CONFIG_ARM_PSCI=y
-CONFIG_THERMAL=y
-CONFIG_CLOCK_THERMAL=y
-# CONFIG_DEVFREQ_THERMAL is not set
-CONFIG_CPUFREQ_DT=m
-# CONFIG_ARM_BIG_LITTLE_CPUFREQ is not set
+# Dynamic Voltage and Frequency Scaling
CONFIG_PM_DEVFREQ=y
CONFIG_PM_DEVFREQ_EVENT=y
CONFIG_DEVFREQ_GOV_SIMPLE_ONDEMAND=y
@@ -164,9 +151,8 @@ CONFIG_DEVFREQ_GOV_USERSPACE=y
CONFIG_DEFAULT_MMAP_MIN_ADDR=32768
CONFIG_LSM_MMAP_MIN_ADDR=32768
-CONFIG_XZ_DEC_ARM=y
-
# CONFIG_PCI_LAYERSCAPE is not set
+
# Do NOT enable this, it breaks stuff and makes things go slow
# CONFIG_UACCESS_WITH_MEMCPY is not set
@@ -209,6 +195,7 @@ CONFIG_MACH_SUN8I=y
CONFIG_SUNXI_SRAM=y
CONFIG_DMA_SUN4I=m
CONFIG_DMA_SUN6I=m
+CONFIG_DRM_SUN4I=m
CONFIG_SUNXI_WATCHDOG=m
CONFIG_NET_VENDOR_ALLWINNER=y
CONFIG_RTC_DRV_SUNXI=m
@@ -219,7 +206,6 @@ CONFIG_SPI_SUN4I=m
CONFIG_SPI_SUN6I=m
CONFIG_MMC_SUNXI=m
CONFIG_I2C_SUN6I_P2WI=m
-CONFIG_GPIO_PCA953X=m
CONFIG_GPIO_PCF857X=m
CONFIG_TOUCHSCREEN_SUN4I=m
CONFIG_MFD_AXP20X=y
@@ -285,8 +271,10 @@ CONFIG_SERIAL_SAMSUNG_CONSOLE=y
CONFIG_ARM_EXYNOS5440_CPUFREQ=m
# CONFIG_ARM_EXYNOS_CPUIDLE is not set
CONFIG_ARM_EXYNOS5_BUS_DEVFREQ=m
+# CONFIG_ARM_EXYNOS_BUS_DEVFREQ is not set
# CONFIG_EXYNOS5420_MCPM not set
CONFIG_DEVFREQ_EVENT_EXYNOS_PPMU=y
+# CONFIG_DEVFREQ_EVENT_EXYNOS_NOCP is not set
CONFIG_I2C_EXYNOS5=m
CONFIG_I2C_S3C2410=m
@@ -407,7 +395,6 @@ CONFIG_TI_THERMAL=y
CONFIG_MMC_OMAP_HS=m
# mvebu
-CONFIG_ARCH_MVEBU=y
CONFIG_MACH_ARMADA_370=y
CONFIG_MACH_ARMADA_375=y
CONFIG_MACH_ARMADA_38X=y
@@ -415,45 +402,18 @@ CONFIG_MACH_ARMADA_39X=y
CONFIG_MACH_ARMADA_XP=y
CONFIG_MACH_DOVE=y
-CONFIG_MVEBU_DEVBUS=y
-CONFIG_PCI_MVEBU=y
CONFIG_CACHE_TAUROS2=y
-CONFIG_MV_XOR=y
-CONFIG_CRYPTO_DEV_MV_CESA=m
-CONFIG_CRYPTO_DEV_MARVELL_CESA=m
-CONFIG_MV643XX_ETH=m
-CONFIG_PINCTRL_MVEBU=y
CONFIG_PINCTRL_ARMADA_370=y
CONFIG_PINCTRL_ARMADA_XP=y
# CONFIG_ARM_MVEBU_V7_CPUIDLE is not set
CONFIG_PINCTRL_DOVE=y
-CONFIG_EDAC_MV64X60=m
-CONFIG_RTC_DRV_S35390A=m
-CONFIG_RTC_DRV_88PM80X=m
-CONFIG_RTC_DRV_ISL12057=m
-CONFIG_RTC_DRV_MV=m
-CONFIG_RTC_DRV_ARMADA38X=m
-CONFIG_MVNETA=m
-CONFIG_MVNETA_BM_ENABLE=m
-CONFIG_GPIO_MVEBU=y
-CONFIG_MVEBU_CLK_CORE=y
-CONFIG_MVEBU_CLK_COREDIV=y
-CONFIG_MMC_MVSDIO=m
CONFIG_MMC_SDHCI_DOVE=m
-CONFIG_SPI_ORION=m
-CONFIG_USB_MV_UDC=m
-CONFIG_MVEBU_MBUS=y
-CONFIG_USB_XHCI_MVEBU=m
-CONFIG_PHY_MVEBU_SATA=y
-CONFIG_AHCI_MVEBU=m
-CONFIG_ARMADA_THERMAL=m
CONFIG_DOVE_THERMAL=m
CONFIG_DRM_ARMADA=m
CONFIG_ORION_WATCHDOG=m
CONFIG_SND_KIRKWOOD_SOC=m
CONFIG_SND_KIRKWOOD_SOC_ARMADA370_DB=m
CONFIG_USB_EHCI_HCD_ORION=m
-CONFIG_MMC_SDHCI_PXAV3=m
CONFIG_MVPP2=m
CONFIG_COMMON_CLK_SI5351=m
CONFIG_RTC_DRV_ARMADA38X=m
@@ -462,6 +422,7 @@ CONFIG_RTC_DRV_ARMADA38X=m
CONFIG_LEDS_NS2=m
CONFIG_SERIAL_MVEBU_UART=y
# CONFIG_SERIAL_MVEBU_CONSOLE is not set
+# CONFIG_PCIE_ARMADA_8K is not set
# DRM panels
CONFIG_DRM_PANEL=y
@@ -477,7 +438,6 @@ CONFIG_DRM_DW_HDMI_AHB_AUDIO=m
# regmap
CONFIG_REGMAP_SPI=m
-CONFIG_REGMAP_SPMI=m
CONFIG_REGMAP_MMIO=m
CONFIG_REGMAP_IRQ=y
@@ -513,11 +473,9 @@ CONFIG_MFD_TPS65912_SPI=y
# CONFIG_PINCTRL_BCM281XX is not set
# CONFIG_PINCTRL_APQ8064 is not set
# CONFIG_PINCTRL_APQ8084 is not set
-# CONFIG_PINCTRL_IPQ8064 is not set
# CONFIG_PINCTRL_MSM8960 is not set
# CONFIG_PINCTRL_MSM8660 is not set
# CONFIG_PINCTRL_MSM8996 is not set
-# CONFIG_PINCTRL_IPQ4019 is not set
# GPIO
# CONFIG_GPIO_EM is not set
@@ -591,7 +549,6 @@ CONFIG_RTC_DRV_DS1390=m
CONFIG_RTC_DRV_M41T93=m
CONFIG_RTC_DRV_M41T94=m
CONFIG_RTC_DRV_MAX6902=m
-CONFIG_RTC_DRV_PCF2123=m
CONFIG_RTC_DRV_R9701=m
CONFIG_RTC_DRV_RS5C348=m
CONFIG_RTC_DRV_RX4581=m
@@ -603,12 +560,6 @@ CONFIG_RTC_DRV_TPS80031=m
# CONFIG_RTC_DRV_XGENE is not set
# Regulators
-CONFIG_REGULATOR=y
-CONFIG_RFKILL_REGULATOR=m
-CONFIG_REGULATOR_FIXED_VOLTAGE=y
-CONFIG_REGULATOR_VIRTUAL_CONSUMER=m
-CONFIG_REGULATOR_USERSPACE_CONSUMER=m
-CONFIG_REGULATOR_GPIO=m
# CONFIG_REGULATOR_ACT8865 is not set
CONFIG_REGULATOR_AD5398=m
CONFIG_REGULATOR_DA9210=m
@@ -642,8 +593,8 @@ CONFIG_REGULATOR_ANATOP=m
CONFIG_REGULATOR_DA9211=m
CONFIG_REGULATOR_ISL9305=m
CONFIG_REGULATOR_MAX77802=m
-CONFIG_REGULATOR_PWM=m
# CONFIG_REGULATOR_MT6311 is not set
+# CONFIG_REGULATOR_PV88080 is not set
CONFIG_SENSORS_LTC2978_REGULATOR=y
CONFIG_POWER_AVS=y
@@ -758,7 +709,6 @@ CONFIG_CROS_EC_PROTO=y
# This newly introduced mess needs to be fixed upstream :-(
CONFIG_STMMAC_PLATFORM=m
CONFIG_DWMAC_GENERIC=m
-# CONFIG_DWMAC_IPQ806X is not set
# CONFIG_DWMAC_LPC18XX is not set
# CONFIG_DWMAC_MESON is not set
# CONFIG_DWMAC_SOCFPGA is not set
@@ -804,6 +754,7 @@ CONFIG_R8188EU=m
# CONFIG_SERIAL_IFX6X60 is not set
# CONFIG_SERIAL_BCM63XX is not set
# CONFIG_SERIAL_STM32 is not set
+# CONFIG_SERIAL_MPS2_UART is not set
# CONFIG_FB_XILINX is not set
# CONFIG_BRCMSTB_GISB_ARB is not set
# CONFIG_SUNGEM is not set
diff --git a/freed-ora/current/master/config-armv7-lpae b/freed-ora/current/master/config-armv7-lpae
index 96d49e88a..178d36e8f 100644
--- a/freed-ora/current/master/config-armv7-lpae
+++ b/freed-ora/current/master/config-armv7-lpae
@@ -25,8 +25,20 @@ CONFIG_CMA_SIZE_MBYTES=64
CONFIG_ARM_ERRATA_798181=y
CONFIG_ARM_ERRATA_773022=y
+# Little.BIG
+CONFIG_BIG_LITTLE=y
+CONFIG_BL_SWITCHER=y
+CONFIG_EXYNOS5420_MCPM=y
+CONFIG_ARCH_VEXPRESS_DCSCB=y
+CONFIG_ARCH_VEXPRESS_TC2_PM=y
+CONFIG_ARM_BIG_LITTLE_CPUFREQ=m
+CONFIG_ARM_SCPI_CPUFREQ=m
+CONFIG_ARM_VEXPRESS_SPC_CPUFREQ=m
+# CONFIG_BL_SWITCHER_DUMMY_IF is not set
+
CONFIG_KVM=y
CONFIG_KVM_ARM_HOST=y
+CONFIG_KVM_NEW_VGIC=y
# CONFIG_XEN is not set
CONFIG_XEN_FBDEV_FRONTEND=y
diff --git a/freed-ora/current/master/config-debug b/freed-ora/current/master/config-debug
index b6313babc..a31d9076c 100644
--- a/freed-ora/current/master/config-debug
+++ b/freed-ora/current/master/config-debug
@@ -25,6 +25,7 @@ CONFIG_FAULT_INJECTION_DEBUG_FS=y
CONFIG_FAULT_INJECTION_STACKTRACE_FILTER=y
CONFIG_FAIL_IO_TIMEOUT=y
CONFIG_FAIL_MMC_REQUEST=y
+# CONFIG_F2FS_FAULT_INJECTION is not set
CONFIG_LOCK_STAT=y
@@ -126,3 +127,5 @@ CONFIG_MAC80211_MESSAGE_TRACING=y
CONFIG_EDAC_DEBUG=y
CONFIG_SPI_DEBUG=y
+
+CONFIG_DEBUG_VM_PGFLAGS=y
diff --git a/freed-ora/current/master/config-generic b/freed-ora/current/master/config-generic
index d94572f5b..c31c74859 100644
--- a/freed-ora/current/master/config-generic
+++ b/freed-ora/current/master/config-generic
@@ -111,6 +111,7 @@ CONFIG_HOTPLUG_PCI=y
# CONFIG_HOTPLUG_PCI_SHPC is not set
CONFIG_HOTPLUG_PCI_PCIE=y
# CONFIG_PCIE_DW_PLAT is not set
+CONFIG_PCIE_DPC=m
# CONFIG_SGI_IOC4 is not set
@@ -214,7 +215,8 @@ CONFIG_BINFMT_MISC=m
# CONFIG_COMMON_CLK_CS2000_CP is not set
# CONFIG_COMMON_CLK_PWM is not set
# CONFIG_COMMON_CLK_CDCE925 is not set
-#
+# CONFIG_COMMON_CLK_OXNAS is not set
+# CONFIG_COMMON_CLK_HI3519 is not set
#
# Generic Driver Options
@@ -237,6 +239,7 @@ CONFIG_REGMAP_I2C=m
# CONFIG_CMA is not set
# CONFIG_DMA_CMA is not set
# CONFIG_FENCE_TRACE is not set
+# CONFIG_SYNC_FILE is not set
# CONFIG_SPI is not set
# CONFIG_SPI_ALTERA is not set
@@ -570,6 +573,7 @@ CONFIG_SCSI_WD719X=m
CONFIG_SCSI_DEBUG=m
CONFIG_SCSI_QLA_FC=m
CONFIG_TCM_QLA2XXX=m
+# CONFIG_TCM_QLA2XXX_DEBUG is not set
CONFIG_SCSI_QLA_ISCSI=m
CONFIG_SCSI_IPR=m
CONFIG_SCSI_IPR_TRACE=y
@@ -595,6 +599,7 @@ CONFIG_ATA_BMDMA=y
CONFIG_ATA_VERBOSE_ERROR=y
CONFIG_ATA_SFF=y
CONFIG_ATA_PIIX=y
+# CONFIG_SATA_DWC is not set
# CONFIG_SATA_HIGHBANK is not set
CONFIG_ATA_ACPI=y
CONFIG_BLK_DEV_SX8=m
@@ -813,6 +818,7 @@ CONFIG_NET_IPVTI=m
CONFIG_NET_FOU=m
CONFIG_NET_FOU_IP_TUNNELS=y
CONFIG_GENEVE=m
+CONFIG_GTP=m
CONFIG_MACSEC=m
CONFIG_INET_AH=m
CONFIG_INET_ESP=m
@@ -1413,7 +1419,6 @@ CONFIG_NET_VENDOR_AMD=y
CONFIG_PCNET32=m
CONFIG_AMD8111_ETH=m
CONFIG_PCMCIA_NMCLAN=m
-# CONFIG_AMD_XGBE is not set
CONFIG_NET_VENDOR_ARC=y
CONFIG_ARC_EMAC=m
@@ -1565,6 +1570,10 @@ CONFIG_QLGE=m
CONFIG_NETXEN_NIC=m
CONFIG_QED=m
CONFIG_QEDE=m
+CONFIG_QED_SRIOV=y
+# CONFIG_QEDE_VXLAN is not set
+# CONFIG_QEDE_GENEVE is not set
+
# CONFIG_NET_VENDOR_QUALCOMM is not set
@@ -1634,6 +1643,7 @@ CONFIG_VIA_VELOCITY=m
CONFIG_NET_VENDOR_WIZNET=y
CONFIG_WIZNET_W5100=m
CONFIG_WIZNET_W5300=m
+CONFIG_WIZNET_W5100_SPI=m
CONFIG_NET_VENDOR_XIRCOM=y
CONFIG_PCMCIA_XIRC2PS=m
@@ -1714,6 +1724,7 @@ CONFIG_MLXSW_CORE_HWMON=y
CONFIG_MLXSW_PCI=m
CONFIG_MLXSW_SWITCHX2=m
CONFIG_MLXSW_SPECTRUM=m
+CONFIG_MLXSW_SPECTRUM_DCB=y
# CONFIG_MLX4_DEBUG is not set
# CONFIG_SFC is not set
@@ -2107,6 +2118,8 @@ CONFIG_NFC_PORT100=m
CONFIG_NFC_PN544=m
CONFIG_NFC_PN544_I2C=m
CONFIG_NFC_PN533=m
+CONFIG_NFC_PN533_USB=m
+CONFIG_NFC_PN533_I2C=m
CONFIG_NFC_MICROREAD=m
CONFIG_NFC_MICROREAD_I2C=m
CONFIG_NFC_TRF7970A=m
@@ -2564,6 +2577,7 @@ CONFIG_INPUT_MMA8450=m
CONFIG_INPUT_MPU3050=m
CONFIG_INPUT_KXTJ9=m
# CONFIG_INPUT_KXTJ9_POLLED_MODE is not set
+# CONFIG_INPUT_PWM_BEEPER is not set
CONFIG_RMI4_CORE=m
CONFIG_RMI4_I2C=m
@@ -2626,7 +2640,6 @@ CONFIG_CYCLADES=m
# CONFIG_CYZ_INTR is not set
# CONFIG_MOXA_INTELLIO is not set
# CONFIG_MOXA_SMARTIO is not set
-# CONFIG_SERIAL_MVEBU_UART is not set
# CONFIG_ISI is not set
# CONFIG_RIO is not set
CONFIG_SERIAL_JSM=m
@@ -2810,6 +2823,7 @@ CONFIG_SENSORS_LTC4260=m
CONFIG_SENSORS_MAX1619=m
CONFIG_SENSORS_MAX6650=m
CONFIG_SENSORS_MAX6697=m
+CONFIG_SENSORS_MAX31722=m
CONFIG_SENSORS_MCP3021=m
CONFIG_SENSORS_NCT6775=m
CONFIG_SENSORS_NCT6683=m
@@ -3001,6 +3015,8 @@ CONFIG_ACPI_ALS=m
# CONFIG_AD5421 is not set
# CONFIG_AD5449 is not set
# CONFIG_AD5504 is not set
+# CONFIG_AD5592R is not set
+# CONFIG_AD5593R is not set
# CONFIG_AD5624R_SPI is not set
# CONFIG_AD5686 is not set
# CONFIG_AD5755 is not set
@@ -3063,6 +3079,18 @@ CONFIG_PA12203001=m
# CONFIG_TSYS02D is not set
# CONFIG_HI8435 is not set
# CONFIG_IMX7D_ADC is not set
+# CONFIG_AM2315 is not set
+# CONFIG_BMI160_I2C is not set
+# CONFIG_BMI160_SPI is not set
+# CONFIG_BH1780 is not set
+# CONFIG_MAX44000 is not set
+# CONFIG_VEML6070 is not set
+# CONFIG_BMC150_MAGN_I2C is not set
+# CONFIG_BMC150_MAGN_SPI is not set
+# CONFIG_DS1803 is not set
+# CONFIG_MCP4131 is not set
+# CONFIG_HP03 is not set
+# CONFIG_HP206C is not set
# staging IIO drivers
# CONFIG_AD7291 is not set
@@ -3289,10 +3317,10 @@ CONFIG_RTC_DRV_PCF85063=m
# CONFIG_RTC_DRV_HID_SENSOR_TIME is not set
# CONFIG_RTC_DRV_MOXART is not set
# CONFIG_RTC_DRV_ISL12057 is not set
-# CONFIG_RTC_DRV_XGENE is not set
# CONFIG_RTC_DRV_ABB5ZES3 is not set
# CONFIG_RTC_DRV_ZYNQMP is not set
# CONFIG_RTC_DRV_RV8803 is not set
+# CONFIG_RTC_DRV_DS1302 is not set
CONFIG_R3964=m
# CONFIG_APPLICOM is not set
@@ -3318,6 +3346,8 @@ CONFIG_VGA_ARB_MAX_GPUS=16
CONFIG_DRM=m
+CONFIG_DRM_ANALOGIX_ANX78XX=m
+# CONFIG_DRM_ARCPGU is not set
CONFIG_DRM_DP_AUX_CHARDEV=y
CONFIG_DRM_FBDEV_EMULATION=y
CONFIG_DRM_LOAD_EDID_FIRMWARE=y
@@ -3331,6 +3361,7 @@ CONFIG_DRM_AMDGPU=m
CONFIG_DRM_AMD_ACP=y
# CONFIG_DRM_AMDGPU_CIK is not set
CONFIG_DRM_AMDGPU_USERPTR=y
+# CONFIG_DRM_AMDGPU_GART_DEBUGFS is not set
CONFIG_DRM_AMD_POWERPLAY=y
# CONFIG_DRM_I810 is not set
# CONFIG_DRM_MGA is not set
@@ -3481,6 +3512,9 @@ CONFIG_VIDEO_TM6000_DVB=m
# CONFIG_VIDEO_VIVID is not set
CONFIG_VIDEO_USBTV=m
# CONFIG_VIDEO_AU0828_RC is not set
+CONFIG_VIDEO_TW686X=m
+# Staging version?
+# CONFIG_VIDEO_TW686X_KH is not set
CONFIG_USB_VIDEO_CLASS=m
CONFIG_USB_VIDEO_CLASS_INPUT_EVDEV=y
@@ -4101,6 +4135,7 @@ CONFIG_HID_LENOVO=m
CONFIG_HID_CORSAIR=m
CONFIG_HID_GFRM=m
CONFIG_HID_CMEDIA=m
+CONFIG_HID_ASUS=m
#
# USB Imaging devices
@@ -4344,6 +4379,7 @@ CONFIG_USB_EZUSB_FX2=m
CONFIG_USB_HSIC_USB3503=m
# CONFIG_USB_LINK_LAYER_TEST is not set
CONFIG_USB_CHAOSKEY=m
+CONFIG_UCSI=m
CONFIG_USB_LCD=m
CONFIG_USB_LD=m
CONFIG_USB_LEGOTOWER=m
@@ -4406,80 +4442,90 @@ CONFIG_MFD_SM501=m
CONFIG_MFD_SM501_GPIO=y
CONFIG_MFD_RTSX_PCI=m
CONFIG_MFD_RTSX_USB=m
-# CONFIG_MFD_TI_AM335X_TSCADC is not set
CONFIG_MFD_VIPERBOARD=m
-# CONFIG_MFD_RETU is not set
-# CONFIG_MFD_TC6393XB is not set
-# CONFIG_MFD_WM8400 is not set
-# CONFIG_MFD_WM8350_I2C is not set
-# CONFIG_MFD_WM8350 is not set
-# CONFIG_MFD_WM831X is not set
# CONFIG_AB3100_OTP is not set
-# CONFIG_MFD_TIMBERDALE is not set
-# CONFIG_MFD_WM8994 is not set
-# CONFIG_MFD_88PM860X is not set
-# CONFIG_LPC_SCH is not set
-# CONFIG_LPC_ICH is not set
-# CONFIG_HTC_I2CPLD is not set
-# CONFIG_MFD_MAX8925 is not set
-# CONFIG_MFD_ASIC3 is not set
-# CONFIG_MFD_AS3722 is not set
-# CONFIG_HTC_EGPIO is not set
-# CONFIG_TPS6507X is not set
# CONFIG_ABX500_CORE is not set
-# CONFIG_MFD_RDC321X is not set
-# CONFIG_MFD_JANZ_CMODIO is not set
-# CONFIG_MFD_KEMPLD is not set
-# CONFIG_MFD_WM831X_I2C is not set
-# CONFIG_MFD_CS5535 is not set
-# CONFIG_MFD_STMPE is not set
-# CONFIG_MFD_MAX8998 is not set
-# CONFIG_MFD_MT6397 is not set
-# CONFIG_MFD_TPS6586X is not set
-# CONFIG_MFD_TC3589X is not set
-# CONFIG_MFD_WL1273_CORE is not set
-# CONFIG_MFD_TPS65217 is not set
-# CONFIG_MFD_LM3533 is not set
-# CONFIG_MFD_MC13XXX_I2C is not set
-# CONFIG_MFD_ARIZONA is not set
+# CONFIG_EZX_PCAP is not set
+# CONFIG_HTC_EGPIO is not set
+# CONFIG_HTC_I2CPLD is not set
+# CONFIG_INTEL_SOC_PMIC is not set
+# CONFIG_LPC_ICH is not set
+# CONFIG_LPC_SCH is not set
+# CONFIG_MFD_88PM800 is not set
+# CONFIG_MFD_88PM805 is not set
+# CONFIG_MFD_88PM860X is not set
+# CONFIG_MFD_ACT8945A is not set
# CONFIG_MFD_ARIZONA_I2C is not set
+# CONFIG_MFD_ARIZONA is not set
+# CONFIG_MFD_ARIZONA_SPI is not set
+# CONFIG_MFD_AS3722 is not set
+# CONFIG_MFD_ASIC3 is not set
+# CONFIG_MFD_ATMEL_FLEXCOM is not set
+# CONFIG_MFD_ATMEL_HLCDC is not set
+# CONFIG_MFD_AXP20X_I2C is not set
+# CONFIG_MFD_AXP20X_RSB is not set
+# CONFIG_MFD_BCM590XX is not set
# CONFIG_MFD_CROS_EC is not set
-# CONFIG_MFD_SI476X_CORE is not set
-# CONFIG_MFD_TPS65912 is not set
-# CONFIG_MFD_TPS65912_SPI is not set
-# CONFIG_MFD_TPS65912_I2C is not set
-# CONFIG_MFD_SYSCON is not set
+# CONFIG_MFD_CS5535 is not set
+# CONFIG_MFD_DA9052_SPI is not set
+# CONFIG_MFD_DA9062 is not set
# CONFIG_MFD_DA9063 is not set
+# CONFIG_MFD_DA9150 is not set
# CONFIG_MFD_DLN2 is not set
+# CONFIG_MFD_HI6421_PMIC is not set
+# CONFIG_MFD_JANZ_CMODIO is not set
+# CONFIG_MFD_KEMPLD is not set
+# CONFIG_MFD_LM3533 is not set
# CONFIG_MFD_LP3943 is not set
-# CONFIG_MFD_ATMEL_HLCDC is not set
-# CONFIG_MFD_BCM590XX is not set
-# CONFIG_MFD_TPS65218 is not set
-# CONFIG_MFD_WM831X_SPI is not set
-# CONFIG_MFD_ARIZONA_SPI is not set
+# CONFIG_MFD_MAX14577 is not set
+# CONFIG_MFD_MAX77620 is not set
+# CONFIG_MFD_MAX77686 is not set
+# CONFIG_MFD_MAX77693 is not set
+# CONFIG_MFD_MAX77843 is not set
+# CONFIG_MFD_MAX8907 is not set
+# CONFIG_MFD_MAX8925 is not set
+# CONFIG_MFD_MAX8997 is not set
+# CONFIG_MFD_MAX8998 is not set
+# CONFIG_MFD_MC13XXX_I2C is not set
# CONFIG_MFD_MC13XXX_SPI is not set
-# CONFIG_MFD_DA9052_SPI is not set
# CONFIG_MFD_MENF21BMC is not set
-# CONFIG_MFD_HI6421_PMIC is not set
+# CONFIG_MFD_MT6397 is not set
+# CONFIG_MFD_PALMAS is not set
+# CONFIG_MFD_RDC321X is not set
+# CONFIG_MFD_RETU is not set
# CONFIG_MFD_RK808 is not set
# CONFIG_MFD_RN5T618 is not set
-# CONFIG_MFD_DA9150 is not set
# CONFIG_MFD_RT5033 is not set
+# CONFIG_MFD_SI476X_CORE is not set
# CONFIG_MFD_SKY81452 is not set
-# CONFIG_MFD_MAX77843 is not set
-# CONFIG_MFD_DA9062 is not set
-# CONFIG_EZX_PCAP is not set
-# CONFIG_INTEL_SOC_PMIC is not set
-# CONFIG_MFD_ATMEL_FLEXCOM is not set
-# CONFIG_TS4800_IRQ is not set
-# CONFIG_MFD_ACT8945A is not set
-# CONFIG_MFD_AXP20X_I2C is not set
-# CONFIG_MFD_AXP20X_RSB is not set
-# CONFIG_MFD_88PM800 is not set
-# CONFIG_MFD_88PM805 is not set
-# CONFIG_MFD_MAX77686 is not set
-# CONFIG_MFD_MAX8907 is not set
+# CONFIG_MFD_STMPE is not set
+# CONFIG_MFD_SYSCON is not set
+# CONFIG_MFD_TC3589X is not set
+# CONFIG_MFD_TC6393XB is not set
+# CONFIG_MFD_TI_AM335X_TSCADC is not set
+# CONFIG_MFD_TIMBERDALE is not set
# CONFIG_MFD_TPS65086 is not set
+# CONFIG_MFD_TPS65090 is not set
+# CONFIG_MFD_TPS65217 is not set
+# CONFIG_MFD_TPS65218 is not set
+# CONFIG_MFD_TPS6586X is not set
+# CONFIG_MFD_TPS65910 is not set
+# CONFIG_MFD_TPS65912 is not set
+# CONFIG_MFD_TPS65912_I2C is not set
+# CONFIG_MFD_TPS65912_SPI is not set
+# CONFIG_MFD_TPS80031 is not set
+# CONFIG_MFD_WL1273_CORE is not set
+# CONFIG_MFD_WM831X_I2C is not set
+# CONFIG_MFD_WM831X is not set
+# CONFIG_MFD_WM831X_SPI is not set
+# CONFIG_MFD_WM8350_I2C is not set
+# CONFIG_MFD_WM8350 is not set
+# CONFIG_MFD_WM8400 is not set
+# CONFIG_MFD_WM8994 is not set
+# CONFIG_TPS6507X is not set
+# CONFIG_TS4800_IRQ is not set
+# CONFIG_TWL4030_CORE is not set
+# CONFIG_TWL6040_CORE is not set
#
# File systems
@@ -4865,7 +4911,6 @@ CONFIG_DEBUG_BOOT_PARAMS=y
CONFIG_DEBUG_VM=y
# CONFIG_DEBUG_VM_VMACACHE is not set
# CONFIG_DEBUG_VM_RB is not set # revisit this if performance isn't horrible
-CONFIG_DEBUG_VM_PGFLAGS=y
# CONFIG_DEBUG_STRICT_USER_COPY_CHECKS is not set
CONFIG_LOCKUP_DETECTOR=y
# CONFIG_DEBUG_INFO_REDUCED is not set
@@ -4923,6 +4968,7 @@ CONFIG_SECURITY_SELINUX_AVC_STATS=y
# CONFIG_SECURITY_SMACK is not set
# CONFIG_SECURITY_TOMOYO is not set
# CONFIG_SECURITY_APPARMOR is not set
+# CONFIG_SECURITY_LOADPIN is not set
CONFIG_SECURITY_YAMA=y
CONFIG_AUDIT=y
CONFIG_AUDITSYSCALL=y
@@ -5059,6 +5105,7 @@ CONFIG_PERSISTENT_KEYRINGS=y
CONFIG_BIG_KEYS=y
CONFIG_TRUSTED_KEYS=m
CONFIG_ENCRYPTED_KEYS=m
+CONFIG_KEY_DH_OPERATIONS=y
CONFIG_CDROM_PKTCDVD=m
CONFIG_CDROM_PKTCDVD_BUFFERS=8
# CONFIG_CDROM_PKTCDVD_WCACHE is not set
@@ -5083,6 +5130,7 @@ CONFIG_BACKLIGHT_LP855X=m
# CONFIG_BACKLIGHT_LV5207LP is not set
# CONFIG_BACKLIGHT_BD6107 is not set
# CONFIG_BACKLIGHT_PM8941_WLED is not set
+# CONFIG_BACKLIGHT_PWM is not set
CONFIG_LCD_CLASS_DEVICE=m
CONFIG_LCD_PLATFORM=m
@@ -5185,6 +5233,7 @@ CONFIG_CPU_FREQ_GOV_POWERSAVE=y
CONFIG_CPU_FREQ_GOV_USERSPACE=y
CONFIG_CPU_FREQ_GOV_ONDEMAND=y
CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
+CONFIG_CPU_FREQ_GOV_SCHEDUTIL=y
CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y
CONFIG_CPU_FREQ_STAT=m
CONFIG_CPU_FREQ_STAT_DETAILS=y
@@ -5314,6 +5363,9 @@ CONFIG_SND_SOC_GENERIC_DMAENGINE_PCM=y
# CONFIG_SND_SOC_INNO_RK3036 is not set
# CONFIG_SND_SOC_IMG is not set
CONFIG_SND_SOC_AMD_ACP=m
+# CONFIG_SND_SOC_TAS5720 is not set
+# CONFIG_SND_SOC_WM8960 is not set
+
CONFIG_BALLOON_COMPACTION=y
CONFIG_COMPACTION=y
@@ -5353,6 +5405,8 @@ CONFIG_LEDS_TRIGGER_BACKLIGHT=m
CONFIG_LEDS_TRIGGER_DEFAULT_ON=m
CONFIG_LEDS_TRIGGER_TRANSIENT=m
CONFIG_LEDS_TRIGGER_CAMERA=m
+CONFIG_LEDS_TRIGGER_MTD=y
+CONFIG_LEDS_TRIGGER_PANIC=y
CONFIG_LEDS_CLEVO_MAIL=m
CONFIG_LEDS_INTEL_SS4200=m
CONFIG_LEDS_LM3530=m
@@ -5417,6 +5471,7 @@ CONFIG_RING_BUFFER_BENCHMARK=m
CONFIG_FUNCTION_TRACER=y
CONFIG_STACK_TRACER=y
# CONFIG_FUNCTION_GRAPH_TRACER is not set
+# CONFIG_HIST_TRIGGERS is not set
CONFIG_KPROBES=y
CONFIG_KPROBE_EVENT=y
@@ -5448,6 +5503,7 @@ CONFIG_POWER_SUPPLY=y
# CONFIG_TEST_POWER is not set
CONFIG_APM_POWER=m
# CONFIG_GENERIC_ADC_BATTERY is not set
+# CONFIG_GENERIC_ADC_THERMAL is not set
# CONFIG_WM831X_POWER is not set
# CONFIG_BATTERY_DS2760 is not set
@@ -5564,10 +5620,7 @@ CONFIG_GPIOLIB=y
CONFIG_NET_DSA=m
CONFIG_NET_DSA_HWMON=y
CONFIG_NET_DSA_MV88E6060=m
-CONFIG_NET_DSA_MV88E6131=m
-CONFIG_NET_DSA_MV88E6123=m
-CONFIG_NET_DSA_MV88E6171=m
-CONFIG_NET_DSA_MV88E6352=m
+CONFIG_NET_DSA_MV88E6XXX=m
CONFIG_NET_DSA_BCM_SF2=m
# Used by Maemo, we don't care.
@@ -5640,6 +5693,7 @@ CONFIG_ALTERA_STAPL=m
CONFIG_USBIP_CORE=m
CONFIG_USBIP_VHCI_HCD=m
CONFIG_USBIP_HOST=m
+CONFIG_USBIP_VUDC=m
# CONFIG_USBIP_DEBUG is not set
# CONFIG_INTEL_MEI is not set
# CONFIG_VT6655 is not set
@@ -5676,7 +5730,7 @@ CONFIG_IMA_MEASURE_PCR_IDX=10
CONFIG_IMA_LSM_RULES=y
# CONFIG_EVM is not set
-# CONFIG_PWM is not set
+CONFIG_PWM=y
# CONFIG_PWM_PCA9685 is not set
CONFIG_LSM_MMAP_MIN_ADDR=65536
@@ -5698,6 +5752,7 @@ CONFIG_RCU_TORTURE_TEST_SLOW_INIT_DELAY=3
CONFIG_RCU_KTHREAD_PRIO=0
CONFIG_SPARSE_RCU_POINTER=y
# CONFIG_RCU_EXPERT is not set
+# CONFIG_RCU_PERF_TEST is not set
# CONFIG_LIVEPATCH is not set
@@ -5730,6 +5785,7 @@ CONFIG_CLEANCACHE=y
CONFIG_FRONTSWAP=y
CONFIG_ZSWAP=y
CONFIG_ZBUD=y
+CONFIG_Z3FOLD=y
CONFIG_ZSMALLOC=y
# CONFIG_ZSMALLOC_STAT is not set
# CONFIG_PGTABLE_MAPPING is not set
@@ -5810,6 +5866,7 @@ CONFIG_XZ_DEC_ARM=y
CONFIG_TARGET_CORE=m
CONFIG_ISCSI_TARGET=m
+CONFIG_ISCSI_TARGET_CXGB4=m
CONFIG_LOOPBACK_TARGET=m
CONFIG_SBP_TARGET=m
CONFIG_TCM_IBLOCK=m
@@ -5836,6 +5893,8 @@ CONFIG_PSTORE_RAM=m
# CONFIG_TEST_STATIC_KEYS is not set
# CONFIG_TEST_PRINTF is not set
# CONFIG_TEST_BITMAP is not set
+# CONFIG_TEST_UUID is not set
+# CONFIG_TEST_HASH is not set
# CONFIG_AVERAGE is not set
# CONFIG_VMXNET3 is not set
@@ -5845,6 +5904,7 @@ CONFIG_PSTORE_RAM=m
# CONFIG_GOLDFISH is not set
CONFIG_CHROME_PLATFORMS=y
+# CONFIG_CROS_KBD_LED_BACKLIGHT is not set
CONFIG_BCMA=m
CONFIG_BCMA_BLOCKIO=y
@@ -5894,6 +5954,7 @@ CONFIG_POWERCAP=y
# CONFIG_DEVFREQ_GOV_PERFORMANCE is not set
# CONFIG_DEVFREQ_GOV_POWERSAVE is not set
# CONFIG_DEVFREQ_GOV_USERSPACE is not set
+# CONFIG_DEVFREQ_GOV_PASSIVE is not set
# CONFIG_CPUFREQ_DT is not set
@@ -5905,6 +5966,7 @@ CONFIG_MODULE_SIG_SHA256=y
CONFIG_MODULE_SIG_KEY="certs/signing_key.pem"
CONFIG_SYSTEM_TRUSTED_KEYS=""
# CONFIG_SYSTEM_EXTRA_CERTIFICATE is not set
+CONFIG_SECONDARY_TRUSTED_KEYRING=y
CONFIG_PKCS7_MESSAGE_PARSER=y
# CONFIG_PKCS7_TEST_KEY is not set
CONFIG_SIGNED_PE_FILE_VERIFICATION=y
@@ -5933,3 +5995,14 @@ CONFIG_SYSTEM_BLACKLIST_KEYRING=y
# CONFIG_AHCI_QORIQ is not set
# CONFIG_COMMON_CLK_SI514 is not set
# CONFIG_CLK_QORIQ is not set
+
+# CONFIG_PWRSEQ_EMMC is not set
+# CONFIG_PWRSEQ_SIMPLE is not set
+
+# The kernel code has a nice comment
+# WARNING: Do not even assume this interface is staying stable!
+# CONFIG_MCE_AMD_INJ is not set
+
+# CONFIG_EZNPS_GIC is not set
+
+CONFIG_NMI_LOG_BUF_SHIFT=13
diff --git a/freed-ora/current/master/config-nodebug b/freed-ora/current/master/config-nodebug
index 0f05a0437..4bd461d8f 100644
--- a/freed-ora/current/master/config-nodebug
+++ b/freed-ora/current/master/config-nodebug
@@ -25,6 +25,7 @@ CONFIG_CPUMASK_OFFSTACK=y
# CONFIG_FAULT_INJECTION_STACKTRACE_FILTER is not set
# CONFIG_FAIL_IO_TIMEOUT is not set
# CONFIG_FAIL_MMC_REQUEST is not set
+# CONFIG_F2FS_FAULT_INJECTION is not set
# CONFIG_LOCK_STAT is not set
@@ -126,3 +127,5 @@ CONFIG_DEBUG_KMEMLEAK_DEFAULT_OFF=y
# CONFIG_EDAC_DEBUG is not set
# CONFIG_SPI_DEBUG is not set
+
+# CONFIG_DEBUG_VM_PGFLAGS is not set
diff --git a/freed-ora/current/master/config-powerpc64-generic b/freed-ora/current/master/config-powerpc64-generic
index de387d570..6135a9bd0 100644
--- a/freed-ora/current/master/config-powerpc64-generic
+++ b/freed-ora/current/master/config-powerpc64-generic
@@ -14,6 +14,8 @@ CONFIG_PPC_PSERIES=y
# CONFIG_PPC_PMAC64 is not set
# CONFIG_PPC_PS3 is not set
CONFIG_HIBERNATION=n
+CONFIG_PPC_RADIX_MMU=y
+# CONFIG_FSL_LBC is not set
CONFIG_EXTRA_TARGETS=""
@@ -54,6 +56,7 @@ CONFIG_PPC_64K_PAGES=y
CONFIG_PPC_SUBPAGE_PROT=y
CONFIG_SCHED_SMT=y
CONFIG_MEMORY_HOTPLUG=y
+CONFIG_MEMORY_HOTPLUG_DEFAULT_ONLINE=y
CONFIG_MEMORY_HOTREMOVE=y
CONFIG_PPC64_SUPPORTS_MEMORY_FAILURE=y
@@ -318,10 +321,6 @@ CONFIG_GPIO_WM831X=m
# CONFIG_CAN_MSCAN is not set
# CONFIG_CAN_MPC5XXX is not set
# CONFIG_PMIC_ADP5520 is not set
-# CONFIG_MFD_MAX8997 is not set
-# CONFIG_MFD_TPS65910 is not set
-# CONFIG_MFD_TPS65912_I2C is not set
-# CONFIG_MFD_WL1273_CORE is not set
# CONFIG_XPS_USB_HCD_XILINX is not set
# CONFIG_MMC_SDHCI_OF_HLWD is not set
diff --git a/freed-ora/current/master/config-s390x b/freed-ora/current/master/config-s390x
index d1ed636d9..d559c6570 100644
--- a/freed-ora/current/master/config-s390x
+++ b/freed-ora/current/master/config-s390x
@@ -183,6 +183,7 @@ CONFIG_VIRTIO_CONSOLE=y
CONFIG_MEMORY_HOTPLUG=y
CONFIG_MEMORY_HOTREMOVE=y
+CONFIG_MEMORY_HOTPLUG_DEFAULT_ONLINE=y
CONFIG_CHSC_SCH=m
# drivers/isdn/hardware/mISDN/hfcmulti.c:5255:2: error: #error "not running on big endian machines now"
diff --git a/freed-ora/current/master/config-x86-generic b/freed-ora/current/master/config-x86-generic
index 06ddcd1a0..8ae20bab7 100644
--- a/freed-ora/current/master/config-x86-generic
+++ b/freed-ora/current/master/config-x86-generic
@@ -17,6 +17,10 @@ CONFIG_MICROCODE_INTEL=y
CONFIG_MICROCODE_AMD=y
CONFIG_PERF_EVENTS_AMD_POWER=m
+CONFIG_PERF_EVENTS_INTEL_UNCORE=m
+CONFIG_PERF_EVENTS_INTEL_RAPL=m
+CONFIG_PERF_EVENTS_CSTATE=m
+CONFIG_PERF_EVENTS_INTEL_CSTATE=m
CONFIG_X86_MSR=y
CONFIG_X86_CPUID=y
@@ -48,6 +52,8 @@ CONFIG_FB_EFI=y
CONFIG_EARLY_PRINTK_EFI=y
CONFIG_EFI_RUNTIME_MAP=y
# CONFIG_EFI_FAKE_MEMMAP is not set
+# CONFIG_EFI_BOOTLOADER_CONTROL is not set
+# CONFIG_EFI_CAPSULE_LOADER is not set
# needs FB_SIMPLE to work correctly
# CONFIG_X86_SYSFB is not set
@@ -104,6 +110,7 @@ CONFIG_ACPI_CUSTOM_METHOD=m
CONFIG_ACPI_BGRT=y
# CONFIG_ACPI_EXTLOG is not set
# CONFIG_ACPI_REV_OVERRIDE_POSSIBLE is not set
+CONFIG_ACPI_TABLE_UPGRADE=y
CONFIG_INTEL_SOC_PMIC=y
CONFIG_PMIC_OPREGION=y
@@ -279,7 +286,7 @@ CONFIG_KVM_INTEL=m
CONFIG_KVM_AMD=m
CONFIG_KVM_DEVICE_ASSIGNMENT=y
CONFIG_LGUEST=m
-CONFIG_LGUEST_GUEST=y
+# CONFIG_LGUEST_GUEST is not set
CONFIG_HYPERVISOR_GUEST=y
CONFIG_PARAVIRT=y
@@ -326,6 +333,7 @@ CONFIG_SPI_MASTER=y
CONFIG_SPI_PXA2XX=m
# CONFIG_SPI_CADENCE is not set
# CONFIG_SPI_ZYNQMP_GQSPI is not set
+# CONFIG_SPI_ROCKCHIP is not set
# CONFIG_DRM_PANEL_SAMSUNG_LD9040 is not set
# CONFIG_DRM_PANEL_LG_LG4573 is not set
# CONFIG_DRM_PANEL_PANASONIC_VVX10F034N00 is not set
@@ -354,7 +362,6 @@ CONFIG_DMI_SYSFS=y
CONFIG_ISCSI_IBFT_FIND=y
CONFIG_ISCSI_IBFT=m
-CONFIG_DMADEVICES=y
CONFIG_INTEL_IOATDMA=m
CONFIG_INTEL_IDMA64=m
@@ -430,22 +437,10 @@ CONFIG_GPIO_ICH=m
# CONFIG_MFD_DA9055 is not set
# CONFIG_MFD_88PM800 is not set
# CONFIG_MFD_88PM805 is not set
-# CONFIG_MFD_MAX14577 is not set
-# CONFIG_MFD_MAX77686 is not set
-# CONFIG_MFD_MAX77693 is not set
-# CONFIG_MFD_MAX8907 is not set
-# CONFIG_MFD_MAX8997 is not set
# CONFIG_MFD_RC5T583 is not set
# CONFIG_MFD_SEC_CORE is not set
# CONFIG_MFD_SMSC is not set
# CONFIG_MFD_LP8788 is not set
-# CONFIG_MFD_PALMAS is not set
-# CONFIG_MFD_TPS65090 is not set
-# CONFIG_MFD_TPS65910 is not set
-# CONFIG_MFD_TPS65912_I2C is not set
-# CONFIG_MFD_TPS80031 is not set
-# CONFIG_TWL4030_CORE is not set
-# CONFIG_TWL6040_CORE is not set
CONFIG_PCI_CNB20LE_QUIRK=y
@@ -461,6 +456,7 @@ CONFIG_HPWDT_NMI_DECODING=y
# CONFIG_GPIO_INTEL_MID is not set
CONFIG_PCH_DMA=m
CONFIG_INTEL_IPS=m
+CONFIG_INTEL_PMC_CORE=y
# CONFIG_IBM_RTL is not set
CONFIG_VIDEO_VIA_CAMERA=m
@@ -568,17 +564,19 @@ CONFIG_SND_SOC_INTEL_CHT_BSW_MAX98090_TI_MACH=m
CONFIG_SND_SOC_INTEL_SKL_RT286_MACH=m
CONFIG_SND_SOC_INTEL_SKL_NAU88L25_SSM4567_MACH=m
CONFIG_SND_SOC_INTEL_SKL_NAU88L25_MAX98357A_MACH=m
+CONFIG_SND_SOC_INTEL_BXT_RT298_MACH=m
CONFIG_SND_SOC_AC97_CODEC=m
# CONFIG_SND_SOC_TAS571X is not set
# CONFIG_SND_SUN4I_CODEC is not set
# CONFIG_SND_SUN4I_SPDIF is not set
-# CONFIG_INTEL_POWERCLAMP is not set
+CONFIG_INTEL_POWERCLAMP=m
CONFIG_X86_PKG_TEMP_THERMAL=m
CONFIG_INTEL_SOC_DTS_THERMAL=m
CONFIG_INT340X_THERMAL=m
CONFIG_INTEL_RAPL=m
CONFIG_INTEL_PCH_THERMAL=m
+CONFIG_INT3406_THERMAL=m
CONFIG_VMWARE_VMCI=m
CONFIG_VMWARE_VMCI_VSOCKETS=m
diff --git a/freed-ora/current/master/config-x86_64-generic b/freed-ora/current/master/config-x86_64-generic
index b6037709c..0614913aa 100644
--- a/freed-ora/current/master/config-x86_64-generic
+++ b/freed-ora/current/master/config-x86_64-generic
@@ -117,6 +117,7 @@ CONFIG_SPARSEMEM_EXTREME=y
CONFIG_SPARSEMEM_VMEMMAP=y
# CONFIG_MOVABLE_NODE is not set
CONFIG_MEMORY_HOTPLUG=y
+CONFIG_MEMORY_HOTPLUG_DEFAULT_ONLINE=y
# CONFIG_ARCH_MEMORY_PROBE is not set
CONFIG_MEMORY_HOTREMOVE=y
# CONFIG_DEFERRED_STRUCT_PAGE_INIT is not set
@@ -222,8 +223,12 @@ CONFIG_CMA_AREAS=7
CONFIG_ZONE_DMA=y
CONFIG_ZONE_DEVICE=y
CONFIG_NVDIMM_PFN=y
+CONFIG_NVDIMM_DAX=y
CONFIG_ND_PFN=m
+CONFIG_DEV_DAX=m
+CONFIG_DEV_DAX_PMEM=m
+
# Staging
CONFIG_STAGING_RDMA=y
CONFIG_INFINIBAND_HFI1=m
diff --git a/freed-ora/current/master/drm-i915-hush-check-crtc-state.patch b/freed-ora/current/master/drm-i915-hush-check-crtc-state.patch
index fa4baffbf..acf05056c 100644
--- a/freed-ora/current/master/drm-i915-hush-check-crtc-state.patch
+++ b/freed-ora/current/master/drm-i915-hush-check-crtc-state.patch
@@ -1,4 +1,4 @@
-From 02f47b49ab1cdbe62ceb71b658e2c469799ae368 Mon Sep 17 00:00:00 2001
+From 5550f20b5f9becb485fb3a67bf0193025d40bc6f Mon Sep 17 00:00:00 2001
From: Adam Jackson <ajax@redhat.com>
Date: Wed, 13 Nov 2013 10:17:24 -0500
Subject: [PATCH] drm/i915: hush check crtc state
@@ -15,18 +15,18 @@ Upstream-status: http://lists.freedesktop.org/archives/intel-gfx/2013-November/0
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
-index ca9278be49f7..308ac0539a87 100644
+index 46f9be3ad5a2..ad2e62e4cdba 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
-@@ -12688,7 +12688,7 @@ check_crtc_state(struct drm_device *dev, struct drm_atomic_state *old_state)
- sw_config = to_intel_crtc_state(crtc->state);
- if (!intel_pipe_config_compare(dev, sw_config,
- pipe_config, false)) {
-- I915_STATE_WARN(1, "pipe state doesn't match!\n");
-+ DRM_DEBUG_KMS("pipe state doesn't match!\n");
- intel_dump_pipe_config(intel_crtc, pipe_config,
- "[hw state]");
- intel_dump_pipe_config(intel_crtc, sw_config,
+@@ -12970,7 +12970,7 @@ verify_crtc_state(struct drm_crtc *crtc,
+ sw_config = to_intel_crtc_state(crtc->state);
+ if (!intel_pipe_config_compare(dev, sw_config,
+ pipe_config, false)) {
+- I915_STATE_WARN(1, "pipe state doesn't match!\n");
++ DRM_DEBUG_KMS("pipe state doesn't match!\n");
+ intel_dump_pipe_config(intel_crtc, pipe_config,
+ "[hw state]");
+ intel_dump_pipe_config(intel_crtc, sw_config,
--
-2.4.3
+2.5.5
diff --git a/freed-ora/current/master/efi-Add-EFI_SECURE_BOOT-bit.patch b/freed-ora/current/master/efi-Add-EFI_SECURE_BOOT-bit.patch
index 89b9664c7..dca2eb296 100644
--- a/freed-ora/current/master/efi-Add-EFI_SECURE_BOOT-bit.patch
+++ b/freed-ora/current/master/efi-Add-EFI_SECURE_BOOT-bit.patch
@@ -1,7 +1,7 @@
-From c01ff700ea4192ae04b306fef725d62189550236 Mon Sep 17 00:00:00 2001
+From 04e65e01058ed6357b932e64b19e4bf762f04970 Mon Sep 17 00:00:00 2001
From: Josh Boyer <jwboyer@fedoraproject.org>
Date: Tue, 27 Aug 2013 13:33:03 -0400
-Subject: [PATCH 13/20] efi: Add EFI_SECURE_BOOT bit
+Subject: [PATCH 2/9] efi: Add EFI_SECURE_BOOT bit
UEFI machines can be booted in Secure Boot mode. Add a EFI_SECURE_BOOT bit
for use with efi_enabled.
@@ -13,10 +13,10 @@ Signed-off-by: Josh Boyer <jwboyer@fedoraproject.org>
2 files changed, 3 insertions(+)
diff --git a/arch/x86/kernel/setup.c b/arch/x86/kernel/setup.c
-index f3b804f..a401ff8 100644
+index bdb9881c7afd..a666b6c29c77 100644
--- a/arch/x86/kernel/setup.c
+++ b/arch/x86/kernel/setup.c
-@@ -1145,7 +1145,9 @@ void __init setup_arch(char **cmdline_p)
+@@ -1154,7 +1154,9 @@ void __init setup_arch(char **cmdline_p)
#ifdef CONFIG_EFI_SECURE_BOOT_SIG_ENFORCE
if (boot_params.secure_boot) {
@@ -27,10 +27,10 @@ index f3b804f..a401ff8 100644
#endif
diff --git a/include/linux/efi.h b/include/linux/efi.h
-index 569b5a8..4dc970e 100644
+index c2db3ca22217..8cb38cfcba74 100644
--- a/include/linux/efi.h
+++ b/include/linux/efi.h
-@@ -980,6 +980,7 @@ extern int __init efi_setup_pcdp_console(char *);
+@@ -1062,6 +1062,7 @@ extern int __init efi_setup_pcdp_console(char *);
#define EFI_ARCH_1 7 /* First arch-specific bit */
#define EFI_DBG 8 /* Print additional debug info at runtime */
#define EFI_NX_PE_DATA 9 /* Can runtime data regions be mapped non-executable? */
@@ -39,5 +39,5 @@ index 569b5a8..4dc970e 100644
#ifdef CONFIG_EFI
/*
--
-2.5.0
+2.5.5
diff --git a/freed-ora/current/master/efi-Disable-secure-boot-if-shim-is-in-insecure-mode.patch b/freed-ora/current/master/efi-Disable-secure-boot-if-shim-is-in-insecure-mode.patch
index ba2f3cefa..7d4a46e15 100644
--- a/freed-ora/current/master/efi-Disable-secure-boot-if-shim-is-in-insecure-mode.patch
+++ b/freed-ora/current/master/efi-Disable-secure-boot-if-shim-is-in-insecure-mode.patch
@@ -1,7 +1,7 @@
-From 9ef94251448aa463c5937ee8e8e27d6fd9529509 Mon Sep 17 00:00:00 2001
+From 0a5c52b9eb4918fb2bee43bacc3521b574334cff Mon Sep 17 00:00:00 2001
From: Josh Boyer <jwboyer@fedoraproject.org>
Date: Tue, 5 Feb 2013 19:25:05 -0500
-Subject: [PATCH 11/20] efi: Disable secure boot if shim is in insecure mode
+Subject: [PATCH 1/9] efi: Disable secure boot if shim is in insecure mode
A user can manually tell the shim boot loader to disable validation of
images it loads. When a user does this, it creates a UEFI variable called
@@ -15,10 +15,10 @@ Signed-off-by: Josh Boyer <jwboyer@fedoraproject.org>
1 file changed, 19 insertions(+), 1 deletion(-)
diff --git a/arch/x86/boot/compressed/eboot.c b/arch/x86/boot/compressed/eboot.c
-index b4de3faa3f29..5cc2ef570390 100644
+index 6b8b9a775b46..b3a5364d31c6 100644
--- a/arch/x86/boot/compressed/eboot.c
+++ b/arch/x86/boot/compressed/eboot.c
-@@ -830,8 +830,9 @@ out:
+@@ -574,8 +574,9 @@ free_handle:
static int get_secure_boot(void)
{
@@ -29,7 +29,7 @@ index b4de3faa3f29..5cc2ef570390 100644
efi_guid_t var_guid = EFI_GLOBAL_VARIABLE_GUID;
efi_status_t status;
-@@ -855,6 +856,23 @@ static int get_secure_boot(void)
+@@ -599,6 +600,23 @@ static int get_secure_boot(void)
if (setup == 1)
return 0;
@@ -54,5 +54,5 @@ index b4de3faa3f29..5cc2ef570390 100644
}
--
-2.4.3
+2.5.5
diff --git a/freed-ora/current/master/efi-Make-EFI_SECURE_BOOT_SIG_ENFORCE-depend-on-EFI.patch b/freed-ora/current/master/efi-Make-EFI_SECURE_BOOT_SIG_ENFORCE-depend-on-EFI.patch
deleted file mode 100644
index 095bea782..000000000
--- a/freed-ora/current/master/efi-Make-EFI_SECURE_BOOT_SIG_ENFORCE-depend-on-EFI.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-From 0081083434db41c15b72eced975da0bd9b80566b Mon Sep 17 00:00:00 2001
-From: Josh Boyer <jwboyer@fedoraproject.org>
-Date: Tue, 27 Aug 2013 13:28:43 -0400
-Subject: [PATCH 12/20] efi: Make EFI_SECURE_BOOT_SIG_ENFORCE depend on EFI
-
-The functionality of the config option is dependent upon the platform being
-UEFI based. Reflect this in the config deps.
-
-Signed-off-by: Josh Boyer <jwboyer@fedoraproject.org>
----
- arch/x86/Kconfig | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
-diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
-index 14db458f4774..f6ff0a86d841 100644
---- a/arch/x86/Kconfig
-+++ b/arch/x86/Kconfig
-@@ -1735,7 +1735,8 @@ config EFI_MIXED
- If unsure, say N.
-
- config EFI_SECURE_BOOT_SIG_ENFORCE
-- def_bool n
-+ def_bool n
-+ depends on EFI
- prompt "Force module signing when UEFI Secure Boot is enabled"
- ---help---
- UEFI Secure Boot provides a mechanism for ensuring that the
---
-2.4.3
-
diff --git a/freed-ora/current/master/filter-aarch64.sh b/freed-ora/current/master/filter-aarch64.sh
index 139d1791d..cc560ca97 100644
--- a/freed-ora/current/master/filter-aarch64.sh
+++ b/freed-ora/current/master/filter-aarch64.sh
@@ -13,4 +13,4 @@ driverdirs="atm auxdisplay bcma bluetooth firewire fmc infiniband isdn leds medi
ethdrvs="3com adaptec arc alteon atheros broadcom cadence calxeda chelsio cisco dec dlink emulex icplus marvell micrel myricom neterion nvidia oki-semi packetengines qlogic rdc renesas sfc silan sis smsc stmicro sun tehuti ti via wiznet xircom"
-singlemods="ntb_netdev iscsi_ibft iscsi_boot_sysfs megaraid pmcraid qla1280 9pnet_rdma rpcrdma hid-picolcd hid-prodikeys hwa-hc hwpoison-inject target_core_user sbp_target"
+singlemods="ntb_netdev iscsi_ibft iscsi_boot_sysfs megaraid pmcraid qla1280 9pnet_rdma rpcrdma hid-picolcd hid-prodikeys hwa-hc hwpoison-inject target_core_user sbp_target cxgbit iw_cxgb3 iw_cxgb4 cxgb3i cxgb3i cxgb3i_ddp cxgb4i"
diff --git a/freed-ora/current/master/filter-armv7hl.sh b/freed-ora/current/master/filter-armv7hl.sh
index 6de77659a..0ae6d925b 100644
--- a/freed-ora/current/master/filter-armv7hl.sh
+++ b/freed-ora/current/master/filter-armv7hl.sh
@@ -15,4 +15,4 @@ ethdrvs="3com adaptec alteon altera amd atheros broadcom cadence chelsio cisco d
drmdrvs="amd armada bridge ast exynos i2c imx mgag200 msm omapdrm panel nouveau radeon rockchip tegra tilcdc via"
-singlemods="ntb_netdev iscsi_ibft iscsi_boot_sysfs megaraid pmcraid qla1280 9pnet_rdma rpcrdma hid-picolcd hid-prodikeys hwa-hc hwpoison-inject target_core_user sbp_target"
+singlemods="ntb_netdev iscsi_ibft iscsi_boot_sysfs megaraid pmcraid qla1280 9pnet_rdma rpcrdma hid-picolcd hid-prodikeys hwa-hc hwpoison-inject target_core_user sbp_target cxgbit iw_cxgb3 iw_cxgb4 cxgb3i cxgb3i cxgb3i_ddp cxgb4i"
diff --git a/freed-ora/current/master/filter-i686.sh b/freed-ora/current/master/filter-i686.sh
index dc6f42f5a..09f70cc66 100644
--- a/freed-ora/current/master/filter-i686.sh
+++ b/freed-ora/current/master/filter-i686.sh
@@ -11,4 +11,4 @@
driverdirs="atm auxdisplay bcma bluetooth firewire fmc infiniband isdn leds media memstick mfd mmc mtd mwave nfc ntb pcmcia platform power ssb staging uio uwb w1"
-singlemods="ntb_netdev iscsi_ibft iscsi_boot_sysfs megaraid pmcraid qla1280 9pnet_rdma rpcrdma hid-picolcd hid-prodikeys hwa-hc hwpoison-inject hid-sensor-hub hid-sensor-magn-3d hid-sensor-incl-3d hid-sensor-gyro-3d hid-sensor-iio-common hid-sensor-accel-3d hid-sensor-trigger hid-sensor-als hid-sensor-rotation target_core_user sbp_target"
+singlemods="ntb_netdev iscsi_ibft iscsi_boot_sysfs megaraid pmcraid qla1280 9pnet_rdma rpcrdma hid-picolcd hid-prodikeys hwa-hc hwpoison-inject hid-sensor-hub hid-sensor-magn-3d hid-sensor-incl-3d hid-sensor-gyro-3d hid-sensor-iio-common hid-sensor-accel-3d hid-sensor-trigger hid-sensor-als hid-sensor-rotation target_core_user sbp_target cxgbit iw_cxgb3 iw_cxgb4 cxgb3i cxgb3i cxgb3i_ddp cxgb4i"
diff --git a/freed-ora/current/master/filter-modules.sh b/freed-ora/current/master/filter-modules.sh
index ef86416d1..a10f48ac6 100755
--- a/freed-ora/current/master/filter-modules.sh
+++ b/freed-ora/current/master/filter-modules.sh
@@ -34,7 +34,7 @@ netprots="6lowpan appletalk atm ax25 batman-adv bluetooth can dccp dsa ieee80215
drmdrvs="amd ast gma500 i2c i915 mgag200 nouveau radeon via "
-singlemods="ntb_netdev iscsi_ibft iscsi_boot_sysfs megaraid pmcraid qla1280 9pnet_rdma rpcrdma hid-picolcd hid-prodikeys hwa-hc hwpoison-inject hid-sensor-hub target_core_user sbp_target"
+singlemods="ntb_netdev iscsi_ibft iscsi_boot_sysfs megaraid pmcraid qla1280 9pnet_rdma rpcrdma hid-picolcd hid-prodikeys hwa-hc hwpoison-inject hid-sensor-hub target_core_user sbp_target cxgbit iw_cxgb3 iw_cxgb4 cxgb3i cxgb3i cxgb3i_ddp cxgb4i"
# Grab the arch-specific filter list overrides
source ./filter-$2.sh
diff --git a/freed-ora/current/master/filter-ppc64.sh b/freed-ora/current/master/filter-ppc64.sh
index e4990bbcb..a99c52058 100644
--- a/freed-ora/current/master/filter-ppc64.sh
+++ b/freed-ora/current/master/filter-ppc64.sh
@@ -11,4 +11,4 @@
driverdirs="atm auxdisplay bcma bluetooth firewire fmc infiniband isdn leds media memstick message mmc mtd mwave nfc ntb pcmcia platform power ssb staging uio uwb w1"
-singlemods="ntb_netdev iscsi_ibft iscsi_boot_sysfs megaraid pmcraid qla1280 9pnet_rdma rpcrdma hid-picolcd hid-prodikeys hwa-hc hwpoison-inject target_core_user sbp_target"
+singlemods="ntb_netdev iscsi_ibft iscsi_boot_sysfs megaraid pmcraid qla1280 9pnet_rdma rpcrdma hid-picolcd hid-prodikeys hwa-hc hwpoison-inject target_core_user sbp_target cxgbit iw_cxgb3 iw_cxgb4 cxgb3i cxgb3i cxgb3i_ddp cxgb4i"
diff --git a/freed-ora/current/master/filter-ppc64le.sh b/freed-ora/current/master/filter-ppc64le.sh
index e44c88ec5..8d3ad2d27 100644
--- a/freed-ora/current/master/filter-ppc64le.sh
+++ b/freed-ora/current/master/filter-ppc64le.sh
@@ -11,4 +11,4 @@
driverdirs="atm auxdisplay bcma bluetooth firewire fmc infiniband isdn leds media memstick message mmc mtd mwave nfc ntb pcmcia platform power ssb staging uio uwb w1"
-singlemods="ntb_netdev iscsi_ibft iscsi_boot_sysfs megaraid pmcraid qla1280 9pnet_rdma rpcrdma hid-picolcd hid-prodikeys hwa-hc hwpoison-inject target_core_user sbp_target"
+singlemods="ntb_netdev iscsi_ibft iscsi_boot_sysfs megaraid pmcraid qla1280 9pnet_rdma rpcrdma hid-picolcd hid-prodikeys hwa-hc hwpoison-inject target_core_user sbp_target cxgbit iw_cxgb3 iw_cxgb4 cxgb3i cxgb3i cxgb3i_ddp cxgb4i"
diff --git a/freed-ora/current/master/filter-ppc64p7.sh b/freed-ora/current/master/filter-ppc64p7.sh
index b499f0e69..b8eebb369 100644
--- a/freed-ora/current/master/filter-ppc64p7.sh
+++ b/freed-ora/current/master/filter-ppc64p7.sh
@@ -11,4 +11,4 @@
driverdirs="atm auxdisplay bcma bluetooth firewire fmc infiniband isdn leds media memstick message mmc mtd mwave nfc ntb pcmcia platform power ssb staging uio uwb w1"
-singlemods="ntb_netdev iscsi_ibft iscsi_boot_sysfs megaraid pmcraid qla1280 9pnet_rdma rpcrdma hid-picolcd hid-prodikeys hwa-hc hwpoison-inject target_core_user sbp_target"
+singlemods="ntb_netdev iscsi_ibft iscsi_boot_sysfs megaraid pmcraid qla1280 9pnet_rdma rpcrdma hid-picolcd hid-prodikeys hwa-hc hwpoison-inject target_core_user sbp_target cxgbit iw_cxgb3 iw_cxgb4 cxgb3i cxgb3i cxgb3i_ddp cxgb4i"
diff --git a/freed-ora/current/master/geekbox-v4-device-tree-support.patch b/freed-ora/current/master/geekbox-v4-device-tree-support.patch
index 77c1e5c28..11f30e7b2 100644
--- a/freed-ora/current/master/geekbox-v4-device-tree-support.patch
+++ b/freed-ora/current/master/geekbox-v4-device-tree-support.patch
@@ -1,26 +1,24 @@
-From 4d321bf15d2d5e5b1b674f2a26a1c5202090a800 Mon Sep 17 00:00:00 2001
+From 277aa4c25655e8f746f02879d26298772244958a Mon Sep 17 00:00:00 2001
From: Peter Robinson <pbrobinson@gmail.com>
Date: Thu, 17 Mar 2016 15:19:04 +0000
Subject: [PATCH] geekbox v4 patchset
---
- Documentation/devicetree/bindings/arm/rockchip.txt | 9 +
- arch/arm64/boot/dts/rockchip/Makefile | 2 +
- arch/arm64/boot/dts/rockchip/rk3368-evb.dtsi | 2 +-
- .../dts/rockchip/rk3368-geekbox-landingship.dts | 57 ++++
- arch/arm64/boot/dts/rockchip/rk3368-geekbox.dts | 319 +++++++++++++++++++++
- arch/arm64/boot/dts/rockchip/rk3368-r88.dts | 2 +-
- 6 files changed, 389 insertions(+), 2 deletions(-)
+ Documentation/devicetree/bindings/arm/rockchip.txt | 9 ++++
+ arch/arm64/boot/dts/rockchip/Makefile | 1 +
+ arch/arm64/boot/dts/rockchip/rk3368-evb.dtsi | 2 +-
+ .../dts/rockchip/rk3368-geekbox-landingship.dts | 57 ++++++++++++++++++++++
+ arch/arm64/boot/dts/rockchip/rk3368-r88.dts | 2 +-
+ 5 files changed, 69 insertions(+), 2 deletions(-)
create mode 100644 arch/arm64/boot/dts/rockchip/rk3368-geekbox-landingship.dts
- create mode 100644 arch/arm64/boot/dts/rockchip/rk3368-geekbox.dts
diff --git a/Documentation/devicetree/bindings/arm/rockchip.txt b/Documentation/devicetree/bindings/arm/rockchip.txt
-index 078c14f..ae84f4e 100644
+index 715d960..7cfadac 100644
--- a/Documentation/devicetree/bindings/arm/rockchip.txt
+++ b/Documentation/devicetree/bindings/arm/rockchip.txt
-@@ -87,6 +87,15 @@ Rockchip platforms device tree bindings
- "google,veyron-speedy-rev3", "google,veyron-speedy-rev2",
- "google,veyron-speedy", "google,veyron", "rockchip,rk3288";
+@@ -95,6 +95,15 @@ Rockchip platforms device tree bindings
+ Required root node properties:
+ - compatible = "mqmaker,miqi", "rockchip,rk3288";
+- GeekBuying GeekBox:
+ Required root node properties:
@@ -35,21 +33,21 @@ index 078c14f..ae84f4e 100644
Required root node properties:
- compatible = "rockchip,rk3368-evb-act8846", "rockchip,rk3368";
diff --git a/arch/arm64/boot/dts/rockchip/Makefile b/arch/arm64/boot/dts/rockchip/Makefile
-index e3f0b5f..201bcd9 100644
+index 7037a16..e002ebe 100644
--- a/arch/arm64/boot/dts/rockchip/Makefile
+++ b/arch/arm64/boot/dts/rockchip/Makefile
-@@ -1,4 +1,6 @@
+@@ -1,5 +1,6 @@
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3368-evb-act8846.dtb
-+dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3368-geekbox.dtb
+ dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3368-geekbox.dtb
+dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3368-geekbox-landingship.dtb
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3368-r88.dtb
+ dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3399-evb.dtb
- always := $(dtb-y)
diff --git a/arch/arm64/boot/dts/rockchip/rk3368-evb.dtsi b/arch/arm64/boot/dts/rockchip/rk3368-evb.dtsi
-index 8c219cc..e4ceb53 100644
+index fff8b19..bd4f2cf 100644
--- a/arch/arm64/boot/dts/rockchip/rk3368-evb.dtsi
+++ b/arch/arm64/boot/dts/rockchip/rk3368-evb.dtsi
-@@ -48,7 +48,7 @@
+@@ -49,7 +49,7 @@
stdout-path = "serial2:115200n8";
};
@@ -121,336 +119,11 @@ index 0000000..a28ace9
+&i2c2 {
+ status = "okay";
+};
-diff --git a/arch/arm64/boot/dts/rockchip/rk3368-geekbox.dts b/arch/arm64/boot/dts/rockchip/rk3368-geekbox.dts
-new file mode 100644
-index 0000000..46cdddf
---- /dev/null
-+++ b/arch/arm64/boot/dts/rockchip/rk3368-geekbox.dts
-@@ -0,0 +1,319 @@
-+/*
-+ * Copyright (c) 2016 Andreas Färber
-+ *
-+ * This file is dual-licensed: you can use it either under the terms
-+ * of the GPL or the X11 license, at your option. Note that this dual
-+ * licensing only applies to this file, and not this project as a
-+ * whole.
-+ *
-+ * a) This file is free software; you can redistribute it and/or
-+ * modify it under the terms of the GNU General Public License as
-+ * published by the Free Software Foundation; either version 2 of the
-+ * License, or (at your option) any later version.
-+ *
-+ * This file is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ * GNU General Public License for more details.
-+ *
-+ * Or, alternatively,
-+ *
-+ * b) Permission is hereby granted, free of charge, to any person
-+ * obtaining a copy of this software and associated documentation
-+ * files (the "Software"), to deal in the Software without
-+ * restriction, including without limitation the rights to use,
-+ * copy, modify, merge, publish, distribute, sublicense, and/or
-+ * sell copies of the Software, and to permit persons to whom the
-+ * Software is furnished to do so, subject to the following
-+ * conditions:
-+ *
-+ * The above copyright notice and this permission notice shall be
-+ * included in all copies or substantial portions of the Software.
-+ *
-+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-+ * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-+ * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-+ * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-+ * OTHER DEALINGS IN THE SOFTWARE.
-+ */
-+
-+/dts-v1/;
-+#include "rk3368.dtsi"
-+#include <dt-bindings/input/input.h>
-+
-+/ {
-+ model = "GeekBox";
-+ compatible = "geekbuying,geekbox", "rockchip,rk3368";
-+
-+ chosen {
-+ stdout-path = "serial2:115200n8";
-+ };
-+
-+ memory@0 {
-+ device_type = "memory";
-+ reg = <0x0 0x0 0x0 0x80000000>;
-+ };
-+
-+ ext_gmac: gmac-clk {
-+ compatible = "fixed-clock";
-+ clock-frequency = <125000000>;
-+ clock-output-names = "ext_gmac";
-+ #clock-cells = <0>;
-+ };
-+
-+ ir: ir-receiver {
-+ compatible = "gpio-ir-receiver";
-+ gpios = <&gpio3 30 GPIO_ACTIVE_LOW>;
-+ pinctrl-names = "default";
-+ pinctrl-0 = <&ir_int>;
-+ };
-+
-+ keys: gpio-keys {
-+ compatible = "gpio-keys";
-+ pinctrl-names = "default";
-+ pinctrl-0 = <&pwr_key>;
-+
-+ power {
-+ gpios = <&gpio0 2 GPIO_ACTIVE_LOW>;
-+ label = "GPIO Power";
-+ linux,code = <KEY_POWER>;
-+ wakeup-source;
-+ };
-+ };
-+
-+ leds: gpio-leds {
-+ compatible = "gpio-leds";
-+
-+ blue {
-+ gpios = <&gpio2 2 GPIO_ACTIVE_HIGH>;
-+ label = "geekbox:blue:led";
-+ default-state = "on";
-+ };
-+
-+ red {
-+ gpios = <&gpio2 3 GPIO_ACTIVE_HIGH>;
-+ label = "geekbox:red:led";
-+ default-state = "off";
-+ };
-+ };
-+
-+ vcc_sys: vcc-sys-regulator {
-+ compatible = "regulator-fixed";
-+ regulator-name = "vcc_sys";
-+ regulator-min-microvolt = <5000000>;
-+ regulator-max-microvolt = <5000000>;
-+ regulator-always-on;
-+ regulator-boot-on;
-+ };
-+};
-+
-+&emmc {
-+ status = "okay";
-+ bus-width = <8>;
-+ cap-mmc-highspeed;
-+ clock-frequency = <150000000>;
-+ disable-wp;
-+ keep-power-in-suspend;
-+ non-removable;
-+ num-slots = <1>;
-+ vmmc-supply = <&vcc_io>;
-+ vqmmc-supply = <&vcc18_flash>;
-+ pinctrl-names = "default";
-+ pinctrl-0 = <&emmc_clk>, <&emmc_cmd>, <&emmc_bus8>;
-+};
-+
-+&gmac {
-+ status = "okay";
-+ phy-supply = <&vcc_lan>;
-+ phy-mode = "rgmii";
-+ clock_in_out = "input";
-+ assigned-clocks = <&cru SCLK_MAC>;
-+ assigned-clock-parents = <&ext_gmac>;
-+ pinctrl-names = "default";
-+ pinctrl-0 = <&rgmii_pins>;
-+ tx_delay = <0x30>;
-+ rx_delay = <0x10>;
-+};
-+
-+&i2c0 {
-+ status = "okay";
-+
-+ rk808: pmic@1b {
-+ compatible = "rockchip,rk808";
-+ reg = <0x1b>;
-+ pinctrl-names = "default";
-+ pinctrl-0 = <&pmic_int>, <&pmic_sleep>;
-+ interrupt-parent = <&gpio0>;
-+ interrupts = <5 IRQ_TYPE_LEVEL_LOW>;
-+ rockchip,system-power-controller;
-+ vcc1-supply = <&vcc_sys>;
-+ vcc2-supply = <&vcc_sys>;
-+ vcc3-supply = <&vcc_sys>;
-+ vcc4-supply = <&vcc_sys>;
-+ vcc6-supply = <&vcc_sys>;
-+ vcc7-supply = <&vcc_sys>;
-+ vcc8-supply = <&vcc_io>;
-+ vcc9-supply = <&vcc_sys>;
-+ vcc10-supply = <&vcc_sys>;
-+ vcc11-supply = <&vcc_sys>;
-+ vcc12-supply = <&vcc_io>;
-+ clock-output-names = "xin32k", "rk808-clkout2";
-+ #clock-cells = <1>;
-+
-+ regulators {
-+ vdd_cpu: DCDC_REG1 {
-+ regulator-always-on;
-+ regulator-boot-on;
-+ regulator-min-microvolt = <700000>;
-+ regulator-max-microvolt = <1500000>;
-+ regulator-name = "vdd_cpu";
-+ };
-+
-+ vdd_log: DCDC_REG2 {
-+ regulator-always-on;
-+ regulator-boot-on;
-+ regulator-min-microvolt = <700000>;
-+ regulator-max-microvolt = <1500000>;
-+ regulator-name = "vdd_log";
-+ };
-+
-+ vcc_ddr: DCDC_REG3 {
-+ regulator-always-on;
-+ regulator-boot-on;
-+ regulator-name = "vcc_ddr";
-+ };
-+
-+ vcc_io: DCDC_REG4 {
-+ regulator-always-on;
-+ regulator-boot-on;
-+ regulator-min-microvolt = <3300000>;
-+ regulator-max-microvolt = <3300000>;
-+ regulator-name = "vcc_io";
-+ };
-+
-+ vcc18_flash: LDO_REG1 {
-+ regulator-always-on;
-+ regulator-boot-on;
-+ regulator-min-microvolt = <1800000>;
-+ regulator-max-microvolt = <1800000>;
-+ regulator-name = "vcc18_flash";
-+ };
-+
-+ vcc33_lcd: LDO_REG2 {
-+ regulator-always-on;
-+ regulator-boot-on;
-+ regulator-min-microvolt = <3300000>;
-+ regulator-max-microvolt = <3300000>;
-+ regulator-name = "vcc33_lcd";
-+ };
-+
-+ vdd_10: LDO_REG3 {
-+ regulator-always-on;
-+ regulator-boot-on;
-+ regulator-min-microvolt = <1000000>;
-+ regulator-max-microvolt = <1000000>;
-+ regulator-name = "vdd_10";
-+ };
-+
-+ vcca_18: LDO_REG4 {
-+ regulator-boot-on;
-+ regulator-min-microvolt = <1800000>;
-+ regulator-max-microvolt = <1800000>;
-+ regulator-name = "vcca_18";
-+ };
-+
-+ vccio_sd: LDO_REG5 {
-+ regulator-always-on;
-+ regulator-boot-on;
-+ regulator-min-microvolt = <1800000>;
-+ regulator-max-microvolt = <3300000>;
-+ regulator-name = "vccio_sd";
-+ };
-+
-+ vdd10_lcd: LDO_REG6 {
-+ regulator-always-on;
-+ regulator-boot-on;
-+ regulator-min-microvolt = <1000000>;
-+ regulator-max-microvolt = <1000000>;
-+ regulator-name = "vdd10_lcd";
-+ };
-+
-+ vcc_18: LDO_REG7 {
-+ regulator-always-on;
-+ regulator-boot-on;
-+ regulator-min-microvolt = <1800000>;
-+ regulator-max-microvolt = <1800000>;
-+ regulator-name = "vcc_18";
-+ };
-+
-+ vcc18_lcd: LDO_REG8 {
-+ regulator-always-on;
-+ regulator-boot-on;
-+ regulator-min-microvolt = <1800000>;
-+ regulator-max-microvolt = <1800000>;
-+ regulator-name = "vcc18_lcd";
-+ };
-+
-+ vcc_sd: SWITCH_REG1 {
-+ regulator-always-on;
-+ regulator-boot-on;
-+ regulator-name = "vcc_sd";
-+ };
-+
-+ vcc_lan: SWITCH_REG2 {
-+ regulator-always-on;
-+ regulator-boot-on;
-+ regulator-name = "vcc_lan";
-+ };
-+ };
-+ };
-+};
-+
-+&pinctrl {
-+ ir {
-+ ir_int: ir-int {
-+ rockchip,pins = <3 30 RK_FUNC_GPIO &pcfg_pull_none>;
-+ };
-+ };
-+
-+ keys {
-+ pwr_key: pwr-key {
-+ rockchip,pins = <0 2 RK_FUNC_GPIO &pcfg_pull_none>;
-+ };
-+ };
-+
-+ pmic {
-+ pmic_sleep: pmic-sleep {
-+ rockchip,pins = <0 0 RK_FUNC_2 &pcfg_pull_none>;
-+ };
-+
-+ pmic_int: pmic-int {
-+ rockchip,pins = <0 5 RK_FUNC_GPIO &pcfg_pull_up>;
-+ };
-+ };
-+};
-+
-+&tsadc {
-+ status = "okay";
-+ rockchip,hw-tshut-mode = <0>; /* CRU */
-+ rockchip,hw-tshut-polarity = <1>; /* high */
-+};
-+
-+&uart2 {
-+ status = "okay";
-+};
-+
-+&usb_host0_ehci {
-+ status = "okay";
-+};
-+
-+&usb_otg {
-+ status = "okay";
-+};
-+
-+&wdt {
-+ status = "okay";
-+};
diff --git a/arch/arm64/boot/dts/rockchip/rk3368-r88.dts b/arch/arm64/boot/dts/rockchip/rk3368-r88.dts
-index 104cbee..9548129 100644
+index b56b720..5ea68c4 100644
--- a/arch/arm64/boot/dts/rockchip/rk3368-r88.dts
+++ b/arch/arm64/boot/dts/rockchip/rk3368-r88.dts
-@@ -51,7 +51,7 @@
+@@ -52,7 +52,7 @@
stdout-path = "serial2:115200n8";
};
@@ -460,5 +133,5 @@ index 104cbee..9548129 100644
reg = <0x0 0x0 0x0 0x40000000>;
};
--
-2.5.0
+2.5.5
diff --git a/freed-ora/current/master/gitrev b/freed-ora/current/master/gitrev
index 2d038f910..40fc6946b 100644
--- a/freed-ora/current/master/gitrev
+++ b/freed-ora/current/master/gitrev
@@ -1 +1 @@
-a2ccb68b1e6add42c0bf3ade73cd11c98d32b890
+cc23c619f8da3ccbe6a856c79fb5a3d245b68daf
diff --git a/freed-ora/current/master/hibernate-Disable-in-a-signed-modules-environment.patch b/freed-ora/current/master/hibernate-Disable-in-a-signed-modules-environment.patch
index f62ea08b0..bea2892ee 100644
--- a/freed-ora/current/master/hibernate-Disable-in-a-signed-modules-environment.patch
+++ b/freed-ora/current/master/hibernate-Disable-in-a-signed-modules-environment.patch
@@ -1,7 +1,7 @@
-From 51abecb00c48941cc3db19701cc73e65082924bb Mon Sep 17 00:00:00 2001
+From e07815cf02eadb245fa60359133b122f9ffe9045 Mon Sep 17 00:00:00 2001
From: Josh Boyer <jwboyer@fedoraproject.org>
Date: Fri, 20 Jun 2014 08:53:24 -0400
-Subject: [PATCH 14/20] hibernate: Disable in a signed modules environment
+Subject: [PATCH 3/9] hibernate: Disable in a signed modules environment
There is currently no way to verify the resume image when returning
from hibernate. This might compromise the signed modules trust model,
@@ -14,7 +14,7 @@ Signed-off-by: Josh Boyer <jwboyer@fedoraproject.org>
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/kernel/power/hibernate.c b/kernel/power/hibernate.c
-index 690f78f210f2..037303a1cba9 100644
+index fca9254280ee..ffd8644078b2 100644
--- a/kernel/power/hibernate.c
+++ b/kernel/power/hibernate.c
@@ -29,6 +29,7 @@
@@ -35,5 +35,5 @@ index 690f78f210f2..037303a1cba9 100644
/**
--
-2.4.3
+2.5.5
diff --git a/freed-ora/current/master/hp-wmi-fix-wifi-cannot-be-hard-unblock.patch b/freed-ora/current/master/hp-wmi-fix-wifi-cannot-be-hard-unblock.patch
new file mode 100644
index 000000000..27744a0c3
--- /dev/null
+++ b/freed-ora/current/master/hp-wmi-fix-wifi-cannot-be-hard-unblock.patch
@@ -0,0 +1,48 @@
+From patchwork Mon Jun 13 11:44:00 2016
+Content-Type: text/plain; charset="utf-8"
+MIME-Version: 1.0
+Content-Transfer-Encoding: 7bit
+Subject: hp-wmi: fix wifi cannot be hard-unblock
+From: Alex Hung <alex.hung@canonical.com>
+X-Patchwork-Id: 9172765
+Message-Id: <1465818240-11994-1-git-send-email-alex.hung@canonical.com>
+To: dvhart@infradead.org, platform-driver-x86@vger.kernel.org,
+ alex.hung@canonical.com, david.ward@ll.mit.edu
+Date: Mon, 13 Jun 2016 19:44:00 +0800
+
+Several users reported wifi cannot be unblocked as discussed in [1].
+This patch removes the useof 2009 flag by BIOS but uses the actual WMI
+function calls - it will be skipped if WMI reports unsupported
+
+[1] https://bugzilla.kernel.org/show_bug.cgi?id=69131
+
+Signed-off-by: Alex Hung <alex.hung@canonical.com>
+---
+ drivers/platform/x86/hp-wmi.c | 7 ++++++-
+ 1 file changed, 6 insertions(+), 1 deletion(-)
+
+diff --git a/drivers/platform/x86/hp-wmi.c b/drivers/platform/x86/hp-wmi.c
+index 6f145f2..96ffda4 100644
+--- a/drivers/platform/x86/hp-wmi.c
++++ b/drivers/platform/x86/hp-wmi.c
+@@ -718,6 +718,11 @@ static int __init hp_wmi_rfkill_setup(struct platform_device *device)
+ if (err)
+ return err;
+
++ err = hp_wmi_perform_query(HPWMI_WIRELESS_QUERY, 1, &wireless,
++ sizeof(wireless), 0);
++ if (err)
++ return err;
++
+ if (wireless & 0x1) {
+ wifi_rfkill = rfkill_alloc("hp-wifi", &device->dev,
+ RFKILL_TYPE_WLAN,
+@@ -882,7 +887,7 @@ static int __init hp_wmi_bios_setup(struct platform_device *device)
+ wwan_rfkill = NULL;
+ rfkill2_count = 0;
+
+- if (hp_wmi_bios_2009_later() || hp_wmi_rfkill_setup(device))
++ if (hp_wmi_rfkill_setup(device))
+ hp_wmi_rfkill2_setup(device);
+
+ err = device_create_file(&device->dev, &dev_attr_display);
diff --git a/freed-ora/current/master/ideapad-laptop-Add-Lenovo-ideapad-Y700-17ISK-to-no_h.patch b/freed-ora/current/master/ideapad-laptop-Add-Lenovo-ideapad-Y700-17ISK-to-no_h.patch
deleted file mode 100644
index 16788f756..000000000
--- a/freed-ora/current/master/ideapad-laptop-Add-Lenovo-ideapad-Y700-17ISK-to-no_h.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-From 14b627c610f93c2700f9a3825ac10c35d51acfe4 Mon Sep 17 00:00:00 2001
-From: Josh Boyer <jwboyer@fedoraproject.org>
-Date: Mon, 7 Dec 2015 13:50:38 -0500
-Subject: [PATCH] ideapad-laptop: Add Lenovo ideapad Y700-17ISK to no_hw_rfkill
- dmi list
-
-One of the newest ideapad models also lacks a physical hw rfkill switch,
-and trying to read the hw rfkill switch through the ideapad module
-causes it to always reported blocking breaking wifi.
-
-Fix it by adding this model to the DMI list.
-
-BugLink: https://bugzilla.redhat.com/show_bug.cgi?id=1286293
-Cc: stable@vger.kernel.org
-Signed-off-by: Josh Boyer <jwboyer@fedoraproject.org>
----
- drivers/platform/x86/ideapad-laptop.c | 7 +++++++
- 1 file changed, 7 insertions(+)
-
-diff --git a/drivers/platform/x86/ideapad-laptop.c b/drivers/platform/x86/ideapad-laptop.c
-index a313dfc0245f..d28db0e793df 100644
---- a/drivers/platform/x86/ideapad-laptop.c
-+++ b/drivers/platform/x86/ideapad-laptop.c
-@@ -865,6 +865,13 @@ static const struct dmi_system_id no_hw_rfkill_list[] = {
- },
- },
- {
-+ .ident = "Lenovo ideapad Y700-17ISK",
-+ .matches = {
-+ DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"),
-+ DMI_MATCH(DMI_PRODUCT_VERSION, "Lenovo ideapad Y700-17ISK"),
-+ },
-+ },
-+ {
- .ident = "Lenovo Yoga 2 11 / 13 / Pro",
- .matches = {
- DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"),
---
-2.5.0
-
diff --git a/freed-ora/current/master/ipv4-fib-don-t-warn-when-primary-address-is-missing-.patch b/freed-ora/current/master/ipv4-fib-don-t-warn-when-primary-address-is-missing-.patch
deleted file mode 100644
index 9e4cf4e0e..000000000
--- a/freed-ora/current/master/ipv4-fib-don-t-warn-when-primary-address-is-missing-.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-From 9f79323a0aebccb9915ab8f4b7dcf531578b9cf9 Mon Sep 17 00:00:00 2001
-From: Paolo Abeni <pabeni@redhat.com>
-Date: Thu, 21 Apr 2016 20:23:31 -0400
-Subject: [PATCH] ipv4/fib: don't warn when primary address is missing if
- in_dev is dead
-
-After commit fbd40ea0180a ("ipv4: Don't do expensive useless work
-during inetdev destroy.") when deleting an interface,
-fib_del_ifaddr() can be executed without any primary address
-present on the dead interface.
-
-The above is safe, but triggers some "bug: prim == NULL" warnings.
-
-This commit avoids warning if the in_dev is dead
-
-Signed-off-by: Paolo Abeni <pabeni@redhat.com>
----
- net/ipv4/fib_frontend.c | 6 +++++-
- 1 file changed, 5 insertions(+), 1 deletion(-)
-
-diff --git a/net/ipv4/fib_frontend.c b/net/ipv4/fib_frontend.c
-index 8a9246deccfe..63566ec54794 100644
---- a/net/ipv4/fib_frontend.c
-+++ b/net/ipv4/fib_frontend.c
-@@ -904,7 +904,11 @@ void fib_del_ifaddr(struct in_ifaddr *ifa, struct in_ifaddr *iprim)
- if (ifa->ifa_flags & IFA_F_SECONDARY) {
- prim = inet_ifa_byprefix(in_dev, any, ifa->ifa_mask);
- if (!prim) {
-- pr_warn("%s: bug: prim == NULL\n", __func__);
-+ /* if the device has been deleted, we don't perform
-+ * address promotion
-+ */
-+ if (!in_dev->dead)
-+ pr_warn("%s: bug: prim == NULL\n", __func__);
- return;
- }
- if (iprim && iprim != prim) {
---
-2.5.5
-
diff --git a/freed-ora/current/master/kernel.spec b/freed-ora/current/master/kernel.spec
index d366d77cf..14ff51040 100644
--- a/freed-ora/current/master/kernel.spec
+++ b/freed-ora/current/master/kernel.spec
@@ -6,7 +6,7 @@ Summary: The Linux kernel
# For a stable, released kernel, released_kernel should be 1. For rawhide
# and/or a kernel built from an rc or git snapshot, released_kernel should
# be 0.
-%global released_kernel 1
+%global released_kernel 0
# Sign modules on x86. Make sure the config files match this setting if more
# architectures are added.
@@ -57,9 +57,9 @@ Summary: The Linux kernel
%define baselibre -libre
%define basegnu -gnu%{?librev}
-# To be inserted between "patch" and "-2.6.".
+# To be inserted between "patch" and "-4.".
#define stablelibre -4.6%{?stablegnux}
-#define rcrevlibre -4.6%{?rcrevgnux}
+%define rcrevlibre -4.6%{?rcrevgnux}
#define gitrevlibre -4.6%{?gitrevgnux}
%if 0%{?stablelibre:1}
@@ -105,7 +105,7 @@ Summary: The Linux kernel
# The next upstream release sublevel (base_sublevel+1)
%define upstream_sublevel %(echo $((%{base_sublevel} + 1)))
# The rc snapshot level
-%define rcrev 0
+%define rcrev 7
# The git snapshot level
%define gitrev 0
# Set rpm version accordingly
@@ -411,7 +411,7 @@ Requires: kernel-libre-modules-uname-r = %{KVERREL}%{?variant}
# List the packages used during the kernel build
#
BuildRequires: kmod, patch, bash, sh-utils, tar, git
-BuildRequires: bzip2, xz, findutils, gzip, m4, perl, perl-Carp, make, diffutils, gawk
+BuildRequires: bzip2, xz, findutils, gzip, m4, perl, perl-Carp, perl-devel, perl-generators, make, diffutils, gawk
BuildRequires: gcc, binutils, redhat-rpm-config, hmaccalc
BuildRequires: net-tools, hostname, bc
%if %{with_sparse}
@@ -547,13 +547,12 @@ Patch07: freedo.patch
Patch420: arm64-avoid-needing-console-to-enable-serial-console.patch
-Patch421: arm64-acpi-drop-expert-patch.patch
-
# http://www.spinics.net/lists/arm-kernel/msg490981.html
Patch422: geekbox-v4-device-tree-support.patch
# http://www.spinics.net/lists/arm-kernel/msg483898.html
-Patch423: Initial-AllWinner-A64-and-PINE64-support.patch
+# This has major conflicts and needs to be rebased
+# Patch423: Initial-AllWinner-A64-and-PINE64-support.patch
# http://www.spinics.net/lists/linux-tegra/msg26029.html
Patch426: usb-phy-tegra-Add-38.4MHz-clock-table-entry.patch
@@ -561,9 +560,6 @@ Patch426: usb-phy-tegra-Add-38.4MHz-clock-table-entry.patch
# http://patchwork.ozlabs.org/patch/587554/
Patch430: ARM-tegra-usb-no-reset.patch
-# http://www.spinics.net/lists/linux-tegra/msg25152.html
-Patch431: Fix-tegra-to-use-stdout-path-for-serial-console.patch
-
Patch432: arm-i.MX6-Utilite-device-dtb.patch
# mvebu DSA switch fixes
@@ -605,8 +601,6 @@ Patch482: Add-option-to-automatically-enforce-module-signature.patch
Patch483: efi-Disable-secure-boot-if-shim-is-in-insecure-mode.patch
-Patch484: efi-Make-EFI_SECURE_BOOT_SIG_ENFORCE-depend-on-EFI.patch
-
Patch485: efi-Add-EFI_SECURE_BOOT-bit.patch
Patch486: hibernate-Disable-in-a-signed-modules-environment.patch
@@ -615,6 +609,9 @@ Patch487: Add-EFI-signature-data-types.patch
Patch488: Add-an-EFI-signature-blob-parser-and-key-loader.patch
+# This doesn't apply. It seems like it could be replaced by
+# https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=5ac7eace2d00eab5ae0e9fdee63e38aee6001f7c
+# which has an explicit line about blacklisting
Patch489: KEYS-Add-a-system-blacklist-keyring.patch
Patch490: MODSIGN-Import-certificates-from-UEFI-Secure-Boot.patch
@@ -647,28 +644,36 @@ Patch502: firmware-Drop-WARN-from-usermodehelper_read_trylock-.patch
Patch508: kexec-uefi-copy-secure_boot-flag-in-boot-params.patch
-#rhbz 1286293
-Patch571: ideapad-laptop-Add-Lenovo-ideapad-Y700-17ISK-to-no_h.patch
-
#Required for some persistent memory options
Patch641: disable-CONFIG_EXPERT-for-ZONE_DMA.patch
#CVE-2016-3134 rhbz 1317383 1317384
Patch665: netfilter-x_tables-deal-with-bogus-nextoffset-values.patch
-#rhbz 1309487
-Patch701: antenna_select.patch
-
-#CVE-2016-4482 rhbz 1332931 1332932
-Patch706: USB-usbfs-fix-potential-infoleak-in-devio.patch
-
-#CVE-2016-4569 rhbz 1334643 1334645
-Patch714: ALSA-timer-Fix-leak-in-SNDRV_TIMER_IOCTL_PARAMS.patch
-Patch715: ALSA-timer-Fix-leak-in-events-via-snd_timer_user_cca.patch
-Patch716: ALSA-timer-Fix-leak-in-events-via-snd_timer_user_tin.patch
-
-#CVE-2016-3713 rhbz 1332139 1336410
-Patch717: KVM-MTRR-remove-MSR-0x2f8.patch
+#rhbz 1338025
+Patch728: hp-wmi-fix-wifi-cannot-be-hard-unblock.patch
+
+#skl_update_other_pipe_wm issue patch-series from drm-next, rhbz 1305038
+Patch801: 0001-drm-i915-Reorganize-WM-structs-unions-in-CRTC-state.patch
+Patch802: 0002-drm-i915-Rename-s-skl_compute_pipe_wm-skl_build_pipe.patch
+Patch803: 0003-drm-i915-gen9-Cache-plane-data-rates-in-CRTC-state.patch
+Patch804: 0004-drm-i915-gen9-Allow-calculation-of-data-rate-for-in-.patch
+Patch805: 0005-drm-i915-gen9-Store-plane-minimum-blocks-in-CRTC-wm-.patch
+Patch806: 0006-drm-i915-Track-whether-an-atomic-transaction-changes.patch
+Patch807: 0007-drm-i915-gen9-Allow-skl_allocate_pipe_ddb-to-operate.patch
+Patch808: 0008-drm-i915-Add-distrust_bios_wm-flag-to-dev_priv-v2.patch
+Patch809: 0009-drm-i915-gen9-Compute-DDB-allocation-at-atomic-check.patch
+Patch810: 0010-drm-i915-gen9-Drop-re-allocation-of-DDB-at-atomic-co.patch
+Patch811: 0011-drm-i915-gen9-Calculate-plane-WM-s-from-state.patch
+Patch812: 0012-drm-i915-gen9-Allow-watermark-calculation-on-in-flig.patch
+Patch813: 0013-drm-i915-gen9-Use-a-bitmask-to-track-dirty-pipe-wate.patch
+Patch814: 0014-drm-i915-gen9-Propagate-watermark-calculation-failur.patch
+Patch815: 0015-drm-i915-gen9-Calculate-watermarks-during-atomic-che.patch
+Patch816: 0016-drm-i915-gen9-Reject-display-updates-that-exceed-wm-.patch
+Patch817: 0017-drm-i915-Remove-wm_config-from-dev_priv-intel_atomic.patch
+
+#Workaround for glibc update
+Patch835: 0001-Work-around-for-addition-of-metag-def-but-not-reloca.patch
# END OF PATCH DEFINITIONS
@@ -2207,7 +2212,7 @@ fi
%ifarch %{cpupowerarchs}
%files -n kernel-libre-tools-libs
%{_libdir}/libcpupower.so.0
-%{_libdir}/libcpupower.so.0.0.0
+%{_libdir}/libcpupower.so.0.0.1
%files -n kernel-libre-tools-libs-devel
%{_libdir}/libcpupower.so
@@ -2293,7 +2298,207 @@ fi
#
#
%changelog
-* Wed May 18 2016 Alexandre Oliva <lxoliva@fsfla.org> -libre
+* Tue Jul 12 2016 Alexandre Oliva <lxoliva@fsfla.org> -libre
+- GNU Linux-libre 4.7-rc7-gnu.
+
+* Mon Jul 11 2016 Justin M. Forbes <jforbes@fedoraproject.org> - 4.7.0-0.rc7.git0.1
+- Disable debugging options.
+- linux v4.7-rc7
+
+* Fri Jul 08 2016 Laura Abbott <labbott@redhat.com> - 4.7.0-0.rc6.git2.2
+- Workaround for glibc change
+
+* Fri Jul 08 2016 Laura Abbott <labbott@redhat.com> - 4.7.0-0.rc6.git2.1
+- Linux v4.7-rc6-94-gcc23c61
+
+* Thu Jul 07 2016 Laura Abbott <labbott@redhat.com> - 4.7.0-0.rc6.git1.1
+- Linux v4.7-rc6-74-g076501f
+- Reenable debugging options.
+
+* Thu Jul 07 2016 Josh Boyer <jwboyer@fedoraproject.org>
+- Fix oops in qla2xxx driver (rhbz 1346753)
+- Fix blank screen on some nvidia cards (rbhz 1351205)
+
+* Thu Jul 7 2016 Peter Robinson <pbrobinson@fedoraproject.org>
+- Enable Marvell mvebu for aarch64
+
+* Tue Jul 05 2016 Laura Abbott <labbott@redhat.com> - 4.7.0-0.rc6.git0.1
+- Linux v4.7-rc6
+- Disable debugging options.
+
+* Fri Jul 01 2016 Laura Abbott <labbott@redhat.com> - 4.7.0-0.rc5.git3.1
+- Linux v4.7-rc5-254-g1a0a02d
+
+* Thu Jun 30 2016 Laura Abbott <labbott@redhat.com> - 4.7.0-0.rc5.git2.1
+- Linux v4.7-rc5-227-ge7bdea7
+- Reenable debugging options.
+
+* Tue Jun 28 2016 Laura Abbott <labbott@redhat.com> - 4.7.0-0.rc5.git1.1
+- Linux v4.7-rc5-28-g02184c6
+
+* Mon Jun 27 2016 Laura Abbott <labbott@redhat.com> - 4.7.0-0.rc5.git0.1
+- Linux v4.7-rc5
+- Disable debugging options.
+
+* Fri Jun 24 2016 Laura Abbott <labbott@redhat.com> - 4.7.0-0.rc4.git3.1
+- Linux v4.7-rc4-76-g63c04ee
+
+* Thu Jun 23 2016 Laura Abbott <labbott@redhat.com> - 4.7.0-0.rc4.git2.1
+- Linux v4.7-rc4-20-gf9020d1
+
+* Wed Jun 22 2016 Hans de Goede <jwrdegoede@fedoraproject.org>
+- Bring in patch-series from drm-next to fix skl_update_other_pipe_wm issues
+ (rhbz 1305038)
+- Disable fbc on haswell by default (fdo#96461)
+
+* Tue Jun 21 2016 Laura Abbott <labbott@redhat.com> - 4.7.0-0.rc4.git1.1
+- Linux v4.7-rc4-14-g67016f6
+- Reenable debugging options.
+
+* Mon Jun 20 2016 Laura Abbott <labbott@redhat.com> - 4.7.0-0.rc4.git0.1
+- Linux v4.7-rc4
+- Disable debugging options.
+
+* Fri Jun 17 2016 Laura Abbott <labbott@redhat.com> - 4.7.0-0.rc3.git3.1
+- Linux v4.7-rc3-87-gbb96727
+- enable CONFIG_PWM (rhbz 1347454)
+
+* Thu Jun 16 2016 Laura Abbott <labbott@redhat.com> - 4.7.0-0.rc3.git2.1
+- Linux v4.7-rc3-55-gd325ea8
+
+* Wed Jun 15 2016 Laura Abbott <labbott@fedoraproject.org>
+- hp-wmi: fix wifi cannot be hard-unblock (rhbz 1338025)
+
+* Wed Jun 15 2016 Josh Boyer <jwboyer@fedoraproject.org>
+- CVE-2016-4470 keys: uninitialized variable crash (rhbz 1341716 1346626)
+
+* Wed Jun 15 2016 Peter Robinson <pbrobinson@fedoraproject.org>
+- Enable support for TI dm81xx devices (kwizart)
+
+* Tue Jun 14 2016 Laura Abbott <labbott@redhat.com>
+- ath9k: fix GPIO mask for AR9462 and AR9565 (rhbz 1346145)
+
+* Tue Jun 14 2016 Laura Abbott <labbott@redhat.com> - 4.7.0-0.rc3.git1.1
+- Linux v4.7-rc3-9-gdb06d75
+- Reenable debugging options.
+
+* Tue Jun 14 2016 Peter Robinson <pbrobinson@fedoraproject.org>
+- Enable Infiniband on ARM now we have HW
+
+* Mon Jun 13 2016 Laura Abbott <labbott@redhat.com> - 4.7.0-0.rc3.git0.1
+- Linux v4.7-rc3
+- Disable debugging options.
+
+* Fri Jun 10 2016 Peter Robinson <pbrobinson@fedoraproject.org> 4.7.0-0.rc2.git3.2
+- Fix Power64 module filters
+- Minor ARM updates
+
+* Fri Jun 10 2016 Laura Abbott <labbott@redhat.com> - 4.7.0-0.rc2.git3.1
+- Linux v4.7-rc2-64-g147d9e7
+
+* Thu Jun 9 2016 Peter Robinson <pbrobinson@fedoraproject.org>
+- Enable ARM big.LITTLE on ARMv7 LPAE kernels
+
+* Wed Jun 08 2016 Laura Abbott <labbott@redhat.com> - 4.7.0-0.rc2.git2.1
+- Linux v4.7-rc2-20-gc8ae067
+
+* Wed Jun 8 2016 Peter Robinson <pbrobinson@fedoraproject.org>
+- Minor ARM/aarch64 config updates
+
+* Tue Jun 07 2016 Laura Abbott <labbott@redhat.com> - 4.7.0-0.rc2.git1.1
+- Linux v4.7-rc2-4-g3613a62
+
+* Tue Jun 07 2016 Josh Boyer <jwboyer@fedoraproject.org>
+- CVE-2016-5244 info leak in rds (rhbz 1343338 1343337)
+- CVE-2016-5243 info leak in tipc (rhbz 1343338 1343335)
+
+* Mon Jun 06 2016 Laura Abbott <labbott@redhat.com> - 4.7.0-0.rc2.git0.1
+- Linux v4.7-rc2
+- Disable debugging options.
+
+* Fri Jun 03 2016 Laura Abbott <labbott@redhat.com> - 4.7.0-0.rc1.git4.1
+- Linux v4.7-rc1-122-g4340fa5
+
+* Thu Jun 02 2016 Laura Abbott <labbott@redhat.com> - 4.7.0-0.rc1.git3.1
+- Linux v4.7-rc1-104-g719af93
+
+* Wed Jun 01 2016 Laura Abbott <labbott@redhat.com> - 4.7.0-0.rc1.git2.2
+- Add filtering for i686 as well
+
+* Wed Jun 01 2016 Laura Abbott <labbott@redhat.com> - 4.7.0-0.rc1.git2.1
+- Linux v4.7-rc1-94-g6b15d66
+- Reenable debugging options.
+
+* Tue May 31 2016 Laura Abbott <labbott@redhat.com> - 4.7.0-0.rc1.git1.2
+- Update module filters
+
+* Tue May 31 2016 Laura Abbott <labbott@redhat.com> - 4.7.0-0.rc1.git1.1
+- Linux v4.7-rc1-12-g852f42a
+- Disable debugging options.
+
+* Mon May 30 2016 Peter Robinson <pbrobinson@fedoraproject.org>
+- Update Utilite patch
+- Minor ARM cleanups
+- Initial Qualcomm ARM64 support (Dragonboard 410c)
+
+* Fri May 27 2016 Laura Abbott <labbott@redhat.com> - 4.7.0-0.rc0.git10.1
+- Linux v4.6-11010-gdc03c0f
+- Kconfig, Kbuild, ceph, nfs, xfs, mmc, hwmon merges
+
+* Thu May 26 2016 Laura Abbott <labbott@redhat.com> - 4.7.0-0.rc0.git9.1
+- Linux v4.6-10675-g2f7c3a1
+- EFI, sched, perf, objtool, acpi, pm, drm merges
+
+* Wed May 25 2016 Laura Abbott <labbott@redhat.com> - 4.7.0-0.rc0.git8.1
+- Linux v4.6-10530-g28165ec
+- ARM SoC, asm-generic, nfsd, ext4, spi, mtd, xen, merges
+
+* Tue May 24 2016 Josh Boyer <jwboyer@fedoraproject.org> - 4.7.0-0.rc0.git7.1
+- Linux v4.6-10203-g84787c572d40
+- Enable CONFIG_MEMORY_HOTPLUG_DEFAULT_ONLINE (rhbz 1339281)
+- Fixup SB patchset to work with upstream changes
+
+* Mon May 23 2016 Laura Abbott <labbott@redhat.com> - 4.7.0-0.rc0.git6.1
+- Linux v4.6-8907-g7639dad
+- trace, f2fs, btrfs, rtc, mailbox, akpm, staging, driver core, char, usb,
+ tty, clk, net, devicetree, rdma, mfd, iio, powerpc, arm merges
+
+* Fri May 20 2016 Laura Abbott <labbott@redhat.com> - 4.7.0-0.rc0.git5.1
+- Linux v4.6-6148-g03b979d
+- Docs, i2c, md, iommu, sound, pci, pinctrl, dmaengine, kvm, security merges
+
+* Fri May 20 2016 Josh Boyer <jwboyer@fedoraproject.org>
+- CVE-2016-4440 kvm: incorrect state leading to APIC register access (rhbz 1337806 1337807)
+
+* Fri May 20 2016 Peter Robinson <pbrobinson@fedoraproject.org>
+- Minor ARM cleanups, enable Tegra USB-3 controller
+
+* Thu May 19 2016 Laura Abbott <labbott@redhat.com> - 4.7.0-0.rc0.git4.1
+- Linux v4.6-5028-g2600a46
+- trace, audit, input, media, scsi, armsoc merges
+
+* Wed May 18 2016 Laura Abbott <labbott@redhat.com> - 4.7.0-0.rc0.git3.1
+- Linux v4.6-3623-g0b7962a
+- ata, regulator, gpio, HID, livepatching, networking, dm, block, vfs, fs,
+ timers, crypto merges
+
+* Tue May 17 2016 Laura Abbott <labbott@redhat.com> - 4.7.0-0.rc0.git2.2
+- Adjust solib for cpupower
+
+* Tue May 17 2016 Laura Abbott <labbott@redhat.com> - 4.7.0-0.rc0.git2.1
+- Linux v4.6-1278-g1649098
+- Enable CONFIG_INTEL_POWERCLAMP
+- pm, ACPI, mmc, regulator, i2c, hwmon, edac, led, arm64, x86, sched, RAS merges
+
+* Mon May 16 2016 Laura Abbott <labbott@redhat.com> - 4.7.0-0.rc0.git1.1
+- Linux v4.6-153-g3469d26
+- Reenable debugging options.
+- locking, efi, signals, rcu merges
+
+* Mon May 16 2016 Justin M. Forbes <jforbes@fedoraproject.org>
+- Disable CONFIG_DEBUG_VM_PGFLAGS on non debug kernels (rhbz 1335173)
+
+* Mon May 16 2016 Alexandre Oliva <lxoliva@fsfla.org> -libre Wed May 18
- GNU Linux-libre 4.6-gnu.
* Mon May 16 2016 Josh Boyer <jwboyer@fedoraproject.org> - 4.6.0-1
diff --git a/freed-ora/current/master/netfilter-x_tables-deal-with-bogus-nextoffset-values.patch b/freed-ora/current/master/netfilter-x_tables-deal-with-bogus-nextoffset-values.patch
index ebfe1716f..e6f5fa6f5 100644
--- a/freed-ora/current/master/netfilter-x_tables-deal-with-bogus-nextoffset-values.patch
+++ b/freed-ora/current/master/netfilter-x_tables-deal-with-bogus-nextoffset-values.patch
@@ -1,6 +1,7 @@
-Subject: [PATCH nf] netfilter: x_tables: deal with bogus nextoffset values
-From: Florian Westphal <fw () strlen ! de>
-Date: 2016-03-10 0:56:02
+From 2b32a7d82223d76ace432305b18c5816cadff878 Mon Sep 17 00:00:00 2001
+From: Florian Westphal <fw () strlen ! de>
+Date: Thu, 10 Mar 2016 00:56:02 -0800
+Subject: [PATCH] netfilter: x_tables: deal with bogus nextoffset values
Ben Hawkes says:
@@ -22,16 +23,16 @@ when we move to a next entry as well.
Signed-off-by: Florian Westphal <fw@strlen.de>
---
- net/ipv4/netfilter/arp_tables.c | 16 ++++++++--------
- net/ipv4/netfilter/ip_tables.c | 15 ++++++++-------
- net/ipv6/netfilter/ip6_tables.c | 13 ++++++-------
- 3 files changed, 22 insertions(+), 22 deletions(-)
+ net/ipv4/netfilter/arp_tables.c | 8 ++++++++
+ net/ipv4/netfilter/ip_tables.c | 8 ++++++++
+ net/ipv6/netfilter/ip6_tables.c | 6 ++++++
+ 3 files changed, 22 insertions(+)
diff --git a/net/ipv4/netfilter/arp_tables.c b/net/ipv4/netfilter/arp_tables.c
-index b488cac..5a0b591 100644
+index 2033f92..a9b6c76 100644
--- a/net/ipv4/netfilter/arp_tables.c
+++ b/net/ipv4/netfilter/arp_tables.c
-@@ -437,6 +437,10 @@ static int mark_source_chains(const struct xt_table_info *newinfo,
+@@ -376,6 +376,10 @@ static int mark_source_chains(const struct xt_table_info *newinfo,
/* Move along one */
size = e->next_offset;
@@ -41,25 +42,10 @@ index b488cac..5a0b591 100644
+
e = (struct arpt_entry *)
(entry0 + pos + size);
- e->counters.pcnt = pos;
-@@ -447,14 +451,6 @@ static int mark_source_chains(const struct xt_table_info *newinfo,
- if (strcmp(t->target.u.user.name,
- XT_STANDARD_TARGET) == 0 &&
- newpos >= 0) {
-- if (newpos > newinfo->size -
-- sizeof(struct arpt_entry)) {
-- duprintf("mark_source_chains: "
-- "bad verdict (%i)\n",
-- newpos);
-- return 0;
-- }
--
- /* This a jump; chase it. */
- duprintf("Jump rule %u -> %u\n",
- pos, newpos);
-@@ -462,6 +458,10 @@ static int mark_source_chains(const struct xt_table_info *newinfo,
- /* ... this is a fallthru */
- newpos = pos + e->next_offset;
+ if (pos + size >= newinfo->size)
+@@ -399,6 +403,10 @@ static int mark_source_chains(const struct xt_table_info *newinfo,
+ if (newpos >= newinfo->size)
+ return 0;
}
+
+ if (newpos > newinfo->size - sizeof(*e))
@@ -69,10 +55,10 @@ index b488cac..5a0b591 100644
(entry0 + newpos);
e->counters.pcnt = pos;
diff --git a/net/ipv4/netfilter/ip_tables.c b/net/ipv4/netfilter/ip_tables.c
-index b99affa..ceb995f 100644
+index 54906e0..7530ecd 100644
--- a/net/ipv4/netfilter/ip_tables.c
+++ b/net/ipv4/netfilter/ip_tables.c
-@@ -519,6 +519,10 @@ mark_source_chains(const struct xt_table_info *newinfo,
+@@ -447,6 +447,10 @@ mark_source_chains(const struct xt_table_info *newinfo,
/* Move along one */
size = e->next_offset;
@@ -82,24 +68,10 @@ index b99affa..ceb995f 100644
+
e = (struct ipt_entry *)
(entry0 + pos + size);
- e->counters.pcnt = pos;
-@@ -529,13 +533,6 @@ mark_source_chains(const struct xt_table_info *newinfo,
- if (strcmp(t->target.u.user.name,
- XT_STANDARD_TARGET) == 0 &&
- newpos >= 0) {
-- if (newpos > newinfo->size -
-- sizeof(struct ipt_entry)) {
-- duprintf("mark_source_chains: "
-- "bad verdict (%i)\n",
-- newpos);
-- return 0;
-- }
- /* This a jump; chase it. */
- duprintf("Jump rule %u -> %u\n",
- pos, newpos);
-@@ -543,6 +540,10 @@ mark_source_chains(const struct xt_table_info *newinfo,
- /* ... this is a fallthru */
- newpos = pos + e->next_offset;
+ if (pos + size >= newinfo->size)
+@@ -470,6 +474,10 @@ mark_source_chains(const struct xt_table_info *newinfo,
+ if (newpos >= newinfo->size)
+ return 0;
}
+
+ if (newpos > newinfo->size - sizeof(*e))
@@ -109,10 +81,10 @@ index b99affa..ceb995f 100644
(entry0 + newpos);
e->counters.pcnt = pos;
diff --git a/net/ipv6/netfilter/ip6_tables.c b/net/ipv6/netfilter/ip6_tables.c
-index 99425cf..d88a794 100644
+index 63e06c3..894da69 100644
--- a/net/ipv6/netfilter/ip6_tables.c
+++ b/net/ipv6/netfilter/ip6_tables.c
-@@ -531,6 +531,8 @@ mark_source_chains(const struct xt_table_info *newinfo,
+@@ -474,6 +474,8 @@ mark_source_chains(const struct xt_table_info *newinfo,
/* Move along one */
size = e->next_offset;
@@ -120,24 +92,10 @@ index 99425cf..d88a794 100644
+ return 0;
e = (struct ip6t_entry *)
(entry0 + pos + size);
- e->counters.pcnt = pos;
-@@ -541,13 +543,6 @@ mark_source_chains(const struct xt_table_info *newinfo,
- if (strcmp(t->target.u.user.name,
- XT_STANDARD_TARGET) == 0 &&
- newpos >= 0) {
-- if (newpos > newinfo->size -
-- sizeof(struct ip6t_entry)) {
-- duprintf("mark_source_chains: "
-- "bad verdict (%i)\n",
-- newpos);
-- return 0;
-- }
- /* This a jump; chase it. */
- duprintf("Jump rule %u -> %u\n",
- pos, newpos);
-@@ -555,6 +550,10 @@ mark_source_chains(const struct xt_table_info *newinfo,
- /* ... this is a fallthru */
- newpos = pos + e->next_offset;
+ if (pos + size >= newinfo->size)
+@@ -497,6 +499,10 @@ mark_source_chains(const struct xt_table_info *newinfo,
+ if (newpos >= newinfo->size)
+ return 0;
}
+
+ if (newpos > newinfo->size - sizeof(*e))
@@ -147,4 +105,5 @@ index 99425cf..d88a794 100644
(entry0 + newpos);
e->counters.pcnt = pos;
--
-2.4.10
+2.5.5
+
diff --git a/freed-ora/current/master/patch-4.6-gnu-4.7-rc7-gnu.xz.sign b/freed-ora/current/master/patch-4.6-gnu-4.7-rc7-gnu.xz.sign
new file mode 100644
index 000000000..a9359cb89
--- /dev/null
+++ b/freed-ora/current/master/patch-4.6-gnu-4.7-rc7-gnu.xz.sign
@@ -0,0 +1,7 @@
+-----BEGIN PGP SIGNATURE-----
+Version: GnuPG v2
+
+iEYEABECAAYFAleDzAgACgkQvLfPh359R6cn0wCgh6Ysrqp7+3gOflKnYhRlzw3d
+cs8Anj6TN52IvTX8ALQxyCw2C6XQYp32
+=LLh6
+-----END PGP SIGNATURE-----
diff --git a/freed-ora/current/master/scripts/allarchconfig.sh b/freed-ora/current/master/scripts/allarchconfig.sh
deleted file mode 100755
index f80c23197..000000000
--- a/freed-ora/current/master/scripts/allarchconfig.sh
+++ /dev/null
@@ -1,16 +0,0 @@
-#!/bin/sh
-# Run from within a source tree.
-
-for i in configs/kernel-*.config
-do
- cp -f $i .config
- Arch=`head -1 .config | cut -b 3-`
- echo $Arch \($i\)
- make ARCH=$Arch listnewconfig | grep -E '^CONFIG_' >.newoptions || true;
- if [ -s .newoptions ]; then
- cat .newoptions;
- exit 1;
- fi;
- rm -f .newoptions;
-done
-
diff --git a/freed-ora/current/master/scripts/bumpspecfile.py b/freed-ora/current/master/scripts/bumpspecfile.py
deleted file mode 100755
index bc02ab300..000000000
--- a/freed-ora/current/master/scripts/bumpspecfile.py
+++ /dev/null
@@ -1,76 +0,0 @@
-#!/usr/bin/python
-#
-# Uses git config options user.name and user.email, falls
-# back to env vars $GIT_COMMITTER_NAME and $GIT_COMMITTER_EMAIL
-#
-import re
-import sys
-import time
-import os
-import string
-
-class Specfile:
- def __init__(self,filename):
- file=open(filename,"r")
- self.lines=file.readlines()
- self.vr=""
-
- def getNextVR(self,aspec):
- # Get VR for changelog entry.
- (ver,rel) = os.popen("LC_ALL=C rpm --specfile -q --qf '%%{version} %%{release}\n' --define 'dist %%{nil}' %s | head -1" % aspec).read().strip().split(' ')
- pos = 0
- # general released kernel case, bump 1st field
- fedora_build = rel.split('.')[pos]
- if fedora_build == "0":
- # this is a devel kernel, bump 2nd field
- pos = 1
- elif rel.split('.')[-1] != fedora_build:
- # this is a branch, must bump 3rd field
- pos = 2
- fedora_build = rel.split('.')[pos]
- if pos == 1 and len(rel.split('.')) > 4:
- # uh... what? devel kernel in a branch? private build? just do no VR in clog...
- print "Warning: not adding any VR to changelog, couldn't tell for sure which field to bump"
- pos = -1
- next_fedora_build = int(fedora_build) + 1
- if pos == 0:
- nextrel = str(next_fedora_build)
- elif pos == 1:
- nextrel = "0." + str(next_fedora_build)
- elif pos == 2:
- nextrel = rel.split('.')[0] + "." + rel.split('.')[1] + "." + str(next_fedora_build)
- if pos >= 0:
- for s in rel.split('.')[pos + 1:]:
- nextrel = nextrel + "." + s
- self.vr = " "+ver+'-'+nextrel
-
- def addChangelogEntry(self,entry):
- user = os.popen("git config --get user.name").read().rstrip()
- if (user == ""):
- user = os.environ.get("GIT_COMMITTER_NAME","Unknown")
- email = os.popen("git config --get user.email").read().rstrip()
- if (email == ""):
- email = os.environ.get("GIT_COMMITTER_EMAIL","unknown")
- if (email == "unknown"):
- email = os.environ.get("USER","unknown")+"@fedoraproject.org"
- changematch=re.compile(r"^%changelog")
- date=time.strftime("%a %b %d %Y", time.localtime(time.time()))
- newchangelogentry="%changelog\n* "+date+" "+user+" <"+email+">"+self.vr+"\n"+entry+"\n\n"
- for i in range(len(self.lines)):
- if(changematch.match(self.lines[i])):
- self.lines[i]=newchangelogentry
- break
-
- def writeFile(self,filename):
- file=open(filename,"w")
- file.writelines(self.lines)
- file.close()
-
-if __name__=="__main__":
- aspec=(sys.argv[1])
- s=Specfile(aspec)
- entry=(sys.argv[2])
- s.getNextVR(aspec)
- s.addChangelogEntry(entry)
- s.writeFile(aspec)
-
diff --git a/freed-ora/current/master/scripts/fast-build.sh b/freed-ora/current/master/scripts/fast-build.sh
new file mode 100755
index 000000000..8286a110f
--- /dev/null
+++ b/freed-ora/current/master/scripts/fast-build.sh
@@ -0,0 +1,13 @@
+#! /bin/sh
+# Description:
+# rpmbuild combo to build the given architecture without
+# debugging information, perf or tools.
+#
+# Sample usage:
+# ./fast-build.sh x86_64 kernel-4.7.0-0.rc1.git1.2.fc25.src.rpm
+
+if [ -z "$1" ] || [ -z "$2" ]; then
+ echo "usage: $0 [ arch ] [ kernel-x.x.x.fcxx.src.rpm ] "
+fi
+
+rpmbuild --target $1 --without debug --without debuginfo --without perf --without tools --rebuild $2
diff --git a/freed-ora/current/master/scripts/fast-x86_64 b/freed-ora/current/master/scripts/fast-x86_64
deleted file mode 100755
index 649ef6525..000000000
--- a/freed-ora/current/master/scripts/fast-x86_64
+++ /dev/null
@@ -1,3 +0,0 @@
-#!/bin/sh
-
-rpmbuild --target x86_64 --without debuginfo --without perf --without tools --rebuild $1
diff --git a/freed-ora/current/master/scripts/generate-git-snapshot.sh b/freed-ora/current/master/scripts/generate-git-snapshot.sh
index 3da20a1b1..972fd2148 100755
--- a/freed-ora/current/master/scripts/generate-git-snapshot.sh
+++ b/freed-ora/current/master/scripts/generate-git-snapshot.sh
@@ -1,14 +1,26 @@
#!/bin/sh
+# This script allows for the generation of a git snapshot between the upstream
+# git tree and the current tree.
#
-# Set LINUX_GIT to point to an upstream Linux git tree in your .bashrc or wherever.
+# Prerequisites:
+# Set LINUX_GIT to point to an upstream Linux git tree in your .bashrc
+# or wherever.
-[ ! -d "$LINUX_GIT" ] && echo "error: set \$LINUX_GIT to point at upstream git tree" && exit 1
+# Look to see if LINUX_GIT is set in local .bashrc
+if [ -f ~/.bashrc ]; then
+ source ~/.bashrc
+fi
+
+if [ ! -d "$LINUX_GIT" ]; then
+ echo "error: set \$LINUX_GIT to point at upstream git tree"
+ exit 1
+fi
VER=$(grep patch sources | head -n1 | awk '{ print $2 }' | sed s/patch-// | sed s/-git.*// | sed s/.xz//)
if [ -z "$VER" ] ;
then
- VER=$(grep linux sources | head -1 | awk '{ print $2 }' | sed s/linux-// | sed s/.tar.xz//)
+ VER=$(grep linux sources | head -1 | awk '{ print $2 }' | sed s/linux-// | sed s/.tar.xz//)
fi
OLDGIT=$(grep gitrev kernel.spec | head -n1 | sed s/%define\ gitrev\ //)
diff --git a/freed-ora/current/master/scripts/grab-logs.sh b/freed-ora/current/master/scripts/grab-logs.sh
index 5df573571..571b503bb 100755
--- a/freed-ora/current/master/scripts/grab-logs.sh
+++ b/freed-ora/current/master/scripts/grab-logs.sh
@@ -1,16 +1,35 @@
#!/bin/sh
+# Script helps download the build logs for the current tree.
+# The downloaded logs will be saved in a logs/ within the
+# tree.
+
+BASEDIR="$(dirname "$(cd $(dirname $BASH_SOURCE[0]) && pwd)")"
+pushd $BASEDIR > /dev/null
VER=$(fedpkg verrel)
ver=$(echo $VER | sed -e 's/-/ /g' | awk '{print $2}')
rev=$(echo $VER | sed -e 's/-/ /g' | awk '{print $3}')
-if [ -d logs ]; then
- DIR=logs/
+# keep logs in one place. If logs directory does not exist, make it.
+if [ -d "$BASEDIR/logs" ]; then
+ DIR="$BASEDIR/logs"
else
- DIR=./
+ mkdir "$BASEDIR/logs"
+ DIR="$BASEDIR/logs"
fi
-wget -O $DIR/build-$VER-i686.log http://kojipkgs.fedoraproject.org/packages/kernel/$ver/$rev/data/logs/i686/build.log
-wget -O $DIR/build-$VER-x86-64.log http://kojipkgs.fedoraproject.org/packages/kernel/$ver/$rev/data/logs/x86_64/build.log
-wget -O $DIR/build-$VER-noarch.log http://kojipkgs.fedoraproject.org/packages/kernel/$ver/$rev/data/logs/noarch/build.log
+# Common architectures that have build logs.
+ARCHS[0]=i686
+ARCHS[1]=x86_64
+ARCHS[2]=noarch
+ARCHS[3]=armv7hl
+for arch in ${ARCHS[@]}; do
+ URL=http://kojipkgs.fedoraproject.org/packages/kernel/$ver/$rev/data/logs/$arch/build.log
+ # Only download logs if exist
+ wget --spider -q $URL
+ if [ $? -eq 0 ]; then
+ wget -O $DIR/build-$VER-$arch.log $URL
+ fi
+done
+popd > /dev/null
diff --git a/freed-ora/current/master/scripts/rediffall.pl b/freed-ora/current/master/scripts/rediffall.pl
deleted file mode 100644
index 29f12beb9..000000000
--- a/freed-ora/current/master/scripts/rediffall.pl
+++ /dev/null
@@ -1,64 +0,0 @@
-#!/usr/bin/perl -w
-#
-# Script to rediff all patches in the spec
-# Usage: perl -w rediffall.pl < kernel-2.4.spec
-#
-# $workdir is where the new rediff'ed patches are created
-# $origdir is where the original patches and tarball are located
-#
-# Note that both $workdir and $origdir must be absolute path names.
-# Suggestion: create a /kernel symbolic link to the top of your CVS tree.
-
-my $workdir = "/dev/shm/redifftree";
-my $origdir = "/home/davej/devel";
-my $kernver = "linux-2.6.17";
-my $datestrip = "s/^\\(\\(+++\\|---\\) [^[:blank:]]\\+\\)[[:blank:]].*/\\1/";
-my $patchindex = 0;
-my @patchlist;
-
-# phase 1: create a tree
-print "Extracting pristine source..\n";
-system("mkdir -p $workdir");
-system("rm -rf $workdir/*");
-chdir("$workdir");
-system("tar -jxvf $origdir/$kernver.tar.bz2 > /dev/null");
-system("cp -al $kernver linux-$patchindex");
-
-# phase 2: read the spec from stdin and store all patches
-print "Reading specfile..\n";
-
-while (<>) {
- my $line = $_;
- if ($line =~ /^Patch([0-9]+)\: ([a-zA-Z0-9\-\_\.\+]+\.patch)/) {
- $patchlist[$1] = $2;
- } else {
- if ($line =~ /^Patch([0-9]+)\: ([a-zA-Z0-9\-\_\.]+\.bz2)/) {
- $patchlist[$1] = $2;
- }
- }
-
- if ($line =~ /^%patch([0-9]+) -p1/) {
- # copy the tree, apply the patch, diff and remove the old tree
- my $oldindex = $patchindex;
- $patchindex = $1;
-
- print "rediffing patch number $patchindex: $patchlist[$patchindex]\n";
-
- system("cp -al linux-$oldindex linux-$patchindex");
- chdir("linux-$patchindex");
- if ($patchlist[$patchindex] =~ /bz2/) {
- system("bzcat $origdir/$patchlist[$patchindex] | patch -p1 &>/dev/null");
- } else {
- system("cat $origdir/$patchlist[$patchindex] | patch -p1 &>/dev/null");
- }
- chdir("$workdir");
- system("rm -f `find -name \"*orig\"`");
- if ($patchlist[$patchindex] =~ /bz2/) {
- } else {
- system("diff -urNp --exclude-from=/home/davej/.exclude linux-$oldindex linux-$patchindex | sed '$datestrip' > $patchlist[$patchindex]");
- }
- system("rm -rf linux-$oldindex");
- }
-};
-
-1;
diff --git a/freed-ora/current/master/sources b/freed-ora/current/master/sources
index 354a8cc3d..765a55213 100644
--- a/freed-ora/current/master/sources
+++ b/freed-ora/current/master/sources
@@ -1,2 +1,3 @@
13cf1ae9afbc7a2fdc2ae75676395a27 linux-libre-4.6-gnu.tar.xz
fd23b14b9d474c3dfacb6e8ee82d3a51 perf-man-4.6.tar.gz
+c84eca887750824fa6bd7126ce5f6580 patch-4.6-gnu-4.7-rc7-gnu.xz
OpenPOWER on IntegriCloud