summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--freed-ora/current/master/Kbuild-Add-an-option-to-enable-GCC-VTA.patch92
-rw-r--r--freed-ora/current/master/cfg80211-don-t-WARN-about-two-consecutive-Country-IE.patch41
-rw-r--r--freed-ora/current/master/config-arm642
-rw-r--r--freed-ora/current/master/config-generic3
-rw-r--r--freed-ora/current/master/deal-with-deadlock-in-d_walk.patch86
-rw-r--r--freed-ora/current/master/kernel-arm64.patch700
-rw-r--r--freed-ora/current/master/kernel.spec70
-rw-r--r--freed-ora/current/master/move-d_rcu-from-overlapping-d_child-to-overlapping-d.patch743
-rw-r--r--freed-ora/current/master/powerpc-powernv-force-all-CPUs-to-be-bootable.patch46
-rw-r--r--freed-ora/current/master/uas-Add-US_FL_NO_ATA_1X-for-Seagate-devices-with-usb.patch38
-rw-r--r--freed-ora/current/master/uas-Add-US_FL_NO_REPORT_OPCODES-for-JMicron-JMS566-w.patch36
-rw-r--r--freed-ora/current/master/x86-kvm-Clear-paravirt_enabled-on-KVM-guests-for-esp.patch72
-rw-r--r--freed-ora/current/master/x86-tls-Validate-TLS-entries-to-protect-espfix.patch77
-rw-r--r--freed-ora/current/master/xhci-Add-broken-streams-quirk-for-Fresco-Logic-FL100.patch44
14 files changed, 1781 insertions, 269 deletions
diff --git a/freed-ora/current/master/Kbuild-Add-an-option-to-enable-GCC-VTA.patch b/freed-ora/current/master/Kbuild-Add-an-option-to-enable-GCC-VTA.patch
new file mode 100644
index 000000000..561ce4ebd
--- /dev/null
+++ b/freed-ora/current/master/Kbuild-Add-an-option-to-enable-GCC-VTA.patch
@@ -0,0 +1,92 @@
+From: Josh Stone <jistone@redhat.com>
+Date: Fri, 21 Nov 2014 10:40:00 -0800
+Subject: [PATCH] Kbuild: Add an option to enable GCC VTA
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Due to recent codegen issues, gcc -fvar-tracking-assignments was
+unconditionally disabled in commit 2062afb4f804a ("Fix gcc-4.9.0
+miscompilation of load_balance() in scheduler"). However, this reduces
+the debuginfo coverage for variable locations, especially in inline
+functions. VTA is certainly not perfect either in those cases, but it
+is much better than without. With compiler versions that have fixed the
+codegen bugs, we would prefer to have the better details for SystemTap,
+and surely other debuginfo consumers like perf will benefit as well.
+
+This patch simply makes CONFIG_DEBUG_INFO_VTA an option. I considered
+Frank and Linus's discussion of a cc-option-like -fcompare-debug test,
+but I'm convinced that a narrow test of an arch-specific codegen issue
+is not really useful. GCC has their own regression tests for this, so
+I'd suggest GCC_COMPARE_DEBUG=-fvar-tracking-assignments-toggle is more
+useful for kernel developers to test confidence.
+
+In fact, I ran into a couple more issues when testing for this patch[1],
+although neither of those had any codegen impact.
+ [1] https://bugzilla.redhat.com/show_bug.cgi?id=1140872
+
+With gcc-4.9.2-1.fc22, I can now build v3.18-rc5 with Fedora's i686 and
+x86_64 configs, and this is completely clean with GCC_COMPARE_DEBUG.
+
+Cc: Frank Ch. Eigler <fche@redhat.com>
+Cc: Jakub Jelinek <jakub@redhat.com>
+Cc: Josh Boyer <jwboyer@fedoraproject.org>
+Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+Cc: Linus Torvalds <torvalds@linux-foundation.org>
+Cc: Andrew Morton <akpm@linux-foundation.org>
+Cc: Markus Trippelsdorf <markus@trippelsdorf.de>
+Cc: Michel Dänzer <michel@daenzer.net>
+Signed-off-by: Josh Stone <jistone@redhat.com>
+---
+ Makefile | 4 ++++
+ lib/Kconfig.debug | 18 +++++++++++++++++-
+ 2 files changed, 21 insertions(+), 1 deletion(-)
+
+diff --git a/Makefile b/Makefile
+index fd80c6e9bc23..4ba81e0dce46 100644
+--- a/Makefile
++++ b/Makefile
+@@ -704,7 +704,11 @@ KBUILD_CFLAGS += -fomit-frame-pointer
+ endif
+ endif
+
++ifdef CONFIG_DEBUG_INFO_VTA
++KBUILD_CFLAGS += $(call cc-option, -fvar-tracking-assignments)
++else
+ KBUILD_CFLAGS += $(call cc-option, -fno-var-tracking-assignments)
++endif
+
+ ifdef CONFIG_DEBUG_INFO
+ ifdef CONFIG_DEBUG_INFO_SPLIT
+diff --git a/lib/Kconfig.debug b/lib/Kconfig.debug
+index 4e35a5d767ed..27410417de1d 100644
+--- a/lib/Kconfig.debug
++++ b/lib/Kconfig.debug
+@@ -165,7 +165,23 @@ config DEBUG_INFO_DWARF4
+ Generate dwarf4 debug info. This requires recent versions
+ of gcc and gdb. It makes the debug information larger.
+ But it significantly improves the success of resolving
+- variables in gdb on optimized code.
++ variables in gdb on optimized code. The gcc docs also
++ recommend enabling -fvar-tracking-assignments for maximum
++ benefit. (see DEBUG_INFO_VTA)
++
++config DEBUG_INFO_VTA
++ bool "Enable var-tracking-assignments for debuginfo"
++ depends on DEBUG_INFO
++ help
++ Enable gcc -fvar-tracking-assignments for improved debug
++ information on variable locations in optimized code. Per
++ gcc, DEBUG_INFO_DWARF4 is recommended for best use of VTA.
++
++ VTA has been implicated in codegen bugs (gcc PR61801,
++ PR61904), so this may deserve some caution. One can set
++ GCC_COMPARE_DEBUG=-fvar-tracking-assignments-toggle in the
++ environment to automatically compile everything both ways,
++ generating an error if anything differs.
+
+ config ENABLE_WARN_DEPRECATED
+ bool "Enable __deprecated logic"
+--
+2.1.0
+
diff --git a/freed-ora/current/master/cfg80211-don-t-WARN-about-two-consecutive-Country-IE.patch b/freed-ora/current/master/cfg80211-don-t-WARN-about-two-consecutive-Country-IE.patch
new file mode 100644
index 000000000..097be41cf
--- /dev/null
+++ b/freed-ora/current/master/cfg80211-don-t-WARN-about-two-consecutive-Country-IE.patch
@@ -0,0 +1,41 @@
+From: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
+Date: Tue, 2 Dec 2014 09:53:25 +0200
+Subject: [PATCH] cfg80211: don't WARN about two consecutive Country IE hint
+
+This can happen and there is no point in added more
+detection code lower in the stack. Catching these in one
+single point (cfg80211) is enough. Stop WARNING about this
+case.
+
+This fixes:
+https://bugzilla.kernel.org/show_bug.cgi?id=89001
+
+Cc: <stable@vger.kernel.org>
+Fixes: 2f1c6c572d7b ("cfg80211: process non country IE conflicting first")
+Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
+Acked-by: Luis R. Rodriguez <mcgrof@suse.com>
+---
+ net/wireless/reg.c | 7 ++-----
+ 1 file changed, 2 insertions(+), 5 deletions(-)
+
+diff --git a/net/wireless/reg.c b/net/wireless/reg.c
+index b725a31a4751..695f12b2c176 100644
+--- a/net/wireless/reg.c
++++ b/net/wireless/reg.c
+@@ -1839,11 +1839,8 @@ __reg_process_hint_country_ie(struct wiphy *wiphy,
+ return REG_REQ_IGNORE;
+ return REG_REQ_ALREADY_SET;
+ }
+- /*
+- * Two consecutive Country IE hints on the same wiphy.
+- * This should be picked up early by the driver/stack
+- */
+- if (WARN_ON(regdom_changes(country_ie_request->alpha2)))
++
++ if (regdom_changes(country_ie_request->alpha2))
+ return REG_REQ_OK;
+ return REG_REQ_ALREADY_SET;
+ }
+--
+2.1.0
+
diff --git a/freed-ora/current/master/config-arm64 b/freed-ora/current/master/config-arm64
index a0db86323..9fd40b9fd 100644
--- a/freed-ora/current/master/config-arm64
+++ b/freed-ora/current/master/config-arm64
@@ -140,3 +140,5 @@ CONFIG_AMD_XGBE_PHY=m
CONFIG_DMI=y
CONFIG_DMIID=y
CONFIG_DMI_SYSFS=y
+
+CONFIG_SATA_AHCI_PLATFORM=y
diff --git a/freed-ora/current/master/config-generic b/freed-ora/current/master/config-generic
index 82e5bc0b4..1a12e8c24 100644
--- a/freed-ora/current/master/config-generic
+++ b/freed-ora/current/master/config-generic
@@ -4373,6 +4373,7 @@ CONFIG_FRAME_WARN=1024
CONFIG_MAGIC_SYSRQ=y
CONFIG_MAGIC_SYSRQ_DEFAULT_ENABLE=0x0
CONFIG_DEBUG_INFO=y
+CONFIG_DEBUG_INFO_VTA=y
# Revisit both of these options
# CONFIG_DEBUG_INFO_SPLIT is not set
# CONFIG_DEBUG_INFO_DWARF4 is not set
@@ -5116,7 +5117,7 @@ CONFIG_PTP_1588_CLOCK_PCH=m
CONFIG_CLEANCACHE=y
CONFIG_FRONTSWAP=y
CONFIG_ZSWAP=y
-# CONFIG_ZBUD is not set
+CONFIG_ZBUD=y
CONFIG_ZSMALLOC=y
# CONFIG_PGTABLE_MAPPING is not set
diff --git a/freed-ora/current/master/deal-with-deadlock-in-d_walk.patch b/freed-ora/current/master/deal-with-deadlock-in-d_walk.patch
new file mode 100644
index 000000000..fd0e21c33
--- /dev/null
+++ b/freed-ora/current/master/deal-with-deadlock-in-d_walk.patch
@@ -0,0 +1,86 @@
+From: Al Viro <viro@zeniv.linux.org.uk>
+Date: Sun, 26 Oct 2014 19:31:10 -0400
+Subject: [PATCH] deal with deadlock in d_walk()
+
+... by not hitting rename_retry for reasons other than rename having
+happened. In other words, do _not_ restart when finding that
+between unlocking the child and locking the parent the former got
+into __dentry_kill(). Skip the killed siblings instead...
+
+Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
+---
+ fs/dcache.c | 31 ++++++++++++++++---------------
+ 1 file changed, 16 insertions(+), 15 deletions(-)
+
+diff --git a/fs/dcache.c b/fs/dcache.c
+index c3ea5b765f6a..71acf8d6f2be 100644
+--- a/fs/dcache.c
++++ b/fs/dcache.c
+@@ -495,7 +495,7 @@ static void __dentry_kill(struct dentry *dentry)
+ }
+ /* if it was on the hash then remove it */
+ __d_drop(dentry);
+- list_del(&dentry->d_child);
++ __list_del_entry(&dentry->d_child);
+ /*
+ * Inform d_walk() that we are no longer attached to the
+ * dentry tree
+@@ -1082,33 +1082,31 @@ resume:
+ /*
+ * All done at this level ... ascend and resume the search.
+ */
++ rcu_read_lock();
++ascend:
+ if (this_parent != parent) {
+ struct dentry *child = this_parent;
+ this_parent = child->d_parent;
+
+- rcu_read_lock();
+ spin_unlock(&child->d_lock);
+ spin_lock(&this_parent->d_lock);
+
+- /*
+- * might go back up the wrong parent if we have had a rename
+- * or deletion
+- */
+- if (this_parent != child->d_parent ||
+- (child->d_flags & DCACHE_DENTRY_KILLED) ||
+- need_seqretry(&rename_lock, seq)) {
+- spin_unlock(&this_parent->d_lock);
+- rcu_read_unlock();
++ /* might go back up the wrong parent if we have had a rename. */
++ if (need_seqretry(&rename_lock, seq))
+ goto rename_retry;
++ next = child->d_child.next;
++ while (unlikely(child->d_flags & DCACHE_DENTRY_KILLED)) {
++ if (next == &this_parent->d_subdirs)
++ goto ascend;
++ child = list_entry(next, struct dentry, d_child);
++ next = next->next;
+ }
+ rcu_read_unlock();
+- next = child->d_child.next;
+ goto resume;
+ }
+- if (need_seqretry(&rename_lock, seq)) {
+- spin_unlock(&this_parent->d_lock);
++ if (need_seqretry(&rename_lock, seq))
+ goto rename_retry;
+- }
++ rcu_read_unlock();
+ if (finish)
+ finish(data);
+
+@@ -1118,6 +1116,9 @@ out_unlock:
+ return;
+
+ rename_retry:
++ spin_unlock(&this_parent->d_lock);
++ rcu_read_unlock();
++ BUG_ON(seq & 1);
+ if (!retry)
+ return;
+ seq = 1;
+--
+2.1.0
+
diff --git a/freed-ora/current/master/kernel-arm64.patch b/freed-ora/current/master/kernel-arm64.patch
index 6106d5b9c..4a125b938 100644
--- a/freed-ora/current/master/kernel-arm64.patch
+++ b/freed-ora/current/master/kernel-arm64.patch
@@ -1,16 +1,12 @@
-commit ffbe9c488b747686ebfbb35e7c87aec80b183193
-Merge: ccdf75c fc14f9c
-Author: Kyle McMartin <kmcmarti@redhat.com>
-Date: Mon Nov 17 11:34:47 2014 -0500
+commit 0335b5034b998e978bf9343da77246bcbad33981
+Author: Mark Salter <msalter@redhat.com>
+Date: Wed Nov 19 10:32:11 2014 -0500
- Merge tag 'v3.18-rc5' into devel
-
- Linux 3.18-rc5
+ arm64: explicitly set noncoherent ops for _CCA handling
- Conflicts:
- drivers/net/ethernet/apm/xgene/xgene_enet_hw.c
+ Signed-off-by: Mark Salter <msalter@redhat.com>
-commit ccdf75caa6a1165b8199930983596ef64cf09bd3
+commit 4a2d43442e20a24b78594d12914706deddc119de
Author: Mark Salter <msalter@redhat.com>
Date: Mon Nov 10 17:09:29 2014 -0500
@@ -25,7 +21,7 @@ Date: Mon Nov 10 17:09:29 2014 -0500
Signed-off-by: Mark Salter <msalter@redhat.com>
-commit 4421965a8ea7caae3f50760abce1094e0186c05e
+commit b93f804830d9ef6d572dd6be9734108199141b87
Author: Mark Salter <msalter@redhat.com>
Date: Mon Nov 10 17:33:18 2014 -0500
@@ -38,7 +34,7 @@ Date: Mon Nov 10 17:33:18 2014 -0500
Signed-off-by: Mark Salter <msalter@redhat.com>
-commit dcaeb407c91845739a64fb719a8c8d34474371e8
+commit 2d76cb937a6c0010d1de181d0142f0822df5071d
Author: Mark Salter <msalter@redhat.com>
Date: Mon Nov 10 17:30:25 2014 -0500
@@ -46,7 +42,7 @@ Date: Mon Nov 10 17:30:25 2014 -0500
Signed-off-by: Mark Salter <msalter@redhat.com>
-commit 68c8ee5c1ab7b899401750cc359912efbeb40676
+commit a438ff7be0140738b1224d5ade6345a9febad279
Author: Mark Salter <msalter@redhat.com>
Date: Mon Nov 10 17:23:57 2014 -0500
@@ -58,7 +54,7 @@ Date: Mon Nov 10 17:23:57 2014 -0500
Signed-off-by: Mark Salter <msalter@redhat.com>
-commit fada05b28e93c24e8932539d94a679ce55ff332f
+commit 814b22167d35b18fc3de745277a2190ff0841585
Author: Mark Salter <msalter@redhat.com>
Date: Mon Nov 10 16:42:14 2014 -0500
@@ -70,27 +66,7 @@ Date: Mon Nov 10 16:42:14 2014 -0500
Signed-off-by: Mark Salter <msalter@redhat.com>
-commit e917d30f3febf6d88cc5001ad236ca367a211cef
-Author: Duc Dang <dhdang@apm.com>
-Date: Thu Nov 6 17:14:18 2014 -0800
-
- PCI: X-Gene: assign resource to bus before adding new devices
-
- X-Gene PCIE driver currently depends on Liviu Dudau's patch
- https://lkml.org/lkml/2014/9/30/166 in order to assign resource
- to root bus and endpoint devices. The patch was dropped because
- it will break x86, powerpc and probably others. So X-Gene PCIE
- host functionality is currently broken.
-
- This patch adds function calls to create and scan root_bus as well
- as assign unassigned bus resource (similar to Liviu Dudau's patch
- above). This will help resolve the dependency to Liviu Dudau's patch
- and make X-Gene PCIE work in latest open-source kernel.
-
- Signed-off-by: Duc Dang <dhdang@apm.com>
- Signed-off-by: Tanmay Inamdar <tinamdar@apm.com>
-
-commit 6581c0591cafe4fa3b0bd9a25a84a5bf830209fd
+commit b90d000000801b473ed4c69757d3be9e433b6c5e
Author: Mark Salter <msalter@redhat.com>
Date: Mon Nov 10 16:31:05 2014 -0500
@@ -103,29 +79,7 @@ Date: Mon Nov 10 16:31:05 2014 -0500
Signed-off-by: Mark Salter <msalter@redhat.com>
-commit ae7850d2b972ee1258878ccc16824aba9d35b653
-Author: Guenter Roeck <linux@roeck-us.net>
-Date: Sun Nov 2 18:19:15 2014 -0800
-
- netfilter: nft_reject_bridge: Fix powerpc build error
-
- Fix:
- net/bridge/netfilter/nft_reject_bridge.c:
- In function 'nft_reject_br_send_v6_unreach':
- net/bridge/netfilter/nft_reject_bridge.c:240:3:
- error: implicit declaration of function 'csum_ipv6_magic'
- csum_ipv6_magic(&nip6h->saddr, &nip6h->daddr,
- ^
- make[3]: *** [net/bridge/netfilter/nft_reject_bridge.o] Error 1
-
- Seen with powerpc:allmodconfig.
-
- Fixes: 523b929d5446 ("netfilter: nft_reject_bridge: don't use IP stack to reject traffic")
- Cc: Pablo Neira Ayuso <pablo@netfilter.org>
- Signed-off-by: Guenter Roeck <linux@roeck-us.net>
- Signed-off-by: David S. Miller <davem@davemloft.net>
-
-commit e2992498e4b2aad3ceac52bfb6faccfd18332236
+commit 243e5c1dc198958ce862e39d33efc798a47b339a
Author: Mark Salter <msalter@redhat.com>
Date: Mon Nov 10 21:35:11 2014 -0500
@@ -141,7 +95,7 @@ Date: Mon Nov 10 21:35:11 2014 -0500
Signed-off-by: Mark Salter <msalter@redhat.com>
-commit ceb5533cf5a6b68b68dc4b8ad61f5671576bdaf2
+commit 612eea3ae291b28f7ed50ccf50bd1685a2a7f753
Author: Mark Salter <msalter@redhat.com>
Date: Thu Aug 14 12:32:13 2014 -0400
@@ -160,9 +114,26 @@ Date: Thu Aug 14 12:32:13 2014 -0400
Signed-off-by: Mark Salter <msalter@redhat.com>
-commit 21fef5d50bb3d4465c6b644bc451c1d219967a81
+commit 3d509a508c6fd70eb0fb2f0e82d08d92cc96568c
+Author: Mark Salter <msalter@redhat.com>
+Date: Sat Nov 22 12:08:53 2014 -0500
+
+ DO NOT UPSTREAM - arm64: kvm: Change vgic resource size error to info
+
+ From: Donald Dutile <ddutile@redhat.com>
+
+ A new check was added to upstream to ensure a full
+ kernel page was allocated to the vgic. The check failed
+ kvm configuration if the condition wasn't met. An arm64
+ kernel with 64K pagesize and certain early firmware will
+ fail this test. Change error to info & continue configuration
+ for now.
+
+ Signed-off-by: Mark Salter <msalter@redhat.com>
+
+commit 2b5dd4609e947b418afbbeae95da7f34594bc048
Author: Wei Huang <wei@redhat.com>
-Date: Thu Sep 18 20:02:57 2014 -0400
+Date: Sat Nov 22 10:38:45 2014 -0500
KVM/ACPI: Enable ACPI support for KVM virt GIC
@@ -176,10 +147,12 @@ Date: Thu Sep 18 20:02:57 2014 -0400
ideas from his patch.
Signed-off-by: Wei Huang <wei@redhat.com>
+ [combined with subsequent patch to use acpi_disabled]
+ Signed-off-by: Mark Salter <msalter@redhat.com>
-commit 3357db72822a2c9bc012528c6be3cf861fb3f35c
+commit 756fc31666a4a3094727da5274fc0705a05f13a3
Author: Wei Huang <wei@redhat.com>
-Date: Thu Sep 18 20:02:56 2014 -0400
+Date: Sat Nov 22 10:18:57 2014 -0500
KVM/ACPI: Enable ACPI support for virt arch timer
@@ -189,25 +162,107 @@ Date: Thu Sep 18 20:02:56 2014 -0400
arch_timer_ppi array in arm_arch_timer driver.
Signed-off-by: Wei Huang <wei@redhat.com>
+ [combined with subsequent patch to use acpi_disabled]
+ Signed-off-by: Mark Salter <msalter@redhat.com>
-commit dc62803a26a34bb3190c9c1b5e3639ca6ebbf788
-Author: Wei Huang <wei@redhat.com>
-Date: Thu Sep 18 20:02:55 2014 -0400
+commit b189108603f6db4a11e0c30050e840e8bb36f098
+Author: Ard Biesheuvel <ard.biesheuvel@linaro.org>
+Date: Tue Nov 18 21:52:34 2014 +0100
- KVM/ACPI: Add kernel parameter kvmacpi to enable KVM ACPI support
+ arm, arm64: KVM: handle potential incoherency of readonly memslots
- This patch addes a new kernel parameter, kvmacpi, to turn on ACPI
- support for KVM. Users can enable it using "kvmacpi=on" in command
- line. When it is on, KVM will will parse ACPI tables to configure related
- components. By default this option is off.
+ Upstream posting:
+ http://thread.gmane.org/gmane.comp.emulators.kvm.devel/129475/focus=129477
- Note that DT will be probed first, no matter kvmacpi is ON or OFF.
- This is because many platforms, such qemu/kvm, still supports
- DT only. We still want to support Acadia kernel on such platforms.
+ Readonly memslots are often used to implement emulation of ROMs and
+ NOR flashes, in which case the guest may legally map these regions as
+ uncached.
+ To deal with the incoherency associated with uncached guest mappings,
+ treat all readonly memslots as incoherent, and ensure that pages that
+ belong to regions tagged as such are flushed to DRAM before being passed
+ to the guest.
- Signed-off-by: Wei Huang <wei@redhat.com>
+ Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
+
+ Acadia backport notes:
+
+ - we have a few more conflicts here. The main thing is that our
+ kvm_arch_prepare_memory_region() is "empty" at the moment; in upstream
+ Ard introduced performance related, host device related code there, in
+ commit 8eef91239.
+
+ What we certainly need to grab from commit 8eef91239 is the acquiring of
+ "kvm->mmu_lock" (which is visible in the upstream patch context too),
+ and the filtering against
+
+ (change != KVM_MR_CREATE && change != KVM_MR_MOVE)
+
+ near the top of the function (which is not visible in the upstream patch
+ context). (If (change == KVM_MR_DELETE), then the caller has set up
+ "memslot" in such a way that calling stage2_flush_memslot() on it is
+ invalid, and it would actually crash the host -- speaking from
+ experience. :))
+
+ - The hunk that seems to matter in practice, in my testing on Mustang, is
+ the "fault_ipa_uncached" assignment one (which affects the the
+ demand-paged case, ie. the coherent_cache_guest_page() function,
+ modified in the previous patch).
+
+ The kvm_arch_prepare_memory_region() hunk exists for completeness of
+ implementation, and while it could certainly make a difference, I've
+ never seen it make one, in my testing. We should pick it up nonetheless.
+
+ Signed-off-by: Laszlo Ersek <lersek@redhat.com>
-commit 18099d49d96bfac5096b8ad1d3d5c6d14f92e0a1
+commit 8ab19d68b49c2f6a9f0e6226c51bf9b2fe553022
+Author: Laszlo Ersek <lersek@redhat.com>
+Date: Tue Nov 18 21:52:33 2014 +0100
+
+ arm, arm64: KVM: allow forced dcache flush on page faults
+
+ Upstream posting:
+ http://thread.gmane.org/gmane.comp.emulators.kvm.devel/129475/focus=129476
+
+ From: Laszlo Ersek <lersek@redhat.com>
+
+ To allow handling of incoherent memslots in a subsequent patch, this
+ patch adds a paramater 'ipa_uncached' to cache_coherent_guest_page()
+ so that we can instruct it to flush the page's contents to DRAM even
+ if the guest has caching globally enabled.
+
+ Signed-off-by: Laszlo Ersek <lersek@redhat.com>
+ Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
+
+ Acadia backport notes:
+ - minimal context conflict in user_mem_abort(): upstream passes
+
+ pgprot_val(mem_type) == pgprot_val(PAGE_S2_DEVICE)
+
+ as last parameter of stage2_set_pte(), while we do a direct comparison.
+
+ (See upstream commit 3d08c629, "arm: kvm: STRICT_MM_TYPECHECKS fix for
+ user_mem_abort".)
+
+ Signed-off-by: Laszlo Ersek <lersek@redhat.com>
+
+commit 1ac87393dff5d6fb10edfba84dfff89f57a7224a
+Author: Ard Biesheuvel <ard.biesheuvel@linaro.org>
+Date: Tue Nov 18 21:52:32 2014 +0100
+
+ kvm: add a memslot flag for incoherent memory regions
+
+ Upstream posting:
+ http://thread.gmane.org/gmane.comp.emulators.kvm.devel/129475
+
+ Memory regions may be incoherent with the caches, typically when the
+ guest has mapped a host system RAM backed memory region as uncached.
+ Add a flag KVM_MEMSLOT_INCOHERENT so that we can tag these memslots
+ and handle them appropriately when mapping them.
+
+ Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
+ Signed-off-by: Laszlo Ersek <lersek@redhat.com>
+
+commit 2a0a5cbf98c94e2906d9a357a63fbbb153488e1c
Author: Tom Lendacky <thomas.lendacky@amd.com>
Date: Mon Sep 15 17:02:52 2014 -0600
@@ -218,13 +273,13 @@ Date: Mon Sep 15 17:02:52 2014 -0600
Signed-off-by: Tom Lendacky <thomas.lendacky@amd.com>
-commit 7f208a9dffd58379f2e42e226052386e93d4b2dd
+commit 807e95abb96e7868e1c8e863a92298937a69d437
Author: Mark Salter <msalter@redhat.com>
Date: Tue Oct 7 12:54:08 2014 -0400
xgene acpi network - first cut
-commit e3ce87d3414a845f8cbf71f0d80f3f3136995ce6
+commit bdecd2af5d4234ed50042ab28a21736edcec6d41
Author: Geert Uytterhoeven <geert+renesas@glider.be>
Date: Thu Nov 6 12:23:23 2014 +0100
@@ -245,7 +300,7 @@ Date: Thu Nov 6 12:23:23 2014 +0100
Reviewed-by: Mika Westerberg <mika.westerberg@linux.intel.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
-commit f22bf3eef963c9fc4e58e9e96dc7e9d243042b5a
+commit 42b0d1b64cdf1c8d37e69ff7cff45852f7a16f65
Author: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Date: Wed Nov 5 00:29:07 2014 +0100
@@ -275,7 +330,7 @@ Date: Wed Nov 5 00:29:07 2014 +0100
Tested-by: Mika Westerberg <mika.westerberg@linux.intel.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
-commit 1bb8c08673f0ca7951c0583665d2496e19368a56
+commit c3f29cda7420da6a721d40d116f369cfc1533d38
Author: Mika Westerberg <mika.westerberg@linux.intel.com>
Date: Fri Oct 31 13:40:58 2014 +0200
@@ -302,7 +357,7 @@ Date: Fri Oct 31 13:40:58 2014 +0200
Acked-by: Alexandre Courbot <acourbot@nvidia.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
-commit 1b8f83503e4b9b7168c5d81cabce5b66e4063607
+commit 4117b39d39f59d2497ceac1091ec54aa3056cb4f
Author: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Date: Mon Nov 3 23:39:57 2014 +0100
@@ -315,7 +370,7 @@ Date: Mon Nov 3 23:39:57 2014 +0100
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Reviewed-by: Mika Westerberg <mika.westerberg@linux.intel.com>
-commit 49b5f3126e722dd0266d22a2866bb056ede2cf0a
+commit d9345c86ad290bb4ca98b37520f94fc8075b2b94
Author: Mika Westerberg <mika.westerberg@linux.intel.com>
Date: Mon Oct 27 12:15:14 2014 +0200
@@ -345,7 +400,7 @@ Date: Mon Oct 27 12:15:14 2014 +0200
Acked-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
-commit c9accb22ace8c3318e75fc0bbbca91336dab270d
+commit 22cb8c44e198b7e3f3299324edbcaa1389016d52
Author: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Date: Mon Nov 3 23:39:41 2014 +0100
@@ -382,7 +437,7 @@ Date: Mon Nov 3 23:39:41 2014 +0100
Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
-commit 872e3713eb734e43d3001a6ef957cb67ba2349a3
+commit c70e2807a8bacbdfed992b58ca24eb152a778a01
Author: Aaron Lu <aaron.lu@intel.com>
Date: Tue Oct 21 13:34:00 2014 +0200
@@ -397,7 +452,7 @@ Date: Tue Oct 21 13:34:00 2014 +0200
Acked-by: Grant Likely <grant.likely@linaro.org>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
-commit ac8ab45966dc9e98cdb44d0ca833c25772eb4745
+commit 29257e751014d0d43f78bcfecd9a56a603096c95
Author: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Date: Mon Oct 27 23:30:10 2014 +0100
@@ -413,7 +468,7 @@ Date: Mon Oct 27 23:30:10 2014 +0100
Acked-by: Grant Likely <grant.likely@linaro.org>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
-commit d48dca7d09f36535c2f6dba340e796b54aa6667d
+commit 08ddbc9678ce8465f17acc8e1b1b67442593d1b5
Author: Mika Westerberg <mika.westerberg@linux.intel.com>
Date: Tue Oct 21 13:33:59 2014 +0200
@@ -436,7 +491,7 @@ Date: Tue Oct 21 13:33:59 2014 +0200
Acked-by: Grant Likely <grant.likely@linaro.org>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
-commit fcca136c38aa18deec3ddd3b872ea49e6d082e5a
+commit 880614f83402ae8b408f33cb252505da0760f3e5
Author: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Date: Tue Nov 4 14:03:59 2014 +0100
@@ -479,7 +534,7 @@ Date: Tue Nov 4 14:03:59 2014 +0100
Acked-by: Grant Likely <grant.likely@linaro.org>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
-commit 4ac0bb216349cce71aea75f6156d44c59fc18086
+commit b5923f9dc379c1861a70d8836c7d9976d9521390
Author: Aaron Lu <aaron.lu@intel.com>
Date: Tue Oct 21 23:30:25 2014 +0200
@@ -498,7 +553,7 @@ Date: Tue Oct 21 23:30:25 2014 +0200
Acked-by: Grant Likely <grant.likely@linaro.org>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
-commit 17907d91fb1bd542b9503cc5223a070039b8d031
+commit 5c3c4fe36a05672113646f8fb839e4c91256ef5d
Author: Mika Westerberg <mika.westerberg@linux.intel.com>
Date: Mon Oct 27 23:29:32 2014 +0100
@@ -516,7 +571,7 @@ Date: Mon Oct 27 23:29:32 2014 +0100
Acked-by: Grant Likely <grant.likely@linaro.org>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
-commit 2781ab92fd33f2270c7b5e1628db0a180ed3ab03
+commit 8105c03352f32060c765837cbb7d619e075289d9
Author: Mika Westerberg <mika.westerberg@linux.intel.com>
Date: Tue Oct 21 13:33:56 2014 +0200
@@ -535,7 +590,7 @@ Date: Tue Oct 21 13:33:56 2014 +0200
Acked-by: Grant Likely <grant.likely@linaro.org>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
-commit 732feab25f90c338e9ef36457a3591f322f53264
+commit ce0e2672808ce2805d0aadfd12d94e2dd6be5ab9
Author: Mika Westerberg <mika.westerberg@linux.intel.com>
Date: Wed Oct 29 15:41:01 2014 +0100
@@ -598,7 +653,7 @@ Date: Wed Oct 29 15:41:01 2014 +0100
Acked-by: Grant Likely <grant.likely@linaro.org>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
-commit 6b23a29f06a006a48d7fb94eef42452552144fb9
+commit e072a051ef3a5d612949dc22ca71e40dbe978ed1
Author: Mika Westerberg <mika.westerberg@linux.intel.com>
Date: Tue Oct 21 13:33:56 2014 +0200
@@ -616,7 +671,7 @@ Date: Tue Oct 21 13:33:56 2014 +0200
Acked-by: Grant Likely <grant.likely@linaro.org>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
-commit c901445ec7d1f37d9fd2250dd4390f395b954ef3
+commit e176d66bf1a8e613e501dae1fc6798e1a42b7062
Author: Mika Westerberg <mika.westerberg@linux.intel.com>
Date: Tue Oct 21 13:33:56 2014 +0200
@@ -635,7 +690,7 @@ Date: Tue Oct 21 13:33:56 2014 +0200
Acked-by: Grant Likely <grant.likely@linaro.org>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
-commit 7eace032b0201dfb110586080dd0628ec48c0d5c
+commit e30b98eab5645fa42d372cc1be44e22db5f5e9b8
Author: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Date: Tue Nov 4 01:28:56 2014 +0100
@@ -677,7 +732,7 @@ Date: Tue Nov 4 01:28:56 2014 +0100
Acked-by: Grant Likely <grant.likely@linaro.org>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
-commit c2d6966e876bb42c76d03d3eb207bfa754657d8b
+commit a8762c178234b62dce5e55df8de8528857a47bb7
Author: Mika Westerberg <mika.westerberg@linux.intel.com>
Date: Tue Oct 21 13:33:55 2014 +0200
@@ -735,11 +790,11 @@ Date: Tue Oct 21 13:33:55 2014 +0200
Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
-commit 3f675aef809d3f82bf1aa0700065ddf798d1eb86
+commit a9240791b83abd372e4efb77f20444c27a56ebae
Author: Mark Salter <msalter@redhat.com>
Date: Tue Sep 30 17:19:24 2014 -0400
- [NOT FOR UPSTREAM] arm64: avoid need for console= to enable serial console
+ arm64: avoid need for console= to enable serial console
Tell kernel to prefer one of the serial ports on platforms
pl011, 8250, or sbsa uarts. console= on command line will
@@ -749,7 +804,7 @@ Date: Tue Sep 30 17:19:24 2014 -0400
Signed-off-by: Mark Salter <msalter@redhat.com>
-commit 20d7a3414d18cea0ed8982a5c538e7548bc3bb0a
+commit 6fee3b2bd2ad6349e7bb3082393bf6355e01ce6f
Author: Tom Lendacky <thomas.lendacky@amd.com>
Date: Tue Sep 9 23:33:17 2014 -0400
@@ -761,7 +816,7 @@ Date: Tue Sep 9 23:33:17 2014 -0400
Signed-off-by: Mark Salter <msalter@redhat.com>
-commit 286f94e27659e7eb45e4b54b4e3c0f9a3b9f9fd4
+commit 0a0eea6d358d51ab381e2945c0e9db2f6cc06157
Author: Tom Lendacky <thomas.lendacky@amd.com>
Date: Tue Sep 9 23:34:07 2014 -0400
@@ -773,7 +828,7 @@ Date: Tue Sep 9 23:34:07 2014 -0400
Signed-off-by: Mark Salter <msalter@redhat.com>
-commit 7e7eade04b5fe90bb30a68aa52f0881b354e7d1d
+commit ff93b53f3ca8748529855d421bf79329086544cd
Author: Graeme Gregory <graeme.gregory@linaro.org>
Date: Fri Jul 26 17:55:02 2013 +0100
@@ -783,7 +838,7 @@ Date: Fri Jul 26 17:55:02 2013 +0100
Signed-off-by: Graeme Gregory <graeme.gregory@linaro.org>
-commit a1b37e75322dfbd359c86e51ee624511811c93b6
+commit 5315cb5a532e900612ac1202507551761e8bd13c
Author: Graeme Gregory <graeme.gregory@linaro.org>
Date: Wed Jul 24 11:29:48 2013 +0100
@@ -796,20 +851,7 @@ Date: Wed Jul 24 11:29:48 2013 +0100
Signed-off-by: Graeme Gregory <graeme.gregory@linaro.org>
-commit 29fe31c2a0e6ce57695c1341351c2579d159e446
-Author: Mark Salter <msalter@redhat.com>
-Date: Thu Sep 18 15:05:23 2014 -0400
-
- arm64: add sev to parking protocol
-
- Parking protocol wakes secondary cores with an interrupt.
- This patch adds an additional sev() to send an event. This
- is a temporary hack for APM Mustang board and not intended
- for upstream.
-
- Signed-off-by: Mark Salter <msalter@redhat.com>
-
-commit 0875f7e4b6b078859a3765aac54c345980b2748c
+commit 640f607f1fa10c7c0cd6025dde8883d02fc9b411
Author: Mark Salter <msalter@redhat.com>
Date: Sun Sep 14 09:44:44 2014 -0400
@@ -819,13 +861,13 @@ Date: Sun Sep 14 09:44:44 2014 -0400
Temporarily revert for backwards compatibility with rh-0.12-1 firmware
-commit 31bf2a5577ffb5b318bb9f5d80a9f26224674521
+commit e8afbea7e3e11f37c234770d72725894f92de415
Author: Mark Salter <msalter@redhat.com>
Date: Mon Aug 11 13:46:43 2014 -0400
xgene: add support for ACPI-probed serial port
-commit f099d9ceac69d7fda70e5d3ee8200f8585f4ff88
+commit 3d0ad3e452a81a32842d85dbb88078b74582efb5
Author: Mark Salter <msalter@redhat.com>
Date: Sat Aug 9 12:01:20 2014 -0400
@@ -833,7 +875,20 @@ Date: Sat Aug 9 12:01:20 2014 -0400
Signed-off-by: Mark Salter <msalter@redhat.com>
-commit 7020f9dda064514d58da5701a351d4773a1d274f
+commit a42353df5a2f741e8d2e356c3f053aac8d3eff0e
+Author: Mark Salter <msalter@redhat.com>
+Date: Thu Sep 18 15:05:23 2014 -0400
+
+ arm64: add sev to parking protocol
+
+ Parking protocol wakes secondary cores with an interrupt.
+ This patch adds an additional sev() to send an event. This
+ is a temporary hack for APM Mustang board and not intended
+ for upstream.
+
+ Signed-off-by: Mark Salter <msalter@redhat.com>
+
+commit d81f088880b9d763a7006e40dff6bb526c534255
Author: Mark Salter <msalter@redhat.com>
Date: Tue Sep 9 22:59:48 2014 -0400
@@ -849,7 +904,7 @@ Date: Tue Sep 9 22:59:48 2014 -0400
Signed-off-by: Mark Salter <msalter@redhat.com>
-commit 17b60c76da131d5fb9c401ec43404c911fe57f39
+commit 475b6ce1555e1146761b53c550f2ac019311739f
Author: Hanjun Guo <hanjun.guo@linaro.org>
Date: Thu Aug 28 14:26:16 2014 -0400
@@ -863,7 +918,7 @@ Date: Thu Aug 28 14:26:16 2014 -0400
[fixed up for 3.17-rc]
Signed-off-by: Mark Salter <msalter@redhat.com>
-commit fc47393ae2927cb1069c2e15a7b142998702b05d
+commit cb6ebe40936adc5c3154abbec6f89ccb8a0536b7
Author: Al Stone <ahs3@redhat.com>
Date: Thu Aug 28 13:14:16 2014 -0400
@@ -871,7 +926,7 @@ Date: Thu Aug 28 13:14:16 2014 -0400
Signed-off-by: Mark Salter <msalter@redhat.com>
-commit 7100a707311becfd1cbfc26ad8298cc290877db5
+commit b7fc0378e13207a53a3e8466ba6329cfbcaa0526
Author: Suravee Suthikulpanit <Suravee.Suthikulpanit@amd.com>
Date: Tue Sep 9 15:37:15 2014 -0500
@@ -897,7 +952,22 @@ Date: Tue Sep 9 15:37:15 2014 -0500
Signed-off-by: Suravee Suthikulpanit <Suravee.Suthikulpanit@amd.com>
-commit 397bc93ab853400f7146b8be14bd6cc044df9830
+commit c5b655e6af273a61e7ec3653deb3550ae4f7abf1
+Author: Mark Salter <msalter@redhat.com>
+Date: Wed Nov 19 10:08:29 2014 -0500
+
+ tty/sbsauart: make ttySBSA the active console device
+
+ The sbsauart driver doesn't register itself as a console
+ until module_initcall time. This allows the virtual console
+ driver to register the active console if no console= is
+ given on the cmdline. This patch allows ttySBSA to take
+ over the active console device role from any existing
+ console device if no console= is given on the cmdline.
+
+ Signed-off-by: Mark Salter <msalter@redhat.com>
+
+commit 6bee52af3d281d91b871f6876138fa51a41f0472
Author: Graeme Gregory <graeme.gregory@linaro.org>
Date: Wed Aug 13 13:47:18 2014 +0100
@@ -912,7 +982,7 @@ Date: Wed Aug 13 13:47:18 2014 +0100
Signed-off-by: Graeme Gregory <graeme.gregory@linaro.org>
-commit 1e6ba230a5e0c03916b0134d846204e64c477972
+commit a66f13e7c17cf7283b9987da2349c0a5c204fa4b
Author: Mark Salter <msalter@redhat.com>
Date: Mon Sep 8 11:58:46 2014 -0400
@@ -926,7 +996,7 @@ Date: Mon Sep 8 11:58:46 2014 -0400
Signed-off-by: Mark Salter <msalter@redhat.com>
-commit b3ae15f9e484bab186a5ed697bb25f0244b5aa50
+commit b00f36975b651c0afbddee49e84109694e610f43
Author: Graeme Gregory <graeme.gregory@linaro.org>
Date: Mon Sep 8 10:36:44 2014 -0400
@@ -938,7 +1008,7 @@ Date: Mon Sep 8 10:36:44 2014 -0400
Signed-off-by: Al Stone <al.stone@linaro.org>
Signed-off-by: Graeme Gregory <graeme.gregory@linaro.org>
-commit 4b29bf89ba430787509cb06a6aa38fafeb910b56
+commit 4f6ca522fc13d8c13c844a2c2f9eafe091a336a9
Author: Mark Salter <msalter@redhat.com>
Date: Mon Sep 8 17:04:28 2014 -0400
@@ -950,7 +1020,7 @@ Date: Mon Sep 8 17:04:28 2014 -0400
Signed-off-by: Mark Salter <msalter@redhat.com>
-commit 58bb9299b1b2a87bd8002ee1bd6eb90138cc4f30
+commit 91eaa3c5387ebcf698b070a4c21e39e5240699ba
Author: Graeme Gregory <graeme.gregory@linaro.org>
Date: Fri Oct 17 21:37:14 2014 +0800
@@ -963,7 +1033,7 @@ Date: Fri Oct 17 21:37:14 2014 +0800
Signed-off-by: Al Stone <al.stone@linaro.org>
Signed-off-by: Hanjun Guo <hanjun.guo@linaro.org>
-commit 47e5e8a11d7d0f4930c2e98671a973f3edac313f
+commit ef17919599275fd58edb255ecf69807653cdd763
Author: Graeme Gregory <graeme.gregory@linaro.org>
Date: Fri Oct 17 21:37:13 2014 +0800
@@ -979,7 +1049,7 @@ Date: Fri Oct 17 21:37:13 2014 +0800
Signed-off-by: Al Stone <al.stone@linaro.org>
Signed-off-by: Hanjun Guo <hanjun.guo@linaro.org>
-commit 3738397b4a8e91102db2af9ad29919a19425b3f0
+commit 7d78ff059af78cc5a80576314c38584834557fc1
Author: Al Stone <al.stone@linaro.org>
Date: Fri Oct 17 21:37:12 2014 +0800
@@ -993,7 +1063,7 @@ Date: Fri Oct 17 21:37:12 2014 +0800
Signed-off-by: Al Stone <al.stone@linaro.org>
Signed-off-by: Hanjun Guo <hanjun.guo@linaro.org>
-commit 77476629347ec5b72b13e0f3d2cf71604286298c
+commit 8a387ea5071c9d8bdaf5305320130022ec1d4f7d
Author: Hanjun Guo <hanjun.guo@linaro.org>
Date: Fri Oct 17 21:37:11 2014 +0800
@@ -1005,7 +1075,7 @@ Date: Fri Oct 17 21:37:11 2014 +0800
Originally-by: Amit Daniel Kachhap <amit.daniel@samsung.com>
Signed-off-by: Hanjun Guo <hanjun.guo@linaro.org>
-commit 1386d5f6353e7a13d34df5302bc7e4bd1c6aae28
+commit 7523c8b3b0d23629781c4581272c0647fa543af5
Author: Tomasz Nowicki <tomasz.nowicki@linaro.org>
Date: Fri Oct 17 21:37:10 2014 +0800
@@ -1023,7 +1093,7 @@ Date: Fri Oct 17 21:37:10 2014 +0800
Signed-off-by: Tomasz Nowicki <tomasz.nowicki@linaro.org>
Signed-off-by: Hanjun Guo <hanjun.guo@linaro.org>
-commit 5213320ccc37374bbf6facc7f7e3c9246bc933c3
+commit 743691994f2fb03bc05f539a42ba6ccccb5d18b8
Author: Hanjun Guo <hanjun.guo@linaro.org>
Date: Fri Oct 17 21:37:09 2014 +0800
@@ -1039,7 +1109,7 @@ Date: Fri Oct 17 21:37:09 2014 +0800
Originally-by: Amit Daniel Kachhap <amit.daniel@samsung.com>
Signed-off-by: Hanjun Guo <hanjun.guo@linaro.org>
-commit d1c5a9cdd33f04d4ca5f8ef1b8aed16552fc4f2d
+commit 0c4d9983cb7b50351aad0aa32e8b6134adaabb0d
Author: Hanjun Guo <hanjun.guo@linaro.org>
Date: Fri Oct 17 21:37:08 2014 +0800
@@ -1053,7 +1123,7 @@ Date: Fri Oct 17 21:37:08 2014 +0800
Signed-off-by: Hanjun Guo <hanjun.guo@linaro.org>
-commit 9db9a0235e80b8a80af1a000fac4127333b2a2e6
+commit cb6b980abe388e25e357f73c5780aa1cf1b2e337
Author: Hanjun Guo <hanjun.guo@linaro.org>
Date: Fri Oct 17 21:37:07 2014 +0800
@@ -1072,7 +1142,7 @@ Date: Fri Oct 17 21:37:07 2014 +0800
Signed-off-by: Hanjun Guo <hanjun.guo@linaro.org>
Signed-off-by: Tomasz Nowicki <tomasz.nowicki@linaro.org>
-commit 1a5a392de06147924052458a6c2fd182dcd4d509
+commit 74a72e003ae388f460294a0910a536aced8ce93c
Author: Hanjun Guo <hanjun.guo@linaro.org>
Date: Fri Oct 17 21:37:06 2014 +0800
@@ -1092,7 +1162,7 @@ Date: Fri Oct 17 21:37:06 2014 +0800
Signed-off-by: Hanjun Guo <hanjun.guo@linaro.org>
Signed-off-by: Tomasz Nowicki <tomasz.nowicki@linaro.org>
-commit dbb10ccb37b11731a79bc004da46e482a7152be4
+commit 059facbd0f0664aaaf6d732ce02b2f56ea6ad98f
Author: Hanjun Guo <hanjun.guo@linaro.org>
Date: Fri Oct 17 21:37:05 2014 +0800
@@ -1121,7 +1191,7 @@ Date: Fri Oct 17 21:37:05 2014 +0800
Signed-off-by: Graeme Gregory <graeme.gregory@linaro.org>
Signed-off-by: Tomasz Nowicki <tomasz.nowicki@linaro.org>
-commit f367d6c84f50ad7e1944ef6ec7aca8b01fd82051
+commit 7ec63267bb1630c62e5f7fd2eb75a9a31131c89a
Author: Hanjun Guo <hanjun.guo@linaro.org>
Date: Fri Oct 17 21:37:04 2014 +0800
@@ -1136,7 +1206,7 @@ Date: Fri Oct 17 21:37:04 2014 +0800
Signed-off-by: Hanjun Guo <hanjun.guo@linaro.org>
-commit 2926fd3502c857db06ab41caa8f628089287d6f4
+commit 2f1dd91e7866f2b617af29e9973b88b2cc2e00d6
Author: Graeme Gregory <graeme.gregory@linaro.org>
Date: Fri Oct 17 21:37:03 2014 +0800
@@ -1149,7 +1219,7 @@ Date: Fri Oct 17 21:37:03 2014 +0800
Signed-off-by: Graeme Gregory <graeme.gregory@linaro.org>
Signed-off-by: Hanjun Guo <hanjun.guo@linaro.org>
-commit d40d81475b41044935ee4eb455a58308e0f070ac
+commit 6941a3cced9ca3d29e6e9c8b0f43917526b74789
Author: Al Stone <al.stone@linaro.org>
Date: Fri Oct 17 21:37:02 2014 +0800
@@ -1167,7 +1237,7 @@ Date: Fri Oct 17 21:37:02 2014 +0800
Signed-off-by: Graeme Gregory <graeme.gregory@linaro.org>
Signed-off-by: Hanjun Guo <hanjun.guo@linaro.org>
-commit 19ddd869d20be9d05e37a3e867f3c1c379bc0a07
+commit 8764d6bd07827a2a29eaaa382fc397527ad1ba19
Author: Graeme Gregory <graeme.gregory@linaro.org>
Date: Fri Oct 17 21:37:01 2014 +0800
@@ -1182,7 +1252,7 @@ Date: Fri Oct 17 21:37:01 2014 +0800
Signed-off-by: Tomasz Nowicki <tomasz.nowicki@linaro.org>
Signed-off-by: Hanjun Guo <hanjun.guo@linaro.org>
-commit b2247b541995418caafcfc9f12e57b444fdee75d
+commit 37144fd61ca68e9d542e875187739c982c8d3662
Author: Al Stone <al.stone@linaro.org>
Date: Fri Oct 17 21:37:00 2014 +0800
@@ -1214,7 +1284,7 @@ Date: Fri Oct 17 21:37:00 2014 +0800
Signed-off-by: Tomasz Nowicki <tomasz.nowicki@linaro.org>
Signed-off-by: Hanjun Guo <hanjun.guo@linaro.org>
-commit ff7fee61b5c51bc24b358a6521ee9ac0c81c4ae6
+commit a4f035d2876b41b6f224321da6b6278de577d4c5
Author: Tomasz Nowicki <tomasz.nowicki@linaro.org>
Date: Fri Oct 17 21:36:59 2014 +0800
@@ -1233,7 +1303,7 @@ Date: Fri Oct 17 21:36:59 2014 +0800
Signed-off-by: Tomasz Nowicki <tomasz.nowicki@linaro.org>
Signed-off-by: Hanjun Guo <hanjun.guo@linaro.org>
-commit 77a4d1f4423591c4f0bed7d580afb7fc7cacb082
+commit b3055f38d52f5be0103b436a1b04fbf3947aaa39
Author: Ashwin Chaugule <ashwin.chaugule@linaro.org>
Date: Fri Oct 17 21:36:58 2014 +0800
@@ -1251,7 +1321,7 @@ Date: Fri Oct 17 21:36:58 2014 +0800
Signed-off-by: Tomasz Nowicki <tomasz.nowicki@linaro.org>
Signed-off-by: Hanjun Guo <hanjun.guo@linaro.org>
-commit 17a565aba814f8cb39d27afb0dbf3834be83ac41
+commit fff62dfc1d7ab6ad3d528b008413fd116d208150
Author: Mark Salter <msalter@redhat.com>
Date: Sat Nov 8 22:25:48 2014 -0500
@@ -1262,7 +1332,7 @@ Date: Sat Nov 8 22:25:48 2014 -0500
Signed-off-by: Mark Salter <msalter@redhat.com>
-commit c66bae4dfb9dbf577e4692fd034cb80703f687a6
+commit 997a0488adb3f525aedb678b584f2733f43e248e
Author: Mark Salter <msalter@redhat.com>
Date: Sat Nov 8 15:25:41 2014 -0500
@@ -1272,7 +1342,7 @@ Date: Sat Nov 8 15:25:41 2014 -0500
Signed-off-by: Mark Salter <msalter@redhat.com>
-commit ddc5d1b9a52d9c17fd975fd6ee22be7d6ce5e496
+commit 5b823d4bf52286f97dc76683b533ae5c08763897
Author: Mark Salter <msalter@redhat.com>
Date: Thu Jul 17 13:34:50 2014 -0400
@@ -1290,7 +1360,7 @@ Date: Thu Jul 17 13:34:50 2014 -0400
Signed-off-by: Mark Salter <msalter@redhat.com>
-commit 8675c7685ea64e0fda9cebbed08e3f30a71589cf
+commit f866806e1ca75a0efc62cda59559286faa7c9926
Author: Kyle McMartin <kmcmarti@redhat.com>
Date: Tue May 13 22:25:26 2014 -0400
@@ -1360,7 +1430,7 @@ Date: Tue May 13 22:25:26 2014 -0400
Signed-off-by: Kyle McMartin <kmcmarti@redhat.com>
Signed-off-by: Donald Dutile <ddutile@redhat.com>
-commit ff46d52dc804aeff783ff55b4b6dc489da20bc11
+commit a68d368ceb495cabafe82cdd0b83ec1e271a7f9d
Author: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Date: Fri Nov 7 14:12:34 2014 +0000
@@ -1374,7 +1444,7 @@ Date: Fri Nov 7 14:12:34 2014 +0000
Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Signed-off-by: Will Deacon <will.deacon@arm.com>
-commit 6ddb6f9d2fe1ecab0b812b3adc4ba4bc0cf19ad8
+commit 246a31b3a8f065e831a6d8d9fd96f3a8e17dbdb9
Author: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Date: Fri Nov 7 14:12:33 2014 +0000
@@ -1386,7 +1456,7 @@ Date: Fri Nov 7 14:12:33 2014 +0000
Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Signed-off-by: Will Deacon <will.deacon@arm.com>
-commit 35939bd2c847d742ab82049b2cc79c086e0e7130
+commit ecd0f8e21514e8ac758ed16a188faaa4c5ef75c7
Author: Mark Rutland <mark.rutland@arm.com>
Date: Tue Nov 4 10:50:16 2014 +0000
@@ -1408,7 +1478,7 @@ Date: Tue Nov 4 10:50:16 2014 +0000
Signed-off-by: Mark Rutland <mark.rutland@arm.com>
Signed-off-by: Will Deacon <will.deacon@arm.com>
-commit aea6f516118cedb6f9e8d2ab23ab5a09c275e68d
+commit 2899d6ea451eb0037427bbf430069f73cb76becc
Author: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Date: Mon Nov 3 16:50:01 2014 +0000
@@ -1424,7 +1494,7 @@ Date: Mon Nov 3 16:50:01 2014 +0000
Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Signed-off-by: Will Deacon <will.deacon@arm.com>
-commit 0844cddfa0ad22093ef94fdf203fe50cb92222db
+commit 67b1122c25f0c7a9a126ebabcd2085ef99640c13
Author: Geoff Levand <geoff@infradead.org>
Date: Fri Oct 31 23:06:47 2014 +0000
@@ -1445,7 +1515,7 @@ Date: Fri Oct 31 23:06:47 2014 +0000
Signed-off-by: Geoff Levand <geoff@infradead.org>
Signed-off-by: Will Deacon <will.deacon@arm.com>
-commit 94141ed36a5e0a2159deadfcc29a504b55bb352d
+commit 6a3c07e9aa03b7fbec14ab8bc21fce8590f12d83
Author: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Date: Tue Oct 28 12:24:20 2014 +0000
@@ -1468,7 +1538,7 @@ Date: Tue Oct 28 12:24:20 2014 +0000
Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Signed-off-by: Will Deacon <will.deacon@arm.com>
-commit a3b3b6027369ce53251bb381c9b87031bbd75464
+commit 7c0569a739d0f1dd8ffd709cf37c53bb42143687
Author: Steve Capper <steve.capper@linaro.org>
Date: Fri Oct 24 13:22:20 2014 +0100
@@ -1501,7 +1571,7 @@ Date: Fri Oct 24 13:22:20 2014 +0100
Signed-off-by: Steve Capper <steve.capper@linaro.org>
Signed-off-by: Will Deacon <will.deacon@arm.com>
-commit e21d5b44cf03b31feac7854a5953d17ef94d76d9
+commit 7acf53bfb80c2823d233c14d33cfd2d119713b89
Author: Joonwoo Park <joonwoop@codeaurora.org>
Date: Tue Oct 21 01:59:03 2014 +0100
@@ -1519,20 +1589,7 @@ Date: Tue Oct 21 01:59:03 2014 +0100
Signed-off-by: Joonwoo Park <joonwoop@codeaurora.org>
Signed-off-by: Will Deacon <will.deacon@arm.com>
-commit c8f2e7e08d50c4adb77a0fac4a2871c100ef2f51
-Author: Min-Hua Chen <orca.chen@gmail.com>
-Date: Thu Oct 9 16:53:10 2014 +0100
-
- arm64: fix data type for physical address
-
- Use phys_addr_t for physical address in alloc_init_pud. Although
- phys_addr_t and unsigned long are 64 bit in arm64, it is better
- to use phys_addr_t to describe physical addresses.
-
- Signed-off-by: Min-Hua Chen <orca.chen@gmail.com>
- Signed-off-by: Will Deacon <will.deacon@arm.com>
-
-commit 674f32f5ef38c93af7a273a725a0a89b4b8a38a1
+commit 1971c19fb2a38a1d94cedada404760a917c36cd4
Author: Mark Rutland <mark.rutland@arm.com>
Date: Thu Oct 23 16:33:33 2014 +0100
@@ -1572,7 +1629,7 @@ Date: Thu Oct 23 16:33:33 2014 +0100
Acked-by: Matt Fleming <matt.fleming@intel.com>
Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
-commit 872cf856a3fc4cff5190af2f79cfc3ac410eae17
+commit 7652016ff98e614ed2e3abac19b996af02434293
Author: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Date: Wed Oct 15 09:36:50 2014 +0200
@@ -1587,7 +1644,7 @@ Date: Wed Oct 15 09:36:50 2014 +0200
Acked-by: Leif Lindholm <leif.lindholm@linaro.org>
Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
-commit 2a2978d3748379bb9a0889c866b210f288c45160
+commit 2586f232bd388d2223f3c7bcba446b2bd25d8e3d
Author: Yi Li <yi.li@linaro.org>
Date: Sat Oct 4 23:46:43 2014 +0800
@@ -1602,7 +1659,7 @@ Date: Sat Oct 4 23:46:43 2014 +0800
Tested-by: Leif Lindholm <leif.lindholm@linaro.org>
Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
-commit c0f06f02f228ca722a2b850363c342f63e6214a6
+commit 16b52b24f3d7a4f1555e4233398172b32306c1e4
Author: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Date: Tue Oct 14 16:41:27 2014 +0200
@@ -1637,7 +1694,7 @@ Date: Tue Oct 14 16:41:27 2014 +0200
Acked-by: Matt Fleming <matt.fleming@intel.com>
Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
-commit 4ebf40f890ebad9458abc56e00d4814bc881fb9d
+commit 016f4b4f5cee9ddd8c243a36c220a65bdfb82dc8
Author: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Date: Tue Oct 14 16:34:47 2014 +0200
@@ -1657,7 +1714,7 @@ Date: Tue Oct 14 16:34:47 2014 +0200
Acked-by: Matt Fleming <matt.fleming@intel.com>
Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
-commit 90c66a6923311d477c68543f945f543558b91eec
+commit ac627ea950e853f0a3f91607fb16cb9477f434d7
Author: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Date: Fri Oct 17 12:44:11 2014 +0200
@@ -1670,7 +1727,7 @@ Date: Fri Oct 17 12:44:11 2014 +0200
Acked-by: Will Deacon <will.deacon@arm.com>
Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
-commit bbc705f61c1aebddb5bf80f75964b6da40c55ca9
+commit 850ba08a3f4756a8340edadd4fdeccd881813ba5
Author: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Date: Mon Oct 20 15:31:57 2014 +0200
@@ -1696,7 +1753,7 @@ Date: Mon Oct 20 15:31:57 2014 +0200
Acked-by: Roy Franz <roy.franz@linaro.org>
Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
-commit d6e4e04244cb7b4670759bd83679ead21df55a8a
+commit 2787807ca4f5f7df82a5c54312753b157e8c052e
Author: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Date: Fri Oct 10 18:42:55 2014 +0200
@@ -1712,7 +1769,7 @@ Date: Fri Oct 10 18:42:55 2014 +0200
Acked-by: Roy Franz <roy.franz@linaro.org>
Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
-commit e9e7422d7035c64a16771d47dcd9f907adc5070d
+commit 7bd0585d9ab62d9787c389d3b62141b76319e5f7
Author: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Date: Fri Oct 10 11:25:24 2014 +0200
@@ -1731,7 +1788,7 @@ Date: Fri Oct 10 11:25:24 2014 +0200
Acked-by: Mark Rutland <mark.rutland@arm.com>
Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
-commit 2d2346a11e6ac9be30ac5590a7ec4b47bda35870
+commit 5a0edb2dbdf9327322ae57e8e16d162c2a371318
Author: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Date: Wed Oct 8 16:11:27 2014 +0200
@@ -1766,6 +1823,8 @@ Date: Wed Oct 8 16:11:27 2014 +0200
Documentation/arm64/arm-acpi.txt | 323 ++++++++++
Documentation/gpio/consumer.txt | 18 +
Documentation/kernel-parameters.txt | 3 +-
+ arch/arm/include/asm/kvm_mmu.h | 5 +-
+ arch/arm/kvm/mmu.c | 22 +-
arch/arm/mach-s3c24xx/h1940-bluetooth.c | 4 +-
arch/arm/mach-s3c24xx/h1940.h | 4 +-
arch/arm/mach-s3c24xx/mach-h1940.c | 3 +-
@@ -1786,6 +1845,7 @@ Date: Wed Oct 8 16:11:27 2014 +0200
arch/arm64/include/asm/dmi.h | 31 +
arch/arm64/include/asm/elf.h | 3 +-
arch/arm64/include/asm/kvm_arm.h | 21 +-
+ arch/arm64/include/asm/kvm_mmu.h | 5 +-
arch/arm64/include/asm/pci.h | 51 ++
arch/arm64/include/asm/psci.h | 3 +-
arch/arm64/include/asm/smp.h | 10 +-
@@ -1799,13 +1859,13 @@ Date: Wed Oct 8 16:11:27 2014 +0200
arch/arm64/kernel/io.c | 66 +-
arch/arm64/kernel/pci.c | 97 ++-
arch/arm64/kernel/psci.c | 78 ++-
- arch/arm64/kernel/setup.c | 67 +-
+ arch/arm64/kernel/setup.c | 51 +-
arch/arm64/kernel/smp.c | 2 +-
arch/arm64/kernel/smp_parking_protocol.c | 110 ++++
arch/arm64/kernel/time.c | 7 +
arch/arm64/kernel/vmlinux.lds.S | 17 +
arch/arm64/kvm/hyp.S | 4 +-
- arch/arm64/mm/dma-mapping.c | 103 +++
+ arch/arm64/mm/dma-mapping.c | 112 ++++
arch/arm64/pci/Makefile | 2 +
arch/arm64/pci/mmconfig.c | 292 +++++++++
arch/arm64/pci/pci.c | 461 ++++++++++++++
@@ -1848,18 +1908,18 @@ Date: Wed Oct 8 16:11:27 2014 +0200
drivers/net/ethernet/amd/xgbe/xgbe-mdio.c | 20 +-
drivers/net/ethernet/amd/xgbe/xgbe-ptp.c | 4 +-
drivers/net/ethernet/amd/xgbe/xgbe.h | 13 +
- drivers/net/ethernet/apm/xgene/xgene_enet_hw.c | 78 ++-
+ drivers/net/ethernet/apm/xgene/xgene_enet_hw.c | 69 +-
drivers/net/ethernet/apm/xgene/xgene_enet_main.c | 68 +-
drivers/net/ethernet/apm/xgene/xgene_enet_main.h | 1 +
drivers/net/ethernet/smsc/smc91x.c | 10 +
drivers/net/phy/Kconfig | 2 +-
drivers/net/phy/amd-xgbe-phy.c | 777 ++++++++++++-----------
drivers/of/base.c | 33 +
- drivers/pci/host/pci-xgene.c | 174 ++++-
+ drivers/pci/host/pci-xgene.c | 167 +++++
drivers/pnp/resource.c | 2 +
drivers/tty/Kconfig | 6 +
drivers/tty/Makefile | 1 +
- drivers/tty/sbsauart.c | 355 +++++++++++
+ drivers/tty/sbsauart.c | 358 +++++++++++
drivers/tty/serial/8250/8250_dw.c | 9 +
drivers/virtio/virtio_mmio.c | 12 +-
drivers/xen/efi.c | 1 +
@@ -1874,16 +1934,17 @@ Date: Wed Oct 8 16:11:27 2014 +0200
include/linux/gpio_keys.h | 3 +
include/linux/irqchip/arm-gic-acpi.h | 31 +
include/linux/irqchip/arm-gic.h | 2 +
+ include/linux/kvm_host.h | 1 +
include/linux/leds.h | 3 +-
include/linux/of.h | 34 +
include/linux/pci.h | 37 +-
include/linux/property.h | 143 +++++
net/rfkill/rfkill-gpio.c | 18 +-
- virt/kvm/arm/arch_timer.c | 108 ++--
- virt/kvm/arm/vgic-v2.c | 75 ++-
+ virt/kvm/arm/arch_timer.c | 107 ++--
+ virt/kvm/arm/vgic-v2.c | 86 ++-
virt/kvm/arm/vgic-v3.c | 8 +-
- virt/kvm/arm/vgic.c | 32 +-
- 121 files changed, 6824 insertions(+), 1115 deletions(-)
+ virt/kvm/arm/vgic.c | 30 +-
+ 125 files changed, 6843 insertions(+), 1117 deletions(-)
diff --git a/Documentation/acpi/gpio-properties.txt b/Documentation/acpi/gpio-properties.txt
new file mode 100644
@@ -2366,6 +2427,91 @@ index 479f332..6187d9b 100644
See also Documentation/power/runtime_pm.txt, pci=noacpi
+diff --git a/arch/arm/include/asm/kvm_mmu.h b/arch/arm/include/asm/kvm_mmu.h
+index acb0d57..f867060 100644
+--- a/arch/arm/include/asm/kvm_mmu.h
++++ b/arch/arm/include/asm/kvm_mmu.h
+@@ -161,9 +161,10 @@ static inline bool vcpu_has_cache_enabled(struct kvm_vcpu *vcpu)
+ }
+
+ static inline void coherent_cache_guest_page(struct kvm_vcpu *vcpu, hva_t hva,
+- unsigned long size)
++ unsigned long size,
++ bool ipa_uncached)
+ {
+- if (!vcpu_has_cache_enabled(vcpu))
++ if (!vcpu_has_cache_enabled(vcpu) || ipa_uncached)
+ kvm_flush_dcache_to_poc((void *)hva, size);
+
+ /*
+diff --git a/arch/arm/kvm/mmu.c b/arch/arm/kvm/mmu.c
+index 8664ff1..8fa2060 100644
+--- a/arch/arm/kvm/mmu.c
++++ b/arch/arm/kvm/mmu.c
+@@ -853,6 +853,7 @@ static int user_mem_abort(struct kvm_vcpu *vcpu, phys_addr_t fault_ipa,
+ struct vm_area_struct *vma;
+ pfn_t pfn;
+ pgprot_t mem_type = PAGE_S2;
++ bool fault_ipa_uncached;
+
+ write_fault = kvm_is_write_fault(vcpu);
+ if (fault_status == FSC_PERM && !write_fault) {
+@@ -919,6 +920,8 @@ static int user_mem_abort(struct kvm_vcpu *vcpu, phys_addr_t fault_ipa,
+ if (!hugetlb && !force_pte)
+ hugetlb = transparent_hugepage_adjust(&pfn, &fault_ipa);
+
++ fault_ipa_uncached = memslot->flags & KVM_MEMSLOT_INCOHERENT;
++
+ if (hugetlb) {
+ pmd_t new_pmd = pfn_pmd(pfn, mem_type);
+ new_pmd = pmd_mkhuge(new_pmd);
+@@ -926,7 +929,8 @@ static int user_mem_abort(struct kvm_vcpu *vcpu, phys_addr_t fault_ipa,
+ kvm_set_s2pmd_writable(&new_pmd);
+ kvm_set_pfn_dirty(pfn);
+ }
+- coherent_cache_guest_page(vcpu, hva & PMD_MASK, PMD_SIZE);
++ coherent_cache_guest_page(vcpu, hva & PMD_MASK, PMD_SIZE,
++ fault_ipa_uncached);
+ ret = stage2_set_pmd_huge(kvm, memcache, fault_ipa, &new_pmd);
+ } else {
+ pte_t new_pte = pfn_pte(pfn, mem_type);
+@@ -934,7 +938,8 @@ static int user_mem_abort(struct kvm_vcpu *vcpu, phys_addr_t fault_ipa,
+ kvm_set_s2pte_writable(&new_pte);
+ kvm_set_pfn_dirty(pfn);
+ }
+- coherent_cache_guest_page(vcpu, hva, PAGE_SIZE);
++ coherent_cache_guest_page(vcpu, hva, PAGE_SIZE,
++ fault_ipa_uncached);
+ ret = stage2_set_pte(kvm, memcache, fault_ipa, &new_pte,
+ pgprot_val(mem_type) == pgprot_val(PAGE_S2_DEVICE));
+ }
+@@ -1245,6 +1250,10 @@ int kvm_arch_prepare_memory_region(struct kvm *kvm,
+ (KVM_PHYS_SIZE >> PAGE_SHIFT))
+ return -EFAULT;
+
++ spin_lock(&kvm->mmu_lock);
++ stage2_flush_memslot(kvm, memslot);
++ spin_unlock(&kvm->mmu_lock);
++
+ /*
+ * A memory region could potentially cover multiple VMAs, and any holes
+ * between them, so iterate over all of them to find out if we can map
+@@ -1310,6 +1319,15 @@ void kvm_arch_free_memslot(struct kvm *kvm, struct kvm_memory_slot *free,
+ int kvm_arch_create_memslot(struct kvm *kvm, struct kvm_memory_slot *slot,
+ unsigned long npages)
+ {
++ /*
++ * Readonly memslots are not incoherent with the caches by definition,
++ * but in practice, they are used mostly to emulate ROMs or NOR flashes
++ * that the guest may consider devices and hence map as uncached.
++ * To prevent incoherency issues in these cases, tag all readonly
++ * regions as incoherent.
++ */
++ if (slot->flags & KVM_MEM_READONLY)
++ slot->flags |= KVM_MEMSLOT_INCOHERENT;
+ return 0;
+ }
+
diff --git a/arch/arm/mach-s3c24xx/h1940-bluetooth.c b/arch/arm/mach-s3c24xx/h1940-bluetooth.c
index b4d14b8..9c8b127 100644
--- a/arch/arm/mach-s3c24xx/h1940-bluetooth.c
@@ -3180,6 +3326,23 @@ index 7fd3e27..8afb863 100644
#define ESR_EL2_EC_UNKNOWN (0x00)
#define ESR_EL2_EC_WFI (0x01)
+diff --git a/arch/arm64/include/asm/kvm_mmu.h b/arch/arm64/include/asm/kvm_mmu.h
+index 0caf7a5..123b521 100644
+--- a/arch/arm64/include/asm/kvm_mmu.h
++++ b/arch/arm64/include/asm/kvm_mmu.h
+@@ -243,9 +243,10 @@ static inline bool vcpu_has_cache_enabled(struct kvm_vcpu *vcpu)
+ }
+
+ static inline void coherent_cache_guest_page(struct kvm_vcpu *vcpu, hva_t hva,
+- unsigned long size)
++ unsigned long size,
++ bool ipa_uncached)
+ {
+- if (!vcpu_has_cache_enabled(vcpu))
++ if (!vcpu_has_cache_enabled(vcpu) || ipa_uncached)
+ kvm_flush_dcache_to_poc((void *)hva, size);
+
+ if (!icache_is_aliasing()) { /* PIPT */
diff --git a/arch/arm64/include/asm/pci.h b/arch/arm64/include/asm/pci.h
index 872ba93..2f287a6 100644
--- a/arch/arm64/include/asm/pci.h
@@ -4312,7 +4475,7 @@ index 663da77..2d0deda 100644
static int __init cpu_psci_cpu_init(struct device_node *dn, unsigned int cpu)
diff --git a/arch/arm64/kernel/setup.c b/arch/arm64/kernel/setup.c
-index 2437196..4c7029d 100644
+index 2437196..914287d 100644
--- a/arch/arm64/kernel/setup.c
+++ b/arch/arm64/kernel/setup.c
@@ -43,6 +43,7 @@
@@ -4323,18 +4486,15 @@ index 2437196..4c7029d 100644
#include <asm/fixmap.h>
#include <asm/cpu.h>
-@@ -59,6 +60,10 @@
+@@ -59,6 +60,7 @@
#include <asm/memblock.h>
#include <asm/psci.h>
#include <asm/efi.h>
+#include <asm/acpi.h>
-+
-+int acadia_kvm_acpi=0;
-+EXPORT_SYMBOL(acadia_kvm_acpi);
unsigned int processor_id;
EXPORT_SYMBOL(processor_id);
-@@ -116,12 +121,16 @@ void __init early_print(const char *str, ...)
+@@ -116,12 +118,16 @@ void __init early_print(const char *str, ...)
void __init smp_setup_processor_id(void)
{
@@ -4351,7 +4511,7 @@ index 2437196..4c7029d 100644
}
bool arch_match_cpu_phys_id(int cpu, u64 phys_id)
-@@ -312,6 +321,7 @@ static void __init setup_machine_fdt(phys_addr_t dt_phys)
+@@ -312,6 +318,7 @@ static void __init setup_machine_fdt(phys_addr_t dt_phys)
}
machine_name = of_flat_dt_get_machine_name();
@@ -4359,7 +4519,7 @@ index 2437196..4c7029d 100644
}
/*
-@@ -378,6 +388,8 @@ void __init setup_arch(char **cmdline_p)
+@@ -378,6 +385,8 @@ void __init setup_arch(char **cmdline_p)
early_ioremap_init();
@@ -4368,7 +4528,7 @@ index 2437196..4c7029d 100644
parse_early_param();
/*
-@@ -389,19 +401,27 @@ void __init setup_arch(char **cmdline_p)
+@@ -389,19 +398,27 @@ void __init setup_arch(char **cmdline_p)
efi_init();
arm64_memblock_init();
@@ -4402,27 +4562,7 @@ index 2437196..4c7029d 100644
smp_build_mpidr_hash();
#endif
-@@ -414,6 +434,19 @@ void __init setup_arch(char **cmdline_p)
- #endif
- }
-
-+static int __init parse_kvm_acpi(char *arg)
-+{
-+ if (!arg)
-+ return -EINVAL;
-+
-+ if (strcmp(arg, "on") == 0) {
-+ acadia_kvm_acpi = 1;
-+ }
-+
-+ return 0;
-+}
-+early_param("kvmacpi", parse_kvm_acpi);
-+
- static int __init arm64_device_init(void)
- {
- of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL);
-@@ -506,3 +539,25 @@ const struct seq_operations cpuinfo_op = {
+@@ -506,3 +523,25 @@ const struct seq_operations cpuinfo_op = {
.stop = c_stop,
.show = c_show
};
@@ -4655,7 +4795,7 @@ index b72aa9f..fbe909f 100644
mrs x2, mdcr_el2
diff --git a/arch/arm64/mm/dma-mapping.c b/arch/arm64/mm/dma-mapping.c
-index d920942..705a9ce 100644
+index d920942..cf890e3 100644
--- a/arch/arm64/mm/dma-mapping.c
+++ b/arch/arm64/mm/dma-mapping.c
@@ -23,8 +23,14 @@
@@ -4673,7 +4813,7 @@ index d920942..705a9ce 100644
#include <asm/cacheflush.h>
-@@ -423,10 +429,107 @@ out:
+@@ -423,10 +429,116 @@ out:
return -ENOMEM;
}
@@ -4708,10 +4848,13 @@ index d920942..705a9ce 100644
+
+ /*
+ * Kernel defaults to noncoherent ops but ACPI 5.1 spec says arm64
-+ * defaults to coherent. Set coherent ops if _CCA not found or _CCA
-+ * found and non-zero.
++ * defaults to coherent. For PCI devices, the _CCA is only a default
++ * setting. Individual devices on a PCIe bus may set transaction
++ * ordering and caching attributes individually. Such drivers will
++ * also be resonsible for using the correct DMA ops for the cache
++ * conherence used.
+ *
-+ * PCI devices won't have an of_node but the bridge will.
++ * PCI devices won't have a handle but the bridge will.
+ * Search up the device chain until we find an ACPI handle
+ * to check.
+ */
@@ -4719,10 +4862,16 @@ index d920942..705a9ce 100644
+ if (ACPI_HANDLE(dev)) {
+ acpi_status status;
+ int coherent;
++ struct dma_map_ops *ops;
++
+ status = acpi_check_coherency(ACPI_HANDLE(dev),
+ &coherent);
+ if (ACPI_FAILURE(status) || coherent)
-+ set_dma_ops(_dev, &coherent_swiotlb_dma_ops);
++ ops = &coherent_swiotlb_dma_ops;
++ else
++ ops = &noncoherent_swiotlb_dma_ops;
++
++ set_dma_ops(_dev, ops);
+ break;
+ }
+ dev = dev->parent;
@@ -9790,26 +9939,10 @@ index 789957d..59498eb 100644
/* Timestamp support */
spinlock_t tstamp_lock;
diff --git a/drivers/net/ethernet/apm/xgene/xgene_enet_hw.c b/drivers/net/ethernet/apm/xgene/xgene_enet_hw.c
-index 7ba83ff..dbbd661 100644
+index 7ba83ff..29aad5e 100644
--- a/drivers/net/ethernet/apm/xgene/xgene_enet_hw.c
+++ b/drivers/net/ethernet/apm/xgene/xgene_enet_hw.c
-@@ -593,9 +593,12 @@ static int xgene_enet_reset(struct xgene_enet_pdata *pdata)
- if (!xgene_ring_mgr_init(pdata))
- return -ENODEV;
-
-- clk_prepare_enable(pdata->clk);
-- clk_disable_unprepare(pdata->clk);
-- clk_prepare_enable(pdata->clk);
-+ if (pdata->clk) {
-+ clk_prepare_enable(pdata->clk);
-+ clk_disable_unprepare(pdata->clk);
-+ clk_prepare_enable(pdata->clk);
-+ }
-+
- xgene_enet_ecc_init(pdata);
- xgene_enet_config_ring_if_assoc(pdata);
-
-@@ -663,15 +666,20 @@ static int xgene_enet_phy_connect(struct net_device *ndev)
+@@ -663,15 +663,20 @@ static int xgene_enet_phy_connect(struct net_device *ndev)
struct phy_device *phy_dev;
struct device *dev = &pdata->pdev->dev;
@@ -9837,7 +9970,7 @@ index 7ba83ff..dbbd661 100644
netdev_err(ndev, "Could not connect to PHY\n");
return -ENODEV;
}
-@@ -681,11 +689,52 @@ static int xgene_enet_phy_connect(struct net_device *ndev)
+@@ -681,11 +686,52 @@ static int xgene_enet_phy_connect(struct net_device *ndev)
~SUPPORTED_100baseT_Half &
~SUPPORTED_1000baseT_Half;
phy_dev->advertising = phy_dev->supported;
@@ -9891,7 +10024,7 @@ index 7ba83ff..dbbd661 100644
int xgene_enet_mdio_config(struct xgene_enet_pdata *pdata)
{
struct net_device *ndev = pdata->ndev;
-@@ -702,7 +751,7 @@ int xgene_enet_mdio_config(struct xgene_enet_pdata *pdata)
+@@ -702,7 +748,7 @@ int xgene_enet_mdio_config(struct xgene_enet_pdata *pdata)
}
}
@@ -9900,7 +10033,7 @@ index 7ba83ff..dbbd661 100644
netdev_dbg(ndev, "No mdio node in the dts\n");
return -ENXIO;
}
-@@ -720,7 +769,10 @@ int xgene_enet_mdio_config(struct xgene_enet_pdata *pdata)
+@@ -720,7 +766,10 @@ int xgene_enet_mdio_config(struct xgene_enet_pdata *pdata)
mdio_bus->priv = pdata;
mdio_bus->parent = &ndev->dev;
@@ -11316,7 +11449,7 @@ index 3823edf..4c2ccde 100644
* @np: device node from which the property value is to be read.
* @propname: name of the property to be searched.
diff --git a/drivers/pci/host/pci-xgene.c b/drivers/pci/host/pci-xgene.c
-index 9ecabfa..9029d59c 100644
+index 2988fe1..9029d59c 100644
--- a/drivers/pci/host/pci-xgene.c
+++ b/drivers/pci/host/pci-xgene.c
@@ -29,6 +29,7 @@
@@ -11555,10 +11688,10 @@ index 58ad1c0..c3211c0 100644
obj-y += ipwireless/
diff --git a/drivers/tty/sbsauart.c b/drivers/tty/sbsauart.c
new file mode 100644
-index 0000000..402f168
+index 0000000..0f44624
--- /dev/null
+++ b/drivers/tty/sbsauart.c
-@@ -0,0 +1,355 @@
+@@ -0,0 +1,358 @@
+/*
+ * SBSA (Server Base System Architecture) Compatible UART driver
+ *
@@ -11868,6 +12001,9 @@ index 0000000..402f168
+ qtty->console.device = sbsa_tty_console_device;
+ qtty->console.setup = sbsa_tty_console_setup;
+ qtty->console.flags = CON_PRINTBUFFER;
++ /* if no console= on cmdline, make this the console device */
++ if (!console_set_on_cmdline)
++ qtty->console.flags |= CON_CONSDEV;
+ qtty->console.index = pdev->id;
+ register_console(&qtty->console);
+
@@ -12463,6 +12599,18 @@ index 13eed92..dc9cb5f 100644
#define GICH_HCR 0x0
#define GICH_VTR 0x4
#define GICH_VMCR 0x8
+diff --git a/include/linux/kvm_host.h b/include/linux/kvm_host.h
+index a6059bd..e4d8f70 100644
+--- a/include/linux/kvm_host.h
++++ b/include/linux/kvm_host.h
+@@ -43,6 +43,7 @@
+ * include/linux/kvm_h.
+ */
+ #define KVM_MEMSLOT_INVALID (1UL << 16)
++#define KVM_MEMSLOT_INCOHERENT (1UL << 17)
+
+ /* Two fragments for cross MMIO pages. */
+ #define KVM_MAX_MMIO_FRAGMENTS 2
diff --git a/include/linux/leds.h b/include/linux/leds.h
index a57611d..361101f 100644
--- a/include/linux/leds.h
@@ -12572,10 +12720,10 @@ index 29f0adc..cf79be1 100644
const char *propname,
const char **out_string)
diff --git a/include/linux/pci.h b/include/linux/pci.h
-index 5be8db4..6afba72 100644
+index 4c8ac5f..ea663d8 100644
--- a/include/linux/pci.h
+++ b/include/linux/pci.h
-@@ -562,15 +562,6 @@ struct pci_ops {
+@@ -563,15 +563,6 @@ struct pci_ops {
int (*write)(struct pci_bus *bus, unsigned int devfn, int where, int size, u32 val);
};
@@ -12591,7 +12739,7 @@ index 5be8db4..6afba72 100644
struct pci_bus_region {
dma_addr_t start;
dma_addr_t end;
-@@ -1325,6 +1316,16 @@ typedef int (*arch_set_vga_state_t)(struct pci_dev *pdev, bool decode,
+@@ -1326,6 +1317,16 @@ typedef int (*arch_set_vga_state_t)(struct pci_dev *pdev, bool decode,
unsigned int command_bits, u32 flags);
void pci_register_set_vga_state(arch_set_vga_state_t func);
@@ -12608,7 +12756,7 @@ index 5be8db4..6afba72 100644
#else /* CONFIG_PCI is not enabled */
/*
-@@ -1426,6 +1427,23 @@ static inline struct pci_dev *pci_get_bus_and_slot(unsigned int bus,
+@@ -1427,6 +1428,23 @@ static inline struct pci_dev *pci_get_bus_and_slot(unsigned int bus,
unsigned int devfn)
{ return NULL; }
@@ -12632,7 +12780,7 @@ index 5be8db4..6afba72 100644
static inline int pci_domain_nr(struct pci_bus *bus) { return 0; }
static inline struct pci_dev *pci_dev_get(struct pci_dev *dev) { return NULL; }
static inline int pci_get_new_domain_nr(void) { return -ENOSYS; }
-@@ -1635,7 +1653,6 @@ int pcibios_set_pcie_reset_state(struct pci_dev *dev,
+@@ -1636,7 +1654,6 @@ int pcibios_set_pcie_reset_state(struct pci_dev *dev,
enum pcie_reset_state state);
int pcibios_add_device(struct pci_dev *dev);
void pcibios_release_device(struct pci_dev *dev);
@@ -12847,7 +12995,7 @@ index 0f62326..2a47179 100644
}
diff --git a/virt/kvm/arm/arch_timer.c b/virt/kvm/arm/arch_timer.c
-index 22fa819..9cd5dbd 100644
+index 22fa819..642dad4 100644
--- a/virt/kvm/arm/arch_timer.c
+++ b/virt/kvm/arm/arch_timer.c
@@ -21,9 +21,11 @@
@@ -12862,7 +13010,7 @@ index 22fa819..9cd5dbd 100644
#include <kvm/arm_vgic.h>
#include <kvm/arm_arch_timer.h>
-@@ -244,60 +246,92 @@ static const struct of_device_id arch_timer_of_match[] = {
+@@ -244,60 +246,91 @@ static const struct of_device_id arch_timer_of_match[] = {
{},
};
@@ -12905,7 +13053,6 @@ index 22fa819..9cd5dbd 100644
+}
- host_vtimer_irq = ppi;
-+extern int acadia_kvm_acpi;
+extern int arch_timer_ppi[];
- err = __register_cpu_notifier(&kvm_timer_cpu_nb);
@@ -12946,7 +13093,7 @@ index 22fa819..9cd5dbd 100644
- goto out;
+ /* if DT parsing fails, try ACPI next */
-+ if (err && !acpi_disabled && acadia_kvm_acpi )
++ if (err && !acpi_disabled)
+ err = kvm_timer_ppi_parse_acpi(&ppi);
+
+ if (err) {
@@ -12993,7 +13140,7 @@ index 22fa819..9cd5dbd 100644
void kvm_timer_vcpu_terminate(struct kvm_vcpu *vcpu)
diff --git a/virt/kvm/arm/vgic-v2.c b/virt/kvm/arm/vgic-v2.c
-index 2935405..196f49e 100644
+index 2935405..510049c 100644
--- a/virt/kvm/arm/vgic-v2.c
+++ b/virt/kvm/arm/vgic-v2.c
@@ -19,6 +19,7 @@
@@ -13030,7 +13177,30 @@ index 2935405..196f49e 100644
const struct vgic_ops **ops,
const struct vgic_params **params)
{
-@@ -245,3 +247,72 @@ out:
+@@ -222,11 +224,22 @@ int vgic_v2_probe(struct device_node *vgic_node,
+ }
+
+ if (!PAGE_ALIGNED(resource_size(&vcpu_res))) {
++#if 0
+ kvm_err("GICV size 0x%llx not a multiple of page size 0x%lx\n",
+ (unsigned long long)resource_size(&vcpu_res),
+ PAGE_SIZE);
+ ret = -ENXIO;
+ goto out_unmap;
++#else
++ /*
++ * The check fails for arm64 with 64K pagesize and certain firmware.
++ * Ignore for now until firmware takes care of the problem.
++ */
++ kvm_info("GICV size 0x%llx not a multiple of page size 0x%lx\n",
++ (unsigned long long)resource_size(&vcpu_res),
++ PAGE_SIZE);
++ kvm_info("Update DT to assign GICV a multiple of kernel page size \n");
++#endif
+ }
+
+ vgic->vcpu_base = vcpu_res.start;
+@@ -245,3 +258,72 @@ out:
of_node_put(vgic_node);
return ret;
}
@@ -13130,7 +13300,7 @@ index 1c2c8ee..8b56920 100644
int ret = 0;
u32 gicv_idx;
diff --git a/virt/kvm/arm/vgic.c b/virt/kvm/arm/vgic.c
-index 3aaca49..f6e9922 100644
+index aacdb59..d972d63 100644
--- a/virt/kvm/arm/vgic.c
+++ b/virt/kvm/arm/vgic.c
@@ -25,9 +25,11 @@
@@ -13145,7 +13315,7 @@ index 3aaca49..f6e9922 100644
#include <asm/kvm_emulate.h>
#include <asm/kvm_arm.h>
#include <asm/kvm_mmu.h>
-@@ -2427,31 +2429,39 @@ static struct notifier_block vgic_cpu_nb = {
+@@ -2427,8 +2429,8 @@ static struct notifier_block vgic_cpu_nb = {
};
static const struct of_device_id vgic_ids[] = {
@@ -13156,11 +13326,7 @@ index 3aaca49..f6e9922 100644
{},
};
-+extern int acadia_kvm_acpi;
-+
- int kvm_vgic_hyp_init(void)
- {
- const struct of_device_id *matched_id;
+@@ -2438,20 +2440,26 @@ int kvm_vgic_hyp_init(void)
const int (*vgic_probe)(struct device_node *,const struct vgic_ops **,
const struct vgic_params **);
struct device_node *vgic_node;
@@ -13173,13 +13339,13 @@ index 3aaca49..f6e9922 100644
- kvm_err("error: no compatible GIC node found\n");
- return -ENODEV;
+ /* probe VGIC */
-+ if (vgic_node = of_find_matching_node_and_match(NULL,
-+ vgic_ids, &matched_id)) {
++ if ((vgic_node = of_find_matching_node_and_match(NULL,
++ vgic_ids, &matched_id))) {
+ /* probe VGIC in DT */
+ vgic_probe = matched_id->data;
+ ret = vgic_probe(vgic_node, &vgic_ops, &vgic);
+ }
-+ else if (!acpi_disabled && acadia_kvm_acpi) {
++ else if (!acpi_disabled) {
+ /* probe VGIC in ACPI */
+ ret = vgic_v2_acpi_probe(&vgic_ops, &vgic);
}
diff --git a/freed-ora/current/master/kernel.spec b/freed-ora/current/master/kernel.spec
index 5e5b65a7f..fb2e86bfb 100644
--- a/freed-ora/current/master/kernel.spec
+++ b/freed-ora/current/master/kernel.spec
@@ -42,7 +42,7 @@ Summary: The Linux kernel
# For non-released -rc kernels, this will be appended after the rcX and
# gitX tags, so a 3 here would become part of release "0.rcX.gitX.3"
#
-%global baserelease 1
+%global baserelease 2
%global fedora_build %{baserelease}
# base_sublevel is the kernel version we're starting with and patching
@@ -570,6 +570,9 @@ Patch530: silence-fbcon-logo.patch
Patch600: lib-cpumask-Make-CPUMASK_OFFSTACK-usable-without-deb.patch
+#rhbz 1126580
+Patch601: Kbuild-Add-an-option-to-enable-GCC-VTA.patch
+
Patch800: crash-driver.patch
# crypto/
@@ -663,6 +666,27 @@ Patch26064: Input-add-driver-for-the-Goodix-touchpanel.patch
#rhbz 1135338
Patch26070: HID-add-support-for-MS-Surface-Pro-3-Type-Cover.patch
+#CVE-2014-8134 rhbz 1172765 1172769
+Patch26091: x86-kvm-Clear-paravirt_enabled-on-KVM-guests-for-esp.patch
+
+#rhbz 1164945
+Patch26092: xhci-Add-broken-streams-quirk-for-Fresco-Logic-FL100.patch
+Patch26093: uas-Add-US_FL_NO_ATA_1X-for-Seagate-devices-with-usb.patch
+Patch26094: uas-Add-US_FL_NO_REPORT_OPCODES-for-JMicron-JMS566-w.patch
+
+#rhbz 1172543
+Patch26096: cfg80211-don-t-WARN-about-two-consecutive-Country-IE.patch
+
+#CVE-2014-8559 rhbz 1159313 1173814
+Patch26098: move-d_rcu-from-overlapping-d_child-to-overlapping-d.patch
+Patch26099: deal-with-deadlock-in-d_walk.patch
+
+#CVE-2014-8133 rhbz 1172797 1174374
+Patch26100: x86-tls-Validate-TLS-entries-to-protect-espfix.patch
+
+#rhbz 1173806
+Patch26101: powerpc-powernv-force-all-CPUs-to-be-bootable.patch
+
# git clone ssh://git.fedorahosted.org/git/kernel-arm64.git, git diff master...devel
Patch30000: kernel-arm64.patch
@@ -1392,6 +1416,8 @@ ApplyPatch input-silence-i8042-noise.patch
ApplyPatch silence-fbcon-logo.patch
# Changes to upstream defaults.
+#rhbz 1126580
+ApplyPatch Kbuild-Add-an-option-to-enable-GCC-VTA.patch
# /dev/crash driver.
ApplyPatch crash-driver.patch
@@ -1468,6 +1494,27 @@ ApplyPatch Input-add-driver-for-the-Goodix-touchpanel.patch
#rhbz 1135338
ApplyPatch HID-add-support-for-MS-Surface-Pro-3-Type-Cover.patch
+#CVE-2014-8134 rhbz 1172765 1172769
+ApplyPatch x86-kvm-Clear-paravirt_enabled-on-KVM-guests-for-esp.patch
+
+#rhbz 1164945
+ApplyPatch xhci-Add-broken-streams-quirk-for-Fresco-Logic-FL100.patch
+ApplyPatch uas-Add-US_FL_NO_ATA_1X-for-Seagate-devices-with-usb.patch
+ApplyPatch uas-Add-US_FL_NO_REPORT_OPCODES-for-JMicron-JMS566-w.patch
+
+#rhbz 1172543
+ApplyPatch cfg80211-don-t-WARN-about-two-consecutive-Country-IE.patch
+
+#CVE-2014-8559 rhbz 1159313 1173814
+ApplyPatch move-d_rcu-from-overlapping-d_child-to-overlapping-d.patch
+ApplyPatch deal-with-deadlock-in-d_walk.patch
+
+#CVE-2014-8133 rhbz 1172797 1174374
+ApplyPatch x86-tls-Validate-TLS-entries-to-protect-espfix.patch
+
+#rhbz 1173806
+ApplyPatch powerpc-powernv-force-all-CPUs-to-be-bootable.patch
+
%if 0%{?aarch64patches}
ApplyPatch kernel-arm64.patch
%ifnarch aarch64 # this is stupid, but i want to notice before secondary koji does.
@@ -2349,6 +2396,27 @@ fi
# ||----w |
# || ||
%changelog
+* Tue Dec 16 2014 Josh Boyer <jwboyer@fedoraproject.org> - 3.18.0-2
+- Add patch from Josh Stone to restore var-tracking via Kconfig (rhbz 1126580)
+
+* Mon Dec 15 2014 Josh Boyer <jwboyer@fedoraproject.org>
+- Fix ppc64 boot with smt-enabled=off (rhbz 1173806)
+- CVE-2014-8133 x86: espfix(64) bypass via set_thread_area and CLONE_SETTLS (rhbz 1172797 1174374)
+- CVE-2014-8559 deadlock due to incorrect usage of rename_lock (rhbz 1159313 1173814)
+
+* Fri Dec 12 2014 Kyle McMartin <kyle@fedoraproject.org>
+- build in ahci_platform on aarch64 temporarily.
+
+* Fri Dec 12 2014 Josh Boyer <jwboyer@fedoraproject.org>
+- Remove pointless warning in cfg80211 (rhbz 1172543)
+
+* Thu Dec 11 2014 Kyle McMartin <kyle@fedoraproject.org>
+- kernel-arm64.patch: update from git.
+
+* Wed Dec 10 2014 Josh Boyer <jwboyer@fedoraproject.org>
+- Fix UAS crashes with Seagate and Fresco Logic drives (rhbz 1164945)
+- CVE-2014-8134 fix espfix for 32-bit KVM paravirt guests (rhbz 1172765 1172769)
+
* Tue Dec 9 2014 Alexandre Oliva <lxoliva@fsfla.org> -libre
- GNU Linux-libre 3.18-gnu.
diff --git a/freed-ora/current/master/move-d_rcu-from-overlapping-d_child-to-overlapping-d.patch b/freed-ora/current/master/move-d_rcu-from-overlapping-d_child-to-overlapping-d.patch
new file mode 100644
index 000000000..032132ca0
--- /dev/null
+++ b/freed-ora/current/master/move-d_rcu-from-overlapping-d_child-to-overlapping-d.patch
@@ -0,0 +1,743 @@
+From: Al Viro <viro@zeniv.linux.org.uk>
+Date: Sun, 26 Oct 2014 19:19:16 -0400
+Subject: [PATCH] move d_rcu from overlapping d_child to overlapping d_alias
+
+Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
+---
+ arch/powerpc/platforms/cell/spufs/inode.c | 2 +-
+ drivers/staging/lustre/lustre/llite/dcache.c | 2 +-
+ drivers/staging/lustre/lustre/llite/llite_lib.c | 2 +-
+ drivers/staging/lustre/lustre/llite/namei.c | 8 ++--
+ fs/affs/amigaffs.c | 2 +-
+ fs/autofs4/expire.c | 12 +++---
+ fs/autofs4/root.c | 2 +-
+ fs/ceph/dir.c | 8 ++--
+ fs/ceph/inode.c | 2 +-
+ fs/cifs/inode.c | 2 +-
+ fs/coda/cache.c | 2 +-
+ fs/dcache.c | 53 ++++++++++++-------------
+ fs/debugfs/inode.c | 2 +-
+ fs/exportfs/expfs.c | 2 +-
+ fs/libfs.c | 12 +++---
+ fs/ncpfs/dir.c | 2 +-
+ fs/ncpfs/ncplib_kernel.h | 4 +-
+ fs/nfs/getroot.c | 2 +-
+ fs/notify/fsnotify.c | 4 +-
+ fs/ocfs2/dcache.c | 2 +-
+ include/linux/dcache.h | 8 ++--
+ kernel/trace/trace.c | 4 +-
+ kernel/trace/trace_events.c | 2 +-
+ security/selinux/selinuxfs.c | 6 +--
+ 24 files changed, 73 insertions(+), 74 deletions(-)
+
+diff --git a/arch/powerpc/platforms/cell/spufs/inode.c b/arch/powerpc/platforms/cell/spufs/inode.c
+index 87ba7cf99cd7..65d633f20d37 100644
+--- a/arch/powerpc/platforms/cell/spufs/inode.c
++++ b/arch/powerpc/platforms/cell/spufs/inode.c
+@@ -164,7 +164,7 @@ static void spufs_prune_dir(struct dentry *dir)
+ struct dentry *dentry, *tmp;
+
+ mutex_lock(&dir->d_inode->i_mutex);
+- list_for_each_entry_safe(dentry, tmp, &dir->d_subdirs, d_u.d_child) {
++ list_for_each_entry_safe(dentry, tmp, &dir->d_subdirs, d_child) {
+ spin_lock(&dentry->d_lock);
+ if (!(d_unhashed(dentry)) && dentry->d_inode) {
+ dget_dlock(dentry);
+diff --git a/drivers/staging/lustre/lustre/llite/dcache.c b/drivers/staging/lustre/lustre/llite/dcache.c
+index 439e4875b05c..311907b762bd 100644
+--- a/drivers/staging/lustre/lustre/llite/dcache.c
++++ b/drivers/staging/lustre/lustre/llite/dcache.c
+@@ -258,7 +258,7 @@ void ll_invalidate_aliases(struct inode *inode)
+ inode->i_ino, inode->i_generation, inode);
+
+ ll_lock_dcache(inode);
+- ll_d_hlist_for_each_entry(dentry, p, &inode->i_dentry, d_alias) {
++ ll_d_hlist_for_each_entry(dentry, p, &inode->i_dentry, d_u.d_alias) {
+ CDEBUG(D_DENTRY, "dentry in drop %.*s (%p) parent %p "
+ "inode %p flags %d\n", dentry->d_name.len,
+ dentry->d_name.name, dentry, dentry->d_parent,
+diff --git a/drivers/staging/lustre/lustre/llite/llite_lib.c b/drivers/staging/lustre/lustre/llite/llite_lib.c
+index a8bcc51057f1..f4ca7b753021 100644
+--- a/drivers/staging/lustre/lustre/llite/llite_lib.c
++++ b/drivers/staging/lustre/lustre/llite/llite_lib.c
+@@ -711,7 +711,7 @@ void lustre_dump_dentry(struct dentry *dentry, int recur)
+ return;
+
+ list_for_each(tmp, &dentry->d_subdirs) {
+- struct dentry *d = list_entry(tmp, struct dentry, d_u.d_child);
++ struct dentry *d = list_entry(tmp, struct dentry, d_child);
+ lustre_dump_dentry(d, recur - 1);
+ }
+ }
+diff --git a/drivers/staging/lustre/lustre/llite/namei.c b/drivers/staging/lustre/lustre/llite/namei.c
+index 7a68c1e027e0..6dfd98509268 100644
+--- a/drivers/staging/lustre/lustre/llite/namei.c
++++ b/drivers/staging/lustre/lustre/llite/namei.c
+@@ -167,14 +167,14 @@ static void ll_invalidate_negative_children(struct inode *dir)
+ struct ll_d_hlist_node *p;
+
+ ll_lock_dcache(dir);
+- ll_d_hlist_for_each_entry(dentry, p, &dir->i_dentry, d_alias) {
++ ll_d_hlist_for_each_entry(dentry, p, &dir->i_dentry, d_u.d_alias) {
+ spin_lock(&dentry->d_lock);
+ if (!list_empty(&dentry->d_subdirs)) {
+ struct dentry *child;
+
+ list_for_each_entry_safe(child, tmp_subdir,
+ &dentry->d_subdirs,
+- d_u.d_child) {
++ d_child) {
+ if (child->d_inode == NULL)
+ d_lustre_invalidate(child, 1);
+ }
+@@ -362,7 +362,7 @@ static struct dentry *ll_find_alias(struct inode *inode, struct dentry *dentry)
+ discon_alias = invalid_alias = NULL;
+
+ ll_lock_dcache(inode);
+- ll_d_hlist_for_each_entry(alias, p, &inode->i_dentry, d_alias) {
++ ll_d_hlist_for_each_entry(alias, p, &inode->i_dentry, d_u.d_alias) {
+ LASSERT(alias != dentry);
+
+ spin_lock(&alias->d_lock);
+@@ -953,7 +953,7 @@ static void ll_get_child_fid(struct inode * dir, struct qstr *name,
+ {
+ struct dentry *parent, *child;
+
+- parent = ll_d_hlist_entry(dir->i_dentry, struct dentry, d_alias);
++ parent = ll_d_hlist_entry(dir->i_dentry, struct dentry, d_u.d_alias);
+ child = d_lookup(parent, name);
+ if (child) {
+ if (child->d_inode)
+diff --git a/fs/affs/amigaffs.c b/fs/affs/amigaffs.c
+index abc853968fed..937ce8754b24 100644
+--- a/fs/affs/amigaffs.c
++++ b/fs/affs/amigaffs.c
+@@ -125,7 +125,7 @@ affs_fix_dcache(struct inode *inode, u32 entry_ino)
+ {
+ struct dentry *dentry;
+ spin_lock(&inode->i_lock);
+- hlist_for_each_entry(dentry, &inode->i_dentry, d_alias) {
++ hlist_for_each_entry(dentry, &inode->i_dentry, d_u.d_alias) {
+ if (entry_ino == (u32)(long)dentry->d_fsdata) {
+ dentry->d_fsdata = (void *)inode->i_ino;
+ break;
+diff --git a/fs/autofs4/expire.c b/fs/autofs4/expire.c
+index 683a5b9ce22a..dcdec6fd33c6 100644
+--- a/fs/autofs4/expire.c
++++ b/fs/autofs4/expire.c
+@@ -85,7 +85,7 @@ static struct dentry *get_next_positive_subdir(struct dentry *prev,
+ spin_lock(&root->d_lock);
+
+ if (prev)
+- next = prev->d_u.d_child.next;
++ next = prev->d_child.next;
+ else {
+ prev = dget_dlock(root);
+ next = prev->d_subdirs.next;
+@@ -99,13 +99,13 @@ cont:
+ return NULL;
+ }
+
+- q = list_entry(next, struct dentry, d_u.d_child);
++ q = list_entry(next, struct dentry, d_child);
+
+ spin_lock_nested(&q->d_lock, DENTRY_D_LOCK_NESTED);
+ /* Already gone or negative dentry (under construction) - try next */
+ if (!d_count(q) || !simple_positive(q)) {
+ spin_unlock(&q->d_lock);
+- next = q->d_u.d_child.next;
++ next = q->d_child.next;
+ goto cont;
+ }
+ dget_dlock(q);
+@@ -155,13 +155,13 @@ again:
+ goto relock;
+ }
+ spin_unlock(&p->d_lock);
+- next = p->d_u.d_child.next;
++ next = p->d_child.next;
+ p = parent;
+ if (next != &parent->d_subdirs)
+ break;
+ }
+ }
+- ret = list_entry(next, struct dentry, d_u.d_child);
++ ret = list_entry(next, struct dentry, d_child);
+
+ spin_lock_nested(&ret->d_lock, DENTRY_D_LOCK_NESTED);
+ /* Negative dentry - try next */
+@@ -489,7 +489,7 @@ found:
+ spin_lock(&sbi->lookup_lock);
+ spin_lock(&expired->d_parent->d_lock);
+ spin_lock_nested(&expired->d_lock, DENTRY_D_LOCK_NESTED);
+- list_move(&expired->d_parent->d_subdirs, &expired->d_u.d_child);
++ list_move(&expired->d_parent->d_subdirs, &expired->d_child);
+ spin_unlock(&expired->d_lock);
+ spin_unlock(&expired->d_parent->d_lock);
+ spin_unlock(&sbi->lookup_lock);
+diff --git a/fs/autofs4/root.c b/fs/autofs4/root.c
+index d76d083f2f06..0822c9eacc56 100644
+--- a/fs/autofs4/root.c
++++ b/fs/autofs4/root.c
+@@ -687,7 +687,7 @@ static void autofs_clear_leaf_automount_flags(struct dentry *dentry)
+ /* only consider parents below dentrys in the root */
+ if (IS_ROOT(parent->d_parent))
+ return;
+- d_child = &dentry->d_u.d_child;
++ d_child = &dentry->d_child;
+ /* Set parent managed if it's becoming empty */
+ if (d_child->next == &parent->d_subdirs &&
+ d_child->prev == &parent->d_subdirs)
+diff --git a/fs/ceph/dir.c b/fs/ceph/dir.c
+index e6d63f8f98c0..695e7888fef8 100644
+--- a/fs/ceph/dir.c
++++ b/fs/ceph/dir.c
+@@ -111,7 +111,7 @@ static int fpos_cmp(loff_t l, loff_t r)
+ /*
+ * When possible, we try to satisfy a readdir by peeking at the
+ * dcache. We make this work by carefully ordering dentries on
+- * d_u.d_child when we initially get results back from the MDS, and
++ * d_child when we initially get results back from the MDS, and
+ * falling back to a "normal" sync readdir if any dentries in the dir
+ * are dropped.
+ *
+@@ -147,11 +147,11 @@ static int __dcache_readdir(struct file *file, struct dir_context *ctx,
+ p = parent->d_subdirs.prev;
+ dout(" initial p %p/%p\n", p->prev, p->next);
+ } else {
+- p = last->d_u.d_child.prev;
++ p = last->d_child.prev;
+ }
+
+ more:
+- dentry = list_entry(p, struct dentry, d_u.d_child);
++ dentry = list_entry(p, struct dentry, d_child);
+ di = ceph_dentry(dentry);
+ while (1) {
+ dout(" p %p/%p %s d_subdirs %p/%p\n", p->prev, p->next,
+@@ -174,7 +174,7 @@ more:
+ !dentry->d_inode ? " null" : "");
+ spin_unlock(&dentry->d_lock);
+ p = p->prev;
+- dentry = list_entry(p, struct dentry, d_u.d_child);
++ dentry = list_entry(p, struct dentry, d_child);
+ di = ceph_dentry(dentry);
+ }
+
+diff --git a/fs/ceph/inode.c b/fs/ceph/inode.c
+index 7b6139004401..7a1df90c7771 100644
+--- a/fs/ceph/inode.c
++++ b/fs/ceph/inode.c
+@@ -1399,7 +1399,7 @@ retry_lookup:
+ /* reorder parent's d_subdirs */
+ spin_lock(&parent->d_lock);
+ spin_lock_nested(&dn->d_lock, DENTRY_D_LOCK_NESTED);
+- list_move(&dn->d_u.d_child, &parent->d_subdirs);
++ list_move(&dn->d_child, &parent->d_subdirs);
+ spin_unlock(&dn->d_lock);
+ spin_unlock(&parent->d_lock);
+ }
+diff --git a/fs/cifs/inode.c b/fs/cifs/inode.c
+index 197cb503d528..0c3ce464cae4 100644
+--- a/fs/cifs/inode.c
++++ b/fs/cifs/inode.c
+@@ -895,7 +895,7 @@ inode_has_hashed_dentries(struct inode *inode)
+ struct dentry *dentry;
+
+ spin_lock(&inode->i_lock);
+- hlist_for_each_entry(dentry, &inode->i_dentry, d_alias) {
++ hlist_for_each_entry(dentry, &inode->i_dentry, d_u.d_alias) {
+ if (!d_unhashed(dentry) || IS_ROOT(dentry)) {
+ spin_unlock(&inode->i_lock);
+ return true;
+diff --git a/fs/coda/cache.c b/fs/coda/cache.c
+index 278f8fdeb9ef..46ee6f238985 100644
+--- a/fs/coda/cache.c
++++ b/fs/coda/cache.c
+@@ -92,7 +92,7 @@ static void coda_flag_children(struct dentry *parent, int flag)
+ struct dentry *de;
+
+ spin_lock(&parent->d_lock);
+- list_for_each_entry(de, &parent->d_subdirs, d_u.d_child) {
++ list_for_each_entry(de, &parent->d_subdirs, d_child) {
+ /* don't know what to do with negative dentries */
+ if (de->d_inode )
+ coda_flag_inode(de->d_inode, flag);
+diff --git a/fs/dcache.c b/fs/dcache.c
+index 5bc72b07fde2..c3ea5b765f6a 100644
+--- a/fs/dcache.c
++++ b/fs/dcache.c
+@@ -44,7 +44,7 @@
+ /*
+ * Usage:
+ * dcache->d_inode->i_lock protects:
+- * - i_dentry, d_alias, d_inode of aliases
++ * - i_dentry, d_u.d_alias, d_inode of aliases
+ * dcache_hash_bucket lock protects:
+ * - the dcache hash table
+ * s_anon bl list spinlock protects:
+@@ -59,7 +59,7 @@
+ * - d_unhashed()
+ * - d_parent and d_subdirs
+ * - childrens' d_child and d_parent
+- * - d_alias, d_inode
++ * - d_u.d_alias, d_inode
+ *
+ * Ordering:
+ * dentry->d_inode->i_lock
+@@ -252,14 +252,12 @@ static void __d_free(struct rcu_head *head)
+ {
+ struct dentry *dentry = container_of(head, struct dentry, d_u.d_rcu);
+
+- WARN_ON(!hlist_unhashed(&dentry->d_alias));
+ kmem_cache_free(dentry_cache, dentry);
+ }
+
+ static void __d_free_external(struct rcu_head *head)
+ {
+ struct dentry *dentry = container_of(head, struct dentry, d_u.d_rcu);
+- WARN_ON(!hlist_unhashed(&dentry->d_alias));
+ kfree(external_name(dentry));
+ kmem_cache_free(dentry_cache, dentry);
+ }
+@@ -271,6 +269,7 @@ static inline int dname_external(const struct dentry *dentry)
+
+ static void dentry_free(struct dentry *dentry)
+ {
++ WARN_ON(!hlist_unhashed(&dentry->d_u.d_alias));
+ if (unlikely(dname_external(dentry))) {
+ struct external_name *p = external_name(dentry);
+ if (likely(atomic_dec_and_test(&p->u.count))) {
+@@ -311,7 +310,7 @@ static void dentry_iput(struct dentry * dentry)
+ struct inode *inode = dentry->d_inode;
+ if (inode) {
+ dentry->d_inode = NULL;
+- hlist_del_init(&dentry->d_alias);
++ hlist_del_init(&dentry->d_u.d_alias);
+ spin_unlock(&dentry->d_lock);
+ spin_unlock(&inode->i_lock);
+ if (!inode->i_nlink)
+@@ -336,7 +335,7 @@ static void dentry_unlink_inode(struct dentry * dentry)
+ struct inode *inode = dentry->d_inode;
+ __d_clear_type(dentry);
+ dentry->d_inode = NULL;
+- hlist_del_init(&dentry->d_alias);
++ hlist_del_init(&dentry->d_u.d_alias);
+ dentry_rcuwalk_barrier(dentry);
+ spin_unlock(&dentry->d_lock);
+ spin_unlock(&inode->i_lock);
+@@ -496,7 +495,7 @@ static void __dentry_kill(struct dentry *dentry)
+ }
+ /* if it was on the hash then remove it */
+ __d_drop(dentry);
+- list_del(&dentry->d_u.d_child);
++ list_del(&dentry->d_child);
+ /*
+ * Inform d_walk() that we are no longer attached to the
+ * dentry tree
+@@ -722,7 +721,7 @@ static struct dentry *__d_find_alias(struct inode *inode)
+
+ again:
+ discon_alias = NULL;
+- hlist_for_each_entry(alias, &inode->i_dentry, d_alias) {
++ hlist_for_each_entry(alias, &inode->i_dentry, d_u.d_alias) {
+ spin_lock(&alias->d_lock);
+ if (S_ISDIR(inode->i_mode) || !d_unhashed(alias)) {
+ if (IS_ROOT(alias) &&
+@@ -772,7 +771,7 @@ void d_prune_aliases(struct inode *inode)
+ struct dentry *dentry;
+ restart:
+ spin_lock(&inode->i_lock);
+- hlist_for_each_entry(dentry, &inode->i_dentry, d_alias) {
++ hlist_for_each_entry(dentry, &inode->i_dentry, d_u.d_alias) {
+ spin_lock(&dentry->d_lock);
+ if (!dentry->d_lockref.count) {
+ struct dentry *parent = lock_parent(dentry);
+@@ -1051,7 +1050,7 @@ repeat:
+ resume:
+ while (next != &this_parent->d_subdirs) {
+ struct list_head *tmp = next;
+- struct dentry *dentry = list_entry(tmp, struct dentry, d_u.d_child);
++ struct dentry *dentry = list_entry(tmp, struct dentry, d_child);
+ next = tmp->next;
+
+ spin_lock_nested(&dentry->d_lock, DENTRY_D_LOCK_NESTED);
+@@ -1103,7 +1102,7 @@ resume:
+ goto rename_retry;
+ }
+ rcu_read_unlock();
+- next = child->d_u.d_child.next;
++ next = child->d_child.next;
+ goto resume;
+ }
+ if (need_seqretry(&rename_lock, seq)) {
+@@ -1455,8 +1454,8 @@ struct dentry *__d_alloc(struct super_block *sb, const struct qstr *name)
+ INIT_HLIST_BL_NODE(&dentry->d_hash);
+ INIT_LIST_HEAD(&dentry->d_lru);
+ INIT_LIST_HEAD(&dentry->d_subdirs);
+- INIT_HLIST_NODE(&dentry->d_alias);
+- INIT_LIST_HEAD(&dentry->d_u.d_child);
++ INIT_HLIST_NODE(&dentry->d_u.d_alias);
++ INIT_LIST_HEAD(&dentry->d_child);
+ d_set_d_op(dentry, dentry->d_sb->s_d_op);
+
+ this_cpu_inc(nr_dentry);
+@@ -1486,7 +1485,7 @@ struct dentry *d_alloc(struct dentry * parent, const struct qstr *name)
+ */
+ __dget_dlock(parent);
+ dentry->d_parent = parent;
+- list_add(&dentry->d_u.d_child, &parent->d_subdirs);
++ list_add(&dentry->d_child, &parent->d_subdirs);
+ spin_unlock(&parent->d_lock);
+
+ return dentry;
+@@ -1579,7 +1578,7 @@ static void __d_instantiate(struct dentry *dentry, struct inode *inode)
+ spin_lock(&dentry->d_lock);
+ __d_set_type(dentry, add_flags);
+ if (inode)
+- hlist_add_head(&dentry->d_alias, &inode->i_dentry);
++ hlist_add_head(&dentry->d_u.d_alias, &inode->i_dentry);
+ dentry->d_inode = inode;
+ dentry_rcuwalk_barrier(dentry);
+ spin_unlock(&dentry->d_lock);
+@@ -1603,7 +1602,7 @@ static void __d_instantiate(struct dentry *dentry, struct inode *inode)
+
+ void d_instantiate(struct dentry *entry, struct inode * inode)
+ {
+- BUG_ON(!hlist_unhashed(&entry->d_alias));
++ BUG_ON(!hlist_unhashed(&entry->d_u.d_alias));
+ if (inode)
+ spin_lock(&inode->i_lock);
+ __d_instantiate(entry, inode);
+@@ -1642,7 +1641,7 @@ static struct dentry *__d_instantiate_unique(struct dentry *entry,
+ return NULL;
+ }
+
+- hlist_for_each_entry(alias, &inode->i_dentry, d_alias) {
++ hlist_for_each_entry(alias, &inode->i_dentry, d_u.d_alias) {
+ /*
+ * Don't need alias->d_lock here, because aliases with
+ * d_parent == entry->d_parent are not subject to name or
+@@ -1668,7 +1667,7 @@ struct dentry *d_instantiate_unique(struct dentry *entry, struct inode *inode)
+ {
+ struct dentry *result;
+
+- BUG_ON(!hlist_unhashed(&entry->d_alias));
++ BUG_ON(!hlist_unhashed(&entry->d_u.d_alias));
+
+ if (inode)
+ spin_lock(&inode->i_lock);
+@@ -1699,7 +1698,7 @@ EXPORT_SYMBOL(d_instantiate_unique);
+ */
+ int d_instantiate_no_diralias(struct dentry *entry, struct inode *inode)
+ {
+- BUG_ON(!hlist_unhashed(&entry->d_alias));
++ BUG_ON(!hlist_unhashed(&entry->d_u.d_alias));
+
+ spin_lock(&inode->i_lock);
+ if (S_ISDIR(inode->i_mode) && !hlist_empty(&inode->i_dentry)) {
+@@ -1738,7 +1737,7 @@ static struct dentry * __d_find_any_alias(struct inode *inode)
+
+ if (hlist_empty(&inode->i_dentry))
+ return NULL;
+- alias = hlist_entry(inode->i_dentry.first, struct dentry, d_alias);
++ alias = hlist_entry(inode->i_dentry.first, struct dentry, d_u.d_alias);
+ __dget(alias);
+ return alias;
+ }
+@@ -1800,7 +1799,7 @@ static struct dentry *__d_obtain_alias(struct inode *inode, int disconnected)
+ spin_lock(&tmp->d_lock);
+ tmp->d_inode = inode;
+ tmp->d_flags |= add_flags;
+- hlist_add_head(&tmp->d_alias, &inode->i_dentry);
++ hlist_add_head(&tmp->d_u.d_alias, &inode->i_dentry);
+ hlist_bl_lock(&tmp->d_sb->s_anon);
+ hlist_bl_add_head(&tmp->d_hash, &tmp->d_sb->s_anon);
+ hlist_bl_unlock(&tmp->d_sb->s_anon);
+@@ -2235,7 +2234,7 @@ int d_validate(struct dentry *dentry, struct dentry *dparent)
+ struct dentry *child;
+
+ spin_lock(&dparent->d_lock);
+- list_for_each_entry(child, &dparent->d_subdirs, d_u.d_child) {
++ list_for_each_entry(child, &dparent->d_subdirs, d_child) {
+ if (dentry == child) {
+ spin_lock_nested(&dentry->d_lock, DENTRY_D_LOCK_NESTED);
+ __dget_dlock(dentry);
+@@ -2526,13 +2525,13 @@ static void __d_move(struct dentry *dentry, struct dentry *target,
+ /* splicing a tree */
+ dentry->d_parent = target->d_parent;
+ target->d_parent = target;
+- list_del_init(&target->d_u.d_child);
+- list_move(&dentry->d_u.d_child, &dentry->d_parent->d_subdirs);
++ list_del_init(&target->d_child);
++ list_move(&dentry->d_child, &dentry->d_parent->d_subdirs);
+ } else {
+ /* swapping two dentries */
+ swap(dentry->d_parent, target->d_parent);
+- list_move(&target->d_u.d_child, &target->d_parent->d_subdirs);
+- list_move(&dentry->d_u.d_child, &dentry->d_parent->d_subdirs);
++ list_move(&target->d_child, &target->d_parent->d_subdirs);
++ list_move(&dentry->d_child, &dentry->d_parent->d_subdirs);
+ if (exchange)
+ fsnotify_d_move(target);
+ fsnotify_d_move(dentry);
+@@ -3321,7 +3320,7 @@ void d_tmpfile(struct dentry *dentry, struct inode *inode)
+ {
+ inode_dec_link_count(inode);
+ BUG_ON(dentry->d_name.name != dentry->d_iname ||
+- !hlist_unhashed(&dentry->d_alias) ||
++ !hlist_unhashed(&dentry->d_u.d_alias) ||
+ !d_unlinked(dentry));
+ spin_lock(&dentry->d_parent->d_lock);
+ spin_lock_nested(&dentry->d_lock, DENTRY_D_LOCK_NESTED);
+diff --git a/fs/debugfs/inode.c b/fs/debugfs/inode.c
+index 1e3b99d3db0d..05f2960ed7c3 100644
+--- a/fs/debugfs/inode.c
++++ b/fs/debugfs/inode.c
+@@ -553,7 +553,7 @@ void debugfs_remove_recursive(struct dentry *dentry)
+ * use the d_u.d_child as the rcu head and corrupt this list.
+ */
+ spin_lock(&parent->d_lock);
+- list_for_each_entry(child, &parent->d_subdirs, d_u.d_child) {
++ list_for_each_entry(child, &parent->d_subdirs, d_child) {
+ if (!debugfs_positive(child))
+ continue;
+
+diff --git a/fs/exportfs/expfs.c b/fs/exportfs/expfs.c
+index b01fbfb51f43..a3aa6baad1a1 100644
+--- a/fs/exportfs/expfs.c
++++ b/fs/exportfs/expfs.c
+@@ -50,7 +50,7 @@ find_acceptable_alias(struct dentry *result,
+
+ inode = result->d_inode;
+ spin_lock(&inode->i_lock);
+- hlist_for_each_entry(dentry, &inode->i_dentry, d_alias) {
++ hlist_for_each_entry(dentry, &inode->i_dentry, d_u.d_alias) {
+ dget(dentry);
+ spin_unlock(&inode->i_lock);
+ if (toput)
+diff --git a/fs/libfs.c b/fs/libfs.c
+index 171d2846f2a3..005843ce5dbd 100644
+--- a/fs/libfs.c
++++ b/fs/libfs.c
+@@ -114,18 +114,18 @@ loff_t dcache_dir_lseek(struct file *file, loff_t offset, int whence)
+
+ spin_lock(&dentry->d_lock);
+ /* d_lock not required for cursor */
+- list_del(&cursor->d_u.d_child);
++ list_del(&cursor->d_child);
+ p = dentry->d_subdirs.next;
+ while (n && p != &dentry->d_subdirs) {
+ struct dentry *next;
+- next = list_entry(p, struct dentry, d_u.d_child);
++ next = list_entry(p, struct dentry, d_child);
+ spin_lock_nested(&next->d_lock, DENTRY_D_LOCK_NESTED);
+ if (simple_positive(next))
+ n--;
+ spin_unlock(&next->d_lock);
+ p = p->next;
+ }
+- list_add_tail(&cursor->d_u.d_child, p);
++ list_add_tail(&cursor->d_child, p);
+ spin_unlock(&dentry->d_lock);
+ }
+ }
+@@ -150,7 +150,7 @@ int dcache_readdir(struct file *file, struct dir_context *ctx)
+ {
+ struct dentry *dentry = file->f_path.dentry;
+ struct dentry *cursor = file->private_data;
+- struct list_head *p, *q = &cursor->d_u.d_child;
++ struct list_head *p, *q = &cursor->d_child;
+
+ if (!dir_emit_dots(file, ctx))
+ return 0;
+@@ -159,7 +159,7 @@ int dcache_readdir(struct file *file, struct dir_context *ctx)
+ list_move(q, &dentry->d_subdirs);
+
+ for (p = q->next; p != &dentry->d_subdirs; p = p->next) {
+- struct dentry *next = list_entry(p, struct dentry, d_u.d_child);
++ struct dentry *next = list_entry(p, struct dentry, d_child);
+ spin_lock_nested(&next->d_lock, DENTRY_D_LOCK_NESTED);
+ if (!simple_positive(next)) {
+ spin_unlock(&next->d_lock);
+@@ -287,7 +287,7 @@ int simple_empty(struct dentry *dentry)
+ int ret = 0;
+
+ spin_lock(&dentry->d_lock);
+- list_for_each_entry(child, &dentry->d_subdirs, d_u.d_child) {
++ list_for_each_entry(child, &dentry->d_subdirs, d_child) {
+ spin_lock_nested(&child->d_lock, DENTRY_D_LOCK_NESTED);
+ if (simple_positive(child)) {
+ spin_unlock(&child->d_lock);
+diff --git a/fs/ncpfs/dir.c b/fs/ncpfs/dir.c
+index 7cb751dfbeef..75424d692fde 100644
+--- a/fs/ncpfs/dir.c
++++ b/fs/ncpfs/dir.c
+@@ -403,7 +403,7 @@ ncp_dget_fpos(struct dentry *dentry, struct dentry *parent, unsigned long fpos)
+
+ /* If a pointer is invalid, we search the dentry. */
+ spin_lock(&parent->d_lock);
+- list_for_each_entry(dent, &parent->d_subdirs, d_u.d_child) {
++ list_for_each_entry(dent, &parent->d_subdirs, d_child) {
+ if ((unsigned long)dent->d_fsdata == fpos) {
+ if (dent->d_inode)
+ dget(dent);
+diff --git a/fs/ncpfs/ncplib_kernel.h b/fs/ncpfs/ncplib_kernel.h
+index 52cb19d66ecb..b785f74bfe3c 100644
+--- a/fs/ncpfs/ncplib_kernel.h
++++ b/fs/ncpfs/ncplib_kernel.h
+@@ -191,7 +191,7 @@ ncp_renew_dentries(struct dentry *parent)
+ struct dentry *dentry;
+
+ spin_lock(&parent->d_lock);
+- list_for_each_entry(dentry, &parent->d_subdirs, d_u.d_child) {
++ list_for_each_entry(dentry, &parent->d_subdirs, d_child) {
+ if (dentry->d_fsdata == NULL)
+ ncp_age_dentry(server, dentry);
+ else
+@@ -207,7 +207,7 @@ ncp_invalidate_dircache_entries(struct dentry *parent)
+ struct dentry *dentry;
+
+ spin_lock(&parent->d_lock);
+- list_for_each_entry(dentry, &parent->d_subdirs, d_u.d_child) {
++ list_for_each_entry(dentry, &parent->d_subdirs, d_child) {
+ dentry->d_fsdata = NULL;
+ ncp_age_dentry(server, dentry);
+ }
+diff --git a/fs/nfs/getroot.c b/fs/nfs/getroot.c
+index 880618a8b048..ebc6a0add5ae 100644
+--- a/fs/nfs/getroot.c
++++ b/fs/nfs/getroot.c
+@@ -58,7 +58,7 @@ static int nfs_superblock_set_dummy_root(struct super_block *sb, struct inode *i
+ */
+ spin_lock(&sb->s_root->d_inode->i_lock);
+ spin_lock(&sb->s_root->d_lock);
+- hlist_del_init(&sb->s_root->d_alias);
++ hlist_del_init(&sb->s_root->d_u.d_alias);
+ spin_unlock(&sb->s_root->d_lock);
+ spin_unlock(&sb->s_root->d_inode->i_lock);
+ }
+diff --git a/fs/notify/fsnotify.c b/fs/notify/fsnotify.c
+index 89326acd4561..41e39102743a 100644
+--- a/fs/notify/fsnotify.c
++++ b/fs/notify/fsnotify.c
+@@ -63,14 +63,14 @@ void __fsnotify_update_child_dentry_flags(struct inode *inode)
+ spin_lock(&inode->i_lock);
+ /* run all of the dentries associated with this inode. Since this is a
+ * directory, there damn well better only be one item on this list */
+- hlist_for_each_entry(alias, &inode->i_dentry, d_alias) {
++ hlist_for_each_entry(alias, &inode->i_dentry, d_u.d_alias) {
+ struct dentry *child;
+
+ /* run all of the children of the original inode and fix their
+ * d_flags to indicate parental interest (their parent is the
+ * original inode) */
+ spin_lock(&alias->d_lock);
+- list_for_each_entry(child, &alias->d_subdirs, d_u.d_child) {
++ list_for_each_entry(child, &alias->d_subdirs, d_child) {
+ if (!child->d_inode)
+ continue;
+
+diff --git a/fs/ocfs2/dcache.c b/fs/ocfs2/dcache.c
+index e2e05a106beb..92edcfc23c1c 100644
+--- a/fs/ocfs2/dcache.c
++++ b/fs/ocfs2/dcache.c
+@@ -172,7 +172,7 @@ struct dentry *ocfs2_find_local_alias(struct inode *inode,
+ struct dentry *dentry;
+
+ spin_lock(&inode->i_lock);
+- hlist_for_each_entry(dentry, &inode->i_dentry, d_alias) {
++ hlist_for_each_entry(dentry, &inode->i_dentry, d_u.d_alias) {
+ spin_lock(&dentry->d_lock);
+ if (ocfs2_match_dentry(dentry, parent_blkno, skip_unhashed)) {
+ trace_ocfs2_find_local_alias(dentry->d_name.len,
+diff --git a/include/linux/dcache.h b/include/linux/dcache.h
+index b2a2a08523bf..1c2f1b84468b 100644
+--- a/include/linux/dcache.h
++++ b/include/linux/dcache.h
+@@ -124,15 +124,15 @@ struct dentry {
+ void *d_fsdata; /* fs-specific data */
+
+ struct list_head d_lru; /* LRU list */
++ struct list_head d_child; /* child of parent list */
++ struct list_head d_subdirs; /* our children */
+ /*
+- * d_child and d_rcu can share memory
++ * d_alias and d_rcu can share memory
+ */
+ union {
+- struct list_head d_child; /* child of parent list */
++ struct hlist_node d_alias; /* inode alias list */
+ struct rcu_head d_rcu;
+ } d_u;
+- struct list_head d_subdirs; /* our children */
+- struct hlist_node d_alias; /* inode alias list */
+ };
+
+ /*
+diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c
+index 92f4a6cee172..426962b04183 100644
+--- a/kernel/trace/trace.c
++++ b/kernel/trace/trace.c
+@@ -6417,7 +6417,7 @@ static int instance_mkdir (struct inode *inode, struct dentry *dentry, umode_t m
+ int ret;
+
+ /* Paranoid: Make sure the parent is the "instances" directory */
+- parent = hlist_entry(inode->i_dentry.first, struct dentry, d_alias);
++ parent = hlist_entry(inode->i_dentry.first, struct dentry, d_u.d_alias);
+ if (WARN_ON_ONCE(parent != trace_instance_dir))
+ return -ENOENT;
+
+@@ -6444,7 +6444,7 @@ static int instance_rmdir(struct inode *inode, struct dentry *dentry)
+ int ret;
+
+ /* Paranoid: Make sure the parent is the "instances" directory */
+- parent = hlist_entry(inode->i_dentry.first, struct dentry, d_alias);
++ parent = hlist_entry(inode->i_dentry.first, struct dentry, d_u.d_alias);
+ if (WARN_ON_ONCE(parent != trace_instance_dir))
+ return -ENOENT;
+
+diff --git a/kernel/trace/trace_events.c b/kernel/trace/trace_events.c
+index 0cc51edde3a8..1b0df1e504f0 100644
+--- a/kernel/trace/trace_events.c
++++ b/kernel/trace/trace_events.c
+@@ -461,7 +461,7 @@ static void remove_event_file_dir(struct ftrace_event_file *file)
+
+ if (dir) {
+ spin_lock(&dir->d_lock); /* probably unneeded */
+- list_for_each_entry(child, &dir->d_subdirs, d_u.d_child) {
++ list_for_each_entry(child, &dir->d_subdirs, d_child) {
+ if (child->d_inode) /* probably unneeded */
+ child->d_inode->i_private = NULL;
+ }
+diff --git a/security/selinux/selinuxfs.c b/security/selinux/selinuxfs.c
+index c71737f6d1cc..33db1ad4fd10 100644
+--- a/security/selinux/selinuxfs.c
++++ b/security/selinux/selinuxfs.c
+@@ -1200,7 +1200,7 @@ static void sel_remove_entries(struct dentry *de)
+ spin_lock(&de->d_lock);
+ node = de->d_subdirs.next;
+ while (node != &de->d_subdirs) {
+- struct dentry *d = list_entry(node, struct dentry, d_u.d_child);
++ struct dentry *d = list_entry(node, struct dentry, d_child);
+
+ spin_lock_nested(&d->d_lock, DENTRY_D_LOCK_NESTED);
+ list_del_init(node);
+@@ -1674,12 +1674,12 @@ static void sel_remove_classes(void)
+
+ list_for_each(class_node, &class_dir->d_subdirs) {
+ struct dentry *class_subdir = list_entry(class_node,
+- struct dentry, d_u.d_child);
++ struct dentry, d_child);
+ struct list_head *class_subdir_node;
+
+ list_for_each(class_subdir_node, &class_subdir->d_subdirs) {
+ struct dentry *d = list_entry(class_subdir_node,
+- struct dentry, d_u.d_child);
++ struct dentry, d_child);
+
+ if (d->d_inode)
+ if (d->d_inode->i_mode & S_IFDIR)
+--
+2.1.0
+
diff --git a/freed-ora/current/master/powerpc-powernv-force-all-CPUs-to-be-bootable.patch b/freed-ora/current/master/powerpc-powernv-force-all-CPUs-to-be-bootable.patch
new file mode 100644
index 000000000..f98ac878d
--- /dev/null
+++ b/freed-ora/current/master/powerpc-powernv-force-all-CPUs-to-be-bootable.patch
@@ -0,0 +1,46 @@
+From: Greg Kurz <gkurz@linux.vnet.ibm.com>
+Date: Fri, 12 Dec 2014 12:37:40 +0100
+Subject: [PATCH] powerpc/powernv: force all CPUs to be bootable
+
+The subcore logic needs all the CPUs declared in the DT to be bootable,
+otherwise the kernel hangs at boot time. Since subcore support starts
+with POWER8, we can keep the current behaviour for older CPUs.
+
+Signed-off-by: Greg Kurz <gkurz@linux.vnet.ibm.com>
+---
+ arch/powerpc/platforms/powernv/smp.c | 13 ++++++++++++-
+ 1 file changed, 12 insertions(+), 1 deletion(-)
+
+diff --git a/arch/powerpc/platforms/powernv/smp.c b/arch/powerpc/platforms/powernv/smp.c
+index 4753958cd509..44ecd0925f56 100644
+--- a/arch/powerpc/platforms/powernv/smp.c
++++ b/arch/powerpc/platforms/powernv/smp.c
+@@ -185,13 +185,24 @@ static void pnv_smp_cpu_kill_self(void)
+
+ #endif /* CONFIG_HOTPLUG_CPU */
+
++static int pnv_cpu_bootable(unsigned int nr)
++{
++ /* Starting with POWER8, all CPUs need to be booted to avoid hangs
++ * during subcore init.
++ */
++ if (cpu_has_feature(CPU_FTR_ARCH_207S))
++ return 1;
++
++ return smp_generic_cpu_bootable(nr);
++}
++
+ static struct smp_ops_t pnv_smp_ops = {
+ .message_pass = smp_muxed_ipi_message_pass,
+ .cause_ipi = NULL, /* Filled at runtime by xics_smp_probe() */
+ .probe = xics_smp_probe,
+ .kick_cpu = pnv_smp_kick_cpu,
+ .setup_cpu = pnv_smp_setup_cpu,
+- .cpu_bootable = smp_generic_cpu_bootable,
++ .cpu_bootable = pnv_cpu_bootable,
+ #ifdef CONFIG_HOTPLUG_CPU
+ .cpu_disable = pnv_smp_cpu_disable,
+ .cpu_die = generic_cpu_die,
+--
+2.1.0
+
diff --git a/freed-ora/current/master/uas-Add-US_FL_NO_ATA_1X-for-Seagate-devices-with-usb.patch b/freed-ora/current/master/uas-Add-US_FL_NO_ATA_1X-for-Seagate-devices-with-usb.patch
new file mode 100644
index 000000000..66e28232a
--- /dev/null
+++ b/freed-ora/current/master/uas-Add-US_FL_NO_ATA_1X-for-Seagate-devices-with-usb.patch
@@ -0,0 +1,38 @@
+From: Hans de Goede <hdegoede@redhat.com>
+Date: Fri, 5 Dec 2014 11:06:36 +0100
+Subject: [PATCH] uas: Add US_FL_NO_ATA_1X for Seagate devices with usb-id
+ 0bc2:a013
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+This is yet another Seagate device which needs the US_FL_NO_ATA_1X quirk
+
+Reported-by: Marcin Zajączkowski <mszpak@wp.pl>
+Cc: stable@vger.kernel.org # 3.16
+Signed-off-by: Hans de Goede <hdegoede@redhat.com>
+---
+ drivers/usb/storage/unusual_uas.h | 7 +++++++
+ 1 file changed, 7 insertions(+)
+
+diff --git a/drivers/usb/storage/unusual_uas.h b/drivers/usb/storage/unusual_uas.h
+index 18a283d6de1c..2918376a1979 100644
+--- a/drivers/usb/storage/unusual_uas.h
++++ b/drivers/usb/storage/unusual_uas.h
+@@ -68,6 +68,13 @@ UNUSUAL_DEV(0x0bc2, 0xa003, 0x0000, 0x9999,
+ USB_SC_DEVICE, USB_PR_DEVICE, NULL,
+ US_FL_NO_ATA_1X),
+
++/* Reported-by: Marcin Zajączkowski <mszpak@wp.pl> */
++UNUSUAL_DEV(0x0bc2, 0xa013, 0x0000, 0x9999,
++ "Seagate",
++ "Backup Plus",
++ USB_SC_DEVICE, USB_PR_DEVICE, NULL,
++ US_FL_NO_ATA_1X),
++
+ /* https://bbs.archlinux.org/viewtopic.php?id=183190 */
+ UNUSUAL_DEV(0x0bc2, 0xab20, 0x0000, 0x9999,
+ "Seagate",
+--
+2.1.0
+
diff --git a/freed-ora/current/master/uas-Add-US_FL_NO_REPORT_OPCODES-for-JMicron-JMS566-w.patch b/freed-ora/current/master/uas-Add-US_FL_NO_REPORT_OPCODES-for-JMicron-JMS566-w.patch
new file mode 100644
index 000000000..e95a5c736
--- /dev/null
+++ b/freed-ora/current/master/uas-Add-US_FL_NO_REPORT_OPCODES-for-JMicron-JMS566-w.patch
@@ -0,0 +1,36 @@
+From: Hans de Goede <hdegoede@redhat.com>
+Date: Mon, 8 Dec 2014 09:46:36 +0100
+Subject: [PATCH] uas: Add US_FL_NO_REPORT_OPCODES for JMicron JMS566 with
+ usb-id 0bc2:a013
+
+Like the JMicron JMS567 enclosures with the JMS566 choke on report-opcodes,
+so avoid it.
+
+Tested-and-reported-by: Takeo Nakayama <javhera@gmx.com>
+Cc: stable@vger.kernel.org # 3.16
+Signed-off-by: Hans de Goede <hdegoede@redhat.com>
+---
+ drivers/usb/storage/unusual_uas.h | 7 +++++++
+ 1 file changed, 7 insertions(+)
+
+diff --git a/drivers/usb/storage/unusual_uas.h b/drivers/usb/storage/unusual_uas.h
+index 2918376a1979..2f0a3d35269a 100644
+--- a/drivers/usb/storage/unusual_uas.h
++++ b/drivers/usb/storage/unusual_uas.h
+@@ -111,6 +111,13 @@ UNUSUAL_DEV(0x2109, 0x0711, 0x0000, 0x9999,
+ USB_SC_DEVICE, USB_PR_DEVICE, NULL,
+ US_FL_NO_ATA_1X),
+
++/* Reported-by: Takeo Nakayama <javhera@gmx.com> */
++UNUSUAL_DEV(0x357d, 0x7788, 0x0000, 0x9999,
++ "JMicron",
++ "JMS566",
++ USB_SC_DEVICE, USB_PR_DEVICE, NULL,
++ US_FL_NO_REPORT_OPCODES),
++
+ /* Reported-by: Hans de Goede <hdegoede@redhat.com> */
+ UNUSUAL_DEV(0x4971, 0x1012, 0x0000, 0x9999,
+ "Hitachi",
+--
+2.1.0
+
diff --git a/freed-ora/current/master/x86-kvm-Clear-paravirt_enabled-on-KVM-guests-for-esp.patch b/freed-ora/current/master/x86-kvm-Clear-paravirt_enabled-on-KVM-guests-for-esp.patch
new file mode 100644
index 000000000..4fbbfb585
--- /dev/null
+++ b/freed-ora/current/master/x86-kvm-Clear-paravirt_enabled-on-KVM-guests-for-esp.patch
@@ -0,0 +1,72 @@
+From: Andy Lutomirski <luto@amacapital.net>
+Date: Fri, 5 Dec 2014 19:03:28 -0800
+Subject: [PATCH] x86, kvm: Clear paravirt_enabled on KVM guests for espfix32's
+ benefit
+
+paravirt_enabled has the following effects:
+
+ - Disables the F00F bug workaround warning. There is no F00F bug
+ workaround any more because Linux's standard IDT handling already
+ works around the F00F bug, but the warning still exists. This
+ is only cosmetic, and, in any event, there is no such thing as
+ KVM on a CPU with the F00F bug.
+
+ - Disables 32-bit APM BIOS detection. On a KVM paravirt system,
+ there should be no APM BIOS anyway.
+
+ - Disables tboot. I think that the tboot code should check the
+ CPUID hypervisor bit directly if it matters.
+
+ - paravirt_enabled disables espfix32. espfix32 should *not* be
+ disabled under KVM paravirt.
+
+The last point is the purpose of this patch. It fixes a leak of the
+high 16 bits of the kernel stack address on 32-bit KVM paravirt
+guests.
+
+While I'm at it, this removes pv_info setup from kvmclock. That
+code seems to serve no purpose.
+
+Cc: stable@vger.kernel.org
+Signed-off-by: Andy Lutomirski <luto@amacapital.net>
+---
+ arch/x86/kernel/kvm.c | 9 ++++++++-
+ arch/x86/kernel/kvmclock.c | 2 --
+ 2 files changed, 8 insertions(+), 3 deletions(-)
+
+diff --git a/arch/x86/kernel/kvm.c b/arch/x86/kernel/kvm.c
+index f6945bef2cd1..94f643484300 100644
+--- a/arch/x86/kernel/kvm.c
++++ b/arch/x86/kernel/kvm.c
+@@ -283,7 +283,14 @@ NOKPROBE_SYMBOL(do_async_page_fault);
+ static void __init paravirt_ops_setup(void)
+ {
+ pv_info.name = "KVM";
+- pv_info.paravirt_enabled = 1;
++
++ /*
++ * KVM isn't paravirt in the sense of paravirt_enabled. A KVM
++ * guest kernel works like a bare metal kernel with additional
++ * features, and paravirt_enabled is about features that are
++ * missing.
++ */
++ pv_info.paravirt_enabled = 0;
+
+ if (kvm_para_has_feature(KVM_FEATURE_NOP_IO_DELAY))
+ pv_cpu_ops.io_delay = kvm_io_delay;
+diff --git a/arch/x86/kernel/kvmclock.c b/arch/x86/kernel/kvmclock.c
+index d9156ceecdff..d4d9a8ad7893 100644
+--- a/arch/x86/kernel/kvmclock.c
++++ b/arch/x86/kernel/kvmclock.c
+@@ -263,8 +263,6 @@ void __init kvmclock_init(void)
+ #endif
+ kvm_get_preset_lpj();
+ clocksource_register_hz(&kvm_clock, NSEC_PER_SEC);
+- pv_info.paravirt_enabled = 1;
+- pv_info.name = "KVM";
+
+ if (kvm_para_has_feature(KVM_FEATURE_CLOCKSOURCE_STABLE_BIT))
+ pvclock_set_flags(PVCLOCK_TSC_STABLE_BIT);
+--
+2.1.0
+
diff --git a/freed-ora/current/master/x86-tls-Validate-TLS-entries-to-protect-espfix.patch b/freed-ora/current/master/x86-tls-Validate-TLS-entries-to-protect-espfix.patch
new file mode 100644
index 000000000..52c049767
--- /dev/null
+++ b/freed-ora/current/master/x86-tls-Validate-TLS-entries-to-protect-espfix.patch
@@ -0,0 +1,77 @@
+From: Andy Lutomirski <luto@amacapital.net>
+Date: Thu, 4 Dec 2014 16:48:16 -0800
+Subject: [PATCH] x86/tls: Validate TLS entries to protect espfix
+
+Installing a 16-bit RW data segment into the GDT defeats espfix.
+AFAICT this will not affect glibc, Wine, or dosemu at all.
+
+Signed-off-by: Andy Lutomirski <luto@amacapital.net>
+Acked-by: H. Peter Anvin <hpa@zytor.com>
+Cc: stable@vger.kernel.org
+Cc: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
+Cc: Linus Torvalds <torvalds@linux-foundation.org>
+Cc: security@kernel.org <security@kernel.org>
+Cc: Willy Tarreau <w@1wt.eu>
+Signed-off-by: Ingo Molnar <mingo@kernel.org>
+---
+ arch/x86/kernel/tls.c | 23 +++++++++++++++++++++++
+ 1 file changed, 23 insertions(+)
+
+diff --git a/arch/x86/kernel/tls.c b/arch/x86/kernel/tls.c
+index f7fec09e3e3a..e7650bd71109 100644
+--- a/arch/x86/kernel/tls.c
++++ b/arch/x86/kernel/tls.c
+@@ -27,6 +27,21 @@ static int get_free_idx(void)
+ return -ESRCH;
+ }
+
++static bool tls_desc_okay(const struct user_desc *info)
++{
++ if (LDT_empty(info))
++ return true;
++
++ /*
++ * espfix is required for 16-bit data segments, but espfix
++ * only works for LDT segments.
++ */
++ if (!info->seg_32bit)
++ return false;
++
++ return true;
++}
++
+ static void set_tls_desc(struct task_struct *p, int idx,
+ const struct user_desc *info, int n)
+ {
+@@ -66,6 +81,9 @@ int do_set_thread_area(struct task_struct *p, int idx,
+ if (copy_from_user(&info, u_info, sizeof(info)))
+ return -EFAULT;
+
++ if (!tls_desc_okay(&info))
++ return -EINVAL;
++
+ if (idx == -1)
+ idx = info.entry_number;
+
+@@ -192,6 +210,7 @@ int regset_tls_set(struct task_struct *target, const struct user_regset *regset,
+ {
+ struct user_desc infobuf[GDT_ENTRY_TLS_ENTRIES];
+ const struct user_desc *info;
++ int i;
+
+ if (pos >= GDT_ENTRY_TLS_ENTRIES * sizeof(struct user_desc) ||
+ (pos % sizeof(struct user_desc)) != 0 ||
+@@ -205,6 +224,10 @@ int regset_tls_set(struct task_struct *target, const struct user_regset *regset,
+ else
+ info = infobuf;
+
++ for (i = 0; i < count / sizeof(struct user_desc); i++)
++ if (!tls_desc_okay(info + i))
++ return -EINVAL;
++
+ set_tls_desc(target,
+ GDT_ENTRY_TLS_MIN + (pos / sizeof(struct user_desc)),
+ info, count / sizeof(struct user_desc));
+--
+2.1.0
+
diff --git a/freed-ora/current/master/xhci-Add-broken-streams-quirk-for-Fresco-Logic-FL100.patch b/freed-ora/current/master/xhci-Add-broken-streams-quirk-for-Fresco-Logic-FL100.patch
new file mode 100644
index 000000000..0f79ee0ac
--- /dev/null
+++ b/freed-ora/current/master/xhci-Add-broken-streams-quirk-for-Fresco-Logic-FL100.patch
@@ -0,0 +1,44 @@
+From: Hans de Goede <hdegoede@redhat.com>
+Date: Fri, 5 Dec 2014 11:01:00 +0100
+Subject: [PATCH] xhci: Add broken-streams quirk for Fresco Logic FL1000G xhci
+ controllers
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Streams do not work reliabe on Fresco Logic FL1000G xhci controllers,
+trying to use them results in errors like this:
+
+21:37:33 kernel: xhci_hcd 0000:04:00.0: ERROR Transfer event for disabled endpoint or incorrect stream ring
+21:37:33 kernel: xhci_hcd 0000:04:00.0: @00000000368b3570 9067b000 00000000 05000000 01078001
+21:37:33 kernel: xhci_hcd 0000:04:00.0: ERROR Transfer event for disabled endpoint or incorrect stream ring
+21:37:33 kernel: xhci_hcd 0000:04:00.0: @00000000368b3580 9067b400 00000000 05000000 01038001
+
+As always I've ordered a pci-e addon card with a Fresco Logic controller for
+myself to see if I can come up with a better fix then the big hammer, in
+the mean time this will make uas devices work again (in usb-storage mode)
+for FL1000G users.
+
+Reported-by: Marcin Zajączkowski <mszpak@wp.pl>
+Cc: stable@vger.kernel.org # 3.15
+Signed-off-by: Hans de Goede <hdegoede@redhat.com>
+---
+ drivers/usb/host/xhci-pci.c | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/drivers/usb/host/xhci-pci.c b/drivers/usb/host/xhci-pci.c
+index 142b601f9563..7f76c8a12f89 100644
+--- a/drivers/usb/host/xhci-pci.c
++++ b/drivers/usb/host/xhci-pci.c
+@@ -82,6 +82,8 @@ static void xhci_pci_quirks(struct device *dev, struct xhci_hcd *xhci)
+ "must be suspended extra slowly",
+ pdev->revision);
+ }
++ if (pdev->device == PCI_DEVICE_ID_FRESCO_LOGIC_PDK)
++ xhci->quirks |= XHCI_BROKEN_STREAMS;
+ /* Fresco Logic confirms: all revisions of this chip do not
+ * support MSI, even though some of them claim to in their PCI
+ * capabilities.
+--
+2.1.0
+
OpenPOWER on IntegriCloud