This commit is contained in:
Dan Ziemba 2015-04-13 00:34:31 -04:00
parent 93b3682934
commit fcc0dd3643
4 changed files with 130 additions and 2 deletions

View File

@ -1,6 +1,6 @@
pkgbase = linux-vfio
pkgver = 3.19.3
pkgrel = 1
pkgrel = 3
url = http://www.kernel.org/
arch = i686
arch = x86_64
@ -19,6 +19,8 @@ pkgbase = linux-vfio
source = config.x86_64
source = linux.preset
source = change-default-console-loglevel.patch
source = 0001-fix-btrfs-mount-deadlock.patch
source = 0001-fixup-drm.patch
source = override_for_missing_acs_capabilities.patch
source = i915_317.patch
sha256sums = be42511fe5321012bb4a2009167ce56a9e5fe362b4af43e8c371b3666859806c
@ -29,6 +31,8 @@ pkgbase = linux-vfio
sha256sums = 59830f47c1be39f874640d762dca55f972aca549a7a65ba2f1dac184251dabb2
sha256sums = f0d90e756f14533ee67afda280500511a62465b4f76adcc5effa95a40045179c
sha256sums = 1256b241cd477b265a3c2d64bdc19ffe3c9bbcee82ea3994c590c2c76e767d99
sha256sums = 5967cf53cb9db9f070e8f346c3d7045748e4823a7fe2ee330acd18c9d02bbb77
sha256sums = 911872ef7000af471e649aaeb3490094a0b4c1514ca1024757ca2e90ac1d2a3d
sha256sums = 7320b4abc2918cfb0cb084330a7470887e9a9cfb6496381460bcf4085eb62e0f
sha256sums = f86ce528b63f198b84c4d8d92d35329aa4000d462217dc2db03bac5eb693cf19

View File

@ -0,0 +1,43 @@
From 9c4f61f01d269815bb7c37be3ede59c5587747c6 Mon Sep 17 00:00:00 2001
From: David Sterba <dsterba@suse.cz>
Date: Fri, 2 Jan 2015 19:12:57 +0100
Subject: btrfs: simplify insert_orphan_item
We can search and add the orphan item in one go,
btrfs_insert_orphan_item will find out if the item already exists.
Signed-off-by: David Sterba <dsterba@suse.cz>
diff --git a/fs/btrfs/tree-log.c b/fs/btrfs/tree-log.c
index 5be45c1..25a1c36 100644
--- a/fs/btrfs/tree-log.c
+++ b/fs/btrfs/tree-log.c
@@ -1254,21 +1254,13 @@ out:
}
static int insert_orphan_item(struct btrfs_trans_handle *trans,
- struct btrfs_root *root, u64 offset)
+ struct btrfs_root *root, u64 ino)
{
int ret;
- struct btrfs_path *path;
-
- path = btrfs_alloc_path();
- if (!path)
- return -ENOMEM;
- ret = btrfs_find_item(root, path, BTRFS_ORPHAN_OBJECTID,
- offset, BTRFS_ORPHAN_ITEM_KEY, NULL);
- if (ret > 0)
- ret = btrfs_insert_orphan_item(trans, root, offset);
-
- btrfs_free_path(path);
+ ret = btrfs_insert_orphan_item(trans, root, ino);
+ if (ret == -EEXIST)
+ ret = 0;
return ret;
}
--
cgit v0.10.2

70
0001-fixup-drm.patch Normal file
View File

@ -0,0 +1,70 @@
From 8218c3f4df3bb1c637c17552405039a6dd3c1ee1 Mon Sep 17 00:00:00 2001
From: Daniel Vetter <daniel.vetter@ffwll.ch>
Date: Fri, 27 Feb 2015 12:58:13 +0100
Subject: drm: Fixup racy refcounting in plane_force_disable
Originally it was impossible to be dropping the last refcount in this
function since there was always one around still from the idr. But in
commit 83f45fc360c8e16a330474860ebda872d1384c8c
Author: Daniel Vetter <daniel.vetter@ffwll.ch>
Date: Wed Aug 6 09:10:18 2014 +0200
drm: Don't grab an fb reference for the idr
we've switched to weak references, broke that assumption but forgot to
fix it up.
Since we still force-disable planes it's only possible to hit this
when racing multiple rmfb with fbdev restoring or similar evil things.
As long as userspace is nice it's impossible to hit the BUG_ON.
But the BUG_ON would most likely be hit from fbdev code, which usually
invovles the console_lock besides all modeset locks. So very likely
we'd never get the bug reports if this was hit in the wild, hence
better be safe than sorry and backport.
Spotted by Matt Roper while reviewing other patches.
[airlied: pull this back into 4.0 - the oops happens there]
Cc: stable@vger.kernel.org
Cc: Matt Roper <matthew.d.roper@intel.com>
Reviewed-by: Matt Roper <matthew.d.roper@intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
diff --git a/drivers/gpu/drm/drm_crtc.c b/drivers/gpu/drm/drm_crtc.c
index f6d04c7..679b10e 100644
--- a/drivers/gpu/drm/drm_crtc.c
+++ b/drivers/gpu/drm/drm_crtc.c
@@ -525,17 +525,6 @@ void drm_framebuffer_reference(struct drm_framebuffer *fb)
}
EXPORT_SYMBOL(drm_framebuffer_reference);
-static void drm_framebuffer_free_bug(struct kref *kref)
-{
- BUG();
-}
-
-static void __drm_framebuffer_unreference(struct drm_framebuffer *fb)
-{
- DRM_DEBUG("%p: FB ID: %d (%d)\n", fb, fb->base.id, atomic_read(&fb->refcount.refcount));
- kref_put(&fb->refcount, drm_framebuffer_free_bug);
-}
-
/**
* drm_framebuffer_unregister_private - unregister a private fb from the lookup idr
* @fb: fb to unregister
@@ -1320,7 +1309,7 @@ void drm_plane_force_disable(struct drm_plane *plane)
return;
}
/* disconnect the plane from the fb and crtc: */
- __drm_framebuffer_unreference(plane->old_fb);
+ drm_framebuffer_unreference(plane->old_fb);
plane->old_fb = NULL;
plane->fb = NULL;
plane->crtc = NULL;
--
cgit v0.10.2

View File

@ -3,7 +3,7 @@
pkgbase=linux-vfio
_srcname=linux-3.19
pkgver=3.19.3
pkgrel=1
pkgrel=3
arch=('i686' 'x86_64')
url="http://www.kernel.org/"
license=('GPL2')
@ -18,6 +18,8 @@ source=("https://www.kernel.org/pub/linux/kernel/v3.x/${_srcname}.tar.xz"
# standard config files for mkinitcpio ramdisk
'linux.preset'
'change-default-console-loglevel.patch'
'0001-fix-btrfs-mount-deadlock.patch'
'0001-fixup-drm.patch'
'override_for_missing_acs_capabilities.patch'
'i915_317.patch'
)
@ -29,6 +31,8 @@ sha256sums=('be42511fe5321012bb4a2009167ce56a9e5fe362b4af43e8c371b3666859806c'
'59830f47c1be39f874640d762dca55f972aca549a7a65ba2f1dac184251dabb2'
'f0d90e756f14533ee67afda280500511a62465b4f76adcc5effa95a40045179c'
'1256b241cd477b265a3c2d64bdc19ffe3c9bbcee82ea3994c590c2c76e767d99'
'5967cf53cb9db9f070e8f346c3d7045748e4823a7fe2ee330acd18c9d02bbb77'
'911872ef7000af471e649aaeb3490094a0b4c1514ca1024757ca2e90ac1d2a3d'
'7320b4abc2918cfb0cb084330a7470887e9a9cfb6496381460bcf4085eb62e0f'
'f86ce528b63f198b84c4d8d92d35329aa4000d462217dc2db03bac5eb693cf19')
validpgpkeys=(
@ -51,6 +55,13 @@ prepare() {
# remove this when a Kconfig knob is made available by upstream
# (relevant patch sent upstream: https://lkml.org/lkml/2011/7/26/227)
patch -p1 -i "${srcdir}/change-default-console-loglevel.patch"
# fix #44495 and #44385 deadlock on btrfs mount
# https://btrfs.wiki.kernel.org/index.php/Gotchas
patch -Np1 -i "${srcdir}/0001-fix-btrfs-mount-deadlock.patch"
# fix #44491
patch -Np1 -i "${srcdir}/0001-fixup-drm.patch"
if [ "${CARCH}" = "x86_64" ]; then
cat "${srcdir}/config.x86_64" > ./.config