Re: [PATCH] module: fix module load for ia64

2023-06-04 Thread Song Liu
On Sat, Jun 3, 2023 at 6:30 AM Frank Scheiner  wrote:
>
> On 29.05.23 01:00, Song Liu wrote:
> > Frank reported boot regression in ia64 as:
> >
> > ELILO v3.16 for EFI/IA-64
> > ..
> > Uncompressing Linux... done
> > Loading file AC100221.initrd.img...done
> > [0.00] Linux version 6.4.0-rc3 (root@x4270) (ia64-linux-gcc
> > (GCC) 12.2.0, GNU ld (GNU Binutils) 2.39) #1 SMP Thu May 25 15:52:20
> > CEST 2023
> > [0.00] efi: EFI v1.1 by HP
> > [0.00] efi: SALsystab=0x3ee7a000 ACPI 2.0=0x3fe2a000
> > ESI=0x3ee7b000 SMBIOS=0x3ee7c000 HCDP=0x3fe28000
> > [0.00] PCDP: v3 at 0x3fe28000
> > [0.00] earlycon: uart8250 at MMIO 0xf405 (options
> > '9600n8')
> > [0.00] printk: bootconsole [uart8250] enabled
> > [0.00] ACPI: Early table checksum verification disabled
> > [0.00] ACPI: RSDP 0x3FE2A000 28 (v02 HP)
> > [0.00] ACPI: XSDT 0x3FE2A02C CC (v01 HP rx2620
> >  HP   )
> > [...]
> > [3.793350] Run /init as init process
> > Loading, please wait...
> > Starting systemd-udevd version 252.6-1
> > [3.951100] [ cut here ]
> > [3.951100] WARNING: CPU: 6 PID: 140 at kernel/module/main.c:1547
> > __layout_sections+0x370/0x3c0
> > [3.949512] Unable to handle kernel paging request at virtual address
> > 1000
> > [3.951100] Modules linked in:
> > [3.951100] CPU: 6 PID: 140 Comm: (udev-worker) Not tainted 6.4.0-rc3 #1
> > [3.956161] (udev-worker)[142]: Oops 11003706212352 [1]
> > [3.951774] Hardware name: hp server rx2620   , BIOS
> > 04.29
> > 11/30/2007
> > [3.951774]
> > [3.951774] Call Trace:
> > [3.958339] Unable to handle kernel paging request at virtual address
> > 1000
> > [3.956161] Modules linked in:
> > [3.951774]  [] show_stack.part.0+0x30/0x60
> > [3.951774] sp=e00183a67b20
> > bsp=e00183a61628
> > [3.956161]
> > [3.956161]
> >
> > which bisect to module_memory change [1].
> >
> > Debug showed that ia64 uses some special sections:
> >
> > __layout_sections: section .got (sh_flags 1002) matched to MOD_INVALID
> > __layout_sections: section .sdata (sh_flags 1003) matched to MOD_INVALID
> > __layout_sections: section .sbss (sh_flags 1003) matched to MOD_INVALID
> >
> > All these sections are loaded to module core memory before [1].
> >
> > Fix ia64 boot by loading these sections to MOD_DATA (core rw data).
> >
> > [1] commit ac3b43283923 ("module: replace module_layout with module_memory")
> >
> > Fixes: ac3b43283923 ("module: replace module_layout with module_memory")
> > Reported-by: Frank Scheiner 
> > Closes: https://lists.debian.org/debian-ia64/2023/05/msg00010.html
> > Closes: https://marc.info/?l=linux-ia64=168509859125505
> > Cc: Linus Torvalds 
> > Signed-off-by: Song Liu 
> > ---
> >   kernel/module/main.c | 4 ++--
> >   1 file changed, 2 insertions(+), 2 deletions(-)
> >
> > diff --git a/kernel/module/main.c b/kernel/module/main.c
> > index b4c7e925fdb0..9da4b551321e 100644
> > --- a/kernel/module/main.c
> > +++ b/kernel/module/main.c
> > @@ -1521,14 +1521,14 @@ static void __layout_sections(struct module *mod, 
> > struct load_info *info, bool i
> >   MOD_RODATA,
> >   MOD_RO_AFTER_INIT,
> >   MOD_DATA,
> > - MOD_INVALID,/* This is needed to match the masks array */
> > + MOD_DATA,
> >   };
> >   static const int init_m_to_mem_type[] = {
> >   MOD_INIT_TEXT,
> >   MOD_INIT_RODATA,
> >   MOD_INVALID,
> >   MOD_INIT_DATA,
> > - MOD_INVALID,/* This is needed to match the masks array */
> > + MOD_INIT_DATA,
> >   };
> >
> >   for (m = 0; m < ARRAY_SIZE(masks); ++m) {
>
> Just want to add another observation (though not strictly ia64 but I
> wanted to keep the context):
>
> Testing showed that this patch also fixes module loading for alpha
> (tested on an AlphaServer DS25 w/v6.4-rc4 w/ and w/o the patch applied).

Thanks for this information!

I noticed alpha and ia64 are the only two archs to define ARCH_SHF_SMALL.
Other archs shouldn't see change with this.

Best,
Song



Re: [PATCH] module: fix module load for ia64

2023-06-03 Thread Frank Scheiner

On 29.05.23 01:00, Song Liu wrote:

Frank reported boot regression in ia64 as:

ELILO v3.16 for EFI/IA-64
..
Uncompressing Linux... done
Loading file AC100221.initrd.img...done
[0.00] Linux version 6.4.0-rc3 (root@x4270) (ia64-linux-gcc
(GCC) 12.2.0, GNU ld (GNU Binutils) 2.39) #1 SMP Thu May 25 15:52:20
CEST 2023
[0.00] efi: EFI v1.1 by HP
[0.00] efi: SALsystab=0x3ee7a000 ACPI 2.0=0x3fe2a000
ESI=0x3ee7b000 SMBIOS=0x3ee7c000 HCDP=0x3fe28000
[0.00] PCDP: v3 at 0x3fe28000
[0.00] earlycon: uart8250 at MMIO 0xf405 (options
'9600n8')
[0.00] printk: bootconsole [uart8250] enabled
[0.00] ACPI: Early table checksum verification disabled
[0.00] ACPI: RSDP 0x3FE2A000 28 (v02 HP)
[0.00] ACPI: XSDT 0x3FE2A02C CC (v01 HP rx2620
 HP   )
[...]
[3.793350] Run /init as init process
Loading, please wait...
Starting systemd-udevd version 252.6-1
[3.951100] [ cut here ]
[3.951100] WARNING: CPU: 6 PID: 140 at kernel/module/main.c:1547
__layout_sections+0x370/0x3c0
[3.949512] Unable to handle kernel paging request at virtual address
1000
[3.951100] Modules linked in:
[3.951100] CPU: 6 PID: 140 Comm: (udev-worker) Not tainted 6.4.0-rc3 #1
[3.956161] (udev-worker)[142]: Oops 11003706212352 [1]
[3.951774] Hardware name: hp server rx2620   , BIOS
04.29
11/30/2007
[3.951774]
[3.951774] Call Trace:
[3.958339] Unable to handle kernel paging request at virtual address
1000
[3.956161] Modules linked in:
[3.951774]  [] show_stack.part.0+0x30/0x60
[3.951774] sp=e00183a67b20
bsp=e00183a61628
[3.956161]
[3.956161]

which bisect to module_memory change [1].

Debug showed that ia64 uses some special sections:

__layout_sections: section .got (sh_flags 1002) matched to MOD_INVALID
__layout_sections: section .sdata (sh_flags 1003) matched to MOD_INVALID
__layout_sections: section .sbss (sh_flags 1003) matched to MOD_INVALID

All these sections are loaded to module core memory before [1].

Fix ia64 boot by loading these sections to MOD_DATA (core rw data).

[1] commit ac3b43283923 ("module: replace module_layout with module_memory")

Fixes: ac3b43283923 ("module: replace module_layout with module_memory")
Reported-by: Frank Scheiner 
Closes: https://lists.debian.org/debian-ia64/2023/05/msg00010.html
Closes: https://marc.info/?l=linux-ia64=168509859125505
Cc: Linus Torvalds 
Signed-off-by: Song Liu 
---
  kernel/module/main.c | 4 ++--
  1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/kernel/module/main.c b/kernel/module/main.c
index b4c7e925fdb0..9da4b551321e 100644
--- a/kernel/module/main.c
+++ b/kernel/module/main.c
@@ -1521,14 +1521,14 @@ static void __layout_sections(struct module *mod, 
struct load_info *info, bool i
MOD_RODATA,
MOD_RO_AFTER_INIT,
MOD_DATA,
-   MOD_INVALID,/* This is needed to match the masks array */
+   MOD_DATA,
};
static const int init_m_to_mem_type[] = {
MOD_INIT_TEXT,
MOD_INIT_RODATA,
MOD_INVALID,
MOD_INIT_DATA,
-   MOD_INVALID,/* This is needed to match the masks array */
+   MOD_INIT_DATA,
};

for (m = 0; m < ARRAY_SIZE(masks); ++m) {


Just want to add another observation (though not strictly ia64 but I
wanted to keep the context):

Testing showed that this patch also fixes module loading for alpha
(tested on an AlphaServer DS25 w/v6.4-rc4 w/ and w/o the patch applied).

Cheers,
Frank



Re: [PATCH] module: fix module load for ia64

2023-05-30 Thread Frank Scheiner

On 29.05.23 01:00, Song Liu wrote:

Frank reported boot regression in ia64 as:

ELILO v3.16 for EFI/IA-64
..
Uncompressing Linux... done
Loading file AC100221.initrd.img...done
[0.00] Linux version 6.4.0-rc3 (root@x4270) (ia64-linux-gcc
(GCC) 12.2.0, GNU ld (GNU Binutils) 2.39) #1 SMP Thu May 25 15:52:20
CEST 2023
[0.00] efi: EFI v1.1 by HP
[0.00] efi: SALsystab=0x3ee7a000 ACPI 2.0=0x3fe2a000
ESI=0x3ee7b000 SMBIOS=0x3ee7c000 HCDP=0x3fe28000
[0.00] PCDP: v3 at 0x3fe28000
[0.00] earlycon: uart8250 at MMIO 0xf405 (options
'9600n8')
[0.00] printk: bootconsole [uart8250] enabled
[0.00] ACPI: Early table checksum verification disabled
[0.00] ACPI: RSDP 0x3FE2A000 28 (v02 HP)
[0.00] ACPI: XSDT 0x3FE2A02C CC (v01 HP rx2620
 HP   )
[...]
[3.793350] Run /init as init process
Loading, please wait...
Starting systemd-udevd version 252.6-1
[3.951100] [ cut here ]
[3.951100] WARNING: CPU: 6 PID: 140 at kernel/module/main.c:1547
__layout_sections+0x370/0x3c0
[3.949512] Unable to handle kernel paging request at virtual address
1000
[3.951100] Modules linked in:
[3.951100] CPU: 6 PID: 140 Comm: (udev-worker) Not tainted 6.4.0-rc3 #1
[3.956161] (udev-worker)[142]: Oops 11003706212352 [1]
[3.951774] Hardware name: hp server rx2620   , BIOS
04.29
11/30/2007
[3.951774]
[3.951774] Call Trace:
[3.958339] Unable to handle kernel paging request at virtual address
1000
[3.956161] Modules linked in:
[3.951774]  [] show_stack.part.0+0x30/0x60
[3.951774] sp=e00183a67b20
bsp=e00183a61628
[3.956161]
[3.956161]

which bisect to module_memory change [1].

Debug showed that ia64 uses some special sections:

__layout_sections: section .got (sh_flags 1002) matched to MOD_INVALID
__layout_sections: section .sdata (sh_flags 1003) matched to MOD_INVALID
__layout_sections: section .sbss (sh_flags 1003) matched to MOD_INVALID

All these sections are loaded to module core memory before [1].

Fix ia64 boot by loading these sections to MOD_DATA (core rw data).

[1] commit ac3b43283923 ("module: replace module_layout with module_memory")

Fixes: ac3b43283923 ("module: replace module_layout with module_memory")
Reported-by: Frank Scheiner 
Closes: https://lists.debian.org/debian-ia64/2023/05/msg00010.html
Closes: https://marc.info/?l=linux-ia64=168509859125505
Cc: Linus Torvalds 
Signed-off-by: Song Liu 
---
  kernel/module/main.c | 4 ++--
  1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/kernel/module/main.c b/kernel/module/main.c
index b4c7e925fdb0..9da4b551321e 100644
--- a/kernel/module/main.c
+++ b/kernel/module/main.c
@@ -1521,14 +1521,14 @@ static void __layout_sections(struct module *mod, 
struct load_info *info, bool i
MOD_RODATA,
MOD_RO_AFTER_INIT,
MOD_DATA,
-   MOD_INVALID,/* This is needed to match the masks array */
+   MOD_DATA,
};
static const int init_m_to_mem_type[] = {
MOD_INIT_TEXT,
MOD_INIT_RODATA,
MOD_INVALID,
MOD_INIT_DATA,
-   MOD_INVALID,/* This is needed to match the masks array */
+   MOD_INIT_DATA,
};

for (m = 0; m < ARRAY_SIZE(masks); ++m) {


Tested to work on top of v6.4-rc4 fixing the boot regression for:

* rx4640 (w/Madison and zx1)
* rx2620 (w/Montecito and zx1)
* rx2660 (w/Montvale and zx2 - Adrian's rx2660 is with Montecito instead
IIRC, so I only tested on the one with Montvale processor)
* rx6600 (w/Montvale and zx2)
* rx2800 i2 (w/Tukwila)

Tested-by: Frank Scheiner 



Re: [PATCH] module: fix module load for ia64

2023-05-30 Thread John Paul Adrian Glaubitz
On Sun, 2023-05-28 at 16:00 -0700, Song Liu wrote:
> Frank reported boot regression in ia64 as:
> 
> ELILO v3.16 for EFI/IA-64
> ..
> Uncompressing Linux... done
> Loading file AC100221.initrd.img...done
> [0.00] Linux version 6.4.0-rc3 (root@x4270) (ia64-linux-gcc
> (GCC) 12.2.0, GNU ld (GNU Binutils) 2.39) #1 SMP Thu May 25 15:52:20
> CEST 2023
> [0.00] efi: EFI v1.1 by HP
> [0.00] efi: SALsystab=0x3ee7a000 ACPI 2.0=0x3fe2a000
> ESI=0x3ee7b000 SMBIOS=0x3ee7c000 HCDP=0x3fe28000
> [0.00] PCDP: v3 at 0x3fe28000
> [0.00] earlycon: uart8250 at MMIO 0xf405 (options
> '9600n8')
> [0.00] printk: bootconsole [uart8250] enabled
> [0.00] ACPI: Early table checksum verification disabled
> [0.00] ACPI: RSDP 0x3FE2A000 28 (v02 HP)
> [0.00] ACPI: XSDT 0x3FE2A02C CC (v01 HP rx2620
>  HP   )
> [...]
> [3.793350] Run /init as init process
> Loading, please wait...
> Starting systemd-udevd version 252.6-1
> [3.951100] [ cut here ]
> [3.951100] WARNING: CPU: 6 PID: 140 at kernel/module/main.c:1547
> __layout_sections+0x370/0x3c0
> [3.949512] Unable to handle kernel paging request at virtual address
> 1000
> [3.951100] Modules linked in:
> [3.951100] CPU: 6 PID: 140 Comm: (udev-worker) Not tainted 6.4.0-rc3 #1
> [3.956161] (udev-worker)[142]: Oops 11003706212352 [1]
> [3.951774] Hardware name: hp server rx2620   , BIOS
> 04.29
> 11/30/2007
> [3.951774]
> [3.951774] Call Trace:
> [3.958339] Unable to handle kernel paging request at virtual address
> 1000
> [3.956161] Modules linked in:
> [3.951774]  [] show_stack.part.0+0x30/0x60
> [3.951774] sp=e00183a67b20
> bsp=e00183a61628
> [3.956161]
> [3.956161]
> 
> which bisect to module_memory change [1].
> 
> Debug showed that ia64 uses some special sections:
> 
> __layout_sections: section .got (sh_flags 1002) matched to MOD_INVALID
> __layout_sections: section .sdata (sh_flags 1003) matched to MOD_INVALID
> __layout_sections: section .sbss (sh_flags 1003) matched to MOD_INVALID
> 
> All these sections are loaded to module core memory before [1].
> 
> Fix ia64 boot by loading these sections to MOD_DATA (core rw data).
> 
> [1] commit ac3b43283923 ("module: replace module_layout with module_memory")
> 
> Fixes: ac3b43283923 ("module: replace module_layout with module_memory")
> Reported-by: Frank Scheiner 
> Closes: https://lists.debian.org/debian-ia64/2023/05/msg00010.html
> Closes: https://marc.info/?l=linux-ia64=168509859125505
> Cc: Linus Torvalds 
> Signed-off-by: Song Liu 
> ---
>  kernel/module/main.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/kernel/module/main.c b/kernel/module/main.c
> index b4c7e925fdb0..9da4b551321e 100644
> --- a/kernel/module/main.c
> +++ b/kernel/module/main.c
> @@ -1521,14 +1521,14 @@ static void __layout_sections(struct module *mod, 
> struct load_info *info, bool i
>   MOD_RODATA,
>   MOD_RO_AFTER_INIT,
>   MOD_DATA,
> - MOD_INVALID,/* This is needed to match the masks array */
> + MOD_DATA,
>   };
>   static const int init_m_to_mem_type[] = {
>   MOD_INIT_TEXT,
>   MOD_INIT_RODATA,
>   MOD_INVALID,
>   MOD_INIT_DATA,
> - MOD_INVALID,/* This is needed to match the masks array */
> + MOD_INIT_DATA,
>   };
>  
>   for (m = 0; m < ARRAY_SIZE(masks); ++m) {

I can confirm that this fixes module loading on my RX2660 with 6.4-rc4.

Tested-by: John Paul Adrian Glaubitz 

-- 
 .''`.  John Paul Adrian Glaubitz
: :' :  Debian Developer
`. `'   Physicist
  `-GPG: 62FF 8A75 84E0 2956 9546  0006 7426 3B37 F5B5 F913



[PATCH] module: fix module load for ia64

2023-05-28 Thread Song Liu
Frank reported boot regression in ia64 as:

ELILO v3.16 for EFI/IA-64
..
Uncompressing Linux... done
Loading file AC100221.initrd.img...done
[0.00] Linux version 6.4.0-rc3 (root@x4270) (ia64-linux-gcc
(GCC) 12.2.0, GNU ld (GNU Binutils) 2.39) #1 SMP Thu May 25 15:52:20
CEST 2023
[0.00] efi: EFI v1.1 by HP
[0.00] efi: SALsystab=0x3ee7a000 ACPI 2.0=0x3fe2a000
ESI=0x3ee7b000 SMBIOS=0x3ee7c000 HCDP=0x3fe28000
[0.00] PCDP: v3 at 0x3fe28000
[0.00] earlycon: uart8250 at MMIO 0xf405 (options
'9600n8')
[0.00] printk: bootconsole [uart8250] enabled
[0.00] ACPI: Early table checksum verification disabled
[0.00] ACPI: RSDP 0x3FE2A000 28 (v02 HP)
[0.00] ACPI: XSDT 0x3FE2A02C CC (v01 HP rx2620
 HP   )
[...]
[3.793350] Run /init as init process
Loading, please wait...
Starting systemd-udevd version 252.6-1
[3.951100] [ cut here ]
[3.951100] WARNING: CPU: 6 PID: 140 at kernel/module/main.c:1547
__layout_sections+0x370/0x3c0
[3.949512] Unable to handle kernel paging request at virtual address
1000
[3.951100] Modules linked in:
[3.951100] CPU: 6 PID: 140 Comm: (udev-worker) Not tainted 6.4.0-rc3 #1
[3.956161] (udev-worker)[142]: Oops 11003706212352 [1]
[3.951774] Hardware name: hp server rx2620   , BIOS
04.29
11/30/2007
[3.951774]
[3.951774] Call Trace:
[3.958339] Unable to handle kernel paging request at virtual address
1000
[3.956161] Modules linked in:
[3.951774]  [] show_stack.part.0+0x30/0x60
[3.951774] sp=e00183a67b20
bsp=e00183a61628
[3.956161]
[3.956161]

which bisect to module_memory change [1].

Debug showed that ia64 uses some special sections:

__layout_sections: section .got (sh_flags 1002) matched to MOD_INVALID
__layout_sections: section .sdata (sh_flags 1003) matched to MOD_INVALID
__layout_sections: section .sbss (sh_flags 1003) matched to MOD_INVALID

All these sections are loaded to module core memory before [1].

Fix ia64 boot by loading these sections to MOD_DATA (core rw data).

[1] commit ac3b43283923 ("module: replace module_layout with module_memory")

Fixes: ac3b43283923 ("module: replace module_layout with module_memory")
Reported-by: Frank Scheiner 
Closes: https://lists.debian.org/debian-ia64/2023/05/msg00010.html
Closes: https://marc.info/?l=linux-ia64=168509859125505
Cc: Linus Torvalds 
Signed-off-by: Song Liu 
---
 kernel/module/main.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/kernel/module/main.c b/kernel/module/main.c
index b4c7e925fdb0..9da4b551321e 100644
--- a/kernel/module/main.c
+++ b/kernel/module/main.c
@@ -1521,14 +1521,14 @@ static void __layout_sections(struct module *mod, 
struct load_info *info, bool i
MOD_RODATA,
MOD_RO_AFTER_INIT,
MOD_DATA,
-   MOD_INVALID,/* This is needed to match the masks array */
+   MOD_DATA,
};
static const int init_m_to_mem_type[] = {
MOD_INIT_TEXT,
MOD_INIT_RODATA,
MOD_INVALID,
MOD_INIT_DATA,
-   MOD_INVALID,/* This is needed to match the masks array */
+   MOD_INIT_DATA,
};
 
for (m = 0; m < ARRAY_SIZE(masks); ++m) {
-- 
2.34.1