[Savage40] Sync issues and Building new DRM modules

William Uther willu.mailingLists at cse.unsw.edu.au
Sat Jan 8 00:49:47 PST 2005


Hi,
   I've tracked down the MythTV tearing issues a little further (this is 
separate to the interlace modeline sync issues I was referring to in 
previous emails.)  It seems there are two strange things going on.

   i) Apparently many drivers Xv implementations implement page flipping 
during the next vertical blank.  The savage drivers don't.
   ii) With Xv not syncing automatically, I need to build DRM so that 
the playback system knows when the vertical blank will occur.

   So, I've been trying to build the savage DRM modules following these 
instructions: http://dri.freedesktop.org/wiki/Building

I get this error when building (make in the linux-core dir):

% make LINUXDIR=/data/src/linux-2.6.10  # this is the 2.6.10 release 
from kernel.org
make -C /data/src/linux-2.6.10  SUBDIRS=`pwd` DRMSRCDIR=`pwd` modules
make[1]: Entering directory `/data/src/linux-2.6.10'
   CC [M]  /data/src/Xorg/drm/linux-core/drm_auth.o
In file included from /data/src/Xorg/drm/linux-core/drmP.h:759,
                  from /data/src/Xorg/drm/linux-core/drm_auth.c:36:
/data/src/Xorg/drm/linux-core/drm_memory.h: In function 
`drm_follow_page':
/data/src/Xorg/drm/linux-core/drm_memory.h:143: error: `pud_t' 
undeclared (first use in this function)
/data/src/Xorg/drm/linux-core/drm_memory.h:143: error: (Each undeclared 
identifier is reported only once
/data/src/Xorg/drm/linux-core/drm_memory.h:143: error: for each 
function it appears in.)
/data/src/Xorg/drm/linux-core/drm_memory.h:143: error: `pud' undeclared 
(first use in this function)
/data/src/Xorg/drm/linux-core/drm_memory.h:143: warning: implicit 
declaration of function `pud_offset'
make[2]: *** [/data/src/Xorg/drm/linux-core/drm_auth.o] Error 1
make[1]: *** [_module_/data/src/Xorg/drm/linux-core] Error 2
make[1]: Leaving directory `/data/src/linux-2.6.10'
make: *** [modules] Error 2

The kernel source is configured.  A grep for pud_t in the kernel source 
and the drm dir doesn't find anything (except that single reference in 
linux-core/drm_memory.h).

Looking at that header I see:

#if LINUX_VERSION_CODE < 0x02060a     /* KERNEL_VERSION(2,6,10) */
         pmd_t *pmd = pmd_offset(pgd, (unsigned long)vaddr);
#else
         pud_t *pud = pud_offset(pgd, (unsigned long) vaddr);
         pmd_t *pmd = pmd_offset(pud, (unsigned long) vaddr);
#endif

I assume that this 'pud' was something that was going to be introduced 
but was pushed back to a later kernel version?

Changing the 0x02060a to 0x02060b seems to let things build (postpones 
the problem?).  Does this seem right to people?

Cheers,

Will         :-}

--
Dr William Uther                            National ICT Australia
Phone: +61 2 9385 6357             School of Computer Science and 
Engineering
Email: willu at cse.unsw.edu.au             University of New South Wales
Web: http://www.cse.unsw.edu.au/~willu/        Sydney, Australia



More information about the Savage40 mailing list