Linux: Using Video RAM as System RAM

Submitted by Jeremy
on April 12, 2002 - 8:03am

Byron Stanoszek posted a small patch to the lkml, his efforts at adding 32MB of video card RAM to the system RAM pool on his aging 586. A problem with this effort is the significantly slower speed of video RAM. For this reason, it has been suggested that he turn the video RAM into a block device which could then be added as a fast swap device.

An earlier lkml thread (from April 2000) was also referred to in which the same idea was discussed.

From: Byron Stanoszek
To: linux-kernel
Subject: Using video memory as system memory
Date: Tue, 9 Apr 2002 18:24:14 -0400 (EDT)

I have an old 586 that has low memory and no ability for further upgrades.
I had an idea to use the framebuffer memory of a 32MB video card lying around
the office as system memory and implemented the following patch:

--- linux/arch/i386/kernel/setup.bak	Tue Apr  9 02:52:19 2002
+++ linux/arch/i386/kernel/setup.c Tue Apr 9 03:04:38 2002
@@ -722,6 +722,8 @@
* to <mem>, overriding the bios size.
* "mem=XXX[KkmM]@XXX[KkmM]" defines a memory region from
* to <start>+<mem>, overriding the bios size.
+ * "mem=+start-end" appends a new memory region from <start>
+ * to <end>. Values can be prepended with '0x'.
*/
if (c == ' ' && !memcmp(from, "mem=", 4)) {
if (to != command_line)
@@ -733,6 +735,14 @@
from += 8+4;
e820.nr_map = 0;
usermem = 1;
+ } else if(*(from+4) == '+') {
+ unsigned long long start, end;
+
+ start = simple_strtoull(from+5, &from, 0);
+ if(*from == '-') {
+ end = simple_strtoull(from+1, &from, 0);
+ add_memory_region(start, end-start,
E820_RAM);
+ }
} else {
/* If the user specifies memory size, we
* blow away any automatically generated

Size text uses the first 256KB of video ram, and the framebuffer address
started at 0xfc000000, I tried the following option to effectively double
system RAM:

 mem=+0xfa040000-0xfc000000 

The first time I booted, the kernel said I should compile in HIGHMEM support
and everything booted with the normal memory maps. When compiling with HIGHMEM,
the computer stopped after displaying 'Uncompressing the kernel...done',
probably in a loop dealing with the memory table, since it stopped before
printing out the table.

Does the kernel support noncontiguous main memory like this, or is it just
plain impossible to use PCI-mapped memory as main memory?

Thanks,
-Byron

From: bill davidsen
Subject: Re: Using video memory as system memory
Date: Wed, 10 Apr 2002 11:00:56 -0400

In article you write:
| I have an old 586 that has low memory and no ability for further upgrades.
| I had an idea to use the framebuffer memory of a 32MB video card lying around
| the office as system memory and implemented the following patch:

I believe I would have been tempted to define that memory as first use
swap or some such, the video memory may have different speed or
something than main memory. Low tech NUMA?

A lot of the old ISA memory cards could be addressed in that range as
well, allowing even more space. Of course they sell new motherboards
cheaply as well, so that might not be cost effective even at used
prices.

Intersting hack, though.


From: Eric W. Biederman
Subject: Re: Using video memory as system memory
Date: 12 Apr 2002 01:54:05 -0600

Byron Stanoszek writes:

> I have an old 586 that has low memory and no ability for further upgrades.
> I had an idea to use the framebuffer memory of a 32MB video card lying around
> the office as system memory and implemented the following patch:

There are significant speed differences between video card ram
and ram on a PCI card.

Setup an mtd device and use the video card ram for swap. It's
about 10 lines more code, is testable as a module, and is code that
is clean enough some variant of it might even get into the kernel.

Eric


From: Pavel Machek
Subject: Re: Using video memory as system memory
Date: Thu, 11 Apr 2002 16:23:04 +0200

Hi!

> Does the kernel support noncontiguous main memory like this, or is it just
> plain impossible to use PCI-mapped memory as main memory?

It might be possible (don't know why it does not work for you), but
bear in mind that PCI is *very* slow compared to your main memory.

[Oh, you might want to add that memory late in boot phase. At begining
of kernel boot, that area is probably not mapped, yet. PCI is
initialized later.]
Pavel

From: Pedro M. Rodrigues
Subject: Re: Using video memory as system memory
Date: Fri, 12 Apr 2002 12:56:05 +0200

How fast can one drive a pci card video memory? I once came up with the
idea to use the video memory of a pci video card as a block device and use it to
put the journal from ext3. Of course it wouldn't be solid state like the cards in the
market, at least without a battery and some circuitry changes, and i dismissed
the idea as the result of too much caffeine in my blood.

/Pedro

From: "Dr. David Alan Gilbert
Subject: Re: Using video memory as system memory
Date: Fri, 12 Apr 2002 12:35:09 +0100

* Pedro M. Rodrigues (pmanuel@myrealbox.com) wrote:
>
> How fast can one drive a pci card video memory?

I guess these days you get limited by PCI speed; which for 33MHz/32 bit
is 133MByte/s - on a good day with a wind behind it. I guess AGP could
do a lot better.

Perhaps a more interesting question is what you can use the video cards
hardware for? Most video cards can blit to and from main memory - so
how about things like zero clearing pages with little processor
overhead. My gut feeling is that with PCI its probably still faster to
do it on the processor, not sure about AGP though. Be messy though!

> I once came up with the
> idea to use the video memory of a pci video card as a block device and use it to
> put the journal from ext3. Of course it wouldn't be solid state like the cards in the
> market, at least without a battery and some circuitry changes, and i dismissed
> the idea as the result of too much caffeine in my blood.

Yes, thats why you need to tie it up to the film camera.

Dave


From: Holzrichter, Bruce
Subject: RE: Using video memory as system memory
Date: Wed, 10 Apr 2002 10:43:58 -0500

> In article you write:
> I have an old 586 that has low memory and no ability for further upgrades.
> I had an idea to use the framebuffer memory of a 32MB video card lying
> around the office as system memory and implemented the following patch:

I thought that this was interesting as well, and had a couple of questions,
as I am no expert in this stuff.

You don't have the frame buffer enabled for display when trying to use this
as system memory, correct?

Are there implications of the BIOS shadowing video memory to system memory,
or is that not an issue once Linux takes over memory control?

That is a neat idea, though. The PCI/AGP bus may be a limiting factor for
this as well, correct? As far as speed, I believe most video cards have
fast memory, vram, or sram, but it's only useful transferring between the
Video GPU, and Video cards memory, as the bus to the video card is the
bottleneck.

Just some random thoughts, cool idea, though..

Bruce H.

Byron Stanoszek
Subject: RE: Using video memory as system memory
Date: Wed, 10 Apr 2002 11:53:15 -0400 (EDT)

On Wed, 10 Apr 2002, Holzrichter, Bruce wrote:

> You don't have the frame buffer enabled for display when trying to use this
> as system memory, correct?

Correct. :) In fact, text mode can only take a maximum of the first 256KB of
memory of the card (extended text paging). So as long as you only target the
rest of the memory (and don't use X or svgalib) you should be fine.

> Are there implications of the BIOS shadowing video memory to system memory,
> or is that not an issue once Linux takes over memory control?

Not that I'm aware of. This is PCI-mapped prefetchable memory.

> That is a neat idea, though. The PCI/AGP bus may be a limiting factor for
> this as well, correct? As far as speed, I believe most video cards have
> fast memory, vram, or sram, but it's only useful transferring between the
> Video GPU, and Video cards memory, as the bus to the video card is the
> bottleneck.

Yeah. In fact in some responses the 'slow speed' consideration was so much that
they all say I'd be better off writing a block driver and making use of the
memory more as a swap device rather than as system RAM.

Has anyone out there done this yet? I figure I'd ask before reinventing
anything.. :)

-Byron

From: Geert Uytterhoeven
Subject: RE: Using video memory as system memory
Date: Wed, 10 Apr 2002 18:12:43 +0200 (MEST)

On Wed, 10 Apr 2002, Byron Stanoszek wrote:
> Has anyone out there done this yet? I figure I'd ask before reinventing
> anything.. :)

drivers/block/z2ram.c does this for RAM in the Amiga Zorro II space.

(Why? Because you cannot use Zorro II RAM as system RAM on machines equipped
with a Zorro III bus because on those machines Zorro II RAM doesn't support
read-modify-write cycles.)

Gr{oetje,eeting}s,

Geert

From: Bruce Harada
Subject: Re: Using video memory as system memory
Date: Thu, 11 Apr 2002 02:10:48 +0900

On Wed, 10 Apr 2002 11:53:15 -0400 (EDT)
Byron Stanoszek wrote:

> Has anyone out there done this yet? I figure I'd ask before reinventing
> anything.. :)

I seem to recall some discussion about an almost identical idea a couple of
years ago, but I don't remember whether it was actually implemented or not.
You'll probably have to grovel through the list archives to find out.

Bruce

From: Bruce Harada
Subject: Re: Using video memory as system memory
Date: Fri, 12 Apr 2002 20:54:43 +0900

OK, if you haven't found it already, here's the thread (from April 2000).

http://www.uwsg.iu.edu/hypermail/linux/kernel/0004.0/0471.html

Bruce


LTMREquVjej

muzzlemaster (not verified)
on
August 19, 2010 - 12:58pm

oCdEOoLkgcO

bitkibble (not verified)
on
August 27, 2010 - 9:51am

accutane bmogxf

TeQChsNnVdJdoMu

drmaxut (not verified)
on
August 29, 2010 - 8:48am

accutane 4014 ambien wppcl accutane 580975

AsjgYp

AsjgYp (not verified)
on
February 18, 2011 - 3:31pm

fgPpKSy

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.