Am 18.04.2014 22:38, schrieb Tejun Heo: > Hello, > > Sorry about the long delay. > > On Thu, Apr 03, 2014 at 08:37:49AM +0200, Tobias Powalowski wrote: >> Hi, >> I bisected a X startup crash due to new 3.14 kernel: >> https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/fs/kernfs/file.c?id=9b2db6e1894577d48f4e290381bac6e573593838 >> It's an old intel 810 graphics card which got broken. >> dmesg and xorg.log attached. > Hmm... I'm stumped. The patch shouldn't cause any visible difference > to the userland. I went over it a couple more times and still can't > see how this would make any difference. Can you please do the > followings? > > * Repeat the test on v3.14 with only the patch reverted. If it makes > the problem go away reliably, > > * strace X startup on v3.14 and v3.14 sans the offending patch. > > Thanks! > Hi, attached patch which solves my issue with 3.14.1 interesting part are those4 lines: - if (ops->mmap) - rc = ops->mmap(of, vma); - if (rc) - goto out_put; I built kernel with different parts of the bisection patch reverted. Last I added those reverts and it started working again.
Hope this helps. greetings tpowa -- Tobias Powalowski Archlinux Developer & Package Maintainer (tpowa) http://www.archlinux.org [email protected]
--- linux-3.14/fs/kernfs/file.c.orig 2014-03-31 05:40:15.000000000 +0200
+++ linux-3.14/fs/kernfs/file.c 2014-04-19 08:22:11.754042780 +0200
@@ -458,16 +458,6 @@
const struct kernfs_ops *ops;
int rc;
- /*
- * mmap path and of->mutex are prone to triggering spurious lockdep
- * warnings and we don't want to add spurious locking dependency
- * between the two. Check whether mmap is actually implemented
- * without grabbing @of->mutex by testing HAS_MMAP flag. See the
- * comment in kernfs_file_open() for more details.
- */
- if (!(of->kn->flags & KERNFS_HAS_MMAP))
- return -ENODEV;
-
mutex_lock(&of->mutex);
rc = -ENODEV;
@@ -475,7 +468,10 @@
goto out_unlock;
ops = kernfs_ops(of->kn);
+ if (ops->mmap)
+ rc = ops->mmap(of, vma);
+ if (rc)
+ goto out_put;
- rc = ops->mmap(of, vma);
/*
* PowerPC's pci_mmap of legacy_mem uses shmem_zero_setup()
--- linux-3.14/fs/sysfs/file.c.old 2014-03-31 05:40:15.000000000 +0200
+++ linux-3.14/fs/sysfs/file.c 2014-04-19 11:18:53.296366182 +0200
@@ -141,7 +141,10 @@
{
struct bin_attribute *battr = of->kn->priv;
struct kobject *kobj = of->kn->parent->priv;
-
+
+ if (!battr->mmap)
+ return -ENODEV;
+
return battr->mmap(of->file, kobj, battr, vma);
}
@@ -194,11 +197,6 @@
static const struct kernfs_ops sysfs_bin_kfops_rw = {
.read = sysfs_kf_bin_read,
.write = sysfs_kf_bin_write,
-};
-
-static const struct kernfs_ops sysfs_bin_kfops_mmap = {
- .read = sysfs_kf_bin_read,
- .write = sysfs_kf_bin_write,
.mmap = sysfs_kf_bin_mmap,
};
@@ -234,9 +232,7 @@
} else {
struct bin_attribute *battr = (void *)attr;
- if (battr->mmap)
- ops = &sysfs_bin_kfops_mmap;
- else if (battr->read && battr->write)
+ if ((battr->read && battr->write) || battr->mmap)
ops = &sysfs_bin_kfops_rw;
else if (battr->read)
ops = &sysfs_bin_kfops_ro;
signature.asc
Description: OpenPGP digital signature
_______________________________________________ Intel-gfx mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/intel-gfx
