Bug 23382

Summary: Nouveau DRM module out-of-tree compile errors
Product: xorg Reporter: Tavian Barnes <tavianator>
Component: Driver/nouveauAssignee: Nouveau Project <nouveau>
Status: RESOLVED FIXED QA Contact: Xorg Project Team <xorg-team>
Severity: blocker    
Priority: high    
Version: git   
Hardware: All   
OS: Linux (All)   
Whiteboard:
i915 platform: i915 features:
Attachments:
Description Flags
Patch to fix drm_encoder_slave.h includes. none

Description Tavian Barnes 2009-08-17 16:07:00 UTC
Created attachment 28717 [details] [review]
Patch to fix drm_encoder_slave.h includes.

When doing an out-of-tree compile on the nouveau kernel module, recent GIT versions fail to compile without patching for a couple reasons.  The first can be fixed with the attached patch.

The second has to do with the fact that drivers/gpu/drm/nouveau/nouveau_drv.h declares the prototype for nouveau_encoder_connector_get, which relies on the type `struct nouveau_encoder*', defined in drivers/gpu/drm/nouveau/nouveau_encoder.h.  However, nouveau_encoder.h needs nouveau_drv.h for the type `struct nv04_output_reg'.  This circular dependency causes compilation of nouveau_drv.c to fail.

Also, any reason the include guard for nouveau_encoder.h is called __NOUVEAU_OUTPUT_H__?
Comment 1 Pekka Paalanen 2009-08-18 00:36:02 UTC
(In reply to comment #0)
> Created an attachment (id=28717) [details]
> Patch to fix drm_encoder_slave.h includes.

The equivalent patch is already present in the master-compat branch
(commit 1b527aded95176a2bc4b19f0191f9e6d412ad413), and has been sent to DRM
upstream. It will come to master branch in time, in the mean time you can
use master-compat.

> When doing an out-of-tree compile on the nouveau kernel module, recent GIT
> versions fail to compile without patching for a couple reasons.  The first can
> be fixed with the attached patch.

master-compat has always worked for me (since I try to remember to check and
fix it before pushing).

> The second has to do with the fact that drivers/gpu/drm/nouveau/nouveau_drv.h
> declares the prototype for nouveau_encoder_connector_get, which relies on the
> type `struct nouveau_encoder*', defined in
> drivers/gpu/drm/nouveau/nouveau_encoder.h.  However, nouveau_encoder.h needs
> nouveau_drv.h for the type `struct nv04_output_reg'.  This circular dependency
> causes compilation of nouveau_drv.c to fail.

I've never seen this problem. In what I see, the prototype for nouveau_encoder_connector_get() is in nouveau_encoder.h. Okay, it has already
been fixed in commit 8745851d364bc175d06d4de3cfa47cd65c399a04.

> Also, any reason the include guard for nouveau_encoder.h is called
> __NOUVEAU_OUTPUT_H__?

Indeed, I'll fix that.
Comment 2 Pekka Paalanen 2009-08-18 01:52:52 UTC
The include guard fix is in master, commit 2b4837bb34c053f3c81c8a28b52a0f679a71acac.

Let's keep this bug open until the drm_encoder_slave.h fix arrives to master.
Comment 3 Pekka Paalanen 2009-08-20 22:30:57 UTC
All fixed in master.

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.