summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThorsten Leemhuis <fedora@leemhuis.info>2016-03-21 07:27:14 +0100
committerThorsten Leemhuis <fedora@leemhuis.info>2016-03-21 07:27:14 +0100
commit53346efe626bbc463e60c787c14111963051b754 (patch)
tree2cb604433acaaa41d1b2b3a893630cd56bf5910a
parent50297245870386423f683c210d5c2ca1c3361f98 (diff)
parenta702c978d30903176c9ab9d45a991993bc4297e5 (diff)
downloadkernel-53346efe626bbc463e60c787c14111963051b754.tar.gz
kernel-53346efe626bbc463e60c787c14111963051b754.tar.xz
kernel-53346efe626bbc463e60c787c14111963051b754.zip
Merge remote-tracking branch 'origin/master'
-rw-r--r--0001-mm-CONFIG_NR_ZONES_EXTENDED.patch173
-rw-r--r--ALSA-hda-Fix-forgotten-HDMI-monitor_present-update.patch31
-rw-r--r--ALSA-hda-Fix-spurious-kernel-WARNING-on-Baytrail-HDM.patch44
-rw-r--r--ALSA-hda-Really-restrict-i915-notifier-to-HSW.patch80
-rw-r--r--Add-EFI-signature-data-types.patch14
-rw-r--r--Add-an-EFI-signature-blob-parser-and-key-loader.patch3
-rw-r--r--HID-sony-do-not-bail-out-when-the-sixaxis-refuses-th.patch49
-rw-r--r--Initial-AllWinner-A64-and-PINE64-support.patch13
-rw-r--r--Makefile1
-rw-r--r--Makefile.release1
-rw-r--r--arm64-avoid-needing-console-to-enable-serial-console.patch12
-rw-r--r--config-arm-generic2
-rw-r--r--config-arm6410
-rw-r--r--config-armv742
-rw-r--r--config-armv7-generic12
-rw-r--r--config-debug2
-rw-r--r--config-generic77
-rw-r--r--config-nodebug2
-rw-r--r--config-x86-generic5
-rw-r--r--config-x86_64-generic3
-rw-r--r--cypress_m8-add-sanity-checking.patch50
-rw-r--r--digi_acceleport-do-sanity-checking-for-the-number-of.patch34
-rw-r--r--disable-CONFIG_EXPERT-for-ZONE_DMA.patch16
-rw-r--r--geekbox-v4-device-tree-support.patch (renamed from Geekbox-device-tree-support.patch)77
-rw-r--r--gitrev2
-rw-r--r--ims-pcu-sanity-check-against-missing-interfaces.patch39
-rw-r--r--intel_pstate-Do-not-call-wrmsrl_on_cpu-with-disabled.patch241
-rw-r--r--ipv4-Dont-do-expensive-useless-work-during-inetdev-des.patch97
-rw-r--r--kernel.spec102
-rw-r--r--netfilter-x_tables-check-for-size-overflow.patch31
-rw-r--r--revert-stmmac-Fix-eth0-No-PHY-found-regression.patch87
-rw-r--r--sources2
-rw-r--r--stmmac-fix-MDIO-settings.patch235
-rw-r--r--x86-tsc-Prevent-NULL-pointer-deref-in-calibrate_dela.patch47
34 files changed, 1151 insertions, 485 deletions
diff --git a/0001-mm-CONFIG_NR_ZONES_EXTENDED.patch b/0001-mm-CONFIG_NR_ZONES_EXTENDED.patch
deleted file mode 100644
index 44ef3662b..000000000
--- a/0001-mm-CONFIG_NR_ZONES_EXTENDED.patch
+++ /dev/null
@@ -1,173 +0,0 @@
-From 8b368e8e961944105945fbe36f3f264252bfd19a Mon Sep 17 00:00:00 2001
-From: Dan Williams <dan.j.williams@intel.com>
-Date: Thu, 25 Feb 2016 01:02:30 +0000
-Subject: [PATCH] mm: CONFIG_NR_ZONES_EXTENDED
-
-ZONE_DEVICE (merged in 4.3) and ZONE_CMA (proposed) are examples of new mm
-zones that are bumping up against the current maximum limit of 4 zones,
-i.e. 2 bits in page->flags. When adding a zone this equation still needs
-to be satisified:
-
- SECTIONS_WIDTH + ZONES_WIDTH + NODES_SHIFT + LAST_CPUPID_SHIFT
- <= BITS_PER_LONG - NR_PAGEFLAGS
-
-ZONE_DEVICE currently tries to satisfy this equation by requiring that
-ZONE_DMA be disabled, but this is untenable given generic kernels want to
-support ZONE_DEVICE and ZONE_DMA simultaneously. ZONE_CMA would like to
-increase the amount of memory covered per section, but that limits the
-minimum granularity at which consecutive memory ranges can be added via
-devm_memremap_pages().
-
-The trade-off of what is acceptable to sacrifice depends heavily on the
-platform. For example, ZONE_CMA is targeted for 32-bit platforms where
-page->flags is constrained, but those platforms likely do not care about
-the minimum granularity of memory hotplug. A big iron machine with 1024
-numa nodes can likely sacrifice ZONE_DMA where a general purpose
-distribution kernel can not.
-
-CONFIG_NR_ZONES_EXTENDED is a configuration symbol that gets selected when
-the number of configured zones exceeds 4. It documents the configuration
-symbols and definitions that get modified when ZONES_WIDTH is greater than
-2.
-
-For now, it steals a bit from NODES_SHIFT. Later on it can be used to
-document the definitions that get modified when a 32-bit configuration
-wants more zone bits.
-
-Note that GFP_ZONE_TABLE poses an interesting constraint since
-include/linux/gfp.h gets included by the 32-bit portion of a 64-bit build.
-We need to be careful to only build the table for zones that have a
-corresponding gfp_t flag. GFP_ZONES_SHIFT is introduced for this purpose.
-This patch does not attempt to solve the problem of adding a new zone
-that also has a corresponding GFP_ flag.
-
-Link: https://bugzilla.kernel.org/show_bug.cgi?id=110931
-Fixes: 033fbae988fc ("mm: ZONE_DEVICE for "device memory"")
-Signed-off-by: Dan Williams <dan.j.williams@intel.com>
-Reported-by: Mark <markk@clara.co.uk>
-Cc: Mel Gorman <mgorman@suse.de>
-Cc: Rik van Riel <riel@redhat.com>
-Cc: Joonsoo Kim <iamjoonsoo.kim@lge.com>
-Cc: Dave Hansen <dave.hansen@linux.intel.com>
-Cc: Sudip Mukherjee <sudipm.mukherjee@gmail.com>
-Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
----
- arch/x86/Kconfig | 6 ++++--
- include/linux/gfp.h | 33 ++++++++++++++++++++-------------
- include/linux/page-flags-layout.h | 2 ++
- mm/Kconfig | 7 +++++--
- 4 files changed, 31 insertions(+), 17 deletions(-)
-
-diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
-index 3fef519..b94704a 100644
---- a/arch/x86/Kconfig
-+++ b/arch/x86/Kconfig
-@@ -1409,8 +1409,10 @@ config NUMA_EMU
-
- config NODES_SHIFT
- int "Maximum NUMA Nodes (as a power of 2)" if !MAXSMP
-- range 1 10
-- default "10" if MAXSMP
-+ range 1 10 if !NR_ZONES_EXTENDED
-+ range 1 9 if NR_ZONES_EXTENDED
-+ default "10" if MAXSMP && !NR_ZONES_EXTENDED
-+ default "9" if MAXSMP && NR_ZONES_EXTENDED
- default "6" if X86_64
- default "3"
- depends on NEED_MULTIPLE_NODES
-diff --git a/include/linux/gfp.h b/include/linux/gfp.h
-index af1f2b2..d201d8a 100644
---- a/include/linux/gfp.h
-+++ b/include/linux/gfp.h
-@@ -329,22 +329,29 @@ static inline bool gfpflags_allow_blocking(const gfp_t gfp_flags)
- * 0xe => BAD (MOVABLE+DMA32+HIGHMEM)
- * 0xf => BAD (MOVABLE+DMA32+HIGHMEM+DMA)
- *
-- * ZONES_SHIFT must be <= 2 on 32 bit platforms.
-+ * GFP_ZONES_SHIFT must be <= 2 on 32 bit platforms.
- */
-
--#if 16 * ZONES_SHIFT > BITS_PER_LONG
--#error ZONES_SHIFT too large to create GFP_ZONE_TABLE integer
-+#if defined(CONFIG_ZONE_DEVICE) && (MAX_NR_ZONES-1) <= 4
-+/* ZONE_DEVICE is not a valid GFP zone specifier */
-+#define GFP_ZONES_SHIFT 2
-+#else
-+#define GFP_ZONES_SHIFT ZONES_SHIFT
-+#endif
-+
-+#if 16 * GFP_ZONES_SHIFT > BITS_PER_LONG
-+#error GFP_ZONES_SHIFT too large to create GFP_ZONE_TABLE integer
- #endif
-
- #define GFP_ZONE_TABLE ( \
-- (ZONE_NORMAL << 0 * ZONES_SHIFT) \
-- | (OPT_ZONE_DMA << ___GFP_DMA * ZONES_SHIFT) \
-- | (OPT_ZONE_HIGHMEM << ___GFP_HIGHMEM * ZONES_SHIFT) \
-- | (OPT_ZONE_DMA32 << ___GFP_DMA32 * ZONES_SHIFT) \
-- | (ZONE_NORMAL << ___GFP_MOVABLE * ZONES_SHIFT) \
-- | (OPT_ZONE_DMA << (___GFP_MOVABLE | ___GFP_DMA) * ZONES_SHIFT) \
-- | (ZONE_MOVABLE << (___GFP_MOVABLE | ___GFP_HIGHMEM) * ZONES_SHIFT) \
-- | (OPT_ZONE_DMA32 << (___GFP_MOVABLE | ___GFP_DMA32) * ZONES_SHIFT) \
-+ (ZONE_NORMAL << 0 * GFP_ZONES_SHIFT) \
-+ | (OPT_ZONE_DMA << ___GFP_DMA * GFP_ZONES_SHIFT) \
-+ | (OPT_ZONE_HIGHMEM << ___GFP_HIGHMEM * GFP_ZONES_SHIFT) \
-+ | (OPT_ZONE_DMA32 << ___GFP_DMA32 * GFP_ZONES_SHIFT) \
-+ | (ZONE_NORMAL << ___GFP_MOVABLE * GFP_ZONES_SHIFT) \
-+ | (OPT_ZONE_DMA << (___GFP_MOVABLE | ___GFP_DMA) * GFP_ZONES_SHIFT) \
-+ | (ZONE_MOVABLE << (___GFP_MOVABLE | ___GFP_HIGHMEM) * GFP_ZONES_SHIFT) \
-+ | (OPT_ZONE_DMA32 << (___GFP_MOVABLE | ___GFP_DMA32) * GFP_ZONES_SHIFT) \
- )
-
- /*
-@@ -369,8 +376,8 @@ static inline enum zone_type gfp_zone(gfp_t flags)
- enum zone_type z;
- int bit = (__force int) (flags & GFP_ZONEMASK);
-
-- z = (GFP_ZONE_TABLE >> (bit * ZONES_SHIFT)) &
-- ((1 << ZONES_SHIFT) - 1);
-+ z = (GFP_ZONE_TABLE >> (bit * GFP_ZONES_SHIFT)) &
-+ ((1 << GFP_ZONES_SHIFT) - 1);
- VM_BUG_ON((GFP_ZONE_BAD >> bit) & 1);
- return z;
- }
-diff --git a/include/linux/page-flags-layout.h b/include/linux/page-flags-layout.h
-index da52366..77b078c 100644
---- a/include/linux/page-flags-layout.h
-+++ b/include/linux/page-flags-layout.h
-@@ -17,6 +17,8 @@
- #define ZONES_SHIFT 1
- #elif MAX_NR_ZONES <= 4
- #define ZONES_SHIFT 2
-+#elif MAX_NR_ZONES <= 8
-+#define ZONES_SHIFT 3
- #else
- #error ZONES_SHIFT -- too many zones configured adjust calculation
- #endif
-diff --git a/mm/Kconfig b/mm/Kconfig
-index 031a329..7826216 100644
---- a/mm/Kconfig
-+++ b/mm/Kconfig
-@@ -652,8 +652,6 @@ config IDLE_PAGE_TRACKING
-
- config ZONE_DEVICE
- bool "Device memory (pmem, etc...) hotplug support"
-- default !ZONE_DMA
-- depends on !ZONE_DMA
- depends on MEMORY_HOTPLUG
- depends on MEMORY_HOTREMOVE
- depends on X86_64 #arch_add_memory() comprehends device memory
-@@ -667,5 +665,10 @@ config ZONE_DEVICE
-
- If FS_DAX is enabled, then say Y.
-
-+config NR_ZONES_EXTENDED
-+ bool
-+ default n if !64BIT
-+ default y if ZONE_DEVICE && ZONE_DMA && ZONE_DMA32
-+
- config FRAME_VECTOR
- bool
---
-2.5.0
-
diff --git a/ALSA-hda-Fix-forgotten-HDMI-monitor_present-update.patch b/ALSA-hda-Fix-forgotten-HDMI-monitor_present-update.patch
new file mode 100644
index 000000000..892cd5b77
--- /dev/null
+++ b/ALSA-hda-Fix-forgotten-HDMI-monitor_present-update.patch
@@ -0,0 +1,31 @@
+From e36b3efcd07ab5c323e82319577d972ebddcbed1 Mon Sep 17 00:00:00 2001
+From: Takashi Iwai <tiwai@suse.de>
+Date: Fri, 18 Mar 2016 18:01:53 +0100
+Subject: [PATCH 2/3] ALSA: hda - Fix forgotten HDMI monitor_present update
+
+We forgot to copy monitor_present value when updating the ELD
+information. This won't change the ELD retrieval and the jack
+notification behavior, but appears only in the proc output. In that
+sense, it's no fatal error, but a bug is a bug is a bug.
+
+Cc: <stable@vger.kernel.org>
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+---
+ sound/pci/hda/patch_hdmi.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/sound/pci/hda/patch_hdmi.c b/sound/pci/hda/patch_hdmi.c
+index 8cdb804aa9cf..e7d9453ecd10 100644
+--- a/sound/pci/hda/patch_hdmi.c
++++ b/sound/pci/hda/patch_hdmi.c
+@@ -1358,6 +1358,7 @@ static void update_eld(struct hda_codec *codec,
+ eld->eld_size) != 0)
+ eld_changed = true;
+
++ pin_eld->monitor_present = eld->monitor_present;
+ pin_eld->eld_valid = eld->eld_valid;
+ pin_eld->eld_size = eld->eld_size;
+ if (eld->eld_valid)
+--
+2.5.0
+
diff --git a/ALSA-hda-Fix-spurious-kernel-WARNING-on-Baytrail-HDM.patch b/ALSA-hda-Fix-spurious-kernel-WARNING-on-Baytrail-HDM.patch
new file mode 100644
index 000000000..5c9bda87c
--- /dev/null
+++ b/ALSA-hda-Fix-spurious-kernel-WARNING-on-Baytrail-HDM.patch
@@ -0,0 +1,44 @@
+From 1f2109de8368f08a353d7862f462b943a5ac4b4a Mon Sep 17 00:00:00 2001
+From: Takashi Iwai <tiwai@suse.de>
+Date: Fri, 18 Mar 2016 19:45:13 +0100
+Subject: [PATCH 3/3] ALSA: hda - Fix spurious kernel WARNING on Baytrail HDMI
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+snd_hdac_sync_audio_rate() call is mandatory only for HSW and later
+models, but we call the function unconditionally blindly assuming that
+the function doesn't do anything harmful. But since recently, the
+function checks the validity of the passed pin NID, and eventually
+spews the warning if an unexpected pin is passed. This is seen on old
+chips like Baytrail.
+
+The fix is to limit the call of this function again only for the chips
+with the proper binding. This can be identified by the same flag as
+the eld notifier.
+
+Reported-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
+Tested-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
+Cc: <stable@vger.kernel.org> # v4.5
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+---
+ sound/pci/hda/patch_hdmi.c | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/sound/pci/hda/patch_hdmi.c b/sound/pci/hda/patch_hdmi.c
+index e7d9453ecd10..56d3575ee6cc 100644
+--- a/sound/pci/hda/patch_hdmi.c
++++ b/sound/pci/hda/patch_hdmi.c
+@@ -1741,7 +1741,8 @@ static int generic_hdmi_playback_pcm_prepare(struct hda_pcm_stream *hinfo,
+
+ /* Call sync_audio_rate to set the N/CTS/M manually if necessary */
+ /* Todo: add DP1.2 MST audio support later */
+- snd_hdac_sync_audio_rate(&codec->bus->core, pin_nid, runtime->rate);
++ if (codec_has_acomp(codec))
++ snd_hdac_sync_audio_rate(&codec->bus->core, pin_nid, runtime->rate);
+
+ non_pcm = check_non_pcm_per_cvt(codec, cvt_nid);
+ mutex_lock(&per_pin->lock);
+--
+2.5.0
+
diff --git a/ALSA-hda-Really-restrict-i915-notifier-to-HSW.patch b/ALSA-hda-Really-restrict-i915-notifier-to-HSW.patch
new file mode 100644
index 000000000..2224e7fd0
--- /dev/null
+++ b/ALSA-hda-Really-restrict-i915-notifier-to-HSW.patch
@@ -0,0 +1,80 @@
+From 3fb329b2c3b6c2f009aa1255d2436ec49e49877f Mon Sep 17 00:00:00 2001
+From: Takashi Iwai <tiwai@suse.de>
+Date: Fri, 18 Mar 2016 15:10:08 +0100
+Subject: [PATCH 1/3] ALSA: hda - Really restrict i915 notifier to HSW+
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+The commit [b62232d429fa: ALSA: hda - Limit i915 HDMI binding only for
+HSW and later] tried to limit the usage of i915 audio notifier to the
+recent Intel models and switch to the old method on pre-Haswell
+models. However, it assumed that the i915 component binding hasn't
+been done on such models, and the assumption was wrong: namely,
+Baytrail had already the i915 component binding due to powerwell
+control. Thus, the workaround wasn't applied to Baytrail.
+
+For fixing this properly, this patch introduces a new flag indicating
+the usage of audio notifier and codec_has_acomp() refers to this flag
+instead of checking the existence of audio component.
+
+Reported-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
+Cc: <stable@vger.kernel.org> # v4.5
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+---
+ sound/pci/hda/patch_hdmi.c | 24 +++++++++++++++++-------
+ 1 file changed, 17 insertions(+), 7 deletions(-)
+
+diff --git a/sound/pci/hda/patch_hdmi.c b/sound/pci/hda/patch_hdmi.c
+index 49ee4e55dd16..8cdb804aa9cf 100644
+--- a/sound/pci/hda/patch_hdmi.c
++++ b/sound/pci/hda/patch_hdmi.c
+@@ -152,6 +152,7 @@ struct hdmi_spec {
+ struct hda_pcm_stream pcm_playback;
+
+ /* i915/powerwell (Haswell+/Valleyview+) specific */
++ bool use_acomp_notifier; /* use i915 eld_notify callback for hotplug */
+ struct i915_audio_component_audio_ops i915_audio_ops;
+ bool i915_bound; /* was i915 bound in this driver? */
+
+@@ -159,8 +160,11 @@ struct hdmi_spec {
+ };
+
+ #ifdef CONFIG_SND_HDA_I915
+-#define codec_has_acomp(codec) \
+- ((codec)->bus->core.audio_component != NULL)
++static inline bool codec_has_acomp(struct hda_codec *codec)
++{
++ struct hdmi_spec *spec = codec->spec;
++ return spec->use_acomp_notifier;
++}
+ #else
+ #define codec_has_acomp(codec) false
+ #endif
+@@ -2248,12 +2252,18 @@ static int patch_generic_hdmi(struct hda_codec *codec)
+ codec->spec = spec;
+ hdmi_array_init(spec, 4);
+
++#ifdef CONFIG_SND_HDA_I915
+ /* Try to bind with i915 for Intel HSW+ codecs (if not done yet) */
+- if (!codec_has_acomp(codec) &&
+- (codec->core.vendor_id >> 16) == 0x8086 &&
+- is_haswell_plus(codec))
+- if (!snd_hdac_i915_init(&codec->bus->core))
+- spec->i915_bound = true;
++ if ((codec->core.vendor_id >> 16) == 0x8086 &&
++ is_haswell_plus(codec)) {
++ if (!codec->bus->core.audio_component)
++ if (!snd_hdac_i915_init(&codec->bus->core))
++ spec->i915_bound = true;
++ /* use i915 audio component notifier for hotplug */
++ if (codec->bus->core.audio_component)
++ spec->use_acomp_notifier = true;
++ }
++#endif
+
+ if (is_haswell_plus(codec)) {
+ intel_haswell_enable_all_pins(codec, true);
+--
+2.5.0
+
diff --git a/Add-EFI-signature-data-types.patch b/Add-EFI-signature-data-types.patch
index 35f170abb..4bdea30ae 100644
--- a/Add-EFI-signature-data-types.patch
+++ b/Add-EFI-signature-data-types.patch
@@ -1,7 +1,7 @@
-From 47f6b5c281137394d627e275cb80980492d00d84 Mon Sep 17 00:00:00 2001
+From 24ceffbbe2764a31328e1146a2cf4bdcf85664e7 Mon Sep 17 00:00:00 2001
From: Dave Howells <dhowells@redhat.com>
Date: Tue, 23 Oct 2012 09:30:54 -0400
-Subject: [PATCH 15/20] Add EFI signature data types
+Subject: [PATCH] Add EFI signature data types
Add the data types that are used for containing hashes, keys and certificates
for cryptographic verification.
@@ -15,12 +15,12 @@ Signed-off-by: David Howells <dhowells@redhat.com>
1 file changed, 20 insertions(+)
diff --git a/include/linux/efi.h b/include/linux/efi.h
-index 4dc970e..82d6218 100644
+index 333d0ca6940f..b3efb6d06344 100644
--- a/include/linux/efi.h
+++ b/include/linux/efi.h
-@@ -599,6 +599,12 @@ void efi_native_runtime_setup(void);
- #define EFI_PROPERTIES_TABLE_GUID \
- EFI_GUID( 0x880aaca3, 0x4adc, 0x4a04, 0x90, 0x79, 0xb7, 0x47, 0x34, 0x08, 0x25, 0xe5 )
+@@ -603,6 +603,12 @@ void efi_native_runtime_setup(void);
+ EFI_GUID(0x3152bca5, 0xeade, 0x433d, \
+ 0x86, 0x2e, 0xc0, 0x1c, 0xdc, 0x29, 0x1f, 0x44)
+#define EFI_CERT_SHA256_GUID \
+ EFI_GUID( 0xc1c41626, 0x504c, 0x4092, 0xac, 0xa9, 0x41, 0xf9, 0x36, 0x93, 0x43, 0x28 )
@@ -31,7 +31,7 @@ index 4dc970e..82d6218 100644
typedef struct {
efi_guid_t guid;
u64 table;
-@@ -823,6 +829,20 @@ typedef struct {
+@@ -827,6 +833,20 @@ typedef struct {
#define EFI_INVALID_TABLE_ADDR (~0UL)
diff --git a/Add-an-EFI-signature-blob-parser-and-key-loader.patch b/Add-an-EFI-signature-blob-parser-and-key-loader.patch
index 06ddd1596..86a285581 100644
--- a/Add-an-EFI-signature-blob-parser-and-key-loader.patch
+++ b/Add-an-EFI-signature-blob-parser-and-key-loader.patch
@@ -36,10 +36,9 @@ diff --git a/crypto/asymmetric_keys/Makefile b/crypto/asymmetric_keys/Makefile
index cd1406f9b14a..d9db380bbe53 100644
--- a/crypto/asymmetric_keys/Makefile
+++ b/crypto/asymmetric_keys/Makefile
-@@ -8,6 +8,7 @@ asymmetric_keys-y := asymmetric_type.o signature.o
+@@ -7,5 +7,6 @@ asymmetric_keys-y := asymmetric_type.o signature.o
obj-$(CONFIG_ASYMMETRIC_PUBLIC_KEY_SUBTYPE) += public_key.o
- obj-$(CONFIG_PUBLIC_KEY_ALGO_RSA) += rsa.o
+obj-$(CONFIG_EFI_SIGNATURE_LIST_PARSER) += efi_parser.o
#
diff --git a/HID-sony-do-not-bail-out-when-the-sixaxis-refuses-th.patch b/HID-sony-do-not-bail-out-when-the-sixaxis-refuses-th.patch
deleted file mode 100644
index b1a789e84..000000000
--- a/HID-sony-do-not-bail-out-when-the-sixaxis-refuses-th.patch
+++ /dev/null
@@ -1,49 +0,0 @@
-From 954d6154959c8c196fa4b89fc98a4fb377c6a38d Mon Sep 17 00:00:00 2001
-From: Benjamin Tissoires <benjamin.tissoires@redhat.com>
-Date: Fri, 8 Jan 2016 17:58:49 +0100
-Subject: [PATCH] HID: sony: do not bail out when the sixaxis refuses the
- output report
-
-When setting the operational mode, some third party (Speedlink Strike-FX)
-gamepads refuse the output report. Failing here means we refuse to
-initialize the gamepad while this should be harmless.
-
-The weird part is that the initial commit that added this: a7de9b8
-("HID: sony: Enable Gasia third-party PS3 controllers") mentions this
-very same controller as one requiring this output report.
-Anyway, it's broken for one user at least, so let's change it.
-We will report an error, but at least the controller should work.
-
-And no, these devices present themselves as legacy Sony controllers
-(VID:PID of 054C:0268, as in the official ones) so there are no ways
-of discriminating them from the official ones.
-
-https://bugzilla.redhat.com/show_bug.cgi?id=1255325
-
-Reported-and-tested-by: Max Fedotov <thesourcehim@gmail.com>
-Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
-Signed-off-by: Jiri Kosina <jkosina@suse.cz>
----
- drivers/hid/hid-sony.c | 6 ++++--
- 1 file changed, 4 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/hid/hid-sony.c b/drivers/hid/hid-sony.c
-index 661f94f8ab8b..11f91c0c2458 100644
---- a/drivers/hid/hid-sony.c
-+++ b/drivers/hid/hid-sony.c
-@@ -1411,8 +1411,10 @@ static int sixaxis_set_operational_usb(struct hid_device *hdev)
- }
-
- ret = hid_hw_output_report(hdev, buf, 1);
-- if (ret < 0)
-- hid_err(hdev, "can't set operational mode: step 3\n");
-+ if (ret < 0) {
-+ hid_info(hdev, "can't set operational mode: step 3, ignoring\n");
-+ ret = 0;
-+ }
-
- out:
- kfree(buf);
---
-2.5.0
-
diff --git a/Initial-AllWinner-A64-and-PINE64-support.patch b/Initial-AllWinner-A64-and-PINE64-support.patch
index b86e2a6ee..7be47d850 100644
--- a/Initial-AllWinner-A64-and-PINE64-support.patch
+++ b/Initial-AllWinner-A64-and-PINE64-support.patch
@@ -1195,19 +1195,6 @@ index 5ba2188..ca59458 100644
};
static const struct factors_data sun5i_a13_ahb_data __initconst = {
-diff --git a/drivers/crypto/Kconfig b/drivers/crypto/Kconfig
-index 07d4942..737200f 100644
---- a/drivers/crypto/Kconfig
-+++ b/drivers/crypto/Kconfig
-@@ -487,7 +487,7 @@ config CRYPTO_DEV_IMGTEC_HASH
-
- config CRYPTO_DEV_SUN4I_SS
- tristate "Support for Allwinner Security System cryptographic accelerator"
-- depends on ARCH_SUNXI
-+ depends on ARCH_SUNXI && !64BIT
- select CRYPTO_MD5
- select CRYPTO_SHA1
- select CRYPTO_AES
--
2.5.0
diff --git a/Makefile b/Makefile
index 694ac55af..f81123332 100644
--- a/Makefile
+++ b/Makefile
@@ -91,7 +91,6 @@ debug:
@perl -pi -e 's/# CONFIG_WQ_WATCHDOG is not set/CONFIG_WQ_WATCHDOG=y/' config-nodebug
@perl -pi -e 's/# CONFIG_X86_BOOTPARAM_MEMORY_CORRUPTION_CHECK is not set/CONFIG_X86_BOOTPARAM_MEMORY_CORRUPTION_CHECK=y/' config-nodebug
@perl -pi -e 's/# CONFIG_DEBUG_KMEMLEAK is not set/CONFIG_DEBUG_KMEMLEAK=y/' config-nodebug
- @perl -pi -e 's/# CONFIG_X86_DEBUG_STATIC_CPU_HAS is not set/CONFIG_X86_DEBUG_STATIC_CPU_HAS=y/' config-nodebug
@# just in case we're going from extremedebug -> debug
@perl -pi -e 's/CONFIG_DEBUG_PAGEALLOC=y/# CONFIG_DEBUG_PAGEALLOC is not set/' config-nodebug
diff --git a/Makefile.release b/Makefile.release
index 6fa0645b8..f1d31bb0c 100644
--- a/Makefile.release
+++ b/Makefile.release
@@ -74,7 +74,6 @@ config-release:
@perl -pi -e 's/CONFIG_XFS_WARN=y/# CONFIG_XFS_WARN is not set/' config-nodebug
@perl -pi -e 's/CONFIG_EDAC_DEBUG=y/# CONFIG_EDAC_DEBUG is not set/' config-nodebug
@perl -pi -e 's/CONFIG_RTLWIFI_DEBUG=y/# CONFIG_RTLWIFI_DEBUG is not set/' config-nodebug
- @perl -pi -e 's/CONFIG_X86_DEBUG_STATIC_CPU_HAS=y/# CONFIG_X86_DEBUG_STATIC_CPU_HAS is not set/' config-nodebug
@# Undo anything that make extremedebug might have set
@perl -pi -e 's/CONFIG_DEBUG_PAGEALLOC=y/# CONFIG_DEBUG_PAGEALLOC is not set/' config-debug
diff --git a/arm64-avoid-needing-console-to-enable-serial-console.patch b/arm64-avoid-needing-console-to-enable-serial-console.patch
index e8cc7bbe0..3c639a0a3 100644
--- a/arm64-avoid-needing-console-to-enable-serial-console.patch
+++ b/arm64-avoid-needing-console-to-enable-serial-console.patch
@@ -1,4 +1,4 @@
-From ede02df9a481ba07348e6fd4393ba2e273ef16d8 Mon Sep 17 00:00:00 2001
+From ce7a9e482dcf66d155e74b39ada1708cf6d9cb25 Mon Sep 17 00:00:00 2001
From: Mark Salter <msalter@redhat.com>
Date: Wed, 25 Mar 2015 14:17:50 -0400
Subject: [PATCH] arm64: avoid needing console= to enable serial console
@@ -11,17 +11,17 @@ firmware.
Signed-off-by: Mark Salter <msalter@redhat.com>
---
- arch/arm64/kernel/setup.c | 19 +++++++++++++++++++
- 1 file changed, 19 insertions(+)
+ arch/arm64/kernel/setup.c | 20 ++++++++++++++++++++
+ 1 file changed, 20 insertions(+)
diff --git a/arch/arm64/kernel/setup.c b/arch/arm64/kernel/setup.c
-index 8119479..ea9ff80 100644
+index 9dc67769b6a4..dfac33b47423 100644
--- a/arch/arm64/kernel/setup.c
+++ b/arch/arm64/kernel/setup.c
-@@ -381,3 +381,22 @@ static int __init topology_init(void)
+@@ -417,3 +417,22 @@ static int __init register_kernel_offset_dumper(void)
return 0;
}
- subsys_initcall(topology_init);
+ __initcall(register_kernel_offset_dumper);
+
+/*
+ * Temporary hack to avoid need for console= on command line
diff --git a/config-arm-generic b/config-arm-generic
index 8215a36a8..aa0ad4933 100644
--- a/config-arm-generic
+++ b/config-arm-generic
@@ -131,6 +131,8 @@ CONFIG_REGULATOR_ACT8865=m
CONFIG_ROCKCHIP_PM_DOMAINS=y
CONFIG_CRYPTO_DEV_ROCKCHIP=m
CONFIG_ROCKCHIP_EFUSE=m
+CONFIG_PHY_ROCKCHIP_EMMC=m
+CONFIG_PHY_ROCKCHIP_DP=m
# Tegra
CONFIG_ARM_TEGRA_CPUFREQ=y
diff --git a/config-arm64 b/config-arm64
index 438e832df..394ea2d95 100644
--- a/config-arm64
+++ b/config-arm64
@@ -36,6 +36,7 @@ CONFIG_ARM64_ERRATUM_843419=y
CONFIG_ARM64_ERRATUM_834220=y
CONFIG_CAVIUM_ERRATUM_22375=y
CONFIG_CAVIUM_ERRATUM_23154=y
+CONFIG_CAVIUM_ERRATUM_27456=y
# AMBA / VExpress
# CONFIG_RTC_DRV_PL030 is not set
@@ -51,6 +52,13 @@ CONFIG_ARM64_HW_AFDBM=y
CONFIG_ARM64_PAN=y
CONFIG_ARM64_LSE_ATOMICS=y
CONFIG_ARM64_VHE=y
+CONFIG_ARM64_UAO=y
+
+# Have ARM team revisit
+# CONFIG_RELOCATABLE is not set
+# CONFIG_RANDOMIZE_BASE is not set
+
+CONFIG_ARM64_ACPI_PARKING_PROTOCOL=y
CONFIG_BCMA_POSSIBLE=y
CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0
@@ -200,6 +208,8 @@ CONFIG_DEBUG_SECTION_MISMATCH=y
# CONFIG_VGA_CONSOLE is not set
# CONFIG_HOTPLUG_PCI_SHPC is not set
+# CONFIG_PCI_HOST_THUNDER_PEM is not set
+# CONFIG_PCI_HOST_THUNDER_ECAM is not set
# CONFIG_FSL_MC_BUS is not set
# CONFIG_FUJITSU_ES is not set
diff --git a/config-armv7 b/config-armv7
index 0cce9bc04..1a040d692 100644
--- a/config-armv7
+++ b/config-armv7
@@ -8,7 +8,6 @@ CONFIG_ARCH_OMAP3=y
CONFIG_ARCH_OMAP4=y
CONFIG_ARCH_QCOM=y
CONFIG_ARCH_TEGRA=y
-CONFIG_ARCH_U8500=y
CONFIG_ARCH_ZYNQ=y
# These are supported in the LPAE kernel
@@ -259,6 +258,7 @@ CONFIG_INPUT_TPS65218_PWRBUTTON=m
CONFIG_VIDEO_AM437X_VPFE=m
CONFIG_UIO_PRUSS=m
CONFIG_WKUP_M3_RPROC=m
+CONFIG_WKUP_M3_IPC=m
# Builtin needed for BBone White
CONFIG_MFD_TPS65217=y
@@ -538,46 +538,6 @@ CONFIG_AK8975=m
CONFIG_CM36651=m
CONFIG_KEYBOARD_SAMSUNG=m
-# ST Ericsson
-CONFIG_MACH_HREFV60=y
-CONFIG_MACH_SNOWBALL=y
-
-CONFIG_ABX500_CORE=y
-# CONFIG_ARM_U8500_CPUIDLE is not set
-CONFIG_UX500_DEBUG_UART=2
-CONFIG_AB8500_CORE=y
-CONFIG_STE_DMA40=y
-CONFIG_HSEM_U8500=m
-CONFIG_PINCTRL_ABX500=y
-CONFIG_PINCTRL_AB8500=y
-CONFIG_I2C_NOMADIK=m
-CONFIG_KEYBOARD_NOMADIK=m
-CONFIG_DB8500_CPUFREQ_COOLING=m
-CONFIG_DB8500_THERMAL=y
-CONFIG_UX500_WATCHDOG=m
-CONFIG_AHCI_ST=m
-CONFIG_INPUT_AB8500_PONKEY=m
-CONFIG_REGULATOR_AB8500=y
-CONFIG_AB8500_USB=m
-CONFIG_USB_MUSB_UX500=m
-# CONFIG_USB_UX500_DMA is not set
-CONFIG_RTC_DRV_AB8500=m
-CONFIG_PWM_AB8500=m
-CONFIG_SND_SOC_UX500=m
-CONFIG_SND_SOC_UX500_PLAT_DMA=m
-CONFIG_SND_SOC_UX500_MACH_MOP500=m
-CONFIG_CLKSRC_DBX500_PRCMU=y
-CONFIG_CLKSRC_DBX500_PRCMU_SCHED_CLOCK=y
-CONFIG_CRYPTO_DEV_UX500=m
-CONFIG_CRYPTO_DEV_UX500_CRYP=m
-CONFIG_CRYPTO_DEV_UX500_HASH=m
-CONFIG_SENSORS_LIS3_I2C=m
-CONFIG_AB8500_BM=y
-CONFIG_AB8500_GPADC=y
-CONFIG_SENSORS_AB8500=m
-CONFIG_STE_MODEM_RPROC=m
-CONFIG_STIH415_RESET=y
-
# Allwinner
CONFIG_MACH_SUN4I=y
CONFIG_MACH_SUN5I=y
diff --git a/config-armv7-generic b/config-armv7-generic
index aaab7d304..aed2da718 100644
--- a/config-armv7-generic
+++ b/config-armv7-generic
@@ -19,8 +19,7 @@ CONFIG_ARM_UNWIND=y
CONFIG_ARM_THUMB=y
CONFIG_ARM_THUMBEE=y
CONFIG_ARM_ASM_UNIFIED=y
-# see rhbz 1303147
-# CONFIG_ARM_PATCH_IDIV is not set
+CONFIG_ARM_PATCH_IDIV=y
CONFIG_ARM_CPU_TOPOLOGY=y
CONFIG_ARM_DMA_MEM_BUFFERABLE=y
CONFIG_SWP_EMULATE=y
@@ -207,6 +206,8 @@ CONFIG_GPIO_PCA953X=m
CONFIG_GPIO_PCF857X=m
CONFIG_TOUCHSCREEN_SUN4I=m
CONFIG_MFD_AXP20X=y
+CONFIG_MFD_AXP20X_I2C=m
+CONFIG_MFD_AXP20X_RSB=m
CONFIG_AXP20X_POWER=m
CONFIG_INPUT_AXP20X_PEK=m
CONFIG_REGULATOR_AXP20X=m
@@ -227,6 +228,7 @@ CONFIG_PWM_SUN4I=m
CONFIG_USB_MUSB_SUNXI=m
CONFIG_CRYPTO_DEV_SUN4I_SS=m
CONFIG_SND_SUN4I_CODEC=m
+CONFIG_SND_SUN4I_SPDIF=m
CONFIG_SUNXI_RSB=m
CONFIG_NVMEM_SUNXI_SID=m
@@ -244,7 +246,8 @@ CONFIG_SPI_BCM2835AUX=m
CONFIG_BCM2835_WDT=m
CONFIG_SND_BCM2835_SOC_I2S=m
CONFIG_DRM_VC4=m
-CONFIG_RASPBERRYPI_FIRMWARE=m
+CONFIG_RASPBERRYPI_FIRMWARE=y
+CONFIG_RASPBERRYPI_POWER=y
# Exynos
CONFIG_ARCH_EXYNOS3=y
@@ -405,6 +408,7 @@ CONFIG_RTC_DRV_ISL12057=m
CONFIG_RTC_DRV_MV=m
CONFIG_RTC_DRV_ARMADA38X=m
CONFIG_MVNETA=m
+CONFIG_MVNETA_BM_ENABLE=m
CONFIG_GPIO_MVEBU=y
CONFIG_MVEBU_CLK_CORE=y
CONFIG_MVEBU_CLK_COREDIV=y
@@ -430,6 +434,8 @@ CONFIG_RTC_DRV_ARMADA38X=m
# CONFIG_CACHE_FEROCEON_L2 is not set
# CONFIG_CACHE_FEROCEON_L2_WRITETHROUGH is not set
CONFIG_LEDS_NS2=m
+CONFIG_SERIAL_MVEBU_UART=y
+# CONFIG_SERIAL_MVEBU_CONSOLE is not set
# DRM panels
CONFIG_DRM_PANEL=y
diff --git a/config-debug b/config-debug
index fc6505b48..b6313babc 100644
--- a/config-debug
+++ b/config-debug
@@ -126,5 +126,3 @@ CONFIG_MAC80211_MESSAGE_TRACING=y
CONFIG_EDAC_DEBUG=y
CONFIG_SPI_DEBUG=y
-
-CONFIG_X86_DEBUG_STATIC_CPU_HAS=y
diff --git a/config-generic b/config-generic
index 3270067aa..4cd526b83 100644
--- a/config-generic
+++ b/config-generic
@@ -110,6 +110,7 @@ CONFIG_PCIEAER_INJECT=m
CONFIG_HOTPLUG_PCI=y
# CONFIG_HOTPLUG_PCI_CPCI is not set
CONFIG_HOTPLUG_PCI_PCIE=y
+# CONFIG_PCIE_DW_PLAT is not set
# CONFIG_SGI_IOC4 is not set
@@ -224,6 +225,9 @@ CONFIG_FW_LOADER=y
# CONFIG_TEST_FIRMWARE is not set
# CONFIG_FIRMWARE_IN_KERNEL is not set
CONFIG_EXTRA_FIRMWARE=""
+CONFIG_FW_CFG_SYSFS=m
+# CONFIG_FW_CFG_SYSFS_CMDLINE is not set
+
# Give this a try in rawhide for now
# CONFIG_FW_LOADER_USER_HELPER is not set
@@ -705,7 +709,6 @@ CONFIG_DM_MULTIPATH=m
CONFIG_DM_SNAPSHOT=y
CONFIG_DM_THIN_PROVISIONING=m
CONFIG_DM_CACHE=m
-CONFIG_DM_CACHE_MQ=m
CONFIG_DM_CACHE_SMQ=m
CONFIG_DM_CACHE_CLEANER=m
# CONFIG_DM_ERA is not set
@@ -820,6 +823,7 @@ CONFIG_NET_FOU=m
CONFIG_NET_FOU_IP_TUNNELS=y
CONFIG_GENEVE_CORE=m
CONFIG_GENEVE=m
+CONFIG_MACSEC=m
CONFIG_INET_AH=m
CONFIG_INET_ESP=m
CONFIG_INET_IPCOMP=m
@@ -1282,6 +1286,9 @@ CONFIG_NET_ACT_SKBEDIT=m
CONFIG_NET_ACT_VLAN=m
CONFIG_NET_ACT_BPF=m
CONFIG_NET_ACT_CONNMARK=m
+CONFIG_NET_ACT_IFE=m
+CONFIG_NET_IFE_SKBMARK=m
+CONFIG_NET_IFE_SKBPRIO=m
CONFIG_DCB=y
CONFIG_DNS_RESOLVER=m
@@ -1290,6 +1297,7 @@ CONFIG_BATMAN_ADV_BLA=y
CONFIG_BATMAN_ADV_DAT=y
CONFIG_BATMAN_ADV_NC=y
CONFIG_BATMAN_ADV_MCAST=y
+CONFIG_BATMAN_ADV_BATMAN_V=y
# CONFIG_BATMAN_ADV_DEBUG is not set
CONFIG_OPENVSWITCH=m
@@ -1386,7 +1394,10 @@ CONFIG_L2TP_ETH=m
# CONFIG_CAIF is not set
+CONFIG_AF_KCM=m
+
CONFIG_LWTUNNEL=y
+CONFIG_NET_DEVLINK=m
CONFIG_RFKILL=m
CONFIG_RFKILL_GPIO=m
@@ -1650,6 +1661,7 @@ CONFIG_MICROCHIP_PHY=m
CONFIG_FIXED_PHY=y
CONFIG_MDIO_BITBANG=m
CONFIG_MDIO_BCM_UNIMAC=m
+# CONFIG_MDIO_THUNDER is not set
CONFIG_NATIONAL_PHY=m
CONFIG_ICPLUS_PHY=m
CONFIG_BCM63XX_PHY=m
@@ -1683,6 +1695,7 @@ CONFIG_BNX2=m
CONFIG_BNX2X=m
CONFIG_BNX2X_SRIOV=y
CONFIG_BNX2X_VXLAN=y
+CONFIG_BNX2X_GENEVE=y
CONFIG_CNIC=m
CONFIG_FEALNX=m
CONFIG_ETHOC=m
@@ -1706,6 +1719,7 @@ CONFIG_MLX4_EN_VXLAN=y
CONFIG_MLX4_INFINIBAND=m
CONFIG_MLX5_CORE=m
CONFIG_MLX5_CORE_EN=y
+CONFIG_MLX5_CORE_EN_DCB=y
CONFIG_MLX5_INFINIBAND=m
CONFIG_MLXSW_CORE=m
CONFIG_MLXSW_CORE_HWMON=y
@@ -1800,6 +1814,7 @@ CONFIG_ATH9K_BTCOEX_SUPPORT=y
#
CONFIG_ATH10K=m
CONFIG_ATH10K_PCI=m
+# CONFIG_ATH10K_AHB is not set
# CONFIG_ATH10K_DEBUG is not set
# CONFIG_ATH10K_TRACING is not set
# CONFIG_ATH_TRACEPOINTS is not set
@@ -1884,6 +1899,7 @@ CONFIG_IWLDVM=m
CONFIG_IWLMVM=m
# CONFIG_IWLWIFI_BCAST_FILTERING is not set
# CONFIG_IWLWIFI_UAPSD is not set
+CONFIG_IWLWIFI_PCIE_RTPM=y
CONFIG_IWLWIFI_DEBUG=y
CONFIG_IWLWIFI_DEBUGFS=y
@@ -2079,6 +2095,7 @@ CONFIG_CAN_8DEV_USB=m
CONFIG_CAN_SOFTING=m
# CONFIG_CAN_SOFTING_CS is not set
CONFIG_CAN_SUN4I=m
+CONFIG_CAN_IFI_CANFD=m
CONFIG_NETROM=m
CONFIG_ROSE=m
@@ -2172,6 +2189,7 @@ CONFIG_BT_BREDR=y
CONFIG_BT_HS=y
CONFIG_BT_LE=y
CONFIG_BT_6LOWPAN=m
+CONFIG_BT_LEDS=y
# CONFIG_BT_SELFTEST is not set
# CONFIG_BT_DEBUGFS is not set
CONFIG_BT_SCO=y
@@ -2199,6 +2217,7 @@ CONFIG_BT_HCIUART_3WIRE=y
CONFIG_BT_HCIUART_INTEL=y
CONFIG_BT_HCIUART_BCM=y
CONFIG_BT_HCIUART_QCA=y
+CONFIG_BT_HCIUART_AG6XX=y
CONFIG_BT_HCIDTL1=m
CONFIG_BT_HCIBT3C=m
CONFIG_BT_HCIBLUECARD=m
@@ -2539,6 +2558,7 @@ CONFIG_TOUCHSCREEN_ZFORCE=m
# CONFIG_TOUCHSCREEN_FT6236 is not set
# CONFIG_TOUCHSCREEN_ROHM_BU21023 is not set
# CONFIG_TOUCHSCREEN_TSC2004 is not set
+# CONFIG_TOUCHSCREEN_MELFAS_MIP4 is not set
CONFIG_INPUT_MISC=y
CONFIG_INPUT_E3X0_BUTTON=m
@@ -2563,6 +2583,13 @@ CONFIG_INPUT_MPU3050=m
CONFIG_INPUT_KXTJ9=m
# CONFIG_INPUT_KXTJ9_POLLED_MODE is not set
+CONFIG_RMI4_CORE=m
+CONFIG_RMI4_I2C=m
+CONFIG_RMI4_F11=y
+CONFIG_RMI4_F12=y
+CONFIG_RMI4_F30=y
+CONFIG_RMI4_SPI=m
+
#
# Character devices
#
@@ -2612,10 +2639,12 @@ CONFIG_SERIAL_8250_DW=y
# CONFIG_SERIAL_8250_INGENIC is not set
CONFIG_SERIAL_8250_RT288X=y
CONFIG_SERIAL_8250_MID=y
+CONFIG_SERIAL_8250_MOXA=m
CONFIG_CYCLADES=m
# CONFIG_CYZ_INTR is not set
# CONFIG_MOXA_INTELLIO is not set
# CONFIG_MOXA_SMARTIO is not set
+# CONFIG_SERIAL_MVEBU_UART is not set
# CONFIG_ISI is not set
# CONFIG_RIO is not set
CONFIG_SERIAL_JSM=m
@@ -2940,10 +2969,13 @@ CONFIG_STK3310=m
# CONFIG_TSL4531 is not set
# CONFIG_NAU7802 is not set
# CONFIG_TI_ADC081C is not set
+# CONFIG_TI_ADC0832 is not set
# CONFIG_TI_ADS8688 is not set
+# CONFIG_TI_ADS1015 is not set
# CONFIG_TI_ADC128S052 is not set
# CONFIG_VIPERBOARD_ADC is not set
# CONFIG_VF610_ADC is not set
+# CONFIG_VF610_DAC is not set
# CONFIG_CC10001_ADC is not set
# CONFIG_INV_MPU6050_IIO is not set
CONFIG_IIO_ST_GYRO_3AXIS=m
@@ -2990,6 +3022,7 @@ CONFIG_ACPI_ALS=m
# CONFIG_AD5624R_SPI is not set
# CONFIG_AD5686 is not set
# CONFIG_AD5755 is not set
+# CONFIG_AD5761 is not set
# CONFIG_AD5764 is not set
# CONFIG_AD5791 is not set
# CONFIG_AD7303 is not set
@@ -3006,9 +3039,14 @@ CONFIG_ACPI_ALS=m
# CONFIG_ADIS16400 is not set
# CONFIG_ADIS16480 is not set
CONFIG_DHT11=m
+# CONFIG_INV_MPU6050_I2C is not set
+# CONFIG_INV_MPU6050_SPI is not set
# CONFIG_MPL3115 is not set
# CONFIG_MS5611 is not set
# CONFIG_MPL115 is not set
+# CONFIG_MPL115_I2C is not set
+# CONFIG_MPL115_SPI is not set
+# CONFIG_TPL0102 is not set
# CONFIG_SI7005 is not set
# CONFIG_SI7020 is not set
# CONFIG_AS3935 is not set
@@ -3017,6 +3055,8 @@ CONFIG_KXCJK1013=m
# CONFIG_ISL29125 is not set
# CONFIG_JSA1212 is not set
CONFIG_RPR0521=m
+# CONFIG_AFE4403 is not set
+# CONFIG_AFE4404 is not set
CONFIG_MAX30100=m
CONFIG_OPT3001=m
CONFIG_PA12203001=m
@@ -3027,6 +3067,7 @@ CONFIG_PA12203001=m
# CONFIG_MAX1027 is not set
# CONFIG_MXC4005 is not set
# CONFIG_IAQCORE is not set
+# CONFIG_ATLAS_PH_SENSOR is not set
# CONFIG_INA2XX_ADC is not set
# CONFIG_VZ89X is not set
# CONFIG_HDC100X is not set
@@ -4078,6 +4119,7 @@ CONFIG_HID_APPLEIR=m
CONFIG_HID_LENOVO=m
CONFIG_HID_CORSAIR=m
CONFIG_HID_GFRM=m
+CONFIG_HID_CMEDIA=m
#
# USB Imaging devices
@@ -4427,6 +4469,8 @@ CONFIG_MFD_VIPERBOARD=m
# CONFIG_MFD_CROS_EC is not set
# CONFIG_MFD_SI476X_CORE is not set
# CONFIG_MFD_TPS65912 is not set
+# CONFIG_MFD_TPS65912_SPI is not set
+# CONFIG_MFD_TPS65912_I2C is not set
# CONFIG_MFD_SYSCON is not set
# CONFIG_MFD_DA9063 is not set
# CONFIG_MFD_DLN2 is not set
@@ -4436,7 +4480,6 @@ CONFIG_MFD_VIPERBOARD=m
# CONFIG_MFD_TPS65218 is not set
# CONFIG_MFD_WM831X_SPI is not set
# CONFIG_MFD_ARIZONA_SPI is not set
-# CONFIG_MFD_TPS65912_SPI is not set
# CONFIG_MFD_MC13XXX_SPI is not set
# CONFIG_MFD_DA9052_SPI is not set
# CONFIG_MFD_MENF21BMC is not set
@@ -4452,6 +4495,14 @@ CONFIG_MFD_VIPERBOARD=m
# CONFIG_INTEL_SOC_PMIC is not set
# CONFIG_MFD_ATMEL_FLEXCOM is not set
# CONFIG_TS4800_IRQ is not set
+# CONFIG_MFD_ACT8945A is not set
+# CONFIG_MFD_AXP20X_I2C is not set
+# CONFIG_MFD_AXP20X_RSB is not set
+# CONFIG_MFD_88PM800 is not set
+# CONFIG_MFD_88PM805 is not set
+# CONFIG_MFD_MAX77686 is not set
+# CONFIG_MFD_MAX8907 is not set
+# CONFIG_MFD_TPS65086 is not set
#
# File systems
@@ -4851,6 +4902,7 @@ CONFIG_LATENCYTOP=y
# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
CONFIG_EARLY_PRINTK_DBGP=y
# CONFIG_PAGE_POISONING is not set
+# CONFIG_DEBUG_PAGE_REF is not set
CONFIG_CRASH=m
CONFIG_CRASH_DUMP=y
# CONFIG_GCOV_KERNEL is not set
@@ -5217,6 +5269,8 @@ CONFIG_SND_SOC_GENERIC_DMAENGINE_PCM=y
# CONFIG_SND_SOC_PCM3168A_SPI is not set
# CONFIG_SND_SOC_PCM512x_I2C is not set
# CONFIG_SND_SOC_PCM512x_SPI is not set
+# CONFIG_SND_SOC_PCM179X_I2C is not set
+# CONFIG_SND_SOC_PCM179X_SPI is not set
# CONFIG_SND_SOC_QCOM is not set
# CONFIG_SND_SOC_SGTL5000 is not set
# CONFIG_SND_SOC_SIRF_AUDIO_CODEC is not set
@@ -5267,6 +5321,7 @@ CONFIG_SND_SOC_GENERIC_DMAENGINE_PCM=y
# CONFIG_SND_SOC_CS42L51_I2C is not set
# CONFIG_SND_SOC_CS4271_I2C is not set
# CONFIG_SND_SOC_CS4271_SPI is not set
+# CONFIG_SND_SOC_RT5616 is not set
# CONFIG_SND_SOC_RT5631 is not set
# CONFIG_SND_SOC_TFA9879 is not set
# CONFIG_SND_SOC_TLV320AIC23_I2C is not set
@@ -5355,6 +5410,8 @@ CONFIG_ASYNC_TX_DMA=y
# CONFIG_HSU_DMA_PCI is not set
# CONFIG_XGENE_DMA is not set
# CONFIG_INTEL_IDMA64 is not set
+# CONFIG_QCOM_HIDMA_MGMT is not set
+# CONFIG_QCOM_HIDMA is not set
CONFIG_UNUSED_SYMBOLS=y
@@ -5530,7 +5587,7 @@ CONFIG_NET_DSA=m
CONFIG_NET_DSA_HWMON=y
CONFIG_NET_DSA_MV88E6060=m
CONFIG_NET_DSA_MV88E6131=m
-CONFIG_NET_DSA_MV88E6123_61_65=m
+CONFIG_NET_DSA_MV88E6123=m
CONFIG_NET_DSA_MV88E6171=m
CONFIG_NET_DSA_MV88E6352=m
CONFIG_NET_DSA_BCM_SF2=m
@@ -5631,6 +5688,7 @@ CONFIG_USBIP_HOST=m
# CONFIG_WILC1000_DRIVER is not set
# CONFIG_WILC1000_SDIO is not set
# CONFIG_WILC1000_SPI is not set
+# CONFIG_LNET is not set
# END OF STAGING
#
@@ -5707,7 +5765,7 @@ CONFIG_ZBUD=y
CONFIG_ZSMALLOC=y
# CONFIG_ZSMALLOC_STAT is not set
# CONFIG_PGTABLE_MAPPING is not set
-
+# CONFIG_DEFERRED_STRUCT_PAGE_INIT is not set
# CONFIG_IDLE_PAGE_TRACKING is not set
# CONFIG_MDIO_GPIO is not set
@@ -5761,6 +5819,13 @@ CONFIG_GPIO_VIPERBOARD=m
# CONFIG_GPIO_AMDPT is not set
# CONFIG_GPIO_104_IDIO_16 is not set
# CONFIG_GPIO_IT87 is not set
+# CONFIG_GPIO_TPIC2810 is not set
+# CONFIG_GPIO_MPC8XXX is not set
+# CONFIG_GPIO_PISOSR is not set
+# CONFIG_GPIO_TS4800 is not set
+# CONFIG_GPIO_TPS65218 is not set
+# CONFIG_GPIO_104_DIO_48E is not set
+# CONFIG_GPIO_WS16C48 is not set
# FIXME: Why?
@@ -5803,12 +5868,15 @@ CONFIG_PSTORE_RAM=m
# CONFIG_TEST_RHASHTABLE is not set
# CONFIG_TEST_STATIC_KEYS is not set
# CONFIG_TEST_PRINTF is not set
+# CONFIG_TEST_BITMAP is not set
# CONFIG_AVERAGE is not set
# CONFIG_VMXNET3 is not set
# CONFIG_SIGMA is not set
+# CONFIG_GOLDFISH is not set
+
CONFIG_CHROME_PLATFORMS=y
CONFIG_BCMA=m
@@ -5869,6 +5937,7 @@ CONFIG_MODULE_SIG_SHA256=y
# CONFIG_MODULE_SIG_FORCE is not set
CONFIG_MODULE_SIG_KEY="certs/signing_key.pem"
CONFIG_SYSTEM_TRUSTED_KEYS=""
+# CONFIG_SYSTEM_EXTRA_CERTIFICATE is not set
CONFIG_PKCS7_MESSAGE_PARSER=y
# CONFIG_PKCS7_TEST_KEY is not set
CONFIG_SIGNED_PE_FILE_VERIFICATION=y
diff --git a/config-nodebug b/config-nodebug
index 3a2eee381..997ee3d0a 100644
--- a/config-nodebug
+++ b/config-nodebug
@@ -126,5 +126,3 @@ CONFIG_DEBUG_KMEMLEAK_DEFAULT_OFF=y
# CONFIG_EDAC_DEBUG is not set
# CONFIG_SPI_DEBUG is not set
-
-CONFIG_X86_DEBUG_STATIC_CPU_HAS=y
diff --git a/config-x86-generic b/config-x86-generic
index 585472215..ce2170e5a 100644
--- a/config-x86-generic
+++ b/config-x86-generic
@@ -71,7 +71,6 @@ CONFIG_X86_MPPARSE=y
CONFIG_MMIOTRACE=y
# CONFIG_MMIOTRACE_TEST is not set
# CONFIG_DEBUG_PER_CPU_MAPS is not set
-CONFIG_DEBUG_RODATA=y
CONFIG_DEBUG_WX=y
CONFIG_DEBUG_STACKOVERFLOW=y
@@ -501,6 +500,8 @@ CONFIG_HYPERV_STORAGE=m
CONFIG_HYPERV_BALLOON=m
CONFIG_FB_HYPERV=m
CONFIG_HYPERV_KEYBOARD=m
+# This is x86_64 only, but we'll lump it here anyway
+CONFIG_PCI_HYPERV=m
# Depends on HOTPLUG_PCI_PCIE
CONFIG_BLK_DEV_PCIESSD_MTIP32XX=m
@@ -514,6 +515,7 @@ CONFIG_RCU_FANOUT_LEAF=16
CONFIG_INTEL_MEI=m
CONFIG_INTEL_MEI_ME=m
CONFIG_INTEL_MEI_TXE=m
+CONFIG_INTEL_MEI_WDT=m
CONFIG_NFC_MEI_PHY=m
CONFIG_NFC_PN544_MEI=m
@@ -571,6 +573,7 @@ CONFIG_SND_SOC_INTEL_SKL_NAU88L25_MAX98357A_MACH=m
CONFIG_SND_SOC_AC97_CODEC=m
# CONFIG_SND_SOC_TAS571X is not set
# CONFIG_SND_SUN4I_CODEC is not set
+# CONFIG_SND_SUN4I_SPDIF is not set
# CONFIG_INTEL_POWERCLAMP is not set
CONFIG_X86_PKG_TEMP_THERMAL=m
diff --git a/config-x86_64-generic b/config-x86_64-generic
index 8d8b27519..1ccddd9bd 100644
--- a/config-x86_64-generic
+++ b/config-x86_64-generic
@@ -63,6 +63,9 @@ CONFIG_INTEL_MIC_BUS=m
CONFIG_INTEL_MIC_X100_DMA=m
CONFIG_MIC_COSM=m
+CONFIG_VOP_BUS=m
+CONFIG_VOP=m
+
# SHPC has half-arsed PCI probing, which makes it load on too many systems
CONFIG_HOTPLUG_PCI_SHPC=m
diff --git a/cypress_m8-add-sanity-checking.patch b/cypress_m8-add-sanity-checking.patch
new file mode 100644
index 000000000..fa8513f94
--- /dev/null
+++ b/cypress_m8-add-sanity-checking.patch
@@ -0,0 +1,50 @@
+From f7a3aa353011e38e119adebd845b38551587a26a Mon Sep 17 00:00:00 2001
+From: Oliver Neukum <oneukum@suse.com>
+Date: Thu, 17 Mar 2016 16:25:33 +0100
+Subject: [PATCH] cypress_m8: add sanity checking
+
+An attack using missing endpoints exists.
+CVE-2016-3137
+
+Signed-off-by: Oliver Neukum <ONeukum@suse.com>
+CC: stable@vger.kernel.org
+
+v1 - add sanity check
+v2 - add error logging
+v3 - correct error message
+---
+ drivers/usb/serial/cypress_m8.c | 11 +++++------
+ 1 file changed, 5 insertions(+), 6 deletions(-)
+
+diff --git a/drivers/usb/serial/cypress_m8.c b/drivers/usb/serial/cypress_m8.c
+index 01bf53392819..5e25443fe4ef 100644
+--- a/drivers/usb/serial/cypress_m8.c
++++ b/drivers/usb/serial/cypress_m8.c
+@@ -447,6 +447,11 @@ static int cypress_generic_port_probe(struct usb_serial_port *port)
+ struct usb_serial *serial = port->serial;
+ struct cypress_private *priv;
+
++ if (!port->interrupt_out_urb || !port->interrupt_in_urb) {
++ dev_err(&port->dev, "A required endpoint is missing\n");
++ return -ENODEV;
++ }
++
+ priv = kzalloc(sizeof(struct cypress_private), GFP_KERNEL);
+ if (!priv)
+ return -ENOMEM;
+@@ -606,12 +611,6 @@ static int cypress_open(struct tty_struct *tty, struct usb_serial_port *port)
+ cypress_set_termios(tty, port, &priv->tmp_termios);
+
+ /* setup the port and start reading from the device */
+- if (!port->interrupt_in_urb) {
+- dev_err(&port->dev, "%s - interrupt_in_urb is empty!\n",
+- __func__);
+- return -1;
+- }
+-
+ usb_fill_int_urb(port->interrupt_in_urb, serial->dev,
+ usb_rcvintpipe(serial->dev, port->interrupt_in_endpointAddress),
+ port->interrupt_in_urb->transfer_buffer,
+--
+2.5.0
+
diff --git a/digi_acceleport-do-sanity-checking-for-the-number-of.patch b/digi_acceleport-do-sanity-checking-for-the-number-of.patch
new file mode 100644
index 000000000..2bbae94b7
--- /dev/null
+++ b/digi_acceleport-do-sanity-checking-for-the-number-of.patch
@@ -0,0 +1,34 @@
+From e9c2a3972496927631a1a98fef43e9538e9fd5d5 Mon Sep 17 00:00:00 2001
+From: Oliver Neukum <oneukum@suse.com>
+Date: Mon, 14 Mar 2016 15:53:38 +0100
+Subject: [PATCH] digi_acceleport: do sanity checking for the number of ports
+
+The driver can be crashed with devices that expose crafted
+descriptors with too few endpoints.
+See:
+http://seclists.org/bugtraq/2016/Mar/61
+
+Signed-off-by: Oliver Neukum <ONeukum@suse.com>
+---
+ drivers/usb/serial/digi_acceleport.c | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+diff --git a/drivers/usb/serial/digi_acceleport.c b/drivers/usb/serial/digi_acceleport.c
+index 12b0e67473ba..c4d4d4547d40 100644
+--- a/drivers/usb/serial/digi_acceleport.c
++++ b/drivers/usb/serial/digi_acceleport.c
+@@ -1260,6 +1260,11 @@ static int digi_startup(struct usb_serial *serial)
+
+ spin_lock_init(&serial_priv->ds_serial_lock);
+ serial_priv->ds_oob_port_num = serial->type->num_ports;
++ if (!(serial_priv->ds_oob_port_num == 2 && serial->type == &digi_acceleport_2_device)
++ && !(serial_priv->ds_oob_port_num == 4 && serial->type == &digi_acceleport_4_device)) {
++ kfree(serial_priv);
++ return -EINVAL;
++ }
+ serial_priv->ds_oob_port = serial->port[serial_priv->ds_oob_port_num];
+
+ ret = digi_port_init(serial_priv->ds_oob_port,
+--
+2.5.0
+
diff --git a/disable-CONFIG_EXPERT-for-ZONE_DMA.patch b/disable-CONFIG_EXPERT-for-ZONE_DMA.patch
index 9cc0525f4..784cf2035 100644
--- a/disable-CONFIG_EXPERT-for-ZONE_DMA.patch
+++ b/disable-CONFIG_EXPERT-for-ZONE_DMA.patch
@@ -1,4 +1,4 @@
-From 888ba9b2a02e8d144c3a9ae5e01a1a94280cd2bf Mon Sep 17 00:00:00 2001
+From 78bd7226c92c8309d1c6c1378f1224dcd591b49f Mon Sep 17 00:00:00 2001
From: Fedora Kernel Team <kernel-team@fedoraproject.org>
Date: Fri, 22 Jan 2016 13:03:36 -0600
Subject: [PATCH] Make ZONE_DMA not depend on CONFIG_EXPERT
@@ -13,12 +13,12 @@ Signed-off-by: Justin Forbes <jforbes@fedoraproject.org>
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
-index a02c842..ea2eaeb 100644
+index 3c74b549ea9a..8a5b7b8cc425 100644
--- a/arch/x86/Kconfig
+++ b/arch/x86/Kconfig
-@@ -315,7 +315,7 @@ source "kernel/Kconfig.freezer"
+@@ -318,7 +318,7 @@ source "kernel/Kconfig.freezer"
menu "Processor type and features"
-
+
config ZONE_DMA
- bool "DMA memory allocation support" if EXPERT
+ bool "DMA memory allocation support"
@@ -26,18 +26,18 @@ index a02c842..ea2eaeb 100644
help
DMA memory allocation support allows devices with less than 32-bit
diff --git a/mm/Kconfig b/mm/Kconfig
-index 97a4e06..26bbbe0 100644
+index 05efa6a5199e..c1a01e50c293 100644
--- a/mm/Kconfig
+++ b/mm/Kconfig
@@ -650,7 +650,7 @@ config IDLE_PAGE_TRACKING
See Documentation/vm/idle_page_tracking.txt for more details.
-
+
config ZONE_DEVICE
- bool "Device memory (pmem, etc...) hotplug support" if EXPERT
+ bool "Device memory (pmem, etc...) hotplug support"
- default !ZONE_DMA
- depends on !ZONE_DMA
depends on MEMORY_HOTPLUG
+ depends on MEMORY_HOTREMOVE
+ depends on SPARSEMEM_VMEMMAP
--
2.5.0
diff --git a/Geekbox-device-tree-support.patch b/geekbox-v4-device-tree-support.patch
index 51caf8aaf..77c1e5c28 100644
--- a/Geekbox-device-tree-support.patch
+++ b/geekbox-v4-device-tree-support.patch
@@ -1,19 +1,21 @@
-From a516bbf04744817e49e173b2a217a2a6366b5f9c Mon Sep 17 00:00:00 2001
+From 4d321bf15d2d5e5b1b674f2a26a1c5202090a800 Mon Sep 17 00:00:00 2001
From: Peter Robinson <pbrobinson@gmail.com>
-Date: Wed, 2 Mar 2016 18:12:09 +0000
-Subject: [PATCH] Geekbox device tree support
+Date: Thu, 17 Mar 2016 15:19:04 +0000
+Subject: [PATCH] geekbox v4 patchset
---
Documentation/devicetree/bindings/arm/rockchip.txt | 9 +
arch/arm64/boot/dts/rockchip/Makefile | 2 +
- .../dts/rockchip/rk3368-geekbox-landingship.dts | 56 ++++
- arch/arm64/boot/dts/rockchip/rk3368-geekbox.dts | 321 +++++++++++++++++++++
- 4 files changed, 388 insertions(+)
+ arch/arm64/boot/dts/rockchip/rk3368-evb.dtsi | 2 +-
+ .../dts/rockchip/rk3368-geekbox-landingship.dts | 57 ++++
+ arch/arm64/boot/dts/rockchip/rk3368-geekbox.dts | 319 +++++++++++++++++++++
+ arch/arm64/boot/dts/rockchip/rk3368-r88.dts | 2 +-
+ 6 files changed, 389 insertions(+), 2 deletions(-)
create mode 100644 arch/arm64/boot/dts/rockchip/rk3368-geekbox-landingship.dts
create mode 100644 arch/arm64/boot/dts/rockchip/rk3368-geekbox.dts
diff --git a/Documentation/devicetree/bindings/arm/rockchip.txt b/Documentation/devicetree/bindings/arm/rockchip.txt
-index 078c14f..c6d95f2 100644
+index 078c14f..ae84f4e 100644
--- a/Documentation/devicetree/bindings/arm/rockchip.txt
+++ b/Documentation/devicetree/bindings/arm/rockchip.txt
@@ -87,6 +87,15 @@ Rockchip platforms device tree bindings
@@ -24,9 +26,9 @@ index 078c14f..c6d95f2 100644
+ Required root node properties:
+ - compatible = "geekbuying,geekbox", "rockchip,rk3368";
+
-+- GeekBuying Landingship:
++- GeekBuying Landingship with GeekBox module:
+ Required root node properties:
-+ - compatible = "geekbuying,landingship",
++ - compatible = "geekbuying,geekbox-landingship",
+ "geekbuying,geekbox", "rockchip,rk3368";
+
- Rockchip RK3368 evb:
@@ -43,12 +45,25 @@ index e3f0b5f..201bcd9 100644
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3368-r88.dtb
always := $(dtb-y)
+diff --git a/arch/arm64/boot/dts/rockchip/rk3368-evb.dtsi b/arch/arm64/boot/dts/rockchip/rk3368-evb.dtsi
+index 8c219cc..e4ceb53 100644
+--- a/arch/arm64/boot/dts/rockchip/rk3368-evb.dtsi
++++ b/arch/arm64/boot/dts/rockchip/rk3368-evb.dtsi
+@@ -48,7 +48,7 @@
+ stdout-path = "serial2:115200n8";
+ };
+
+- memory {
++ memory@0 {
+ device_type = "memory";
+ reg = <0x0 0x0 0x0 0x40000000>;
+ };
diff --git a/arch/arm64/boot/dts/rockchip/rk3368-geekbox-landingship.dts b/arch/arm64/boot/dts/rockchip/rk3368-geekbox-landingship.dts
new file mode 100644
-index 0000000..e4a1175
+index 0000000..a28ace9
--- /dev/null
+++ b/arch/arm64/boot/dts/rockchip/rk3368-geekbox-landingship.dts
-@@ -0,0 +1,56 @@
+@@ -0,0 +1,57 @@
+/*
+ * Copyright (c) 2016 Andreas Färber
+ *
@@ -95,11 +110,12 @@ index 0000000..e4a1175
+
+/ {
+ model = "GeekBox on Landingship";
-+ compatible = "geekbuying,landingship", "geekbuying,geekbox", "rockchip,rk3368";
++ compatible = "geekbuying,geekbox-landingship",
++ "geekbuying,geekbox", "rockchip,rk3368";
+};
+
+&i2c1 {
-+ status = "okay";
++ status = "disabled";
+};
+
+&i2c2 {
@@ -107,10 +123,10 @@ index 0000000..e4a1175
+};
diff --git a/arch/arm64/boot/dts/rockchip/rk3368-geekbox.dts b/arch/arm64/boot/dts/rockchip/rk3368-geekbox.dts
new file mode 100644
-index 0000000..7e51876
+index 0000000..46cdddf
--- /dev/null
+++ b/arch/arm64/boot/dts/rockchip/rk3368-geekbox.dts
-@@ -0,0 +1,321 @@
+@@ -0,0 +1,319 @@
+/*
+ * Copyright (c) 2016 Andreas Färber
+ *
@@ -155,6 +171,7 @@ index 0000000..7e51876
+
+/dts-v1/;
+#include "rk3368.dtsi"
++#include <dt-bindings/input/input.h>
+
+/ {
+ model = "GeekBox";
@@ -164,7 +181,7 @@ index 0000000..7e51876
+ stdout-path = "serial2:115200n8";
+ };
+
-+ memory {
++ memory@0 {
+ device_type = "memory";
+ reg = <0x0 0x0 0x0 0x80000000>;
+ };
@@ -187,15 +204,12 @@ index 0000000..7e51876
+ compatible = "gpio-keys";
+ pinctrl-names = "default";
+ pinctrl-0 = <&pwr_key>;
-+ #address-cells = <1>;
-+ #size-cells = <0>;
+
-+ button@0 {
-+ reg = <0>;
-+ gpio-key,wakeup = <1>;
++ power {
+ gpios = <&gpio0 2 GPIO_ACTIVE_LOW>;
+ label = "GPIO Power";
-+ linux,code = <116>;
++ linux,code = <KEY_POWER>;
++ wakeup-source;
+ };
+ };
+
@@ -390,13 +404,13 @@ index 0000000..7e51876
+&pinctrl {
+ ir {
+ ir_int: ir-int {
-+ rockchip,pins = <3 30 RK_FUNC_GPIO &pcfg_pull_up>;
++ rockchip,pins = <3 30 RK_FUNC_GPIO &pcfg_pull_none>;
+ };
+ };
+
+ keys {
+ pwr_key: pwr-key {
-+ rockchip,pins = <0 2 RK_FUNC_GPIO &pcfg_pull_up>;
++ rockchip,pins = <0 2 RK_FUNC_GPIO &pcfg_pull_none>;
+ };
+ };
+
@@ -414,7 +428,7 @@ index 0000000..7e51876
+&tsadc {
+ status = "okay";
+ rockchip,hw-tshut-mode = <0>; /* CRU */
-+ rockchip,hw-tshut-polarity = <0>; /* low */
++ rockchip,hw-tshut-polarity = <1>; /* high */
+};
+
+&uart2 {
@@ -432,6 +446,19 @@ index 0000000..7e51876
+&wdt {
+ status = "okay";
+};
+diff --git a/arch/arm64/boot/dts/rockchip/rk3368-r88.dts b/arch/arm64/boot/dts/rockchip/rk3368-r88.dts
+index 104cbee..9548129 100644
+--- a/arch/arm64/boot/dts/rockchip/rk3368-r88.dts
++++ b/arch/arm64/boot/dts/rockchip/rk3368-r88.dts
+@@ -51,7 +51,7 @@
+ stdout-path = "serial2:115200n8";
+ };
+
+- memory {
++ memory@0 {
+ device_type = "memory";
+ reg = <0x0 0x0 0x0 0x40000000>;
+ };
--
2.5.0
diff --git a/gitrev b/gitrev
index ab75b7980..c7fe9f1a2 100644
--- a/gitrev
+++ b/gitrev
@@ -1 +1 @@
-271ecc5253e2b317d729d366560789cd7f93836c
+1200b6809dfd9d73bc4c7db76d288c35fa4b2ebe
diff --git a/ims-pcu-sanity-check-against-missing-interfaces.patch b/ims-pcu-sanity-check-against-missing-interfaces.patch
new file mode 100644
index 000000000..827a2b7ee
--- /dev/null
+++ b/ims-pcu-sanity-check-against-missing-interfaces.patch
@@ -0,0 +1,39 @@
+From a4200b7eb26271108586d3a7cf34a2f16d460e48 Mon Sep 17 00:00:00 2001
+From: Oliver Neukum <oneukum@suse.com>
+Date: Thu, 17 Mar 2016 15:10:47 +0100
+Subject: [PATCH] ims-pcu: sanity check against missing interfaces
+
+A malicious device missing interface can make the driver oops.
+Add sanity checking.
+
+Signed-off-by: Oliver Neukum <ONeukum@suse.com>
+CC: stable@vger.kernel.org
+---
+ drivers/input/misc/ims-pcu.c | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/drivers/input/misc/ims-pcu.c b/drivers/input/misc/ims-pcu.c
+index ac1fa5f44580..9c0ea36913b4 100644
+--- a/drivers/input/misc/ims-pcu.c
++++ b/drivers/input/misc/ims-pcu.c
+@@ -1663,6 +1663,8 @@ static int ims_pcu_parse_cdc_data(struct usb_interface *intf, struct ims_pcu *pc
+
+ pcu->ctrl_intf = usb_ifnum_to_if(pcu->udev,
+ union_desc->bMasterInterface0);
++ if (!pcu->ctrl_intf)
++ return -EINVAL;
+
+ alt = pcu->ctrl_intf->cur_altsetting;
+ pcu->ep_ctrl = &alt->endpoint[0].desc;
+@@ -1670,6 +1672,8 @@ static int ims_pcu_parse_cdc_data(struct usb_interface *intf, struct ims_pcu *pc
+
+ pcu->data_intf = usb_ifnum_to_if(pcu->udev,
+ union_desc->bSlaveInterface0);
++ if (!pcu->data_intf)
++ return -EINVAL;
+
+ alt = pcu->data_intf->cur_altsetting;
+ if (alt->desc.bNumEndpoints != 2) {
+--
+2.5.0
+
diff --git a/intel_pstate-Do-not-call-wrmsrl_on_cpu-with-disabled.patch b/intel_pstate-Do-not-call-wrmsrl_on_cpu-with-disabled.patch
new file mode 100644
index 000000000..9f3c55d89
--- /dev/null
+++ b/intel_pstate-Do-not-call-wrmsrl_on_cpu-with-disabled.patch
@@ -0,0 +1,241 @@
+From c517e903c4dbc9271b3cfb43b27d303dd6f03cd7 Mon Sep 17 00:00:00 2001
+From: "Rafael J. Wysocki" <rafael.j.wysocki@intel.com>
+Date: Fri, 18 Mar 2016 15:36:25 +0100
+Subject: [PATCH] intel_pstate: Do not call wrmsrl_on_cpu() with disabled
+ interrupts
+
+After commit a4675fbc4a7a (cpufreq: intel_pstate: Replace timers with
+utilization update callbacks) wrmsrl_on_cpu() cannot be called in the
+intel_pstate_adjust_busy_pstate() path as that is executed with
+disabled interrupts. However, atom_set_pstate() called from there
+via intel_pstate_set_pstate() uses wrmsrl_on_cpu() to update the
+IA32_PERF_CTL MSR which triggers the WARN_ON_ONCE() in
+smp_call_function_single().
+
+The reason why wrmsrl_on_cpu() is used by atom_set_pstate() is
+because intel_pstate_set_pstate() calling it is also invoked during
+the initialization and cleanup of the driver and in those cases it is
+not guaranteed to be run on the CPU that is being updated. However,
+in the case when intel_pstate_set_pstate() is called by
+intel_pstate_adjust_busy_pstate(), wrmsrl() can be used to update
+the register safely. Moreover, intel_pstate_set_pstate() already
+contains code that only is executed if the function is called by
+intel_pstate_adjust_busy_pstate() and there is a special argument
+passed to it because of that.
+
+To fix the problem at hand, rearrange the code taking the above
+observations into account.
+
+First, replace the ->set() callback in struct pstate_funcs with a
+->get_val() one that will return the value to be written to the
+IA32_PERF_CTL MSR without updating the register.
+
+Second, split intel_pstate_set_pstate() into two functions,
+intel_pstate_update_pstate() to be called by
+intel_pstate_adjust_busy_pstate() that will contain all of the
+intel_pstate_set_pstate() code which only needs to be executed in
+that case and will use wrmsrl() to update the MSR (after obtaining
+the value to write to it from the ->get_val() callback), and
+intel_pstate_set_min_pstate() to be invoked during the
+initialization and cleanup that will set the P-state to the
+minimum one and will update the MSR using wrmsrl_on_cpu().
+
+Finally, move the code shared between intel_pstate_update_pstate()
+and intel_pstate_set_min_pstate() to a new static inline function
+intel_pstate_record_pstate() and make them both call it.
+
+Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
+Fixes: a4675fbc4a7a (cpufreq: intel_pstate: Replace timers with utilization update callbacks)
+---
+ drivers/cpufreq/intel_pstate.c | 73 +++++++++++++++++++++++++-----------------
+ 1 file changed, 43 insertions(+), 30 deletions(-)
+
+diff --git a/drivers/cpufreq/intel_pstate.c b/drivers/cpufreq/intel_pstate.c
+index cb5607495816..4b644526fd59 100644
+--- a/drivers/cpufreq/intel_pstate.c
++++ b/drivers/cpufreq/intel_pstate.c
+@@ -134,7 +134,7 @@ struct pstate_funcs {
+ int (*get_min)(void);
+ int (*get_turbo)(void);
+ int (*get_scaling)(void);
+- void (*set)(struct cpudata*, int pstate);
++ u64 (*get_val)(struct cpudata*, int pstate);
+ void (*get_vid)(struct cpudata *);
+ int32_t (*get_target_pstate)(struct cpudata *);
+ };
+@@ -565,7 +565,7 @@ static int atom_get_turbo_pstate(void)
+ return value & 0x7F;
+ }
+
+-static void atom_set_pstate(struct cpudata *cpudata, int pstate)
++static u64 atom_get_val(struct cpudata *cpudata, int pstate)
+ {
+ u64 val;
+ int32_t vid_fp;
+@@ -585,9 +585,7 @@ static void atom_set_pstate(struct cpudata *cpudata, int pstate)
+ if (pstate > cpudata->pstate.max_pstate)
+ vid = cpudata->vid.turbo;
+
+- val |= vid;
+-
+- wrmsrl_on_cpu(cpudata->cpu, MSR_IA32_PERF_CTL, val);
++ return val | vid;
+ }
+
+ static int silvermont_get_scaling(void)
+@@ -711,7 +709,7 @@ static inline int core_get_scaling(void)
+ return 100000;
+ }
+
+-static void core_set_pstate(struct cpudata *cpudata, int pstate)
++static u64 core_get_val(struct cpudata *cpudata, int pstate)
+ {
+ u64 val;
+
+@@ -719,7 +717,7 @@ static void core_set_pstate(struct cpudata *cpudata, int pstate)
+ if (limits->no_turbo && !limits->turbo_disabled)
+ val |= (u64)1 << 32;
+
+- wrmsrl(MSR_IA32_PERF_CTL, val);
++ return val;
+ }
+
+ static int knl_get_turbo_pstate(void)
+@@ -750,7 +748,7 @@ static struct cpu_defaults core_params = {
+ .get_min = core_get_min_pstate,
+ .get_turbo = core_get_turbo_pstate,
+ .get_scaling = core_get_scaling,
+- .set = core_set_pstate,
++ .get_val = core_get_val,
+ .get_target_pstate = get_target_pstate_use_performance,
+ },
+ };
+@@ -769,7 +767,7 @@ static struct cpu_defaults silvermont_params = {
+ .get_max_physical = atom_get_max_pstate,
+ .get_min = atom_get_min_pstate,
+ .get_turbo = atom_get_turbo_pstate,
+- .set = atom_set_pstate,
++ .get_val = atom_get_val,
+ .get_scaling = silvermont_get_scaling,
+ .get_vid = atom_get_vid,
+ .get_target_pstate = get_target_pstate_use_cpu_load,
+@@ -790,7 +788,7 @@ static struct cpu_defaults airmont_params = {
+ .get_max_physical = atom_get_max_pstate,
+ .get_min = atom_get_min_pstate,
+ .get_turbo = atom_get_turbo_pstate,
+- .set = atom_set_pstate,
++ .get_val = atom_get_val,
+ .get_scaling = airmont_get_scaling,
+ .get_vid = atom_get_vid,
+ .get_target_pstate = get_target_pstate_use_cpu_load,
+@@ -812,7 +810,7 @@ static struct cpu_defaults knl_params = {
+ .get_min = core_get_min_pstate,
+ .get_turbo = knl_get_turbo_pstate,
+ .get_scaling = core_get_scaling,
+- .set = core_set_pstate,
++ .get_val = core_get_val,
+ .get_target_pstate = get_target_pstate_use_performance,
+ },
+ };
+@@ -839,25 +837,24 @@ static void intel_pstate_get_min_max(struct cpudata *cpu, int *min, int *max)
+ *min = clamp_t(int, min_perf, cpu->pstate.min_pstate, max_perf);
+ }
+
+-static void intel_pstate_set_pstate(struct cpudata *cpu, int pstate, bool force)
++static inline void intel_pstate_record_pstate(struct cpudata *cpu, int pstate)
+ {
+- int max_perf, min_perf;
+-
+- if (force) {
+- update_turbo_state();
+-
+- intel_pstate_get_min_max(cpu, &min_perf, &max_perf);
+-
+- pstate = clamp_t(int, pstate, min_perf, max_perf);
+-
+- if (pstate == cpu->pstate.current_pstate)
+- return;
+- }
+ trace_cpu_frequency(pstate * cpu->pstate.scaling, cpu->cpu);
+-
+ cpu->pstate.current_pstate = pstate;
++}
+
+- pstate_funcs.set(cpu, pstate);
++static void intel_pstate_set_min_pstate(struct cpudata *cpu)
++{
++ int pstate = cpu->pstate.min_pstate;
++
++ intel_pstate_record_pstate(cpu, pstate);
++ /*
++ * Generally, there is no guarantee that this code will always run on
++ * the CPU being updated, so force the register update to run on the
++ * right CPU.
++ */
++ wrmsrl_on_cpu(cpu->cpu, MSR_IA32_PERF_CTL,
++ pstate_funcs.get_val(cpu, pstate));
+ }
+
+ static void intel_pstate_get_cpu_pstates(struct cpudata *cpu)
+@@ -870,7 +867,8 @@ static void intel_pstate_get_cpu_pstates(struct cpudata *cpu)
+
+ if (pstate_funcs.get_vid)
+ pstate_funcs.get_vid(cpu);
+- intel_pstate_set_pstate(cpu, cpu->pstate.min_pstate, false);
++
++ intel_pstate_set_min_pstate(cpu);
+ }
+
+ static inline void intel_pstate_calc_busy(struct cpudata *cpu)
+@@ -997,6 +995,21 @@ static inline int32_t get_target_pstate_use_performance(struct cpudata *cpu)
+ return cpu->pstate.current_pstate - pid_calc(&cpu->pid, core_busy);
+ }
+
++static inline void intel_pstate_update_pstate(struct cpudata *cpu, int pstate)
++{
++ int max_perf, min_perf;
++
++ update_turbo_state();
++
++ intel_pstate_get_min_max(cpu, &min_perf, &max_perf);
++ pstate = clamp_t(int, pstate, min_perf, max_perf);
++ if (pstate == cpu->pstate.current_pstate)
++ return;
++
++ intel_pstate_record_pstate(cpu, pstate);
++ wrmsrl(MSR_IA32_PERF_CTL, pstate_funcs.get_val(cpu, pstate));
++}
++
+ static inline void intel_pstate_adjust_busy_pstate(struct cpudata *cpu)
+ {
+ int from, target_pstate;
+@@ -1006,7 +1019,7 @@ static inline void intel_pstate_adjust_busy_pstate(struct cpudata *cpu)
+
+ target_pstate = pstate_funcs.get_target_pstate(cpu);
+
+- intel_pstate_set_pstate(cpu, target_pstate, true);
++ intel_pstate_update_pstate(cpu, target_pstate);
+
+ sample = &cpu->sample;
+ trace_pstate_sample(fp_toint(sample->core_pct_busy),
+@@ -1180,7 +1193,7 @@ static void intel_pstate_stop_cpu(struct cpufreq_policy *policy)
+ if (hwp_active)
+ return;
+
+- intel_pstate_set_pstate(cpu, cpu->pstate.min_pstate, false);
++ intel_pstate_set_min_pstate(cpu);
+ }
+
+ static int intel_pstate_cpu_init(struct cpufreq_policy *policy)
+@@ -1255,7 +1268,7 @@ static void copy_cpu_funcs(struct pstate_funcs *funcs)
+ pstate_funcs.get_min = funcs->get_min;
+ pstate_funcs.get_turbo = funcs->get_turbo;
+ pstate_funcs.get_scaling = funcs->get_scaling;
+- pstate_funcs.set = funcs->set;
++ pstate_funcs.get_val = funcs->get_val;
+ pstate_funcs.get_vid = funcs->get_vid;
+ pstate_funcs.get_target_pstate = funcs->get_target_pstate;
+
+--
+2.5.0
+
diff --git a/ipv4-Dont-do-expensive-useless-work-during-inetdev-des.patch b/ipv4-Dont-do-expensive-useless-work-during-inetdev-des.patch
deleted file mode 100644
index 48e4762e3..000000000
--- a/ipv4-Dont-do-expensive-useless-work-during-inetdev-des.patch
+++ /dev/null
@@ -1,97 +0,0 @@
-From fbd40ea0180a2d328c5adc61414dc8bab9335ce2 Mon Sep 17 00:00:00 2001
-From: "David S. Miller" <davem@davemloft.net>
-Date: Sun, 13 Mar 2016 23:28:00 -0400
-Subject: ipv4: Don't do expensive useless work during inetdev destroy.
-
-When an inetdev is destroyed, every address assigned to the interface
-is removed. And in this scenerio we do two pointless things which can
-be very expensive if the number of assigned interfaces is large:
-
-1) Address promotion. We are deleting all addresses, so there is no
- point in doing this.
-
-2) A full nf conntrack table purge for every address. We only need to
- do this once, as is already caught by the existing
- masq_dev_notifier so masq_inet_event() can skip this.
-
-Reported-by: Solar Designer <solar@openwall.com>
-Signed-off-by: David S. Miller <davem@davemloft.net>
-Tested-by: Cyrill Gorcunov <gorcunov@openvz.org>
----
- net/ipv4/devinet.c | 4 ++++
- net/ipv4/fib_frontend.c | 4 ++++
- net/ipv4/netfilter/nf_nat_masquerade_ipv4.c | 12 ++++++++++--
- 3 files changed, 18 insertions(+), 2 deletions(-)
-
-diff --git a/net/ipv4/devinet.c b/net/ipv4/devinet.c
-index 65e76a4..e333bc8 100644
---- a/net/ipv4/devinet.c
-+++ b/net/ipv4/devinet.c
-@@ -334,6 +334,9 @@ static void __inet_del_ifa(struct in_device *in_dev, struct in_ifaddr **ifap,
-
- ASSERT_RTNL();
-
-+ if (in_dev->dead)
-+ goto no_promotions;
-+
- /* 1. Deleting primary ifaddr forces deletion all secondaries
- * unless alias promotion is set
- **/
-@@ -380,6 +383,7 @@ static void __inet_del_ifa(struct in_device *in_dev, struct in_ifaddr **ifap,
- fib_del_ifaddr(ifa, ifa1);
- }
-
-+no_promotions:
- /* 2. Unlink it */
-
- *ifap = ifa1->ifa_next;
-diff --git a/net/ipv4/fib_frontend.c b/net/ipv4/fib_frontend.c
-index 4734475..21add55 100644
---- a/net/ipv4/fib_frontend.c
-+++ b/net/ipv4/fib_frontend.c
-@@ -922,6 +922,9 @@ void fib_del_ifaddr(struct in_ifaddr *ifa, struct in_ifaddr *iprim)
- subnet = 1;
- }
-
-+ if (in_dev->dead)
-+ goto no_promotions;
-+
- /* Deletion is more complicated than add.
- * We should take care of not to delete too much :-)
- *
-@@ -997,6 +1000,7 @@ void fib_del_ifaddr(struct in_ifaddr *ifa, struct in_ifaddr *iprim)
- }
- }
-
-+no_promotions:
- if (!(ok & BRD_OK))
- fib_magic(RTM_DELROUTE, RTN_BROADCAST, ifa->ifa_broadcast, 32, prim);
- if (subnet && ifa->ifa_prefixlen < 31) {
-diff --git a/net/ipv4/netfilter/nf_nat_masquerade_ipv4.c b/net/ipv4/netfilter/nf_nat_masquerade_ipv4.c
-index c6eb421..ea91058 100644
---- a/net/ipv4/netfilter/nf_nat_masquerade_ipv4.c
-+++ b/net/ipv4/netfilter/nf_nat_masquerade_ipv4.c
-@@ -108,10 +108,18 @@ static int masq_inet_event(struct notifier_block *this,
- unsigned long event,
- void *ptr)
- {
-- struct net_device *dev = ((struct in_ifaddr *)ptr)->ifa_dev->dev;
-+ struct in_device *idev = ((struct in_ifaddr *)ptr)->ifa_dev;
- struct netdev_notifier_info info;
-
-- netdev_notifier_info_init(&info, dev);
-+ /* The masq_dev_notifier will catch the case of the device going
-+ * down. So if the inetdev is dead and being destroyed we have
-+ * no work to do. Otherwise this is an individual address removal
-+ * and we have to perform the flush.
-+ */
-+ if (idev->dead)
-+ return NOTIFY_DONE;
-+
-+ netdev_notifier_info_init(&info, idev->dev);
- return masq_device_event(this, event, &info);
- }
-
---
-cgit v0.12
-
diff --git a/kernel.spec b/kernel.spec
index 2afe9ad81..45adbeb71 100644
--- a/kernel.spec
+++ b/kernel.spec
@@ -77,7 +77,7 @@ Summary: The Linux kernel
# The rc snapshot level
%define rcrev 0
# The git snapshot level
-%define gitrev 5
+%define gitrev 13
# Set rpm version accordingly
%define rpmversion 4.%{upstream_sublevel}.0
%endif
@@ -360,7 +360,7 @@ Summary: The Linux kernel
# Packages that need to be installed before the kernel is, because the %%post
# scripts use them.
#
-%define kernel_prereq fileutils, systemd >= 203-2
+%define kernel_prereq coreutils, systemd >= 203-2
%define initrd_prereq dracut >= 027
@@ -516,7 +516,11 @@ Source5005: kbuild-AFTER_LINK.patch
Patch451: lib-cpumask-Make-CPUMASK_OFFSTACK-usable-without-deb.patch
-Patch454: arm64-avoid-needing-console-to-enable-serial-console.patch
+Patch452: arm64-avoid-needing-console-to-enable-serial-console.patch
+
+# http://www.spinics.net/lists/netdev/msg369442.html
+#atch453 revert-stmmac-Fix-eth0-No-PHY-found-regression.patch
+#atch454 stmmac-fix-MDIO-settings.patch
Patch456: arm64-acpi-drop-expert-patch.patch
@@ -525,8 +529,8 @@ Patch457: ARM-tegra-usb-no-reset.patch
Patch458: ARM-mvebu-change-order-of-ethernet-DT-nodes-on-Armada-38x.patch
-# http://www.spinics.net/lists/arm-kernel/msg480703.html
-Patch459: Geekbox-device-tree-support.patch
+# http://www.spinics.net/lists/arm-kernel/msg490981.html
+Patch459: geekbox-v4-device-tree-support.patch
# http://www.spinics.net/lists/arm-kernel/msg483898.html
Patch460: Initial-AllWinner-A64-and-PINE64-support.patch
@@ -621,23 +625,28 @@ Patch621: drm-udl-Use-unlocked-gem-unreferencing.patch
#Required for some persistent memory options
Patch641: disable-CONFIG_EXPERT-for-ZONE_DMA.patch
-#rhbz 1255325
-Patch646: HID-sony-do-not-bail-out-when-the-sixaxis-refuses-th.patch
-
-#rhbz 1309658
-Patch648: 0001-mm-CONFIG_NR_ZONES_EXTENDED.patch
-
#rhbz 1316136
Patch663: USB-serial-ftdi_sio-Add-support-for-ICP-DAS-I-756xU-.patch
-#CVE-2016-3135 rhbz 1317386 1317387
-Patch664: netfilter-x_tables-check-for-size-overflow.patch
-
#CVE-2016-3134 rhbz 1317383 1317384
Patch665: netfilter-x_tables-deal-with-bogus-nextoffset-values.patch
-#CVE-2016-3135 rhbz 1318172 1318270
-Patch666: ipv4-Dont-do-expensive-useless-work-during-inetdev-des.patch
+Patch667: intel_pstate-Do-not-call-wrmsrl_on_cpu-with-disabled.patch
+
+#rhbz 1318596
+Patch668: x86-tsc-Prevent-NULL-pointer-deref-in-calibrate_dela.patch
+
+#CVE-2016-3137 rhbz 1317010 1316996
+Patch672: cypress_m8-add-sanity-checking.patch
+
+#CVE-2016-3140 rhbz 1317010 1316995
+Patch677: digi_acceleport-do-sanity-checking-for-the-number-of.patch
+
+Patch678: ims-pcu-sanity-check-against-missing-interfaces.patch
+
+Patch680: ALSA-hda-Really-restrict-i915-notifier-to-HSW.patch
+Patch681: ALSA-hda-Fix-forgotten-HDMI-monitor_present-update.patch
+Patch682: ALSA-hda-Fix-spurious-kernel-WARNING-on-Baytrail-HDM.patch
# END OF PATCH DEFINITIONS
@@ -852,7 +861,8 @@ Provides: kernel-devel = %{version}-%{release}%{?1:+%{1}}\
Provides: kernel-devel-uname-r = %{KVERREL}%{?variant}%{?1:+%{1}}\
Provides: installonlypkg(kernel)\
AutoReqProv: no\
-Requires(pre): /usr/bin/find\
+Requires(pre): findutils\
+Requires: findutils\
Requires: perl\
%description %{?1:%{1}-}devel\
This package provides kernel headers and makefiles sufficient to build modules\
@@ -2163,6 +2173,64 @@ fi
#
#
%changelog
+* Sat Mar 19 2016 Josh Boyer <jwboyer@fedoraproject.org> - 4.6.0-0.rc0.git13.1
+- Linux v4.5-8194-g1200b6809dfd
+- net merge
+
+* Sat Mar 19 2016 Josh Boyer <jwboyer@fedoraproject.org> - 4.6.0-0.rc0.git12.1
+- Linux v4.5-6486-g6b5f04b6cf8e
+- cgroup, libata, workqueue, block, akpm, usb merges
+
+* Sat Mar 19 2016 Peter Robinson <pbrobinson@fedoraproject.org>
+- Minor ARM cleanups
+- Drop ARM_PATCH_IDIV work around
+- Update geekbox patch to v4
+- Upstream fix for stmmac driver regressions (AllWinner Gb NICs)
+
+* Fri Mar 18 2016 Josh Boyer <jwboyer@fedoraproject.org> - 4.6.0-0.rc0.git11.1
+- Linux v4.5-6229-gf7813ad5cbfd
+- ipmi, mfd, sound merges
+
+* Fri Mar 18 2016 Josh Boyer <jwboyer@fedoraproject.org>
+- Change requires to updated package names and correctly Requires findutils
+ in -devel package (rhbz 1319131)
+
+* Fri Mar 18 2016 Josh Boyer <jwboyer@fedoraproject.org> - 4.6.0-0.rc0.git10.1
+- Linux v4.5-5842-g9ea446352047
+- staging, rdma merges
+
+* Fri Mar 18 2016 Josh Boyer <jwboyer@fedoraproject.org> - 4.6.0-0.rc0.git9.1
+- Linux v4.5-4071-g10fdfee7f7fd
+- input, livepatching, trivial, hid, gpio, m68knommu, arm64, selftest merges
+
+* Fri Mar 18 2016 Josh Boyer <jwboyer@fedoraproject.org>
+- ims-pcu: sanity checking on missing interfaces
+- CVE-2016-3140 digi_acceleport: oops on invalid USB descriptors (rhbz 1317010 1316995)
+- CVE-2016-3138 cdc_acm: oops on invalid USB descriptors (rhbz 1317010 1316204)
+- CVE-2016-2185 ati_remote2: oops on invalid USB descriptors (rhbz 1317014 1317471)
+- CVE-2016-2188 iowarrior: oops on invalid USB descriptors (rhbz 1317018 1317467)
+- CVE-2016-2186 powermate: oops on invalid USB descriptors (rhbz 1317015 1317464)
+- CVE-2016-3137 cypress_m8: oops on invalid USB descriptors (rhbz 1317010 1316996)
+- CVE-2016-2184 alsa: panic on invalid USB descriptors (rhbz 1317012 1317470)
+
+* Fri Mar 18 2016 Josh Boyer <jwboyer@fedoraproject.org> - 4.6.0-0.rc0.git8.1
+- Linux v4.5-3654-g5cd0911a9e0e
+- Fix oops from tsc subsystem (rhbz 1318596)
+- crypto, security, docs, rproc, dmaengine, powersupply, hsi, vfio, driver-core,
+ tty, char, usb, configfs, ext4, dlm, gfs2, pstore merges
+
+* Thu Mar 17 2016 Josh Boyer <jwboyer@fedoraproject.org>
+- Add temporary patch to fix intel_pstate oops and lockdep report on
+ various atom based CPUs.
+
+* Thu Mar 17 2016 Josh Boyer <jwboyer@fedoraproject.org> - 4.6.0-0.rc0.git7.1
+- Linux v4.5-2535-g09fd671ccb24
+- fbdev, media, libnvdimm, dm, scsi, ibft merges
+
+* Thu Mar 17 2016 Josh Boyer <jwboyer@fedoraproject.org> - 4.6.0-0.rc0.git6.1
+- Linux v4.5-1822-g63e30271b04c
+- PCI, PM+ACPI merges
+
* Wed Mar 16 2016 Josh Boyer <jwboyer@fedoraproject.org> - 4.6.0-0.rc0.git5.1
- Linux v4.5-1523-g271ecc5253e2
- akpm patches (mm subsystem, various)
diff --git a/netfilter-x_tables-check-for-size-overflow.patch b/netfilter-x_tables-check-for-size-overflow.patch
deleted file mode 100644
index 81e3d36fa..000000000
--- a/netfilter-x_tables-check-for-size-overflow.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-Subject: [PATCH nf] netfilter: x_tables: check for size overflow
-From: Florian Westphal <fw () strlen ! de>
-Date: 2016-03-10 0:56:23
-
-Ben Hawkes says:
- integer overflow in xt_alloc_table_info, which on 32-bit systems can
- lead to small structure allocation and a copy_from_user based heap
- corruption.
-
-Reported-by: Ben Hawkes <hawkes@google.com>
-Signed-off-by: Florian Westphal <fw@strlen.de>
----
- net/netfilter/x_tables.c | 3 +++
- 1 file changed, 3 insertions(+)
-
-diff --git a/net/netfilter/x_tables.c b/net/netfilter/x_tables.c
-index c8a0b7d..17a9a9f 100644
---- a/net/netfilter/x_tables.c
-+++ b/net/netfilter/x_tables.c
-@@ -659,6 +659,9 @@ struct xt_table_info *xt_alloc_table_info(unsigned int size)
- struct xt_table_info *info = NULL;
- size_t sz = sizeof(*info) + size;
-
-+ if (sz < sizeof(*info))
-+ return NULL;
-+
- /* Pedantry: prevent them from hitting BUG() in vmalloc.c --RR */
- if ((SMP_ALIGN(size) >> PAGE_SHIFT) + 2 > totalram_pages)
- return NULL;
---
-2.4.10
diff --git a/revert-stmmac-Fix-eth0-No-PHY-found-regression.patch b/revert-stmmac-Fix-eth0-No-PHY-found-regression.patch
new file mode 100644
index 000000000..68b9cd3ab
--- /dev/null
+++ b/revert-stmmac-Fix-eth0-No-PHY-found-regression.patch
@@ -0,0 +1,87 @@
+From 44f947bb8ef5f4add9f2d84e1ff53afd8f2f5537 Mon Sep 17 00:00:00 2001
+From: Peter Robinson <pbrobinson@gmail.com>
+Date: Wed, 16 Mar 2016 15:21:44 +0000
+Subject: [PATCH 1/2] Revert "stmmac: Fix 'eth0: No PHY found' regression"
+
+This reverts commit 88f8b1bb41c6208f81b6a480244533ded7b59493.
+---
+ drivers/net/ethernet/stmicro/stmmac/stmmac_mdio.c | 11 ++++++++++-
+ drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c | 9 +--------
+ include/linux/stmmac.h | 1 -
+ 3 files changed, 11 insertions(+), 10 deletions(-)
+
+diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_mdio.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_mdio.c
+index efb54f3..0faf163 100644
+--- a/drivers/net/ethernet/stmicro/stmmac/stmmac_mdio.c
++++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_mdio.c
+@@ -199,12 +199,21 @@ int stmmac_mdio_register(struct net_device *ndev)
+ struct stmmac_priv *priv = netdev_priv(ndev);
+ struct stmmac_mdio_bus_data *mdio_bus_data = priv->plat->mdio_bus_data;
+ int addr, found;
+- struct device_node *mdio_node = priv->plat->mdio_node;
++ struct device_node *mdio_node = NULL;
++ struct device_node *child_node = NULL;
+
+ if (!mdio_bus_data)
+ return 0;
+
+ if (IS_ENABLED(CONFIG_OF)) {
++ for_each_child_of_node(priv->device->of_node, child_node) {
++ if (of_device_is_compatible(child_node,
++ "snps,dwmac-mdio")) {
++ mdio_node = child_node;
++ break;
++ }
++ }
++
+ if (mdio_node) {
+ netdev_dbg(ndev, "FOUND MDIO subnode\n");
+ } else {
+diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c
+index 4514ba7..6a52fa1 100644
+--- a/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c
++++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c
+@@ -110,7 +110,6 @@ stmmac_probe_config_dt(struct platform_device *pdev, const char **mac)
+ struct device_node *np = pdev->dev.of_node;
+ struct plat_stmmacenet_data *plat;
+ struct stmmac_dma_cfg *dma_cfg;
+- struct device_node *child_node = NULL;
+
+ plat = devm_kzalloc(&pdev->dev, sizeof(*plat), GFP_KERNEL);
+ if (!plat)
+@@ -141,19 +140,13 @@ stmmac_probe_config_dt(struct platform_device *pdev, const char **mac)
+ plat->phy_node = of_node_get(np);
+ }
+
+- for_each_child_of_node(np, child_node)
+- if (of_device_is_compatible(child_node, "snps,dwmac-mdio")) {
+- plat->mdio_node = child_node;
+- break;
+- }
+-
+ /* "snps,phy-addr" is not a standard property. Mark it as deprecated
+ * and warn of its use. Remove this when phy node support is added.
+ */
+ if (of_property_read_u32(np, "snps,phy-addr", &plat->phy_addr) == 0)
+ dev_warn(&pdev->dev, "snps,phy-addr property is deprecated\n");
+
+- if ((plat->phy_node && !of_phy_is_fixed_link(np)) || !plat->mdio_node)
++ if ((plat->phy_node && !of_phy_is_fixed_link(np)) || plat->phy_bus_name)
+ plat->mdio_bus_data = NULL;
+ else
+ plat->mdio_bus_data =
+diff --git a/include/linux/stmmac.h b/include/linux/stmmac.h
+index 881a79d..eead8ab 100644
+--- a/include/linux/stmmac.h
++++ b/include/linux/stmmac.h
+@@ -100,7 +100,6 @@ struct plat_stmmacenet_data {
+ int interface;
+ struct stmmac_mdio_bus_data *mdio_bus_data;
+ struct device_node *phy_node;
+- struct device_node *mdio_node;
+ struct stmmac_dma_cfg *dma_cfg;
+ int clk_csr;
+ int has_gmac;
+--
+2.5.0
+
diff --git a/sources b/sources
index b7ab1994d..531f42a4d 100644
--- a/sources
+++ b/sources
@@ -1,3 +1,3 @@
a60d48eee08ec0536d5efb17ca819aef linux-4.5.tar.xz
6f557fe90b800b615c85c2ca04da6154 perf-man-4.5.tar.gz
-b74ca47c2149d5a8cb7bdeeb47c7d7c1 patch-4.5-git5.xz
+88332b6b2ce510b016beecb992c60fb4 patch-4.5-git13.xz
diff --git a/stmmac-fix-MDIO-settings.patch b/stmmac-fix-MDIO-settings.patch
new file mode 100644
index 000000000..41fa928a4
--- /dev/null
+++ b/stmmac-fix-MDIO-settings.patch
@@ -0,0 +1,235 @@
+From d55a02f460ffd64a5ba7f331489af87edeebf8da Mon Sep 17 00:00:00 2001
+From: Giuseppe CAVALLARO <peppe.cavallaro@st.com>
+Date: Wed, 16 Mar 2016 10:38:49 +0100
+Subject: [PATCH 2/2] stmmac: fix MDIO settings
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Initially the phy_bus_name was added to manipulate the
+driver name but it was recently just used to manage the
+fixed-link and then to take some decision at run-time.
+So the patch uses the is_pseudo_fixed_link and removes
+the phy_bus_name variable not necessary anymore.
+
+The driver can manage the mdio registration by using phy-handle,
+dwmac-mdio and own parameter e.g. snps,phy-addr.
+This patch takes care about all these possible configurations
+and fixes the mdio registration in case of there is a real
+transceiver or a switch (that needs to be managed by using
+fixed-link).
+
+Signed-off-by: Giuseppe Cavallaro <peppe.cavallaro@st.com>
+Reviewed-by: Andreas Färber <afaerber@suse.de>
+Tested-by: Frank Schäfer <fschaefer.oss@googlemail.com>
+Cc: Gabriel Fernandez <gabriel.fernandez@linaro.org>
+Cc: Dinh Nguyen <dinh.linux@gmail.com>
+Cc: David S. Miller <davem@davemloft.net>
+Cc: Phil Reid <preid@electromag.com.au>
+---
+ drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 11 +--
+ drivers/net/ethernet/stmicro/stmmac/stmmac_mdio.c | 19 +----
+ .../net/ethernet/stmicro/stmmac/stmmac_platform.c | 84 +++++++++++++++++-----
+ include/linux/stmmac.h | 2 +-
+ 4 files changed, 71 insertions(+), 45 deletions(-)
+
+diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
+index c21015b..389d7d0 100644
+--- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
++++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
+@@ -271,7 +271,6 @@ static void stmmac_eee_ctrl_timer(unsigned long arg)
+ */
+ bool stmmac_eee_init(struct stmmac_priv *priv)
+ {
+- char *phy_bus_name = priv->plat->phy_bus_name;
+ unsigned long flags;
+ bool ret = false;
+
+@@ -283,7 +282,7 @@ bool stmmac_eee_init(struct stmmac_priv *priv)
+ goto out;
+
+ /* Never init EEE in case of a switch is attached */
+- if (phy_bus_name && (!strcmp(phy_bus_name, "fixed")))
++ if (priv->phydev->is_pseudo_fixed_link)
+ goto out;
+
+ /* MAC core supports the EEE feature. */
+@@ -820,12 +819,8 @@ static int stmmac_init_phy(struct net_device *dev)
+ phydev = of_phy_connect(dev, priv->plat->phy_node,
+ &stmmac_adjust_link, 0, interface);
+ } else {
+- if (priv->plat->phy_bus_name)
+- snprintf(bus_id, MII_BUS_ID_SIZE, "%s-%x",
+- priv->plat->phy_bus_name, priv->plat->bus_id);
+- else
+- snprintf(bus_id, MII_BUS_ID_SIZE, "stmmac-%x",
+- priv->plat->bus_id);
++ snprintf(bus_id, MII_BUS_ID_SIZE, "stmmac-%x",
++ priv->plat->bus_id);
+
+ snprintf(phy_id_fmt, MII_BUS_ID_SIZE + 3, PHY_ID_FMT, bus_id,
+ priv->plat->phy_addr);
+diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_mdio.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_mdio.c
+index 0faf163..3f5512f 100644
+--- a/drivers/net/ethernet/stmicro/stmmac/stmmac_mdio.c
++++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_mdio.c
+@@ -198,29 +198,12 @@ int stmmac_mdio_register(struct net_device *ndev)
+ struct mii_bus *new_bus;
+ struct stmmac_priv *priv = netdev_priv(ndev);
+ struct stmmac_mdio_bus_data *mdio_bus_data = priv->plat->mdio_bus_data;
++ struct device_node *mdio_node = priv->plat->mdio_node;
+ int addr, found;
+- struct device_node *mdio_node = NULL;
+- struct device_node *child_node = NULL;
+
+ if (!mdio_bus_data)
+ return 0;
+
+- if (IS_ENABLED(CONFIG_OF)) {
+- for_each_child_of_node(priv->device->of_node, child_node) {
+- if (of_device_is_compatible(child_node,
+- "snps,dwmac-mdio")) {
+- mdio_node = child_node;
+- break;
+- }
+- }
+-
+- if (mdio_node) {
+- netdev_dbg(ndev, "FOUND MDIO subnode\n");
+- } else {
+- netdev_warn(ndev, "No MDIO subnode found\n");
+- }
+- }
+-
+ new_bus = mdiobus_alloc();
+ if (new_bus == NULL)
+ return -ENOMEM;
+diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c
+index 6a52fa1..190fb6d 100644
+--- a/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c
++++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c
+@@ -96,6 +96,69 @@ static int dwmac1000_validate_ucast_entries(int ucast_entries)
+ }
+
+ /**
++ * stmmac_dt_phy - parse device-tree driver parameters to allocate PHY resources
++ * @plat: driver data platform structure
++ * @np: device tree node
++ * @dev: device pointer
++ * Description:
++ * The mdio bus will be allocated in case of a phy transceiver is on board;
++ * it will be NULL if the fixed-link is configured.
++ * If there is the "snps,dwmac-mdio" sub-node the mdio will be allocated
++ * in any case (for DSA, mdio must be registered even if fixed-link).
++ * The table below sums the supported configurations:
++ * -------------------------------
++ * snps,phy-addr | Y
++ * -------------------------------
++ * phy-handle | Y
++ * -------------------------------
++ * fixed-link | N
++ * -------------------------------
++ * snps,dwmac-mdio |
++ * even if | Y
++ * fixed-link |
++ * -------------------------------
++ *
++ * It returns 0 in case of success otherwise -ENODEV.
++ */
++static int stmmac_dt_phy(struct plat_stmmacenet_data *plat,
++ struct device_node *np, struct device *dev)
++{
++ bool mdio = true;
++
++ /* If phy-handle property is passed from DT, use it as the PHY */
++ plat->phy_node = of_parse_phandle(np, "phy-handle", 0);
++ if (plat->phy_node)
++ dev_dbg(dev, "Found phy-handle subnode\n");
++
++ /* If phy-handle is not specified, check if we have a fixed-phy */
++ if (!plat->phy_node && of_phy_is_fixed_link(np)) {
++ if ((of_phy_register_fixed_link(np) < 0))
++ return -ENODEV;
++
++ dev_dbg(dev, "Found fixed-link subnode\n");
++ plat->phy_node = of_node_get(np);
++ mdio = false;
++ }
++
++ /* If snps,dwmac-mdio is passed from DT, always register the MDIO */
++ for_each_child_of_node(np, plat->mdio_node) {
++ if (of_device_is_compatible(plat->mdio_node, "snps,dwmac-mdio"))
++ break;
++ }
++
++ if (plat->mdio_node) {
++ dev_dbg(dev, "Found MDIO subnode\n");
++ mdio = true;
++ }
++
++ if (mdio)
++ plat->mdio_bus_data =
++ devm_kzalloc(dev, sizeof(struct stmmac_mdio_bus_data),
++ GFP_KERNEL);
++ return 0;
++}
++
++/**
+ * stmmac_probe_config_dt - parse device-tree driver parameters
+ * @pdev: platform_device structure
+ * @plat: driver data platform structure
+@@ -129,30 +192,15 @@ stmmac_probe_config_dt(struct platform_device *pdev, const char **mac)
+ /* Default to phy auto-detection */
+ plat->phy_addr = -1;
+
+- /* If we find a phy-handle property, use it as the PHY */
+- plat->phy_node = of_parse_phandle(np, "phy-handle", 0);
+-
+- /* If phy-handle is not specified, check if we have a fixed-phy */
+- if (!plat->phy_node && of_phy_is_fixed_link(np)) {
+- if ((of_phy_register_fixed_link(np) < 0))
+- return ERR_PTR(-ENODEV);
+-
+- plat->phy_node = of_node_get(np);
+- }
+-
+ /* "snps,phy-addr" is not a standard property. Mark it as deprecated
+ * and warn of its use. Remove this when phy node support is added.
+ */
+ if (of_property_read_u32(np, "snps,phy-addr", &plat->phy_addr) == 0)
+ dev_warn(&pdev->dev, "snps,phy-addr property is deprecated\n");
+
+- if ((plat->phy_node && !of_phy_is_fixed_link(np)) || plat->phy_bus_name)
+- plat->mdio_bus_data = NULL;
+- else
+- plat->mdio_bus_data =
+- devm_kzalloc(&pdev->dev,
+- sizeof(struct stmmac_mdio_bus_data),
+- GFP_KERNEL);
++ /* To Configure PHY by using all device-tree supported properties */
++ if (stmmac_dt_phy(plat, np, &pdev->dev))
++ return ERR_PTR(-ENODEV);
+
+ of_property_read_u32(np, "tx-fifo-depth", &plat->tx_fifo_size);
+
+diff --git a/include/linux/stmmac.h b/include/linux/stmmac.h
+index eead8ab..8b1ff2b 100644
+--- a/include/linux/stmmac.h
++++ b/include/linux/stmmac.h
+@@ -94,12 +94,12 @@ struct stmmac_dma_cfg {
+ };
+
+ struct plat_stmmacenet_data {
+- char *phy_bus_name;
+ int bus_id;
+ int phy_addr;
+ int interface;
+ struct stmmac_mdio_bus_data *mdio_bus_data;
+ struct device_node *phy_node;
++ struct device_node *mdio_node;
+ struct stmmac_dma_cfg *dma_cfg;
+ int clk_csr;
+ int has_gmac;
+--
+2.5.0
+
diff --git a/x86-tsc-Prevent-NULL-pointer-deref-in-calibrate_dela.patch b/x86-tsc-Prevent-NULL-pointer-deref-in-calibrate_dela.patch
new file mode 100644
index 000000000..fec34743f
--- /dev/null
+++ b/x86-tsc-Prevent-NULL-pointer-deref-in-calibrate_dela.patch
@@ -0,0 +1,47 @@
+From 6b1292e2e61669457398e3b55e46490e7efca5f0 Mon Sep 17 00:00:00 2001
+From: Thomas Gleixner <tglx@linutronix.de>
+Date: Fri, 18 Mar 2016 08:35:29 +0100
+Subject: [PATCH] x86/tsc: Prevent NULL pointer deref in
+ calibrate_delay_is_known()
+
+The topology_core_cpumask is used to find a neighbour cpu in
+calibrate_delay_is_known(). It might not be allocated at the first invocation
+of that function on the boot cpu, when CONFIG_CPUMASK_OFFSTACK is set.
+
+The mask is allocated later in native_smp_prepare_cpus. As a consequence the
+underlying find_next_bit() call dereferences a NULL pointer.
+
+Add a proper check to prevent this.
+
+Reported-by: Richard W.M. Jones <rjones@redhat.com>
+Fixes: c25323c07345 "x86/tsc: Use topology functions"
+Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
+Cc: Josh Boyer <jwboyer@fedoraproject.org>
+---
+ arch/x86/kernel/tsc.c | 6 +++++-
+ 1 file changed, 5 insertions(+), 1 deletion(-)
+
+diff --git a/arch/x86/kernel/tsc.c b/arch/x86/kernel/tsc.c
+index 56380440d862..99b5e0809ead 100644
+--- a/arch/x86/kernel/tsc.c
++++ b/arch/x86/kernel/tsc.c
+@@ -1306,11 +1306,15 @@ void __init tsc_init(void)
+ unsigned long calibrate_delay_is_known(void)
+ {
+ int sibling, cpu = smp_processor_id();
++ struct cpumask *mask = topology_core_cpumask(cpu);
+
+ if (!tsc_disabled && !cpu_has(&cpu_data(cpu), X86_FEATURE_CONSTANT_TSC))
+ return 0;
+
+- sibling = cpumask_any_but(topology_core_cpumask(cpu), cpu);
++ if (!mask)
++ return 0;
++
++ sibling = cpumask_any_but(mask, cpu);
+ if (sibling < nr_cpu_ids)
+ return cpu_data(sibling).loops_per_jiffy;
+ return 0;
+--
+2.5.0
+