From: James Simmons <hidden> Date: 2002-10-29 19:45:37
Hi!!!
Here are the last series of fbdev changes. The console layer code has
been removed from the low level drivers. This it is possible to run fbdev
without the VT console system or with it using a different driver. I did
this with the VESA fbdev driver and MDA con!!!! This will save so much
time testing future fbdev drivers.
I also moved the agp and drm code over to drivers/video. The reason I
did this was to support fbdev drivers that will be strickly DMA/AGP
based. The reason for this is we will see in the future embedded ix86
boards with things like i810 framebuffers with NO vga core. In this case
we will need a fbdev driver for a graphical console. Thus the agp code
must be started before the fbdev layer.
MS: (n) 1. A debilitating and surprisingly widespread affliction that
renders the sufferer barely able to perform the simplest task. 2. A disease.
James Simmons [jsimmons@users.sf.net] ____/|
fbdev/console/gfx developer \ o.O|
http://www.linux-fbdev.org =(_)=
http://linuxgfx.sourceforge.net U
http://linuxconsole.sourceforge.net
From: Dave Jones <hidden> Date: 2002-10-29 20:04:15
On Tue, Oct 29, 2002 at 12:45:10PM -0800, James Simmons wrote:
> The reason for this is we will see in the future embedded ix86
> boards with things like i810 framebuffers with NO vga core. In this case
> we will need a fbdev driver for a graphical console. Thus the agp code
> must be started before the fbdev layer.
Can you explain exactly what the agpgart code is doing that needs
to be done earlier than framebuffer ? I don't see any reason for this
change. There should be no GART mappings until we've booted userspace
(except for the case of IOMMU)
Dave
--
| Dave Jones. http://www.codemonkey.org.uk
From: James Simmons <hidden> Date: 2002-10-29 21:08:23
On Tue, Oct 29, 2002 at 12:45:10PM -0800, James Simmons wrote:
> The reason for this is we will see in the future embedded ix86
> boards with things like i810 framebuffers with NO vga core. In this case
> we will need a fbdev driver for a graphical console. Thus the agp code
> must be started before the fbdev layer.
Can you explain exactly what the agpgart code is doing that needs
to be done earlier than framebuffer ? I don't see any reason for this
change. There should be no GART mappings until we've booted userspace
(except for the case of IOMMU)
The reason I did this was to prevent adding another chuck of agp code. The
current work around for AGP fbdev drivers to have there OWN AGP code. So
we can leave the agp drivers where they are at or the framebuffer layer
can have its own AGP code for itself. Which way do you think it should be
done?
1) Fbdev layer has it own AGP layer
2) Use already existing AGP layer code.
From: James Simmons <hidden> Date: 2002-10-29 21:39:19
On Tue, Oct 29, 2002 at 12:45:10PM -0800, James Simmons wrote:
> The reason for this is we will see in the future embedded ix86
> boards with things like i810 framebuffers with NO vga core. In this case
> we will need a fbdev driver for a graphical console. Thus the agp code
> must be started before the fbdev layer.
Can you explain exactly what the agpgart code is doing that needs
to be done earlier than framebuffer ? I don't see any reason for this
change. There should be no GART mappings until we've booted userspace
(except for the case of IOMMU)
Best to ask the author of the i810 framebuffer driver. He can tell you his
need for AGP stuff. I CC.
On Tue, Oct 29, 2002 at 12:45:10PM -0800, James Simmons wrote:
> The reason for this is we will see in the future embedded ix86
> boards with things like i810 framebuffers with NO vga core. In this case
> we will need a fbdev driver for a graphical console. Thus the agp code
> must be started before the fbdev layer.
Can you explain exactly what the agpgart code is doing that needs
to be done earlier than framebuffer ? I don't see any reason for this
change. There should be no GART mappings until we've booted userspace
(except for the case of IOMMU)
The i8xx draws the frame buffer memory from AGP as well as the texture
mappings and other goodies. The practical impact of that is that if you
want any useful video mode you need AGP initialized first. For UMA video
devices its an extremely neat way of avoiding pre-allocation of fixed
size frame buffers before the OS boots
On Tue, Oct 29, 2002 at 12:45:10PM -0800, James Simmons wrote:
> The reason for this is we will see in the future embedded ix86
> boards with things like i810 framebuffers with NO vga core. In this case
> we will need a fbdev driver for a graphical console. Thus the agp code
> must be started before the fbdev layer.
Can you explain exactly what the agpgart code is doing that needs
to be done earlier than framebuffer ? I don't see any reason for this
change. There should be no GART mappings until we've booted userspace
(except for the case of IOMMU)
Best to ask the author of the i810 framebuffer driver. He can tell you his
need for AGP stuff. I CC.
Hi,
James is right, I have been tackling with this for ages. I have an
i810 driver (http://i810fb.sourceforge.net) that's been "ready" for
some time now, but never submitted it for kernel inclusion precisely
because of this issue.
The i810/1815 has no video memory of it's own, except for memory stolen
from system RAM (512 to 1024K). Unfortunately, entire memory is
accessible only through bank switching and is primarily used for legacy
VGA. Linear memory is availably only through GART mappings.
I've seen/done/been thinking of the following approaches:
1. Do custom GART mappings only - abandoned
2. Fake a linear framebuffer by bank switching the 'stolen memory' -
this idea is by Matt Sottek, but he might have some problems with this
3. Force loading of agpgart before the console/framebuffer - my current
approach in 2.4
4. Do custom GART mappings, wait for agpgart to be available, then use
kernel GART mapping routines - my current approach for 2.5
5. Create a fake framebuffer from System RAM, wait for agpgart to be
loaded, then map the GART - been toying with this idea
The easiest solution for me is to initialize the agpgart ahead of the
framebuffer. Since I'm not a kernel hacker, I don't really get a clear
picture of the issues involved and I'll be grateful for any input.
Thanks
Tony