From: Alan Cox <alan@lxorguk.ukuu.org.uk>
To: Linus Torvalds <torvalds@osdl.org>
Cc: "Jon Smirl" <jonsmirl@gmail.com>,
"Christoph Hellwig" <hch@infradead.org>,
"Dave Airlie" <airlied@linux.ie>,
"Felix Kühling" <fxkuehl@gmx.de>,
"DRI Devel" <dri-devel@lists.sourceforge.net>,
lkml <linux-kernel@vger.kernel.org>
Subject: Re: radeon-pre-2
Date: Sat, 11 Sep 2004 17:18:37 +0100 [thread overview]
Message-ID: <1094919501.21088.111.camel@localhost.localdomain> (raw)
In-Reply-To: <Pine.LNX.4.58.0409110939200.2341@ppc970.osdl.org>
On Sad, 2004-09-11 at 18:02, Linus Torvalds wrote:
> My personal preference for this whole mess has always been the "silly
> driver" that isn't even hardware-specific, and really does _nothing_ on
> its own. This one would be the only thing that actually reserves the IO
> regions and "owns" the card from the respect of the resources. EVERYBODY
> else would be a "stealth" driver. Not just DRM.
How do you plan to deal with hot plug. At the point the "silly driver"
(in my case this is the vga class driver) claims the PCI device and
propogates things onwards hotplug seems to work.
The second fun bit is that Jon is right that in some cases the fb driver
for a card may want to use the DRI layer if loaded - but only some and
only in a controlled manner. Sometimes the drivers want to co-operate
sometimes they just want to avoid beating each other senseless.
> Now, the reason why these things are _pointers_ to locks rather than
> locks themselves is that maybe some hardware ends up sharing resources
> between these things (maybe "modeswitch" needs the accelerator to
How do you deal with making sure the lock doesn't get freed and knowing
who needs it still ? I ended up with locks in the shared area itself
because I couldn't figure that one out ?
> - memory allocation. Many of these issues really are generic, and once
> you have the locking setup done, maybe you can have a generic memory
> allocation layer for splitting up AGP memory or whatever. See the
> "dma_declare_coherent_memory()" interfaces that James Bottomley did for
> some SCSI devices that have on-board memory that they want to let the
> kernel allocate as DMA'able.
I think allocation is genuinely a hard problem in the 3D card case. Some
devices have the most wonderful restrictions on layout that range
from "the frame buffer is here" to "I want 2Mb, 1Mb aligned within a 4Mb
range and you can free this stuff if you notify me but its not
textures". Multihead really makes this interesting and DRI itself
doesn't really address this problem either.
Linus let me run what I have now past you for comment (the code isnt
working yet since I've been having a fight with the class code)
The vga_class module registers itself as the owner of every VGA class
device on the PCI bus. The PCI layer duely gives it all the video
hotplug events.
On creation it creates a set of (currently 3) vga bus objects for each
card. So if we find say a Voodoo 3, we will create vga bus objects
Voodoo 3 memory manager
Voodoo 3 DRI
Voodoo 3 Frame buffer 0
(for now. Quite possibly mode management is separate, maybe memory
manager eventually will or will not be)
and stick them onto global and per vga router lists.
vga_register_driver works like PCI register driver but also takes a
"type" field and will attach to the appropriate one of the 3 objects,
detach on hotplug and all the rest as the base/* code provides.
When you attach or detach you get a notifier to the other members that
are loaded.
Finally there is a shared structure between the different vga bus
objects for each video card which allows you to find one function from
another (maybe the notifiers should pass these) and also a semaphore.
next prev parent reply other threads:[~2004-09-11 17:21 UTC|newest]
Thread overview: 101+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <E3389AF2-0272-11D9-A8D1-000A95F07A7A@fs.ei.tum.de>
[not found] ` <DA459966-02B9-11D9-A8D1-000A95F07A7A@fs.ei.tum.de>
[not found] ` <9e47339104090917353554a586@mail.gmail.com>
[not found] ` <Pine.LNX.4.58.0409100209100.32064@skynet>
[not found] ` <9e47339104090919015b5b5a4d@mail.gmail.com>
[not found] ` <20040910153135.4310c13a.felix@trabant>
[not found] ` <9e47339104091008115b821912@mail.gmail.com>
[not found] ` <1094829278.17801.18.camel@localhost.localdomain>
[not found] ` <9e4733910409100937126dc0e7@mail.gmail.com>
[not found] ` <1094832031.17883.1.camel@localhost.localdomain>
2004-09-10 17:22 ` radeon-pre-2 Jon Smirl
2004-09-10 17:04 ` radeon-pre-2 Alan Cox
2004-09-10 18:40 ` radeon-pre-2 Jon Smirl
2004-09-10 22:19 ` radeon-pre-2 Dave Airlie
2004-09-10 22:00 ` radeon-pre-2 Alan Cox
2004-09-10 23:24 ` radeon-pre-2 Dave Airlie
2004-09-11 7:40 ` radeon-pre-2 Geert Uytterhoeven
2004-09-11 8:42 ` radeon-pre-2 Keith Whitwell
2004-09-11 13:59 ` radeon-pre-2 Alan Cox
2004-09-11 0:47 ` radeon-pre-2 Vladimir Dergachev
2004-09-11 8:43 ` radeon-pre-2 Keith Whitwell
2004-09-11 12:23 ` radeon-pre-2 Mike Mestnik
2004-09-11 15:39 ` radeon-pre-2 Vladimir Dergachev
2004-09-11 14:14 ` radeon-pre-2 Alan Cox
2004-09-11 0:50 ` radeon-pre-2 Dave Airlie
2004-09-11 3:30 ` radeon-pre-2 Michel Dänzer
2004-09-11 5:19 ` radeon-pre-2 Dave Airlie
2004-09-11 6:12 ` radeon-pre-2 Michel Dänzer
2004-09-11 7:11 ` radeon-pre-2 Vladimir Dergachev
2004-09-11 14:36 ` radeon-pre-2 Alan Cox
2004-09-11 15:53 ` radeon-pre-2 Vladimir Dergachev
2004-09-11 15:14 ` radeon-pre-2 Alan Cox
2004-09-11 17:10 ` radeon-pre-2 Vladimir Dergachev
2004-09-11 16:20 ` radeon-pre-2 Alan Cox
2004-09-11 17:49 ` radeon-pre-2 Vladimir Dergachev
2004-09-11 17:59 ` radeon-pre-2 Jon Smirl
2004-09-11 18:05 ` radeon-pre-2 Vladimir Dergachev
2004-09-11 18:09 ` radeon-pre-2 Jon Smirl
2004-09-12 1:55 ` radeon-pre-2 Mike Mestnik
2004-09-11 9:20 ` radeon-pre-2 Antonino A. Daplas
2004-09-11 14:40 ` radeon-pre-2 Alan Cox
2004-09-11 16:34 ` radeon-pre-2 Jon Smirl
2004-09-11 14:33 ` radeon-pre-2 Alan Cox
2004-09-11 16:46 ` radeon-pre-2 Jon Smirl
2004-09-11 16:21 ` radeon-pre-2 Alan Cox
2004-09-11 17:27 ` radeon-pre-2 Jon Smirl
2004-09-13 11:40 ` radeon-pre-2 Keith Whitwell
2004-09-11 19:10 ` radeon-pre-2 Hamie
2004-09-11 23:20 ` radeon-pre-2 Alan Cox
2004-09-12 9:13 ` radeon-pre-2 Geert Uytterhoeven
2004-09-12 11:36 ` radeon-pre-2 Hamie
2004-09-12 17:31 ` radeon-pre-2 Alan Cox
2004-09-11 16:23 ` radeon-pre-2 Alan Cox
2004-09-11 14:25 ` radeon-pre-2 Alan Cox
2004-09-12 22:42 ` radeon-pre-2 Dave Airlie
2004-09-12 23:03 ` radeon-pre-2 Linus Torvalds
2004-09-13 0:27 ` radeon-pre-2 Michel Dänzer
2004-09-13 0:45 ` radeon-pre-2 Vladimir Dergachev
2004-09-13 0:52 ` radeon-pre-2 Michel Dänzer
2004-09-13 14:52 ` radeon-pre-2 Vladimir Dergachev
2004-09-13 13:57 ` radeon-pre-2 Alan Cox
2004-09-13 15:20 ` radeon-pre-2 Vladimir Dergachev
2004-09-13 15:07 ` radeon-pre-2 Alan Cox
2004-09-13 15:20 ` radeon-pre-2 Linus Torvalds
2004-09-13 19:21 ` radeon-pre-2 Alex Deucher
2004-09-13 20:42 ` radeon-pre-2 David Bronaugh
2004-09-13 21:57 ` radeon-pre-2 Alex Deucher
2004-09-13 16:26 ` radeon-pre-2 Michel Dänzer
2004-09-13 6:05 ` radeon-pre-2 Alex Deucher
2004-09-13 16:29 ` radeon-pre-2 Michel Dänzer
2004-09-13 6:41 ` radeon-pre-2 Arjan van de Ven
2004-09-13 11:26 ` radeon-pre-2 Alan Cox
2004-09-13 15:06 ` radeon-pre-2 Jon Smirl
2004-09-13 15:04 ` radeon-pre-2 Alan Cox
2004-09-13 16:28 ` radeon-pre-2 Jon Smirl
2004-09-13 16:43 ` radeon-pre-2 Alan Cox
2004-09-13 18:11 ` radeon-pre-2 Jon Smirl
2004-09-13 18:49 ` radeon-pre-2 Jesse Barnes
2004-09-13 22:17 ` radeon-pre-2 Antonino A. Daplas
2004-09-13 17:50 ` radeon-pre-2 Jon Smirl
2004-09-14 10:27 ` radeon-pre-2 Alan Cox
2004-09-11 8:38 ` radeon-pre-2 Keith Whitwell
2004-09-10 23:10 ` radeon-pre-2 Jon Smirl
2004-09-10 22:17 ` radeon-pre-2 Alan Cox
2004-09-11 12:27 ` radeon-pre-2 Christoph Hellwig
2004-09-11 12:49 ` radeon-pre-2 Mike Mestnik
2004-09-11 16:45 ` radeon-pre-2 Christoph Hellwig
2004-09-11 16:11 ` radeon-pre-2 Jon Smirl
2004-09-11 16:45 ` radeon-pre-2 Christoph Hellwig
2004-09-11 17:02 ` radeon-pre-2 Linus Torvalds
2004-09-11 16:18 ` Alan Cox [this message]
2004-09-11 17:49 ` radeon-pre-2 Linus Torvalds
2004-09-11 17:13 ` radeon-pre-2 Jon Smirl
2004-09-11 16:23 ` radeon-pre-2 Alan Cox
2004-09-11 17:41 ` radeon-pre-2 Linus Torvalds
2004-09-11 17:57 ` radeon-pre-2 Michel Dänzer
2004-09-11 20:29 ` radeon-pre-2 Eric Anholt
2004-09-11 21:41 ` radeon-pre-2 Jon Smirl
2004-09-11 17:54 ` radeon-pre-2 Jon Smirl
2004-09-11 18:13 ` radeon-pre-2 Linus Torvalds
2004-09-11 21:02 ` radeon-pre-2 Jon Smirl
2004-09-11 21:06 ` radeon-pre-2 Christoph Hellwig
2004-09-11 21:37 ` radeon-pre-2 Jon Smirl
2004-09-11 23:23 ` radeon-pre-2 Alan Cox
2004-09-12 7:12 ` radeon-pre-2 Eric Anholt
2004-09-12 0:21 ` radeon-pre-2 Jon Smirl
2004-09-12 0:28 ` radeon-pre-2 Linus Torvalds
2004-09-12 23:53 ` radeon-pre-2 Dave Airlie
2004-09-11 18:17 ` radeon-pre-2 Vladimir Dergachev
2004-09-10 17:12 ` radeon-pre-2 Alan Cox
[not found] ` <1094853894.18235.17.camel@localhost.localdomain>
2004-09-11 2:20 ` radeon-pre-2 Jon Smirl
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1094919501.21088.111.camel@localhost.localdomain \
--to=alan@lxorguk.ukuu.org.uk \
--cc=airlied@linux.ie \
--cc=dri-devel@lists.sourceforge.net \
--cc=fxkuehl@gmx.de \
--cc=hch@infradead.org \
--cc=jonsmirl@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=torvalds@osdl.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
Powered by JetHome