Re: Wiki section "Building Only Kernel Modules" incomplete

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



I appreciate the offer.

I'll post a tarball to our website if it would help at all, but what's going on should be fairly straightforward.

The project is in the directory "tx4650" (yes, it's the drivers for the Promise "FastTrak TX4650" RAID controller).

The module t3sas.ko gets built from either ftlib/ftlib.obj.32 or ftlib/ftlib.obj.64 (i386 or x86_64, respectively) being linked against the dot-ohs from the linux/ subdirectory.

The project originally wasn't written to use Kbuild.


### tx/Kbuild

$(warn ARCH=$(ARCH))

ifeq ($(ARCH),x86_64)
FTLIB := ftlib/ftlib.obj.64
else
FTLIB := ftlib/ftlib.obj.32
endif

$(warn FTLIB=$(FTLIB))

obj-m += t3sas.o
libs-m += linux/

t3sas-objs := linux/lib.a $(FTLIB)

clean:
	rm -f t3sas.o


So... in a nutshell: build the subdirectory "linux".  In it, it will build the target lib.a ...  Not sure if I needed to use $(obj) here or just keep things relative.

Then link the ftlib.obj.* of the appropriate architecture to the linux/lib.a file.  Voila.  Should be simple, right?

Except it's not building the "linux" directory...

### tx4650/linux/Kbuild
$(warn ARCH=$(ARCH))

ifeq ($(ARCH),x86_64)
ARCH_FLAGS := -D_AMD64B -D_64BPLATFORM
else
ARCH_FLAGS := -D_X8632B -D_32BPLATFORM
endif

# KSRC is $(TOPDIR) ???  need to get to the kernel includes...

cflags-y += \
	-Wno-multichar -D_LINUXDRIVER $(ARCH_FLAGS) -D_OBSOLETE_PROC_ \
	-I$(KSRC)/include -I$(KSRC)/include/scsi -I$(KSRC)/include/drivers/scsi \
	-I$(src)/.. -I$(src) -I$(src)/../include

$(warn cflags-y=$(cflags-y))

lib-m := osd_main.o osd_cmpi.o osd_cmpm.o osd_ioctl.o osd_timer.o

clean:
	rm -f *.o lib.a


And all this directory is supposed to do is build the 5 targets into lib.a with my special cflags.

Again, should be simple enough...

What am I missing?

-Philip



Eric Sandeen wrote:
Philip A. Prindeville wrote:
[ Resending per Jarod... ]

Ok, so the below thread has changed tracks...  I started looking at:

http://fedoraproject.org/wiki/Docs/CustomKernel?highlight=#Building_Only_Kernel_Modules


And saw, "*This section needs to be updated and fleshed out".  Yes,
indeed.  I'm trying to go by this section, but it's a little thin.

Who owns it?  I'd like to work with them on figuring out what needs to
be added to make it useful.

I know my way around kbuild pretty well too, if I can help let me know,
or if you have specific problems or examples I'd be willing to take a look.

See also Documentation/kbuild/ in the kernel tree, it's quite good.

Looking at the thread below, for cflags (including include paths) try
this section:

--- 3.7 Compilation flags

As for subdirs, and out-of-tree module builds, last I checked it really
all wants to be driven from one Makefile at the top (of the module dir).

-Eric

Thanks,

-Philip

==== Original thread below ====

*Philip A. Prindeville wrote:
Jerry Amundson wrote:
On 12/21/08, Jerry Amundson <jamundso@xxxxxxxxx> wrote:
On 12/21/08, Philip A. Prindeville <philipp_subx@xxxxxxxxxxxxxxxxxxxxx>
wrote:
I was going to build an RPM for the modules for the Promise FastTrak
TX4650 PCI-e RAID controller for FC9.

Their support website claims it's supported "in-box" in FC9, but it
turns out that's not true:

$ lspci -v -s 02:00.0
02:00.0 RAID bus controller: Promise Technology, Inc. Unknown device 3f20
    Subsystem: Promise Technology, Inc. Unknown device 3f22
    Flags: bus master, fast devsel, latency 0, IRQ 10
    I/O ports at dc00 [size=128]
    I/O ports at d800 [size=256]
    Memory at fbeff000 (32-bit, non-prefetchable) [size=4K]
    Memory at fbec0000 (32-bit, non-prefetchable) [size=128K]
    Memory at fbefc000 (32-bit, non-prefetchable) [size=8K]
    Expansion ROM at fbe80000 [disabled] [size=256K]
    Capabilities: [50] Power Management version 2
    Capabilities: [70] Express Legacy Endpoint, MSI 00
    Capabilities: [94] SATA HBA <?>
    Capabilities: [100] Advanced Error Reporting <?>
    Capabilities: [140] Virtual Channel <?>
    Capabilities: [160] Device Serial Number 01-00-00-00-02-00-00-00
    Capabilities: [170] Power Budgeting <?>


so...  I downloaded their drivers from their website:

http://www.promise.com/upload/Support/Driver/FT%20TX4650-2650%20Linux%20Kernl%202.6%20PSC%20v1.1.0.12.tgz

(Yes, I realize it will taint my kernel... and it doesn't include all of
the
source.)

I tried to build it, but getting into the kernel directory:
Don't start there. Start with the README of the source you downloaded.
And it looks like you'll some code fixing to get it to compile...
http://www.colinmackenzie.net/index.php?option=com_content&view=article&id=12:promise-satasas-driver-update-tx4650tx2650&catid=8:rotator&Itemid=7

jerry

I saw the more recent postings...

My understanding is that the TX4650 has the RAID-5 XOR ASICs to accelerate the reed-solomon code calculations... hence my wanting to use this driver.

I picked up the patches that you pointed me at (including "The Czar's", which was necessary to compile on 2.6.25 and subsequent)...

Then I looked at:

http://fedoraproject.org/wiki/Docs/CustomKernel?highlight=#Building_Only_Kernel_Modules


but had some questions about that.

The example is a little thin. It doesn't explain what to do if you need to pass in extra C flags, extra include directories, or if your driver has several subdirectories that need to be compiled and linked together (or if it is a partial-source release, and has canned object files that also need to be linked in).

Anyone have a real-life example that they can point me at that does this?

Thanks,

-Philip




_______________________________________________
Fedora-kernel-list mailing list
Fedora-kernel-list@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/fedora-kernel-list

[Index of Archives]     [Fedora General Discussion]     [Older Fedora Users Archive]     [Fedora Advisory Board]     [Fedora Security]     [Fedora Devel Java]     [Fedora Legacy]     [Fedora Desktop]     [ATA RAID]     [Fedora Marketing]     [Fedora Mentors]     [Fedora Package Announce]     [Fedora Package Review]     [Fedora Music]     [Fedora Packaging]     [Centos]     [Fedora SELinux]     [Coolkey]     [Yum Users]     [Tux]     [Yosemite News]     [KDE Users]     [Fedora Art]     [Fedora Docs]     [USB]     [Asterisk PBX]

  Powered by Linux