Re: Memory mapped IO vs Port IO

From: Anthony Dominic Truong
Date: Fri Sep 12 2003 - 11:11:20 EST


On Thu, 2003-09-11 at 10:25, Andi Kleen wrote:
> On Thu, 11 Sep 2003 18:12:05 +0100
> Jamie Lokier <jamie@xxxxxxxxxxxxx> wrote:
>
> > Andi Kleen wrote:
> > > Even a memory write is tens to hundres of cycles.
> >
> > Not from the CPU's perspective. It is done in parallel with other
> > instructions.
>
> Only when there are more instructions to execute. But device
> driver code often does a following read e.g. to check if it can submit
> another request to the hardware.
>
> My claim is basically:
>
> Change everybody who currently does
>
> #ifdef CONFIG_MMIO
> writel(... )
> readl(...)
> #else
> outl( ... )
> inl ( ...)
> #endif
>
> to
> if (dev->mmio) {
> writel();
> real();
> } else {
> outl();
> inl();
> }
>
> and you will have a hard time to benchmark the difference on any non
> ancient system
> in actual driver operation.
>
> -Andi
>
Hello,
Wouldn't it be better if we set the IN and OUT function pointers to the
right functions during driver init. based on the setting of dev->mmio.
And throughout the driver, we just call the IN and OUT functions by
their pointers. Then we don't have to do if (dev->mmio) every time.
It's similar to the concept of virtual member function in C++.

ADT

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