Warning about add_wired_entry
The earlier posting wrt. add_wired_entry reminded my of this long standing issue.
The kernel does not reserve any address space for use by add_wired_entry(). In other words there is the possibility that vmalloc, ioremap or other kernel APIs will use the same address space resulting in a crash or worse.
Currently there are three users of add_wired_entry:
- Alchemy
- Cavium
- Jazz
The interface itself also is hostile as it directly exposes the MIPS TLB registers to the C programmer so should die. And often wiring a TLB entry is a bad idea. TLB entries are a scarce resource and wasting them unwisely may impact performance. Especially on the lowest-end CPUs with just 16 TLB entries this can be significant but even on the high-end TLBs with 64 entries it's not always clear if wiring entries is a good idea. And there are a few core types that don't even have the capability of wiring entries.
Ralf
Quoted 3 lines · Ralf Baechle
The kernel does not reserve any address space for use by
add_wired_entry(). In other words there is the possibility that vmalloc, ioremap or other kernel APIs will use the same address space resulting in a crash or worse.
Thanks, I was not aware of that.
But what is the alternative ? I have an Alchemy 1550 board with an ethernet chip at 0xD-1000-0000, and last time I tried, enabling
CONFIG_64BIT_PHYS_ADDR,
CONFIG_ARCH_PHYS_ADDR_T_64BIT and CONFIG_PHYS_ADDR_T_64BIT
did not seem to allow access to the 36-bit I/O address space through the platform_get_resource/request_mem_region machinery. Is this supposed to work now ?
Pascal