Thread (20 messages) 20 messages, 5 authors, 2002-05-30

Re: Another OCP enet patch

From: David Gibson <hidden>
Date: 2002-05-30 03:09:33

On Wed, May 29, 2002 at 11:02:09AM -0400, Dan Malek wrote:
David Gibson wrote:

quoted
I agree it must not depend on PCI functions, but I don't see the
problem with PCI headers (well, I do, but it seems less important than
other considerations).
OK.
quoted
...  consistent_sync() relies on the PCI direction
constants defined in linux/pci.h *now* - it checks them explicitly in
its switch statement (so does the ARM version).  That works fine,
because pci.h defines the direction constants even if CONFIG_PCI=n.
OK.
quoted
The constants don't really have anything to do with PCI, and are
already used for SBUS DMA directions on Sparc and IIRC for ISA DMA in
some places.  We're talking about whether the *callers* of
consistent_sync() should need pci.h.
I thought so, too.
quoted
Well, it looks like I'm not going to win this argument,
What argument are you trying to win?  I thought you were arguing
for changing the flags to consistent_sync(), but didn't like any
of the solutions?
I'm attempting to argue that changing the callers of consistent_sync()
to use the PCI_DMA_* constants (even if they're not PCI drivers) is a
lesser evil than ever calling consisent_sync() with constants of
different names to the ones checked inside, even if they have the same
values.

I do want to change the flags to consistent_sync() but only if we
change it everywhere, including in all the PCI stuff: that requires
convincing Linus, and probably won't happen at all in 2.4.
quoted
.... but calling
with one name for a constant and checking for another in the
implementation, relying on them to have the same value bothers me
much, much more that a few irrelevant PCI_ on the front of constant
names (which is not to say that the latter doesn't bother me at all).
I was just proposing a solution that addressed one of your other
concerns.  Requiring some flag values to be the same, but with
different names, isn't something unique here :-)
No, but it's the only instance I've come across recently in the stuff
I've been doing.  If I knew of other cases I'd think they were a Bad
Thing and want to change them too.
quoted
Ok, well if we have to have the two sets of constants, please lets put
them in io.h and not in ocp-dma.h.  They have nothing to do with OCP
(just as they have nothing to do with PCI).
We can't change the PCI names, so I just suggested we change the names to
consistent_sync(), define those in io.h (so non-PCI systems don't have to
include pci header files just to get a flag name), and put a big comment
around the flag definitions that they have to match the PCI_ names.
Well, I hope that we can change the PCI names in time.  When I get a
chance, I'll send a patch (against 2.5) to lkml.
I'm constantly reminded that Linux is full of hacks to meet its major design
goal of high performance.  This seems to fit nicely :-)

Or, as you said, just not use consistent_sync() in our PowerPC specific
software and call the dma_cache_* functions directly.
Or indeed the even more direct flush_dcache_range() etc.

--
David Gibson			| For every complex problem there is a
david@gibson.dropbear.id.au	| solution which is simple, neat and
				| wrong.  -- H.L. Mencken
http://www.ozlabs.org/people/dgibson

** Sent via the linuxppc-embedded mail list. See http://lists.linuxppc.org/
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help