Re: [PATCH] MIPS: Implement __read_mostly

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 10/15/2010 04:25 AM, Gleb O. Raiko wrote:
On 14.10.2010 23:36, David Daney wrote:
diff --git a/arch/mips/kernel/setup.c b/arch/mips/kernel/setup.c
--- a/arch/mips/kernel/setup.c
+++ b/arch/mips/kernel/setup.c
@@ -69,7 +69,7 @@ static char __initdata
builtin_cmdline[COMMAND_LINE_SIZE] = CONFIG_CMDLINE;
* mips_io_port_base is the begin of the address space to which x86 style
* I/O ports are mapped.
*/
-const unsigned long mips_io_port_base __read_mostly = -1;
+const unsigned long mips_io_port_base = -1;
EXPORT_SYMBOL(mips_io_port_base);

While we're here could we eliminate mips_io_port_base for boards that
don't need it.


That is a logically separate issue, so would be the subject of a different patch. I don't personally plan on working on it, but would be happy to review anything someone else came up with.

David Daney


Now, it almost might be done by defining something like
__swizzle_addr_[bwlq](port) ((port) - mips_io_port_base)

Unfortunately, __swizzle_addr_[bwlq] is also used for memory acceeses
too (in read/write[bwlq]), so definition above doesn't work.

By providing two variants, e.g. __swizzle_io_addr_[bwlq] and
__swizzle_mem_addr_[bwlq] we can eliminate unnecessary loads of
mips_io_port_base.

BTW, in recent kernels the trick with mips_io_port_base doesn't work
well anyway. The solely purpose of the trick was to prevent loading of
mips_io_port_base across function calls. Now drivers tend to use
ioread/iowrite that don't use mips_io_port_base at all or use its own
wrappers for in/out[bwlq] that _do_ load mips_io_port_base on every call.

Gleb.





[Index of Archives]     [Linux MIPS Home]     [LKML Archive]     [Linux ARM Kernel]     [Linux ARM]     [Linux]     [Git]     [Yosemite News]     [Linux SCSI]     [Linux Hams]

  Powered by Linux