Hello community,

here is the log from the commit of package kernel-source for openSUSE:Factory 
checked in at 2015-01-22 21:46:07
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/kernel-source (Old)
 and      /work/SRC/openSUSE:Factory/.kernel-source.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "kernel-source"

Changes:
--------
--- /work/SRC/openSUSE:Factory/kernel-source/kernel-debug.changes       
2014-12-23 11:50:12.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.kernel-source.new/kernel-debug.changes  
2015-01-22 21:46:10.000000000 +0100
@@ -1,0 +2,64 @@
+Mon Jan 19 13:38:51 CET 2015 - [email protected]
+
+- Update patches.kernel.org/patch-3.18.1-2 (CVE-2014-8133
+  bnc#906545 bnc#908163 bsc#909077).
+  Add one more reference.
+- commit c3e148f
+
+-------------------------------------------------------------------
+Sat Jan 17 00:24:44 CET 2015 - [email protected]
+
+- Linux 3.18.3 (bnc#908794).
+- Delete
+  patches.fixes/blk-mq-Fix-uninitialized-kobject-at-CPU-hotplugging.
+- commit 390047f
+
+-------------------------------------------------------------------
+Wed Jan 14 20:16:14 CET 2015 - [email protected]
+
+- Refresh patches.arch/arm64-0039-generic-pci.patch  (fix PCI bridge support)
+- commit 88366a3
+
+-------------------------------------------------------------------
+Fri Jan  9 11:08:54 CET 2015 - [email protected]
+
+- Linux 3.18.2 (CVE-2014-8133 bnc#908163 bsc#909077).
+- Delete
+  patches.fixes/KEYS-Fix-stale-key-registration-at-error-path.
+- Delete
+  patches.fixes/x86-tls-validate-tls-entries-to-protect-espfix.patch.
+- commit a393f37
+
+-------------------------------------------------------------------
+Thu Jan  8 20:35:25 CET 2015 - [email protected]
+
+- Bluetooth: Add support for Broadcom BCM20702A0 variants firmware
+  download (bnc#911311).
+- commit 15c2753
+
+-------------------------------------------------------------------
+Thu Jan  8 14:50:46 CET 2015 - [email protected]
+
+- drm/radeon: fix sad_count check for dce3 (bnc#911356).
+- commit d0f80d0
+
+-------------------------------------------------------------------
+Tue Jan  6 17:46:41 CET 2015 - [email protected]
+
+- drm/i915: Don't call intel_prepare_page_flip() multiple times
+  on gen2-4 (bnc#911835).
+- commit 946a5ed
+
+-------------------------------------------------------------------
+Tue Jan  6 01:59:19 CET 2015 - [email protected]
+
+- arm64: Enable DRM
+- commit c00a333
+
+-------------------------------------------------------------------
+Mon Jan  5 21:08:40 CET 2015 - [email protected]
+
+- arm64: Enable generic PHB driver (bnc#912061).
+- commit 5452184
+
+-------------------------------------------------------------------
@@ -13,0 +78,7 @@
+
+-------------------------------------------------------------------
+Tue Dec 16 14:12:25 CET 2014 - [email protected]
+
+- parport: parport_pc, do not remove parent devices early
+  (bnc#856659).
+- commit 161f750
kernel-default.changes: same change
kernel-desktop.changes: same change
kernel-docs.changes: same change
kernel-ec2.changes: same change
kernel-lpae.changes: same change
kernel-obs-build.changes: same change
kernel-obs-qa-xen.changes: same change
kernel-obs-qa.changes: same change
kernel-pae.changes: same change
kernel-source.changes: same change
kernel-syms.changes: same change
kernel-vanilla.changes: same change
kernel-xen.changes: same change

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ kernel-debug.spec ++++++
--- /var/tmp/diff_new_pack.SILygs/_old  2015-01-22 21:46:22.000000000 +0100
+++ /var/tmp/diff_new_pack.SILygs/_new  2015-01-22 21:46:22.000000000 +0100
@@ -1,7 +1,7 @@
 #
 # spec file for package kernel-debug
 #
-# Copyright (c) 2014 SUSE LINUX Products GmbH, Nuernberg, Germany.
+# Copyright (c) 2015 SUSE LINUX Products GmbH, Nuernberg, Germany.
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -20,7 +20,7 @@
 # needssslcertforbuild
 
 %define srcversion 3.18
-%define patchversion 3.18.1
+%define patchversion 3.18.3
 %define variant %{nil}
 %define vanilla_only 0
 
@@ -59,9 +59,9 @@
 Summary:        A Debug Version of the Kernel
 License:        GPL-2.0
 Group:          System/Kernel
-Version:        3.18.1
+Version:        3.18.3
 %if 0%{?is_kotd}
-Release:        <RELEASE>.g5f2f35e
+Release:        <RELEASE>.gc3e148f
 %else
 Release:        0
 %endif

kernel-default.spec: same change
kernel-desktop.spec: same change
++++++ kernel-docs.spec ++++++
--- /var/tmp/diff_new_pack.SILygs/_old  2015-01-22 21:46:22.000000000 +0100
+++ /var/tmp/diff_new_pack.SILygs/_new  2015-01-22 21:46:22.000000000 +0100
@@ -1,7 +1,7 @@
 #
 # spec file for package kernel-docs
 #
-# Copyright (c) 2014 SUSE LINUX Products GmbH, Nuernberg, Germany.
+# Copyright (c) 2015 SUSE LINUX Products GmbH, Nuernberg, Germany.
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -16,7 +16,7 @@
 #
 
 
-%define patchversion 3.18.1
+%define patchversion 3.18.3
 %define variant %{nil}
 
 %include %_sourcedir/kernel-spec-macros
@@ -27,9 +27,9 @@
 Summary:        Kernel Documentation (man pages)
 License:        GPL-2.0
 Group:          Documentation/Man
-Version:        3.18.1
+Version:        3.18.3
 %if 0%{?is_kotd}
-Release:        <RELEASE>.g5f2f35e
+Release:        <RELEASE>.gc3e148f
 %else
 Release:        0
 %endif

++++++ kernel-ec2.spec ++++++
--- /var/tmp/diff_new_pack.SILygs/_old  2015-01-22 21:46:22.000000000 +0100
+++ /var/tmp/diff_new_pack.SILygs/_new  2015-01-22 21:46:22.000000000 +0100
@@ -1,7 +1,7 @@
 #
 # spec file for package kernel-ec2
 #
-# Copyright (c) 2014 SUSE LINUX Products GmbH, Nuernberg, Germany.
+# Copyright (c) 2015 SUSE LINUX Products GmbH, Nuernberg, Germany.
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -20,7 +20,7 @@
 # needssslcertforbuild
 
 %define srcversion 3.18
-%define patchversion 3.18.1
+%define patchversion 3.18.3
 %define variant %{nil}
 %define vanilla_only 0
 
@@ -59,9 +59,9 @@
 Summary:        The Amazon EC2 Xen Kernel
 License:        GPL-2.0
 Group:          System/Kernel
-Version:        3.18.1
+Version:        3.18.3
 %if 0%{?is_kotd}
-Release:        <RELEASE>.g5f2f35e
+Release:        <RELEASE>.gc3e148f
 %else
 Release:        0
 %endif

kernel-lpae.spec: same change
++++++ kernel-obs-build.spec ++++++
--- /var/tmp/diff_new_pack.SILygs/_old  2015-01-22 21:46:22.000000000 +0100
+++ /var/tmp/diff_new_pack.SILygs/_new  2015-01-22 21:46:22.000000000 +0100
@@ -1,7 +1,7 @@
 #
 # spec file for package kernel-obs-build
 #
-# Copyright (c) 2014 SUSE LINUX Products GmbH, Nuernberg, Germany.
+# Copyright (c) 2015 SUSE LINUX Products GmbH, Nuernberg, Germany.
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -19,7 +19,7 @@
 
 #!BuildIgnore: post-build-checks
 
-%define patchversion 3.18.1
+%define patchversion 3.18.3
 %define variant %{nil}
 
 %include %_sourcedir/kernel-spec-macros
@@ -45,9 +45,9 @@
 Summary:        package kernel and initrd for OBS VM builds
 License:        GPL-2.0
 Group:          SLES
-Version:        3.18.1
+Version:        3.18.3
 %if 0%{?is_kotd}
-Release:        <RELEASE>.g5f2f35e
+Release:        <RELEASE>.gc3e148f
 %else
 Release:        0
 %endif

++++++ kernel-obs-qa-xen.spec ++++++
--- /var/tmp/diff_new_pack.SILygs/_old  2015-01-22 21:46:22.000000000 +0100
+++ /var/tmp/diff_new_pack.SILygs/_new  2015-01-22 21:46:22.000000000 +0100
@@ -1,7 +1,7 @@
 #
 # spec file for package kernel-obs-qa
 #
-# Copyright (c) 2014 SUSE LINUX Products GmbH, Nuernberg, Germany.
+# Copyright (c) 2015 SUSE LINUX Products GmbH, Nuernberg, Germany.
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -17,7 +17,7 @@
 # needsrootforbuild
 
 
-%define patchversion 3.18.1
+%define patchversion 3.18.3
 %define variant %{nil}
 
 %include %_sourcedir/kernel-spec-macros
@@ -36,9 +36,9 @@
 Summary:        Basic QA tests for the kernel
 License:        GPL-2.0
 Group:          SLES
-Version:        3.18.1
+Version:        3.18.3
 %if 0%{?is_kotd}
-Release:        <RELEASE>.g5f2f35e
+Release:        <RELEASE>.gc3e148f
 %else
 Release:        0
 %endif

++++++ kernel-obs-qa.spec ++++++
--- /var/tmp/diff_new_pack.SILygs/_old  2015-01-22 21:46:22.000000000 +0100
+++ /var/tmp/diff_new_pack.SILygs/_new  2015-01-22 21:46:22.000000000 +0100
@@ -1,7 +1,7 @@
 #
 # spec file for package kernel-obs-qa
 #
-# Copyright (c) 2014 SUSE LINUX Products GmbH, Nuernberg, Germany.
+# Copyright (c) 2015 SUSE LINUX Products GmbH, Nuernberg, Germany.
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -17,7 +17,7 @@
 # needsrootforbuild
 
 
-%define patchversion 3.18.1
+%define patchversion 3.18.3
 %define variant %{nil}
 
 %include %_sourcedir/kernel-spec-macros
@@ -36,9 +36,9 @@
 Summary:        Basic QA tests for the kernel
 License:        GPL-2.0
 Group:          SLES
-Version:        3.18.1
+Version:        3.18.3
 %if 0%{?is_kotd}
-Release:        <RELEASE>.g5f2f35e
+Release:        <RELEASE>.gc3e148f
 %else
 Release:        0
 %endif

++++++ kernel-pae.spec ++++++
--- /var/tmp/diff_new_pack.SILygs/_old  2015-01-22 21:46:22.000000000 +0100
+++ /var/tmp/diff_new_pack.SILygs/_new  2015-01-22 21:46:22.000000000 +0100
@@ -1,7 +1,7 @@
 #
 # spec file for package kernel-pae
 #
-# Copyright (c) 2014 SUSE LINUX Products GmbH, Nuernberg, Germany.
+# Copyright (c) 2015 SUSE LINUX Products GmbH, Nuernberg, Germany.
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -20,7 +20,7 @@
 # needssslcertforbuild
 
 %define srcversion 3.18
-%define patchversion 3.18.1
+%define patchversion 3.18.3
 %define variant %{nil}
 %define vanilla_only 0
 
@@ -59,9 +59,9 @@
 Summary:        Kernel with PAE Support
 License:        GPL-2.0
 Group:          System/Kernel
-Version:        3.18.1
+Version:        3.18.3
 %if 0%{?is_kotd}
-Release:        <RELEASE>.g5f2f35e
+Release:        <RELEASE>.gc3e148f
 %else
 Release:        0
 %endif

++++++ kernel-source.spec ++++++
--- /var/tmp/diff_new_pack.SILygs/_old  2015-01-22 21:46:22.000000000 +0100
+++ /var/tmp/diff_new_pack.SILygs/_new  2015-01-22 21:46:22.000000000 +0100
@@ -1,7 +1,7 @@
 #
 # spec file for package kernel-source
 #
-# Copyright (c) 2014 SUSE LINUX Products GmbH, Nuernberg, Germany.
+# Copyright (c) 2015 SUSE LINUX Products GmbH, Nuernberg, Germany.
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -18,7 +18,7 @@
 
 
 %define srcversion 3.18
-%define patchversion 3.18.1
+%define patchversion 3.18.3
 %define variant %{nil}
 %define vanilla_only 0
 
@@ -30,9 +30,9 @@
 Summary:        The Linux Kernel Sources
 License:        GPL-2.0
 Group:          Development/Sources
-Version:        3.18.1
+Version:        3.18.3
 %if 0%{?is_kotd}
-Release:        <RELEASE>.g5f2f35e
+Release:        <RELEASE>.gc3e148f
 %else
 Release:        0
 %endif

++++++ kernel-syms.spec ++++++
--- /var/tmp/diff_new_pack.SILygs/_old  2015-01-22 21:46:22.000000000 +0100
+++ /var/tmp/diff_new_pack.SILygs/_new  2015-01-22 21:46:22.000000000 +0100
@@ -1,7 +1,7 @@
 #
 # spec file for package kernel-syms
 #
-# Copyright (c) 2014 SUSE LINUX Products GmbH, Nuernberg, Germany.
+# Copyright (c) 2015 SUSE LINUX Products GmbH, Nuernberg, Germany.
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -24,10 +24,10 @@
 Summary:        Kernel Symbol Versions (modversions)
 License:        GPL-2.0
 Group:          Development/Sources
-Version:        3.18.1
+Version:        3.18.3
 %if %using_buildservice
 %if 0%{?is_kotd}
-Release:        <RELEASE>.g5f2f35e
+Release:        <RELEASE>.gc3e148f
 %else
 Release:        0
 %endif

++++++ kernel-vanilla.spec ++++++
--- /var/tmp/diff_new_pack.SILygs/_old  2015-01-22 21:46:22.000000000 +0100
+++ /var/tmp/diff_new_pack.SILygs/_new  2015-01-22 21:46:22.000000000 +0100
@@ -1,7 +1,7 @@
 #
 # spec file for package kernel-vanilla
 #
-# Copyright (c) 2014 SUSE LINUX Products GmbH, Nuernberg, Germany.
+# Copyright (c) 2015 SUSE LINUX Products GmbH, Nuernberg, Germany.
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -20,7 +20,7 @@
 # needssslcertforbuild
 
 %define srcversion 3.18
-%define patchversion 3.18.1
+%define patchversion 3.18.3
 %define variant %{nil}
 %define vanilla_only 0
 
@@ -59,9 +59,9 @@
 Summary:        The Standard Kernel - without any SUSE patches
 License:        GPL-2.0
 Group:          System/Kernel
-Version:        3.18.1
+Version:        3.18.3
 %if 0%{?is_kotd}
-Release:        <RELEASE>.g5f2f35e
+Release:        <RELEASE>.gc3e148f
 %else
 Release:        0
 %endif

kernel-xen.spec: same change
++++++ config.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/config/arm64/default new/config/arm64/default
--- old/config/arm64/default    2014-12-09 03:22:34.000000000 +0100
+++ new/config/arm64/default    2015-01-07 15:38:57.000000000 +0100
@@ -1,6 +1,6 @@
 #
 # Automatically generated file; DO NOT EDIT.
-# Linux/arm64 3.18.0 Kernel Configuration
+# Linux/arm64 3.18.1 Kernel Configuration
 #
 CONFIG_ARM64=y
 CONFIG_64BIT=y
@@ -328,6 +328,7 @@
 #
 # PCI host controller drivers
 #
+CONFIG_PCI_HOST_GENERIC=y
 CONFIG_PCI_XGENE=y
 CONFIG_PCIEPORTBUS=y
 CONFIG_HOTPLUG_PCI_PCIE=y
@@ -3986,7 +3987,37 @@
 #
 # Direct Rendering Manager
 #
-# CONFIG_DRM is not set
+CONFIG_DRM=m
+CONFIG_DRM_KMS_HELPER=m
+CONFIG_DRM_KMS_FB_HELPER=y
+CONFIG_DRM_LOAD_EDID_FIRMWARE=y
+CONFIG_DRM_TTM=m
+
+#
+# I2C encoder or helper chips
+#
+CONFIG_DRM_I2C_CH7006=m
+CONFIG_DRM_I2C_SIL164=m
+# CONFIG_DRM_I2C_NXP_TDA998X is not set
+# CONFIG_DRM_PTN3460 is not set
+# CONFIG_DRM_TDFX is not set
+# CONFIG_DRM_R128 is not set
+CONFIG_DRM_RADEON=m
+# CONFIG_DRM_RADEON_UMS is not set
+CONFIG_DRM_NOUVEAU=m
+CONFIG_NOUVEAU_DEBUG=5
+CONFIG_NOUVEAU_DEBUG_DEFAULT=3
+CONFIG_DRM_NOUVEAU_BACKLIGHT=y
+CONFIG_DRM_MGA=m
+# CONFIG_DRM_VIA is not set
+# CONFIG_DRM_SAVAGE is not set
+# CONFIG_DRM_VMWGFX is not set
+CONFIG_DRM_UDL=m
+CONFIG_DRM_AST=m
+CONFIG_DRM_MGAG200=m
+CONFIG_DRM_CIRRUS_QEMU=m
+CONFIG_DRM_QXL=m
+CONFIG_DRM_BOCHS=m
 
 #
 # Frame buffer Devices
@@ -4008,7 +4039,7 @@
 CONFIG_FB_DEFERRED_IO=y
 # CONFIG_FB_SVGALIB is not set
 # CONFIG_FB_MACMODES is not set
-# CONFIG_FB_BACKLIGHT is not set
+CONFIG_FB_BACKLIGHT=y
 CONFIG_FB_MODE_HELPERS=y
 CONFIG_FB_TILEBLITTING=y
 
@@ -4079,6 +4110,7 @@
 # CONFIG_BACKLIGHT_LV5207LP is not set
 # CONFIG_BACKLIGHT_BD6107 is not set
 # CONFIG_VGASTATE is not set
+CONFIG_HDMI=y
 
 #
 # Console display driver support
@@ -6076,6 +6108,7 @@
 CONFIG_TEXTSEARCH_BM=m
 CONFIG_TEXTSEARCH_FSM=m
 CONFIG_BTREE=y
+CONFIG_INTERVAL_TREE=y
 CONFIG_ASSOCIATIVE_ARRAY=y
 CONFIG_HAS_IOMEM=y
 CONFIG_HAS_IOPORT_MAP=y

++++++ patches.arch.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/patches.arch/arm64-0039-generic-pci.patch 
new/patches.arch/arm64-0039-generic-pci.patch
--- old/patches.arch/arm64-0039-generic-pci.patch       1970-01-01 
01:00:00.000000000 +0100
+++ new/patches.arch/arm64-0039-generic-pci.patch       2015-01-14 
20:16:14.000000000 +0100
@@ -0,0 +1,338 @@
+From: Alexander Graf <[email protected]>
+Patch-mainline: No
+Subject: [PATCH] arm64: Enable generic PHB driver
+References: bnc#912061
+
+ARM64 doesn't enable the generic PHB driver which would work just fine. Enable 
it in a local patch for now. Discussions on how to do it best upstream are 
ongoing.
+
+Signed-off-by: Alexander Graf <[email protected]>
+
+---
+
+If someone ever needs to merge this patch with a newer kernel, please just drop
+it and use the one from the newer tree.
+
+Index: linux-3.18-stable/drivers/pci/host/Kconfig
+===================================================================
+--- linux-3.18-stable.orig/drivers/pci/host/Kconfig
++++ linux-3.18-stable/drivers/pci/host/Kconfig
+@@ -50,7 +50,7 @@ config PCI_RCAR_GEN2_PCIE
+ 
+ config PCI_HOST_GENERIC
+       bool "Generic PCI host controller"
+-      depends on ARM && OF
++      depends on (ARM || ARM64) && OF
+       help
+         Say Y here if you want to support a simple generic PCI host
+         controller, such as the one emulated by kvmtool.
+Index: linux-3.18-stable/drivers/pci/host/pci-host-generic.c
+===================================================================
+--- linux-3.18-stable.orig/drivers/pci/host/pci-host-generic.c
++++ linux-3.18-stable/drivers/pci/host/pci-host-generic.c
+@@ -44,12 +44,29 @@ struct gen_pci {
+       struct list_head                        resources;
+ };
+ 
++/* fake sysdata for cheating ARCH's pcibios code */
++static char   gen_sysdata[256];
++
++static struct gen_pci *gen_pci_get_drvdata(struct pci_bus *bus)
++{
++      struct device *dev = bus->dev.parent->parent;
++      struct gen_pci *pci;
++      
++      while (dev) {
++              pci = dev_get_drvdata(dev);
++              if (pci)
++                      return pci;
++              dev = dev->parent;
++      }
++
++      return NULL;
++}
++
+ static void __iomem *gen_pci_map_cfg_bus_cam(struct pci_bus *bus,
+                                            unsigned int devfn,
+                                            int where)
+ {
+-      struct pci_sys_data *sys = bus->sysdata;
+-      struct gen_pci *pci = sys->private_data;
++      struct gen_pci *pci = gen_pci_get_drvdata(bus);
+       resource_size_t idx = bus->number - pci->cfg.bus_range.start;
+ 
+       return pci->cfg.win[idx] + ((devfn << 8) | where);
+@@ -64,8 +81,7 @@ static void __iomem *gen_pci_map_cfg_bus
+                                             unsigned int devfn,
+                                             int where)
+ {
+-      struct pci_sys_data *sys = bus->sysdata;
+-      struct gen_pci *pci = sys->private_data;
++      struct gen_pci *pci = gen_pci_get_drvdata(bus);
+       resource_size_t idx = bus->number - pci->cfg.bus_range.start;
+ 
+       return pci->cfg.win[idx] + ((devfn << 12) | where);
+@@ -80,8 +96,11 @@ static int gen_pci_config_read(struct pc
+                               int where, int size, u32 *val)
+ {
+       void __iomem *addr;
+-      struct pci_sys_data *sys = bus->sysdata;
+-      struct gen_pci *pci = sys->private_data;
++      struct gen_pci *pci = gen_pci_get_drvdata(bus);
++
++      WARN_ON(!pci);
++      if (!pci)
++              return PCIBIOS_DEVICE_NOT_FOUND;
+ 
+       addr = pci->cfg.ops->map_bus(bus, devfn, where);
+ 
+@@ -103,8 +122,11 @@ static int gen_pci_config_write(struct p
+                                int where, int size, u32 val)
+ {
+       void __iomem *addr;
+-      struct pci_sys_data *sys = bus->sysdata;
+-      struct gen_pci *pci = sys->private_data;
++      struct gen_pci *pci = gen_pci_get_drvdata(bus);
++
++      WARN_ON(!pci);
++      if (!pci)
++              return PCIBIOS_DEVICE_NOT_FOUND;
+ 
+       addr = pci->cfg.ops->map_bus(bus, devfn, where);
+ 
+@@ -138,45 +160,6 @@ static const struct of_device_id gen_pci
+ };
+ MODULE_DEVICE_TABLE(of, gen_pci_of_match);
+ 
+-static int gen_pci_calc_io_offset(struct device *dev,
+-                                struct of_pci_range *range,
+-                                struct resource *res,
+-                                resource_size_t *offset)
+-{
+-      static atomic_t wins = ATOMIC_INIT(0);
+-      int err, idx, max_win;
+-      unsigned int window;
+-
+-      if (!PAGE_ALIGNED(range->cpu_addr))
+-              return -EINVAL;
+-
+-      max_win = (IO_SPACE_LIMIT + 1) / SZ_64K;
+-      idx = atomic_inc_return(&wins);
+-      if (idx > max_win)
+-              return -ENOSPC;
+-
+-      window = (idx - 1) * SZ_64K;
+-      err = pci_ioremap_io(window, range->cpu_addr);
+-      if (err)
+-              return err;
+-
+-      of_pci_range_to_resource(range, dev->of_node, res);
+-      res->start = window;
+-      res->end = res->start + range->size - 1;
+-      *offset = window - range->pci_addr;
+-      return 0;
+-}
+-
+-static int gen_pci_calc_mem_offset(struct device *dev,
+-                                 struct of_pci_range *range,
+-                                 struct resource *res,
+-                                 resource_size_t *offset)
+-{
+-      of_pci_range_to_resource(range, dev->of_node, res);
+-      *offset = range->cpu_addr - range->pci_addr;
+-      return 0;
+-}
+-
+ static void gen_pci_release_of_pci_ranges(struct gen_pci *pci)
+ {
+       struct pci_host_bridge_window *win;
+@@ -187,72 +170,6 @@ static void gen_pci_release_of_pci_range
+       pci_free_resource_list(&pci->resources);
+ }
+ 
+-static int gen_pci_parse_request_of_pci_ranges(struct gen_pci *pci)
+-{
+-      struct of_pci_range range;
+-      struct of_pci_range_parser parser;
+-      int err, res_valid = 0;
+-      struct device *dev = pci->host.dev.parent;
+-      struct device_node *np = dev->of_node;
+-
+-      if (of_pci_range_parser_init(&parser, np)) {
+-              dev_err(dev, "missing \"ranges\" property\n");
+-              return -EINVAL;
+-      }
+-
+-      for_each_of_pci_range(&parser, &range) {
+-              struct resource *parent, *res;
+-              resource_size_t offset;
+-              u32 restype = range.flags & IORESOURCE_TYPE_BITS;
+-
+-              res = devm_kmalloc(dev, sizeof(*res), GFP_KERNEL);
+-              if (!res) {
+-                      err = -ENOMEM;
+-                      goto out_release_res;
+-              }
+-
+-              switch (restype) {
+-              case IORESOURCE_IO:
+-                      parent = &ioport_resource;
+-                      err = gen_pci_calc_io_offset(dev, &range, res, &offset);
+-                      break;
+-              case IORESOURCE_MEM:
+-                      parent = &iomem_resource;
+-                      err = gen_pci_calc_mem_offset(dev, &range, res, 
&offset);
+-                      res_valid |= !(res->flags & IORESOURCE_PREFETCH || err);
+-                      break;
+-              default:
+-                      err = -EINVAL;
+-                      continue;
+-              }
+-
+-              if (err) {
+-                      dev_warn(dev,
+-                               "error %d: failed to add resource [type 0x%x, 
%lld bytes]\n",
+-                               err, restype, range.size);
+-                      continue;
+-              }
+-
+-              err = request_resource(parent, res);
+-              if (err)
+-                      goto out_release_res;
+-
+-              pci_add_resource_offset(&pci->resources, res, offset);
+-      }
+-
+-      if (!res_valid) {
+-              dev_err(dev, "non-prefetchable memory resource required\n");
+-              err = -EINVAL;
+-              goto out_release_res;
+-      }
+-
+-      return 0;
+-
+-out_release_res:
+-      gen_pci_release_of_pci_ranges(pci);
+-      return err;
+-}
+-
+ static int gen_pci_parse_map_cfg_windows(struct gen_pci *pci)
+ {
+       int err;
+@@ -305,16 +222,33 @@ static int gen_pci_parse_map_cfg_windows
+                       return -ENOMEM;
+       }
+ 
+-      /* Register bus resource */
+-      pci_add_resource(&pci->resources, bus_range);
+       return 0;
+ }
+ 
+-static int gen_pci_setup(int nr, struct pci_sys_data *sys)
++static int gen_pci_map_ranges(struct list_head *res,
++              resource_size_t io_base)
+ {
+-      struct gen_pci *pci = sys->private_data;
+-      list_splice_init(&pci->resources, &sys->resources);
+-      return 1;
++      struct pci_host_bridge_window *window;
++      int ret;
++
++      list_for_each_entry(window, res, list) {
++              struct resource *res = window->res;
++              u64 restype = resource_type(res);
++
++              switch (restype) {
++              case IORESOURCE_IO:
++                      ret = pci_remap_iospace(res, io_base);
++                      if (ret < 0)
++                              return ret;
++                      break;
++              case IORESOURCE_MEM:
++              case IORESOURCE_BUS:
++                      break;
++              default:
++                      return -EINVAL;
++              }
++      }
++      return 0;
+ }
+ 
+ static int gen_pci_probe(struct platform_device *pdev)
+@@ -325,14 +259,11 @@ static int gen_pci_probe(struct platform
+       const int *prop;
+       struct device *dev = &pdev->dev;
+       struct device_node *np = dev->of_node;
++      resource_size_t iobase = 0;
+       struct gen_pci *pci = devm_kzalloc(dev, sizeof(*pci), GFP_KERNEL);
+-      struct hw_pci hw = {
+-              .nr_controllers = 1,
+-              .private_data   = (void **)&pci,
+-              .setup          = gen_pci_setup,
+-              .map_irq        = of_irq_parse_and_map_pci,
+-              .ops            = &gen_pci_ops,
+-      };
++      struct pci_bus *bus;
++      struct pci_dev *pci_dev = NULL;
++      bool probe_only = false;
+ 
+       if (!pci)
+               return -ENOMEM;
+@@ -346,9 +277,9 @@ static int gen_pci_probe(struct platform
+       prop = of_get_property(of_chosen, "linux,pci-probe-only", NULL);
+       if (prop) {
+               if (*prop)
+-                      pci_add_flags(PCI_PROBE_ONLY);
++                      probe_only = true;
+               else
+-                      pci_clear_flags(PCI_PROBE_ONLY);
++                      probe_only = false;
+       }
+ 
+       of_id = of_match_node(gen_pci_of_match, np);
+@@ -357,20 +288,40 @@ static int gen_pci_probe(struct platform
+       INIT_LIST_HEAD(&pci->host.windows);
+       INIT_LIST_HEAD(&pci->resources);
+ 
+-      /* Parse our PCI ranges and request their resources */
+-      err = gen_pci_parse_request_of_pci_ranges(pci);
++      err = of_pci_get_host_bridge_resources(np, 0, 0xff,
++                      &pci->resources, &iobase);
+       if (err)
+               return err;
+ 
+       /* Parse and map our Configuration Space windows */
+       err = gen_pci_parse_map_cfg_windows(pci);
+-      if (err) {
+-              gen_pci_release_of_pci_ranges(pci);
+-              return err;
++      if (err)
++              goto fail;
++
++      err = gen_pci_map_ranges(&pci->resources, iobase);
++      if (err)
++              goto fail;
++
++      err = -ENOMEM;
++      platform_set_drvdata(pdev, pci);
++      bus = pci_scan_root_bus(dev, 0, &gen_pci_ops, gen_sysdata,
++                              &pci->resources);
++      if (!bus)
++              goto fail;
++
++      for_each_pci_dev(pci_dev)
++              pci_dev->irq = of_irq_parse_and_map_pci(pci_dev, 0, 0);
++
++      if (!probe_only) {
++              pci_bus_size_bridges(bus);
++              pci_bus_assign_resources(bus);
++              pci_bus_add_devices(bus);
+       }
+ 
+-      pci_common_init_dev(dev, &hw);
+       return 0;
++ fail:
++      gen_pci_release_of_pci_ranges(pci);
++      return err;
+ }
+ 
+ static struct platform_driver gen_pci_driver = {

++++++ patches.drivers.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/patches.drivers/Bluetooth-Add-support-for-Broadcom-BCM20702A0-varian 
new/patches.drivers/Bluetooth-Add-support-for-Broadcom-BCM20702A0-varian
--- old/patches.drivers/Bluetooth-Add-support-for-Broadcom-BCM20702A0-varian    
1970-01-01 01:00:00.000000000 +0100
+++ new/patches.drivers/Bluetooth-Add-support-for-Broadcom-BCM20702A0-varian    
2015-01-08 20:35:25.000000000 +0100
@@ -0,0 +1,87 @@
+From 6029ddc2333ae37f637d44beef3a1480cbbb33b9 Mon Sep 17 00:00:00 2001
+From: Heinrich Siebmanns <[email protected]>
+Date: Wed, 3 Dec 2014 19:32:22 +0100
+Subject: [PATCH] Bluetooth: Add support for Broadcom BCM20702A0 variants 
firmware download
+Git-commit: 6029ddc2333ae37f637d44beef3a1480cbbb33b9
+Patch-mainline: 3.19-rc1
+References: bnc#911311
+
+This requires the flag BTUSB_BCM_PATCHRAM to work.
+
+Relevant details from /sys/kernel/debug/usb/devices for my device:
+
+T: Bus=03 Lev=02 Prnt=02 Port=03 Cnt=02 Dev#=  4 Spd=12   MxCh= 0
+D: Ver= 2.00 Cls=ff(vend.) Sub=01 Prot=01 MxPS=64 #Cfgs=  1
+P: Vendor=0489 ProdID=e031 Rev= 1.12
+S: Manufacturer=Broadcom Corp
+S: Product=BCM20702A0
+S: SerialNumber=3859F9CD2AEE
+C:* #Ifs= 4 Cfg#= 1 Atr=e0 MxPwr=  0mA
+I:* If#= 0 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=01 Prot=01 Driver=btusb
+E: Ad=81(I) Atr=03(Int.) MxPS=  16 Ivl=1ms
+E: Ad=82(I) Atr=02(Bulk) MxPS=  64 Ivl=0ms
+E: Ad=02(O) Atr=02(Bulk) MxPS=  64 Ivl=0ms
+I:* If#= 1 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=01 Prot=01 Driver=btusb
+E: Ad=83(I) Atr=01(Isoc) MxPS=   0 Ivl=1ms
+E: Ad=03(O) Atr=01(Isoc) MxPS=   0 Ivl=1ms
+I: If#= 1 Alt= 1 #EPs= 2 Cls=ff(vend.) Sub=01 Prot=01 Driver=btusb
+E: Ad=83(I) Atr=01(Isoc) MxPS=   9 Ivl=1ms
+E: Ad=03(O) Atr=01(Isoc) MxPS=   9 Ivl=1ms
+I: If#= 1 Alt= 2 #EPs= 2 Cls=ff(vend.) Sub=01 Prot=01 Driver=btusb
+E: Ad=83(I) Atr=01(Isoc) MxPS=  17 Ivl=1ms
+E: Ad=03(O) Atr=01(Isoc) MxPS=  17 Ivl=1ms
+I: If#= 1 Alt= 3 #EPs= 2 Cls=ff(vend.) Sub=01 Prot=01 Driver=btusb
+E: Ad=83(I) Atr=01(Isoc) MxPS=  25 Ivl=1ms
+E: Ad=03(O) Atr=01(Isoc) MxPS=  25 Ivl=1ms
+I: If#= 1 Alt= 4 #EPs= 2 Cls=ff(vend.) Sub=01 Prot=01 Driver=btusb
+E: Ad=83(I) Atr=01(Isoc) MxPS=  33 Ivl=1ms
+E: Ad=03(O) Atr=01(Isoc) MxPS=  33 Ivl=1ms
+I: If#= 1 Alt= 5 #EPs= 2 Cls=ff(vend.) Sub=01 Prot=01 Driver=btusb
+E: Ad=83(I) Atr=01(Isoc) MxPS=  49 Ivl=1ms
+E: Ad=03(O) Atr=01(Isoc) MxPS=  49 Ivl=1ms
+I:* If#= 2 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=(none)
+E: Ad=84(I) Atr=02(Bulk) MxPS=  32 Ivl=0ms
+E: Ad=04(O) Atr=02(Bulk) MxPS=  32 Ivl=0ms
+I:* If#= 3 Alt= 0 #EPs= 0 Cls=fe(app. ) Sub=01 Prot=01 Driver=(none)
+
+The firmware was extracted from a Windows 7 32-bit installation
+and converted from 'hex' to 'hcd' for use in Linux.
+
+The firmware is named "BCM20702A0_001.001.024.0156.0204.hex"
+and is located in "%SYSTEMROOT%\system32\drivers\"
+(md5 d126e6c4e0e669d76c38cf9377f76b7f)
+(sha1 145d1850b2785a953233b409e7ff77786927c7d2)
+
+The firmware file is also available as a download at
+http://support.ts.fujitsu.com/Download/
+contained in "FTS_WIDCOMMBluetoothSoftware_6309000_1072149.zip"
+
+Search for the file Win32/bcbtums-win7x86-brcm.inf in the archive,
+look for the vendor and product ID of your adapter, see the section
+'devices' in that file to find out what device name it uses. See
+the device entry in the inf file (in my case it was 'RAMUSBE031')
+to find out which hex file you need to convert to hcd for upload
+
+'hcd' file should be placed at "brcm/BCM20702A0-0489-e031.hcd"
+inside the firmware directory (e.g. "/lib/firmware")
+
+Signed-off-by: Heinrich Siebmanns <[email protected]>
+Signed-off-by: Marcel Holtmann <[email protected]>
+Acked-by: Takashi Iwai <[email protected]>
+
+---
+ drivers/bluetooth/btusb.c |    3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+--- a/drivers/bluetooth/btusb.c
++++ b/drivers/bluetooth/btusb.c
+@@ -108,7 +108,8 @@ static const struct usb_device_id btusb_
+       { USB_DEVICE(0x413c, 0x8197) },
+ 
+       /* Foxconn - Hon Hai */
+-      { USB_VENDOR_AND_INTERFACE_INFO(0x0489, 0xff, 0x01, 0x01) },
++      { USB_VENDOR_AND_INTERFACE_INFO(0x0489, 0xff, 0x01, 0x01),
++        .driver_info = BTUSB_BCM_PATCHRAM },
+ 
+       /* Broadcom devices with vendor specific id */
+       { USB_VENDOR_AND_INTERFACE_INFO(0x0a5c, 0xff, 0x01, 0x01),
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/patches.drivers/drm-i915-Don-t-call-intel_prepare_page_flip-multiple 
new/patches.drivers/drm-i915-Don-t-call-intel_prepare_page_flip-multiple
--- old/patches.drivers/drm-i915-Don-t-call-intel_prepare_page_flip-multiple    
1970-01-01 01:00:00.000000000 +0100
+++ new/patches.drivers/drm-i915-Don-t-call-intel_prepare_page_flip-multiple    
2015-01-08 20:35:25.000000000 +0100
@@ -0,0 +1,85 @@
+From 7d47559ee84b3ac206aa9e675606fafcd7c0b500 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Ville=20Syrj=C3=A4l=C3=A4?= <[email protected]>
+Date: Wed, 17 Dec 2014 23:08:03 +0200
+Subject: [PATCH] drm/i915: Don't call intel_prepare_page_flip() multiple times 
on gen2-4
+Mime-version: 1.0
+Content-type: text/plain; charset=UTF-8
+Content-transfer-encoding: 8bit
+Git-commit: 7d47559ee84b3ac206aa9e675606fafcd7c0b500
+Git-repo: linux-next
+Patch-mainline: to be 3.19-rc4
+References: bnc#911835
+
+The flip stall detector kicks in when pending>=INTEL_FLIP_COMPLETE. That
+means if we first call intel_prepare_page_flip() but don't call
+intel_finish_page_flip(), the next stall check will erroneosly think
+the page flip was somehow stuck.
+
+With enough debug spew emitted from the interrupt handler my 830 hangs
+when this happens. My theory is that the previous vblank interrupt gets
+sufficiently delayed that the handler will see the pending bit set in
+IIR, but ISR still has the bit set as well (ie. the flip was processed
+by CS but didn't complete yet). In this case the handler will proceed
+to call intel_check_page_flip() immediately after
+intel_prepare_page_flip(). It then tries to print a backtrace for the
+stuck flip WARN, which apparetly results in way too much debug spew
+delaying interrupt processing further. That then seems to cause an
+endless loop in the interrupt handler, and the machine is dead until
+the watchdog kicks in and reboots. At least limiting the number of
+iterations of the loop in the interrupt handler also prevented the
+hang.
+
+So it seems better to not call intel_prepare_page_flip() without
+immediately calling intel_finish_page_flip(). The IIR/ISR trickery
+avoids races here so this is a perfectly safe thing to do.
+
+V2: Fix typo in commit message (checkpatch)
+
+Cc: [email protected]
+Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=88381
+Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=85888
+Reviewed-by: Chris Wilson <[email protected]>
+Signed-off-by: Ville Syrjälä <[email protected]>
+Signed-off-by: Jani Nikula <[email protected]>
+Acked-by: Takashi Iwai <[email protected]>
+
+---
+ drivers/gpu/drm/i915/i915_irq.c |    6 ++----
+ 1 file changed, 2 insertions(+), 4 deletions(-)
+
+--- a/drivers/gpu/drm/i915/i915_irq.c
++++ b/drivers/gpu/drm/i915/i915_irq.c
+@@ -4022,8 +4022,6 @@ static bool i8xx_handle_vblank(struct dr
+       if ((iir & flip_pending) == 0)
+               goto check_page_flip;
+ 
+-      intel_prepare_page_flip(dev, plane);
+-
+       /* We detect FlipDone by looking for the change in PendingFlip from '1'
+        * to '0' on the following vblank, i.e. IIR has the Pendingflip
+        * asserted following the MI_DISPLAY_FLIP, but ISR is deasserted, hence
+@@ -4033,6 +4031,7 @@ static bool i8xx_handle_vblank(struct dr
+       if (I915_READ16(ISR) & flip_pending)
+               goto check_page_flip;
+ 
++      intel_prepare_page_flip(dev, plane);
+       intel_finish_page_flip(dev, pipe);
+       return true;
+ 
+@@ -4210,8 +4209,6 @@ static bool i915_handle_vblank(struct dr
+       if ((iir & flip_pending) == 0)
+               goto check_page_flip;
+ 
+-      intel_prepare_page_flip(dev, plane);
+-
+       /* We detect FlipDone by looking for the change in PendingFlip from '1'
+        * to '0' on the following vblank, i.e. IIR has the Pendingflip
+        * asserted following the MI_DISPLAY_FLIP, but ISR is deasserted, hence
+@@ -4221,6 +4218,7 @@ static bool i915_handle_vblank(struct dr
+       if (I915_READ(ISR) & flip_pending)
+               goto check_page_flip;
+ 
++      intel_prepare_page_flip(dev, plane);
+       intel_finish_page_flip(dev, pipe);
+       return true;
+ 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/patches.drivers/drm-radeon-fix-sad_count-check-for-dce3 
new/patches.drivers/drm-radeon-fix-sad_count-check-for-dce3
--- old/patches.drivers/drm-radeon-fix-sad_count-check-for-dce3 1970-01-01 
01:00:00.000000000 +0100
+++ new/patches.drivers/drm-radeon-fix-sad_count-check-for-dce3 2015-01-08 
20:35:25.000000000 +0100
@@ -0,0 +1,34 @@
+From 5665c3ebe5ee8a2c516925461f7214ba59c2e6d7 Mon Sep 17 00:00:00 2001
+From: Alex Deucher <[email protected]>
+Date: Tue, 9 Dec 2014 10:04:01 -0500
+Subject: [PATCH] drm/radeon: fix sad_count check for dce3
+Git-commit: 5665c3ebe5ee8a2c516925461f7214ba59c2e6d7
+Git-repo: git://people.freedesktop.org/~agd5f/linux
+Patch-mainline: Submitted
+References: bnc#911356
+
+Make it consistent with the sad code for other asics to deal
+with monitors that don't report sads.
+
+Bug: 
+https://bugzilla.kernel.org/show_bug.cgi?id=89461
+
+Signed-off-by: Alex Deucher <[email protected]>
+Cc: [email protected]
+Acked-by: Takashi Iwai <[email protected]>
+
+---
+ drivers/gpu/drm/radeon/dce3_1_afmt.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/gpu/drm/radeon/dce3_1_afmt.c
++++ b/drivers/gpu/drm/radeon/dce3_1_afmt.c
+@@ -103,7 +103,7 @@ static void dce3_2_afmt_write_sad_regs(s
+       }
+ 
+       sad_count = drm_edid_to_sad(radeon_connector->edid, &sads);
+-      if (sad_count < 0) {
++      if (sad_count <= 0) {
+               DRM_ERROR("Couldn't read SADs: %d\n", sad_count);
+               return;
+       }

++++++ patches.fixes.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/patches.fixes/KEYS-Fix-stale-key-registration-at-error-path 
new/patches.fixes/KEYS-Fix-stale-key-registration-at-error-path
--- old/patches.fixes/KEYS-Fix-stale-key-registration-at-error-path     
2014-12-17 19:20:30.000000000 +0100
+++ new/patches.fixes/KEYS-Fix-stale-key-registration-at-error-path     
1970-01-01 01:00:00.000000000 +0100
@@ -1,42 +0,0 @@
-From: Takashi Iwai <[email protected]>
-Date: Thu, 4 Dec 2014 17:21:17 +0100
-Subject: [PATCH] KEYS: Fix stale key registration at error path
-Patch-mainline: Submitted
-References: bnc#908163
-
-When loading encrypted-keys module, if the last check of
-aes_get_sizes() in init_encrypted() fails, the driver just returns an
-error without unregistering its key type.  This results in the stale
-entry in the list.  In addition to memory leaks, this leads to a kernel
-crash when registering a new key type later.
-
-This patch fixes the problem by swapping the calls of aes_get_sizes()
-and register_key_type(), and releasing resources properly at the error
-paths.
-
-Bugzilla: https://bugzilla.opensuse.org/show_bug.cgi?id=908163
-Cc: <[email protected]>
-Signed-off-by: Takashi Iwai <[email protected]>
-Signed-off-by: Mimi Zohar <[email protected]>
-
----
- security/keys/encrypted-keys/encrypted.c |    5 ++++-
- 1 file changed, 4 insertions(+), 1 deletion(-)
-
---- a/security/keys/encrypted-keys/encrypted.c
-+++ b/security/keys/encrypted-keys/encrypted.c
-@@ -1018,10 +1018,13 @@ static int __init init_encrypted(void)
-       ret = encrypted_shash_alloc();
-       if (ret < 0)
-               return ret;
-+      ret = aes_get_sizes();
-+      if (ret < 0)
-+              goto out;
-       ret = register_key_type(&key_type_encrypted);
-       if (ret < 0)
-               goto out;
--      return aes_get_sizes();
-+      return 0;
- out:
-       encrypted_shash_release();
-       return ret;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/patches.fixes/blk-mq-Fix-uninitialized-kobject-at-CPU-hotplugging 
new/patches.fixes/blk-mq-Fix-uninitialized-kobject-at-CPU-hotplugging
--- old/patches.fixes/blk-mq-Fix-uninitialized-kobject-at-CPU-hotplugging       
2014-12-17 19:20:30.000000000 +0100
+++ new/patches.fixes/blk-mq-Fix-uninitialized-kobject-at-CPU-hotplugging       
1970-01-01 01:00:00.000000000 +0100
@@ -1,79 +0,0 @@
-From 06a41a99d13d8e919e9a00a4849e6b85ae492592 Mon Sep 17 00:00:00 2001
-From: Takashi Iwai <[email protected]>
-Date: Wed, 10 Dec 2014 16:38:30 +0100
-Subject: [PATCH] blk-mq: Fix uninitialized kobject at CPU hotplugging
-Git-commit: 06a41a99d13d8e919e9a00a4849e6b85ae492592
-Patch-mainline: 3.19-rc1
-References: bnc#908794
-
-When a CPU is hotplugged, the current blk-mq spews a warning like:
-
-  kobject '(null)' (ffffe8ffffc8b5d8): tried to add an uninitialized object, 
something is seriously wrong.
-  CPU: 1 PID: 1386 Comm: systemd-udevd Not tainted 
3.18.0-rc7-2.g088d59b-default #1
-  Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 
1.7.5-20140531_171129-lamiak 04/01/2014
-   0000000000000000 0000000000000002 ffffffff81605f07 ffffe8ffffc8b5d8
-   ffffffff8132c7a0 ffff88023341d370 0000000000000020 ffff8800bb05bd58
-   ffff8800bb05bd08 000000000000a0a0 000000003f441940 0000000000000007
-  Call Trace:
-   [<ffffffff81005306>] dump_trace+0x86/0x330
-   [<ffffffff81005644>] show_stack_log_lvl+0x94/0x170
-   [<ffffffff81006d21>] show_stack+0x21/0x50
-   [<ffffffff81605f07>] dump_stack+0x41/0x51
-   [<ffffffff8132c7a0>] kobject_add+0xa0/0xb0
-   [<ffffffff8130aee1>] blk_mq_register_hctx+0x91/0xb0
-   [<ffffffff8130b82e>] blk_mq_sysfs_register+0x3e/0x60
-   [<ffffffff81309298>] blk_mq_queue_reinit_notify+0xf8/0x190
-   [<ffffffff8107cfdc>] notifier_call_chain+0x4c/0x70
-   [<ffffffff8105fd23>] cpu_notify+0x23/0x50
-   [<ffffffff81060037>] _cpu_up+0x157/0x170
-   [<ffffffff810600d9>] cpu_up+0x89/0xb0
-   [<ffffffff815fa5b5>] cpu_subsys_online+0x35/0x80
-   [<ffffffff814323cd>] device_online+0x5d/0xa0
-   [<ffffffff81432485>] online_store+0x75/0x80
-   [<ffffffff81236a5a>] kernfs_fop_write+0xda/0x150
-   [<ffffffff811c5532>] vfs_write+0xb2/0x1f0
-   [<ffffffff811c5f42>] SyS_write+0x42/0xb0
-   [<ffffffff8160c4ed>] system_call_fastpath+0x16/0x1b
-   [<00007f0132fb24e0>] 0x7f0132fb24e0
-
-This is indeed because of an uninitialized kobject for blk_mq_ctx.
-The blk_mq_ctx kobjects are initialized in blk_mq_sysfs_init(), but it
-goes loop over hctx_for_each_ctx(), i.e. it initializes only for
-online CPUs.  Thus, when a CPU is hotplugged, the ctx for the newly
-onlined CPU is registered without initialization.
-
-This patch fixes the issue by initializing the all ctx kobjects
-belonging to each queue.
-
-Bugzilla: https://bugzilla.novell.com/show_bug.cgi?id=908794
-Cc: <[email protected]>
-Signed-off-by: Takashi Iwai <[email protected]>
-Signed-off-by: Jens Axboe <[email protected]>
-
----
- block/blk-mq-sysfs.c |    9 ++++-----
- 1 file changed, 4 insertions(+), 5 deletions(-)
-
---- a/block/blk-mq-sysfs.c
-+++ b/block/blk-mq-sysfs.c
-@@ -390,16 +390,15 @@ static void blk_mq_sysfs_init(struct req
- {
-       struct blk_mq_hw_ctx *hctx;
-       struct blk_mq_ctx *ctx;
--      int i, j;
-+      int i;
- 
-       kobject_init(&q->mq_kobj, &blk_mq_ktype);
- 
--      queue_for_each_hw_ctx(q, hctx, i) {
-+      queue_for_each_hw_ctx(q, hctx, i)
-               kobject_init(&hctx->kobj, &blk_mq_hw_ktype);
- 
--              hctx_for_each_ctx(hctx, ctx, j)
--                      kobject_init(&ctx->kobj, &blk_mq_ctx_ktype);
--      }
-+      queue_for_each_ctx(q, ctx, i)
-+              kobject_init(&ctx->kobj, &blk_mq_ctx_ktype);
- }
- 
- /* see blk_register_queue() */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/patches.fixes/parport-parport_pc-do-not-remove-parent-devices-earl 
new/patches.fixes/parport-parport_pc-do-not-remove-parent-devices-earl
--- old/patches.fixes/parport-parport_pc-do-not-remove-parent-devices-earl      
1970-01-01 01:00:00.000000000 +0100
+++ new/patches.fixes/parport-parport_pc-do-not-remove-parent-devices-earl      
2015-01-06 21:02:06.000000000 +0100
@@ -0,0 +1,82 @@
+From 91905b6f4afe51e23a3f58df93e4cdc5e49cf40c Mon Sep 17 00:00:00 2001
+From: Jiri Slaby <[email protected]>
+Date: Fri, 21 Nov 2014 10:05:09 +0100
+Subject: [PATCH] parport: parport_pc, do not remove parent devices early
+Git-commit: 91905b6f4afe51e23a3f58df93e4cdc5e49cf40c
+Patch-mainline: 3.19-rc1
+References: bnc#856659
+
+When the parport_pc module is removed from the system, all parport
+devices are iterated in parport_pc_exit and removed by a call to
+parport_pc_unregister_port. Note that some parport devices have its
+'struct device' parent, known as port->dev.  And when port->dev is a
+platform device, it is destroyed in parport_pc_exit too.
+
+Now, when parport_pc_unregister_port is called for a going port,
+drv->detach(port) is called for every parport driver in the system.
+ppdev can be one of them. ppdev's detach() tears down its per-port
+sysfs directory, which established port->dev as a parent earlier.
+
+But since parport_pc_exit kills port->dev parents before unregisters
+ports proper, ppdev's sysfs directory has no living parent anymore.
+This results in the following warning:
+
+Warning: CPU: 1 PID: 785 at fs/sysfs/group.c:219 sysfs_remove_group+0x9b/0xa0
+sysfs group ffffffff81c69e20 not found for kobject 'parport1'
+Modules linked in: parport_pc(E-) ppdev(E) [last unloaded: ppdev]
+Cpu: 1 PID: 785 Comm: rmmod Tainted: G        W   E  3.18.0-rc5-next-20141120+ 
#824
+...
+Call Trace:
+...
+ [<ffffffff810aff76>] warn_slowpath_fmt+0x46/0x50
+ [<ffffffff8123d81b>] sysfs_remove_group+0x9b/0xa0
+ [<ffffffff814c27e7>] dpm_sysfs_remove+0x57/0x60
+ [<ffffffff814b6ac9>] device_del+0x49/0x240
+ [<ffffffff814b6ce2>] device_unregister+0x22/0x70
+ [<ffffffff814b6dac>] device_destroy+0x3c/0x50
+ [<ffffffffc012209a>] pp_detach+0x4a/0x60 [ppdev]
+ [<ffffffff814b32dd>] parport_remove_port+0x11d/0x150
+ [<ffffffffc0137328>] parport_pc_unregister_port+0x28/0xf0 [parport_pc]
+ [<ffffffffc0138c0e>] parport_pc_exit+0x76/0x468 [parport_pc]
+ [<ffffffff81128dbc>] SyS_delete_module+0x18c/0x230
+
+It is also easily reproducible on qemu with two dummy ports '-parallel
+/dev/null -parallel /dev/null'.
+
+So switch the order of killing the two structures. But since port is
+freed by parport_pc_unregister_port, we have to remember port->dev
+in a local variable.
+
+Perhaps nothing worse than the warning happens thanks to the device
+refcounting. We *should* be on the safe side.
+
+Signed-off-by: Jiri Slaby <[email protected]>
+Reviewed-by: Takashi Iwai <[email protected]>
+Tested-by: Martin Pluskal <[email protected]>
+Signed-off-by: Greg Kroah-Hartman <[email protected]>
+Acked-by: Takashi Iwai <[email protected]>
+
+---
+ drivers/parport/parport_pc.c |    7 ++++---
+ 1 file changed, 4 insertions(+), 3 deletions(-)
+
+--- a/drivers/parport/parport_pc.c
++++ b/drivers/parport/parport_pc.c
+@@ -3310,13 +3310,14 @@ static void __exit parport_pc_exit(void)
+       while (!list_empty(&ports_list)) {
+               struct parport_pc_private *priv;
+               struct parport *port;
++              struct device *dev;
+               priv = list_entry(ports_list.next,
+                                 struct parport_pc_private, list);
+               port = priv->port;
+-              if (port->dev && port->dev->bus == &platform_bus_type)
+-                      platform_device_unregister(
+-                              to_platform_device(port->dev));
++              dev = port->dev;
+               parport_pc_unregister_port(port);
++              if (dev && dev->bus == &platform_bus_type)
++                      platform_device_unregister(to_platform_device(dev));
+       }
+ }
+ 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/patches.fixes/x86-tls-validate-tls-entries-to-protect-espfix.patch 
new/patches.fixes/x86-tls-validate-tls-entries-to-protect-espfix.patch
--- old/patches.fixes/x86-tls-validate-tls-entries-to-protect-espfix.patch      
2014-12-17 19:20:30.000000000 +0100
+++ new/patches.fixes/x86-tls-validate-tls-entries-to-protect-espfix.patch      
1970-01-01 01:00:00.000000000 +0100
@@ -1,78 +0,0 @@
-From: Andy Lutomirski <[email protected]>
-Date: Thu, 4 Dec 2014 16:48:16 -0800
-Subject: x86/tls: Validate TLS entries to protect espfix
-Git-commit: 41bdc78544b8a93a9c6814b8bbbfef966272abbe
-Patch-mainline: v3.19-rc1
-References: bsc#909077,CVE-2014-8133
-
-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 <[email protected]>
-Acked-by: H. Peter Anvin <[email protected]>
-Cc: [email protected]
-Cc: Konrad Rzeszutek Wilk <[email protected]>
-Cc: Linus Torvalds <[email protected]>
-Cc: [email protected] <[email protected]>
-Cc: Willy Tarreau <[email protected]>
-Signed-off-by: Ingo Molnar <[email protected]>
-Acked-by: Borislav Petkov <[email protected]>
----
- arch/x86/kernel/tls.c | 23 +++++++++++++++++++++++
- 1 file changed, 23 insertions(+)
-
-Index: kernel/arch/x86/kernel/tls.c
-===================================================================
---- kernel.orig/arch/x86/kernel/tls.c
-+++ kernel/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_struc
-       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 *t
- {
-       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 *t
-       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));

++++++ patches.kernel.org.tar.bz2 ++++++
++++ 8320 lines of diff (skipped)

++++++ series.conf ++++++
--- /var/tmp/diff_new_pack.SILygs/_old  2015-01-22 21:46:23.000000000 +0100
+++ /var/tmp/diff_new_pack.SILygs/_new  2015-01-22 21:46:23.000000000 +0100
@@ -28,6 +28,8 @@
        # Send separate patches upstream if you find a problem...
        ########################################################
        patches.kernel.org/patch-3.18.1
+       patches.kernel.org/patch-3.18.1-2
+       patches.kernel.org/patch-3.18.2-3
 
         ########################################################
         # Build fixes that apply to the vanilla kernel too.
@@ -101,7 +103,6 @@
        patches.arch/x86_64-hpet-64bit-timer.patch
 
        # bsc#909077,CVE-2014-8133
-       patches.fixes/x86-tls-validate-tls-entries-to-protect-espfix.patch
 
 +needs_update  patches.arch/kvm-split-paravirt-ops-by-functionality
 +needs_update  patches.arch/kvm-only-export-selected-pv-ops-feature-structs
@@ -172,6 +173,7 @@
        
patches.arch/arm64-0007-arm64-Do-not-call-enable-PCI-resources-when-specify-.patch
        
patches.arch/arm64-0010-KVM-ARM-Hack-to-enable-VGIC-mapping-on-64k-PAGE_SIZE.patch
        
patches.arch/arm64-0011-Enable-CONFIG_COMPAT-also-for-64k-page-size.patch
+       patches.arch/arm64-0039-generic-pci.patch
 
        ########################################################
        # S/390
@@ -330,13 +332,14 @@
        patches.fixes/scsi-ibmvscsi-module_alias.patch
        patches.suse/sd_init.mark_majors_busy.patch
 
-       patches.fixes/blk-mq-Fix-uninitialized-kobject-at-CPU-hotplugging
 
        ########################################################
        # DRM/Video
        ########################################################
 +jeffm patches.fixes/nouveau-fix-race-with-fence-signaling
        patches.drivers/drm-Implement-O_NONBLOCK-support-on-dev-dri-cardN
+       patches.drivers/drm-i915-Don-t-call-intel_prepare_page_flip-multiple
+       patches.drivers/drm-radeon-fix-sad_count-check-for-dce3
 
        ########################################################
        # video4linux
@@ -400,6 +403,8 @@
 +hare  patches.suse/no-partition-scan
 
        patches.drivers/hp_accel-Add-support-for-HP-ZBook-15
+       patches.fixes/parport-parport_pc-do-not-remove-parent-devices-earl
+       patches.drivers/Bluetooth-Add-support-for-Broadcom-BCM20702A0-varian
 
        ########################################################
        # Other drivers we have added to the tree
@@ -433,8 +438,6 @@
        #
        ##########################################################
 
-       patches.fixes/KEYS-Fix-stale-key-registration-at-error-path
-
        ##########################################################
        # Audit
        ##########################################################

++++++ source-timestamp ++++++
--- /var/tmp/diff_new_pack.SILygs/_old  2015-01-22 21:46:23.000000000 +0100
+++ /var/tmp/diff_new_pack.SILygs/_new  2015-01-22 21:46:23.000000000 +0100
@@ -1,3 +1,3 @@
-2014-12-17 19:20:30 +0100
-GIT Revision: 5f2f35e1b1ef4889058158c8872bb83f41d51f88
+2015-01-19 13:38:51 +0100
+GIT Revision: c3e148f2cb3de15a805bb2897e8c76b097a39a51
 GIT Branch: stable

-- 
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to