On Tue, Jun 01, 2021 at 02:54:15PM +0100, Russell King (Oracle) wrote: > On Mon, May 31, 2021 at 03:29:56PM +0300, Mike Rapoport wrote: > > + code_resource.start = __pa_symbol(_text); > > + code_resource.end = __pa_symbol(_etext)-1; > > + rodata_resource.start = __pa_symbol(__start_rodata); > > + rodata_resource.end = __pa_symbol(__end_rodata)-1; > > + data_resource.start = __pa_symbol(_sdata); > > + data_resource.end = __pa_symbol(_edata)-1; > > + bss_resource.start = __pa_symbol(__bss_start); > > + bss_resource.end = __pa_symbol(__bss_stop)-1; > > This falls short on 32-bit ARM. The old code was: > > - kernel_code.start = virt_to_phys(_text); > - kernel_code.end = virt_to_phys(__init_begin - 1); > - kernel_data.start = virt_to_phys(_sdata); > - kernel_data.end = virt_to_phys(_end - 1); > > If I look at one of my kernels: > > c0008000 T _text > c0b5b000 R __end_rodata > ... exception and unwind tables live here ... > c0c00000 T __init_begin > c0e00000 D _sdata > c0e68870 D _edata > c0e68870 B __bss_start > c0e995d4 B __bss_stop > c0e995d4 B _end > > So the original covers _text..__init_begin-1 which includes the > exception and unwind tables. Your version above omits these, which > leaves them exposed. Right, this needs to be fixed. Is there any reason the exception and unwind tables cannot be placed between _sdata and _edata? It seems to me that they were left outside for purely historical reasons. Commit ee951c630c5c ("ARM: 7568/1: Sort exception table at compile time") moved the exception tables out of .data section before _sdata existed. Commit 14c4a533e099 ("ARM: 8583/1: mm: fix location of _etext") moved _etext before the unwind tables and didn't bother to put them into data or rodata areas. -- Sincerely yours, Mike.