Hello community, here is the log from the commit of package kernel-source for openSUSE:Factory checked in at 2015-11-06 00:04:03 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 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 2015-11-02 12:54:26.000000000 +0100 +++ /work/SRC/openSUSE:Factory/.kernel-source.new/kernel-debug.changes 2015-11-06 00:04:04.000000000 +0100 @@ -1,0 +2,13 @@ +Mon Nov 2 16:34:24 CET 2015 - [email protected] + +- rpm/kernel-binary.spec.in: sync with master +- commit 7b374a4 + +------------------------------------------------------------------- +Mon Nov 2 15:00:23 CET 2015 - [email protected] + +- Update to 4.3-final. + - 1 patch eliminated. +- commit e20b856 + +------------------------------------------------------------------- @@ -12 +25 @@ -- commit ef2823b +- commit 1b5a73d @@ -47,0 +61,2 @@ +- config: arm: Enable ADS7846 touchscreen driver + This SPI connected chip is common on RPi TFT displays. @@ -70,0 +86,2 @@ +- [media] media/vivid-osd: fix info leak in ioctl (CVE-2015-7884, + bnc#951626). @@ -75 +92 @@ -- commit 8031e24 +- commit f554650 @@ -85,0 +103,14 @@ +Thu Oct 22 08:34:29 CEST 2015 - [email protected] + +- supported.conf: Add pv-ops Xen drivers, 8250-base, and xhci-pci. +- commit ff3f596 + +------------------------------------------------------------------- +Wed Oct 21 15:55:58 CEST 2015 - [email protected] + +- config: arm: Enable CONFIG_PPS_CLIENT_GPIO + Set CONFIG_PPS_CLIENT_GPIO=m for all ARM configs to be able to use GPS + with PPS line connected to a GPIO, as a high-precision time reference. +- commit f01eb6a + +------------------------------------------------------------------- @@ -98,0 +130,22 @@ +Tue Oct 20 20:33:33 CEST 2015 - [email protected] + +- Disable leftover CONFIG_FW_LOADER_USER_HELPER_FALLBACK in armv7hl/* (boo#951260) +- commit 007f6ba + +------------------------------------------------------------------- +Tue Oct 20 20:32:31 CEST 2015 - [email protected] + +- [media] c8sectpfe: Remove select on + CONFIG_FW_LOADER_USER_HELPER_FALLBACK (boo#951260). +- drm/sti: Remove select of CONFIG_FW_LOADER_USER_HELPER_FALLBACK + (boo#951260). +- commit 23d5c78 + +------------------------------------------------------------------- +Tue Oct 20 17:19:55 CEST 2015 - [email protected] + +- Disable CONFIG_RT_GROUP_SCHED (boo#950955) + Even people originally demanded suggest to drop it now... +- commit 58efde7 + +------------------------------------------------------------------- @@ -111,0 +165,21 @@ +Mon Oct 19 19:25:24 CEST 2015 - [email protected] + +- config: Re-enable DEBUG_INFO on ec2 flavors. + It was disabled in commit a104accda85, but is enabled explicitly in the + spec file. The options that depend on it must be in the config file for + the build to succeed. +- commit 4415ce9 + +------------------------------------------------------------------- +Mon Oct 19 19:00:18 CEST 2015 - [email protected] + +- Update to 4.3-rc6. +- commit d6b2a93 + +------------------------------------------------------------------- +Fri Oct 16 16:34:28 CEST 2015 - [email protected] + +- Delete unused rpm/config-subst. +- commit 01841f4 + +------------------------------------------------------------------- @@ -144,0 +219,21 @@ +Thu Oct 15 16:28:49 CEST 2015 - [email protected] + +- Update Xen patches to 4.3-rc5 and c/s 1293. +- netback: coalesce (guest) RX SKBs as needed (bsc#919154). +- config.conf: Re-enable Xen and PV configs. +- Update config files. +- commit a104acc + +------------------------------------------------------------------- +Wed Oct 14 21:30:18 CEST 2015 - [email protected] + +- config: armv7hl: Enable new OMAP serial driver +- commit 54af7c7 + +------------------------------------------------------------------- +Mon Oct 12 16:01:33 CEST 2015 - [email protected] + +- Update to 4.3-rc5. +- commit 36c0ed4 + +------------------------------------------------------------------- @@ -151,0 +247,36 @@ +Mon Oct 5 13:40:15 CEST 2015 - [email protected] + +- Update config files. + Disable CONFIG_LEDS_BCM6328 and CONFIG_LEDS_BCM6358, as those + are MIPS and unlikely to exist on an ARM board. +- commit efc53bd + +------------------------------------------------------------------- +Mon Oct 5 05:22:22 CEST 2015 - [email protected] + +- Update to 4.3-rc4. +- commit 48d7e75 + +------------------------------------------------------------------- +Sun Oct 4 21:19:16 CEST 2015 - [email protected] + +- config: armv7hl: Sync vanilla with default + Let vanilla follow changes made in default. +- commit 00ad273 + +------------------------------------------------------------------- +Sun Oct 4 20:06:44 CEST 2015 - [email protected] + +- config: armv7hl: Disable all msm8916/apq8016 options + They are arm64 SoCs, so not needed for armv7hl. +- commit b333226 + +------------------------------------------------------------------- +Sun Oct 4 18:09:55 CEST 2015 - [email protected] + +- config: armv7hl: Enable preemption + This patch is to follow 1fcdac3f3d277ffea3462af635a3dea6b854a09a. + [AF/MK: Enable preemption for vanilla config as well] +- commit d795f96 + +------------------------------------------------------------------- @@ -163,0 +295,3 @@ +- config: armv7hl: Enable missing STMMAC Ethernet options + This attempts to fix regressions from 4.1 like built-in Ethernet on + Cubietruck not working. @@ -170 +304 @@ -- commit 35c44c6 +- commit 7a85c9f @@ -177 +311,8 @@ -- commit 1193b90 +- commit fee03a3 + +------------------------------------------------------------------- +Wed Sep 30 02:34:37 CEST 2015 - [email protected] + +- Update config files. (bsc#947816) + Put # CONFIG_KEXEC_VERIFY_SIG is not set (bsc#947816) +- commit ab4942d @@ -186,0 +328,7 @@ +Wed Sep 30 01:37:00 CEST 2015 - [email protected] + +- Update to 4.3-rc3. +- Eliminated 1 patch. +- commit 66bc908 + +------------------------------------------------------------------- @@ -204,0 +353,7 @@ +Fri Sep 25 22:51:28 CEST 2015 - [email protected] + +- Delete patches.suse/kconfig-automate-kernel-desktop. + No longer needed. +- commit 74bcdcc + +------------------------------------------------------------------- @@ -216,0 +372,29 @@ +Wed Sep 23 14:41:58 CEST 2015 - [email protected] + +- Backport of https://lkml.org/lkml/2015/9/11/507 + Fixes a build issue with aarch64, see + http://www.spinics.net/lists/arm-kernel/msg446809.html. +- Update config files. +- commit 2947252 + +------------------------------------------------------------------- +Wed Sep 23 13:49:33 CEST 2015 - [email protected] + +- Delete + patches.arch/arm64-0007-arm64-Do-not-call-enable-PCI-resources-when-specify-.patch. +- commit a608d6a + +------------------------------------------------------------------- +Wed Sep 23 13:47:42 CEST 2015 - [email protected] + +- Update x86 config files: CONFIG_SURFACE_PRO3_BUTTON=m ++++ 206 more lines (skipped) ++++ between /work/SRC/openSUSE:Factory/kernel-source/kernel-debug.changes ++++ and /work/SRC/openSUSE:Factory/.kernel-source.new/kernel-debug.changes kernel-default.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-pv.changes: same change kernel-source.changes: same change kernel-syms.changes: same change kernel-vanilla.changes: same change kernel-xen.changes: same change Old: ---- linux-4.2.tar.xz New: ---- linux-4.3.tar.xz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ kernel-debug.spec ++++++ --- /var/tmp/diff_new_pack.RKdqmO/_old 2015-11-06 00:04:16.000000000 +0100 +++ /var/tmp/diff_new_pack.RKdqmO/_new 2015-11-06 00:04:16.000000000 +0100 @@ -19,8 +19,8 @@ # This makes the OBS store the project cert as %_sourcedir/_projectcert.crt # needssslcertforbuild -%define srcversion 4.2 -%define patchversion 4.2.5 +%define srcversion 4.3 +%define patchversion 4.3.0 %define variant %{nil} %define vanilla_only 0 @@ -58,9 +58,9 @@ Summary: A Debug Version of the Kernel License: GPL-2.0 Group: System/Kernel -Version: 4.2.5 +Version: 4.3.0 %if 0%{?is_kotd} -Release: <RELEASE>.g0491388 +Release: <RELEASE>.g7b374a4 %else Release: 0 %endif @@ -530,6 +530,11 @@ %if %CONFIG_EFI_STUB == "y" BRP_PESIGN_FILES="$BRP_PESIGN_FILES /boot/vmlinuz-%kernelrelease-%build_flavor" %endif +%ifarch %ix86 +# XXX: do not sign on x86, as the repackaging changes kernel-pae +# from i686 to i586 +BRP_PESIGN_FILES="" +%endif # get rid of /usr/lib/rpm/brp-strip-debug # strip removes too much from the vmlinux ELF binary kernel-default.spec: same change ++++++ kernel-docs.spec ++++++ --- /var/tmp/diff_new_pack.RKdqmO/_old 2015-11-06 00:04:16.000000000 +0100 +++ /var/tmp/diff_new_pack.RKdqmO/_new 2015-11-06 00:04:16.000000000 +0100 @@ -16,7 +16,7 @@ # -%define patchversion 4.2.5 +%define patchversion 4.3.0 %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: 4.2.5 +Version: 4.3.0 %if 0%{?is_kotd} -Release: <RELEASE>.g0491388 +Release: <RELEASE>.g7b374a4 %else Release: 0 %endif ++++++ kernel-ec2.spec ++++++ --- /var/tmp/diff_new_pack.RKdqmO/_old 2015-11-06 00:04:17.000000000 +0100 +++ /var/tmp/diff_new_pack.RKdqmO/_new 2015-11-06 00:04:17.000000000 +0100 @@ -19,8 +19,8 @@ # This makes the OBS store the project cert as %_sourcedir/_projectcert.crt # needssslcertforbuild -%define srcversion 4.2 -%define patchversion 4.2.5 +%define srcversion 4.3 +%define patchversion 4.3.0 %define variant %{nil} %define vanilla_only 0 @@ -58,9 +58,9 @@ Summary: The Amazon EC2 Xen Kernel License: GPL-2.0 Group: System/Kernel -Version: 4.2.5 +Version: 4.3.0 %if 0%{?is_kotd} -Release: <RELEASE>.g0491388 +Release: <RELEASE>.g7b374a4 %else Release: 0 %endif @@ -526,6 +526,11 @@ %if %CONFIG_EFI_STUB == "y" BRP_PESIGN_FILES="$BRP_PESIGN_FILES /boot/vmlinuz-%kernelrelease-%build_flavor" %endif +%ifarch %ix86 +# XXX: do not sign on x86, as the repackaging changes kernel-pae +# from i686 to i586 +BRP_PESIGN_FILES="" +%endif # get rid of /usr/lib/rpm/brp-strip-debug # strip removes too much from the vmlinux ELF binary kernel-lpae.spec: same change ++++++ kernel-obs-build.spec ++++++ --- /var/tmp/diff_new_pack.RKdqmO/_old 2015-11-06 00:04:17.000000000 +0100 +++ /var/tmp/diff_new_pack.RKdqmO/_new 2015-11-06 00:04:17.000000000 +0100 @@ -19,7 +19,7 @@ #!BuildIgnore: post-build-checks -%define patchversion 4.2.5 +%define patchversion 4.3.0 %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: 4.2.5 +Version: 4.3.0 %if 0%{?is_kotd} -Release: <RELEASE>.g0491388 +Release: <RELEASE>.g7b374a4 %else Release: 0 %endif ++++++ kernel-obs-qa-xen.spec ++++++ --- /var/tmp/diff_new_pack.RKdqmO/_old 2015-11-06 00:04:17.000000000 +0100 +++ /var/tmp/diff_new_pack.RKdqmO/_new 2015-11-06 00:04:17.000000000 +0100 @@ -17,7 +17,7 @@ # needsrootforbuild -%define patchversion 4.2.5 +%define patchversion 4.3.0 %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: 4.2.5 +Version: 4.3.0 %if 0%{?is_kotd} -Release: <RELEASE>.g0491388 +Release: <RELEASE>.g7b374a4 %else Release: 0 %endif kernel-obs-qa.spec: same change ++++++ kernel-pae.spec ++++++ --- /var/tmp/diff_new_pack.RKdqmO/_old 2015-11-06 00:04:17.000000000 +0100 +++ /var/tmp/diff_new_pack.RKdqmO/_new 2015-11-06 00:04:17.000000000 +0100 @@ -19,8 +19,8 @@ # This makes the OBS store the project cert as %_sourcedir/_projectcert.crt # needssslcertforbuild -%define srcversion 4.2 -%define patchversion 4.2.5 +%define srcversion 4.3 +%define patchversion 4.3.0 %define variant %{nil} %define vanilla_only 0 @@ -58,9 +58,9 @@ Summary: Kernel with PAE Support License: GPL-2.0 Group: System/Kernel -Version: 4.2.5 +Version: 4.3.0 %if 0%{?is_kotd} -Release: <RELEASE>.g0491388 +Release: <RELEASE>.g7b374a4 %else Release: 0 %endif @@ -542,6 +542,11 @@ %if %CONFIG_EFI_STUB == "y" BRP_PESIGN_FILES="$BRP_PESIGN_FILES /boot/vmlinuz-%kernelrelease-%build_flavor" %endif +%ifarch %ix86 +# XXX: do not sign on x86, as the repackaging changes kernel-pae +# from i686 to i586 +BRP_PESIGN_FILES="" +%endif # get rid of /usr/lib/rpm/brp-strip-debug # strip removes too much from the vmlinux ELF binary ++++++ kernel-pv.spec ++++++ --- /var/tmp/diff_new_pack.RKdqmO/_old 2015-11-06 00:04:17.000000000 +0100 +++ /var/tmp/diff_new_pack.RKdqmO/_new 2015-11-06 00:04:17.000000000 +0100 @@ -19,8 +19,8 @@ # This makes the OBS store the project cert as %_sourcedir/_projectcert.crt # needssslcertforbuild -%define srcversion 4.2 -%define patchversion 4.2.5 +%define srcversion 4.3 +%define patchversion 4.3.0 %define variant %{nil} %define vanilla_only 0 @@ -58,9 +58,9 @@ Summary: The para-virtualized Kernel License: GPL-2.0 Group: System/Kernel -Version: 4.2.5 +Version: 4.3.0 %if 0%{?is_kotd} -Release: <RELEASE>.g0491388 +Release: <RELEASE>.g7b374a4 %else Release: 0 %endif @@ -525,6 +525,11 @@ %if %CONFIG_EFI_STUB == "y" BRP_PESIGN_FILES="$BRP_PESIGN_FILES /boot/vmlinuz-%kernelrelease-%build_flavor" %endif +%ifarch %ix86 +# XXX: do not sign on x86, as the repackaging changes kernel-pae +# from i686 to i586 +BRP_PESIGN_FILES="" +%endif # get rid of /usr/lib/rpm/brp-strip-debug # strip removes too much from the vmlinux ELF binary ++++++ kernel-source.spec ++++++ --- /var/tmp/diff_new_pack.RKdqmO/_old 2015-11-06 00:04:17.000000000 +0100 +++ /var/tmp/diff_new_pack.RKdqmO/_new 2015-11-06 00:04:17.000000000 +0100 @@ -17,8 +17,8 @@ # icecream 0 -%define srcversion 4.2 -%define patchversion 4.2.5 +%define srcversion 4.3 +%define patchversion 4.3.0 %define variant %{nil} %define vanilla_only 0 @@ -30,9 +30,9 @@ Summary: The Linux Kernel Sources License: GPL-2.0 Group: Development/Sources -Version: 4.2.5 +Version: 4.3.0 %if 0%{?is_kotd} -Release: <RELEASE>.g0491388 +Release: <RELEASE>.g7b374a4 %else Release: 0 %endif ++++++ kernel-syms.spec ++++++ --- /var/tmp/diff_new_pack.RKdqmO/_old 2015-11-06 00:04:17.000000000 +0100 +++ /var/tmp/diff_new_pack.RKdqmO/_new 2015-11-06 00:04:17.000000000 +0100 @@ -24,10 +24,10 @@ Summary: Kernel Symbol Versions (modversions) License: GPL-2.0 Group: Development/Sources -Version: 4.2.5 +Version: 4.3.0 %if %using_buildservice %if 0%{?is_kotd} -Release: <RELEASE>.g0491388 +Release: <RELEASE>.g7b374a4 %else Release: 0 %endif ++++++ kernel-vanilla.spec ++++++ --- /var/tmp/diff_new_pack.RKdqmO/_old 2015-11-06 00:04:17.000000000 +0100 +++ /var/tmp/diff_new_pack.RKdqmO/_new 2015-11-06 00:04:17.000000000 +0100 @@ -19,8 +19,8 @@ # This makes the OBS store the project cert as %_sourcedir/_projectcert.crt # needssslcertforbuild -%define srcversion 4.2 -%define patchversion 4.2.5 +%define srcversion 4.3 +%define patchversion 4.3.0 %define variant %{nil} %define vanilla_only 0 @@ -58,9 +58,9 @@ Summary: The Standard Kernel - without any SUSE patches License: GPL-2.0 Group: System/Kernel -Version: 4.2.5 +Version: 4.3.0 %if 0%{?is_kotd} -Release: <RELEASE>.g0491388 +Release: <RELEASE>.g7b374a4 %else Release: 0 %endif @@ -523,6 +523,11 @@ %if %CONFIG_EFI_STUB == "y" BRP_PESIGN_FILES="$BRP_PESIGN_FILES /boot/vmlinuz-%kernelrelease-%build_flavor" %endif +%ifarch %ix86 +# XXX: do not sign on x86, as the repackaging changes kernel-pae +# from i686 to i586 +BRP_PESIGN_FILES="" +%endif # get rid of /usr/lib/rpm/brp-strip-debug # strip removes too much from the vmlinux ELF binary kernel-xen.spec: same change ++++++ config.sh ++++++ --- /var/tmp/diff_new_pack.RKdqmO/_old 2015-11-06 00:04:17.000000000 +0100 +++ /var/tmp/diff_new_pack.RKdqmO/_new 2015-11-06 00:04:17.000000000 +0100 @@ -1,5 +1,5 @@ # The version of the main tarball to use -SRCVERSION=4.2 +SRCVERSION=4.3 # variant of the kernel-source package, either empty or "-rt" VARIANT= # buildservice projects to build the kernel against ++++++ config.tar.bz2 ++++++ ++++ 23791 lines of diff (skipped) ++++++ kernel-binary.spec.in ++++++ --- /var/tmp/diff_new_pack.RKdqmO/_old 2015-11-06 00:04:18.000000000 +0100 +++ /var/tmp/diff_new_pack.RKdqmO/_new 2015-11-06 00:04:18.000000000 +0100 @@ -399,6 +399,11 @@ %if %CONFIG_EFI_STUB == "y" BRP_PESIGN_FILES="$BRP_PESIGN_FILES /boot/vmlinuz-%kernelrelease-%build_flavor" %endif +%ifarch %ix86 +# XXX: do not sign on x86, as the repackaging changes kernel-pae +# from i686 to i586 +BRP_PESIGN_FILES="" +%endif # get rid of /usr/lib/rpm/brp-strip-debug # strip removes too much from the vmlinux ELF binary ++++++ linux-4.2.tar.xz -> linux-4.3.tar.xz ++++++ /work/SRC/openSUSE:Factory/kernel-source/linux-4.2.tar.xz /work/SRC/openSUSE:Factory/.kernel-source.new/linux-4.3.tar.xz differ: char 26, line 1 ++++++ patches.arch.tar.bz2 ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.arch/arm64-0004-net-xgbe-Add-A0-silicon-support.patch new/patches.arch/arm64-0004-net-xgbe-Add-A0-silicon-support.patch --- old/patches.arch/arm64-0004-net-xgbe-Add-A0-silicon-support.patch 2015-07-06 22:44:45.000000000 +0200 +++ new/patches.arch/arm64-0004-net-xgbe-Add-A0-silicon-support.patch 2015-09-30 01:37:00.000000000 +0200 @@ -10369,12 +10369,13 @@ +#endif --- a/drivers/net/phy/Makefile +++ b/drivers/net/phy/Makefile -@@ -34,4 +34,5 @@ obj-$(CONFIG_MDIO_BUS_MUX_MMIOREG) += md +@@ -34,5 +34,6 @@ obj-$(CONFIG_MDIO_BUS_MUX_MMIOREG) += md obj-$(CONFIG_MDIO_BUS_MUX_MMIOREG) += mdio-mux-mmioreg.o obj-$(CONFIG_MDIO_SUN4I) += mdio-sun4i.o obj-$(CONFIG_MDIO_MOXART) += mdio-moxart.o +obj-$(CONFIG_AMD_XGBE_PHY) += amd-xgbe-phy-a0.o obj-$(CONFIG_MDIO_BCM_UNIMAC) += mdio-bcm-unimac.o + obj-$(CONFIG_MICROCHIP_PHY) += microchip.o --- /dev/null +++ b/drivers/net/phy/amd-xgbe-phy-a0.c @@ -0,0 +1,1800 @@ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.arch/arm64-0006-arm64-Select-reboot-driver-for-X-Gene-platform.patch new/patches.arch/arm64-0006-arm64-Select-reboot-driver-for-X-Gene-platform.patch --- old/patches.arch/arm64-0006-arm64-Select-reboot-driver-for-X-Gene-platform.patch 2015-07-06 22:44:45.000000000 +0200 +++ new/patches.arch/arm64-0006-arm64-Select-reboot-driver-for-X-Gene-platform.patch 2015-09-30 01:37:00.000000000 +0200 @@ -16,8 +16,8 @@ diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig index 9532f8d..d9784c8 100644 ---- a/arch/arm64/Kconfig -+++ b/arch/arm64/Kconfig +--- a/arch/arm64/Kconfig.platforms ++++ b/arch/arm64/Kconfig.platforms @@ -159,6 +159,8 @@ config ARCH_VEXPRESS config ARCH_XGENE diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.arch/arm64-0007-arm64-Do-not-call-enable-PCI-resources-when-specify-.patch new/patches.arch/arm64-0007-arm64-Do-not-call-enable-PCI-resources-when-specify-.patch --- old/patches.arch/arm64-0007-arm64-Do-not-call-enable-PCI-resources-when-specify-.patch 2015-07-06 22:44:45.000000000 +0200 +++ new/patches.arch/arm64-0007-arm64-Do-not-call-enable-PCI-resources-when-specify-.patch 1970-01-01 01:00:00.000000000 +0100 @@ -1,44 +0,0 @@ -From 64cca9d43139d05744b8be00ccf54d42e58d278f Mon Sep 17 00:00:00 2001 -From: Suravee Suthikulpanit <[email protected]> -Date: Sun, 28 Sep 2014 15:53:29 -0500 -Subject: [PATCH 07/10] arm64: Do not call enable PCI resources when specify - PCI_PROBE_ONLY -Patch-mainline: No -References: bnc#902632 - -When specify PCI_PROBE_ONLY, the resource parent does not get assigned. -Therefore, pci_enable_resources() return error saying that -"BAR x not claimed". - -Note: This same logic is also used in the arch/arm/kernel/bios32.c - -Cc: Liviu Dudau <[email protected]> -Cc: Bjorn Helgaas <[email protected]> -Cc: Will Deacon <[email protected]> -Cc: Catalin Marinas <[email protected]> -Signed-off-by: Suravee Suthikulpanit <[email protected]> -Signed-off-by: Alexander Graf <[email protected]> - ---- - arch/arm64/kernel/pci.c | 8 ++++++++ - 1 file changed, 8 insertions(+) - -diff --git a/arch/arm64/kernel/pci.c b/arch/arm64/kernel/pci.c -index ce5836c..7fd4d2b 100644 ---- a/arch/arm64/kernel/pci.c -+++ b/arch/arm64/kernel/pci.c -@@ -68,3 +68,11 @@ void pci_bus_assign_domain_nr(struct pci_bus *bus, struct device *parent) - return NULL; - } - #endif -+ -+int pcibios_enable_device(struct pci_dev *dev, int mask) -+{ -+ if (pci_has_flag(PCI_PROBE_ONLY)) -+ return 0; -+ -+ return pci_enable_resources(dev, mask); -+} --- -2.1.0 - ++++++ patches.drivers.tar.bz2 ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.drivers/0001-qmi_wwan-Add-support-for-Dell-Wireless-5809e-4G-Mode.patch new/patches.drivers/0001-qmi_wwan-Add-support-for-Dell-Wireless-5809e-4G-Mode.patch --- old/patches.drivers/0001-qmi_wwan-Add-support-for-Dell-Wireless-5809e-4G-Mode.patch 2015-10-28 08:49:09.000000000 +0100 +++ new/patches.drivers/0001-qmi_wwan-Add-support-for-Dell-Wireless-5809e-4G-Mode.patch 1970-01-01 01:00:00.000000000 +0100 @@ -1,35 +0,0 @@ -From 22ebbe4c34da96f1e283baae5956e39d629c18a3 Mon Sep 17 00:00:00 2001 -From: Pieter Hollants <[email protected]> -Date: Mon, 20 Jul 2015 10:14:13 +0200 -Subject: [PATCH] qmi_wwan: Add support for Dell Wireless 5809e 4G Modem -References: bnc#937974 -Git-Commit: 2070c48cf2b78af89ba529c00992eaaa18df8ef7 -Patch-Mainline: Queued in subsystem maintainer repository -Git-repo: http://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next.git - -Added the USB IDs 0x413c:0x81b1 for the "Dell Wireless 5809e Gobi(TM) 4G -LTE Mobile Broadband Card", a Dell-branded Sierra Wireless EM7305 LTE -card in M.2 form factor, used eg. in Dell's Latitude E7540 Notebook -series. - -Signed-off-by: Pieter Hollants <[email protected]> -Signed-off-by: Oliver Neukum <[email protected]> ---- - drivers/net/usb/qmi_wwan.c | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/drivers/net/usb/qmi_wwan.c b/drivers/net/usb/qmi_wwan.c -index f603f36..f06c687 100644 ---- a/drivers/net/usb/qmi_wwan.c -+++ b/drivers/net/usb/qmi_wwan.c -@@ -784,6 +784,7 @@ static const struct usb_device_id products[] = { - {QMI_FIXED_INTF(0x413c, 0x81a4, 8)}, /* Dell Wireless 5570e HSPA+ (42Mbps) Mobile Broadband Card */ - {QMI_FIXED_INTF(0x413c, 0x81a8, 8)}, /* Dell Wireless 5808 Gobi(TM) 4G LTE Mobile Broadband Card */ - {QMI_FIXED_INTF(0x413c, 0x81a9, 8)}, /* Dell Wireless 5808e Gobi(TM) 4G LTE Mobile Broadband Card */ -+ {QMI_FIXED_INTF(0x413c, 0x81b1, 8)}, /* Dell Wireless 5809e Gobi(TM) 4G LTE Mobile Broadband Card */ - {QMI_FIXED_INTF(0x03f0, 0x4e1d, 8)}, /* HP lt4111 LTE/EV-DO/HSPA+ Gobi 4G Module */ - {QMI_FIXED_INTF(0x03f0, 0x581d, 4)}, /* HP lt4112 LTE/HSPA+ Gobi 4G Module (Huawei me906e) */ - --- -2.1.4 - diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.drivers/0001-vmwgfx-Rework-device-initialization.patch new/patches.drivers/0001-vmwgfx-Rework-device-initialization.patch --- old/patches.drivers/0001-vmwgfx-Rework-device-initialization.patch 2015-10-28 08:49:09.000000000 +0100 +++ new/patches.drivers/0001-vmwgfx-Rework-device-initialization.patch 1970-01-01 01:00:00.000000000 +0100 @@ -1,872 +0,0 @@ -From 153b3d5b037eeb01d1e5610958a5bbd79885b2be Mon Sep 17 00:00:00 2001 -From: Thomas Hellstrom <[email protected]> -Date: Thu, 25 Jun 2015 10:47:43 -0700 -Subject: [PATCH] vmwgfx: Rework device initialization -Git-commit: 153b3d5b037eeb01d1e5610958a5bbd79885b2be -Patch-mainline: v4.3-rc1 -References: boo#934266 - -This commit reworks device initialization so that we always enable the -FIFO at driver load, deferring SVGA enable until either first modeset -or fbdev enable. -This should always leave the fifo properly enabled for render- and -control nodes. -In addition, -*) We disable the use of VRAM when SVGA is not enabled. -*) We simplify PM support so that we only throw out resources on hibernate, -not on suspend, since the device keeps its state on suspend. - -Signed-off-by: Thomas Hellstrom <[email protected]> -Reviewed-by: Sinclair Yeh <[email protected]> -Acked-by: Takashi Iwai <[email protected]> - ---- - drivers/gpu/drm/vmwgfx/vmwgfx_context.c | 8 - drivers/gpu/drm/vmwgfx/vmwgfx_drv.c | 337 +++++++++++++++++--------------- - drivers/gpu/drm/vmwgfx/vmwgfx_drv.h | 19 + - drivers/gpu/drm/vmwgfx/vmwgfx_fb.c | 4 - drivers/gpu/drm/vmwgfx/vmwgfx_fifo.c | 12 - - drivers/gpu/drm/vmwgfx/vmwgfx_ldu.c | 1 - drivers/gpu/drm/vmwgfx/vmwgfx_mob.c | 6 - drivers/gpu/drm/vmwgfx/vmwgfx_scrn.c | 1 - drivers/gpu/drm/vmwgfx/vmwgfx_shader.c | 4 - drivers/gpu/drm/vmwgfx/vmwgfx_surface.c | 12 - - 10 files changed, 230 insertions(+), 174 deletions(-) - ---- a/drivers/gpu/drm/vmwgfx/vmwgfx_context.c -+++ b/drivers/gpu/drm/vmwgfx/vmwgfx_context.c -@@ -140,7 +140,7 @@ static void vmw_hw_context_destroy(struc - cmd->body.cid = cpu_to_le32(res->id); - - vmw_fifo_commit(dev_priv, sizeof(*cmd)); -- vmw_3d_resource_dec(dev_priv, false); -+ vmw_fifo_resource_dec(dev_priv); - } - - static int vmw_gb_context_init(struct vmw_private *dev_priv, -@@ -220,7 +220,7 @@ static int vmw_context_init(struct vmw_p - cmd->body.cid = cpu_to_le32(res->id); - - vmw_fifo_commit(dev_priv, sizeof(*cmd)); -- (void) vmw_3d_resource_inc(dev_priv, false); -+ vmw_fifo_resource_inc(dev_priv); - vmw_resource_activate(res, vmw_hw_context_destroy); - return 0; - -@@ -281,7 +281,7 @@ static int vmw_gb_context_create(struct - cmd->header.size = sizeof(cmd->body); - cmd->body.cid = res->id; - vmw_fifo_commit(dev_priv, sizeof(*cmd)); -- (void) vmw_3d_resource_inc(dev_priv, false); -+ vmw_fifo_resource_inc(dev_priv); - - return 0; - -@@ -414,7 +414,7 @@ static int vmw_gb_context_destroy(struct - if (dev_priv->query_cid == res->id) - dev_priv->query_cid_valid = false; - vmw_resource_release_id(res); -- vmw_3d_resource_dec(dev_priv, false); -+ vmw_fifo_resource_dec(dev_priv); - - return 0; - } ---- a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c -+++ b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c -@@ -339,24 +339,47 @@ static int vmw_dummy_query_bo_create(str - return ret; - } - --static int vmw_request_device(struct vmw_private *dev_priv) -+/** -+ * vmw_request_device_late - Perform late device setup -+ * -+ * @dev_priv: Pointer to device private. -+ * -+ * This function performs setup of otables and enables large command -+ * buffer submission. These tasks are split out to a separate function -+ * because it reverts vmw_release_device_early and is intended to be used -+ * by an error path in the hibernation code. -+ */ -+static int vmw_request_device_late(struct vmw_private *dev_priv) - { - int ret; - -- ret = vmw_fifo_init(dev_priv, &dev_priv->fifo); -- if (unlikely(ret != 0)) { -- DRM_ERROR("Unable to initialize FIFO.\n"); -- return ret; -- } -- vmw_fence_fifo_up(dev_priv->fman); - if (dev_priv->has_mob) { - ret = vmw_otables_setup(dev_priv); - if (unlikely(ret != 0)) { - DRM_ERROR("Unable to initialize " - "guest Memory OBjects.\n"); -- goto out_no_mob; -+ return ret; - } - } -+ -+ return 0; -+} -+ -+static int vmw_request_device(struct vmw_private *dev_priv) -+{ -+ int ret; -+ -+ ret = vmw_fifo_init(dev_priv, &dev_priv->fifo); -+ if (unlikely(ret != 0)) { -+ DRM_ERROR("Unable to initialize FIFO.\n"); -+ return ret; -+ } -+ vmw_fence_fifo_up(dev_priv->fman); -+ -+ ret = vmw_request_device_late(dev_priv); -+ if (ret) -+ goto out_no_mob; -+ - ret = vmw_dummy_query_bo_create(dev_priv); - if (unlikely(ret != 0)) - goto out_no_query_bo; -@@ -364,15 +387,25 @@ static int vmw_request_device(struct vmw - return 0; - - out_no_query_bo: -- if (dev_priv->has_mob) -+ if (dev_priv->has_mob) { -+ (void) ttm_bo_evict_mm(&dev_priv->bdev, VMW_PL_MOB); - vmw_otables_takedown(dev_priv); -+ } - out_no_mob: - vmw_fence_fifo_down(dev_priv->fman); - vmw_fifo_release(dev_priv, &dev_priv->fifo); - return ret; - } - --static void vmw_release_device(struct vmw_private *dev_priv) -+/** -+ * vmw_release_device_early - Early part of fifo takedown. -+ * -+ * @dev_priv: Pointer to device private struct. -+ * -+ * This is the first part of command submission takedown, to be called before -+ * buffer management is taken down. -+ */ -+static void vmw_release_device_early(struct vmw_private *dev_priv) - { - /* - * Previous destructions should've released -@@ -382,64 +415,24 @@ static void vmw_release_device(struct vm - BUG_ON(dev_priv->pinned_bo != NULL); - - ttm_bo_unref(&dev_priv->dummy_query_bo); -- if (dev_priv->has_mob) -+ if (dev_priv->has_mob) { -+ ttm_bo_evict_mm(&dev_priv->bdev, VMW_PL_MOB); - vmw_otables_takedown(dev_priv); -- vmw_fence_fifo_down(dev_priv->fman); -- vmw_fifo_release(dev_priv, &dev_priv->fifo); --} -- -- --/** -- * Increase the 3d resource refcount. -- * If the count was prevously zero, initialize the fifo, switching to svga -- * mode. Note that the master holds a ref as well, and may request an -- * explicit switch to svga mode if fb is not running, using @unhide_svga. -- */ --int vmw_3d_resource_inc(struct vmw_private *dev_priv, -- bool unhide_svga) --{ -- int ret = 0; -- -- mutex_lock(&dev_priv->release_mutex); -- if (unlikely(dev_priv->num_3d_resources++ == 0)) { -- ret = vmw_request_device(dev_priv); -- if (unlikely(ret != 0)) -- --dev_priv->num_3d_resources; -- } else if (unhide_svga) { -- vmw_write(dev_priv, SVGA_REG_ENABLE, -- vmw_read(dev_priv, SVGA_REG_ENABLE) & -- ~SVGA_REG_ENABLE_HIDE); - } -- -- mutex_unlock(&dev_priv->release_mutex); -- return ret; - } - - /** -- * Decrease the 3d resource refcount. -- * If the count reaches zero, disable the fifo, switching to vga mode. -- * Note that the master holds a refcount as well, and may request an -- * explicit switch to vga mode when it releases its refcount to account -- * for the situation of an X server vt switch to VGA with 3d resources -- * active. -+ * vmw_release_device_late - Late part of fifo takedown. -+ * -+ * @dev_priv: Pointer to device private struct. -+ * -+ * This is the last part of the command submission takedown, to be called when -+ * command submission is no longer needed. It may wait on pending fences. - */ --void vmw_3d_resource_dec(struct vmw_private *dev_priv, -- bool hide_svga) -+static void vmw_release_device_late(struct vmw_private *dev_priv) - { -- int32_t n3d; -- -- mutex_lock(&dev_priv->release_mutex); -- if (unlikely(--dev_priv->num_3d_resources == 0)) -- vmw_release_device(dev_priv); -- else if (hide_svga) -- vmw_write(dev_priv, SVGA_REG_ENABLE, -- vmw_read(dev_priv, SVGA_REG_ENABLE) | -- SVGA_REG_ENABLE_HIDE); -- -- n3d = (int32_t) dev_priv->num_3d_resources; -- mutex_unlock(&dev_priv->release_mutex); -- -- BUG_ON(n3d < 0); -+ vmw_fence_fifo_down(dev_priv->fman); -+ vmw_fifo_release(dev_priv, &dev_priv->fifo); - } - - /** -@@ -603,6 +596,7 @@ static int vmw_driver_load(struct drm_de - spin_lock_init(&dev_priv->hw_lock); - spin_lock_init(&dev_priv->waiter_lock); - spin_lock_init(&dev_priv->cap_lock); -+ spin_lock_init(&dev_priv->svga_lock); - - for (i = vmw_res_context; i < vmw_res_max; ++i) { - idr_init(&dev_priv->res_idr[i]); -@@ -714,17 +708,6 @@ static int vmw_driver_load(struct drm_de - dev_priv->active_master = &dev_priv->fbdev_master; - - -- ret = ttm_bo_device_init(&dev_priv->bdev, -- dev_priv->bo_global_ref.ref.object, -- &vmw_bo_driver, -- dev->anon_inode->i_mapping, -- VMWGFX_FILE_PAGE_OFFSET, -- false); -- if (unlikely(ret != 0)) { -- DRM_ERROR("Failed initializing TTM buffer object driver.\n"); -- goto out_err1; -- } -- - dev_priv->mmio_mtrr = arch_phys_wc_add(dev_priv->mmio_start, - dev_priv->mmio_size); - -@@ -787,13 +770,28 @@ static int vmw_driver_load(struct drm_de - goto out_no_fman; - } - -+ ret = ttm_bo_device_init(&dev_priv->bdev, -+ dev_priv->bo_global_ref.ref.object, -+ &vmw_bo_driver, -+ dev->anon_inode->i_mapping, -+ VMWGFX_FILE_PAGE_OFFSET, -+ false); -+ if (unlikely(ret != 0)) { -+ DRM_ERROR("Failed initializing TTM buffer object driver.\n"); -+ goto out_no_bdev; -+ } - -+ /* -+ * Enable VRAM, but initially don't use it until SVGA is enabled and -+ * unhidden. -+ */ - ret = ttm_bo_init_mm(&dev_priv->bdev, TTM_PL_VRAM, - (dev_priv->vram_size >> PAGE_SHIFT)); - if (unlikely(ret != 0)) { - DRM_ERROR("Failed initializing memory manager for VRAM.\n"); - goto out_no_vram; - } -+ dev_priv->bdev.man[TTM_PL_VRAM].use_type = false; - - dev_priv->has_gmr = true; - if (((dev_priv->capabilities & (SVGA_CAP_GMR | SVGA_CAP_GMR2)) == 0) || -@@ -814,18 +812,18 @@ static int vmw_driver_load(struct drm_de - } - } - -- vmw_kms_save_vga(dev_priv); -- -- /* Start kms and overlay systems, needs fifo. */ - ret = vmw_kms_init(dev_priv); - if (unlikely(ret != 0)) - goto out_no_kms; - vmw_overlay_init(dev_priv); - -+ ret = vmw_request_device(dev_priv); -+ if (ret) -+ goto out_no_fifo; -+ - if (dev_priv->enable_fb) { -- ret = vmw_3d_resource_inc(dev_priv, true); -- if (unlikely(ret != 0)) -- goto out_no_fifo; -+ vmw_fifo_resource_inc(dev_priv); -+ vmw_svga_enable(dev_priv); - vmw_fb_init(dev_priv); - } - -@@ -838,13 +836,14 @@ out_no_fifo: - vmw_overlay_close(dev_priv); - vmw_kms_close(dev_priv); - out_no_kms: -- vmw_kms_restore_vga(dev_priv); - if (dev_priv->has_mob) - (void) ttm_bo_clean_mm(&dev_priv->bdev, VMW_PL_MOB); - if (dev_priv->has_gmr) - (void) ttm_bo_clean_mm(&dev_priv->bdev, VMW_PL_GMR); - (void)ttm_bo_clean_mm(&dev_priv->bdev, TTM_PL_VRAM); - out_no_vram: -+ (void)ttm_bo_device_release(&dev_priv->bdev); -+out_no_bdev: - vmw_fence_manager_takedown(dev_priv->fman); - out_no_fman: - if (dev_priv->capabilities & SVGA_CAP_IRQMASK) -@@ -860,8 +859,6 @@ out_err4: - iounmap(dev_priv->mmio_virt); - out_err3: - arch_phys_wc_del(dev_priv->mmio_mtrr); -- (void)ttm_bo_device_release(&dev_priv->bdev); --out_err1: - vmw_ttm_global_release(dev_priv); - out_err0: - for (i = vmw_res_context; i < vmw_res_max; ++i) -@@ -883,18 +880,22 @@ static int vmw_driver_unload(struct drm_ - vfree(dev_priv->ctx.cmd_bounce); - if (dev_priv->enable_fb) { - vmw_fb_close(dev_priv); -- vmw_kms_restore_vga(dev_priv); -- vmw_3d_resource_dec(dev_priv, false); -+ vmw_fifo_resource_dec(dev_priv); -+ vmw_svga_disable(dev_priv); - } -+ - vmw_kms_close(dev_priv); - vmw_overlay_close(dev_priv); - -- if (dev_priv->has_mob) -- (void) ttm_bo_clean_mm(&dev_priv->bdev, VMW_PL_MOB); - if (dev_priv->has_gmr) - (void)ttm_bo_clean_mm(&dev_priv->bdev, VMW_PL_GMR); - (void)ttm_bo_clean_mm(&dev_priv->bdev, TTM_PL_VRAM); - -+ vmw_release_device_early(dev_priv); -+ if (dev_priv->has_mob) -+ (void) ttm_bo_clean_mm(&dev_priv->bdev, VMW_PL_MOB); -+ (void) ttm_bo_device_release(&dev_priv->bdev); -+ vmw_release_device_late(dev_priv); - vmw_fence_manager_takedown(dev_priv->fman); - if (dev_priv->capabilities & SVGA_CAP_IRQMASK) - drm_irq_uninstall(dev_priv->dev); -@@ -1148,27 +1149,13 @@ static int vmw_master_set(struct drm_dev - struct vmw_master *vmaster = vmw_master(file_priv->master); - int ret = 0; - -- if (!dev_priv->enable_fb) { -- ret = vmw_3d_resource_inc(dev_priv, true); -- if (unlikely(ret != 0)) -- return ret; -- vmw_kms_save_vga(dev_priv); -- vmw_write(dev_priv, SVGA_REG_TRACES, 0); -- } -- - if (active) { - BUG_ON(active != &dev_priv->fbdev_master); - ret = ttm_vt_lock(&active->lock, false, vmw_fp->tfile); - if (unlikely(ret != 0)) -- goto out_no_active_lock; -+ return ret; - - ttm_lock_set_kill(&active->lock, true, SIGTERM); -- ret = ttm_bo_evict_mm(&dev_priv->bdev, TTM_PL_VRAM); -- if (unlikely(ret != 0)) { -- DRM_ERROR("Unable to clean VRAM on " -- "master drop.\n"); -- } -- - dev_priv->active_master = NULL; - } - -@@ -1182,14 +1169,6 @@ static int vmw_master_set(struct drm_dev - dev_priv->active_master = vmaster; - - return 0; -- --out_no_active_lock: -- if (!dev_priv->enable_fb) { -- vmw_kms_restore_vga(dev_priv); -- vmw_3d_resource_dec(dev_priv, true); -- vmw_write(dev_priv, SVGA_REG_TRACES, 1); -- } -- return ret; - } - - static void vmw_master_drop(struct drm_device *dev, -@@ -1214,16 +1193,9 @@ static void vmw_master_drop(struct drm_d - } - - ttm_lock_set_kill(&vmaster->lock, false, SIGTERM); -- vmw_execbuf_release_pinned_bo(dev_priv); - -- if (!dev_priv->enable_fb) { -- ret = ttm_bo_evict_mm(&dev_priv->bdev, TTM_PL_VRAM); -- if (unlikely(ret != 0)) -- DRM_ERROR("Unable to clean VRAM on master drop.\n"); -- vmw_kms_restore_vga(dev_priv); -- vmw_3d_resource_dec(dev_priv, true); -- vmw_write(dev_priv, SVGA_REG_TRACES, 1); -- } -+ if (!dev_priv->enable_fb) -+ vmw_svga_disable(dev_priv); - - dev_priv->active_master = &dev_priv->fbdev_master; - ttm_lock_set_kill(&dev_priv->fbdev_master.lock, false, SIGTERM); -@@ -1233,6 +1205,74 @@ static void vmw_master_drop(struct drm_d - vmw_fb_on(dev_priv); - } - -+/** -+ * __vmw_svga_enable - Enable SVGA mode, FIFO and use of VRAM. -+ * -+ * @dev_priv: Pointer to device private struct. -+ * Needs the reservation sem to be held in non-exclusive mode. -+ */ -+void __vmw_svga_enable(struct vmw_private *dev_priv) -+{ -+ spin_lock(&dev_priv->svga_lock); -+ if (!dev_priv->bdev.man[TTM_PL_VRAM].use_type) { -+ vmw_write(dev_priv, SVGA_REG_ENABLE, SVGA_REG_ENABLE); -+ dev_priv->bdev.man[TTM_PL_VRAM].use_type = true; -+ } -+ spin_unlock(&dev_priv->svga_lock); -+} -+ -+/** -+ * vmw_svga_enable - Enable SVGA mode, FIFO and use of VRAM. -+ * -+ * @dev_priv: Pointer to device private struct. -+ */ -+void vmw_svga_enable(struct vmw_private *dev_priv) -+{ -+ ttm_read_lock(&dev_priv->reservation_sem, false); -+ __vmw_svga_enable(dev_priv); -+ ttm_read_unlock(&dev_priv->reservation_sem); -+} -+ -+/** -+ * __vmw_svga_disable - Disable SVGA mode and use of VRAM. -+ * -+ * @dev_priv: Pointer to device private struct. -+ * Needs the reservation sem to be held in exclusive mode. -+ * Will not empty VRAM. VRAM must be emptied by caller. -+ */ -+void __vmw_svga_disable(struct vmw_private *dev_priv) -+{ -+ spin_lock(&dev_priv->svga_lock); -+ if (dev_priv->bdev.man[TTM_PL_VRAM].use_type) { -+ dev_priv->bdev.man[TTM_PL_VRAM].use_type = false; -+ vmw_write(dev_priv, SVGA_REG_ENABLE, -+ SVGA_REG_ENABLE_ENABLE_HIDE); -+ } -+ spin_unlock(&dev_priv->svga_lock); -+} -+ -+/** -+ * vmw_svga_disable - Disable SVGA_MODE, and use of VRAM. Keep the fifo -+ * running. -+ * -+ * @dev_priv: Pointer to device private struct. -+ * Will empty VRAM. -+ */ -+void vmw_svga_disable(struct vmw_private *dev_priv) -+{ -+ ttm_write_lock(&dev_priv->reservation_sem, false); -+ spin_lock(&dev_priv->svga_lock); -+ if (dev_priv->bdev.man[TTM_PL_VRAM].use_type) { -+ dev_priv->bdev.man[TTM_PL_VRAM].use_type = false; -+ vmw_write(dev_priv, SVGA_REG_ENABLE, -+ SVGA_REG_ENABLE_ENABLE_HIDE); -+ spin_unlock(&dev_priv->svga_lock); -+ if (ttm_bo_evict_mm(&dev_priv->bdev, TTM_PL_VRAM)) -+ DRM_ERROR("Failed evicting VRAM buffers.\n"); -+ } else -+ spin_unlock(&dev_priv->svga_lock); -+ ttm_write_unlock(&dev_priv->reservation_sem); -+} - - static void vmw_remove(struct pci_dev *pdev) - { -@@ -1250,21 +1290,21 @@ static int vmwgfx_pm_notifier(struct not - - switch (val) { - case PM_HIBERNATION_PREPARE: -- case PM_SUSPEND_PREPARE: - ttm_suspend_lock(&dev_priv->reservation_sem); - -- /** -+ /* - * This empties VRAM and unbinds all GMR bindings. - * Buffer contents is moved to swappable memory. - */ - vmw_execbuf_release_pinned_bo(dev_priv); - vmw_resource_evict_all(dev_priv); -+ vmw_release_device_early(dev_priv); - ttm_bo_swapout_all(&dev_priv->bdev); -- -+ vmw_fence_fifo_down(dev_priv->fman); - break; - case PM_POST_HIBERNATION: -- case PM_POST_SUSPEND: - case PM_POST_RESTORE: -+ vmw_fence_fifo_up(dev_priv->fman); - ttm_suspend_unlock(&dev_priv->reservation_sem); - - break; -@@ -1276,20 +1316,13 @@ static int vmwgfx_pm_notifier(struct not - return 0; - } - --/** -- * These might not be needed with the virtual SVGA device. -- */ -- - static int vmw_pci_suspend(struct pci_dev *pdev, pm_message_t state) - { - struct drm_device *dev = pci_get_drvdata(pdev); - struct vmw_private *dev_priv = vmw_priv(dev); - -- if (dev_priv->num_3d_resources != 0) { -- DRM_INFO("Can't suspend or hibernate " -- "while 3D resources are active.\n"); -+ if (dev_priv->refuse_hibernation) - return -EBUSY; -- } - - pci_save_state(pdev); - pci_disable_device(pdev); -@@ -1321,56 +1354,62 @@ static int vmw_pm_resume(struct device * - return vmw_pci_resume(pdev); - } - --static int vmw_pm_prepare(struct device *kdev) -+static int vmw_pm_freeze(struct device *kdev) - { - struct pci_dev *pdev = to_pci_dev(kdev); - struct drm_device *dev = pci_get_drvdata(pdev); - struct vmw_private *dev_priv = vmw_priv(dev); - -- /** -- * Release 3d reference held by fbdev and potentially -- * stop fifo. -- */ - dev_priv->suspended = true; - if (dev_priv->enable_fb) -- vmw_3d_resource_dec(dev_priv, true); -- -- if (dev_priv->num_3d_resources != 0) { -- -- DRM_INFO("Can't suspend or hibernate " -- "while 3D resources are active.\n"); -+ vmw_fifo_resource_dec(dev_priv); - -+ if (atomic_read(&dev_priv->num_fifo_resources) != 0) { -+ DRM_ERROR("Can't hibernate while 3D resources are active.\n"); - if (dev_priv->enable_fb) -- vmw_3d_resource_inc(dev_priv, true); -+ vmw_fifo_resource_inc(dev_priv); -+ WARN_ON(vmw_request_device_late(dev_priv)); - dev_priv->suspended = false; - return -EBUSY; - } - -+ if (dev_priv->enable_fb) -+ __vmw_svga_disable(dev_priv); -+ -+ vmw_release_device_late(dev_priv); -+ - return 0; - } - --static void vmw_pm_complete(struct device *kdev) -+static int vmw_pm_restore(struct device *kdev) - { - struct pci_dev *pdev = to_pci_dev(kdev); - struct drm_device *dev = pci_get_drvdata(pdev); - struct vmw_private *dev_priv = vmw_priv(dev); -+ int ret; - - vmw_write(dev_priv, SVGA_REG_ID, SVGA_ID_2); - (void) vmw_read(dev_priv, SVGA_REG_ID); - -- /** -- * Reclaim 3d reference held by fbdev and potentially -- * start fifo. -- */ - if (dev_priv->enable_fb) -- vmw_3d_resource_inc(dev_priv, false); -+ vmw_fifo_resource_inc(dev_priv); -+ -+ ret = vmw_request_device(dev_priv); -+ if (ret) -+ return ret; -+ -+ if (dev_priv->enable_fb) -+ __vmw_svga_enable(dev_priv); - - dev_priv->suspended = false; -+ -+ return 0; - } - - static const struct dev_pm_ops vmw_pm_ops = { -- .prepare = vmw_pm_prepare, -- .complete = vmw_pm_complete, -+ .freeze = vmw_pm_freeze, -+ .thaw = vmw_pm_restore, -+ .restore = vmw_pm_restore, - .suspend = vmw_pm_suspend, - .resume = vmw_pm_resume, - }; ---- a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.h -+++ b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.h -@@ -484,6 +484,7 @@ struct vmw_private { - - bool stealth; - bool enable_fb; -+ spinlock_t svga_lock; - - /** - * Master management. -@@ -493,9 +494,10 @@ struct vmw_private { - struct vmw_master fbdev_master; - struct notifier_block pm_nb; - bool suspended; -+ bool refuse_hibernation; - - struct mutex release_mutex; -- uint32_t num_3d_resources; -+ atomic_t num_fifo_resources; - - /* - * Replace this with an rwsem as soon as we have down_xx_interruptible() -@@ -587,8 +589,9 @@ static inline uint32_t vmw_read(struct v - return val; - } - --int vmw_3d_resource_inc(struct vmw_private *dev_priv, bool unhide_svga); --void vmw_3d_resource_dec(struct vmw_private *dev_priv, bool hide_svga); -+extern void vmw_svga_enable(struct vmw_private *dev_priv); -+extern void vmw_svga_disable(struct vmw_private *dev_priv); -+ - - /** - * GMR utilities - vmwgfx_gmr.c -@@ -1116,4 +1119,14 @@ static inline struct ttm_mem_global *vmw - { - return (struct ttm_mem_global *) dev_priv->mem_global_ref.object; - } -+ -+static inline void vmw_fifo_resource_inc(struct vmw_private *dev_priv) -+{ -+ atomic_inc(&dev_priv->num_fifo_resources); -+} -+ -+static inline void vmw_fifo_resource_dec(struct vmw_private *dev_priv) -+{ -+ atomic_dec(&dev_priv->num_fifo_resources); -+} - #endif ---- a/drivers/gpu/drm/vmwgfx/vmwgfx_fb.c -+++ b/drivers/gpu/drm/vmwgfx/vmwgfx_fb.c -@@ -596,7 +596,10 @@ int vmw_fb_off(struct vmw_private *vmw_p - - info = vmw_priv->fb_info; - par = info->par; -+ if (!par->bo_ptr) -+ return 0; - -+ vmw_kms_save_vga(vmw_priv); - spin_lock_irqsave(&par->dirty.lock, flags); - par->dirty.active = false; - spin_unlock_irqrestore(&par->dirty.lock, flags); -@@ -648,6 +651,7 @@ int vmw_fb_on(struct vmw_private *vmw_pr - spin_lock_irqsave(&par->dirty.lock, flags); - par->dirty.active = true; - spin_unlock_irqrestore(&par->dirty.lock, flags); -+ vmw_kms_restore_vga(vmw_priv); - - err_no_buffer: - vmw_fb_set_par(info); ---- a/drivers/gpu/drm/vmwgfx/vmwgfx_fifo.c -+++ b/drivers/gpu/drm/vmwgfx/vmwgfx_fifo.c -@@ -98,7 +98,6 @@ int vmw_fifo_init(struct vmw_private *de - __le32 __iomem *fifo_mem = dev_priv->mmio_virt; - uint32_t max; - uint32_t min; -- uint32_t dummy; - - fifo->static_buffer_size = VMWGFX_FIFO_STATIC_SIZE; - fifo->static_buffer = vmalloc(fifo->static_buffer_size); -@@ -112,10 +111,6 @@ int vmw_fifo_init(struct vmw_private *de - mutex_init(&fifo->fifo_mutex); - init_rwsem(&fifo->rwsem); - -- /* -- * Allow mapping the first page read-only to user-space. -- */ -- - DRM_INFO("width %d\n", vmw_read(dev_priv, SVGA_REG_WIDTH)); - DRM_INFO("height %d\n", vmw_read(dev_priv, SVGA_REG_HEIGHT)); - DRM_INFO("bpp %d\n", vmw_read(dev_priv, SVGA_REG_BITS_PER_PIXEL)); -@@ -123,7 +118,9 @@ int vmw_fifo_init(struct vmw_private *de - dev_priv->enable_state = vmw_read(dev_priv, SVGA_REG_ENABLE); - dev_priv->config_done_state = vmw_read(dev_priv, SVGA_REG_CONFIG_DONE); - dev_priv->traces_state = vmw_read(dev_priv, SVGA_REG_TRACES); -- vmw_write(dev_priv, SVGA_REG_ENABLE, 1); -+ -+ vmw_write(dev_priv, SVGA_REG_ENABLE, SVGA_REG_ENABLE_ENABLE_HIDE); -+ vmw_write(dev_priv, SVGA_REG_TRACES, 0); - - min = 4; - if (dev_priv->capabilities & SVGA_CAP_EXTENDED_FIFO) -@@ -155,7 +152,8 @@ int vmw_fifo_init(struct vmw_private *de - atomic_set(&dev_priv->marker_seq, dev_priv->last_read_seqno); - iowrite32(dev_priv->last_read_seqno, fifo_mem + SVGA_FIFO_FENCE); - vmw_marker_queue_init(&fifo->marker_queue); -- return vmw_fifo_send_fence(dev_priv, &dummy); -+ -+ return 0; - } - - void vmw_fifo_ping_host(struct vmw_private *dev_priv, uint32_t reason) ---- a/drivers/gpu/drm/vmwgfx/vmwgfx_ldu.c -+++ b/drivers/gpu/drm/vmwgfx/vmwgfx_ldu.c -@@ -280,6 +280,7 @@ static int vmw_ldu_crtc_set_config(struc - } - - vmw_fb_off(dev_priv); -+ vmw_svga_enable(dev_priv); - - crtc->primary->fb = fb; - encoder->crtc = crtc; ---- a/drivers/gpu/drm/vmwgfx/vmwgfx_mob.c -+++ b/drivers/gpu/drm/vmwgfx/vmwgfx_mob.c -@@ -574,7 +574,7 @@ void vmw_mob_unbind(struct vmw_private * - vmw_fence_single_bo(bo, NULL); - ttm_bo_unreserve(bo); - } -- vmw_3d_resource_dec(dev_priv, false); -+ vmw_fifo_resource_dec(dev_priv); - } - - /* -@@ -627,7 +627,7 @@ int vmw_mob_bind(struct vmw_private *dev - mob->pt_level += VMW_MOBFMT_PTDEPTH_1 - SVGA3D_MOBFMT_PTDEPTH_1; - } - -- (void) vmw_3d_resource_inc(dev_priv, false); -+ vmw_fifo_resource_inc(dev_priv); - - cmd = vmw_fifo_reserve(dev_priv, sizeof(*cmd)); - if (unlikely(cmd == NULL)) { -@@ -648,7 +648,7 @@ int vmw_mob_bind(struct vmw_private *dev - return 0; - - out_no_cmd_space: -- vmw_3d_resource_dec(dev_priv, false); -+ vmw_fifo_resource_dec(dev_priv); - if (pt_set_up) - ttm_bo_unref(&mob->pt_bo); - ---- a/drivers/gpu/drm/vmwgfx/vmwgfx_scrn.c -+++ b/drivers/gpu/drm/vmwgfx/vmwgfx_scrn.c -@@ -332,6 +332,7 @@ static int vmw_sou_crtc_set_config(struc - } - - vmw_fb_off(dev_priv); -+ vmw_svga_enable(dev_priv); - - if (mode->hdisplay != crtc->mode.hdisplay || - mode->vdisplay != crtc->mode.vdisplay) { ---- a/drivers/gpu/drm/vmwgfx/vmwgfx_shader.c -+++ b/drivers/gpu/drm/vmwgfx/vmwgfx_shader.c -@@ -165,7 +165,7 @@ static int vmw_gb_shader_create(struct v - cmd->body.type = shader->type; - cmd->body.sizeInBytes = shader->size; - vmw_fifo_commit(dev_priv, sizeof(*cmd)); -- (void) vmw_3d_resource_inc(dev_priv, false); -+ vmw_fifo_resource_inc(dev_priv); - - return 0; - -@@ -275,7 +275,7 @@ static int vmw_gb_shader_destroy(struct - vmw_fifo_commit(dev_priv, sizeof(*cmd)); - mutex_unlock(&dev_priv->binding_mutex); - vmw_resource_release_id(res); -- vmw_3d_resource_dec(dev_priv, false); -+ vmw_fifo_resource_dec(dev_priv); - - return 0; - } ---- a/drivers/gpu/drm/vmwgfx/vmwgfx_surface.c -+++ b/drivers/gpu/drm/vmwgfx/vmwgfx_surface.c -@@ -340,7 +340,7 @@ static void vmw_hw_surface_destroy(struc - dev_priv->used_memory_size -= res->backup_size; - mutex_unlock(&dev_priv->cmdbuf_mutex); - } -- vmw_3d_resource_dec(dev_priv, false); -+ vmw_fifo_resource_dec(dev_priv); - } - - /** -@@ -576,14 +576,14 @@ static int vmw_surface_init(struct vmw_p - - BUG_ON(res_free == NULL); - if (!dev_priv->has_mob) -- (void) vmw_3d_resource_inc(dev_priv, false); -+ vmw_fifo_resource_inc(dev_priv); - ret = vmw_resource_init(dev_priv, res, true, res_free, - (dev_priv->has_mob) ? &vmw_gb_surface_func : - &vmw_legacy_surface_func); - - if (unlikely(ret != 0)) { - if (!dev_priv->has_mob) -- vmw_3d_resource_dec(dev_priv, false); -+ vmw_fifo_resource_dec(dev_priv); - res_free(res); - return ret; - } -@@ -1028,7 +1028,7 @@ static int vmw_gb_surface_create(struct - if (likely(res->id != -1)) - return 0; - -- (void) vmw_3d_resource_inc(dev_priv, false); -+ vmw_fifo_resource_inc(dev_priv); - ret = vmw_resource_alloc_id(res); - if (unlikely(ret != 0)) { - DRM_ERROR("Failed to allocate a surface id.\n"); -@@ -1068,7 +1068,7 @@ static int vmw_gb_surface_create(struct - out_no_fifo: - vmw_resource_release_id(res); - out_no_id: -- vmw_3d_resource_dec(dev_priv, false); -+ vmw_fifo_resource_dec(dev_priv); - return ret; - } - -@@ -1213,7 +1213,7 @@ static int vmw_gb_surface_destroy(struct - vmw_fifo_commit(dev_priv, sizeof(*cmd)); - mutex_unlock(&dev_priv->binding_mutex); - vmw_resource_release_id(res); -- vmw_3d_resource_dec(dev_priv, false); -+ vmw_fifo_resource_dec(dev_priv); - - return 0; - } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.drivers/0002-drm-vmwgfx-Allow-dropped-masters-render-node-like-ac.patch new/patches.drivers/0002-drm-vmwgfx-Allow-dropped-masters-render-node-like-ac.patch --- old/patches.drivers/0002-drm-vmwgfx-Allow-dropped-masters-render-node-like-ac.patch 2015-10-28 08:49:09.000000000 +0100 +++ new/patches.drivers/0002-drm-vmwgfx-Allow-dropped-masters-render-node-like-ac.patch 1970-01-01 01:00:00.000000000 +0100 @@ -1,57 +0,0 @@ -From aa3469ce7afd86a670d22375a64f1b5a06707725 Mon Sep 17 00:00:00 2001 -From: Thomas Hellstrom <[email protected]> -Date: Thu, 27 Aug 2015 10:06:24 -0700 -Subject: [PATCH] drm/vmwgfx: Allow dropped masters render-node like access on legacy nodes v2 -Git-commit: aa3469ce7afd86a670d22375a64f1b5a06707725 -Patch-mainline: v4.3-rc1 -References: boo#934266 - -Applications like gnome-shell may try to render after dropping master -privileges. Since the driver should now be safe against this scenario, -allow those applications to use their legacy node like a render node. - -V2: Add missing return statement. - -Signed-off-by: Thomas Hellstrom <[email protected]> -Reviewed-by: Sinclair Yeh <[email protected]> -Acked-by: Takashi Iwai <[email protected]> - ---- - drivers/gpu/drm/vmwgfx/vmwgfx_drv.c | 7 ++++++- - drivers/gpu/drm/vmwgfx/vmwgfx_surface.c | 6 ++++++ - 2 files changed, 12 insertions(+), 1 deletion(-) - ---- a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c -+++ b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c -@@ -993,10 +993,15 @@ static struct vmw_master *vmw_master_che - } - - /* -- * Check if we were previously master, but now dropped. -+ * Check if we were previously master, but now dropped. In that -+ * case, allow at least render node functionality. - */ - if (vmw_fp->locked_master) { - mutex_unlock(&dev->master_mutex); -+ -+ if (flags & DRM_RENDER_ALLOW) -+ return NULL; -+ - DRM_ERROR("Dropped master trying to access ioctl that " - "requires authentication.\n"); - return ERR_PTR(-EACCES); ---- a/drivers/gpu/drm/vmwgfx/vmwgfx_surface.c -+++ b/drivers/gpu/drm/vmwgfx/vmwgfx_surface.c -@@ -906,6 +906,12 @@ vmw_surface_handle_reference(struct vmw_ - "surface reference.\n"); - return -EACCES; - } -+ if (ACCESS_ONCE(vmw_fpriv(file_priv)->locked_master)) { -+ DRM_ERROR("Locked master refused legacy " -+ "surface reference.\n"); -+ return -EACCES; -+ } -+ - handle = u_handle; - } - diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.drivers/ALSA-hda-Fix-deadlock-at-error-in-building-PCM new/patches.drivers/ALSA-hda-Fix-deadlock-at-error-in-building-PCM --- old/patches.drivers/ALSA-hda-Fix-deadlock-at-error-in-building-PCM 2015-10-28 08:49:09.000000000 +0100 +++ new/patches.drivers/ALSA-hda-Fix-deadlock-at-error-in-building-PCM 1970-01-01 01:00:00.000000000 +0100 @@ -1,65 +0,0 @@ -From d289619a219dd01e255d7b5e30f9171b25efea48 Mon Sep 17 00:00:00 2001 -From: Takashi Iwai <[email protected]> -Date: Tue, 20 Oct 2015 16:23:55 +0200 -Subject: [PATCH] ALSA: hda - Fix deadlock at error in building PCM -Git-commit: d289619a219dd01e255d7b5e30f9171b25efea48 -Patch-mainline: Queued in subsystem maintainer repository -Git-repo: git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound.git -References: bsc#948758 - -The HDA codec driver issues snd_hda_codec_reset() at the error path of -PCM build. This was needed in the earlier code base, but the recent -rewrite to use the standard bus binding made this a deadlock: - modprobe D 0000000000000005 0 720 716 0x00000080 - Call Trace: - [<ffffffff816a5dbe>] schedule+0x3e/0x90 - [<ffffffff816a61a5>] schedule_preempt_disabled+0x15/0x20 - [<ffffffff816a7ae5>] __mutex_lock_slowpath+0xb5/0x120 - [<ffffffff816a7b6b>] mutex_lock+0x1b/0x30 - [<ffffffff8148656b>] device_release_driver+0x1b/0x30 - [<ffffffff81485c15>] bus_remove_device+0x105/0x180 - [<ffffffff814822b9>] device_del+0x139/0x260 - [<ffffffffa05e0ec5>] snd_hdac_device_unregister+0x25/0x30 [snd_hda_core] - [<ffffffffa074fa6a>] snd_hda_codec_reset+0x2a/0x70 [snd_hda_codec] - [<ffffffffa075007b>] snd_hda_codec_build_pcms+0x18b/0x1b0 [snd_hda_codec] - [<ffffffffa074a44e>] hda_codec_driver_probe+0xbe/0x140 [snd_hda_codec] - [<ffffffff81486ac4>] driver_probe_device+0x1f4/0x460 - [<ffffffff81486dc0>] __driver_attach+0x90/0xa0 - [<ffffffff81484844>] bus_for_each_dev+0x64/0xa0 - [<ffffffff814862de>] driver_attach+0x1e/0x20 - [<ffffffff81485e7b>] bus_add_driver+0x1eb/0x280 - [<ffffffff81487680>] driver_register+0x60/0xe0 - [<ffffffffa074a0da>] __hda_codec_driver_register+0x5a/0x60 [snd_hda_codec] - [<ffffffffa070a01e>] realtek_driver_init+0x1e/0x1000 [snd_hda_codec_realtek] - [<ffffffff810002f3>] do_one_initcall+0xb3/0x200 - [<ffffffff816a1fc5>] do_init_module+0x60/0x1f8 - [<ffffffff810ee5c3>] load_module+0x1653/0x1bd0 - [<ffffffff810eed48>] SYSC_finit_module+0x98/0xc0 - [<ffffffff810eed8e>] SyS_finit_module+0xe/0x10 - [<ffffffff816aa032>] entry_SYSCALL_64_fastpath+0x16/0x75 - -The simple fix is just to remove this call, since we don't need to -think about unbinding at there any longer. - -Bugzilla: https://bugzilla.suse.com/show_bug.cgi?id=948758 -Cc: <[email protected]> # v4.1+ -Signed-off-by: Takashi Iwai <[email protected]> - ---- - sound/pci/hda/hda_codec.c | 4 +--- - 1 file changed, 1 insertion(+), 3 deletions(-) - ---- a/sound/pci/hda/hda_codec.c -+++ b/sound/pci/hda/hda_codec.c -@@ -3438,10 +3438,8 @@ int snd_hda_codec_build_pcms(struct hda_ - int dev, err; - - err = snd_hda_codec_parse_pcms(codec); -- if (err < 0) { -- snd_hda_codec_reset(codec); -+ if (err < 0) - return err; -- } - - /* attach a new PCM streams */ - list_for_each_entry(cpcm, &codec->pcm_list_head, list) { ++++++ patches.fixes.tar.bz2 ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.fixes/btrfs-fix-stale-dir-entries-after-unlink-inode-eviction-and-fsync new/patches.fixes/btrfs-fix-stale-dir-entries-after-unlink-inode-eviction-and-fsync --- old/patches.fixes/btrfs-fix-stale-dir-entries-after-unlink-inode-eviction-and-fsync 2015-10-26 15:37:15.000000000 +0100 +++ new/patches.fixes/btrfs-fix-stale-dir-entries-after-unlink-inode-eviction-and-fsync 1970-01-01 01:00:00.000000000 +0100 @@ -1,172 +0,0 @@ -From: Filipe Manana <[email protected]> -Date: Fri, 24 Jul 2015 06:30:42 +0100 -Subject: Btrfs: fix stale dir entries after unlink, inode eviction and fsync -Patch-mainline: Submitted, http://www.spinics.net/lists/linux-btrfs/msg45634.html -References: bsc#942925 - -If we remove a hard link from an inode, the inode gets evicted, then -we fsync the inode and then power fail/crash, when the log tree is -replayed, the parent directory inode still has entries pointing to -the name that no longer exists, while our inode no longer has the -BTRFS_INODE_REF_KEY item matching the deleted hard link (as expected), -leaving the filesystem in an inconsistent state. The stale directory -entries can not be deleted (an attempt to delete them causes -ESTALE -errors), which makes it impossible to delete the parent directory. - -This happens because we track the id of the transaction where the last -unlink operation for the inode happened (last_unlink_trans) in an -in-memory only field of the inode, that is, a value that is never -persisted in the inode item stored on the fs/subvol btree. So if an -inode is evicted and loaded again, the value for last_unlink_trans is -set to 0, which prevents the fsync from logging the parent directory -at btrfs_log_inode_parent(). So fix this by setting last_unlink_trans -to the id of the transaction that last modified the inode when we -load the inode. This is a pessimistic approach but it always ensures -correctness with the trade off of ocassional full transaction commits -when an fsync is done against the inode in the same transaction where -it was evicted and reloaded. - -The following test case for fstests triggers the problem: - - seq=`basename $0` - seqres=$RESULT_DIR/$seq - echo "QA output created by $seq" - tmp=/tmp/$$ - status=1 # failure is the default! - trap "_cleanup; exit \$status" 0 1 2 3 15 - - _cleanup() - { - _cleanup_flakey - rm -f $tmp.* - } - - # get standard environment, filters and checks - . ./common/rc - . ./common/filter - . ./common/dmflakey - - # real QA test starts here - _need_to_be_root - _supported_fs generic - _supported_os Linux - _require_scratch - _require_dm_flakey - _require_metadata_journaling $SCRATCH_DEV - - rm -f $seqres.full - - _scratch_mkfs >>$seqres.full 2>&1 - _init_flakey - _mount_flakey - - # Create our test file with 2 hard links. - mkdir $SCRATCH_MNT/testdir - touch $SCRATCH_MNT/testdir/foo - ln $SCRATCH_MNT/testdir/foo $SCRATCH_MNT/testdir/bar - - # Make sure everything done so far is durably persisted. - sync - - # Now remove one of the links, trigger inode eviction and then fsync - # our inode. - unlink $SCRATCH_MNT/testdir/bar - echo 2 > /proc/sys/vm/drop_caches - $XFS_IO_PROG -c "fsync" $SCRATCH_MNT/testdir/foo - - # Silently drop all writes on our scratch device to simulate a power failure. - _load_flakey_table $FLAKEY_DROP_WRITES - _unmount_flakey - - # Allow writes again and mount the fs to trigger log/journal replay. - _load_flakey_table $FLAKEY_ALLOW_WRITES - _mount_flakey - - # Now verify our directory entries. - echo "Entries in testdir:" - ls -1 $SCRATCH_MNT/testdir - - # If we remove our inode, its parent should become empty and therefore we should - # be able to remove the parent. - rm -f $SCRATCH_MNT/testdir/* - rmdir $SCRATCH_MNT/testdir - - _unmount_flakey - - # The fstests framework will call fsck against our filesystem which will verify - # that all metadata is in a consistent state. - - status=0 - exit - -The test failed on btrfs with: - - generic/098 4s ... - output mismatch (see /home/fdmanana/git/hub/xfstests/results//generic/098.out.bad) -# --- tests/generic/098.out 2015-07-23 18:01:12.616175932 +0100 -# +++ /home/fdmanana/git/hub/xfstests/results//generic/098.out.bad 2015-07-23 18:04:58.924138308 +0100 -# @@ -1,3 +1,6 @@ - QA output created by 098 - Entries in testdir: - +bar - foo - +rm: cannot remove '/home/fdmanana/btrfs-tests/scratch_1/testdir/foo': Stale file handle - +rmdir: failed to remove '/home/fdmanana/btrfs-tests/scratch_1/testdir': Directory not empty - ... - (Run 'diff -u tests/generic/098.out /home/fdmanana/git/hub/xfstests/results//generic/098.out.bad' to see the entire diff) - _check_btrfs_filesystem: filesystem on /dev/sdc is inconsistent (see /home/fdmanana/git/hub/xfstests/results//generic/098.full) - - $ cat /home/fdmanana/git/hub/xfstests/results//generic/098.full - (...) - checking fs roots - root 5 inode 258 errors 2001, no inode item, link count wrong - unresolved ref dir 257 index 0 namelen 3 name foo filetype 1 errors 6, no dir index, no inode ref - unresolved ref dir 257 index 3 namelen 3 name bar filetype 1 errors 5, no dir item, no inode ref - Checking filesystem on /dev/sdc - (...) - -Signed-off-by: Filipe Manana <[email protected]> -Acked-by: Jeff Mahoney <[email protected]> ---- - fs/btrfs/inode.c | 28 ++++++++++++++++++++++++++++ - 1 file changed, 28 insertions(+) - -diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c -index cf7dc05..6847f93 100644 ---- a/fs/btrfs/inode.c -+++ b/fs/btrfs/inode.c -@@ -3654,6 +3654,34 @@ cache_index: - set_bit(BTRFS_INODE_NEEDS_FULL_SYNC, - &BTRFS_I(inode)->runtime_flags); - -+ /* -+ * We don't persist the id of the transaction where an unlink operation -+ * against the inode was last made. So here we assume the inode might -+ * have been evicted, and therefore the exact value of last_unlink_trans -+ * lost, and set it to last_trans to avoid metadata inconsistencies -+ * between the inode and its if the inode is fsync'ed and the log -+ * replayed. For example, in the scenario: -+ * -+ * touch mydir/foo -+ * ln mydir/foo mydir/bar -+ * sync -+ * unlink mydir/bar -+ * echo 2 > /proc/sys/vm/drop_caches # evicts inode -+ * xfs_io -c fsync mydir/foo -+ * <power failure> -+ * mount fs, triggers fsync log replay -+ * -+ * We must make sure that when we fsync our inode foo we also log its -+ * parent inode, otherwise after log replay the parent still has the -+ * dentry with the "bar" name but our inode foo has a link count of 1 -+ * and doesn't have an inode ref with the name "bar" anymore. -+ * -+ * Setting last_unlink_trans to last_trans is a pessimistic approach, -+ * but it guarantees correctness at the expense of ocassional full -+ * transaction commits on fsync. -+ */ -+ BTRFS_I(inode)->last_unlink_trans = BTRFS_I(inode)->last_trans; -+ - path->slots[0]++; - if (inode->i_nlink != 1 || - path->slots[0] >= btrfs_header_nritems(leaf)) - diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.fixes/btrfs-fix-stale-directory-entries-after-fsync-log-replay new/patches.fixes/btrfs-fix-stale-directory-entries-after-fsync-log-replay --- old/patches.fixes/btrfs-fix-stale-directory-entries-after-fsync-log-replay 2015-10-26 15:37:15.000000000 +0100 +++ new/patches.fixes/btrfs-fix-stale-directory-entries-after-fsync-log-replay 1970-01-01 01:00:00.000000000 +0100 @@ -1,244 +0,0 @@ -From: Filipe Manana <[email protected]> -Date: Wed, 22 Jul 2015 04:54:54 +0100 -Subject: Btrfs: fix stale directory entries after fsync log replay -Patch-mainline: Submitted, http://www.spinics.net/lists/linux-btrfs/msg45480.html -References: bsc#942925 - -We have another case where after an fsync log replay we get an inode with -a wrong link count (smaller than it should be) and a number of directory -entries greater than its link count. This happens when we add a new link -hard link to our inode A and then we fsync some other inode B that has -the side effect of logging the parent directory inode too. In this case -at log replay time we add the new hard link to our inode (the item with -key BTRFS_INODE_REF_KEY) when processing the parent directory but we -never adjust the link count of our inode A. As a result we get stale dir -entries for our inode A that can never be deleted and therefore it makes -it impossible to remove the parent directory (as its i_size can never -decrease back to 0). - -A simple reproducer for fstests that triggers this issue: - - seq=`basename $0` - seqres=$RESULT_DIR/$seq - echo "QA output created by $seq" - tmp=/tmp/$$ - status=1 # failure is the default! - trap "_cleanup; exit \$status" 0 1 2 3 15 - - _cleanup() - { - _cleanup_flakey - rm -f $tmp.* - } - - # get standard environment, filters and checks - . ./common/rc - . ./common/filter - . ./common/dmflakey - - # real QA test starts here - _need_to_be_root - _supported_fs generic - _supported_os Linux - _require_scratch - _require_dm_flakey - _require_metadata_journaling $SCRATCH_DEV - - rm -f $seqres.full - - _scratch_mkfs >>$seqres.full 2>&1 - _init_flakey - _mount_flakey - - # Create our test directory and files. - mkdir $SCRATCH_MNT/testdir - touch $SCRATCH_MNT/testdir/foo - touch $SCRATCH_MNT/testdir/bar - - # Make sure everything done so far is durably persisted. - sync - - # Create one hard link for file foo and another one for file bar. After - # that fsync only the file bar. - ln $SCRATCH_MNT/testdir/bar $SCRATCH_MNT/testdir/bar_link - ln $SCRATCH_MNT/testdir/foo $SCRATCH_MNT/testdir/foo_link - $XFS_IO_PROG -c "fsync" $SCRATCH_MNT/testdir/bar - - # Silently drop all writes on scratch device to simulate power failure. - _load_flakey_table $FLAKEY_DROP_WRITES - _unmount_flakey - - # Allow writes again and mount the fs to trigger log/journal replay. - _load_flakey_table $FLAKEY_ALLOW_WRITES - _mount_flakey - - # Now verify both our files have a link count of 2. - echo "Link count for file foo: $(stat --format=%h $SCRATCH_MNT/testdir/foo)" - echo "Link count for file bar: $(stat --format=%h $SCRATCH_MNT/testdir/bar)" - - # We should be able to remove all the links of our files in testdir, and - # after that the parent directory should become empty and therefore - # possible to remove it. - rm -f $SCRATCH_MNT/testdir/* - rmdir $SCRATCH_MNT/testdir - - _unmount_flakey - - # The fstests framework will call fsck against our filesystem which will verify - # that all metadata is in a consistent state. - - status=0 - exit - -The test fails with: - - -Link count for file foo: 2 - +Link count for file foo: 1 - Link count for file bar: 2 - +rm: cannot remove '/home/fdmanana/btrfs-tests/scratch_1/testdir/foo_link': Stale file handle - +rmdir: failed to remove '/home/fdmanana/btrfs-tests/scratch_1/testdir': Directory not empty - (...) - _check_btrfs_filesystem: filesystem on /dev/sdc is inconsistent - -And fsck's output: - - (...) - checking fs roots - root 5 inode 258 errors 2001, no inode item, link count wrong - unresolved ref dir 257 index 5 namelen 8 name foo_link filetype 1 errors 4, no inode ref - Checking filesystem on /dev/sdc - (...) - -So fix this by marking inodes for link count fixup at log replay time -whenever a directory entry is replayed if the entry was created in the -transaction where the fsync was made and if it points to a non-directory -inode. - -This isn't a new problem/regression, the issue exists for a long time, -possibly since the log tree feature was added (2008). - -Signed-off-by: Filipe Manana <[email protected]> -Acked-by: Jeff Mahoney <[email protected]> ---- - fs/btrfs/tree-log.c | 64 +++++++++++++++++++++++++++++++++++++++++++++++++---- - 1 file changed, 60 insertions(+), 4 deletions(-) - -diff --git a/fs/btrfs/tree-log.c b/fs/btrfs/tree-log.c -index 9c45431..cb5666e 100644 ---- a/fs/btrfs/tree-log.c -+++ b/fs/btrfs/tree-log.c -@@ -1613,6 +1613,9 @@ static bool name_in_log_ref(struct btrfs_root *log_root, - * not exist in the FS, it is skipped. fsyncs on directories - * do not force down inodes inside that directory, just changes to the - * names or unlinks in a directory. -+ * -+ * Returns < 0 on error, 0 if the name wasn't replayed (dentry points to a -+ * non-existing inode) and 1 if the name was replayed. - */ - static noinline int replay_one_name(struct btrfs_trans_handle *trans, - struct btrfs_root *root, -@@ -1631,6 +1634,7 @@ static noinline int replay_one_name(struct btrfs_trans_handle *trans, - int exists; - int ret = 0; - bool update_size = (key->type == BTRFS_DIR_INDEX_KEY); -+ bool name_added = false; - - dir = read_one_inode(root, key->objectid); - if (!dir) -@@ -1708,6 +1712,8 @@ out: - } - kfree(name); - iput(dir); -+ if (!ret && name_added) -+ ret = 1; - return ret; - - insert: -@@ -1723,6 +1729,8 @@ insert: - name, name_len, log_type, &log_key); - if (ret && ret != -ENOENT && ret != -EEXIST) - goto out; -+ if (!ret) -+ name_added = true; - update_size = false; - ret = 0; - goto out; -@@ -1740,12 +1748,13 @@ static noinline int replay_one_dir_item(struct btrfs_trans_handle *trans, - struct extent_buffer *eb, int slot, - struct btrfs_key *key) - { -- int ret; -+ int ret = 0; - u32 item_size = btrfs_item_size_nr(eb, slot); - struct btrfs_dir_item *di; - int name_len; - unsigned long ptr; - unsigned long ptr_end; -+ struct btrfs_path *fixup_path = NULL; - - ptr = btrfs_item_ptr_offset(eb, slot); - ptr_end = ptr + item_size; -@@ -1755,12 +1764,59 @@ static noinline int replay_one_dir_item(struct btrfs_trans_handle *trans, - return -EIO; - name_len = btrfs_dir_name_len(eb, di); - ret = replay_one_name(trans, root, path, eb, di, key); -- if (ret) -- return ret; -+ if (ret < 0) -+ break; - ptr = (unsigned long)(di + 1); - ptr += name_len; -+ -+ /* -+ * If this entry refers to a non-directory (directories can not -+ * have a link count > 1) and it was added in the transaction -+ * that was not committed, make sure we fixup the link count of -+ * the inode it the entry points to. Otherwise something like -+ * the following would result in a directory pointing to an -+ * inode with a wrong link that does not account for this dir -+ * entry: -+ * -+ * mkdir testdir -+ * touch testdir/foo -+ * touch testdir/bar -+ * sync -+ * -+ * ln testdir/bar testdir/bar_link -+ * ln testdir/foo testdir/foo_link -+ * xfs_io -c "fsync" testdir/bar -+ * -+ * <power failure> -+ * -+ * mount fs, log replay happens -+ * -+ * File foo would remain with a link count of 1 when it has two -+ * entries pointing to it in the directory testdir. This would -+ * make it impossible to ever delete the parent directory has -+ * it would result in stale dentries that can never be deleted. -+ */ -+ if (ret == 1 && btrfs_dir_type(eb, di) != BTRFS_FT_DIR) { -+ struct btrfs_key di_key; -+ -+ if (!fixup_path) { -+ fixup_path = btrfs_alloc_path(); -+ if (!fixup_path) { -+ ret = -ENOMEM; -+ break; -+ } -+ } -+ -+ btrfs_dir_item_key_to_cpu(eb, di, &di_key); -+ ret = link_to_fixup_dir(trans, root, fixup_path, -+ di_key.objectid); -+ if (ret) -+ break; -+ } -+ ret = 0; - } -- return 0; -+ btrfs_free_path(fixup_path); -+ return ret; - } - - /* - diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.fixes/dm-mpath-reattach-dh new/patches.fixes/dm-mpath-reattach-dh --- old/patches.fixes/dm-mpath-reattach-dh 2015-10-26 15:37:15.000000000 +0100 +++ new/patches.fixes/dm-mpath-reattach-dh 1970-01-01 01:00:00.000000000 +0100 @@ -1,29 +0,0 @@ -From: Hannes Reinecke <[email protected]> -Subject: Reattach device handler for multipath devices -References: bnc#435688 -Patch-mainline: not yet - -The multipath daemon might have specified a different device_handler -than the one a device is attached to by default. -So we should try to re-attach with the user-specified device_handler -and only return an error if that fails. -And we should _not_ detach existing hardware handlers. This will -set the path to failed during failover. - -Signed-off-by: Hannes Reinecke <[email protected] - ---- - drivers/md/dm-mpath.c | 2 -- - 1 file changed, 2 deletions(-) - ---- a/drivers/md/dm-mpath.c -+++ b/drivers/md/dm-mpath.c -@@ -168,8 +168,6 @@ static void free_pgpaths(struct list_hea - - list_for_each_entry_safe(pgpath, tmp, pgpaths, list) { - list_del(&pgpath->list); -- if (m->hw_handler_name) -- scsi_dh_detach(bdev_get_queue(pgpath->path.dev->bdev)); - dm_put_device(ti, pgpath->path.dev); - free_pgpath(pgpath); - } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.fixes/dm-table-switch-to-readonly new/patches.fixes/dm-table-switch-to-readonly --- old/patches.fixes/dm-table-switch-to-readonly 2015-10-26 15:37:15.000000000 +0100 +++ new/patches.fixes/dm-table-switch-to-readonly 2015-11-02 15:56:50.000000000 +0100 @@ -68,9 +68,9 @@ kfree(td); return r; @@ -2347,6 +2361,10 @@ static struct dm_table *__bind(struct ma - set_bit(DMF_MERGE_IS_OPTIONAL, &md->flags); - else - clear_bit(DMF_MERGE_IS_OPTIONAL, &md->flags); + md->immutable_target_type = dm_table_get_immutable_target_type(t); + + dm_table_set_restrictions(t, q, limits); + if (!(dm_table_get_mode(t) & FMODE_WRITE)) + set_disk_ro(md->disk, 1); + else diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.fixes/media-c8sectpfe-Remove-select-of-CONFIG_FW_LOADER_USER_HELPER new/patches.fixes/media-c8sectpfe-Remove-select-of-CONFIG_FW_LOADER_USER_HELPER --- old/patches.fixes/media-c8sectpfe-Remove-select-of-CONFIG_FW_LOADER_USER_HELPER 1970-01-01 01:00:00.000000000 +0100 +++ new/patches.fixes/media-c8sectpfe-Remove-select-of-CONFIG_FW_LOADER_USER_HELPER 2015-11-02 15:56:50.000000000 +0100 @@ -0,0 +1,30 @@ +From: Takashi Iwai <[email protected]> +Subject: [PATCH] [media] c8sectpfe: Remove select on CONFIG_FW_LOADER_USER_HELPER_FALLBACK +Date: Mon, 19 Oct 2015 08:17:30 +0200 +Message-id: <[email protected]> +Patch-mainline: Submitted, Mon, 19 Oct 2015 08:17:30 +0200, LKML +References: boo#951260 + +c8sectpfe driver selects CONFIG_FW_LOADER_USER_HELPER_FALLBACK by some +reason, but this option is known to be harmful, leading to minutes of +stalls at boot time. The option was intended for only compatibility +for an old exotic system that mandates the udev interaction, and not a +thing a driver selects by itself. Let's remove it. + +Fixes: 850a3f7d5911 ('[media] c8sectpfe: Add Kconfig and Makefile for the driver') +Signed-off-by: Takashi Iwai <[email protected]> + +--- + drivers/media/platform/sti/c8sectpfe/Kconfig | 1 - + 1 file changed, 1 deletion(-) + +--- a/drivers/media/platform/sti/c8sectpfe/Kconfig ++++ b/drivers/media/platform/sti/c8sectpfe/Kconfig +@@ -3,7 +3,6 @@ config DVB_C8SECTPFE + depends on PINCTRL && DVB_CORE && I2C + depends on ARCH_STI || ARCH_MULTIPLATFORM || COMPILE_TEST + select FW_LOADER +- select FW_LOADER_USER_HELPER_FALLBACK + select DEBUG_FS + select DVB_LNBP21 if MEDIA_SUBDRV_AUTOSELECT + select DVB_STV090x if MEDIA_SUBDRV_AUTOSELECT diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.fixes/rtlwifi-rtl8821ae-Fix-system-lockups-on-boot.patch new/patches.fixes/rtlwifi-rtl8821ae-Fix-system-lockups-on-boot.patch --- old/patches.fixes/rtlwifi-rtl8821ae-Fix-system-lockups-on-boot.patch 2015-10-26 15:37:15.000000000 +0100 +++ new/patches.fixes/rtlwifi-rtl8821ae-Fix-system-lockups-on-boot.patch 1970-01-01 01:00:00.000000000 +0100 @@ -1,132 +0,0 @@ -From 54328e64047a54b8fc2362c2e1f0fa16c90f739f Mon Sep 17 00:00:00 2001 -From: Larry Finger <[email protected]> -Date: Fri, 2 Oct 2015 11:44:30 -0500 -Subject: [PATCH] rtlwifi: rtl8821ae: Fix system lockups on boot -Patch-mainline: Queued in subsystem maintainer repository -Git-repo: git://git.kernel.org/pub/scm/linux/kernel/git/kvalo/wireless-drivers-next.git#master -Git-commit: 54328e64047a54b8fc2362c2e1f0fa16c90f739f -References: boo#944978 - -In commit 1277fa2ab2f9 ("rtlwifi: Remove the clear interrupt routine from all -drivers"), the code that cleared all interrupt enable bits before setting them -was removed for all PCI drivers. This fixed an issue that caused TX to be -blocked for 3-5 seconds. On some RTL8821AE units, this change causes soft -lockups to occur on boot. For that reason, the portion of the earlier commit -that applied to rtl8821ae is reverted. Kernels 4.1 and newer are affected. - -See http://marc.info/?l=linux-wireless&m=144373370103285&w=2 and -https://bugzilla.opensuse.org/show_bug.cgi?id=944978 for two cases where -this regression affected user systems. Note that this bug does not appear on -any of the developer's setups. For those users whose systems are affected -by the TX blockage, but do not lock up on boot, a module parameter is added -to disable the interrupt clear - -Fixes: 1277fa2ab2f9 ("rtlwifi: Remove the clear interrupt routine from all drivers") -Signed-off-by: Larry Finger <[email protected]> -Cc: Stable <[email protected]> [V4.1+] -Signed-off-by: Kalle Valo <[email protected]> -Acked-by: Takashi Iwai <[email protected]> - ---- - drivers/net/wireless/rtlwifi/pci.h | 2 ++ - drivers/net/wireless/rtlwifi/rtl8821ae/hw.c | 17 +++++++++++++++++ - drivers/net/wireless/rtlwifi/rtl8821ae/sw.c | 5 +++++ - drivers/net/wireless/rtlwifi/wifi.h | 3 +++ - 4 files changed, 27 insertions(+) - ---- a/drivers/net/wireless/rtlwifi/pci.h -+++ b/drivers/net/wireless/rtlwifi/pci.h -@@ -247,6 +247,8 @@ struct rtl_pci { - /* MSI support */ - bool msi_support; - bool using_msi; -+ /* interrupt clear before set */ -+ bool int_clear; - }; - - struct mp_adapter { ---- a/drivers/net/wireless/rtlwifi/rtl8821ae/hw.c -+++ b/drivers/net/wireless/rtlwifi/rtl8821ae/hw.c -@@ -2253,11 +2253,28 @@ void rtl8821ae_set_qos(struct ieee80211_ - } - } - -+static void rtl8821ae_clear_interrupt(struct ieee80211_hw *hw) -+{ -+ struct rtl_priv *rtlpriv = rtl_priv(hw); -+ u32 tmp = rtl_read_dword(rtlpriv, REG_HISR); -+ -+ rtl_write_dword(rtlpriv, REG_HISR, tmp); -+ -+ tmp = rtl_read_dword(rtlpriv, REG_HISRE); -+ rtl_write_dword(rtlpriv, REG_HISRE, tmp); -+ -+ tmp = rtl_read_dword(rtlpriv, REG_HSISR); -+ rtl_write_dword(rtlpriv, REG_HSISR, tmp); -+} -+ - void rtl8821ae_enable_interrupt(struct ieee80211_hw *hw) - { - struct rtl_priv *rtlpriv = rtl_priv(hw); - struct rtl_pci *rtlpci = rtl_pcidev(rtl_pcipriv(hw)); - -+ if (!rtlpci->int_clear) -+ rtl8821ae_clear_interrupt(hw);/*clear it here first*/ -+ - rtl_write_dword(rtlpriv, REG_HIMR, rtlpci->irq_mask[0] & 0xFFFFFFFF); - rtl_write_dword(rtlpriv, REG_HIMRE, rtlpci->irq_mask[1] & 0xFFFFFFFF); - rtlpci->irq_enabled = true; ---- a/drivers/net/wireless/rtlwifi/rtl8821ae/sw.c -+++ b/drivers/net/wireless/rtlwifi/rtl8821ae/sw.c -@@ -96,6 +96,7 @@ int rtl8821ae_init_sw_vars(struct ieee80 - - rtl8821ae_bt_reg_init(hw); - rtlpci->msi_support = rtlpriv->cfg->mod_params->msi_support; -+ rtlpci->int_clear = rtlpriv->cfg->mod_params->int_clear; - rtlpriv->btcoexist.btc_ops = rtl_btc_get_ops_pointer(); - - rtlpriv->dm.dm_initialgain_enable = 1; -@@ -167,6 +168,7 @@ int rtl8821ae_init_sw_vars(struct ieee80 - rtlpriv->psc.swctrl_lps = rtlpriv->cfg->mod_params->swctrl_lps; - rtlpriv->psc.fwctrl_lps = rtlpriv->cfg->mod_params->fwctrl_lps; - rtlpci->msi_support = rtlpriv->cfg->mod_params->msi_support; -+ rtlpci->msi_support = rtlpriv->cfg->mod_params->int_clear; - if (rtlpriv->cfg->mod_params->disable_watchdog) - pr_info("watchdog disabled\n"); - rtlpriv->psc.reg_fwctrl_lps = 3; -@@ -308,6 +310,7 @@ static struct rtl_mod_params rtl8821ae_m - .swctrl_lps = false, - .fwctrl_lps = true, - .msi_support = true, -+ .int_clear = true, - .debug = DBG_EMERG, - .disable_watchdog = 0, - }; -@@ -437,6 +440,7 @@ module_param_named(fwlps, rtl8821ae_mod_ - module_param_named(msi, rtl8821ae_mod_params.msi_support, bool, 0444); - module_param_named(disable_watchdog, rtl8821ae_mod_params.disable_watchdog, - bool, 0444); -+module_param_named(int_clear, rtl8821ae_mod_params.int_clear, bool, 0444); - MODULE_PARM_DESC(swenc, "Set to 1 for software crypto (default 0)\n"); - MODULE_PARM_DESC(ips, "Set to 0 to not use link power save (default 1)\n"); - MODULE_PARM_DESC(swlps, "Set to 1 to use SW control power save (default 0)\n"); -@@ -444,6 +448,7 @@ MODULE_PARM_DESC(fwlps, "Set to 1 to use - MODULE_PARM_DESC(msi, "Set to 1 to use MSI interrupts mode (default 1)\n"); - MODULE_PARM_DESC(debug, "Set debug level (0-5) (default 0)"); - MODULE_PARM_DESC(disable_watchdog, "Set to 1 to disable the watchdog (default 0)\n"); -+MODULE_PARM_DESC(int_clear, "Set to 1 to disable interrupt clear before set (default 0)\n"); - - static SIMPLE_DEV_PM_OPS(rtlwifi_pm_ops, rtl_pci_suspend, rtl_pci_resume); - ---- a/drivers/net/wireless/rtlwifi/wifi.h -+++ b/drivers/net/wireless/rtlwifi/wifi.h -@@ -2249,6 +2249,9 @@ struct rtl_mod_params { - - /* default 0: 1 means disable */ - bool disable_watchdog; -+ -+ /* default 0: 1 means do not disable interrupts */ -+ bool int_clear; - }; - - struct rtl_hal_usbint_cfg { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.fixes/scsi-dh-queuedata-accessors new/patches.fixes/scsi-dh-queuedata-accessors --- old/patches.fixes/scsi-dh-queuedata-accessors 2015-10-26 15:37:15.000000000 +0100 +++ new/patches.fixes/scsi-dh-queuedata-accessors 2015-11-02 15:56:50.000000000 +0100 @@ -14,13 +14,13 @@ Signed-off-by: Hannes Reinecke <[email protected]> --- - drivers/scsi/device_handler/scsi_dh.c | 10 +++++----- + drivers/scsi/scsi_dh.c | 10 +++++----- drivers/scsi/scsi_lib.c | 11 +++++++++++ include/scsi/scsi_device.h | 1 + 3 files changed, 17 insertions(+), 5 deletions(-) ---- a/drivers/scsi/device_handler/scsi_dh.c -+++ b/drivers/scsi/device_handler/scsi_dh.c +--- a/drivers/scsi/scsi_dh.c ++++ b/drivers/scsi/scsi_dh.c @@ -397,7 +397,7 @@ int scsi_dh_activate(struct request_queu struct device *dev = NULL; @@ -48,8 +48,8 @@ if (!sdev || !get_device(&sdev->sdev_gendev)) sdev = NULL; spin_unlock_irqrestore(q->queue_lock, flags); ---- a/drivers/scsi/scsi_lib.c -+++ b/drivers/scsi/scsi_lib.c +--- a/drivers/scsi/scsi_dh.c ++++ b/drivers/scsi/scsi_dh.c @@ -1594,6 +1594,17 @@ out: kfree(cmd->sense_buffer); } ++++++ patches.kernel.org.tar.bz2 ++++++ ++++ 23670 lines of diff (skipped) ++++++ patches.suse.tar.bz2 ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.suse/8250-sysrq-ctrl_o.patch new/patches.suse/8250-sysrq-ctrl_o.patch --- old/patches.suse/8250-sysrq-ctrl_o.patch 2015-09-22 17:17:36.000000000 +0200 +++ new/patches.suse/8250-sysrq-ctrl_o.patch 2015-09-25 22:51:28.000000000 +0200 @@ -110,17 +110,17 @@ of_node_put(prom_stdout); DBG("Found serial console at ttyS%d\n", offset); ---- a/drivers/tty/serial/8250/8250_core.c -+++ b/drivers/tty/serial/8250/8250_core.c +--- a/drivers/tty/serial/8250/8250_port.c ++++ b/drivers/tty/serial/8250/8250_port.c @@ -102,6 +102,8 @@ static unsigned int skip_txen_test; /* f - #define BOTH_EMPTY (UART_LSR_TEMT | UART_LSR_THRE) + #define BOTH_EMPTY (UART_LSR_TEMT | UART_LSR_THRE) +#define arch_8250_sysrq_via_ctrl_o(a,b) 0 + - #include <asm/serial.h> /* - * SERIAL_PORT_DFNS tells us about built-in ports that have no + * Here we define the default xmit fifo size used for each type of UART. + */ @@ -1423,7 +1425,11 @@ receive_chars(struct uart_8250_port *up, do { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.suse/btrfs-advertise-which-crc32c-implementation-is-being-used-on-mount new/patches.suse/btrfs-advertise-which-crc32c-implementation-is-being-used-on-mount --- old/patches.suse/btrfs-advertise-which-crc32c-implementation-is-being-used-on-mount 1970-01-01 01:00:00.000000000 +0100 +++ new/patches.suse/btrfs-advertise-which-crc32c-implementation-is-being-used-on-mount 2015-09-25 22:51:28.000000000 +0200 @@ -0,0 +1,33 @@ +From: Jeff Mahoney <[email protected]> +Subject: btrfs: advertise which crc32c implementation is being used on mount +References: bsc#946057 +Patch-mainline: Submitted to linux-btrfs, 16 Sep 2015 + +Since several architectures support hardware-accelerated crc32c +calculation, it would be nice to confirm that btrfs is actually using it. + +We can see an elevated use count for the module, but it doesn't actually +show who the users are. This patch simply prints the name of the driver +after successfully initializing the shash. + +Signed-off-by: Jeff Mahoney <[email protected]> +--- + fs/btrfs/hash.c | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) + +--- a/fs/btrfs/hash.c ++++ b/fs/btrfs/hash.c +@@ -20,8 +20,12 @@ static struct crypto_shash *tfm; + int __init btrfs_hash_init(void) + { + tfm = crypto_alloc_shash("crc32c", 0, 0); ++ if (IS_ERR(tfm)) ++ return PTR_ERR(tfm); + +- return PTR_ERR_OR_ZERO(tfm); ++ printk("BTRFS: using %s for crc32c\n", ++ crypto_tfm_alg_driver_name(crypto_shash_tfm(tfm))); ++ return 0; + } + + void btrfs_hash_exit(void) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.suse/btrfs-provide-super_operations-get_inode_dev new/patches.suse/btrfs-provide-super_operations-get_inode_dev --- old/patches.suse/btrfs-provide-super_operations-get_inode_dev 1970-01-01 01:00:00.000000000 +0100 +++ new/patches.suse/btrfs-provide-super_operations-get_inode_dev 2015-09-25 22:51:28.000000000 +0200 @@ -0,0 +1,50 @@ +From: Jeff Mahoney <[email protected]> +Subject: btrfs: provide super_operations->inode_get_dev +References: bsc#927455 +Patch-mainline: Probably never, + upstream solutions have been met with heavy resistance in + preference of unworkable fixes + +In order to ensure that the per-subvolume anonymous dev_t gets published +to userspace, we need to provide the super_operations->get_inode_dev +operation. + +Signed-off-by: Jeff Mahoney <[email protected]> +--- + fs/btrfs/btrfs_inode.h | 2 +- + fs/btrfs/super.c | 6 ++++++ + 2 files changed, 7 insertions(+), 1 deletion(-) + +--- a/fs/btrfs/btrfs_inode.h ++++ b/fs/btrfs/btrfs_inode.h +@@ -179,7 +179,7 @@ struct btrfs_inode { + + extern unsigned char btrfs_filetype_table[]; + +-static inline struct btrfs_inode *BTRFS_I(struct inode *inode) ++static inline struct btrfs_inode *BTRFS_I(const struct inode *inode) + { + return container_of(inode, struct btrfs_inode, vfs_inode); + } +--- a/fs/btrfs/super.c ++++ b/fs/btrfs/super.c +@@ -1813,6 +1813,11 @@ static int btrfs_show_devname(struct seq + return 0; + } + ++static dev_t btrfs_get_inode_dev(const struct inode *inode) ++{ ++ return BTRFS_I(inode)->root->anon_dev; ++} ++ + static const struct super_operations btrfs_super_ops = { + .drop_inode = btrfs_drop_inode, + .evict_inode = btrfs_evict_inode, +@@ -1827,6 +1832,7 @@ static const struct super_operations btr + .statfs = btrfs_statfs, + .remount_fs = btrfs_remount, + .freeze_fs = btrfs_freeze, ++ .get_inode_dev = btrfs_get_inode_dev, + }; + + static const struct file_operations btrfs_ctl_fops = { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.suse/btrfs-use-correct-device-for-maps.patch new/patches.suse/btrfs-use-correct-device-for-maps.patch --- old/patches.suse/btrfs-use-correct-device-for-maps.patch 2015-09-22 17:17:36.000000000 +0200 +++ new/patches.suse/btrfs-use-correct-device-for-maps.patch 1970-01-01 01:00:00.000000000 +0100 @@ -1,68 +0,0 @@ -From: David Sterba <[email protected]> -Date: Mon, 02 Jan 2012 13:40:28 +0100 -Subject: [PATCH] btrfs: use correct device for maps -Reference: bnc#672923 bnc#769545 -Patch-mainline: no - -Signed-off-by: David Sterba <[email protected]> ---- - ---- - fs/proc/task_mmu.c | 11 ++++++++++- - fs/proc/task_nommu.c | 11 ++++++++++- - 2 files changed, 20 insertions(+), 2 deletions(-) - ---- a/fs/proc/task_mmu.c 2013-05-11 20:14:08.000000000 -0400 -+++ b/fs/proc/task_mmu.c 2013-05-14 09:22:40.157664262 -0400 -@@ -11,6 +11,7 @@ - #include <linux/swap.h> - #include <linux/swapops.h> - #include <linux/mmu_notifier.h> -+#include <linux/magic.h> - - #include <asm/elf.h> - #include <asm/uaccess.h> -@@ -272,7 +273,15 @@ show_map_vma(struct seq_file *m, struct - - if (file) { - struct inode *inode = file_inode(vma->vm_file); -- dev = inode->i_sb->s_dev; -+ -+ if (inode->i_sb->s_magic == BTRFS_SUPER_MAGIC) { -+ struct kstat stat; -+ -+ vfs_getattr(&file->f_path, &stat); -+ dev = stat.dev; -+ } else { -+ dev = inode->i_sb->s_dev; -+ } - ino = inode->i_ino; - pgoff = ((loff_t)vma->vm_pgoff) << PAGE_SHIFT; - } ---- a/fs/proc/task_nommu.c 2013-05-11 20:14:08.000000000 -0400 -+++ b/fs/proc/task_nommu.c 2013-05-14 09:22:50.310566899 -0400 -@@ -7,6 +7,7 @@ - #include <linux/ptrace.h> - #include <linux/slab.h> - #include <linux/seq_file.h> -+#include <linux/magic.h> - #include "internal.h" - - /* -@@ -150,7 +151,15 @@ static int nommu_vma_show(struct seq_fil - - if (file) { - struct inode *inode = file_inode(vma->vm_file); -- dev = inode->i_sb->s_dev; -+ -+ if (inode->i_sb->s_magic == BTRFS_SUPER_MAGIC) { -+ struct kstat stat; -+ -+ vfs_getattr(&file->f_path, &stat); -+ dev = stat.dev; -+ } else { -+ dev = inode->i_sb->s_dev; -+ } - ino = inode->i_ino; - pgoff = (loff_t)vma->vm_pgoff << PAGE_SHIFT; - } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.suse/kconfig-automate-kernel-desktop new/patches.suse/kconfig-automate-kernel-desktop --- old/patches.suse/kconfig-automate-kernel-desktop 2015-09-22 17:17:36.000000000 +0200 +++ new/patches.suse/kconfig-automate-kernel-desktop 1970-01-01 01:00:00.000000000 +0100 @@ -1,50 +0,0 @@ -From: Suresh Jayaraman <[email protected]> -Subject: [PATCH] automate config options for kernel-desktop -References: FATE#305694 -Patch-mainline: Never - -Automate the desktop only kernel configuration options with the new -CONFIG_KERNEL_DESKTOP. - -Signed-off-by: Suresh Jayaraman <[email protected]> ---- - init/Kconfig | 6 ++++++ - kernel/Kconfig.hz | 1 + - kernel/Kconfig.preempt | 1 + - 3 files changed, 8 insertions(+) - ---- a/init/Kconfig -+++ b/init/Kconfig -@@ -30,6 +30,12 @@ config SPLIT_PACKAGE - If you aren't packaging a kernel for distribution, it's safe to - say n. - -+config KERNEL_DESKTOP -+ bool "Kernel to suit desktop workloads" -+ help -+ This is an option used to tune kernel parameters to better suit -+ desktop workloads. -+ - config ARCH - string - option env="ARCH" ---- a/kernel/Kconfig.hz -+++ b/kernel/Kconfig.hz -@@ -4,6 +4,7 @@ - - choice - prompt "Timer frequency" -+ default HZ_1000 if KERNEL_DESKTOP - default HZ_250 - help - Allows the configuration of the timer frequency. It is customary ---- a/kernel/Kconfig.preempt -+++ b/kernel/Kconfig.preempt -@@ -1,6 +1,7 @@ - - choice - prompt "Preemption Model" -+ default PREEMPT if KERNEL_DESKTOP - default PREEMPT_NONE - - config PREEMPT_NONE diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.suse/mpath-fix new/patches.suse/mpath-fix --- old/patches.suse/mpath-fix 2015-09-22 17:17:36.000000000 +0200 +++ new/patches.suse/mpath-fix 2015-09-25 22:51:28.000000000 +0200 @@ -13,14 +13,6 @@ --- a/drivers/md/dm-mpath.c +++ b/drivers/md/dm-mpath.c -@@ -165,7 +165,6 @@ static struct priority_group *alloc_prio - static void free_pgpaths(struct list_head *pgpaths, struct dm_target *ti) - { - struct pgpath *pgpath, *tmp; -- struct multipath *m = ti->private; - - list_for_each_entry_safe(pgpath, tmp, pgpaths, list) { - list_del(&pgpath->list); @@ -1201,7 +1200,7 @@ static void pg_init_done(void *data, int break; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.suse/scsi-netlink-ml new/patches.suse/scsi-netlink-ml --- old/patches.suse/scsi-netlink-ml 2015-09-22 17:17:36.000000000 +0200 +++ new/patches.suse/scsi-netlink-ml 2015-09-25 22:51:28.000000000 +0200 @@ -27,8 +27,8 @@ #include <scsi/scsi.h> #include <scsi/scsi_cmnd.h> @@ -34,6 +36,7 @@ - #include <scsi/scsi_host.h> #include <scsi/scsi_ioctl.h> + #include <scsi/scsi_dh.h> #include <scsi/sg.h> +#include <scsi/scsi_netlink_ml.h> @@ -121,9 +121,9 @@ + scsi_post_sense_event(sdev, &sshdr); + - if (sdev->scsi_dh_data && sdev->scsi_dh_data->scsi_dh && - sdev->scsi_dh_data->scsi_dh->check_sense) { + if (sdev->handler && sdev->handler->check_sense) { int rc; + --- a/include/uapi/scsi/scsi_netlink.h +++ b/include/uapi/scsi/scsi_netlink.h @@ -35,7 +35,8 @@ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.suse/stack-unwind new/patches.suse/stack-unwind --- old/patches.suse/stack-unwind 2015-09-22 17:17:36.000000000 +0200 +++ new/patches.suse/stack-unwind 2015-09-25 22:51:28.000000000 +0200 @@ -58,7 +58,7 @@ --- a/Makefile +++ b/Makefile -@@ -729,6 +729,11 @@ endif +@@ -722,6 +722,11 @@ endif KBUILD_CFLAGS += $(call cc-option, -fno-var-tracking-assignments) @@ -72,7 +72,7 @@ KBUILD_CFLAGS += $(call cc-option, -gsplit-dwarf, -g) --- a/arch/x86/Kconfig +++ b/arch/x86/Kconfig -@@ -635,7 +635,7 @@ config X86_32_IRIS +@@ -637,7 +637,7 @@ config X86_32_IRIS config SCHED_OMIT_FRAME_POINTER def_bool y prompt "Single-depth WCHAN output" @@ -83,7 +83,7 @@ is disabled then wchan values will recurse back to the --- a/arch/x86/Makefile +++ b/arch/x86/Makefile -@@ -149,6 +149,11 @@ endif +@@ -159,6 +159,11 @@ endif sp-$(CONFIG_X86_32) := esp sp-$(CONFIG_X86_64) := rsp @@ -95,7 +95,7 @@ # does binutils support specific instructions? asinstr := $(call as-instr,fxsaveq (%rax),-DCONFIG_AS_FXSAVEQ=1) asinstr += $(call as-instr,pshufb %xmm0$(comma)%xmm0,-DCONFIG_AS_SSSE3=1) -@@ -156,8 +161,8 @@ asinstr += $(call as-instr,crc32l %eax$( +@@ -166,8 +171,8 @@ asinstr += $(call as-instr,crc32l %eax$( avx_instr := $(call as-instr,vxorps %ymm0$(comma)%ymm1$(comma)%ymm2,-DCONFIG_AS_AVX=1) avx2_instr :=$(call as-instr,vpbroadcastb %xmm0$(comma)%ymm1,-DCONFIG_AS_AVX2=1) @@ -106,16 +106,16 @@ LDFLAGS := -m elf_$(UTS_MACHINE) -@@ -166,7 +171,9 @@ KBUILD_CFLAGS += -pipe +@@ -176,7 +181,9 @@ KBUILD_CFLAGS += -pipe # Workaround for a gcc prelease that unfortunately was shipped in a suse release KBUILD_CFLAGS += -Wno-sign-compare # +ifneq ($(CONFIG_UNWIND_INFO),y) KBUILD_CFLAGS += -fno-asynchronous-unwind-tables +endif - # prevent gcc from generating any FP code by mistake - KBUILD_CFLAGS += -mno-sse -mno-mmx -mno-sse2 -mno-3dnow - KBUILD_CFLAGS += $(call cc-option,-mno-avx,) + + KBUILD_CFLAGS += $(mflags-y) + KBUILD_AFLAGS += $(mflags-y) --- a/arch/x86/entry/calling.h +++ b/arch/x86/entry/calling.h @@ -46,6 +46,19 @@ For 32-bit we have the following convent @@ -140,7 +140,7 @@ /* --- a/arch/x86/entry/entry_32.S +++ b/arch/x86/entry/entry_32.S -@@ -224,6 +224,39 @@ ENTRY(ret_from_fork) +@@ -214,6 +214,39 @@ ENTRY(ret_from_fork) jmp syscall_exit END(ret_from_fork) @@ -182,7 +182,7 @@ call schedule_tail --- a/arch/x86/entry/entry_64.S +++ b/arch/x86/entry/entry_64.S -@@ -973,6 +973,38 @@ ENTRY(do_softirq_own_stack) +@@ -874,6 +874,38 @@ ENTRY(do_softirq_own_stack) ret END(do_softirq_own_stack) @@ -604,7 +604,7 @@ /* Built-in module parameters. */ \ __param : AT(ADDR(__param) - LOAD_OFFSET) { \ VMLINUX_SYMBOL(__start___param) = .; \ -@@ -828,3 +830,23 @@ +@@ -826,3 +828,23 @@ BSS(bss_align) \ . = ALIGN(stop_align); \ VMLINUX_SYMBOL(__bss_stop) = .; @@ -806,14 +806,14 @@ smp_prepare_boot_cpu(); /* arch-specific boot-cpu hooks */ --- a/kernel/Makefile +++ b/kernel/Makefile -@@ -49,6 +49,7 @@ obj-$(CONFIG_SYSTEM_TRUSTED_KEYRING) += +@@ -48,6 +48,7 @@ obj-$(CONFIG_UID16) += uid16.o obj-$(CONFIG_MODULES) += module.o obj-$(CONFIG_MODULE_SIG) += module_signing.o obj-$(CONFIG_KALLSYMS) += kallsyms.o +obj-$(CONFIG_STACK_UNWIND) += unwind.o obj-$(CONFIG_BSD_PROCESS_ACCT) += acct.o + obj-$(CONFIG_KEXEC_CORE) += kexec_core.o obj-$(CONFIG_KEXEC) += kexec.o - obj-$(CONFIG_BACKTRACE_SELF_TEST) += backtracetest.o --- a/kernel/module.c +++ b/kernel/module.c @@ -45,6 +45,7 @@ @@ -2579,7 +2579,7 @@ config BOOT_PRINTK_DELAY bool "Delay each boot printk message by N milliseconds" depends on DEBUG_KERNEL && PRINTK && GENERIC_CALIBRATE_DELAY -@@ -1553,7 +1571,8 @@ config FAULT_INJECTION_STACKTRACE_FILTER +@@ -1540,7 +1558,8 @@ config FAULT_INJECTION_STACKTRACE_FILTER depends on FAULT_INJECTION_DEBUG_FS && STACKTRACE_SUPPORT depends on !X86_64 select STACKTRACE @@ -2589,7 +2589,7 @@ help Provide stacktrace filter for fault-injection capabilities -@@ -1563,7 +1582,8 @@ config LATENCYTOP +@@ -1550,7 +1569,8 @@ config LATENCYTOP depends on DEBUG_KERNEL depends on STACKTRACE_SUPPORT depends on PROC_FS diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.suse/suse-hv-guest-os-id.patch new/patches.suse/suse-hv-guest-os-id.patch --- old/patches.suse/suse-hv-guest-os-id.patch 2015-09-22 17:17:36.000000000 +0200 +++ new/patches.suse/suse-hv-guest-os-id.patch 2015-09-25 22:51:28.000000000 +0200 @@ -17,9 +17,9 @@ --- linux-3.9-rc5-master.orig/drivers/hv/hv.c +++ linux-3.9-rc5-master/drivers/hv/hv.c @@ -134,6 +134,8 @@ int hv_init(void) - int max_leaf; - union hv_x64_msr_hypercall_contents hypercall_msr; + union hv_x64_msr_hypercall_contents tsc_msr; void *virtaddr = NULL; + void *va_tsc = NULL; + __u8 d1 = 0x10; /* SuSE */ + __u16 d2 = 0x0; /* -d of a.b.c-d */ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.suse/vfs-add-super_operations-get_inode_dev new/patches.suse/vfs-add-super_operations-get_inode_dev --- old/patches.suse/vfs-add-super_operations-get_inode_dev 1970-01-01 01:00:00.000000000 +0100 +++ new/patches.suse/vfs-add-super_operations-get_inode_dev 2015-09-25 22:51:28.000000000 +0200 @@ -0,0 +1,278 @@ +From: Jeff Mahoney <[email protected]> +Subject: vfs: add super_operations->get_inode_dev +References: bsc#927455 +Patch-mainline: Never, Upstream submissions have been met with a request to use per-subvolume superblocks, which is unworkable in practice + +There are many places where a dev_t:ino_t pair are passed to userspace +to uniquely describe an inode. Some file systems, like btrfs, have +multiple inode namespace internally and use a separate dev_t to make the +distinction between them. + +This patch adds a super_operations->get_inode_dev operation to allow +the file system to export those dev_ts to callers within the kernel +for further export to userspace. + +Without this patch, things like audit and some perf and trace events +will not distinguish between subvolumes within a single btrfs filesystem. + +Signed-off-by: Jeff Mahoney <[email protected]> +--- + arch/arc/kernel/troubleshoot.c | 2 +- + drivers/staging/lustre/lustre/llite/dir.c | 2 +- + drivers/staging/lustre/lustre/llite/file.c | 2 +- + fs/locks.c | 4 ++-- + fs/nfsd/nfs3xdr.c | 2 +- + fs/nfsd/vfs.c | 4 ++-- + fs/notify/fdinfo.c | 4 ++-- + fs/proc/nommu.c | 2 +- + fs/proc/task_mmu.c | 2 +- + fs/proc/task_nommu.c | 2 +- + fs/stat.c | 2 +- + include/linux/fs.h | 9 +++++++++ + include/trace/events/filemap.h | 2 +- + kernel/audit.c | 2 +- + kernel/audit_watch.c | 4 ++-- + kernel/events/core.c | 2 +- + mm/memory-failure.c | 2 +- + security/tomoyo/condition.c | 2 +- + 18 files changed, 30 insertions(+), 21 deletions(-) + +--- a/arch/arc/kernel/troubleshoot.c ++++ b/arch/arc/kernel/troubleshoot.c +@@ -101,7 +101,7 @@ static void show_faulting_vma(unsigned l + if (file) { + nm = file_path(file, buf, PAGE_SIZE - 1); + inode = file_inode(vma->vm_file); +- dev = inode->i_sb->s_dev; ++ dev = inode_get_dev(inode); + ino = inode->i_ino; + } + pr_info(" @off 0x%lx in [%s]\n" +--- a/drivers/staging/lustre/lustre/llite/dir.c ++++ b/drivers/staging/lustre/lustre/llite/dir.c +@@ -1502,7 +1502,7 @@ skip_lmm: + struct lov_user_mds_data *lmdp; + lstat_t st = { 0 }; + +- st.st_dev = inode->i_sb->s_dev; ++ st.st_dev = inode_get_dev(inode); + st.st_mode = body->mode; + st.st_nlink = body->nlink; + st.st_uid = body->uid; +--- a/drivers/staging/lustre/lustre/llite/file.c ++++ b/drivers/staging/lustre/lustre/llite/file.c +@@ -3013,7 +3013,7 @@ int ll_getattr(struct vfsmount *mnt, str + if (res) + return res; + +- stat->dev = inode->i_sb->s_dev; ++ stat->dev = inode_get_dev(inode); + if (ll_need_32bit_api(sbi)) + stat->ino = cl_fid_build_ino(&lli->lli_fid, 1); + else +--- a/fs/locks.c ++++ b/fs/locks.c +@@ -2559,8 +2559,8 @@ static void lock_get_status(struct seq_f + if (inode) { + /* userspace relies on this representation of dev_t */ + seq_printf(f, "%d %02x:%02x:%ld ", fl_pid, +- MAJOR(inode->i_sb->s_dev), +- MINOR(inode->i_sb->s_dev), inode->i_ino); ++ MAJOR(inode_get_dev(inode)), ++ MINOR(inode_get_dev(inode)), inode->i_ino); + } else { + seq_printf(f, "%d <none>:0 ", fl_pid); + } +--- a/fs/nfsd/nfs3xdr.c ++++ b/fs/nfsd/nfs3xdr.c +@@ -146,7 +146,7 @@ static __be32 *encode_fsid(__be32 *p, st + default: + case FSIDSOURCE_DEV: + p = xdr_encode_hyper(p, (u64)huge_encode_dev +- (d_inode(fhp->fh_dentry)->i_sb->s_dev)); ++ (inode_get_dev(d_inode(fhp->fh_dentry)))); + break; + case FSIDSOURCE_FSID: + p = xdr_encode_hyper(p, (u64) fhp->fh_export->ex_fsid); +--- a/fs/nfsd/vfs.c ++++ b/fs/nfsd/vfs.c +@@ -892,7 +892,7 @@ static int wait_for_concurrent_writes(st + int err = 0; + + if (atomic_read(&inode->i_writecount) > 1 +- || (last_ino == inode->i_ino && last_dev == inode->i_sb->s_dev)) { ++ || (last_ino == inode->i_ino && last_dev == inode_get_dev(inode))) { + dprintk("nfsd: write defer %d\n", task_pid_nr(current)); + msleep(10); + dprintk("nfsd: write resume %d\n", task_pid_nr(current)); +@@ -903,7 +903,7 @@ static int wait_for_concurrent_writes(st + err = vfs_fsync(file, 0); + } + last_ino = inode->i_ino; +- last_dev = inode->i_sb->s_dev; ++ last_dev = inode_get_dev(inode); + return err; + } + +--- a/fs/notify/fdinfo.c ++++ b/fs/notify/fdinfo.c +@@ -84,7 +84,7 @@ static void inotify_fdinfo(struct seq_fi + inode = igrab(mark->inode); + if (inode) { + seq_printf(m, "inotify wd:%x ino:%lx sdev:%x mask:%x ignored_mask:%x ", +- inode_mark->wd, inode->i_ino, inode->i_sb->s_dev, ++ inode_mark->wd, inode->i_ino, inode_get_dev(inode), + mark->mask, mark->ignored_mask); + show_mark_fhandle(m, inode); + seq_putc(m, '\n'); +@@ -117,7 +117,7 @@ static void fanotify_fdinfo(struct seq_f + if (!inode) + return; + seq_printf(m, "fanotify ino:%lx sdev:%x mflags:%x mask:%x ignored_mask:%x ", +- inode->i_ino, inode->i_sb->s_dev, ++ inode->i_ino, inode_get_dev(inode), + mflags, mark->mask, mark->ignored_mask); + show_mark_fhandle(m, inode); + seq_putc(m, '\n'); +--- a/fs/proc/nommu.c ++++ b/fs/proc/nommu.c +@@ -46,7 +46,7 @@ static int nommu_region_show(struct seq_ + + if (file) { + struct inode *inode = file_inode(region->vm_file); +- dev = inode->i_sb->s_dev; ++ dev = inode_get_dev(inode); + ino = inode->i_ino; + } + +--- a/fs/proc/task_mmu.c ++++ b/fs/proc/task_mmu.c +@@ -281,7 +281,7 @@ show_map_vma(struct seq_file *m, struct + + if (file) { + struct inode *inode = file_inode(vma->vm_file); +- dev = inode->i_sb->s_dev; ++ dev = inode_get_dev(inode); + ino = inode->i_ino; + pgoff = ((loff_t)vma->vm_pgoff) << PAGE_SHIFT; + } +--- a/fs/proc/task_nommu.c ++++ b/fs/proc/task_nommu.c +@@ -161,7 +161,7 @@ static int nommu_vma_show(struct seq_fil + + if (file) { + struct inode *inode = file_inode(vma->vm_file); +- dev = inode->i_sb->s_dev; ++ dev = inode_get_dev(inode); + ino = inode->i_ino; + pgoff = (loff_t)vma->vm_pgoff << PAGE_SHIFT; + } +--- a/fs/stat.c ++++ b/fs/stat.c +@@ -20,7 +20,7 @@ + + void generic_fillattr(struct inode *inode, struct kstat *stat) + { +- stat->dev = inode->i_sb->s_dev; ++ stat->dev = inode_get_dev(inode); + stat->ino = inode->i_ino; + stat->mode = inode->i_mode; + stat->nlink = inode->i_nlink; +--- a/include/linux/fs.h ++++ b/include/linux/fs.h +@@ -1728,6 +1728,7 @@ struct super_operations { + struct shrink_control *); + long (*free_cached_objects)(struct super_block *, + struct shrink_control *); ++ dev_t (*get_inode_dev)(const struct inode *); + }; + + /* +@@ -3040,4 +3041,12 @@ static inline bool dir_relax(struct inod + + extern bool path_noexec(const struct path *path); + ++static inline dev_t inode_get_dev(const struct inode *inode) ++{ ++ if (inode->i_sb->s_op->get_inode_dev) ++ return inode->i_sb->s_op->get_inode_dev(inode); ++ ++ return inode->i_sb->s_dev; ++} ++ + #endif /* _LINUX_FS_H */ +--- a/include/trace/events/filemap.h ++++ b/include/trace/events/filemap.h +@@ -29,7 +29,7 @@ DECLARE_EVENT_CLASS(mm_filemap_op_page_c + __entry->i_ino = page->mapping->host->i_ino; + __entry->index = page->index; + if (page->mapping->host->i_sb) +- __entry->s_dev = page->mapping->host->i_sb->s_dev; ++ __entry->s_dev = inode_get_dev(page->mapping->host); + else + __entry->s_dev = page->mapping->host->i_rdev; + ), +--- a/kernel/audit.c ++++ b/kernel/audit.c +@@ -1711,7 +1711,7 @@ void audit_copy_inode(struct audit_names + const struct inode *inode) + { + name->ino = inode->i_ino; +- name->dev = inode->i_sb->s_dev; ++ name->dev = inode_get_dev(inode); + name->mode = inode->i_mode; + name->uid = inode->i_uid; + name->gid = inode->i_gid; +--- a/kernel/audit_watch.c ++++ b/kernel/audit_watch.c +@@ -367,7 +367,7 @@ static int audit_get_nd(struct audit_wat + mutex_unlock(&d_backing_inode(parent->dentry)->i_mutex); + if (d_is_positive(d)) { + /* update watch filter fields */ +- watch->dev = d_backing_inode(d)->i_sb->s_dev; ++ watch->dev = inode_get_dev(d_backing_inode(d)); + watch->ino = d_backing_inode(d)->i_ino; + } + dput(d); +@@ -495,7 +495,7 @@ static int audit_watch_handle_event(stru + }; + + if (mask & (FS_CREATE|FS_MOVED_TO) && inode) +- audit_update_watch(parent, dname, inode->i_sb->s_dev, inode->i_ino, 0); ++ audit_update_watch(parent, dname, inode_get_dev(inode), inode->i_ino, 0); + else if (mask & (FS_DELETE|FS_MOVED_FROM)) + audit_update_watch(parent, dname, AUDIT_DEV_UNSET, AUDIT_INO_UNSET, 1); + else if (mask & (FS_DELETE_SELF|FS_UNMOUNT|FS_MOVE_SELF)) +--- a/kernel/events/core.c ++++ b/kernel/events/core.c +@@ -5902,7 +5902,7 @@ static void perf_event_mmap_event(struct + goto cpy_name; + } + inode = file_inode(vma->vm_file); +- dev = inode->i_sb->s_dev; ++ dev = inode_get_dev(inode); + ino = inode->i_ino; + gen = inode->i_generation; + maj = MAJOR(dev); +--- a/mm/memory-failure.c ++++ b/mm/memory-failure.c +@@ -97,7 +97,7 @@ static int hwpoison_filter_dev(struct pa + if (mapping == NULL || mapping->host == NULL) + return -EINVAL; + +- dev = mapping->host->i_sb->s_dev; ++ dev = inode_get_dev(mapping->host); + if (hwpoison_filter_dev_major != ~0U && + hwpoison_filter_dev_major != MAJOR(dev)) + return -EINVAL; +--- a/security/tomoyo/condition.c ++++ b/security/tomoyo/condition.c +@@ -721,7 +721,7 @@ void tomoyo_get_attributes(struct tomoyo + stat->gid = inode->i_gid; + stat->ino = inode->i_ino; + stat->mode = inode->i_mode; +- stat->dev = inode->i_sb->s_dev; ++ stat->dev = inode_get_dev(inode); + stat->rdev = inode->i_rdev; + obj->stat_valid[i] = true; + } ++++++ patches.xen.tar.bz2 ++++++ ++++ 15385 lines of diff (skipped) ++++++ series.conf ++++++ --- /var/tmp/diff_new_pack.RKdqmO/_old 2015-11-06 00:04:21.000000000 +0100 +++ /var/tmp/diff_new_pack.RKdqmO/_new 2015-11-06 00:04:21.000000000 +0100 @@ -27,11 +27,6 @@ # DO NOT MODIFY THEM! # Send separate patches upstream if you find a problem... ######################################################## - patches.kernel.org/patch-4.2.1 - patches.kernel.org/patch-4.2.1-2 - patches.kernel.org/patch-4.2.2-3 - patches.kernel.org/patch-4.2.3-4 - patches.kernel.org/patch-4.2.4-5 ######################################################## # Build fixes that apply to the vanilla kernel too. @@ -66,7 +61,6 @@ patches.suse/supported-flag-wildcards patches.suse/supported-flag-external patches.suse/genksyms-add-override-flag.diff - patches.suse/kconfig-automate-kernel-desktop ######################################################## # Simple export additions/removals @@ -103,7 +97,9 @@ ######################################################## # x86_64/i386 biarch ######################################################## - patches.arch/x86_64-hpet-64bit-timer.patch + # Upstream commit c8b5db7de66b75330a96f9f1ad7376b89646c953 + # changed this area a lot. ++needs_updating patches.arch/x86_64-hpet-64bit-timer.patch ######################################################## # x86 MCE/MCA (Machine Check Error/Architecture) extensions @@ -163,7 +159,6 @@ patches.arch/arm64-0004-net-xgbe-Add-A0-silicon-support.patch patches.arch/arm64-0005-arm64-dts-Add-X-Gene-reboot-driver-dts-node.patch patches.arch/arm64-0006-arm64-Select-reboot-driver-for-X-Gene-platform.patch - 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 # Generic PCIe host bridge, necessary for QEMU and Seattle, upstreaming wip @@ -175,7 +170,7 @@ +mbrugger patches.arch/arm64-gpex-0006-irqchip-gicv3-its-Get-rid-of-struct-msi_controller.patch +mbrugger patches.arch/arm64-gpex-0007-PCI-MSI-Drop-domain-field-from-msi_controller.patch +mbrugger patches.arch/arm64-gpex-0008-PCI-MSI-of-Allow-msi_domain-lookup-using-the-PHB-nod.patch - patches.arch/arm64-gpex-0009-pci-Enable-pci-host-generic-support-for-ARM64.patch ++mbrugger patches.arch/arm64-gpex-0009-pci-Enable-pci-host-generic-support-for-ARM64.patch ######################################################## # S/390 @@ -188,6 +183,7 @@ ######################################################## patches.suse/readahead-request-tunables.patch patches.fixes/mm-Fix-assertion-mapping-nrpages-0-in-end_writeback.patch + patches.suse/vfs-add-super_operations-get_inode_dev ######################################################## # IPC patches @@ -261,9 +257,8 @@ ######################################################## # btrfs ######################################################## - patches.suse/btrfs-use-correct-device-for-maps.patch - patches.fixes/btrfs-fix-stale-directory-entries-after-fsync-log-replay - patches.fixes/btrfs-fix-stale-dir-entries-after-unlink-inode-eviction-and-fsync + patches.suse/btrfs-advertise-which-crc32c-implementation-is-being-used-on-mount + patches.suse/btrfs-provide-super_operations-get_inode_dev ######################################################## # Reiserfs Patches @@ -323,7 +318,7 @@ patches.fixes/scsi-retry-alua-transition-in-progress - patches.fixes/scsi-dh-queuedata-accessors ++needs_update patches.fixes/scsi-dh-queuedata-accessors patches.drivers/megaraid-mbox-fix-SG_IO @@ -350,13 +345,12 @@ # DRM/Video ######################################################## +jeffm patches.fixes/nouveau-fix-race-with-fence-signaling - patches.drivers/0001-vmwgfx-Rework-device-initialization.patch - patches.drivers/0002-drm-vmwgfx-Allow-dropped-masters-render-node-like-ac.patch patches.fixes/drm-sti-Remove-select-of-CONFI_FW_LOADER_USER_HELPER ######################################################## # video4linux ######################################################## + patches.fixes/media-c8sectpfe-Remove-select-of-CONFIG_FW_LOADER_USER_HELPER patches.fixes/media-media-vivid-osd-fix-info-leak-in-ioctl.patch ######################################################## @@ -368,7 +362,6 @@ # Wireless Networking ######################################################## patches.suse/b43-missing-firmware-info.patch - patches.fixes/rtlwifi-rtl8821ae-Fix-system-lockups-on-boot.patch ######################################################## # ISDN @@ -391,8 +384,6 @@ # USB ######################################################## - patches.drivers/0001-qmi_wwan-Add-support-for-Dell-Wireless-5809e-4G-Mode.patch - ######################################################## # I2C ######################################################## @@ -406,7 +397,6 @@ ########################################################## # Sound ########################################################## - patches.drivers/ALSA-hda-Fix-deadlock-at-error-in-building-PCM patches.drivers/ALSA-hda-Disable-64bit-address-for-Creative-HDA-cont ######################################################## @@ -432,7 +422,6 @@ # device-mapper ######################################################## patches.suse/dm-emulate-blkrrpart-ioctl - patches.fixes/dm-mpath-reattach-dh patches.suse/dm-mpath-leastpending-path-update +needs_update patches.suse/dm-mpath-accept-failed-paths +needs_update patches.suse/dm-mpath-detach-existing-hardware-handler @@ -604,6 +593,7 @@ patches.xen/xen3-patch-4.0 patches.xen/xen3-patch-4.1 patches.xen/xen3-patch-4.2 + patches.xen/xen3-patch-4.3-rc5 # ports of other patches patches.xen/xen3-stack-unwind @@ -643,6 +633,7 @@ patches.xen/xen-netback-multiple-tasklets patches.xen/xen-netback-kernel-threads patches.xen/xen-netback-tx-queue-len + patches.xen/xen-netback-coalesce patches.xen/xen-vscsi-large-requests patches.xen/xen-cxgb3 patches.xen/xen-dcdbas ++++++ source-timestamp ++++++ --- /var/tmp/diff_new_pack.RKdqmO/_old 2015-11-06 00:04:21.000000000 +0100 +++ /var/tmp/diff_new_pack.RKdqmO/_new 2015-11-06 00:04:21.000000000 +0100 @@ -1,3 +1,3 @@ -2015-10-28 18:49:15 +0100 -GIT Revision: 0491388eeb2f409aa709a00b47cd55553bc6d41b +2015-11-02 16:35:09 +0100 +GIT Revision: 7b374a4af8a6bf8109b917f5c839dcd85b607ec0 GIT Branch: stable ++++++ supported.conf ++++++ --- /var/tmp/diff_new_pack.RKdqmO/_old 2015-11-06 00:04:21.000000000 +0100 +++ /var/tmp/diff_new_pack.RKdqmO/_new 2015-11-06 00:04:21.000000000 +0100 @@ -262,6 +262,8 @@ +external drivers/block/viodasd # IBM legacy iSeries virtual disk drivers/block/virtio_blk +isa drivers/block/xd + drivers/block/xen-blkback/xen-blkback ++base drivers/block/xen-blkfront drivers/bluetooth/bcm203x # Broadcom Blutonium firmware driver drivers/bluetooth/bfusb # BlueFRITZ! USB driver drivers/bluetooth/bluecard_cs # Bluetooth driver for the Anycom BlueCard (LSE039/LSE041) @@ -648,6 +650,7 @@ drivers/input/misc/twl4030-pwrbutton drivers/input/misc/uinput # User level driver support for input subsystem drivers/input/misc/winbond-cir ++base drivers/input/misc/xen-kbdfront drivers/input/misc/yealink drivers/input/mouse/appletouch drivers/input/mouse/bcm5974 @@ -1361,6 +1364,8 @@ - drivers/net/wireless/wavelan_cs - drivers/net/wireless/ti/* - drivers/net/wireless/wl3501_cs # Planet wl3501 wireless driver + drivers/net/xen-netfront + drivers/net/xen-netback/xen-netback drivers/net/yellowfin # Packet Engines Yellowfin G-NIC Gigabit Ethernet driver +isa drivers/net/znet drivers/parport/parport @@ -1381,6 +1386,7 @@ drivers/pci/hotplug/shpchp # Standard Hot Plug PCI Controller Driver drivers/pci/pci-iomul # PCI I/O port multiplexer interface drivers/pci/pcie/aer/aer_inject # fate #306815 + drivers/pci/xen-pcifront drivers/pcmcia/i82092 +isa drivers/pcmcia/i82365 drivers/pcmcia/pcmcia @@ -1575,13 +1581,7 @@ +isa drivers/scsi/wd7000 drivers/scsi/virtio_scsi drivers/scsi/vmw_pvscsi - drivers/serial/8250 - drivers/serial/8250_accent - drivers/serial/8250_boca - drivers/serial/8250_exar_st16c554 - drivers/serial/8250_fourport - drivers/serial/8250_hub6 - drivers/serial/8250_pci + drivers/scsi/xen-scsifront drivers/serial/icom drivers/serial/ioc3_serial drivers/serial/ioc4_serial @@ -1613,6 +1613,14 @@ drivers/target/iscsi/iscsi_target_mod - drivers/telephony/* drivers/thermal/thermal_sys # Generic thermal zone interface + drivers/tty/serial/8250 + drivers/tty/serial/8250_accent + drivers/tty/serial/8250_base + drivers/tty/serial/8250_boca + drivers/tty/serial/8250_exar_st16c554 + drivers/tty/serial/8250_fourport + drivers/tty/serial/8250_hub6 + drivers/tty/serial/8250_pci drivers/uio/uio drivers/uio/uio_aec drivers/uio/uio_cif @@ -1649,6 +1657,7 @@ +base drivers/usb/host/uhci-hcd # USB Universal Host Controller Interface driver - drivers/usb/host/whci/whci-hcd +base drivers/usb/host/xhci-hcd ++base drivers/usb/host/xhci-pci drivers/usb/image/mdc800 # USB Driver for Mustek MDC800 Digital Camera drivers/usb/image/microtek # Microtek Scanmaker X6 USB scanner driver drivers/usb/misc/adutux @@ -1767,6 +1776,7 @@ drivers/video/cyber2000fb # CyberPro 2000, 2010 and 5000 framebuffer driver drivers/video/cyblafb # Frame buffer driver for Trident Cyberblade/i1 graphics core drivers/video/display/display ++base drivers/video/fbdev/xen-fbfront drivers/video/fb_ddc drivers/video/fb_sys_fops drivers/video/geode/gx1fb # Geode framebuffer driver @@ -1876,7 +1886,15 @@ drivers/xen/tpmback/tpmbk # Xen TPM device backend drivers/xen/usbback/usbbk drivers/xen/usbfront/xen-hcd + drivers/xen/xen-acpi-processor + drivers/xen/xen-evtchn + drivers/xen/xen-gntalloc + drivers/xen/xen-gntdev + drivers/xen/xen-pciback/xen-pciback # Xen PCI device backend + drivers/xen/xen-privcmd + drivers/xen/xen-scsiback drivers/xen/xenbus/xenbus_be # Xen XenBus backend driver support module + drivers/xen/xenfs/xenfs fs/9p/9p - fs/adfs/adfs - fs/affs/affs # Amiga filesystem support for Linux
