Hello community, here is the log from the commit of package kernel-source for openSUSE:Factory checked in at 2015-07-14 17:21:02 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 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-06-23 12:05:02.000000000 +0200 +++ /work/SRC/openSUSE:Factory/.kernel-source.new/kernel-debug.changes 2015-07-14 17:21:03.000000000 +0200 @@ -1,0 +2,66 @@ +Wed Jul 8 16:23:40 CEST 2015 - [email protected] + +- arm64: Don't report clear pmds and puds as huge. +- commit cac28b3 + +------------------------------------------------------------------- +Tue Jun 30 09:05:53 CEST 2015 - [email protected] + +- Linux 4.1.1. +- commit ab48011 + +------------------------------------------------------------------- +Mon Jun 29 13:53:27 CEST 2015 - [email protected] + +- Refresh + patches.fixes/drm-i915-Ensure-cache-flushes-prior-to-doing-CS-flip.patch. +- Refresh patches.fixes/mmc-sdhci-fix-low-memory-corruption.patch. + Update upstream statuses. +- commit 11b8ced + +------------------------------------------------------------------- +Mon Jun 29 13:48:30 CEST 2015 - [email protected] + +- drm/i915: Ensure cache flushes prior to doing CS flips + (bnc#931300). +- commit 406255f + +------------------------------------------------------------------- +Thu Jun 25 23:32:54 CEST 2015 - [email protected] + +- ARM64: config: UNWIND_INFO=y +- commit 8193a68 + +------------------------------------------------------------------- +Wed Jun 24 08:25:32 CEST 2015 - [email protected] + +- Update Xen patches to 4.1-final and c/s 1289. +- guarantee M2P to be invisible to user mode. +- commit fc59188 + +------------------------------------------------------------------- +Wed Jun 24 05:16:43 CEST 2015 - [email protected] + +- NFSv4: When returning a delegation, don't reclaim an incompatible open mode (bnc#934202). +- commit 6c74958 + +------------------------------------------------------------------- +Tue Jun 23 04:44:59 CEST 2015 - [email protected] + +- Update to 4.1-final. +- commit d6cfe1f + +------------------------------------------------------------------- +Thu Jun 18 18:07:55 CEST 2015 - [email protected] + +- x86/PCI: Use host bridge _CRS info on systems with >32 bit + addressing (bnc#907092). +- x86/PCI: Use host bridge _CRS info on Foxconn K8M890-8237A + (bnc#907092). +- x86/PCI: Use host bridge _CRS info on systems with >32 bit + addressing (bnc#907092). +- x86/PCI: Use host bridge _CRS info on Foxconn K8M890-8237A + (bnc#907092). +- commit 1d9da2e + +------------------------------------------------------------------- @@ -15,0 +82,18 @@ +Tue Jun 16 16:03:55 CEST 2015 - [email protected] + +- Enable brcmfmac driver for x86-64 and i586 (boo#934932) +- commit 3e79c51 + +------------------------------------------------------------------- +Mon Jun 15 15:46:12 CEST 2015 - [email protected] + +- Update to 4.1-rc8. +- commit d3aa377 + +------------------------------------------------------------------- +Fri Jun 12 15:40:32 CEST 2015 - [email protected] + +- Update config files: extend CONFIG_DPM_WATCHDOG_TIMEOUT to 60 (bnc#934397) +- commit b3acd3f + +------------------------------------------------------------------- @@ -25 +109,10 @@ -- commit 0e899eb +- commit ea963c7 + +------------------------------------------------------------------- +Tue Jun 9 21:02:26 CEST 2015 - [email protected] + +- Update to 4.1-rc7. +- Config changes: + - arm64/armv7hl: + - PHY_QCOM_UFS=m +- commit abe587d @@ -37,0 +131,83 @@ +Sat Jun 6 23:38:38 CEST 2015 - [email protected] + +- ARM: config: Sync more settings with x86_64 + Compile in modules that are =y on x86_64, remove modules + that are not compiled on x86_64 +- commit d36ab59 + +------------------------------------------------------------------- +Sat Jun 6 23:03:52 CEST 2015 - [email protected] + +- config: armv7hl: Disable CONFIG_FW_LOADER_USER_HELPER_FALLBACK + Only needed by DRM_STI, which we don't need, so disable + it alltogether (it isn't configured in userspace anyway + and deprecated) +- commit 6ad70fc + +------------------------------------------------------------------- +Sat Jun 6 23:02:13 CEST 2015 - [email protected] + +- config: armv7hl: Disable DECNET + DECNET is not enabled on any other arch either + and we don't need it +- commit ec172d8 + +------------------------------------------------------------------- +Sat Jun 6 23:00:43 CEST 2015 - [email protected] + +- armv6hl: config: Reenable for 4.1 + Generic options follow x86_64 ones. +- commit 1d5f3b2 + +------------------------------------------------------------------- +Tue Jun 2 13:40:10 CEST 2015 - [email protected] + +- Fix patch headers of just updated Xen patches. +- commit 78a3079 + +------------------------------------------------------------------- +Tue Jun 2 12:42:50 CEST 2015 - [email protected] + +- Update Xen patches to 4.1-rc6. +- config.conf: Re-enabled Xen and PV configs. +- Update config files. +- commit 0447183 + +------------------------------------------------------------------- +Mon Jun 1 17:45:22 CEST 2015 - [email protected] + +- config: restore FRAME_POINTER configs to pre-4.1-rc1 values + The disabling of the stack unwind patches due to required merging + ended up enabling FRAME_POINTER on some configs. Now that stack + unwinding is re-enabled, we can disable it again. +- commit e3d8f0a + +------------------------------------------------------------------- +Mon Jun 1 16:59:19 CEST 2015 - [email protected] + +- config: revert options initially selected by EXT4_ENCRYPTION + EXT4_ENCRYPTION was initially a bool, which caused anything + selected by it to be selected as =y even if EXT4 was =m. + We can restore the following options back to being modular: +- CRYPTO_CTS +- CRYPTO_ECB +- CRYPTO_GF128MUL +- CRYPTO_XTS + Other crypto-related options enabled in the v4.1-rc1 update are + a result of INTEGRITY=y and can't be returned to modular options + without also disabling INTEGRITY. +- commit 1c78a8e + +------------------------------------------------------------------- +Mon Jun 1 16:21:11 CEST 2015 - [email protected] + +- Update to 4.1-rc6. +- commit 9abfb15 + +------------------------------------------------------------------- +Fri May 29 17:50:29 CEST 2015 - [email protected] + +- Update to 4.1-rc5. +- commit 5c5c1d1 + +------------------------------------------------------------------- @@ -43,0 +220,6 @@ +Thu May 28 18:51:09 CEST 2015 - [email protected] + +- arm64-0004-net-xgbe-Add-A0-silicon-support: adjust for gettime64/settime64 +- commit 8f2a4d1 + +------------------------------------------------------------------- @@ -49,0 +232,15 @@ +Thu May 28 12:49:08 CEST 2015 - [email protected] + +- Refresh patches.arch/x86_64-unwind-annotations. +- Refresh + patches.suse/revert-x86-remove-warning-and-warning_symbol-from-struct-stacktrace_ops. +- Refresh patches.suse/stack-unwind. +- Delete + patches.arch/stack-unwind-cfi_ignore-takes-more-arguments, ++++ 149 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-desktop.changes: same change kernel-docs.changes: same change kernel-ec2.changes: same change kernel-lpae.changes: same change kernel-obs-build.changes: same change kernel-obs-qa-xen.changes: same change kernel-obs-qa.changes: same change kernel-pae.changes: same change kernel-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.0.tar.xz New: ---- linux-4.1.tar.xz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ kernel-debug.spec ++++++ --- /var/tmp/diff_new_pack.cIwARF/_old 2015-07-14 17:21:11.000000000 +0200 +++ /var/tmp/diff_new_pack.cIwARF/_new 2015-07-14 17:21:11.000000000 +0200 @@ -19,8 +19,8 @@ # This makes the OBS store the project cert as %_sourcedir/_projectcert.crt # needssslcertforbuild -%define srcversion 4.0 -%define patchversion 4.0.5 +%define srcversion 4.1 +%define patchversion 4.1.1 %define variant %{nil} %define vanilla_only 0 @@ -59,9 +59,9 @@ Summary: A Debug Version of the Kernel License: GPL-2.0 Group: System/Kernel -Version: 4.0.5 +Version: 4.1.1 %if 0%{?is_kotd} -Release: <RELEASE>.g56152db +Release: <RELEASE>.gcac28b3 %else Release: 0 %endif kernel-default.spec: same change kernel-desktop.spec: same change ++++++ kernel-docs.spec ++++++ --- /var/tmp/diff_new_pack.cIwARF/_old 2015-07-14 17:21:11.000000000 +0200 +++ /var/tmp/diff_new_pack.cIwARF/_new 2015-07-14 17:21:11.000000000 +0200 @@ -16,7 +16,7 @@ # -%define patchversion 4.0.5 +%define patchversion 4.1.1 %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.0.5 +Version: 4.1.1 %if 0%{?is_kotd} -Release: <RELEASE>.g56152db +Release: <RELEASE>.gcac28b3 %else Release: 0 %endif ++++++ kernel-ec2.spec ++++++ --- /var/tmp/diff_new_pack.cIwARF/_old 2015-07-14 17:21:11.000000000 +0200 +++ /var/tmp/diff_new_pack.cIwARF/_new 2015-07-14 17:21:11.000000000 +0200 @@ -19,8 +19,8 @@ # This makes the OBS store the project cert as %_sourcedir/_projectcert.crt # needssslcertforbuild -%define srcversion 4.0 -%define patchversion 4.0.5 +%define srcversion 4.1 +%define patchversion 4.1.1 %define variant %{nil} %define vanilla_only 0 @@ -59,9 +59,9 @@ Summary: The Amazon EC2 Xen Kernel License: GPL-2.0 Group: System/Kernel -Version: 4.0.5 +Version: 4.1.1 %if 0%{?is_kotd} -Release: <RELEASE>.g56152db +Release: <RELEASE>.gcac28b3 %else Release: 0 %endif kernel-lpae.spec: same change ++++++ kernel-obs-build.spec ++++++ --- /var/tmp/diff_new_pack.cIwARF/_old 2015-07-14 17:21:11.000000000 +0200 +++ /var/tmp/diff_new_pack.cIwARF/_new 2015-07-14 17:21:11.000000000 +0200 @@ -19,7 +19,7 @@ #!BuildIgnore: post-build-checks -%define patchversion 4.0.5 +%define patchversion 4.1.1 %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.0.5 +Version: 4.1.1 %if 0%{?is_kotd} -Release: <RELEASE>.g56152db +Release: <RELEASE>.gcac28b3 %else Release: 0 %endif ++++++ kernel-obs-qa-xen.spec ++++++ --- /var/tmp/diff_new_pack.cIwARF/_old 2015-07-14 17:21:11.000000000 +0200 +++ /var/tmp/diff_new_pack.cIwARF/_new 2015-07-14 17:21:11.000000000 +0200 @@ -17,7 +17,7 @@ # needsrootforbuild -%define patchversion 4.0.5 +%define patchversion 4.1.1 %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.0.5 +Version: 4.1.1 %if 0%{?is_kotd} -Release: <RELEASE>.g56152db +Release: <RELEASE>.gcac28b3 %else Release: 0 %endif kernel-obs-qa.spec: same change ++++++ kernel-pae.spec ++++++ --- /var/tmp/diff_new_pack.cIwARF/_old 2015-07-14 17:21:11.000000000 +0200 +++ /var/tmp/diff_new_pack.cIwARF/_new 2015-07-14 17:21:11.000000000 +0200 @@ -19,8 +19,8 @@ # This makes the OBS store the project cert as %_sourcedir/_projectcert.crt # needssslcertforbuild -%define srcversion 4.0 -%define patchversion 4.0.5 +%define srcversion 4.1 +%define patchversion 4.1.1 %define variant %{nil} %define vanilla_only 0 @@ -59,9 +59,9 @@ Summary: Kernel with PAE Support License: GPL-2.0 Group: System/Kernel -Version: 4.0.5 +Version: 4.1.1 %if 0%{?is_kotd} -Release: <RELEASE>.g56152db +Release: <RELEASE>.gcac28b3 %else Release: 0 %endif kernel-pv.spec: same change ++++++ kernel-source.spec ++++++ --- /var/tmp/diff_new_pack.cIwARF/_old 2015-07-14 17:21:11.000000000 +0200 +++ /var/tmp/diff_new_pack.cIwARF/_new 2015-07-14 17:21:11.000000000 +0200 @@ -17,8 +17,8 @@ # icecream 0 -%define srcversion 4.0 -%define patchversion 4.0.5 +%define srcversion 4.1 +%define patchversion 4.1.1 %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.0.5 +Version: 4.1.1 %if 0%{?is_kotd} -Release: <RELEASE>.g56152db +Release: <RELEASE>.gcac28b3 %else Release: 0 %endif ++++++ kernel-syms.spec ++++++ --- /var/tmp/diff_new_pack.cIwARF/_old 2015-07-14 17:21:11.000000000 +0200 +++ /var/tmp/diff_new_pack.cIwARF/_new 2015-07-14 17:21:11.000000000 +0200 @@ -24,10 +24,10 @@ Summary: Kernel Symbol Versions (modversions) License: GPL-2.0 Group: Development/Sources -Version: 4.0.5 +Version: 4.1.1 %if %using_buildservice %if 0%{?is_kotd} -Release: <RELEASE>.g56152db +Release: <RELEASE>.gcac28b3 %else Release: 0 %endif ++++++ kernel-vanilla.spec ++++++ --- /var/tmp/diff_new_pack.cIwARF/_old 2015-07-14 17:21:11.000000000 +0200 +++ /var/tmp/diff_new_pack.cIwARF/_new 2015-07-14 17:21:11.000000000 +0200 @@ -19,8 +19,8 @@ # This makes the OBS store the project cert as %_sourcedir/_projectcert.crt # needssslcertforbuild -%define srcversion 4.0 -%define patchversion 4.0.5 +%define srcversion 4.1 +%define patchversion 4.1.1 %define variant %{nil} %define vanilla_only 0 @@ -59,9 +59,9 @@ Summary: The Standard Kernel - without any SUSE patches License: GPL-2.0 Group: System/Kernel -Version: 4.0.5 +Version: 4.1.1 %if 0%{?is_kotd} -Release: <RELEASE>.g56152db +Release: <RELEASE>.gcac28b3 %else Release: 0 %endif kernel-xen.spec: same change ++++++ config.sh ++++++ --- /var/tmp/diff_new_pack.cIwARF/_old 2015-07-14 17:21:11.000000000 +0200 +++ /var/tmp/diff_new_pack.cIwARF/_new 2015-07-14 17:21:11.000000000 +0200 @@ -1,5 +1,5 @@ # The version of the main tarball to use -SRCVERSION=4.0 +SRCVERSION=4.1 # variant of the kernel-source package, either empty or "-rt" VARIANT= # buildservice projects to build the kernel against ++++++ config.tar.bz2 ++++++ ++++ 25082 lines of diff (skipped) ++++++ linux-4.0.tar.xz -> linux-4.1.tar.xz ++++++ /work/SRC/openSUSE:Factory/kernel-source/linux-4.0.tar.xz /work/SRC/openSUSE:Factory/.kernel-source.new/linux-4.1.tar.xz differ: char 26, line 1 ++++++ patches.arch.tar.bz2 ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.arch/arm-refresh-mach-types.diff new/patches.arch/arm-refresh-mach-types.diff --- old/patches.arch/arm-refresh-mach-types.diff 2015-04-10 16:47:20.000000000 +0200 +++ new/patches.arch/arm-refresh-mach-types.diff 2015-07-08 16:23:40.000000000 +0200 @@ -11,7 +11,7 @@ index a10297d..2d5541d 100644 --- a/arch/arm/tools/mach-types +++ b/arch/arm/tools/mach-types -@@ -12,552 +12,4044 @@ +@@ -12,551 +12,4043 @@ # # http://www.arm.linux.org.uk/developer/machines/?action=new # @@ -3180,7 +3180,6 @@ +punica MACH_PUNICA PUNICA 3208 trimslice MACH_TRIMSLICE TRIMSLICE 3209 +mx27_wmultra MACH_MX27_WMULTRA MX27_WMULTRA 3210 - mackerel MACH_MACKEREL MACKEREL 3211 +fa9x27 MACH_FA9X27 FA9X27 3213 +ns2816tb MACH_NS2816TB NS2816TB 3214 +ns2816_ntpad MACH_NS2816_NTPAD NS2816_NTPAD 3215 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.arch/arm64-0003-KVM-ARM-Add-arm-gic-400-compatible-support.patch new/patches.arch/arm64-0003-KVM-ARM-Add-arm-gic-400-compatible-support.patch --- old/patches.arch/arm64-0003-KVM-ARM-Add-arm-gic-400-compatible-support.patch 2015-04-10 16:47:20.000000000 +0200 +++ new/patches.arch/arm64-0003-KVM-ARM-Add-arm-gic-400-compatible-support.patch 1970-01-01 01:00:00.000000000 +0100 @@ -1,32 +0,0 @@ -From e439eba103b8d9bd079d4f8f63fc724cdaebca50 Mon Sep 17 00:00:00 2001 -From: Andreas Schwab <[email protected]> -Date: Thu, 11 Sep 2014 12:02:29 +0200 -Subject: [PATCH 03/10] KVM: ARM: Add "arm,gic-400" compatible support -Patch-mainline: No -References: bnc#902632 - -Some device trees specify their GIC as compatible "arm,gic-400". The code -supports those just fine, we were only missing the compatible to make it -work. - -Signed-off-by: Alexander Graf <[email protected]> - ---- - virt/kvm/arm/vgic.c | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/virt/kvm/arm/vgic.c b/virt/kvm/arm/vgic.c -index 3aaca49..7613dea 100644 ---- a/virt/kvm/arm/vgic.c -+++ b/virt/kvm/arm/vgic.c -@@ -2428,6 +2428,7 @@ static struct notifier_block vgic_cpu_nb = { - - static const struct of_device_id vgic_ids[] = { - { .compatible = "arm,cortex-a15-gic", .data = vgic_v2_probe, }, -+ { .compatible = "arm,gic-400", .data = vgic_v2_probe, }, - { .compatible = "arm,gic-v3", .data = vgic_v3_probe, }, - {}, - }; --- -2.1.0 - 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-04-10 16:47:20.000000000 +0200 +++ new/patches.arch/arm64-0004-net-xgbe-Add-A0-silicon-support.patch 2015-07-08 16:23:40.000000000 +0200 @@ -12,19 +12,33 @@ Signed-off-by: Alexander Graf <[email protected]> Signed-off-by: Dirk Mueller <[email protected]> -Index: linux-4.0-rc6-master/drivers/net/ethernet/amd/Makefile -=================================================================== ---- linux-4.0-rc6-master.orig/drivers/net/ethernet/amd/Makefile -+++ linux-4.0-rc6-master/drivers/net/ethernet/amd/Makefile +--- + drivers/net/ethernet/amd/Makefile | 1 + drivers/net/ethernet/amd/xgbe-a0/Makefile | 8 + drivers/net/ethernet/amd/xgbe-a0/xgbe-common.h | 1142 +++++++++ + drivers/net/ethernet/amd/xgbe-a0/xgbe-dcb.c | 269 ++ + drivers/net/ethernet/amd/xgbe-a0/xgbe-debugfs.c | 373 +++ + drivers/net/ethernet/amd/xgbe-a0/xgbe-desc.c | 636 +++++ + drivers/net/ethernet/amd/xgbe-a0/xgbe-dev.c | 2930 ++++++++++++++++++++++++ + drivers/net/ethernet/amd/xgbe-a0/xgbe-drv.c | 2218 ++++++++++++++++++ + drivers/net/ethernet/amd/xgbe-a0/xgbe-ethtool.c | 616 +++++ + drivers/net/ethernet/amd/xgbe-a0/xgbe-main.c | 643 +++++ + drivers/net/ethernet/amd/xgbe-a0/xgbe-mdio.c | 312 ++ + drivers/net/ethernet/amd/xgbe-a0/xgbe-ptp.c | 279 ++ + drivers/net/ethernet/amd/xgbe-a0/xgbe.h | 868 +++++++ + drivers/net/phy/Makefile | 1 + drivers/net/phy/amd-xgbe-phy-a0.c | 1800 ++++++++++++++ + 15 files changed, 12096 insertions(+) + +--- a/drivers/net/ethernet/amd/Makefile ++++ b/drivers/net/ethernet/amd/Makefile @@ -18,3 +18,4 @@ obj-$(CONFIG_PCNET32) += pcnet32.o obj-$(CONFIG_SUN3LANCE) += sun3lance.o obj-$(CONFIG_SUNLANCE) += sunlance.o obj-$(CONFIG_AMD_XGBE) += xgbe/ +obj-$(CONFIG_AMD_XGBE) += xgbe-a0/ -Index: linux-4.0-rc6-master/drivers/net/ethernet/amd/xgbe-a0/Makefile -=================================================================== --- /dev/null -+++ linux-4.0-rc6-master/drivers/net/ethernet/amd/xgbe-a0/Makefile ++++ b/drivers/net/ethernet/amd/xgbe-a0/Makefile @@ -0,0 +1,8 @@ +obj-$(CONFIG_AMD_XGBE) += amd-xgbe-a0.o + @@ -34,10 +48,8 @@ + +amd-xgbe-a0-$(CONFIG_AMD_XGBE_DCB) += xgbe-dcb.o +amd-xgbe-a0-$(CONFIG_DEBUG_FS) += xgbe-debugfs.o -Index: linux-4.0-rc6-master/drivers/net/ethernet/amd/xgbe-a0/xgbe-common.h -=================================================================== --- /dev/null -+++ linux-4.0-rc6-master/drivers/net/ethernet/amd/xgbe-a0/xgbe-common.h ++++ b/drivers/net/ethernet/amd/xgbe-a0/xgbe-common.h @@ -0,0 +1,1142 @@ +/* + * AMD 10Gb Ethernet driver @@ -1181,10 +1193,8 @@ +} while (0) + +#endif -Index: linux-4.0-rc6-master/drivers/net/ethernet/amd/xgbe-a0/xgbe-dcb.c -=================================================================== --- /dev/null -+++ linux-4.0-rc6-master/drivers/net/ethernet/amd/xgbe-a0/xgbe-dcb.c ++++ b/drivers/net/ethernet/amd/xgbe-a0/xgbe-dcb.c @@ -0,0 +1,269 @@ +/* + * AMD 10Gb Ethernet driver @@ -1455,10 +1465,8 @@ +{ + return &xgbe_dcbnl_ops; +} -Index: linux-4.0-rc6-master/drivers/net/ethernet/amd/xgbe-a0/xgbe-debugfs.c -=================================================================== --- /dev/null -+++ linux-4.0-rc6-master/drivers/net/ethernet/amd/xgbe-a0/xgbe-debugfs.c ++++ b/drivers/net/ethernet/amd/xgbe-a0/xgbe-debugfs.c @@ -0,0 +1,373 @@ +/* + * AMD 10Gb Ethernet driver @@ -1833,10 +1841,8 @@ + debugfs_remove_recursive(pdata->xgbe_debugfs); + pdata->xgbe_debugfs = NULL; +} -Index: linux-4.0-rc6-master/drivers/net/ethernet/amd/xgbe-a0/xgbe-desc.c -=================================================================== --- /dev/null -+++ linux-4.0-rc6-master/drivers/net/ethernet/amd/xgbe-a0/xgbe-desc.c ++++ b/drivers/net/ethernet/amd/xgbe-a0/xgbe-desc.c @@ -0,0 +1,636 @@ +/* + * AMD 10Gb Ethernet driver @@ -2474,10 +2480,8 @@ + + DBGPR("<--xgbe_a0_init_function_ptrs_desc\n"); +} -Index: linux-4.0-rc6-master/drivers/net/ethernet/amd/xgbe-a0/xgbe-dev.c -=================================================================== --- /dev/null -+++ linux-4.0-rc6-master/drivers/net/ethernet/amd/xgbe-a0/xgbe-dev.c ++++ b/drivers/net/ethernet/amd/xgbe-a0/xgbe-dev.c @@ -0,0 +1,2930 @@ +/* + * AMD 10Gb Ethernet driver @@ -5409,10 +5413,8 @@ + + DBGPR("<--xgbe_a0_init_function_ptrs\n"); +} -Index: linux-4.0-rc6-master/drivers/net/ethernet/amd/xgbe-a0/xgbe-drv.c -=================================================================== --- /dev/null -+++ linux-4.0-rc6-master/drivers/net/ethernet/amd/xgbe-a0/xgbe-drv.c ++++ b/drivers/net/ethernet/amd/xgbe-a0/xgbe-drv.c @@ -0,0 +1,2218 @@ +/* + * AMD 10Gb Ethernet driver @@ -7632,10 +7634,8 @@ + + netdev_alert(netdev, "\n************** SKB dump ****************\n"); +} -Index: linux-4.0-rc6-master/drivers/net/ethernet/amd/xgbe-a0/xgbe-ethtool.c -=================================================================== --- /dev/null -+++ linux-4.0-rc6-master/drivers/net/ethernet/amd/xgbe-a0/xgbe-ethtool.c ++++ b/drivers/net/ethernet/amd/xgbe-a0/xgbe-ethtool.c @@ -0,0 +1,616 @@ +/* + * AMD 10Gb Ethernet driver @@ -8253,10 +8253,8 @@ +{ + return (struct ethtool_ops *)&xgbe_ethtool_ops; +} -Index: linux-4.0-rc6-master/drivers/net/ethernet/amd/xgbe-a0/xgbe-main.c -=================================================================== --- /dev/null -+++ linux-4.0-rc6-master/drivers/net/ethernet/amd/xgbe-a0/xgbe-main.c ++++ b/drivers/net/ethernet/amd/xgbe-a0/xgbe-main.c @@ -0,0 +1,643 @@ +/* + * AMD 10Gb Ethernet driver @@ -8901,10 +8899,8 @@ +}; + +module_platform_driver(xgbe_a0_driver); -Index: linux-4.0-rc6-master/drivers/net/ethernet/amd/xgbe-a0/xgbe-mdio.c -=================================================================== --- /dev/null -+++ linux-4.0-rc6-master/drivers/net/ethernet/amd/xgbe-a0/xgbe-mdio.c ++++ b/drivers/net/ethernet/amd/xgbe-a0/xgbe-mdio.c @@ -0,0 +1,312 @@ +/* + * AMD 10Gb Ethernet driver @@ -9218,11 +9214,9 @@ + + DBGPR("<--xgbe_a0_mdio_unregister\n"); +} -Index: linux-4.0-rc6-master/drivers/net/ethernet/amd/xgbe-a0/xgbe-ptp.c -=================================================================== --- /dev/null -+++ linux-4.0-rc6-master/drivers/net/ethernet/amd/xgbe-a0/xgbe-ptp.c -@@ -0,0 +1,278 @@ ++++ b/drivers/net/ethernet/amd/xgbe-a0/xgbe-ptp.c +@@ -0,0 +1,279 @@ +/* + * AMD 10Gb Ethernet driver + * @@ -9404,7 +9398,7 @@ + return 0; +} + -+static int xgbe_gettime(struct ptp_clock_info *info, struct timespec *ts) ++static int xgbe_gettime(struct ptp_clock_info *info, struct timespec64 *ts) +{ + struct xgbe_prv_data *pdata = container_of(info, + struct xgbe_prv_data, @@ -9418,12 +9412,13 @@ + + spin_unlock_irqrestore(&pdata->tstamp_lock, flags); + -+ *ts = ns_to_timespec(nsec); ++ *ts = ns_to_timespec64(nsec); + + return 0; +} + -+static int xgbe_settime(struct ptp_clock_info *info, const struct timespec *ts) ++static int xgbe_settime(struct ptp_clock_info *info, ++ const struct timespec64 *ts) +{ + struct xgbe_prv_data *pdata = container_of(info, + struct xgbe_prv_data, @@ -9431,7 +9426,7 @@ + unsigned long flags; + u64 nsec; + -+ nsec = timespec_to_ns(ts); ++ nsec = timespec64_to_ns(ts); + + spin_lock_irqsave(&pdata->tstamp_lock, flags); + @@ -9461,8 +9456,8 @@ + info->max_adj = pdata->ptpclk_rate; + info->adjfreq = xgbe_adjfreq; + info->adjtime = xgbe_adjtime; -+ info->gettime = xgbe_gettime; -+ info->settime = xgbe_settime; ++ info->gettime64 = xgbe_gettime; ++ info->settime64 = xgbe_settime; + info->enable = xgbe_enable; + + clock = ptp_clock_register(info, pdata->dev); @@ -9501,10 +9496,8 @@ + if (pdata->ptp_clock) + ptp_clock_unregister(pdata->ptp_clock); +} -Index: linux-4.0-rc6-master/drivers/net/ethernet/amd/xgbe-a0/xgbe.h -=================================================================== --- /dev/null -+++ linux-4.0-rc6-master/drivers/net/ethernet/amd/xgbe-a0/xgbe.h ++++ b/drivers/net/ethernet/amd/xgbe-a0/xgbe.h @@ -0,0 +1,868 @@ +/* + * AMD 10Gb Ethernet driver @@ -10374,20 +10367,16 @@ +#endif + +#endif -Index: linux-4.0-rc6-master/drivers/net/phy/Makefile -=================================================================== ---- linux-4.0-rc6-master.orig/drivers/net/phy/Makefile -+++ linux-4.0-rc6-master/drivers/net/phy/Makefile +--- a/drivers/net/phy/Makefile ++++ b/drivers/net/phy/Makefile @@ -34,4 +34,5 @@ obj-$(CONFIG_MDIO_BUS_MUX_MMIOREG) += md obj-$(CONFIG_MDIO_SUN4I) += mdio-sun4i.o obj-$(CONFIG_MDIO_MOXART) += mdio-moxart.o obj-$(CONFIG_AMD_XGBE_PHY) += amd-xgbe-phy.o +obj-$(CONFIG_AMD_XGBE_PHY) += amd-xgbe-phy-a0.o obj-$(CONFIG_MDIO_BCM_UNIMAC) += mdio-bcm-unimac.o -Index: linux-4.0-rc6-master/drivers/net/phy/amd-xgbe-phy-a0.c -=================================================================== --- /dev/null -+++ linux-4.0-rc6-master/drivers/net/phy/amd-xgbe-phy-a0.c ++++ b/drivers/net/phy/amd-xgbe-phy-a0.c @@ -0,0 +1,1800 @@ +/* + * AMD 10Gb Ethernet PHY driver diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.arch/arm64-0005-arm64-dts-Add-X-Gene-reboot-driver-dts-node.patch new/patches.arch/arm64-0005-arm64-dts-Add-X-Gene-reboot-driver-dts-node.patch --- old/patches.arch/arm64-0005-arm64-dts-Add-X-Gene-reboot-driver-dts-node.patch 2015-04-10 16:47:20.000000000 +0200 +++ new/patches.arch/arm64-0005-arm64-dts-Add-X-Gene-reboot-driver-dts-node.patch 2015-07-08 16:23:40.000000000 +0200 @@ -19,8 +19,8 @@ --- a/arch/arm64/boot/dts/apm/apm-storm.dtsi +++ b/arch/arm64/boot/dts/apm/apm-storm.dtsi @@ -103,6 +103,11 @@ - #size-cells = <2>; ranges; + dma-ranges = <0x0 0x0 0x0 0x0 0x400 0x0>; + scu: system-clk-controller@17000000 { + compatible = "apm,xgene-scu","syscon"; 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-04-10 16:47:20.000000000 +0200 +++ new/patches.arch/arm64-0007-arm64-Do-not-call-enable-PCI-resources-when-specify-.patch 2015-07-08 16:23:40.000000000 +0200 @@ -28,9 +28,9 @@ --- 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 0; + return NULL; } + #endif + +int pcibios_enable_device(struct pci_dev *dev, int mask) +{ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.arch/arm64-0010-KVM-ARM-Hack-to-enable-VGIC-mapping-on-64k-PAGE_SIZE.patch new/patches.arch/arm64-0010-KVM-ARM-Hack-to-enable-VGIC-mapping-on-64k-PAGE_SIZE.patch --- old/patches.arch/arm64-0010-KVM-ARM-Hack-to-enable-VGIC-mapping-on-64k-PAGE_SIZE.patch 2015-04-10 16:47:20.000000000 +0200 +++ new/patches.arch/arm64-0010-KVM-ARM-Hack-to-enable-VGIC-mapping-on-64k-PAGE_SIZE.patch 2015-07-08 16:23:40.000000000 +0200 @@ -106,16 +106,16 @@ --- linux-4.0-rc5-master.orig/virt/kvm/arm/vgic-v2-emul.c +++ linux-4.0-rc5-master/virt/kvm/arm/vgic-v2-emul.c @@ -517,6 +517,13 @@ static int vgic_v2_map_resources(struct - goto out; + goto out_unregister; } -+ if ((kvm->arch.vgic.vgic_cpu_base & ~PAGE_MASK) != ++ if ((dist->vgic_cpu_base & ~PAGE_MASK) != + (params->vcpu_base & ~PAGE_MASK)) { + kvm_err("Need to align vgic identically in guest and host\n"); + ret = -ENXIO; -+ goto out; ++ goto out_unregister; + } + - ret = kvm_phys_addr_ioremap(kvm, kvm->arch.vgic.vgic_cpu_base, + ret = kvm_phys_addr_ioremap(kvm, dist->vgic_cpu_base, params->vcpu_base, KVM_VGIC_V2_CPU_SIZE, true); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.arch/arm64-0011-Enable-CONFIG_COMPAT-also-for-64k-page-size.patch new/patches.arch/arm64-0011-Enable-CONFIG_COMPAT-also-for-64k-page-size.patch --- old/patches.arch/arm64-0011-Enable-CONFIG_COMPAT-also-for-64k-page-size.patch 2015-04-10 16:47:20.000000000 +0200 +++ new/patches.arch/arm64-0011-Enable-CONFIG_COMPAT-also-for-64k-page-size.patch 1970-01-01 01:00:00.000000000 +0100 @@ -1,54 +0,0 @@ -From a3ebb7c0471ed11000f024203ff2695fb2346797 Mon Sep 17 00:00:00 2001 -From: Alexander Graf <[email protected]> -Date: Thu, 4 Dec 2014 16:44:05 +0100 -Subject: [PATCH v2] arm64: Enable CONFIG_COMPAT also for 64k page size -Patch-mainline: No -References: bnc#908468 - -With binutils 2.25 the default alignment for 32bit arm sections changed to -have everything 64k aligned. Armv7 binaries built with this binutils version -run successfully on an arm64 system. - -Since effectively there is now the chance to run armv7 code on arm64 even -with 64k page size, it doesn't make sense to block people from enabling -CONFIG_COMPAT on those configurations. - -Signed-off-by: Alexander Graf <[email protected]> - ---- - -v1 -> v2: - - - add comment in KConfig explaining that segments need to be 64k aligned - - conditionalize the option on EXPERT ---- - arch/arm64/Kconfig | 6 +++++- - 1 file changed, 5 insertions(+), 1 deletion(-) - -diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig -index 9532f8d..7fc0ad6 100644 ---- a/arch/arm64/Kconfig -+++ b/arch/arm64/Kconfig -@@ -409,7 +409,7 @@ source "fs/Kconfig.binfmt" - - config COMPAT - bool "Kernel support for 32-bit EL0" -- depends on !ARM64_64K_PAGES -+ depends on !ARM64_64K_PAGES || EXPERT - select COMPAT_BINFMT_ELF - select HAVE_UID16 - select OLD_SIGSUSPEND3 -@@ -420,6 +420,10 @@ config COMPAT - the user helper functions, VFP support and the ptrace interface are - handled appropriately by the kernel. - -+ If you also enabled CONFIG_ARM64_64K_PAGES, please be aware that you -+ will only be able to execute AArch32 binaries that were compiled with -+ 64k aligned segments. -+ - If you want to execute 32-bit userspace applications, say Y. - - config SYSVIPC_COMPAT --- -1.7.12.4 - diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.arch/arm64-0012-fix-mmap2-compat-syscall.patch new/patches.arch/arm64-0012-fix-mmap2-compat-syscall.patch --- old/patches.arch/arm64-0012-fix-mmap2-compat-syscall.patch 2015-04-10 16:47:20.000000000 +0200 +++ new/patches.arch/arm64-0012-fix-mmap2-compat-syscall.patch 1970-01-01 01:00:00.000000000 +0100 @@ -1,94 +0,0 @@ -From: Andreas Schwab <[email protected]> -Date: Mon, 9 Mar 2015 17:27:36 +0100 -Subject: [PATCH] arm64: fix implementation of mmap2 compat syscall -Patch-mainline: Submitted, http://lists.infradead.org/pipermail/linux-arm-kernel/2015-March/330081.html - -The arm mmap2 syscall takes the offset in units of 4K, thus with 64K pages -the offset needs to be scaled to units of pages. - -Tested-by: Alexander Graf <[email protected]> -Signed-off-by: Andreas Schwab <[email protected]> -Signed-off-by: Dirk Mueller <[email protected]> - ---- - arch/arm64/include/asm/unistd32.h | 2 +- - arch/arm64/kernel/entry32.S | 18 ++++++++++++++++++ - arch/arm64/kernel/sys32.c | 6 ++++++ - 3 files changed, 25 insertions(+), 1 deletion(-) - -Index: linux-4.0-rc3-master/arch/arm64/include/asm/unistd32.h -=================================================================== ---- linux-4.0-rc3-master.orig/arch/arm64/include/asm/unistd32.h -+++ linux-4.0-rc3-master/arch/arm64/include/asm/unistd32.h -@@ -406,7 +406,7 @@ __SYSCALL(__NR_vfork, sys_vfork) - #define __NR_ugetrlimit 191 /* SuS compliant getrlimit */ - __SYSCALL(__NR_ugetrlimit, compat_sys_getrlimit) /* SuS compliant getrlimit */ - #define __NR_mmap2 192 --__SYSCALL(__NR_mmap2, sys_mmap_pgoff) -+__SYSCALL(__NR_mmap2, compat_sys_mmap2_wrapper) - #define __NR_truncate64 193 - __SYSCALL(__NR_truncate64, compat_sys_truncate64_wrapper) - #define __NR_ftruncate64 194 -Index: linux-4.0-rc3-master/arch/arm64/kernel/entry32.S -=================================================================== ---- linux-4.0-rc3-master.orig/arch/arm64/kernel/entry32.S -+++ linux-4.0-rc3-master/arch/arm64/kernel/entry32.S -@@ -19,9 +19,12 @@ - */ - - #include <linux/linkage.h> -+#include <linux/const.h> - - #include <asm/assembler.h> - #include <asm/asm-offsets.h> -+#include <asm/errno.h> -+#include <asm/page.h> - - /* - * System call wrappers for the AArch32 compatibility layer. -@@ -54,6 +57,21 @@ ENTRY(compat_sys_fstatfs64_wrapper) - ENDPROC(compat_sys_fstatfs64_wrapper) - - /* -+ * Note: off_4k (w5) is always units of 4K. If we can't do the requested -+ * offset, we return EINVAL. -+ */ -+#if PAGE_SHIFT > 12 -+ENTRY(compat_sys_mmap2_wrapper) -+ tst w5, #~PAGE_MASK >> 12 -+ b.ne 1f -+ lsr w5, w5, #PAGE_SHIFT - 12 -+ b sys_mmap_pgoff -+1: mov x0, #-EINVAL -+ ret lr -+ENDPROC(compat_sys_mmap2_wrapper) -+#endif -+ -+/* - * Wrappers for AArch32 syscalls that either take 64-bit parameters - * in registers or that take 32-bit parameters which require sign - * extension. -Index: linux-4.0-rc3-master/arch/arm64/kernel/sys32.c -=================================================================== ---- linux-4.0-rc3-master.orig/arch/arm64/kernel/sys32.c -+++ linux-4.0-rc3-master/arch/arm64/kernel/sys32.c -@@ -24,6 +24,7 @@ - - #include <linux/compiler.h> - #include <linux/syscalls.h> -+#include <asm/page.h> - - asmlinkage long compat_sys_sigreturn_wrapper(void); - asmlinkage long compat_sys_rt_sigreturn_wrapper(void); -@@ -37,6 +38,11 @@ asmlinkage long compat_sys_readahead_wra - asmlinkage long compat_sys_fadvise64_64_wrapper(void); - asmlinkage long compat_sys_sync_file_range2_wrapper(void); - asmlinkage long compat_sys_fallocate_wrapper(void); -+#if PAGE_SHIFT > 12 -+asmlinkage long compat_sys_mmap2_wrapper(void); -+#else -+#define compat_sys_mmap2_wrapper sys_mmap_pgoff -+#endif - - #undef __SYSCALL - #define __SYSCALL(nr, sym) [nr] = sym, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.arch/arm64-Don-t-report-clear-pmds-and-puds-as-huge.patch new/patches.arch/arm64-Don-t-report-clear-pmds-and-puds-as-huge.patch --- old/patches.arch/arm64-Don-t-report-clear-pmds-and-puds-as-huge.patch 1970-01-01 01:00:00.000000000 +0100 +++ new/patches.arch/arm64-Don-t-report-clear-pmds-and-puds-as-huge.patch 2015-07-08 16:23:40.000000000 +0200 @@ -0,0 +1,52 @@ +From fd28f5d439fca77348c129d5b73043a56f8a0296 Mon Sep 17 00:00:00 2001 +From: Christoffer Dall <[email protected]> +Date: Wed, 1 Jul 2015 14:08:31 +0200 +Patch-Mainline: v4.2-rc1 +Git-Commit: fd28f5d439fca77348c129d5b73043a56f8a0296 +Subject: [PATCH] arm64: Don't report clear pmds and puds as huge + +The current pmd_huge() and pud_huge() functions simply check if the table +bit is not set and reports the entries as huge in that case. This is +counter-intuitive as a clear pmd/pud cannot also be a huge pmd/pud, and +it is inconsistent with at least arm and x86. + +To prevent others from making the same mistake as me in looking at code +that calls these functions and to fix an issue with KVM on arm64 that +causes memory corruption due to incorrect page reference counting +resulting from this mistake, let's change the behavior. + +Signed-off-by: Christoffer Dall <[email protected]> +Reviewed-by: Steve Capper <[email protected]> +Acked-by: Marc Zyngier <[email protected]> +Fixes: 084bd29810a5 ("ARM64: mm: HugeTLB support.") +Cc: <[email protected]> # 3.11+ +Signed-off-by: Catalin Marinas <[email protected]> +Signed-off-by: Dirk Mueller <[email protected]> + +--- + arch/arm64/mm/hugetlbpage.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/arch/arm64/mm/hugetlbpage.c b/arch/arm64/mm/hugetlbpage.c +index 2de9d2e..0eeb4f09 100644 +--- a/arch/arm64/mm/hugetlbpage.c ++++ b/arch/arm64/mm/hugetlbpage.c +@@ -40,13 +40,13 @@ int huge_pmd_unshare(struct mm_struct *mm, unsigned long *addr, pte_t *ptep) + + int pmd_huge(pmd_t pmd) + { +- return !(pmd_val(pmd) & PMD_TABLE_BIT); ++ return pmd_val(pmd) && !(pmd_val(pmd) & PMD_TABLE_BIT); + } + + int pud_huge(pud_t pud) + { + #ifndef __PAGETABLE_PMD_FOLDED +- return !(pud_val(pud) & PUD_TABLE_BIT); ++ return pud_val(pud) && !(pud_val(pud) & PUD_TABLE_BIT); + #else + return 0; + #endif +-- +2.3.7 + diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.arch/arm64-pci-0001-of-pci-Add-of_pci_dma_configure-to-update-DMA-config.patch new/patches.arch/arm64-pci-0001-of-pci-Add-of_pci_dma_configure-to-update-DMA-config.patch --- old/patches.arch/arm64-pci-0001-of-pci-Add-of_pci_dma_configure-to-update-DMA-config.patch 2015-04-10 16:47:20.000000000 +0200 +++ new/patches.arch/arm64-pci-0001-of-pci-Add-of_pci_dma_configure-to-update-DMA-config.patch 1970-01-01 01:00:00.000000000 +0100 @@ -1,93 +0,0 @@ -From c5bb945d637da453e992684ac4e53b2b0bc5b14a Mon Sep 17 00:00:00 2001 -From: Murali Karicheri <[email protected]> -Date: Tue, 3 Mar 2015 12:52:12 -0500 -Subject: [PATCH 1/6] of/pci: Add of_pci_dma_configure() to update DMA - configuration -Git-commit: c49b8fc26e115a37eca6f7bcef1847eb80f2a4fd -Patch-mainline: Queued for 4.1 - -Add of_pci_dma_configure() to allow updating the DMA configuration of the -PCI device using the configuration from DT of the parent of the root bridge -device. Use the newly added APIs pci_get/put_host_bridge_device() for -implementing this. - -[bhelgaas: fold in fix for host bridges with no parent OF device] -Tested-by: Suravee Suthikulpanit <[email protected]> (AMD Seattle) -Signed-off-by: Murali Karicheri <[email protected]> -Signed-off-by: Bjorn Helgaas <[email protected]> -Reviewed-by: Catalin Marinas <[email protected]> -Acked-by: Rob Herring <[email protected]> -Acked-by: Will Deacon <[email protected]> -CC: Joerg Roedel <[email protected]> -CC: Grant Likely <[email protected]> -CC: Russell King <[email protected]> -CC: Arnd Bergmann <[email protected]> -Signed-off-by: Alexander Graf <[email protected]> ---- - drivers/of/of_pci.c | 21 +++++++++++++++++++++ - include/linux/of_pci.h | 3 +++ - 2 files changed, 24 insertions(+) - -diff --git a/drivers/of/of_pci.c b/drivers/of/of_pci.c -index 62426d8..5751dc5 100644 ---- a/drivers/of/of_pci.c -+++ b/drivers/of/of_pci.c -@@ -2,6 +2,7 @@ - #include <linux/export.h> - #include <linux/of.h> - #include <linux/of_address.h> -+#include <linux/of_device.h> - #include <linux/of_pci.h> - #include <linux/slab.h> - -@@ -116,6 +117,26 @@ int of_get_pci_domain_nr(struct device_node *node) - } - EXPORT_SYMBOL_GPL(of_get_pci_domain_nr); - -+/** -+ * of_pci_dma_configure - Setup DMA configuration -+ * @dev: ptr to pci_dev struct of the PCI device -+ * -+ * Function to update PCI devices's DMA configuration using the same -+ * info from the OF node of host bridge's parent (if any). -+ */ -+void of_pci_dma_configure(struct pci_dev *pci_dev) -+{ -+ struct device *dev = &pci_dev->dev; -+ struct device *bridge = pci_get_host_bridge_device(pci_dev); -+ -+ if (!bridge->parent) -+ return; -+ -+ of_dma_configure(dev, bridge->parent->of_node); -+ pci_put_host_bridge_device(bridge); -+} -+EXPORT_SYMBOL_GPL(of_pci_dma_configure); -+ - #if defined(CONFIG_OF_ADDRESS) - /** - * of_pci_get_host_bridge_resources - Parse PCI host bridge resources from DT -diff --git a/include/linux/of_pci.h b/include/linux/of_pci.h -index ce0e5ab..29fd3fe 100644 ---- a/include/linux/of_pci.h -+++ b/include/linux/of_pci.h -@@ -16,6 +16,7 @@ int of_pci_get_devfn(struct device_node *np); - int of_irq_parse_and_map_pci(const struct pci_dev *dev, u8 slot, u8 pin); - int of_pci_parse_bus_range(struct device_node *node, struct resource *res); - int of_get_pci_domain_nr(struct device_node *node); -+void of_pci_dma_configure(struct pci_dev *pci_dev); - #else - static inline int of_irq_parse_pci(const struct pci_dev *pdev, struct of_phandle_args *out_irq) - { -@@ -50,6 +51,8 @@ of_get_pci_domain_nr(struct device_node *node) - { - return -1; - } -+ -+static inline void of_pci_dma_configure(struct pci_dev *pci_dev) { } - #endif - - #if defined(CONFIG_OF_ADDRESS) --- -2.3.1 - diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.arch/arm64-pci-0002-PCI-Update-DMA-configuration-from-DT.patch new/patches.arch/arm64-pci-0002-PCI-Update-DMA-configuration-from-DT.patch --- old/patches.arch/arm64-pci-0002-PCI-Update-DMA-configuration-from-DT.patch 2015-04-10 16:47:20.000000000 +0200 +++ new/patches.arch/arm64-pci-0002-PCI-Update-DMA-configuration-from-DT.patch 1970-01-01 01:00:00.000000000 +0100 @@ -1,56 +0,0 @@ -From ee0831fdc6daec4a716f0b867b1359513e0bd825 Mon Sep 17 00:00:00 2001 -From: Murali Karicheri <[email protected]> -Date: Tue, 3 Mar 2015 12:52:13 -0500 -Subject: [PATCH 2/6] PCI: Update DMA configuration from DT -Git-commit: de335bb49269037d1e8906ba59f8bacba732bec6 -Patch-mainline: Queued for 4.1 - -If there is a DT node available for the root bridge's parent device, use -the DMA configuration from that device node. For example, Keystone PCI -devices would require dma_pfn_offset to be set correctly in the device -structure of the PCI device in order to have the correct DMA mask. The DT -node will have dma-ranges defined for this. Also support using the DT -property dma-coherent to allow coherent DMA operation by the PCI device. - -Use the new helper function of_pci_dma_configure() to update the device DMA -configuration. This fixes DMA on systems where DMA addresses are a -constant offset from CPU physical addresses. - -Tested-by: Suravee Suthikulpanit <[email protected]> (AMD Seattle) -Signed-off-by: Murali Karicheri <[email protected]> -Signed-off-by: Bjorn Helgaas <[email protected]> -Reviewed-by: Catalin Marinas <[email protected]> -Acked-by: Will Deacon <[email protected]> -CC: Joerg Roedel <[email protected]> -CC: Grant Likely <[email protected]> -CC: Rob Herring <[email protected]> -CC: Russell King <[email protected]> -CC: Arnd Bergmann <[email protected]> -Signed-off-by: Alexander Graf <[email protected]> ---- - drivers/pci/probe.c | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/drivers/pci/probe.c b/drivers/pci/probe.c -index 516b744..42d0623 100644 ---- a/drivers/pci/probe.c -+++ b/drivers/pci/probe.c -@@ -6,6 +6,7 @@ - #include <linux/delay.h> - #include <linux/init.h> - #include <linux/pci.h> -+#include <linux/of_pci.h> - #include <linux/pci_hotplug.h> - #include <linux/slab.h> - #include <linux/module.h> -@@ -1552,6 +1553,7 @@ void pci_device_add(struct pci_dev *dev, struct pci_bus *bus) - dev->dev.dma_mask = &dev->dma_mask; - dev->dev.dma_parms = &dev->dma_parms; - dev->dev.coherent_dma_mask = 0xffffffffull; -+ of_pci_dma_configure(dev); - - pci_set_dma_max_seg_size(dev, 65536); - pci_set_dma_seg_boundary(dev, 0xffffffff); --- -2.3.1 - diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.arch/arm64-pci-0003-PCI-Add-helper-functions-pci_get-put-_host_bridge_de.patch new/patches.arch/arm64-pci-0003-PCI-Add-helper-functions-pci_get-put-_host_bridge_de.patch --- old/patches.arch/arm64-pci-0003-PCI-Add-helper-functions-pci_get-put-_host_bridge_de.patch 2015-04-10 16:47:20.000000000 +0200 +++ new/patches.arch/arm64-pci-0003-PCI-Add-helper-functions-pci_get-put-_host_bridge_de.patch 1970-01-01 01:00:00.000000000 +0100 @@ -1,69 +0,0 @@ -From 2c808fd1f01c8ffe572636f379c57428b7b707d3 Mon Sep 17 00:00:00 2001 -From: Murali Karicheri <[email protected]> -Date: Tue, 3 Mar 2015 12:52:11 -0500 -Subject: [PATCH 3/6] PCI: Add helper functions - pci_get[put]_host_bridge_device() -Git-commit: 6675a601d72be408025e675599702e30a99188aa -Patch-mainline: Queued for 4.1 - -Add helper functions to get/put the root bus's host bridge device. - -Tested-by: Suravee Suthikulpanit <[email protected]> (AMD Seattle) -Signed-off-by: Murali Karicheri <[email protected]> -Signed-off-by: Bjorn Helgaas <[email protected]> -Reviewed-by: Catalin Marinas <[email protected]> -Acked-by: Will Deacon <[email protected]> -CC: Joerg Roedel <[email protected]> -CC: Grant Likely <[email protected]> -CC: Rob Herring <[email protected]> -CC: Russell King <[email protected]> -CC: Arnd Bergmann <[email protected]> -(cherry picked from commit 6675a601d72be408025e675599702e30a99188aa) -Signed-off-by: Alexander Graf <[email protected]> ---- - drivers/pci/host-bridge.c | 14 ++++++++++++++ - include/linux/pci.h | 3 +++ - 2 files changed, 17 insertions(+) - -diff --git a/drivers/pci/host-bridge.c b/drivers/pci/host-bridge.c -index 39b2dbe..3e5bbf9 100644 ---- a/drivers/pci/host-bridge.c -+++ b/drivers/pci/host-bridge.c -@@ -23,6 +23,20 @@ static struct pci_host_bridge *find_pci_host_bridge(struct pci_bus *bus) - return to_pci_host_bridge(root_bus->bridge); - } - -+struct device *pci_get_host_bridge_device(struct pci_dev *dev) -+{ -+ struct pci_bus *root_bus = find_pci_root_bus(dev->bus); -+ struct device *bridge = root_bus->bridge; -+ -+ kobject_get(&bridge->kobj); -+ return bridge; -+} -+ -+void pci_put_host_bridge_device(struct device *dev) -+{ -+ kobject_put(&dev->kobj); -+} -+ - void pci_set_host_bridge_release(struct pci_host_bridge *bridge, - void (*release_fn)(struct pci_host_bridge *), - void *release_data) -diff --git a/include/linux/pci.h b/include/linux/pci.h -index 53b681a..4e53485 100644 ---- a/include/linux/pci.h -+++ b/include/linux/pci.h -@@ -512,6 +512,9 @@ static inline struct pci_dev *pci_upstream_bridge(struct pci_dev *dev) - return dev->bus->self; - } - -+struct device *pci_get_host_bridge_device(struct pci_dev *dev); -+void pci_put_host_bridge_device(struct device *dev); -+ - #ifdef CONFIG_PCI_MSI - static inline bool pci_dev_msi_enabled(struct pci_dev *pci_dev) - { --- -2.3.1 - diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.arch/arm64-pci-0004-of-iommu-Add-ptr-to-OF-node-arg-to-of_iommu_configur.patch new/patches.arch/arm64-pci-0004-of-iommu-Add-ptr-to-OF-node-arg-to-of_iommu_configur.patch --- old/patches.arch/arm64-pci-0004-of-iommu-Add-ptr-to-OF-node-arg-to-of_iommu_configur.patch 2015-04-10 16:47:20.000000000 +0200 +++ new/patches.arch/arm64-pci-0004-of-iommu-Add-ptr-to-OF-node-arg-to-of_iommu_configur.patch 1970-01-01 01:00:00.000000000 +0100 @@ -1,108 +0,0 @@ -From 57732e8049e74816f1e77e777c2df973f3f5b47a Mon Sep 17 00:00:00 2001 -From: Murali Karicheri <[email protected]> -Date: Tue, 3 Mar 2015 12:52:08 -0500 -Subject: [PATCH 4/6] of: iommu: Add ptr to OF node arg to of_iommu_configure() -Git-commit: ed748621031c2a205749997421e59fb4dfb1e909 -Patch-mainline: Queued for 4.1 - -of_iommu_configure() is called from of_dma_configure() to setup iommu ops -using DT property. This API is currently used for platform devices for -which DMA configuration (including IOMMU ops) may come from the device's -parent. To extend this functionality for PCI devices, this API needs to -take a parent node ptr as an argument instead of assuming device's parent. -This is needed since for PCI, the DMA configuration may be defined in the -DT node of the root bus bridge's parent device. Currently only dma-range -is used for PCI and IOMMU is not supported. Return error if the device is -PCI. - -Add "parent" parameter (a struct device_node *) to of_iommu_configure(). - -Tested-by: Suravee Suthikulpanit <[email protected]> (AMD Seattle) -Signed-off-by: Murali Karicheri <[email protected]> -Signed-off-by: Bjorn Helgaas <[email protected]> -Reviewed-by: Catalin Marinas <[email protected]> -Acked-by: Rob Herring <[email protected]> -Acked-by: Will Deacon <[email protected]> -CC: Joerg Roedel <[email protected]> -CC: Grant Likely <[email protected]> -CC: Russell King <[email protected]> -CC: Arnd Bergmann <[email protected]> -Signed-off-by: Alexander Graf <[email protected]> ---- - drivers/iommu/of_iommu.c | 10 ++++++++-- - drivers/of/platform.c | 2 +- - include/linux/of_iommu.h | 6 ++++-- - 3 files changed, 13 insertions(+), 5 deletions(-) - -diff --git a/drivers/iommu/of_iommu.c b/drivers/iommu/of_iommu.c -index af1dc6a..43429ab 100644 ---- a/drivers/iommu/of_iommu.c -+++ b/drivers/iommu/of_iommu.c -@@ -133,19 +133,25 @@ struct iommu_ops *of_iommu_get_ops(struct device_node *np) - return ops; - } - --struct iommu_ops *of_iommu_configure(struct device *dev) -+struct iommu_ops *of_iommu_configure(struct device *dev, -+ struct device_node *master_np) - { - struct of_phandle_args iommu_spec; - struct device_node *np; - struct iommu_ops *ops = NULL; - int idx = 0; - -+ if (dev_is_pci(dev)) { -+ dev_err(dev, "IOMMU is currently not supported for PCI\n"); -+ return NULL; -+ } -+ - /* - * We don't currently walk up the tree looking for a parent IOMMU. - * See the `Notes:' section of - * Documentation/devicetree/bindings/iommu/iommu.txt - */ -- while (!of_parse_phandle_with_args(dev->of_node, "iommus", -+ while (!of_parse_phandle_with_args(master_np, "iommus", - "#iommu-cells", idx, - &iommu_spec)) { - np = iommu_spec.np; -diff --git a/drivers/of/platform.c b/drivers/of/platform.c -index b189733..667c6f1 100644 ---- a/drivers/of/platform.c -+++ b/drivers/of/platform.c -@@ -196,7 +196,7 @@ static void of_dma_configure(struct device *dev) - dev_dbg(dev, "device is%sdma coherent\n", - coherent ? " " : " not "); - -- iommu = of_iommu_configure(dev); -+ iommu = of_iommu_configure(dev, dev->of_node); - dev_dbg(dev, "device is%sbehind an iommu\n", - iommu ? " " : " not "); - -diff --git a/include/linux/of_iommu.h b/include/linux/of_iommu.h -index 16c7554..ffbe470 100644 ---- a/include/linux/of_iommu.h -+++ b/include/linux/of_iommu.h -@@ -12,7 +12,8 @@ extern int of_get_dma_window(struct device_node *dn, const char *prefix, - size_t *size); - - extern void of_iommu_init(void); --extern struct iommu_ops *of_iommu_configure(struct device *dev); -+extern struct iommu_ops *of_iommu_configure(struct device *dev, -+ struct device_node *master_np); - - #else - -@@ -24,7 +25,8 @@ static inline int of_get_dma_window(struct device_node *dn, const char *prefix, - } - - static inline void of_iommu_init(void) { } --static inline struct iommu_ops *of_iommu_configure(struct device *dev) -+static inline struct iommu_ops *of_iommu_configure(struct device *dev, -+ struct device_node *master_np) - { - return NULL; - } --- -2.3.1 - diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.arch/arm64-pci-0005-of-Move-of_dma_configure-to-device.c-to-help-re-use.patch new/patches.arch/arm64-pci-0005-of-Move-of_dma_configure-to-device.c-to-help-re-use.patch --- old/patches.arch/arm64-pci-0005-of-Move-of_dma_configure-to-device.c-to-help-re-use.patch 2015-04-10 16:47:20.000000000 +0200 +++ new/patches.arch/arm64-pci-0005-of-Move-of_dma_configure-to-device.c-to-help-re-use.patch 1970-01-01 01:00:00.000000000 +0100 @@ -1,220 +0,0 @@ -From d6f59177ed1f0c712d7056674bc959e02fadd28b Mon Sep 17 00:00:00 2001 -From: Murali Karicheri <[email protected]> -Date: Tue, 3 Mar 2015 12:52:09 -0500 -Subject: [PATCH 5/6] of: Move of_dma_configure() to device.c to help re-use -Git-commit: 1f5c69aa51f9c7c8d2a5c2e4dc339f6c7d5c15cd -Patch-mainline: Queued for 4.1 - -Move of_dma_configure() to device.c so it can be re-used for PCI devices to -obtain DMA configuration from DT. Also add a second argument so that for -PCI, the DT node of root bus host bridge can be used to obtain the DMA -configuration for the slave PCI device. - -Tested-by: Suravee Suthikulpanit <[email protected]> (AMD Seattle) -Signed-off-by: Murali Karicheri <[email protected]> -Signed-off-by: Bjorn Helgaas <[email protected]> -Reviewed-by: Catalin Marinas <[email protected]> -Acked-by: Will Deacon <[email protected]> -Acked-by: Rob Herring <[email protected]> -CC: Joerg Roedel <[email protected]> -CC: Grant Likely <[email protected]> -CC: Russell King <[email protected]> -CC: Arnd Bergmann <[email protected]> -Signed-off-by: Alexander Graf <[email protected]> ---- - drivers/of/device.c | 59 +++++++++++++++++++++++++++++++++++++++++++++++ - drivers/of/platform.c | 58 ++-------------------------------------------- - include/linux/of_device.h | 3 +++ - 3 files changed, 64 insertions(+), 56 deletions(-) - -diff --git a/drivers/of/device.c b/drivers/of/device.c -index 46d6c75c..31a7875 100644 ---- a/drivers/of/device.c -+++ b/drivers/of/device.c -@@ -2,6 +2,9 @@ - #include <linux/kernel.h> - #include <linux/of.h> - #include <linux/of_device.h> -+#include <linux/of_address.h> -+#include <linux/of_iommu.h> -+#include <linux/dma-mapping.h> - #include <linux/init.h> - #include <linux/module.h> - #include <linux/mod_devicetable.h> -@@ -66,6 +69,62 @@ int of_device_add(struct platform_device *ofdev) - return device_add(&ofdev->dev); - } - -+/** -+ * of_dma_configure - Setup DMA configuration -+ * @dev: Device to apply DMA configuration -+ * @np: Pointer to OF node having DMA configuration -+ * -+ * Try to get devices's DMA configuration from DT and update it -+ * accordingly. -+ * -+ * If platform code needs to use its own special DMA configuration, it -+ * can use a platform bus notifier and handle BUS_NOTIFY_ADD_DEVICE events -+ * to fix up DMA configuration. -+ */ -+void of_dma_configure(struct device *dev, struct device_node *np) -+{ -+ u64 dma_addr, paddr, size; -+ int ret; -+ bool coherent; -+ unsigned long offset; -+ struct iommu_ops *iommu; -+ -+ /* -+ * Set default dma-mask to 32 bit. Drivers are expected to setup -+ * the correct supported dma_mask. -+ */ -+ dev->coherent_dma_mask = DMA_BIT_MASK(32); -+ -+ /* -+ * Set it to coherent_dma_mask by default if the architecture -+ * code has not set it. -+ */ -+ if (!dev->dma_mask) -+ dev->dma_mask = &dev->coherent_dma_mask; -+ -+ ret = of_dma_get_range(np, &dma_addr, &paddr, &size); -+ if (ret < 0) { -+ dma_addr = offset = 0; -+ size = dev->coherent_dma_mask; -+ } else { -+ offset = PFN_DOWN(paddr - dma_addr); -+ dev_dbg(dev, "dma_pfn_offset(%#08lx)\n", offset); -+ } -+ -+ dev->dma_pfn_offset = offset; -+ -+ coherent = of_dma_is_coherent(np); -+ dev_dbg(dev, "device is%sdma coherent\n", -+ coherent ? " " : " not "); -+ -+ iommu = of_iommu_configure(dev, np); -+ dev_dbg(dev, "device is%sbehind an iommu\n", -+ iommu ? " " : " not "); -+ -+ arch_setup_dma_ops(dev, dma_addr, size, iommu, coherent); -+} -+EXPORT_SYMBOL_GPL(of_dma_configure); -+ - int of_device_register(struct platform_device *pdev) - { - device_initialize(&pdev->dev); -diff --git a/drivers/of/platform.c b/drivers/of/platform.c -index 667c6f1..a01f57c 100644 ---- a/drivers/of/platform.c -+++ b/drivers/of/platform.c -@@ -19,7 +19,6 @@ - #include <linux/slab.h> - #include <linux/of_address.h> - #include <linux/of_device.h> --#include <linux/of_iommu.h> - #include <linux/of_irq.h> - #include <linux/of_platform.h> - #include <linux/platform_device.h> -@@ -150,59 +149,6 @@ struct platform_device *of_device_alloc(struct device_node *np, - } - EXPORT_SYMBOL(of_device_alloc); - --/** -- * of_dma_configure - Setup DMA configuration -- * @dev: Device to apply DMA configuration -- * -- * Try to get devices's DMA configuration from DT and update it -- * accordingly. -- * -- * In case if platform code need to use own special DMA configuration,it -- * can use Platform bus notifier and handle BUS_NOTIFY_ADD_DEVICE event -- * to fix up DMA configuration. -- */ --static void of_dma_configure(struct device *dev) --{ -- u64 dma_addr, paddr, size; -- int ret; -- bool coherent; -- unsigned long offset; -- struct iommu_ops *iommu; -- -- /* -- * Set default dma-mask to 32 bit. Drivers are expected to setup -- * the correct supported dma_mask. -- */ -- dev->coherent_dma_mask = DMA_BIT_MASK(32); -- -- /* -- * Set it to coherent_dma_mask by default if the architecture -- * code has not set it. -- */ -- if (!dev->dma_mask) -- dev->dma_mask = &dev->coherent_dma_mask; -- -- ret = of_dma_get_range(dev->of_node, &dma_addr, &paddr, &size); -- if (ret < 0) { -- dma_addr = offset = 0; -- size = dev->coherent_dma_mask; -- } else { -- offset = PFN_DOWN(paddr - dma_addr); -- dev_dbg(dev, "dma_pfn_offset(%#08lx)\n", offset); -- } -- dev->dma_pfn_offset = offset; -- -- coherent = of_dma_is_coherent(dev->of_node); -- dev_dbg(dev, "device is%sdma coherent\n", -- coherent ? " " : " not "); -- -- iommu = of_iommu_configure(dev, dev->of_node); -- dev_dbg(dev, "device is%sbehind an iommu\n", -- iommu ? " " : " not "); -- -- arch_setup_dma_ops(dev, dma_addr, size, iommu, coherent); --} -- - static void of_dma_deconfigure(struct device *dev) - { - arch_teardown_dma_ops(dev); -@@ -236,7 +182,7 @@ static struct platform_device *of_platform_device_create_pdata( - - dev->dev.bus = &platform_bus_type; - dev->dev.platform_data = platform_data; -- of_dma_configure(&dev->dev); -+ of_dma_configure(&dev->dev, dev->dev.of_node); - - if (of_device_add(dev) != 0) { - of_dma_deconfigure(&dev->dev); -@@ -299,7 +245,7 @@ static struct amba_device *of_amba_device_create(struct device_node *node, - dev_set_name(&dev->dev, "%s", bus_id); - else - of_device_make_bus_id(&dev->dev); -- of_dma_configure(&dev->dev); -+ of_dma_configure(&dev->dev, dev->dev.of_node); - - /* Allow the HW Peripheral ID to be overridden */ - prop = of_get_property(node, "arm,primecell-periphid", NULL); -diff --git a/include/linux/of_device.h b/include/linux/of_device.h -index ef37021..22801b1 100644 ---- a/include/linux/of_device.h -+++ b/include/linux/of_device.h -@@ -53,6 +53,7 @@ static inline struct device_node *of_cpu_device_node_get(int cpu) - return of_node_get(cpu_dev->of_node); - } - -+void of_dma_configure(struct device *dev, struct device_node *np); - #else /* CONFIG_OF */ - - static inline int of_driver_match_device(struct device *dev, -@@ -90,6 +91,8 @@ static inline struct device_node *of_cpu_device_node_get(int cpu) - { - return NULL; - } -+static inline void of_dma_configure(struct device *dev, struct device_node *np) -+{} - #endif /* CONFIG_OF */ - - #endif /* _LINUX_OF_DEVICE_H */ --- -2.3.1 - diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.arch/arm64-pci-0006-of-Fix-size-when-dma-range-is-not-used.patch new/patches.arch/arm64-pci-0006-of-Fix-size-when-dma-range-is-not-used.patch --- old/patches.arch/arm64-pci-0006-of-Fix-size-when-dma-range-is-not-used.patch 2015-04-10 16:47:20.000000000 +0200 +++ new/patches.arch/arm64-pci-0006-of-Fix-size-when-dma-range-is-not-used.patch 1970-01-01 01:00:00.000000000 +0100 @@ -1,59 +0,0 @@ -From db4ebd399f530e08184cf34044c1d33d4d0fda8a Mon Sep 17 00:00:00 2001 -From: Murali Karicheri <[email protected]> -Date: Tue, 3 Mar 2015 12:52:10 -0500 -Subject: [PATCH 6/6] of: Fix size when dma-range is not used -Git-commit: 0c79c81c779fe54e67c0ce8c1fda551ca57d8a35 -Patch-mainline: Queued for 4.1 - -Fix the dma-range size when the DT attribute is missing, i.e., set size to -dev->coherent_dma_mask + 1 instead of dev->coherent_dma_mask. Also add -code to check invalid values of size configured in DT and log error. - -Tested-by: Suravee Suthikulpanit <[email protected]> (AMD Seattle) -Signed-off-by: Murali Karicheri <[email protected]> -Signed-off-by: Bjorn Helgaas <[email protected]> -Reviewed-by: Catalin Marinas <[email protected]> -Acked-by: Will Deacon <[email protected]> -CC: Joerg Roedel <[email protected]> -CC: Grant Likely <[email protected]> -CC: Rob Herring <[email protected]> -CC: Russell King <[email protected]> -CC: Arnd Bergmann <[email protected]> -Signed-off-by: Alexander Graf <[email protected]> ---- - drivers/of/device.c | 17 ++++++++++++++++- - 1 file changed, 16 insertions(+), 1 deletion(-) - -diff --git a/drivers/of/device.c b/drivers/of/device.c -index 31a7875..28e74388 100644 ---- a/drivers/of/device.c -+++ b/drivers/of/device.c -@@ -105,9 +105,24 @@ void of_dma_configure(struct device *dev, struct device_node *np) - ret = of_dma_get_range(np, &dma_addr, &paddr, &size); - if (ret < 0) { - dma_addr = offset = 0; -- size = dev->coherent_dma_mask; -+ size = dev->coherent_dma_mask + 1; - } else { - offset = PFN_DOWN(paddr - dma_addr); -+ -+ /* -+ * Add a work around to treat the size as mask + 1 in case -+ * it is defined in DT as a mask. -+ */ -+ if (size & 1) { -+ dev_warn(dev, "Invalid size 0x%llx for dma-range\n", -+ size); -+ size = size + 1; -+ } -+ -+ if (!size) { -+ dev_err(dev, "Adjusted size 0x%llx invalid\n", size); -+ return; -+ } - dev_dbg(dev, "dma_pfn_offset(%#08lx)\n", offset); - } - --- -2.3.1 - diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.arch/s390-message-catalog.diff new/patches.arch/s390-message-catalog.diff --- old/patches.arch/s390-message-catalog.diff 2015-04-10 16:47:20.000000000 +0200 +++ new/patches.arch/s390-message-catalog.diff 2015-07-08 16:23:40.000000000 +0200 @@ -8004,7 +8004,7 @@ static inline __printf(3, 0) --- a/include/linux/printk.h +++ b/include/linux/printk.h -@@ -173,23 +173,48 @@ extern void dump_stack(void) __cold; +@@ -173,28 +173,53 @@ extern void dump_stack(void) __cold; * and other debug macros are compiled out unless either DEBUG is defined * or CONFIG_DYNAMIC_DEBUG is set. */ @@ -8055,6 +8055,11 @@ #define pr_info(fmt, ...) \ - printk(KERN_INFO pr_fmt(fmt), ##__VA_ARGS__) + pr_printk_hash(KERN_INFO, fmt, ##__VA_ARGS__) + /* + * Like KERN_CONT, pr_cont() should only be used when continuing + * a line with no newline ('\n') enclosed. Otherwise it defaults + * back to KERN_DEFAULT. + */ #define pr_cont(fmt, ...) \ - printk(KERN_CONT fmt, ##__VA_ARGS__) + __pr_printk_hash(KERN_CONT, fmt, ##__VA_ARGS__) @@ -8064,9 +8069,9 @@ --- a/kernel/printk/printk.c +++ b/kernel/printk/printk.c @@ -42,6 +42,8 @@ - #include <linux/irq_work.h> #include <linux/utsname.h> #include <linux/ctype.h> + #include <linux/uio.h> +#include <linux/jhash.h> +#include <linux/device.h> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.arch/stack-unwind-cfi_ignore-takes-more-arguments new/patches.arch/stack-unwind-cfi_ignore-takes-more-arguments --- old/patches.arch/stack-unwind-cfi_ignore-takes-more-arguments 2015-04-10 16:47:20.000000000 +0200 +++ new/patches.arch/stack-unwind-cfi_ignore-takes-more-arguments 1970-01-01 01:00:00.000000000 +0100 @@ -1,26 +0,0 @@ -From: Jeff Mahoney <[email protected]> -Subject: stack unwind: cfi_ignore takes more arguments -Patch-mainline: Pending stack-unwind - -The dummy macro needs more arguments. - -Signed-off-by: Jeff Mahoney <[email protected]> ---- - - arch/x86/include/asm/dwarf2.h | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/arch/x86/include/asm/dwarf2.h b/arch/x86/include/asm/dwarf2.h -index f6f1598..8c4ae73 100644 ---- a/arch/x86/include/asm/dwarf2.h -+++ b/arch/x86/include/asm/dwarf2.h -@@ -53,7 +53,7 @@ - * Due to the structure of pre-exisiting code, don't use assembler line - * comment character # to ignore the arguments. Instead, use a dummy macro. - */ --.macro cfi_ignore a=0, b=0, c=0, d=0 -+.macro cfi_ignore a=0, b=0, c=0, d=0, e=0, f=0, g=0, h=0 - .endm - - #define CFI_STARTPROC cfi_ignore - diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.arch/x86_64-unwind-annotations new/patches.arch/x86_64-unwind-annotations --- old/patches.arch/x86_64-unwind-annotations 2015-04-10 16:47:20.000000000 +0200 +++ new/patches.arch/x86_64-unwind-annotations 2015-07-08 16:23:40.000000000 +0200 @@ -3,16 +3,11 @@ Patch-mainline: tbd References: bnc#472783, bnc#588458 ---- - arch/x86/kernel/entry_64.S | 99 +++++++++++++++++++++++---------------------- - arch/x86/kernel/head_64.S | 20 +++++++++ - 2 files changed, 72 insertions(+), 47 deletions(-) - --- a/arch/x86/kernel/entry_64.S +++ b/arch/x86/kernel/entry_64.S -@@ -382,21 +382,21 @@ ENDPROC(native_usergs_sysret64) +@@ -115,21 +115,21 @@ ENDPROC(native_usergs_sysret64) /* - * initial frame state for interrupts (and exceptions without error code) + * empty frame */ - .macro EMPTY_FRAME start=1 offset=0 - .if \start @@ -30,75 +25,105 @@ * initial frame state for interrupts (and exceptions without error code) */ .macro INTR_FRAME start=1 offset=0 -- EMPTY_FRAME \start, SS+8+\offset-RIP +- EMPTY_FRAME \start, 5*8+\offset + .if \start -+ EMPTY_FRAME SS+8+\offset-RIP ++ EMPTY_FRAME 5*8+\offset + .else -+ CFI_DEF_CFA_OFFSET SS+8+\offset-RIP -+ .endif - /*CFI_REL_OFFSET ss, SS+\offset-RIP*/ - CFI_REL_OFFSET rsp, RSP+\offset-RIP - /*CFI_REL_OFFSET rflags, EFLAGS+\offset-RIP*/ -@@ -410,7 +410,9 @@ ENDPROC(native_usergs_sysret64) - * frame that enables calling into C. - */ - .macro PARTIAL_FRAME start=1 offset=0 -+ .if \start >= 0 - XCPT_FRAME \start, ORIG_RAX+\offset-ARGOFFSET ++ CFI_DEF_CFA_OFFSET 5*8+\offset + .endif - CFI_REL_OFFSET rdi, RDI+\offset-ARGOFFSET - CFI_REL_OFFSET rsi, RSI+\offset-ARGOFFSET - CFI_REL_OFFSET rdx, RDX+\offset-ARGOFFSET -@@ -433,7 +434,9 @@ ENDPROC(native_usergs_sysret64) + /*CFI_REL_OFFSET ss, 4*8+\offset*/ + CFI_REL_OFFSET rsp, 3*8+\offset + /*CFI_REL_OFFSET rflags, 2*8+\offset*/ +@@ -148,7 +148,7 @@ ENDPROC(native_usergs_sysret64) + /* * frame that enables passing a complete pt_regs to a C function. */ - .macro DEFAULT_FRAME start=1 offset=0 -+ .if \start >= -1 - PARTIAL_FRAME \start, R11+\offset-R15 -+ .endif +- .macro DEFAULT_FRAME start=1 offset=0 ++ .macro DEFAULT_FRAME start=1 offset=0 extra=1 + XCPT_FRAME \start, ORIG_RAX+\offset + CFI_REL_OFFSET rdi, RDI+\offset + CFI_REL_OFFSET rsi, RSI+\offset +@@ -159,12 +159,14 @@ ENDPROC(native_usergs_sysret64) + CFI_REL_OFFSET r9, R9+\offset + CFI_REL_OFFSET r10, R10+\offset + CFI_REL_OFFSET r11, R11+\offset ++ .if \extra CFI_REL_OFFSET rbx, RBX+\offset CFI_REL_OFFSET rbp, RBP+\offset CFI_REL_OFFSET r12, R12+\offset -@@ -505,7 +508,7 @@ END(save_rest) + CFI_REL_OFFSET r13, R13+\offset + CFI_REL_OFFSET r14, R14+\offset + CFI_REL_OFFSET r15, R15+\offset ++ .endif .endm - ENTRY(save_paranoid) -- XCPT_FRAME 1 RDI+8 -+ XCPT_FRAME 1 (ORIG_RAX-R15+8) - cld - movq %rdi, RDI+8(%rsp) - movq %rsi, RSI+8(%rsp) -@@ -1207,7 +1210,7 @@ ENTRY(\sym) - call error_entry - .endif - -- DEFAULT_FRAME 0 -+ DEFAULT_FRAME -1 - - .if \paranoid - .if \shift_ist != -1 -@@ -1582,8 +1587,7 @@ END(paranoid_exit) - * returns in "no swapgs flag" in %ebx. + /* +@@ -491,7 +493,7 @@ END(system_call) + .macro FORK_LIKE func + ENTRY(stub_\func) + CFI_STARTPROC +- DEFAULT_FRAME 0, 8 /* offset 8: return address */ ++ DEFAULT_FRAME 0, 8, 0 /* offset 8: return address */ + SAVE_EXTRA_REGS 8 + jmp sys_\func + CFI_ENDPROC +@@ -504,7 +506,7 @@ END(stub_\func) + + ENTRY(stub_execve) + CFI_STARTPROC +- DEFAULT_FRAME 0, 8 ++ DEFAULT_FRAME 0, 8, 0 + call sys_execve + return_from_execve: + testl %eax, %eax +@@ -527,7 +529,7 @@ END(stub_execve) + .align 8 + GLOBAL(stub_execveat) + CFI_STARTPROC +- DEFAULT_FRAME 0, 8 ++ DEFAULT_FRAME 0, 8, 0 + call sys_execveat + jmp return_from_execve + CFI_ENDPROC +@@ -537,7 +539,7 @@ END(stub_execveat) + .align 8 + GLOBAL(stub_x32_execve) + CFI_STARTPROC +- DEFAULT_FRAME 0, 8 ++ DEFAULT_FRAME 0, 8, 0 + call compat_sys_execve + jmp return_from_execve + CFI_ENDPROC +@@ -545,7 +547,7 @@ END(stub_x32_execve) + .align 8 + GLOBAL(stub_x32_execveat) + CFI_STARTPROC +- DEFAULT_FRAME 0, 8 ++ DEFAULT_FRAME 0, 8, 0 + call compat_sys_execveat + jmp return_from_execve + CFI_ENDPROC +@@ -575,7 +577,7 @@ END(stub32_execveat) */ - ENTRY(error_entry) -- XCPT_FRAME -- CFI_ADJUST_CFA_OFFSET 15*8 -+ XCPT_FRAME 1 (ORIG_RAX-R15+8) - /* oldrax contains error code */ - cld - movq %rdi, RDI+8(%rsp) -@@ -1870,7 +1875,7 @@ end_repeat_nmi: - * exceptions might do. - */ - call save_paranoid -- DEFAULT_FRAME 0 -+ DEFAULT_FRAME -1 - + ENTRY(stub_rt_sigreturn) + CFI_STARTPROC +- DEFAULT_FRAME 0, 8 ++ DEFAULT_FRAME 0, 8, 0 /* - * Save off the CR2 register. If we take a page fault in the NMI then + * SAVE_EXTRA_REGS result is not normally needed: + * sigreturn overwrites all pt_regs->GPREGS. +@@ -597,7 +599,7 @@ END(stub_rt_sigreturn) + #ifdef CONFIG_X86_X32_ABI + ENTRY(stub_x32_rt_sigreturn) + CFI_STARTPROC +- DEFAULT_FRAME 0, 8 ++ DEFAULT_FRAME 0, 8, 0 + SAVE_EXTRA_REGS 8 + call sys32_x32_rt_sigreturn + jmp return_from_stub --- a/arch/x86/kernel/head_64.S +++ b/arch/x86/kernel/head_64.S -@@ -375,6 +375,25 @@ ENTRY(early_idt_handler) +@@ -378,6 +378,25 @@ ENTRY(early_idt_handler) 11: #ifdef CONFIG_EARLY_PRINTK @@ -124,7 +149,7 @@ GET_CR2_INTO(%r9) # can clobber any volatile register if pv movl 80(%rsp),%r8d # error code movl 72(%rsp),%esi # vector number -@@ -391,6 +410,7 @@ ENTRY(early_idt_handler) +@@ -394,6 +413,7 @@ ENTRY(early_idt_handler) movq 40(%rsp),%rsi # %rip again call __print_symbol #endif ++++++ patches.fixes.tar.bz2 ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.fixes/0001-NFSv4-When-returning-a-delegation-don-t-reclaim-an-i.patch new/patches.fixes/0001-NFSv4-When-returning-a-delegation-don-t-reclaim-an-i.patch --- old/patches.fixes/0001-NFSv4-When-returning-a-delegation-don-t-reclaim-an-i.patch 1970-01-01 01:00:00.000000000 +0100 +++ new/patches.fixes/0001-NFSv4-When-returning-a-delegation-don-t-reclaim-an-i.patch 2015-06-29 13:53:27.000000000 +0200 @@ -0,0 +1,46 @@ +From: NeilBrown <[email protected]> +Date: Wed, 24 Jun 2015 12:56:20 +1000 +Subject: [PATCH] NFSv4: When returning a delegation, don't reclaim an + incompatible open mode. +Patch-mainline: not yet +References: bnc#934202 + +It is possible to have an active open with one mode, and a delegation +for the same file with a different mode. +In particular, a WR_ONLY open and an RD_ONLY delegation. + +When returning the delegation, we currently try to claim opens for +every open type (n_rdwr, n_rdonly, n_wronly). As there is no harm +in claiming an open for a mode that we already have, this is often +simplest. + +However if the delegation only provides a subset of the modes that we +currently have open, this will produce an error from the server. e.g. + +NFS: nfs4_handle_delegation_recall_error: unhandled error -13 + +So when claiming open modes prior to returning a delegation, skip the +open request if the mode is not covered by the delegation - the open_stateid +must already cover that mode, so there is nothing to do. + +Signed-off-by: NeilBrown <[email protected]> +--- + fs/nfs/nfs4proc.c | 7 +++++++ + 1 file changed, 7 insertions(+) + +--- a/fs/nfs/nfs4proc.c ++++ b/fs/nfs/nfs4proc.c +@@ -1553,6 +1553,13 @@ static int nfs4_open_recover_helper(stru + struct nfs4_state *newstate; + int ret; + ++ if ((opendata->o_arg.claim == NFS4_OPEN_CLAIM_DELEGATE_CUR || ++ opendata->o_arg.claim == NFS4_OPEN_CLAIM_DELEG_CUR_FH) && ++ (opendata->o_arg.u.delegation_type & fmode) != fmode) ++ /* This mode can't have been delegated, so we must have ++ * a valid open_stateid to cover it - not need to reclaim. ++ */ ++ return 0; + opendata->o_arg.open_flags = 0; + opendata->o_arg.fmode = fmode; + opendata->o_arg.share_access = nfs4_map_atomic_open_share( diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.fixes/btrfs-0001-send-add-missing-check-for-dead-clone-root.patch new/patches.fixes/btrfs-0001-send-add-missing-check-for-dead-clone-root.patch --- old/patches.fixes/btrfs-0001-send-add-missing-check-for-dead-clone-root.patch 2015-06-18 17:11:06.000000000 +0200 +++ new/patches.fixes/btrfs-0001-send-add-missing-check-for-dead-clone-root.patch 1970-01-01 01:00:00.000000000 +0100 @@ -1,35 +0,0 @@ -From: Filipe Manana <[email protected]> -Date: Mon, 2 Mar 2015 20:53:52 +0000 -Patch-mainline: 4.1 -Git-commit: 571534e54794d7e861651e77c539d475b3e69cba -Subject: [PATCH] Btrfs: send, add missing check for dead clone root - -After we locked the root's root item, a concurrent snapshot deletion -call might have set the dead flag on it. So check if the dead flag -is set and abort if it is, just like we do for the parent root. - -Signed-off-by: Filipe Manana <[email protected]> -Reviewed-by: David Sterba <[email protected]> -Signed-off-by: Chris Mason <[email protected]> -Signed-off-by: David Sterba <[email protected]> ---- - fs/btrfs/send.c | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - -diff --git a/fs/btrfs/send.c b/fs/btrfs/send.c -index d6033f540cc7..6ec28f13659e 100644 ---- a/fs/btrfs/send.c -+++ b/fs/btrfs/send.c -@@ -5855,7 +5855,8 @@ long btrfs_ioctl_send(struct file *mnt_file, void __user *arg_) - clone_sources_to_rollback = i + 1; - spin_lock(&clone_root->root_item_lock); - clone_root->send_in_progress++; -- if (!btrfs_root_readonly(clone_root)) { -+ if (!btrfs_root_readonly(clone_root) || -+ btrfs_root_dead(clone_root)) { - spin_unlock(&clone_root->root_item_lock); - srcu_read_unlock(&fs_info->subvol_srcu, index); - ret = -EPERM; --- -2.1.3 - diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.fixes/btrfs-0002-send-don-t-leave-without-decrementing-clone-ro.patch new/patches.fixes/btrfs-0002-send-don-t-leave-without-decrementing-clone-ro.patch --- old/patches.fixes/btrfs-0002-send-don-t-leave-without-decrementing-clone-ro.patch 2015-06-18 17:11:06.000000000 +0200 +++ new/patches.fixes/btrfs-0002-send-don-t-leave-without-decrementing-clone-ro.patch 1970-01-01 01:00:00.000000000 +0100 @@ -1,64 +0,0 @@ -From: Filipe Manana <[email protected]> -Date: Mon, 2 Mar 2015 20:53:53 +0000 -Patch-mainline: 4.1 -Git-commit: 27824c380c8dd68167729f5dc9cff97598534745 -Subject: [PATCH] Btrfs: send, don't leave without decrementing clone - root's send_progress - -If the clone root was not readonly or the dead flag was set on it, we were -leaving without decrementing the root's send_progress counter (and before -we just incremented it). If a concurrent snapshot deletion was in progress -and ended up being aborted, it would be impossible to later attempt to -delete again the snapshot, since the root's send_in_progress counter could -never go back to 0. - -We were also setting clone_sources_to_rollback to i + 1 too early - if we -bailed out because the clone root we got is not readonly or flagged as dead -we ended up later derreferencing a null pointer because we didn't assign -the clone root to sctx->clone_roots[i].root: - - for (i = 0; sctx && i < clone_sources_to_rollback; i++) - btrfs_root_dec_send_in_progress( - sctx->clone_roots[i].root); - -So just don't increment the send_in_progress counter if the root is readonly -or flagged as dead. - -Signed-off-by: Filipe Manana <[email protected]> -Reviewed-by: David Sterba <[email protected]> -Signed-off-by: Chris Mason <[email protected]> -Signed-off-by: David Sterba <[email protected]> ---- - fs/btrfs/send.c | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/fs/btrfs/send.c b/fs/btrfs/send.c -index 6ec28f13659e..571de5a08fe7 100644 ---- a/fs/btrfs/send.c -+++ b/fs/btrfs/send.c -@@ -5852,9 +5852,7 @@ long btrfs_ioctl_send(struct file *mnt_file, void __user *arg_) - ret = PTR_ERR(clone_root); - goto out; - } -- clone_sources_to_rollback = i + 1; - spin_lock(&clone_root->root_item_lock); -- clone_root->send_in_progress++; - if (!btrfs_root_readonly(clone_root) || - btrfs_root_dead(clone_root)) { - spin_unlock(&clone_root->root_item_lock); -@@ -5862,10 +5860,12 @@ long btrfs_ioctl_send(struct file *mnt_file, void __user *arg_) - ret = -EPERM; - goto out; - } -+ clone_root->send_in_progress++; - spin_unlock(&clone_root->root_item_lock); - srcu_read_unlock(&fs_info->subvol_srcu, index); - - sctx->clone_roots[i].root = clone_root; -+ clone_sources_to_rollback = i + 1; - } - vfree(clone_sources_tmp); - clone_sources_tmp = NULL; --- -2.1.3 - diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.fixes/btrfs-0003-incorrect-handling-for-fiemap_fill_next_extent.patch new/patches.fixes/btrfs-0003-incorrect-handling-for-fiemap_fill_next_extent.patch --- old/patches.fixes/btrfs-0003-incorrect-handling-for-fiemap_fill_next_extent.patch 2015-06-18 17:11:06.000000000 +0200 +++ new/patches.fixes/btrfs-0003-incorrect-handling-for-fiemap_fill_next_extent.patch 1970-01-01 01:00:00.000000000 +0100 @@ -1,41 +0,0 @@ -From: Chengyu Song <[email protected]> -Date: Tue, 24 Mar 2015 18:12:56 -0400 -Patch-mainline: 4.1 -Git-commit: 317785074b63535d5f57d67043ed39afe4e31194 -Subject: [PATCH] btrfs: incorrect handling for fiemap_fill_next_extent - return - -fiemap_fill_next_extent returns 0 on success, -errno on error, 1 if this was -the last extent that will fit in user array. If 1 is returned, the return -value may eventually returned to user space, which should not happen, according -to manpage of ioctl. - -Signed-off-by: Chengyu Song <[email protected]> -Reviewed-by: David Sterba <[email protected]> -Reviewed-by: Liu Bo <[email protected]> -Signed-off-by: Chris Mason <[email protected]> -Signed-off-by: David Sterba <[email protected]> ---- - fs/btrfs/extent_io.c | 5 ++++- - 1 file changed, 4 insertions(+), 1 deletion(-) - -diff --git a/fs/btrfs/extent_io.c b/fs/btrfs/extent_io.c -index d688cfe5d496..782f3bc4651d 100644 ---- a/fs/btrfs/extent_io.c -+++ b/fs/btrfs/extent_io.c -@@ -4514,8 +4514,11 @@ int extent_fiemap(struct inode *inode, struct fiemap_extent_info *fieinfo, - } - ret = fiemap_fill_next_extent(fieinfo, em_start, disko, - em_len, flags); -- if (ret) -+ if (ret) { -+ if (ret == 1) -+ ret = 0; - goto out_free; -+ } - } - out_free: - free_extent_map(em); --- -2.1.3 - diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.fixes/btrfs-0004-cleanup-orphans-while-looking-up-default-subvo.patch new/patches.fixes/btrfs-0004-cleanup-orphans-while-looking-up-default-subvo.patch --- old/patches.fixes/btrfs-0004-cleanup-orphans-while-looking-up-default-subvo.patch 2015-06-18 17:11:06.000000000 +0200 +++ new/patches.fixes/btrfs-0004-cleanup-orphans-while-looking-up-default-subvo.patch 1970-01-01 01:00:00.000000000 +0100 @@ -1,44 +0,0 @@ -From: Jeff Mahoney <[email protected]> -Date: Fri, 20 Mar 2015 14:02:09 -0400 -Patch-mainline: 4.1 -Git-commit: a9accf42219b06d2984a1a1d53635843a7f1920a -Subject: [PATCH] btrfs: cleanup orphans while looking up default subvolume - -Orphans in the fs tree are cleaned up via open_ctree and subvolume -orphans are cleaned via btrfs_lookup_dentry -- except when a default -subvolume is in use. The name for the default subvolume uses a manual -lookup that doesn't trigger orphan cleanup and needs to trigger it -manually as well. This doesn't apply to the remount case since the -subvolumes are cleaned up by walking the root radix tree. - -Signed-off-by: Jeff Mahoney <[email protected]> -Reviewed-by: David Sterba <[email protected]> -Signed-off-by: Chris Mason <[email protected]> -Signed-off-by: David Sterba <[email protected]> ---- - fs/btrfs/super.c | 9 +++++++++ - 1 file changed, 9 insertions(+) - -diff --git a/fs/btrfs/super.c b/fs/btrfs/super.c -index 05fef198ff94..e477ed67a49a 100644 ---- a/fs/btrfs/super.c -+++ b/fs/btrfs/super.c -@@ -901,6 +901,15 @@ static struct dentry *get_default_root(struct super_block *sb, - if (IS_ERR(new_root)) - return ERR_CAST(new_root); - -+ if (!(sb->s_flags & MS_RDONLY)) { -+ int ret; -+ down_read(&fs_info->cleanup_work_sem); -+ ret = btrfs_orphan_cleanup(new_root); -+ up_read(&fs_info->cleanup_work_sem); -+ if (ret) -+ return ERR_PTR(ret); -+ } -+ - dir_id = btrfs_root_dirid(&new_root->root_item); - setup_root: - location.objectid = dir_id; --- -2.1.3 - diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.fixes/btrfs-0005-fix-range-cloning-when-same-inode-used-as-sour.patch new/patches.fixes/btrfs-0005-fix-range-cloning-when-same-inode-used-as-sour.patch --- old/patches.fixes/btrfs-0005-fix-range-cloning-when-same-inode-used-as-sour.patch 2015-06-18 17:11:06.000000000 +0200 +++ new/patches.fixes/btrfs-0005-fix-range-cloning-when-same-inode-used-as-sour.patch 1970-01-01 01:00:00.000000000 +0100 @@ -1,132 +0,0 @@ -From: Filipe Manana <[email protected]> -Date: Tue, 31 Mar 2015 14:56:46 +0100 -Patch-mainline: 4.1 -Git-commit: 877f4ee55c9e3198d105596bd9b3a30314edfa46 -Subject: [PATCH] Btrfs: fix range cloning when same inode used as source - and destination - -While searching for extents to clone we might find one where we only use -a part of it coming from its tail. If our destination inode is the same -the source inode, we end up removing the tail part of the extent item and -insert after a new one that point to the same extent with an adjusted -key file offset and data offset. After this we search for the next extent -item in the fs/subvol tree with a key that has an offset incremented by -one. But this second search leaves us at the new extent item we inserted -previously, and since that extent item has a non-zero data offset, it -it can make us call btrfs_drop_extents with an empty range (start == end) -which causes the following warning: - -[23978.537119] WARNING: CPU: 6 PID: 16251 at fs/btrfs/file.c:550 btrfs_drop_extent_cache+0x43/0x385 [btrfs]() -(...) -[23978.557266] Call Trace: -[23978.557978] [<ffffffff81425fd9>] dump_stack+0x4c/0x65 -[23978.559191] [<ffffffff81045390>] warn_slowpath_common+0xa1/0xbb -[23978.560699] [<ffffffffa047f0ea>] ? btrfs_drop_extent_cache+0x43/0x385 [btrfs] -[23978.562389] [<ffffffff8104544d>] warn_slowpath_null+0x1a/0x1c -[23978.563613] [<ffffffffa047f0ea>] btrfs_drop_extent_cache+0x43/0x385 [btrfs] -[23978.565103] [<ffffffff810e3a18>] ? time_hardirqs_off+0x15/0x28 -[23978.566294] [<ffffffff81079ff8>] ? trace_hardirqs_off+0xd/0xf -[23978.567438] [<ffffffffa047f73d>] __btrfs_drop_extents+0x6b/0x9e1 [btrfs] -[23978.568702] [<ffffffff8107c03f>] ? trace_hardirqs_on+0xd/0xf -[23978.569763] [<ffffffff811441c0>] ? ____cache_alloc+0x69/0x2eb -[23978.570817] [<ffffffff81142269>] ? virt_to_head_page+0x9/0x36 -[23978.571872] [<ffffffff81143c15>] ? cache_alloc_debugcheck_after.isra.42+0x16c/0x1cb -[23978.573466] [<ffffffff811420d5>] ? kmemleak_alloc_recursive.constprop.52+0x16/0x18 -[23978.574962] [<ffffffffa0480d07>] btrfs_drop_extents+0x66/0x7f [btrfs] -[23978.576179] [<ffffffffa049aa35>] btrfs_clone+0x516/0xaf5 [btrfs] -[23978.577311] [<ffffffffa04983dc>] ? lock_extent_range+0x7b/0xcd [btrfs] -[23978.578520] [<ffffffffa049b2a2>] btrfs_ioctl_clone+0x28e/0x39f [btrfs] -[23978.580282] [<ffffffffa049d9ae>] btrfs_ioctl+0xb51/0x219a [btrfs] -(...) -[23978.591887] ---[ end trace 988ec2a653d03ed3 ]--- - -Then we attempt to insert a new extent item with a key that already -exists, which makes btrfs_insert_empty_item return -EEXIST resulting in -abortion of the current transaction: - -[23978.594355] WARNING: CPU: 6 PID: 16251 at fs/btrfs/super.c:260 __btrfs_abort_transaction+0x52/0x114 [btrfs]() -(...) -[23978.622589] Call Trace: -[23978.623181] [<ffffffff81425fd9>] dump_stack+0x4c/0x65 -[23978.624359] [<ffffffff81045390>] warn_slowpath_common+0xa1/0xbb -[23978.625573] [<ffffffffa044ab6c>] ? __btrfs_abort_transaction+0x52/0x114 [btrfs] -[23978.626971] [<ffffffff810453f0>] warn_slowpath_fmt+0x46/0x48 -[23978.628003] [<ffffffff8108a6c8>] ? vprintk_default+0x1d/0x1f -[23978.629138] [<ffffffffa044ab6c>] __btrfs_abort_transaction+0x52/0x114 [btrfs] -[23978.630528] [<ffffffffa049ad1b>] btrfs_clone+0x7fc/0xaf5 [btrfs] -[23978.631635] [<ffffffffa04983dc>] ? lock_extent_range+0x7b/0xcd [btrfs] -[23978.632886] [<ffffffffa049b2a2>] btrfs_ioctl_clone+0x28e/0x39f [btrfs] -[23978.634119] [<ffffffffa049d9ae>] btrfs_ioctl+0xb51/0x219a [btrfs] -(...) -[23978.647714] ---[ end trace 988ec2a653d03ed4 ]--- - -This is wrong because we should not process the extent item that we just -inserted previously, and instead process the extent item that follows it -in the tree - -For example for the test case I wrote for fstests: - - bs=$((64 * 1024)) - mkfs.btrfs -f -l $bs -O ^no-holes /dev/sdc - mount /dev/sdc /mnt - - xfs_io -f -c "pwrite -S 0xaa $(($bs * 2)) $(($bs * 2))" /mnt/foo - - $CLONER_PROG -s $((3 * $bs)) -d $((267 * $bs)) -l 0 /mnt/foo /mnt/foo - $CLONER_PROG -s $((217 * $bs)) -d $((95 * $bs)) -l 0 /mnt/foo /mnt/foo - -The second clone call fails with -EEXIST, because when we process the -first extent item (offset 262144), we drop part of it (counting from the -end) and then insert a new extent item with a key greater then the key we -found. The next time we search the tree we search for a key with offset -262144 + 1, which leaves us at the new extent item we have just inserted -but we think it refers to an extent that we need to clone. - -Fix this by ensuring the next search key uses an offset corresponding to -the offset of the key we found previously plus the data length of the -corresponding extent item. This ensures we skip new extent items that we -inserted and works for the case of implicit holes too (NO_HOLES feature). - -A test case for fstests follows soon. - -Signed-off-by: Filipe Manana <[email protected]> -Signed-off-by: Chris Mason <[email protected]> -Signed-off-by: David Sterba <[email protected]> ---- - fs/btrfs/ioctl.c | 6 ++++-- - 1 file changed, 4 insertions(+), 2 deletions(-) - -diff --git a/fs/btrfs/ioctl.c b/fs/btrfs/ioctl.c -index 2b4c5423672d..d79c599240a7 100644 ---- a/fs/btrfs/ioctl.c -+++ b/fs/btrfs/ioctl.c -@@ -3206,6 +3206,8 @@ static int btrfs_clone(struct inode *src, struct inode *inode, - key.offset = off; - - while (1) { -+ u64 next_key_min_offset; -+ - /* - * note the key will change type as we walk through the - * tree. -@@ -3286,7 +3288,7 @@ static int btrfs_clone(struct inode *src, struct inode *inode, - } else if (key.offset >= off + len) { - break; - } -- -+ next_key_min_offset = key.offset + datal; - size = btrfs_item_size_nr(leaf, slot); - read_extent_buffer(leaf, buf, - btrfs_item_ptr_offset(leaf, slot), -@@ -3501,7 +3503,7 @@ static int btrfs_clone(struct inode *src, struct inode *inode, - break; - } - btrfs_release_path(path); -- key.offset++; -+ key.offset = next_key_min_offset; - } - ret = 0; - --- -2.1.3 - diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.fixes/btrfs-0006-fix-uninit-variable-in-clone-ioctl.patch new/patches.fixes/btrfs-0006-fix-uninit-variable-in-clone-ioctl.patch --- old/patches.fixes/btrfs-0006-fix-uninit-variable-in-clone-ioctl.patch 2015-06-18 17:11:06.000000000 +0200 +++ new/patches.fixes/btrfs-0006-fix-uninit-variable-in-clone-ioctl.patch 1970-01-01 01:00:00.000000000 +0100 @@ -1,32 +0,0 @@ -From: Chris Mason <[email protected]> -Date: Sat, 11 Apr 2015 05:09:06 -0700 -Patch-mainline: 4.1 -Git-commit: 2eb8c62e317b2305da00dc7986a982fa9637fedc -Subject: [PATCH] Btrfs: fix uninit variable in clone ioctl - -Commit 0d97a64e0 creates a new variable but doesn't always set it up. -This puts it back to the original method (key.offset + 1) for the cases -not covered by Filipe's new logic. - -Signed-off-by: Chris Mason <[email protected]> -Signed-off-by: David Sterba <[email protected]> ---- - fs/btrfs/ioctl.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/fs/btrfs/ioctl.c b/fs/btrfs/ioctl.c -index d79c599240a7..64e8fb639f72 100644 ---- a/fs/btrfs/ioctl.c -+++ b/fs/btrfs/ioctl.c -@@ -3206,7 +3206,7 @@ static int btrfs_clone(struct inode *src, struct inode *inode, - key.offset = off; - - while (1) { -- u64 next_key_min_offset; -+ u64 next_key_min_offset = key.offset + 1; - - /* - * note the key will change type as we walk through the --- -2.1.3 - diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.fixes/btrfs-0007-fix-regression-in-raid-level-conversion.patch new/patches.fixes/btrfs-0007-fix-regression-in-raid-level-conversion.patch --- old/patches.fixes/btrfs-0007-fix-regression-in-raid-level-conversion.patch 2015-06-18 17:11:06.000000000 +0200 +++ new/patches.fixes/btrfs-0007-fix-regression-in-raid-level-conversion.patch 1970-01-01 01:00:00.000000000 +0100 @@ -1,55 +0,0 @@ -From: Chris Mason <[email protected]> -Date: Tue, 19 May 2015 18:54:41 -0700 -Patch-mainline: 4.1 -Git-commit: 25c5856aa419479bb07466fd7d0de01da0b7b421 -Subject: [PATCH] Btrfs: fix regression in raid level conversion - -Commit 2f0810880f082fa8ba66ab2c33b02e4ff9770a5e changed -btrfs_set_block_group_ro to avoid trying to allocate new chunks with the -new raid profile during conversion. This fixed failures when there was -no space on the drive to allocate a new chunk, but the metadata -reserves were sufficient to continue the conversion. - -But this ended up causing a regression when the drive had plenty of -space to allocate new chunks, mostly because reduce_alloc_profile isn't -using the new raid profile. - -Fixing btrfs_reduce_alloc_profile is a bigger patch. For now, do a -partial revert of 2f0810880, and don't error out if we hit ENOSPC. - -Signed-off-by: Chris Mason <[email protected]> -Tested-by: Dave Sterba <[email protected]> -Reported-by: Holger Hoffstaette <[email protected]> -Signed-off-by: David Sterba <[email protected]> ---- - fs/btrfs/extent-tree.c | 19 +++++++++++++++++++ - 1 file changed, 19 insertions(+) - ---- a/fs/btrfs/extent-tree.c -+++ b/fs/btrfs/extent-tree.c -@@ -8544,6 +8544,25 @@ int btrfs_set_block_group_ro(struct btrf - goto out; - } - -+ /* -+ * if we are changing raid levels, try to allocate a corresponding -+ * block group with the new raid level. -+ */ -+ alloc_flags = update_block_group_flags(root, cache->flags); -+ if (alloc_flags != cache->flags) { -+ ret = do_chunk_alloc(trans, root, alloc_flags, -+ CHUNK_ALLOC_FORCE); -+ /* -+ * ENOSPC is allowed here, we may have enough space -+ * already allocated at the new raid level to -+ * carry on -+ */ -+ if (ret == -ENOSPC) -+ ret = 0; -+ if (ret < 0) -+ goto out; -+ } -+ - ret = set_block_group_ro(cache, 0); - if (!ret) - goto out; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.fixes/btrfs-revert-delete-chunk-allocation.patch new/patches.fixes/btrfs-revert-delete-chunk-allocation.patch --- old/patches.fixes/btrfs-revert-delete-chunk-allocation.patch 2015-06-18 17:11:06.000000000 +0200 +++ new/patches.fixes/btrfs-revert-delete-chunk-allocation.patch 1970-01-01 01:00:00.000000000 +0100 @@ -1,86 +0,0 @@ -From: Omar Sandoval <[email protected]> -Subject: Revert "btrfs: delete chunk allocation attemp when setting block - group ro" -Patch-mainline: 4.1 - -This reverts commit 2f0810880f082fa8ba66ab2c33b02e4ff9770a5e. - -This tried to fix the following test case: - - mkfs.ext4 -F /dev/sda - btrfs-convert /dev/sda - mount /dev/sda /mnt - btrfs device add -f /dev/sdb /mnt - btrfs balance start -v -dconvert=raid1 -mconvert=raid1 /mnt - -Before the reverted commit, this test case failed with ENOSPC because -all chunks on the freshly converted filesystem were allocated, although -many were empty. The reverted commit removed an allocation attempt in -btrfs_set_block_group_ro(), but that fix wasn't right. After the -reverted commit, the balance succeeds, but the data/metadata profiles -aren't actually updated: - - # btrfs fi df /mnt - Data, single: total=208.00MiB, used=49.48MiB - System, single: total=32.00MiB, used=4.00KiB - Metadata, single: total=208.00MiB, used=48.00KiB - GlobalReserve, single: total=4.00MiB, used=0.00B - -Indeed, several users reported that this commit caused a regression and -that converting the data and metadata profiles no longer works. This is -because the chunk allocation in question was where we actually allocated -the chunk with the new profile. Not seeing a more obvious fix, let's -just revert this. We can work around the ENOSPC in the original test -case by just issuing a balance to free up the unused block groups before -the conversion, anyways: - - mkfs.ext4 -F /dev/sda - btrfs-convert /dev/sda - mount /dev/sda /mnt - btrfs balance start -v /mnt - btrfs device add -f /dev/sdb /mnt - btrfs balance start -v -dconvert=raid1 -mconvert=raid1 /mnt - -[jslaby: this also reverts a96295965b6.] - -Reported-by: Holger Hoffstätte <[email protected]> -Cc: Shaohua Li <[email protected]> -Signed-off-by: Omar Sandoval <[email protected]> -Signed-off-by: David Sterba <[email protected]> - ---- - - fs/btrfs/extent-tree.c | 15 ++++++++------- - 1 file changed, 8 insertions(+), 7 deletions(-) - ---- a/fs/btrfs/extent-tree.c -+++ b/fs/btrfs/extent-tree.c -@@ -8536,6 +8536,14 @@ int btrfs_set_block_group_ro(struct btrf - if (IS_ERR(trans)) - return PTR_ERR(trans); - -+ alloc_flags = update_block_group_flags(root, cache->flags); -+ if (alloc_flags != cache->flags) { -+ ret = do_chunk_alloc(trans, root, alloc_flags, -+ CHUNK_ALLOC_FORCE); -+ if (ret < 0) -+ goto out; -+ } -+ - ret = set_block_group_ro(cache, 0); - if (!ret) - goto out; -@@ -8546,13 +8554,6 @@ int btrfs_set_block_group_ro(struct btrf - goto out; - ret = set_block_group_ro(cache, 0); - out: -- if (cache->flags & BTRFS_BLOCK_GROUP_SYSTEM) { -- alloc_flags = update_block_group_flags(root, cache->flags); -- lock_chunks(root->fs_info->chunk_root); -- check_system_chunk(trans, root, alloc_flags); -- unlock_chunks(root->fs_info->chunk_root); -- } -- - btrfs_end_transaction(trans, root); - return ret; - } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.fixes/drm-i915-Ensure-cache-flushes-prior-to-doing-CS-flip.patch new/patches.fixes/drm-i915-Ensure-cache-flushes-prior-to-doing-CS-flip.patch --- old/patches.fixes/drm-i915-Ensure-cache-flushes-prior-to-doing-CS-flip.patch 1970-01-01 01:00:00.000000000 +0100 +++ new/patches.fixes/drm-i915-Ensure-cache-flushes-prior-to-doing-CS-flip.patch 2015-06-29 13:53:27.000000000 +0200 @@ -0,0 +1,40 @@ +From: Chris Wilson <[email protected]> +Date: Mon, 27 Apr 2015 13:41:15 +0100 +Subject: drm/i915: Ensure cache flushes prior to doing CS flips +Patch-mainline: 4.2-rc1 +Git-commit: d94b5030d26b4f45510a092262bc2b542a00bd7c +References: bnc#931300 + +Synchronising to an object active on the same ring is a no-op, for the +benefit of execbuffer scheduler. However, for CS flips this means that +we can forgo checking whether the last write request of the object is +actually queued and more importantly whether the cache flush for the +write was emitted. + +Signed-off-by: Chris Wilson <[email protected]> +Signed-off-by: Daniel Vetter <[email protected]> +Signed-off-by: Jiri Slaby <[email protected]> +--- + drivers/gpu/drm/i915/intel_display.c | 6 ++++++ + 1 file changed, 6 insertions(+) + +diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c +index c890e03939fa..3c8801cecd3f 100644 +--- a/drivers/gpu/drm/i915/intel_display.c ++++ b/drivers/gpu/drm/i915/intel_display.c +@@ -11040,6 +11040,12 @@ static int intel_crtc_page_flip(struct drm_crtc *crtc, + i915_gem_request_assign(&work->flip_queued_req, + obj->last_write_req); + } else { ++ if (obj->last_write_req) { ++ ret = i915_gem_check_olr(obj->last_write_req); ++ if (ret) ++ goto cleanup_unpin; ++ } ++ + ret = dev_priv->display.queue_flip(dev, crtc, fb, obj, ring, + page_flip_flags); + if (ret) +-- +2.4.3 + diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.fixes/drm-nouveau-bios-fix-fetching-from-acpi-on-certain-s new/patches.fixes/drm-nouveau-bios-fix-fetching-from-acpi-on-certain-s --- old/patches.fixes/drm-nouveau-bios-fix-fetching-from-acpi-on-certain-s 2015-06-18 17:11:06.000000000 +0200 +++ new/patches.fixes/drm-nouveau-bios-fix-fetching-from-acpi-on-certain-s 1970-01-01 01:00:00.000000000 +0100 @@ -1,59 +0,0 @@ -From 4195f40685a5f2783b4decece13ed740b61ee038 Mon Sep 17 00:00:00 2001 -From: Jan Vesely <[email protected]> -Date: Wed, 8 Apr 2015 21:34:36 -0400 -Subject: [PATCH] drm/nouveau/bios: fix fetching from acpi on certain systems -Git-commit: 4195f40685a5f2783b4decece13ed740b61ee038 -Patch-mainline: 4.1-rc1 -References: boo#932184 - -nvbios_extend() returns 1 to indicate "extended the array" and 0 to -indicate the array is already big enough. This is used by the core -shadowing code to prevent re-fetching chunks of the image that have -already been shadowed. - -The ACPI fetching code may possibly need to extend this further due -to requiring fetches to happen in 4KiB chunks. - -Under certain circumstances (that happen if the total image size is -a multiple of 4KiB), the memory allocated to store the shadow will -already be big enough, causing the ACPI code's nvbios_extend() call -to return 0, which is misinterpreted as a failure. - -The fix is simple, accept >= 0 as a successful condition here. The -core will have already made sure that we're not re-fetching data we -already have. - -Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=89047 - -v2 (Ben Skeggs): -- dropped hunk which would cause unnecessary re-fetching -- more descriptive explanation - -Signed-off-by: Jan Vesely <[email protected]> -Signed-off-by: Ben Skeggs <[email protected]> -Acked-by: Takashi Iwai <[email protected]> - ---- - drivers/gpu/drm/nouveau/nvkm/subdev/bios/shadowacpi.c | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - ---- a/drivers/gpu/drm/nouveau/nvkm/subdev/bios/shadowacpi.c -+++ b/drivers/gpu/drm/nouveau/nvkm/subdev/bios/shadowacpi.c -@@ -52,7 +52,7 @@ acpi_read_fast(void *data, u32 offset, u - u32 start = offset & ~0x00000fff; - u32 fetch = limit - start; - -- if (nvbios_extend(bios, limit) > 0) { -+ if (nvbios_extend(bios, limit) >= 0) { - int ret = nouveau_acpi_get_bios_chunk(bios->data, start, fetch); - if (ret == fetch) - return fetch; -@@ -73,7 +73,7 @@ acpi_read_slow(void *data, u32 offset, u - u32 start = offset & ~0xfff; - u32 fetch = 0; - -- if (nvbios_extend(bios, limit) > 0) { -+ if (nvbios_extend(bios, limit) >= 0) { - while (start + fetch < limit) { - int ret = nouveau_acpi_get_bios_chunk(bios->data, - start + fetch, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.fixes/mmc-sdhci-fix-low-memory-corruption.patch new/patches.fixes/mmc-sdhci-fix-low-memory-corruption.patch --- old/patches.fixes/mmc-sdhci-fix-low-memory-corruption.patch 2015-06-18 17:11:06.000000000 +0200 +++ new/patches.fixes/mmc-sdhci-fix-low-memory-corruption.patch 2015-06-29 13:53:27.000000000 +0200 @@ -1,7 +1,8 @@ From: Jiri Slaby <[email protected]> Date: Fri, 12 Jun 2015 11:24:45 +0200 Subject: mmc: sdhci: fix low memory corruption -Patch-mainline: not yet, submitted +Patch-mainline: v4.2-rc1 +Git-commit: 62a7f368ffbc13d9aedfdd7aeae711b177db69ac References: bnc#934531 When dma mapping (dma_map_sg) fails in sdhci_pre_dma_transfer, -EINVAL diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.fixes/x86-PCI-Use-host-bridge-_CRS-info-on-Foxconn-K8M890 new/patches.fixes/x86-PCI-Use-host-bridge-_CRS-info-on-Foxconn-K8M890 --- old/patches.fixes/x86-PCI-Use-host-bridge-_CRS-info-on-Foxconn-K8M890 1970-01-01 01:00:00.000000000 +0100 +++ new/patches.fixes/x86-PCI-Use-host-bridge-_CRS-info-on-Foxconn-K8M890 2015-06-29 13:53:27.000000000 +0200 @@ -0,0 +1,62 @@ +From 1dace0116d0b05c967d94644fc4dfe96be2ecd3d Mon Sep 17 00:00:00 2001 +From: Bjorn Helgaas <[email protected]> +Date: Tue, 9 Jun 2015 18:54:07 -0500 +Subject: [PATCH] x86/PCI: Use host bridge _CRS info on Foxconn K8M890-8237A +Git-commit: 1dace0116d0b05c967d94644fc4dfe96be2ecd3d +Patch-mainline: linux-next, to be in 4.2-rc1 +References: bnc#907092 + +The Foxconn K8M890-8237A has two PCI host bridges, and we can't assign +resources correctly without the information from _CRS that tells us which +address ranges are claimed by which bridge. In the bugs mentioned below, +we incorrectly assign a sound card address (this example is from 1033299): + + bus: 00 index 2 [mem 0x80000000-0xfcffffffff] + ACPI: PCI Root Bridge [PCI0] (domain 0000 [bus 00-7f]) + pci_root PNP0A08:00: host bridge window [mem 0x80000000-0xbfefffff] (ignored) + pci_root PNP0A08:00: host bridge window [mem 0xc0000000-0xdfffffff] (ignored) + pci_root PNP0A08:00: host bridge window [mem 0xf0000000-0xfebfffff] (ignored) + ACPI: PCI Root Bridge [PCI1] (domain 0000 [bus 80-ff]) + pci_root PNP0A08:01: host bridge window [mem 0xbff00000-0xbfffffff] (ignored) + pci 0000:80:01.0: [1106:3288] type 0 class 0x000403 + pci 0000:80:01.0: reg 10: [mem 0xbfffc000-0xbfffffff 64bit] + pci 0000:80:01.0: address space collision: [mem 0xbfffc000-0xbfffffff 64bit] conflicts with PCI Bus #00 [mem 0x80000000-0xfcffffffff] + pci 0000:80:01.0: BAR 0: assigned [mem 0xfd00000000-0xfd00003fff 64bit] + BUG: unable to handle kernel paging request at ffffc90000378000 + IP: [<ffffffffa0345f63>] azx_create+0x37c/0x822 [snd_hda_intel] + +We assigned 0xfd_0000_0000, but that is not in any of the host bridge +windows, and the sound card doesn't work. + +Turn on pci=use_crs automatically for this system. + +Link: https://bugs.launchpad.net/ubuntu/+source/alsa-driver/+bug/931368 +Link: https://bugs.launchpad.net/ubuntu/+source/alsa-driver/+bug/1033299 +Signed-off-by: Bjorn Helgaas <[email protected]> +Cc: [email protected] +Acked-by: Takashi Iwai <[email protected]> + +--- + arch/x86/pci/acpi.c | 11 +++++++++++ + 1 file changed, 11 insertions(+) + +--- a/arch/x86/pci/acpi.c ++++ b/arch/x86/pci/acpi.c +@@ -81,6 +81,17 @@ static const struct dmi_system_id pci_cr + DMI_MATCH(DMI_BIOS_VENDOR, "Phoenix Technologies, LTD"), + }, + }, ++ /* https://bugs.launchpad.net/ubuntu/+source/alsa-driver/+bug/931368 */ ++ /* https://bugs.launchpad.net/ubuntu/+source/alsa-driver/+bug/1033299 */ ++ { ++ .callback = set_use_crs, ++ .ident = "Foxconn K8M890-8237A", ++ .matches = { ++ DMI_MATCH(DMI_BOARD_VENDOR, "Foxconn"), ++ DMI_MATCH(DMI_BOARD_NAME, "K8M890-8237A"), ++ DMI_MATCH(DMI_BIOS_VENDOR, "Phoenix Technologies, LTD"), ++ }, ++ }, + + /* Now for the blacklist.. */ + diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.fixes/x86-PCI-Use-host-bridge-_CRS-info-on-systems-with-32 new/patches.fixes/x86-PCI-Use-host-bridge-_CRS-info-on-systems-with-32 --- old/patches.fixes/x86-PCI-Use-host-bridge-_CRS-info-on-systems-with-32 1970-01-01 01:00:00.000000000 +0100 +++ new/patches.fixes/x86-PCI-Use-host-bridge-_CRS-info-on-systems-with-32 2015-06-29 13:53:27.000000000 +0200 @@ -0,0 +1,54 @@ +From 3d9fecf6bfb8b12bc2f9a4c7109895a2a2bb9436 Mon Sep 17 00:00:00 2001 +From: Bjorn Helgaas <[email protected]> +Date: Tue, 9 Jun 2015 17:31:38 -0500 +Subject: [PATCH] x86/PCI: Use host bridge _CRS info on systems with >32 bit addressing +Git-commit: 3d9fecf6bfb8b12bc2f9a4c7109895a2a2bb9436 +Patch-mainline: linux-next, to be in 4.2-rc1 +References: bnc#907092 + +We enable _CRS on all systems from 2008 and later. On older systems, we +ignore _CRS and assume the whole physical address space (excluding RAM and +other devices) is available for PCI devices, but on systems that support +physical address spaces larger than 4GB, it's doubtful that the area above +4GB is really available for PCI. + +After d56dbf5bab8c ("PCI: Allocate 64-bit BARs above 4G when possible"), we +try to use that space above 4GB *first*, so we're more likely to put a +device there. + +On Juan's Toshiba Satellite Pro U200, BIOS left the graphics, sound, 1394, +and card reader devices unassigned (but only after Windows had been +booted). Only the sound device had a 64-bit BAR, so it was the only device +placed above 4GB, and hence the only device that didn't work. + +Keep _CRS enabled even on pre-2008 systems if they support physical address +space larger than 4GB. + +Fixes: d56dbf5bab8c ("PCI: Allocate 64-bit BARs above 4G when possible") +Reported-and-tested-by: Juan Dayer <[email protected]> +Reported-and-tested-by: Alan Horsfield <[email protected]> +Link: https://bugzilla.kernel.org/show_bug.cgi?id=99221 +Link: https://bugzilla.opensuse.org/show_bug.cgi?id=907092 +Signed-off-by: Bjorn Helgaas <[email protected]> +Cc: [email protected] # v3.14+ +Acked-by: Takashi Iwai <[email protected]> + +--- + arch/x86/pci/acpi.c | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +--- a/arch/x86/pci/acpi.c ++++ b/arch/x86/pci/acpi.c +@@ -132,8 +132,10 @@ void __init pci_acpi_crs_quirks(void) + { + int year; + +- if (dmi_get_date(DMI_BIOS_DATE, &year, NULL, NULL) && year < 2008) +- pci_use_crs = false; ++ if (dmi_get_date(DMI_BIOS_DATE, &year, NULL, NULL) && year < 2008) { ++ if (iomem_resource.end <= 0xffffffff) ++ pci_use_crs = false; ++ } + + dmi_check_system(pci_crs_quirks); + ++++++ patches.kernel.org.tar.bz2 ++++++ ++++ 20561 lines of diff (skipped) ++++++ patches.rpmify.tar.bz2 ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.rpmify/cloneconfig.diff new/patches.rpmify/cloneconfig.diff --- old/patches.rpmify/cloneconfig.diff 2014-11-05 16:04:15.000000000 +0100 +++ new/patches.rpmify/cloneconfig.diff 2015-05-01 21:59:50.000000000 +0200 @@ -15,11 +15,11 @@ --- a/scripts/kconfig/Makefile +++ b/scripts/kconfig/Makefile -@@ -99,6 +99,23 @@ PHONY += allnoconfig allyesconfig allmod +@@ -82,6 +82,23 @@ PHONY += $(simple-targets) - allnoconfig allyesconfig allmodconfig alldefconfig randconfig: $(obj)/conf - $< --$@ $(Kconfig) -+ + $(simple-targets): $(obj)/conf + $< $(silent) --$@ $(Kconfig) ++ +UNAME_RELEASE := $(shell uname -r) +CLONECONFIG := $(firstword $(wildcard /proc/config.gz \ + /lib/modules/$(UNAME_RELEASE)/.config \ @@ -37,5 +37,5 @@ + $(Q)$< --defconfig=.config.running arch/$(SRCARCH)/Kconfig + - PHONY += listnewconfig olddefconfig oldnoconfig savedefconfig defconfig + PHONY += oldnoconfig savedefconfig defconfig ++++++ patches.suse.tar.bz2 ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.suse/no-frame-pointer-select new/patches.suse/no-frame-pointer-select --- old/patches.suse/no-frame-pointer-select 2015-04-24 13:46:53.000000000 +0200 +++ new/patches.suse/no-frame-pointer-select 1970-01-01 01:00:00.000000000 +0100 @@ -1,39 +0,0 @@ -From: Andi Kleen <[email protected]> -Subject: Fix stack unwinder Kconfig -Patch-mainline: never -References: bnc#402518 - -Incremental patch for dwarf2 unwinder - -Fix the Kconfigs that do SELECT FRAME_POINTER to do select UNWIND_INFO -instead. - -Signed-off-by: Andi Kleen <[email protected]> -Acked-by: Jan Beulich <[email protected]> - ---- - lib/Kconfig.debug | 6 ++++-- - 1 file changed, 4 insertions(+), 2 deletions(-) - ---- a/lib/Kconfig.debug 2013-09-17 11:04:43.313514455 -0400 -+++ b/lib/Kconfig.debug 2013-09-17 11:05:18.356935131 -0400 -@@ -1384,7 +1384,8 @@ config FAULT_INJECTION_STACKTRACE_FILTER - depends on FAULT_INJECTION_DEBUG_FS && STACKTRACE_SUPPORT - depends on !X86_64 - select STACKTRACE -- select FRAME_POINTER if !MIPS && !PPC && !S390 && !MICROBLAZE && !ARM_UNWIND && !ARC && !SCORE -+ select FRAME_POINTER if !MIPS && !PPC && !S390 && !MICROBLAZE && !X86 && !ARM_UNWIND && !ARC && !SCORE -+ select UNWIND_INFO if X86 && !FRAME_POINTER - help - Provide stacktrace filter for fault-injection capabilities - -@@ -1394,7 +1395,8 @@ config LATENCYTOP - depends on DEBUG_KERNEL - depends on STACKTRACE_SUPPORT - depends on PROC_FS -- select FRAME_POINTER if !MIPS && !PPC && !S390 && !MICROBLAZE && !ARM_UNWIND && !ARC -+ select FRAME_POINTER if !MIPS && !PPC && !S390 && !MICROBLAZE && !X86 && !ARM_UNWIND && !ARC -+ select UNWIND_INFO if X86 && !FRAME_POINTER - select KALLSYMS - select KALLSYMS_ALL - select STACKTRACE diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.suse/revert-x86-remove-warning-and-warning_symbol-from-struct-stacktrace_ops new/patches.suse/revert-x86-remove-warning-and-warning_symbol-from-struct-stacktrace_ops --- old/patches.suse/revert-x86-remove-warning-and-warning_symbol-from-struct-stacktrace_ops 2015-04-24 13:46:53.000000000 +0200 +++ new/patches.suse/revert-x86-remove-warning-and-warning_symbol-from-struct-stacktrace_ops 2015-05-28 12:49:08.000000000 +0200 @@ -21,19 +21,10 @@ Link: http://lkml.kernel.org/r/[email protected] Signed-off-by: Frederic Weisbecker <[email protected]> Acked-by: Jeff Mahoney <[email protected]> ---- - arch/x86/include/asm/stacktrace.h | 3 --- - arch/x86/kernel/cpu/perf_event.c | 13 ------------- - arch/x86/kernel/dumpstack.c | 16 ---------------- - arch/x86/kernel/stacktrace.c | 13 ------------- - arch/x86/oprofile/backtrace.c | 13 ------------- - 5 files changed, 0 insertions(+), 58 deletions(-) -diff --git a/arch/x86/include/asm/stacktrace.h b/arch/x86/include/asm/stacktrace.h -index d7e89c8..70bbe39 100644 --- a/arch/x86/include/asm/stacktrace.h +++ b/arch/x86/include/asm/stacktrace.h -@@ -37,6 +37,9 @@ +@@ -37,6 +37,9 @@ print_context_stack_bp(struct thread_inf /* Generic stack tracer with callbacks */ struct stacktrace_ops { @@ -43,11 +34,9 @@ void (*address)(void *data, unsigned long address, int reliable); /* On negative return stop dumping */ int (*stack)(void *data, char *name); -diff --git a/arch/x86/kernel/cpu/perf_event.c b/arch/x86/kernel/cpu/perf_event.c -index 0de6b2b..3a0338b 100644 --- a/arch/x86/kernel/cpu/perf_event.c +++ b/arch/x86/kernel/cpu/perf_event.c -@@ -1773,6 +1773,17 @@ +@@ -2072,6 +2072,17 @@ void arch_perf_update_userpage(struct pe * callchain support */ @@ -65,7 +54,7 @@ static int backtrace_stack(void *data, char *name) { return 0; -@@ -1786,6 +1797,8 @@ +@@ -2085,6 +2096,8 @@ static void backtrace_address(void *data } static const struct stacktrace_ops backtrace_ops = { @@ -74,11 +63,9 @@ .stack = backtrace_stack, .address = backtrace_address, .walk_stack = print_context_stack_bp, -diff --git a/arch/x86/kernel/dumpstack.c b/arch/x86/kernel/dumpstack.c -index e2a3f06..f478ff6 100644 --- a/arch/x86/kernel/dumpstack.c +++ b/arch/x86/kernel/dumpstack.c -@@ -135,6 +135,20 @@ +@@ -145,6 +145,20 @@ print_context_stack_bp(struct thread_inf } EXPORT_SYMBOL_GPL(print_context_stack_bp); @@ -99,7 +86,7 @@ static int print_trace_stack(void *data, char *name) { printk("%s <%s> ", (char *)data, name); -@@ -152,6 +166,8 @@ +@@ -161,6 +175,8 @@ static void print_trace_address(void *da } static const struct stacktrace_ops print_trace_ops = { @@ -108,8 +95,6 @@ .stack = print_trace_stack, .address = print_trace_address, .walk_stack = print_context_stack, -diff --git a/arch/x86/kernel/stacktrace.c b/arch/x86/kernel/stacktrace.c -index 6515733..55d9bc0 100644 --- a/arch/x86/kernel/stacktrace.c +++ b/arch/x86/kernel/stacktrace.c @@ -9,6 +9,15 @@ @@ -128,7 +113,7 @@ static int save_stack_stack(void *data, char *name) { return 0; -@@ -44,12 +53,16 @@ +@@ -44,12 +53,16 @@ save_stack_address_nosched(void *data, u } static const struct stacktrace_ops save_stack_ops = { @@ -145,11 +130,9 @@ .stack = save_stack_stack, .address = save_stack_address_nosched, .walk_stack = print_context_stack, -diff --git a/arch/x86/oprofile/backtrace.c b/arch/x86/oprofile/backtrace.c -index 2d49d4e..a5b64ab 100644 --- a/arch/x86/oprofile/backtrace.c +++ b/arch/x86/oprofile/backtrace.c -@@ -16,6 +16,17 @@ +@@ -17,6 +17,17 @@ #include <asm/ptrace.h> #include <asm/stacktrace.h> @@ -167,7 +150,7 @@ static int backtrace_stack(void *data, char *name) { /* Yes, we want all stacks */ -@@ -31,6 +42,8 @@ +@@ -32,6 +43,8 @@ static void backtrace_address(void *data } static struct stacktrace_ops backtrace_ops = { @@ -176,4 +159,3 @@ .stack = backtrace_stack, .address = backtrace_address, .walk_stack = print_context_stack, - 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-04-24 13:46:53.000000000 +0200 +++ new/patches.suse/scsi-netlink-ml 2015-05-28 12:49:08.000000000 +0200 @@ -18,9 +18,9 @@ --- a/drivers/scsi/scsi_error.c +++ b/drivers/scsi/scsi_error.c @@ -25,6 +25,8 @@ - #include <linux/blkdev.h> #include <linux/delay.h> #include <linux/jiffies.h> + #include <asm/unaligned.h> +#include <linux/netlink.h> +#include <net/netlink.h> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.suse/sd_init.mark_majors_busy.patch new/patches.suse/sd_init.mark_majors_busy.patch --- old/patches.suse/sd_init.mark_majors_busy.patch 2015-04-24 13:46:53.000000000 +0200 +++ new/patches.suse/sd_init.mark_majors_busy.patch 2015-05-28 12:49:08.000000000 +0200 @@ -68,7 +68,7 @@ sdev_printk(KERN_WARNING, sdp, "sd_probe: memory exhausted.\n"); goto out_put; @@ -2806,6 +2812,42 @@ done: - return ret; + return sd_start_stop_device(sdkp, 1); } +/* 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-04-24 13:46:53.000000000 +0200 +++ new/patches.suse/stack-unwind 2015-05-28 12:49:08.000000000 +0200 @@ -4,6 +4,8 @@ This includes reverting f1883f86dea84fe47a71a39fc1afccc005915ed8. +Update Sep 18 2008 andi: +- suppress FRAME_POINTER select Update Jan 17 2009 jeffm: - Something in 2.6.29-rc1 tweaked the frame pointer code somehow, so I fixed that up. @@ -11,40 +13,19 @@ - fix after upstream commit 9e565292270a2d55524be38835104c564ac8f795 Update Sep 15 2011 jbeulich: - add support for DW_CFA_def_cfa_expression (needed by x86-64) +Update Nov 24 2011 jeffm: +- cfi_ignore takes more arguments Update Aug 01 2012 jbeulich: - mark unwind section start/end symbols as always relative +Update Apr 28 2014 jeffm: +- remove ix86 check for vdso32 compat range Update Jun 24 2014 jeffm: - VSYSCALL_START / END replaced upstream with VSYSCALL_ADDR / VSYSCALL_ADDR + PAGE_SIZE ---- - Makefile | 5 - arch/x86/Kconfig | 2 - arch/x86/Makefile | 2 - arch/x86/include/asm/dwarf2.h | 3 - arch/x86/include/asm/stacktrace.h | 4 - arch/x86/include/asm/switch_to.h | 10 - arch/x86/include/asm/unwind.h | 164 +++ - arch/x86/kernel/dumpstack.c | 88 ++ - arch/x86/kernel/dumpstack_32.c | 4 - arch/x86/kernel/dumpstack_64.c | 7 - arch/x86/kernel/entry_32.S | 35 - arch/x86/kernel/entry_64.S | 34 - arch/x86/kernel/vmlinux.lds.S | 2 - arch/x86/tools/relocs.c | 1 - include/asm-generic/vmlinux.lds.h | 22 - include/linux/module.h | 3 - include/linux/unwind.h | 135 +++ - init/main.c | 3 - kernel/Makefile | 1 - kernel/module.c | 32 - kernel/unwind.c | 1641 ++++++++++++++++++++++++++++++++++++++ - lib/Kconfig.debug | 18 - 22 files changed, 2213 insertions(+), 3 deletions(-) - --- a/Makefile +++ b/Makefile -@@ -711,6 +711,11 @@ endif +@@ -727,6 +727,11 @@ endif KBUILD_CFLAGS += $(call cc-option, -fno-var-tracking-assignments) @@ -58,7 +39,7 @@ KBUILD_CFLAGS += $(call cc-option, -gsplit-dwarf, -g) --- a/arch/x86/Kconfig +++ b/arch/x86/Kconfig -@@ -538,7 +538,7 @@ config X86_32_IRIS +@@ -627,7 +627,7 @@ config X86_32_IRIS config SCHED_OMIT_FRAME_POINTER def_bool y prompt "Single-depth WCHAN output" @@ -69,7 +50,7 @@ is disabled then wchan values will recurse back to the --- a/arch/x86/Makefile +++ b/arch/x86/Makefile -@@ -169,7 +169,9 @@ KBUILD_CFLAGS += -pipe +@@ -163,7 +163,9 @@ KBUILD_CFLAGS += -pipe # Workaround for a gcc prelease that unfortunately was shipped in a suse release KBUILD_CFLAGS += -Wno-sign-compare # @@ -91,9 +72,18 @@ /* * Emit CFI data in .debug_frame sections, not .eh_frame sections. * The latter we currently just discard since we don't do DWARF +@@ -53,7 +54,7 @@ + * Due to the structure of pre-exisiting code, don't use assembler line + * comment character # to ignore the arguments. Instead, use a dummy macro. + */ +-.macro cfi_ignore a=0, b=0, c=0, d=0 ++.macro cfi_ignore a=0, b=0, c=0, d=0, e=0, f=0, g=0, h=0 + .endm + + #define CFI_STARTPROC cfi_ignore --- a/arch/x86/include/asm/stacktrace.h +++ b/arch/x86/include/asm/stacktrace.h -@@ -89,6 +89,10 @@ extern void +@@ -92,6 +92,10 @@ extern void show_stack_log_lvl(struct task_struct *task, struct pt_regs *regs, unsigned long *sp, unsigned long bp, char *log_lvl); @@ -106,7 +96,7 @@ /* The form of the top of the frame on the stack */ --- a/arch/x86/include/asm/switch_to.h +++ b/arch/x86/include/asm/switch_to.h -@@ -100,16 +100,26 @@ do { +@@ -100,6 +100,15 @@ do { \ #define __switch_canary_iparam #endif /* CC_STACKPROTECTOR */ @@ -122,10 +112,7 @@ /* * There is no need to save or restore flags, because flags are always * clean in kernel mode, with the possible exception of IOPL. Kernel IOPL - * has no effect. - */ - #define switch_to(prev, next, last) \ - asm volatile(SAVE_CONTEXT \ +@@ -110,6 +119,7 @@ do { \ "movq %%rsp,%P[threadrsp](%[prev])\n\t" /* save RSP */ \ "movq %P[threadrsp](%[next]),%%rsp\n\t" /* restore RSP */ \ "call __switch_to\n\t" \ @@ -133,9 +120,9 @@ "movq "__percpu_arg([current_task])",%%rsi\n\t" \ __switch_canary \ "movq %P[thread_info](%%rsi),%%r8\n\t" \ ---- /dev/null +--- a/dev/null +++ b/arch/x86/include/asm/unwind.h -@@ -0,0 +1,164 @@ +@@ -0,0 +1,159 @@ +#ifndef _ASM_X86_UNWIND_H +#define _ASM_X86_UNWIND_H + @@ -204,8 +191,6 @@ + +#else /* X86_32 */ + -+#include <asm/fixmap.h> -+ +#define FRAME_RETADDR_OFFSET 4 + +#define UNW_REGISTER_INFO \ @@ -231,7 +216,7 @@ +#ifdef CONFIG_X86_64 + info->regs = *regs; +#else -+ if (user_mode_vm(regs)) ++ if (user_mode(regs)) + info->regs = *regs; + else { + memcpy(&info->regs, regs, offsetof(struct pt_regs, sp)); @@ -271,17 +256,14 @@ + +static inline int arch_unw_user_mode(/*const*/ struct unwind_frame_info *info) +{ -+#ifdef CONFIG_X86_64 + return user_mode(&info->regs) ++#ifdef CONFIG_X86_64 + || (long)info->regs.ip >= 0 + || (info->regs.ip >= VSYSCALL_ADDR && + info->regs.ip < VSYSCALL_ADDR + PAGE_SIZE) + || (long)info->regs.sp >= 0; +#else -+ return user_mode_vm(&info->regs) + || info->regs.ip < PAGE_OFFSET -+ || (info->regs.ip >= __fix_to_virt(FIX_VDSO) -+ && info->regs.ip < __fix_to_virt(FIX_VDSO) + PAGE_SIZE) + || info->regs.sp < PAGE_OFFSET; +#endif +} @@ -320,8 +302,8 @@ +#endif static int die_counter; - static void printk_stack_address(unsigned long address, int reliable) -@@ -70,6 +76,70 @@ print_ftrace_graph_addr(unsigned long ad + static void printk_stack_address(unsigned long address, int reliable, +@@ -72,6 +78,70 @@ print_ftrace_graph_addr(unsigned long ad { } #endif @@ -392,7 +374,7 @@ /* * x86-64 can have up to three kernel stacks: * process stack -@@ -347,3 +417,21 @@ static int __init code_bytes_setup(char +@@ -367,3 +437,21 @@ static int __init code_bytes_setup(char return 1; } __setup("code_bytes=", code_bytes_setup); @@ -437,7 +419,7 @@ #include <asm/stacktrace.h> -@@ -164,6 +165,12 @@ void dump_trace(struct task_struct *task +@@ -163,6 +164,12 @@ void dump_trace(struct task_struct *task if (!task) task = current; @@ -496,7 +478,7 @@ pushl_cfi %eax --- a/arch/x86/kernel/entry_64.S +++ b/arch/x86/kernel/entry_64.S -@@ -1202,6 +1202,40 @@ ENTRY(do_softirq_own_stack) +@@ -1140,6 +1140,40 @@ ENTRY(do_softirq_own_stack) CFI_ENDPROC END(do_softirq_own_stack) @@ -539,7 +521,7 @@ --- a/arch/x86/kernel/vmlinux.lds.S +++ b/arch/x86/kernel/vmlinux.lds.S -@@ -330,7 +330,9 @@ SECTIONS +@@ -332,7 +332,9 @@ SECTIONS /* Sections to be discarded */ DISCARDS @@ -551,7 +533,7 @@ --- a/arch/x86/tools/relocs.c +++ b/arch/x86/tools/relocs.c -@@ -55,6 +55,7 @@ static const char * const sym_regex_kern +@@ -58,6 +58,7 @@ static const char * const sym_regex_kern "(__iommu_table|__apicdrivers|__smp_locks)(|_end)|" "__(start|end)_pci_.*|" "__(start|end)_builtin_fw|" @@ -561,7 +543,7 @@ "__(start|stop)___param|" --- a/include/asm-generic/vmlinux.lds.h +++ b/include/asm-generic/vmlinux.lds.h -@@ -361,6 +361,8 @@ +@@ -379,6 +379,8 @@ MEM_KEEP(exit.rodata) \ } \ \ @@ -570,7 +552,7 @@ /* Built-in module parameters. */ \ __param : AT(ADDR(__param) - LOAD_OFFSET) { \ VMLINUX_SYMBOL(__start___param) = .; \ -@@ -806,3 +808,23 @@ +@@ -828,3 +830,23 @@ BSS(bss_align) \ . = ALIGN(stop_align); \ VMLINUX_SYMBOL(__bss_stop) = .; @@ -596,7 +578,7 @@ +#endif --- a/include/linux/module.h +++ b/include/linux/module.h -@@ -298,6 +298,9 @@ struct module { +@@ -284,6 +284,9 @@ struct module { /* Size of RO sections of the module (text+rodata) */ unsigned int init_ro_size, core_ro_size; @@ -606,7 +588,7 @@ /* Arch-specific module values */ struct mod_arch_specific arch; ---- /dev/null +--- a/dev/null +++ b/include/linux/unwind.h @@ -0,0 +1,135 @@ +#ifndef _LINUX_UNWIND_H @@ -754,7 +736,7 @@ #include <linux/buffer_head.h> #include <linux/page_ext.h> #include <linux/debug_locks.h> -@@ -507,6 +508,7 @@ asmlinkage __visible void __init start_k +@@ -498,6 +499,7 @@ asmlinkage __visible void __init start_k * Need to run as early as possible, to initialize the * lockdep hash: */ @@ -762,7 +744,7 @@ lockdep_init(); set_task_stack_end_magic(&init_task); smp_setup_processor_id(); -@@ -531,6 +533,7 @@ asmlinkage __visible void __init start_k +@@ -523,6 +525,7 @@ asmlinkage __visible void __init start_k setup_arch(&command_line); mm_init_cpumask(&init_mm); setup_command_line(command_line); @@ -772,7 +754,7 @@ smp_prepare_boot_cpu(); /* arch-specific boot-cpu hooks */ --- a/kernel/Makefile +++ b/kernel/Makefile -@@ -47,6 +47,7 @@ obj-$(CONFIG_SYSTEM_TRUSTED_KEYRING) += +@@ -49,6 +49,7 @@ obj-$(CONFIG_SYSTEM_TRUSTED_KEYRING) += obj-$(CONFIG_MODULES) += module.o obj-$(CONFIG_MODULE_SIG) += module_signing.o obj-$(CONFIG_KALLSYMS) += kallsyms.o @@ -782,7 +764,7 @@ obj-$(CONFIG_BACKTRACE_SELF_TEST) += backtracetest.o --- a/kernel/module.c +++ b/kernel/module.c -@@ -46,6 +46,7 @@ +@@ -45,6 +45,7 @@ #include <linux/device.h> #include <linux/string.h> #include <linux/mutex.h> @@ -790,7 +772,7 @@ #include <linux/rculist.h> #include <asm/uaccess.h> #include <asm/cacheflush.h> -@@ -197,7 +198,7 @@ struct load_info { +@@ -195,7 +196,7 @@ struct load_info { unsigned int num_debug; bool sig_ok; struct { @@ -799,7 +781,7 @@ } index; }; -@@ -609,6 +610,27 @@ bool is_module_percpu_address(unsigned l +@@ -607,6 +608,27 @@ bool is_module_percpu_address(unsigned l #endif /* CONFIG_SMP */ @@ -827,7 +809,7 @@ #define MODINFO_ATTR(field) \ static void setup_modinfo_##field(struct module *mod, const char *s) \ { \ -@@ -1928,6 +1950,8 @@ static void free_module(struct module *m +@@ -1919,6 +1941,8 @@ static void free_module(struct module *m /* Remove dynamic debug info */ ddebug_remove_module(mod->name); @@ -836,7 +818,7 @@ /* Arch-specific cleanup. */ module_arch_cleanup(mod); -@@ -2738,6 +2762,8 @@ static struct module *setup_load_info(st +@@ -2752,6 +2776,8 @@ static struct module *setup_load_info(st info->index.pcpu = find_pcpusec(info); @@ -845,7 +827,7 @@ /* Check module struct version now, before we try to use module. */ if (!check_modstruct_version(info->sechdrs, info->index.vers, mod)) return ERR_PTR(-ENOEXEC); -@@ -3153,6 +3179,7 @@ static int do_init_module(struct module +@@ -3194,6 +3220,7 @@ static noinline int do_init_module(struc /* Drop initial reference. */ module_put(mod); trim_init_extable(mod); @@ -853,7 +835,7 @@ #ifdef CONFIG_KALLSYMS mod->num_symtab = mod->core_num_syms; mod->symtab = mod->core_symtab; -@@ -3375,6 +3402,9 @@ static int load_module(struct load_info +@@ -3436,6 +3463,9 @@ static int load_module(struct load_info if (err < 0) goto bug_cleanup; @@ -863,7 +845,7 @@ /* Get rid of temporary copy. */ free_copy(info); ---- /dev/null +--- a/dev/null +++ b/kernel/unwind.c @@ -0,0 +1,1652 @@ +/* @@ -2520,7 +2502,7 @@ +EXPORT_SYMBOL_GPL(unwind_to_user); --- a/lib/Kconfig.debug +++ b/lib/Kconfig.debug -@@ -26,6 +26,24 @@ config DEFAULT_MESSAGE_LOGLEVEL +@@ -26,6 +26,24 @@ config MESSAGE_LOGLEVEL_DEFAULT that are auditing their logs closely may want to set it to a lower priority. @@ -2545,3 +2527,23 @@ config BOOT_PRINTK_DELAY bool "Delay each boot printk message by N milliseconds" depends on DEBUG_KERNEL && PRINTK && GENERIC_CALIBRATE_DELAY +@@ -1486,7 +1504,8 @@ config FAULT_INJECTION_STACKTRACE_FILTER + depends on FAULT_INJECTION_DEBUG_FS && STACKTRACE_SUPPORT + depends on !X86_64 + select STACKTRACE +- select FRAME_POINTER if !MIPS && !PPC && !S390 && !MICROBLAZE && !ARM_UNWIND && !ARC && !SCORE ++ select FRAME_POINTER if !MIPS && !PPC && !S390 && !MICROBLAZE && !X86 && !ARM_UNWIND && !ARC && !SCORE ++ select UNWIND_INFO if X86 && !FRAME_POINTER + help + Provide stacktrace filter for fault-injection capabilities + +@@ -1496,7 +1515,8 @@ config LATENCYTOP + depends on DEBUG_KERNEL + depends on STACKTRACE_SUPPORT + depends on PROC_FS +- select FRAME_POINTER if !MIPS && !PPC && !S390 && !MICROBLAZE && !ARM_UNWIND && !ARC ++ select FRAME_POINTER if !MIPS && !PPC && !S390 && !MICROBLAZE && !X86 && !ARM_UNWIND && !ARC ++ select UNWIND_INFO if X86 && !FRAME_POINTER + select KALLSYMS + select KALLSYMS_ALL + select STACKTRACE diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.suse/unwind-remove-check-for-vdso32-compat-range new/patches.suse/unwind-remove-check-for-vdso32-compat-range --- old/patches.suse/unwind-remove-check-for-vdso32-compat-range 2015-04-24 13:46:53.000000000 +0200 +++ new/patches.suse/unwind-remove-check-for-vdso32-compat-range 1970-01-01 01:00:00.000000000 +0100 @@ -1,37 +0,0 @@ -From: Jeff Mahoney <[email protected]> -Subject: unwind: remove check for vdso32 compat range -Patch-mainline: depends on unwind patchset - -Commit b0b49f2673f (x86, vdso: Remove compat vdso support) removed -the FIX_VDSO macro defining the vdso area. - -Without the compat mode in the fixed range, the vdso pointer will always -be in the userspace range. The special check can simply be removed. - -Reviewed-by: Jan Beulich <[email protected]> -Signed-off-by: Jeff Mahoney <[email protected]> ---- - arch/x86/include/asm/elf.h | 1 + - arch/x86/include/asm/unwind.h | 18 +++++++++++++++--- - arch/x86/vdso/vdso32-setup.c | 2 +- - 3 files changed, 17 insertions(+), 4 deletions(-) - ---- a/arch/x86/include/asm/unwind.h -+++ b/arch/x86/include/asm/unwind.h -@@ -66,7 +66,6 @@ struct unwind_frame_info - - #else /* X86_32 */ - --#include <asm/fixmap.h> - - #define FRAME_RETADDR_OFFSET 4 - -@@ -141,8 +154,6 @@ static inline int arch_unw_user_mode(/*c - #else - return user_mode_vm(&info->regs) - || info->regs.ip < PAGE_OFFSET -- || (info->regs.ip >= __fix_to_virt(FIX_VDSO) -- && info->regs.ip < __fix_to_virt(FIX_VDSO) + PAGE_SIZE) - || info->regs.sp < PAGE_OFFSET; - #endif - } ++++++ patches.xen.tar.bz2 ++++++ ++++ 67384 lines of diff (skipped) ++++++ series.conf ++++++ --- /var/tmp/diff_new_pack.cIwARF/_old 2015-07-14 17:21:14.000000000 +0200 +++ /var/tmp/diff_new_pack.cIwARF/_new 2015-07-14 17:21:14.000000000 +0200 @@ -27,12 +27,7 @@ # DO NOT MODIFY THEM! # Send separate patches upstream if you find a problem... ######################################################## - patches.kernel.org/patch-4.0.1 - patches.kernel.org/patch-4.0.1-2 - patches.kernel.org/patch-4.0.2-3 - patches.kernel.org/patch-4.0.3-4 - patches.kernel.org/revert-xen-xenbus-Update-xenbus-event-channel-on-res.patch - patches.kernel.org/patch-4.0.4-5 + patches.kernel.org/patch-4.1.1 ######################################################## # Build fixes that apply to the vanilla kernel too. @@ -168,14 +163,11 @@ patches.arch/arm-exynos-dwmmc-modalias.patch patches.arch/arm64-0001-usb-Add-support-for-Synopsis-H20AHB-EHCI-host-contro.patch patches.arch/arm64-0002-usb-fix-hcd-h20ahb-driver-depends.patch - patches.arch/arm64-0003-KVM-ARM-Add-arm-gic-400-compatible-support.patch 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 - patches.arch/arm64-0011-Enable-CONFIG_COMPAT-also-for-64k-page-size.patch - patches.arch/arm64-0012-fix-mmap2-compat-syscall.patch # Generic PCIe host bridge, necessary for QEMU and Seattle, upstreaming wip patches.arch/arm64-gpex-0001-device-core-Introduce-per-device-MSI-domain-pointer.patch @@ -187,14 +179,8 @@ patches.arch/arm64-gpex-0007-PCI-MSI-Drop-domain-field-from-msi_controller.patch 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 + patches.arch/arm64-Don-t-report-clear-pmds-and-puds-as-huge.patch - # DMA Cache coherency fixups with PCIe, necessary for m400, all are backports from 4.1 - patches.arch/arm64-pci-0001-of-pci-Add-of_pci_dma_configure-to-update-DMA-config.patch - patches.arch/arm64-pci-0002-PCI-Update-DMA-configuration-from-DT.patch - patches.arch/arm64-pci-0003-PCI-Add-helper-functions-pci_get-put-_host_bridge_de.patch - patches.arch/arm64-pci-0004-of-iommu-Add-ptr-to-OF-node-arg-to-of_iommu_configur.patch - patches.arch/arm64-pci-0005-of-Move-of_dma_configure-to-device.c-to-help-re-use.patch - patches.arch/arm64-pci-0006-of-Fix-size-when-dma-range-is-not-used.patch ######################################################## # S/390 @@ -258,6 +244,7 @@ # NFS ######################################################## + patches.fixes/0001-NFSv4-When-returning-a-delegation-don-t-reclaim-an-i.patch ######################################################## # lockd + statd @@ -280,14 +267,6 @@ # btrfs ######################################################## patches.suse/btrfs-use-correct-device-for-maps.patch - patches.fixes/btrfs-revert-delete-chunk-allocation.patch - patches.fixes/btrfs-0001-send-add-missing-check-for-dead-clone-root.patch - patches.fixes/btrfs-0002-send-don-t-leave-without-decrementing-clone-ro.patch - patches.fixes/btrfs-0003-incorrect-handling-for-fiemap_fill_next_extent.patch - patches.fixes/btrfs-0004-cleanup-orphans-while-looking-up-default-subvo.patch - patches.fixes/btrfs-0005-fix-range-cloning-when-same-inode-used-as-sour.patch - patches.fixes/btrfs-0006-fix-uninit-variable-in-clone-ioctl.patch - patches.fixes/btrfs-0007-fix-regression-in-raid-level-conversion.patch ######################################################## # Reiserfs Patches @@ -372,7 +351,7 @@ # DRM/Video ######################################################## +jeffm patches.fixes/nouveau-fix-race-with-fence-signaling - patches.fixes/drm-nouveau-bios-fix-fetching-from-acpi-on-certain-s + patches.fixes/drm-i915-Ensure-cache-flushes-prior-to-doing-CS-flip.patch ######################################################## # video4linux @@ -400,6 +379,8 @@ ######################################################## # PCI and PCI hotplug ######################################################## + patches.fixes/x86-PCI-Use-host-bridge-_CRS-info-on-Foxconn-K8M890 + patches.fixes/x86-PCI-Use-host-bridge-_CRS-info-on-systems-with-32 ######################################################## # sysfs / driver core @@ -489,12 +470,9 @@ # Other patches for debugging ######################################################## patches.suse/crasher-26.diff - patches.suse/stack-unwind patches.suse/revert-x86-remove-warning-and-warning_symbol-from-struct-stacktrace_ops - patches.suse/unwind-remove-check-for-vdso32-compat-range - patches.suse/no-frame-pointer-select + patches.suse/stack-unwind patches.arch/x86_64-unwind-annotations - patches.arch/stack-unwind-cfi_ignore-takes-more-arguments ######################################################## # Kdump @@ -618,13 +596,12 @@ patches.xen/xen3-patch-3.18 patches.xen/xen3-patch-3.19 patches.xen/xen3-patch-4.0 + patches.xen/xen3-patch-4.1 # ports of other patches patches.xen/xen3-stack-unwind - patches.xen/xen3-x86_64-unwind-annotations # bugfixes and enhancements - patches.xen/xen-hypercall-symbols patches.xen/xen-sys-suspend patches.xen/xen-ipi-per-cpu-irq patches.xen/xen-virq-per-cpu-irq @@ -679,3 +656,4 @@ patches.xen/xen-x86_64-note-init-p2m patches.xen/xen-x86_64-unmapped-initrd patches.xen/xen-x86_64-vread-pvclock + patches.xen/xen-x86_64-m2p-strict ++++++ source-timestamp ++++++ --- /var/tmp/diff_new_pack.cIwARF/_old 2015-07-14 17:21:14.000000000 +0200 +++ /var/tmp/diff_new_pack.cIwARF/_new 2015-07-14 17:21:14.000000000 +0200 @@ -1,3 +1,3 @@ -2015-06-18 17:11:06 +0200 -GIT Revision: 56152db3aa548241f14534a7e0d3c2acaec5dddc +2015-07-08 16:23:40 +0200 +GIT Revision: cac28b3467005d5da50bc3c581edd266126f663e GIT Branch: stable
