Dear all,
I had been spend a hell lot of time to get my Asus A7V8X running under SuSE 9.0 using the build in Promise controller 20376. I use the partial open source driver given to the world by Promise.
Unfortunately this package doesn't work straight under SuSE 9.0. What you get is an "UNDEFINED SYMBOL schedule" error when you try to insmod ft3xx.o after make.
After a long time googling I figured out that there is a change (apparently since SuSE 8.2) with resepct to this system call. It had been renamed to "do_schedule".To make things worse, this schedule call is done within in the proritary part of the driver, the file called ftlib.o (as you can easily see by sending a grep --binary-file=text "schedule" ftlib (while "do_Schedule" results in no match).
Well, I probably need to point out that I am a fuc... newbie when it comes to Linux so there may be much cooler solutions to the problem, yet I didn't find them when searching the web.
What you need to do is to cheat the system by convincing the driver to use the real do_schedule (which does the same as schedule as I have read).
This can be established as follow:
Load the driver from the promise(d) site (Version 1.00.0.15 23-sep-2003):
http://www.promise.com/support/downl...egory=All&os=4
Unpack the archive to e.g. /tmp/promise
Open the Makefile in your favourite editor and change the following lines at the end. The modifications are using SuSE and using the --wrap schedule linker command.:
###########################################
#choose a parameter for your system.
#default is INDEP386
#.c.o: ; $(CC) $(INDEP386) -c $*.c
#.c.o: ; $(CC) $(DEP386) -c $*.c
.c.o: ; $(CC) $(SuSE_TB) -c $*.c
#.c.o: ; $(CC) $(MDK) -c $*.c
#.c.o: ; $(CC) $(SMP22x) -c $*.c
#.c.o: ; $(CC) $(ARM) -c $*.c
###########################################
all : $(FT)
ld --wrap schedule -r -o ft3xx.o $(FT) ftlib.o ; rm -f fasttrak.o
ftlib : $(FTLIB)
ld --wrap schedule -r -o ftlib.o $(FTLIB)
cyc : $(FTLIB) $(FT)
ld --wrap schedule -r -o ft3xx.o $(FT) $(FTLIB)
clean :
rm -f ft3xx.o $(FT)
clean2 :
rm -f *.o
########### END OF MAKEFILE ########
Now we need to modify the fasttrak.c file
I inserted this function __wrap_schedule between the ft3xx_proc_info and the int ft3xx_ioctl function code (of course not within them)
void __wrap_schedule(void)
{
return(do_schedule());
}
Now you can punsh in ( assuming that you are in the directory were your promise files are) make and voila you get ft3xx.o
(Those of you who wanna play arround with kernel stuff may want to do some "make config" changes under /usr/src/linux, yet I am to stupid so I did not do that).
Copy this file to the appropriate directory e.g.
cp ft3xx.o /lib/modules/YOUR-VERSION-HERE/kernel/drivers/scsi
Now you start YaST2 and open System and Editor etc/sysconfig
There you open System->Kernel->INITRD_MODULES
Modify the command line as follows "scsi_mod sd_mod ft3xx ataraid reiserfs" (it is important that ft3xx is located after scsi_mod and sd_mod
Now you may wanna have the driver also present on each boot
Therefore you edit a file called boot.ut in /etc/rc.d
With this content:
#! /bin/sh
#Promise Fasttrak Driver (ft3xx)
insmod ft3xx >/dev/null 2>&1
Change the rights with chmod 755 boot.ut
and give a symbolic link from /etc/rc.d/boot.d to this file
(ln -s /etc/rc.d/boot.ut /etc/rc.d/boot.d/S01boot.ut)
I used the comand makedevs sd\* (which you may need to install from the SuSE CD) but it may work withou that since /dev/sda etc ar e lready present.
If you have setup a RAID in the Promise Bios (at least a pro forma "Striping if you have just one drive) SuSE should find the drive and you can partition.
Enjoy.
WARNING:
I just did that and wanted to share this with you. I don't know if it'll proof stable, so use at your own risc. Remember that I am a NEWBIE !!!
Let me know what you think of this.