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]
