lkml.org 
[lkml]   [2003]   [Dec]   [16]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: PCI Express support for 2.4 kernel
On Wed, 17 Dec 2003, Vladimir Kondratiev wrote:

> Arjan van de Ven wrote:
>
> >>>+ /* dummy read to flush PCI write */
> >>>+ readb(addr);
> >>>
> >>>
> >>This is going to choke some hardware, I guarantee.
> >>
> >>You always want to make sure your flush is of the same size at the
> >>write. Reading a byte from an address that the hardware defines as
> >>"32-bit writes only" can get ugly real quick ;-)
> >>
> >>
> >
> >also reading back addr might not be the best choice in case some
> >registers have side effects on reading, it's probably better to read
> >back an address that is known to be ok to read (like the vendor ID
> >field)
> >
> >
> >
> Good idea!


You should not abitrarily flush all the writes with a read
after each write. The PCI/Bus is a FIFO, stuff will get to
the hardware in the order written. If you "flush" every write,
you will seriously hurt the performance. I don't like that
MACRO/Function, whatever it is with the switch shown previously.
All that code just for a "@(*^&$(*^(" write will screw up
performance. I've looked at the result of some the the MACRO
expansions, in particular the get_user, put_user, and copy_to/from
macros where there is a switch. It is not pre-processed out.


Cheers,
Dick Johnson
Penguin : Linux version 2.4.22 on an i686 machine (797.90 BogoMips).
Note 96.31% of all statistics are fiction.


-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/

\
 
 \ /
  Last update: 2005-03-22 13:59    [W:0.291 / U:0.300 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site