<div>hello</div>
<div>i am working at PXA9xx chip. It has two DDR banks, and each bank is 256MB. In order to get more kernel virtual address, i have enabled CONFIG_HIGHMEM, and make the second bank to be high memory. It means that i have one bank starting virtual address from 0xC0000000 as low memory, and the second bank is high memory.</div>

<div>I have compiled a module which will make use of graphics accelarate function in PXA9XX. The module works fine when CONFIG_HIGHMEM is not enabled. I can successfully insert the module. But when CONFIG_HIGHMEM is enabled, i fail to insert this module, and it reports the error likes:</div>

<div> </div>
<div>graphics: relocation out of range, section 2 reloc 315 sym &#39;__kmalloc&#39;</div>
<div>Module len 32542 truncated</div>
<div> </div>
<div>I searched the kernel source, and find it is reported by arch/arm/kernel/module.c. It seems that the symbols in the relocation section can not be relocated because the section only relocate the symbols in offset of 24 bits.</div>

<div>I think this issue is related to CONFIG_HIGHMEM. Can anyone help me about the root cause of the issue and how to fix it? </div>
<div> </div>
<div>Thanks.</div>
<div>Chao</div>