public inbox for linux-scsi@vger.kernel.org
 help / color / mirror / Atom feed
* 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