Martin Bochnig wrote: > Userland support for dri/drm on SPARC is already working as of now, credits > to the Xorg developers. > > However, some drm kernel support for sparcv9 please ... > (first the generic drm support from intel and common, then device specific > ati [mach64, r128, radeon] and ffb support from linux) > Looks promising already: > > > [...] > ultrasparc -mvis -fno-strict-aliasing -fno-unit-at-a-time > -fno-optimize-sibling-calls -O2 -D_ASM_INLINES -Wall -Wno-unknown-pragmas > -Wno-missing-braces -Wno-sign-compare -Wno-parentheses -Wno-uninitialized > -Wno-implicit-function-declaration -Wno-unused -Wno-trigraphs > -Wno-char-subscripts -Wno-switch -Werror -gdwarf-2 -std=gnu99 > -fno-dwarf2-indirect-strings -std=gnu99 -mno-fpu -D_KERNEL -ffreestanding > -D_SYSCALL32 -D_SYSCALL32_IMPL -D_ELF64 -D_DDI_STRICT -Dsun -D__sun -D__SVR4 > -Dsun4u -D_MACHDEP -DSFMMU -DSPITFIRE_MINREV_SUPPORTED=0x21 -DSF_ERRATA_30 > -DBB_ERRATA_1 -DSF_ERRATA_32 -DSF_ERRATA_51 -DSF_ERRATA_54 -DSF_ERRATA_57 > -DSF_V9_TABLE_28 -DCHEETAH_MINREV_SUPPORTED=0x30 -DCHEETAHPLUS_ERRATUM_25 > -DCHEETAH_ERRATUM_109 -DCHEETAH_ERRATUM_127 -DJALAPENO_ERRATA_85 > -DCHEETAHPLUS_ERRATUM_34 -DC2_AUDIT -I../../intel/io/drm -I../../sun4 > -I../../sun4u -I../../sfmmu -I../../sparc/v9 -I../../sparc -I../../sun > -nostdinc -I../../common -c -o obj64/drm_scatter.o > ../../common/io/drm/drm_scatt > er.c > /MartUX_0.3/usr/src/tools/proto/opt/onbld/bin/sparc/ctfconvert -i -L VERSION > obj64/drm_scatter.o > /usr/ccs/bin/ld -r -o obj64/drm obj64/drm_sunmod.o obj64/drm_kstat.o > obj64/drm_agpsupport.o obj64/drm_asm.o obj64/drm_auth.o obj64/drm_bufs.o > obj64/drm_context.o obj64/drm_dma.o obj64/drm_drawable.o obj64/drm_drv.o > obj64/drm_fops.o obj64/drm_ioctl.o obj64/drm_irq.o obj64/drm_lock.o > obj64/drm_memory.o obj64/drm_msg.o obj64/drm_pci.o obj64/drm_scatter.o > ld: fatal: file obj64/drm_asm.o: open failed: No such file or directory > ld: fatal: File processing errors. No output written to obj64/drm > *** Error code 1 > make: Fatal error: Command failed for target `obj64/drm' > Current working directory /MartUX_0.3/usr/src/uts/intel/drm > *** Error code 1 > The following command caused the error: > BUILD_TYPE=OBJ64 VERSION='MartUX_0.3' make def.targ > make: Fatal error: Command failed for target `def.obj64' > Current working directory /MartUX_0.3/usr/src/uts/intel/drm > bash-3.00$ pwd > /MartUX_0.3/usr/src/uts/intel/drm > bash-3.00$ ls -al > total 194 > drwxr-xr-x 3 bochnig other 512 Sep 19 03:54 . > drwxr-xr-x 361 bochnig other 6144 Aug 16 08:10 .. > -rw-r--r-- 1 bochnig other 84478 Sep 19 03:54 .make.state > -rw-r--r-- 1 bochnig other 2252 Sep 19 03:53 Makefile > -rw-r--r-- 1 bochnig other 2252 Aug 16 08:10 Makefile__ORIG > drwxr-xr-x 2 bochnig other 512 Sep 19 03:54 obj64 > bash-3.00$ ls -al obj64 > total 546 > drwxr-xr-x 2 bochnig other 512 Sep 19 03:54 . > drwxr-xr-x 3 bochnig other 512 Sep 19 03:54 .. > -rw-r--r-- 1 bochnig other 18456 Sep 19 03:53 drm_agpsupport.o > -rw-r--r-- 1 bochnig other 12680 Sep 19 03:54 drm_auth.o > -rw-r--r-- 1 bochnig other 27200 Sep 19 03:54 drm_bufs.o > -rw-r--r-- 1 bochnig other 17704 Sep 19 03:54 drm_context.o > -rw-r--r-- 1 bochnig other 11600 Sep 19 03:54 drm_dma.o > -rw-r--r-- 1 bochnig other 10320 Sep 19 03:54 drm_drawable.o > -rw-r--r-- 1 bochnig other 59032 Sep 19 03:54 drm_drv.o > -rw-r--r-- 1 bochnig other 10840 Sep 19 03:54 drm_fops.o > -rw-r--r-- 1 bochnig other 15776 Sep 19 03:54 drm_ioctl.o > -rw-r--r-- 1 bochnig other 13360 Sep 19 03:54 drm_irq.o > -rw-r--r-- 1 bochnig other 11296 Sep 19 03:53 drm_kstat.o > -rw-r--r-- 1 bochnig other 13304 Sep 19 03:54 drm_lock.o > -rw-r--r-- 1 bochnig other 13256 Sep 19 03:54 drm_memory.o > -rw-r--r-- 1 bochnig other 1728 Sep 19 03:54 drm_msg.o > -rw-r--r-- 1 bochnig other 16136 Sep 19 03:54 drm_pci.o > -rw-r--r-- 1 bochnig other 12480 Sep 19 03:54 drm_scatter.o > -rw-r--r-- 1 bochnig other 2976 Sep 19 03:53 drm_sunmod.o > bash-3.00$ uname -a > SunOS SunBlade-2000 5.11 snv_70 sun4u sparc SUNW,Sun-Blade-1000 > bash-3.00$ /usr/bin/isainfo -k > sparcv9 > > > p.s. Posted to xwin and CC'ed to indiana again, as I hope indiana will also > ship for SPARC one day (next March?). > > %m >
"drm" and "i915" kernel modules successfully built for sparcv9, but a number of unresolved symbols. Should not be too difficult to fix. Note: "drm" is the general device-independant part. "i915" is the device-specific one. One would have them in [...]/kernel/drv/'isainfo -k'/i915 and [...]/kernel/misc/'isainfo -k'/drm. "drm" is a submodule that gets pre-loaded by the device-specific modules, currently limited to i915 on Solaris. But the framework should be rather easily extensible to cover the other chipsets already supported on linux and bsd. References: http://www.opensolaris.org/os/community/on/flag-days/pages/2006102901/ http://webcvs.freedesktop.org/dri/drm/bsd-core/ http://bolthole.com/solaris/drivers/DRI.html http://dri.freedesktop.org/wiki/Solaris?highlight=%28CategoryOperatingSystem%29 http://webcvs.freedesktop.org/dri/drm/linux-core/README.drm?revision=1.1.1.4 Here the currently missing symbols: Sep 19 08:25:35 SunBlade-2000 krtld: [ID 826211 kern.notice] 'drm_find_file_by_proc' Sep 19 08:25:35 SunBlade-2000 krtld: [ID 472681 kern.notice] WARNING: mod_load: cannot load module 'i915' Sep 19 08:25:35 SunBlade-2000 krtld: [ID 749970 kern.notice] WARNING: i915: Sep 19 08:25:35 SunBlade-2000 krtld: [ID 225575 kern.notice] unable to resolve dependency, module 'misc/drm' not found Sep 19 08:26:06 SunBlade-2000 krtld: [ID 819705 kern.notice] /kernel/misc/sparcv9/drm: undefined symbol Sep 19 08:26:06 SunBlade-2000 krtld: [ID 826211 kern.notice] 'find_first_zero_bit' Sep 19 08:26:06 SunBlade-2000 krtld: [ID 819705 kern.notice] /kernel/misc/sparcv9/drm: undefined symbol Sep 19 08:26:06 SunBlade-2000 krtld: [ID 826211 kern.notice] 'test_and_set_bit' Sep 19 08:26:06 SunBlade-2000 krtld: [ID 819705 kern.notice] /kernel/misc/sparcv9/drm: undefined symbol Sep 19 08:26:06 SunBlade-2000 krtld: [ID 826211 kern.notice] 'atomic_cmpset_int' Sep 19 08:26:06 SunBlade-2000 krtld: [ID 819705 kern.notice] /kernel/misc/sparcv9/drm: undefined symbol Sep 19 08:26:06 SunBlade-2000 krtld: [ID 826211 kern.notice] 'set_bit' Sep 19 08:26:06 SunBlade-2000 krtld: [ID 819705 kern.notice] /kernel/misc/sparcv9/drm: undefined symbol Sep 19 08:26:06 SunBlade-2000 krtld: [ID 826211 kern.notice] 'clear_bit' Sep 19 08:26:06 SunBlade-2000 krtld: [ID 472681 kern.notice] WARNING: mod_load: cannot load module 'drm' Sep 19 08:26:06 SunBlade-2000 krtld: [ID 819705 kern.notice] /kernel/drv/sparcv9/i915: undefined symbol Sep 19 08:26:06 SunBlade-2000 krtld: [ID 826211 kern.notice] 'drm_irq_uninstall' Sep 19 08:26:06 SunBlade-2000 krtld: [ID 819705 kern.notice] /kernel/drv/sparcv9/i915: undefined symbol Sep 19 08:26:06 SunBlade-2000 krtld: [ID 826211 kern.notice] 'agpmaster_ioctl' Sep 19 08:26:06 SunBlade-2000 krtld: [ID 819705 kern.notice] /kernel/drv/sparcv9/i915: undefined symbol Sep 19 08:26:06 SunBlade-2000 krtld: [ID 826211 kern.notice] 'drm_debug_flag' Sep 19 08:26:06 SunBlade-2000 krtld: [ID 819705 kern.notice] /kernel/drv/sparcv9/i915: undefined symbol Sep 19 08:26:06 SunBlade-2000 krtld: [ID 826211 kern.notice] 'drm_alloc' Sep 19 08:26:06 SunBlade-2000 krtld: [ID 819705 kern.notice] /kernel/drv/sparcv9/i915: undefined symbol Sep 19 08:26:06 SunBlade-2000 krtld: [ID 826211 kern.notice] 'drm_close' Sep 19 08:26:06 SunBlade-2000 krtld: [ID 819705 kern.notice] /kernel/drv/sparcv9/i915: undefined symbol Sep 19 08:26:06 SunBlade-2000 krtld: [ID 826211 kern.notice] 'drm_debug' Sep 19 08:26:06 SunBlade-2000 krtld: [ID 819705 kern.notice] /kernel/drv/sparcv9/i915: undefined symbol Sep 19 08:26:06 SunBlade-2000 krtld: [ID 826211 kern.notice] 'drm_error' Sep 19 08:26:06 SunBlade-2000 krtld: [ID 819705 kern.notice] /kernel/drv/sparcv9/i915: undefined symbol Maybe soon ... %m p.s. Sorry for cross-posting. But at least I, as a SPARC user, find this important enough. Further: It actually also covers enhancing DRI support to the missing chipsets on x64/x86, because the framework of the ported i915 can easily be cloned for the other devices.
