Bug 23730

Summary: x11-base/nouveau-drm fails on drm_fb_helper.c with 'EINVAL' undeclared
Product: xorg Reporter: Maxim Britov <ungift.ed0>
Component: Driver/nouveauAssignee: Nouveau Project <nouveau>
Status: RESOLVED INVALID QA Contact: Xorg Project Team <xorg-team>
Severity: normal    
Priority: medium    
Version: unspecified   
Hardware: x86-64 (AMD64)   
OS: Linux (All)   
Whiteboard:
i915 platform: i915 features:

Description Maxim Britov 2009-09-05 10:37:26 UTC
I have today on my Gentoo:
In file included from /var/tmp/portage/x11-base/nouveau-drm-99999999/work/master-compat/drivers/gpu/drm/drm_fb_helper.c:30:
include/linux/sysrq.h: In function '__reterr':
include/linux/sysrq.h:66: error: 'EINVAL' undeclared (first use in this function)
include/linux/sysrq.h:66: error: (Each undeclared identifier is reported only once
include/linux/sysrq.h:66: error: for each function it appears in.)


With this patch it compiles fine

--- /master-compat/drivers/gpu/drm/drm_fb_helper.c        2009-09-01 22:50:00.000000000 +0300
+++ master-compat/drivers/gpu/drm/drm_fb_helper.c        2009-09-05 19:46:52.000000000 +0300
@@ -27,6 +27,7 @@
  *      Dave Airlie <airlied@linux.ie>
  *      Jesse Barnes <jesse.barnes@intel.com>
  */
+#include <linux/errno.h>
 #include <linux/sysrq.h>
 #include <linux/fb.h>
 #include "drmP.h"
Comment 1 Pekka Paalanen 2009-09-06 00:20:16 UTC
Odd, no-one else has hit this. For me it works with both out-of-tree against 2.6.28 and nouveau/linux-2.6 git kernel. Compile failures are usually found fast.

What kernel and arch do you use?

btw. that is not Nouveau code but DRM generic, so to fix it, you'd have to reproduce it with Linus' kernel tree or Airlied's drm-next, and send the patch to dri-devel mailing list.

Or is this a packaging problem in the x11 overlay? (Doesn't sounds like one, but...)
Comment 2 Maxim Britov 2009-09-06 00:42:56 UTC
linux-2.6.30-gentoo-r6

Seems kernel issue:
http://mirror.celinuxforum.org/gitstat/commit-detail.php?commit=82e3310ace59794ecf0f531eca94647b2863dfda

Comment 3 Maxim Britov 2009-09-06 00:45:24 UTC
Fixed in kernel 2.6.31-rc2-git1

http://www.kernel.org/pub/linux/kernel/v2.6/snapshots/patch-2.6.31-rc2-git1.log
commit 82e3310ace59794ecf0f531eca94647b2863dfda
Author: Tobias Doerffel <tobias.doerffel@gmail.com>
Date:   Sun Jul 5 12:08:23 2009 -0700

    linux/sysrq.h needs linux/errno.h
    
    In include/linux/sysrq.h the constant EINVAL is being used but is undefined
    if include/linux/errno.h is not included before.
    
    Fix this by adding #include <linux/errno.h> at the beginning.
    
    Signed-off-by: Tobias Doerffel <tobias.doerffel@gmail.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>

Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.