> > My question is, what are the gottchas of having the DRM run
> in a 64-bit
> > kernel and the rest of the driver run in either a 32-bit
> application or
> > a 64-bit application? Will it even matter? If it will
> matter, is there
> > anything we can start doing now to soften the blow?
> We might have a problem here, basically we use the
> kernel address of
> certain structures as a convient method of passing keys
> around. Well, when
> a 64-bit kernel is running and we have 32-bit usermode we
> aren't going to be
> able to shove 64-bit pointers into 32-bit ulongs. We
> probably need to fixup
> all the kernel code so that it doesn't use the addresses as keys, but
> something else.
most PCI devices only have 32 bit address spaces.
maybe main memory will still reside below 4 GB for a while.
so pointer truncation and physical address truncation
from 64 to 32 bits will work for a while without flaws.
but the question is justified. what can we do for that?
in general i have heared Linux kernel people caring for
some pooled memeory for specific tasks, like 24 bit DMA
circuits. or for the lower 1 MB of memory (you know the
good old A20 gate). if there are memory pools availabel
then the driver must care for it, if an application uses
the 32 bit api entry points.
in other words, we will have to shedule for two sorts of
entrypoints if the userland binaries will come in two
bintess flavours (which might be nice because 32 bit
could run faster thatn 64 bit could do for some cases).
but its Linux and all should have the source to their
applications so that they have to tailor their binarys
to their machines. really? no not really. there is quite
a significant amount of comercial software (games and
professional CAD things) that still wants to run there
as it got provided by its vendor. even Wine, WineX and
all those big bunch of Win32 applications is 32 bits.
There cannot be a well working intermediate layer,
because the addresses cannot be down-converted by
some library and the handles only with painfull efforts.
Upscaling would be somewhat easier to do for bring up phase,
unless someone comes with a 64 ponter for passing down.
anyways in the long run, a 64 bit application wants
a true 64 bit API if it wants to rund full featured
and with full speed.
I think we will have to fiddle with the co-existances
of 32 bits and 64 bits on the same machine.