* Re: bogus barriers in sym53c8xx_2?
[not found] <200308192349.h7JNnrEK017626@napali.hpl.hp.com>
@ 2003-08-20 3:26 ` Matthew Wilcox
2003-08-20 3:43 ` Anton Blanchard
0 siblings, 1 reply; 3+ messages in thread
From: Matthew Wilcox @ 2003-08-20 3:26 UTC (permalink / raw)
To: davidm; +Cc: linux-ia64, linux-scsi
On Tue, Aug 19, 2003 at 04:49:53PM -0700, David Mosberger wrote:
> In drivers/scsi/sym53c8xx_2/sym_misc.h we find:
>
> #elif defined __ia64__
> #define __READ_BARRIER() __asm__ volatile("mf.a; mf" : : : "memory")
> #define __WRITE_BARRIER() __asm__ volatile("mf.a; mf" : : : "memory")
>
> based on the comments and the other implementations, these barriers
> are bogus and the "mf.a" should be dropped.
>
> Anyone know who wrote this code originally and why the mf.a was added?
>
> mf.a is very slow and should be avoided except were truly needed.
I'm sure Gerard must have written it originally. It's there
in the earliest version of the sym2 driver I can find --
sym-2.1.16a-for-linux-2.4.13.patch.gz. A similar barrier is there in
the sym1 driver (drivers/scsi/sym53c8xx_defs.h). It seems to have been
introduced around 2.4.3 (symbios driver version 1.6b -> 1.7.3a-20010304)
So you're looking for a patch which looks something like this:
- #define __READ_BARRIER() __asm__ volatile("mf.a; mf" : : : "memory")
- #define __WRITE_BARRIER() __asm__ volatile("mf.a; mf" : : : "memory")
+ #define __READ_BARRIER() __asm__ volatile("mf" : : : "memory")
+ #define __WRITE_BARRIER() __asm__ volatile("mf" : : : "memory")
Or really, might be better to just define them to rmb() and wmb()?
--
"It's not Hollywood. War is real, war is primarily not about defeat or
victory, it is about death. I've seen thousands and thousands of dead bodies.
Do you think I want to have an academic debate on this subject?" -- Robert Fisk
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: bogus barriers in sym53c8xx_2?
2003-08-20 3:26 ` bogus barriers in sym53c8xx_2? Matthew Wilcox
@ 2003-08-20 3:43 ` Anton Blanchard
2003-08-21 19:34 ` David Mosberger
0 siblings, 1 reply; 3+ messages in thread
From: Anton Blanchard @ 2003-08-20 3:43 UTC (permalink / raw)
To: Matthew Wilcox; +Cc: davidm, linux-ia64, linux-scsi
> I'm sure Gerard must have written it originally. It's there
> in the earliest version of the sym2 driver I can find --
> sym-2.1.16a-for-linux-2.4.13.patch.gz. A similar barrier is there in
> the sym1 driver (drivers/scsi/sym53c8xx_defs.h). It seems to have been
> introduced around 2.4.3 (symbios driver version 1.6b -> 1.7.3a-20010304)
>
> So you're looking for a patch which looks something like this:
>
> - #define __READ_BARRIER() __asm__ volatile("mf.a; mf" : : : "memory")
> - #define __WRITE_BARRIER() __asm__ volatile("mf.a; mf" : : : "memory")
> + #define __READ_BARRIER() __asm__ volatile("mf" : : : "memory")
> + #define __WRITE_BARRIER() __asm__ volatile("mf" : : : "memory")
>
> Or really, might be better to just define them to rmb() and wmb()?
I suspect so, the powerpc ones are overkill too:
#define __READ_BARRIER() __asm__ volatile("eieio; sync" : : : "memory")
#define __WRITE_BARRIER() __asm__ volatile("eieio; sync" : : : "memory")
Anton
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: bogus barriers in sym53c8xx_2?
2003-08-20 3:43 ` Anton Blanchard
@ 2003-08-21 19:34 ` David Mosberger
0 siblings, 0 replies; 3+ messages in thread
From: David Mosberger @ 2003-08-21 19:34 UTC (permalink / raw)
To: Anton Blanchard; +Cc: Matthew Wilcox, davidm, linux-ia64, linux-scsi
I didn't see any followup. Gerard, do you have any comments?
I'm inclined to drop the #ifdef __ia64 part. Also, I think
Matthew's suggestion to use rmb()/wmb() for the generic case
is a good one (though it makes no difference for ia64).
--david
>>>>> On Wed, 20 Aug 2003 13:43:18 +1000, Anton Blanchard <anton@samba.org> said:
>> I'm sure Gerard must have written it originally. It's there in
>> the earliest version of the sym2 driver I can find --
>> sym-2.1.16a-for-linux-2.4.13.patch.gz. A similar barrier is
>> there in the sym1 driver (drivers/scsi/sym53c8xx_defs.h). It
>> seems to have been introduced around 2.4.3 (symbios driver
>> version 1.6b -> 1.7.3a-20010304)
>> So you're looking for a patch which looks something like this:
>> - #define __READ_BARRIER() __asm__ volatile("mf.a; mf" : : :
>> "memory") - #define __WRITE_BARRIER() __asm__ volatile("mf.a; mf"
>> : : : "memory") + #define __READ_BARRIER() __asm__ volatile("mf"
>> : : : "memory") + #define __WRITE_BARRIER() __asm__ volatile("mf"
>> : : : "memory")
>> Or really, might be better to just define them to rmb() and
>> wmb()?
Anton> I suspect so, the powerpc ones are overkill too:
Anton> #define __READ_BARRIER() __asm__ volatile("eieio; sync" : : :
Anton> "memory") #define __WRITE_BARRIER() __asm__ volatile("eieio;
Anton> sync" : : : "memory")
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2003-08-21 19:34 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <200308192349.h7JNnrEK017626@napali.hpl.hp.com>
2003-08-20 3:26 ` bogus barriers in sym53c8xx_2? Matthew Wilcox
2003-08-20 3:43 ` Anton Blanchard
2003-08-21 19:34 ` David Mosberger
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox