[lkml]   [2002]   [Feb]   [19]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
    SubjectRe: readl/writel and memory barriers
    On Tue, Feb 19, 2002 at 03:11:45PM -0500, Dan Maas wrote:
    > I have a hunch that many drivers will break if you change the semantics of
    > readX/writeX from in-order to out-of-order - lots of drivers are only
    > developed & tested on x86, which completely hides the issue...

    Fortunately, I don't think things are quite that bad. As David
    pointed out, on ia64 the readX/writeX stuff is ordered coming out of
    the CPU, so if you're in a spinlock protected region, for example, all
    the reads/writes you do will occur in order. The problem that I'm
    trying to solve is that on some platforms, I/O space references won't
    necessarily occur in order if they come from different CPUs. E.g.
    after you do some I/O and drop a spinlock, another CPU may pick it up
    and start doing some I/O that *may* get intermixed with the I/O from
    the previous holder of the spinlock unless you explicity barrier said

    Any ideas on how to address this issue? I was thinking of either
    introducing an I/O space barrier (currently called mmiob() in the 2.5
    ia64 patch) or taking the performance hit in mb, rmb, and wmb, as well
    as readX/writeX to ensure proper ordering. Or, as I mentioned in
    another mail, we could have a special io_spin_unlock routine that does
    the barrier for you. Comments?

    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to
    More majordomo info at
    Please read the FAQ at

     \ /
      Last update: 2005-03-22 13:18    [W:0.023 / U:6.364 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site