I've had problems with the mpt2sas driver
(drivers/scsi/mpt2sas/mpt2sas_base.c) when using it on my
ppc44x. Basically, there is a check in the code for
BITS_PER_LONG and certain code is executed if it is 64 vs 32
bit. I am guessing it is a problem with the driver but it
only shows up on powerpc. If i force it to take the 64 bit
path it works fine, but if I let the preprocessor decide it
will take the 32 bit path and fail later. I am not
configuring my kernel as 64 bit, but I am guessing this has
to do with the 36 bit plb bus on these parts.
can somebody enlighten me as to what the right thing to do
here is?
thanks
ayman
On Wed, Jul 13, 2011 at 9:02 AM, Ayman El-Khashab [off-list ref] wro=
te:
I've had problems with the mpt2sas driver
(drivers/scsi/mpt2sas/mpt2sas_base.c) when using it on my
ppc44x. =A0Basically, there is a check in the code for
BITS_PER_LONG and certain code is executed if it is 64 vs 32
bit. =A0I am guessing it is a problem with the driver but it
only shows up on powerpc. =A0If i force it to take the 64 bit
path it works fine, but if I let the preprocessor decide it
will take the 32 bit path and fail later. =A0I am not
configuring my kernel as 64 bit, but I am guessing this has
to do with the 36 bit plb bus on these parts.
That seems like a good theory to me.
can somebody enlighten me as to what the right thing to do
here is?
I'd suggest changing the check in the driver away from BITS_PER_LONG
and try making the conditionals based on CONFIG_ARCH_DMA_ADDR_T_64BIT
instead. On machines with 36-bit physical addressing, that gets set
and it should fall into the code paths you say work.
josh