fglrx on linux 2.6.11
カーネルを新しくしてビルドし直そうとしたら、次のエラーが出た。
ATI module generator V 2.0 ========================== initializing... cleaning... patching 'highmem.h'... assuming new VMA API since we do have kernel 2.6.x... doing Makefile based build for kernel 2.6.x and higher make -C /lib/modules/2.6.11-MASA.H/build SUBDIRS=/lib/modules/fglrx/build_mod/2.6.x modules make[1]: Entering directory `/usr/src/kernels/2.6.11-1.1363' CC [M] /lib/modules/fglrx/build_mod/2.6.x/agpgart_be.o /lib/modules/fglrx/build_mod/2.6.x/agpgart_be.c: In function `agp_find_supported_device': /lib/modules/fglrx/build_mod/2.6.x/agpgart_be.c:7136: error: structure に `slot_name' という名前のメンバはありません /lib/modules/fglrx/build_mod/2.6.x/agpgart_be.c:7156: error: structure に `slot_name' という名前のメンバはありません /lib/modules/fglrx/build_mod/2.6.x/agpgart_be.c:7161: error: structure に `slot_name' という名前のメンバはありません /lib/modules/fglrx/build_mod/2.6.x/agpgart_be.c:7187: error: structure に `slot_name' という名前のメンバはありません /lib/modules/fglrx/build_mod/2.6.x/agpgart_be.c:7207: error: structure に `slot_name' という名前のメンバはありません /lib/modules/fglrx/build_mod/2.6.x/agpgart_be.c:7227: error: structure に `slot_name' という名前のメンバはありません /lib/modules/fglrx/build_mod/2.6.x/agpgart_be.c:7232: error: structure に `slot_name' という名前のメンバはありません /lib/modules/fglrx/build_mod/2.6.x/agpgart_be.c: In function `__fgl_agp_init': /lib/modules/fglrx/build_mod/2.6.x/agpgart_be.c:7613: 警告: `pm_register' is deprecated (declared at include/linux/pm.h:106) /lib/modules/fglrx/build_mod/2.6.x/agpgart_be.c: In function `__fgl_agp_cleanup': /lib/modules/fglrx/build_mod/2.6.x/agpgart_be.c:7623: 警告: `pm_unregister_all' is deprecated (declared at include/linux/pm.h:116) make[2]: *** [/lib/modules/fglrx/build_mod/2.6.x/agpgart_be.o] エラー 1 make[1]: *** [_module_/lib/modules/fglrx/build_mod/2.6.x] エラー 2 make[1]: Leaving directory `/usr/src/kernels/2.6.11-1.1363' make: *** [kmod_build] エラー 2 build failed with return value 2
調べていくといつからかはわからないがカーネルの方で構造体が変更されたらしい。
参考:[http://www.ussg.iu.edu/hypermail/linux/kernel/0503.0/1546.html:title=[PATCH] convert pci_dev->slot_name usage to pci_name()
]
よってdev->slot_nameとなっている部分を全てpci_name(dev)に書き直した。
そして再ビルド。なんの問題もなく通った。
これで新しいカーネルでも3Dアクセラレートが効く。