Thread (74 messages) flat view 74 messages, 13 authors, 2012-02-28
STALE5270d

[PATCH 13/15] ARM: make mach/io.h include optional

From: arnd@arndb.de (Arnd Bergmann)
Date: 2012-02-14 18:20:59

On Tuesday 14 February 2012, H Hartley Sweeten wrote:
outb(v,p)
{
        __iowmb();
        __raw_writeb(v, /* not sure what happens to the (void)p */ (void __iomem *)0);
}

To me the original one looks more correct. With Rob's change it looks to me like all
the in/out macros end up reading/writing to address 0.
Correct.
I don't get what's happening in Rob's change. Could you enlighten me?
This is the version that gets used when you have neither PCI nor ISA/PCMCIA.

Ideally we would turn outb into an undefined symbol so that we get a 
build error if someone tries to create a kernel that uses outb while
not providing any buses on which it has an effect. Doing that would
depend on a patch series that I started before but never completed,
to ensure that we don't actually try to build device drivers with port
I/O unless we also support one of the buses. The main problem is the 8250
device driver.

The macro from Rob's version always does a NULL pointer dereference, which
is still a bug, but much better than having a potential root hole from
letting (incorrectly built) ISA drivers poke at random addresses.

I guess it would make sense to split this patch into two separate ones,
one that moves all bogus definitions into a common place, and one that
changes them to the NULL pointer dereference.

	Arnd
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help