Difference between revisions of "Swap on video ram"

From ArchWiki
Jump to: navigation, search
(update for inclusion of MTD to kernel26)
(clarified the intro)
Line 2: Line 2:
 
[[Category:Other hardware]]
 
[[Category:Other hardware]]
 
{{stub}}
 
{{stub}}
This is a work in progress: the stuff in here is not tested that much, and it is possible that you will run out of video ram/have a conflict and your xserver will crash.
+
Warning: the stuff in here is not tested that much, and it is possible that you will run out of video ram/have a conflict and your xserver will crash.
 +
To be absolutely sure of stability, you can use the vga xorg driver, where you can set a specific amount of videoram, (unlike other foss or binary drivers, which seem to ignore attempts to set videoram = 16 or whatever).
  
The fast memory on your graphics card (if you have one) can be used as general ram by using the MTD subsystem of the kernel. At the moment that part is not included in the stock arch kernel, so you have to build your own kernel. Using [[ABS]] is probably the easiest way.
+
The fast memory on your graphics card (if you have one) can be used as general ram (actually swap) by using the MTD subsystem of the kernel. MTD is now included in kernel26.
  
 
==How To==
 
==How To==
Line 42: Line 43:
 
</pre>
 
</pre>
  
So what's important is the Region 0 (it seems possible to use the addresses of either the primary or secondary)
+
So what's important is the Region 0, or the biggest one (it seems possible to use the addresses of either the primary or secondary)
  
 
The video card needs some ram to function as a video card, and this space you leave at the start of the address range. Choose how much space you can spare; maybe it is 16MiB which is 0x01000000. or maybe some more.
 
The video card needs some ram to function as a video card, and this space you leave at the start of the address range. Choose how much space you can spare; maybe it is 16MiB which is 0x01000000. or maybe some more.

Revision as of 00:47, 24 November 2007

Tango-document-new.pngThis article is a stub.Tango-document-new.png

Notes: please use the first argument of the template to provide more detailed indications. (Discuss in Talk:Swap on video ram#)

Warning: the stuff in here is not tested that much, and it is possible that you will run out of video ram/have a conflict and your xserver will crash. To be absolutely sure of stability, you can use the vga xorg driver, where you can set a specific amount of videoram, (unlike other foss or binary drivers, which seem to ignore attempts to set videoram = 16 or whatever).

The fast memory on your graphics card (if you have one) can be used as general ram (actually swap) by using the MTD subsystem of the kernel. MTD is now included in kernel26.

How To

Kernel Stuff

Get a kernel version >= 2.6.23.1-6

Post-Kernel Stuff

When you are running a kernel with MTD modules, you have to load the modules specifying the pci address ranges that correspond to the ram on your video card.

check the ranges with

lspci -vvv

you then look for the sections that name your video card as an example mine is here:

01:00.0 VGA compatible controller: ATI Technologies Inc RV350 AR [Radeon 9600] (prog-if 00 [VGA])
ubsystem: PC Partner Limited Unknown device 0830

ntrol: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR+ FastB2B-
tatus: Cap+ 66MHz+ UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR-
ency: 64 (2000ns min), Cache Line Size: 32 byteserrupt: pin A routed to IRQ 11
egion 0: Memory at e0000000 (32-bit, prefetchable) [size=256M]
egion 1: I/O ports at c800 [size=256]
egion 2: Memory at ff8f0000 (32-bit, non-prefetchable) [size=64K]
ion ROM at ff8c0000 [disabled] [size=128K]

ies: <access denied>

01:00.1 Display controller: ATI Technologies Inc RV350 AR [Radeon 9600] (Secondary)
ubsystem: PC Partner Limited Unknown device 0831

ntrol: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
tatus: Cap+ 66MHz+ UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR-
ency: 64 (2000ns min), Cache Line Size: 32 bytes
egion 0: Memory at d0000000 (32-bit, prefetchable) [size=256M]
egion 1: Memory at ff8e0000 (32-bit, non-prefetchable) [size=64K]
ies: <access denied>

So what's important is the Region 0, or the biggest one (it seems possible to use the addresses of either the primary or secondary)

The video card needs some ram to function as a video card, and this space you leave at the start of the address range. Choose how much space you can spare; maybe it is 16MiB which is 0x01000000. or maybe some more.

Your start of the range is then the sum of that offset and the initial address range: I would have added 0x01000000 to 0xe00000000 to get the start

# for using vram as swap
modprobe slram map=VRAM,0xSTART RANGE HERE,0xEND
modprobe mtdchar #probably unnecessary
modprobe mtdblock
mkswap /dev/mtdblock0
swapon /dev/mtdblock0 -p 10 #higher priority gets used before disk

External Links

MTD website Gentoo Wiki