NVIDIA y AGP
July 3, 2008 3:47 am GNU/Linux, GentooTodo empezó por saber cómo demonios se activaba el soporte de Fast Writes en mi tarjeta Nvidia (nada del otro mundo, Geforce FX 5500 256 MB) y después (se nota que me gusta liarme con estas cosas?) me enteré que se puede usar el soporte AGP del kernel para que reemplace la implementación AGP de las propia Nvidia, aunque realmente, no tengo la menor idea si hay mejora en el rendimiento (en mi caso, es el mismo sin tener Fast Writes activado, ya que con él, mejora), aunque mi testeo ha sido poco.
Hago esto porque he visto muchas dudas al respecto en muchos foros, lo mismo sucede con la posibilidad de habilitar SBA y Fast Writes. Posiblemente piensen que hablo en chino, la descripción al respecto la pueden encontrar acá.
Para empezar hay que saber que chipset’s se llevan con la implementación de Nvidia de AGP (NVAGP), hay un descripción por aqui: ftp://download.nvidia.com/XFree86/Linux-x86/1.0-8174/README/32bit_html/appendix-f.html. Ahí dice que los chispset’s que se llevan bien con NVAGP son las siguientes:
Supported AGP Chipsets
Intel 440LX
Intel 440BX
Intel 440GX
Intel 815 (”Solano”)
Intel 820 (”Camino”)
Intel 830M
Intel 840 (”Carmel”)
Intel 845 (”Brookdale”)
Intel 845G
Intel 850 (”Tehama”)
Intel 855 (”Odem”)
Intel 860 (”Colusa”)
Intel 865G (”Springdale”)
Intel 875P (”Canterwood”)
Intel E7205 (”Granite Bay”)
Intel E7505 (”Placer”)
AMD 751 (”Irongate”)
AMD 761 (”IGD4″)
AMD 762 (”IGD4 MP”)
AMD 8151 (”Lokar”)
VIA 8371
VIA 82C694X
VIA KT133
VIA KT266
VIA KT400
VIA P4M266
VIA P4M266A
VIA P4X400
VIA K8T800
VIA K8N800
VIA PT880
VIA KT880
RCC CNB20LE
RCC 6585HE
Micron SAMDDR (”Samurai”)
Micron SCIDDR (”Scimitar”)
NVIDIA nForce
NVIDIA nForce2
NVIDIA nForce3
ALi 1621
ALi 1631
ALi 1647
ALi 1651
ALi 1671
SiS 630
SiS 633
SiS 635
SiS 645
SiS 646
SiS 648
SiS 648FX
SiS 650
SiS 651
SiS 655
SiS 655FX
SiS 661
SiS 730
SiS 733
SiS 735
SiS 745
SiS 755
ATI RS200M
Para saber que chip tienes ejecuta lo siguiente:
UnderHouse ~ # lspci | grep -i agp 00:01.0 PCI bridge: Intel Corporation 82865G/PE/P PCI to AGP Controller (rev 02)
Como ven yo tengo una Intel 865G que figura en la lista. Pasemos a ver como se activa NVAGP o AGPGART (el módulo de AGP del kernel de linux) si no se encuentra en la lista anterior. Nota: Estos pasos son realizados en Gentoo GNU/Linux, podría ser similares en otras distribuciones, pero, están advertidos.
Activar AGP del kernel de linux con NVIDIA.
Hay que activar AGP en el kernel como módulo (escoge tu chipset correspondiente).
Device Drivers --->
Graphics support --->
<m> /dev/agpgart (AGP Support) --->
<m> Intel 440LX/BX/GX, I8xx and E7x05 chipset support
Para ver si ya lo tienes integrado:
UnderHouse ~ # modprobe -l | grep -i agp
Si te aparecen la ubicación donde se encuentran los módulos, lo tienes correcto.
En gentoo hay que re-instalar los drivers de NVIDIA para que tomen la dependencia de AGPGART, ya que al parecer revisa la configuración del kernel al compilar. Prueba de esto:
UnderHouse ~ # modinfo nvidia filename: /lib/modules/2.6.24-gentoo-r3/video/nvidia.ko license: NVIDIA alias: char-major-195-* alias: pci:v000010DEd*sv*sd*bc03sc02i00* alias: pci:v000010DEd*sv*sd*bc03sc00i00* depends: agpgart,i2c-core
La línea que describe las dependencias del módulo: depends: agpgart,i2c-core. Por lo que se ha preparado a NVIDIA para usar el AGP del kernel. En otras distribuciones generalmente se hace la instalación mediante el paquete oficial de NVIDIA o mediante el gestor de paquetes de dicha distribución, no sé si funcione igual, pero sería mejor investigar al respecto (aunque modprobe debería funcionar de la misma forma).
Hay que agregar/modificar la siguiente línea en la configuración de Xorg en la sección Device (donde se coloca las opciones de tu tarjeta gráfica).
Option "NvAGP" "2"
Reiniciamos el sistema y el módulo de NVIDIA debería cargar correctamente usando AGPGART:
soullost@UnderHouse ~ $ cat /proc/driver/nvidia/agp/status Status: Enabled Driver: AGPGART AGP Rate: 8x Fast Writes: Disabled SBA: Enabled
soullost@UnderHouse ~ $ lsmod Module Size Used by nvidia 7104708 24 intel_agp 25748 1 agpgart 35016 2 nvidia,intel_agp
Usar NVAGP de NVIDIA.
Si tu chipset se encuentra como compatible con NVAGP, es recomendable usarlo. Para esto hay que desactivar el soporte de AGP en el kernel (en gentoo). En otras distribuciones he visto que se bloquean los módulos al iniciar en /etc/modprobe.d/blacklist o en grub con agp=off (habrá que investigarlo).
En gentoo al compilar sin soporte AGP del kernel, modinfo no nos muestra la dependencia de AGPGART:
UnderHouse ~ # modinfo nvidia filename: /lib/modules/2.6.24-gentoo-r3/video/nvidia.ko license: NVIDIA alias: char-major-195-* alias: pci:v000010DEd*sv*sd*bc03sc02i00* alias: pci:v000010DEd*sv*sd*bc03sc00i00* depends: i2c-core
Por lo que el módulo de NVIDIA implementará su propio driver de AGP. Editar el xorg.conf con la siguiente opción:
Option "NvAGP" "1"
Podemos ver la información de /proc.
soullost@UnderHouse ~ $ cat /proc/driver/nvidia/agp/status Status: Enabled Driver: NVIDIA AGP Rate: 8x Fast Writes: Disabled SBA: Enabled
UnderHouse ~ # lsmod Module Size Used by nvidia 7102020 24
Test de glgears:
soullost@UnderHouse ~ $ glxgears 9382 frames in 5.0 seconds = 1876.342 FPS 9394 frames in 5.0 seconds = 1878.656 FPS 9350 frames in 5.0 seconds = 1869.923 FPS
Activar Fast Writes y SBA.
Antes que nada hay que saber si tenes la posibilidad de habilitarlo, de nuevo, con ayuda de /proc.
soullost@UnderHouse ~ $ cat /proc/driver/nvidia/agp/card Fast Writes: Supported SBA: Supported AGP Rates: 8x 4x Registers: 0x1f000e1b:0x1f004312
soullost@UnderHouse ~ $ cat /proc/driver/nvidia/agp/host-bridge Host Bridge: PCI device 8086:2570 Fast Writes: Supported SBA: Supported AGP Rates: 8x 4x Registers: 0x1f004a1b:0x00000b12
Correcto, tenemos soportado tanto Fast Writes y SBA tanto en el driver de NVIDIA para mi tarjeta gráfica como por medio del chipset de AGP de mi tarjeta madre (motherboard).
En general para hacer esto hay que pasar las opciones al módulo de NVIDIA, en gentoo, existe la siguiente guía: http://gentoo-wiki.com/HARDWARE_Nvidia_Driver_AGP_FastWrite_and_Side_Band_Addressing, que es bastante enredosa y sobre todo, había cosas que no entendía para que se hacían (prefiero no hacerlas si desconozco). Yo lo que hice fue agregar lo siguiente: NVreg_EnableAGPFW=1 NVreg_EnableAGPSBA=1 al archivo /etc/modprobe.d/nvidia, quedando de la siguiente forma:
alias char-major-195 nvidia alias /dev/nvidiactl char-major-195 options nvidia NVreg_DeviceFileMode=432 NVreg_DeviceFileUID=0 NVreg_DeviceFileGID=27 NVreg_ModifyDeviceFiles=1 NVreg_EnableAGPFW=1 NVreg_EnableAGPSBA=1
Y hacer un update-modules para re-generar el archivo /etc/modprobe.conf.
update-modules
Si el módulo de NVIDIA se encontraba cargado antes de hacer la modificación, hay que salir del servidor X totalmente (parar GDM) y desactivar el módulo, para después volverlo a cargar (si prefieres no hacerte bolas, reiniciar el sistema xD).
1. Salir de GNOME/KDE/?. 2. Matar KDM/GDM/?. 3. modprobe -r nvidia 4. modprobe nvidia 5. startx
Veremos si ha sido correctamente configurado en /proc.
soullost@UnderHouse ~ $ cat /proc/driver/nvidia/agp/status Status: Enabled Driver: NVIDIA AGP Rate: 8x Fast Writes: Enabled SBA: Enabled
Parece que es todo, nos vemos.
Califica el tema:Temas Relacionados:

July 8th, 2008 at 7:47 am
Hola n_n.
Pues yo no uso Gentoo, yo uso Archlinux, pero el tuto no sabes cuanto me ha ayudado ya estoy usando NVagp y active tanto el Fast Write como el SBA, muchísimas gracias.
Un saludo.
July 8th, 2008 at 2:42 pm
Eduardo, que bueno que te sirvió, da gusto saber que sirve de algo lo que escribo xD. Me estoy pasando por tu blog.
.