Hi, Backported and successfully tested on currently stable Gentoo kernel 4.9.6-r1. >From [1], gcc 4.9.4 was first problematic release. [1] http://marc.info/?l=linux-ia64&m=147993347915422 Émeric 2017-03-19 17:20 GMT+01:00 Sergei Trofimovich <slyfox@xxxxxxxxxx>: > Starting from gcc-5.4+ gcc geperates MLX > instructions in more cases to refer local > symbols: > https://gcc.gnu.org/bugzilla/60465 > > That caused ia64 module loader to choke > on such instructions: > fuse: invalid slot number 1 for IMM64 > > Linux kernel used to handle only case where > relocation pointed to slot=2 instruction in > the bundle. That limitation was fixed in linux > by 9c184a073bfd650cc791956d6ca79725bb682716 commit. > See http://sources.redhat.com/bugzilla/show_bug.cgi?id=1433 > > This change lifts the slot=2 restriction from > linux kernel module loader. > > Tested on 'fuse' and 'btrfs' kernel modules. > > Cc: H. J. Lu <hjl.tools@xxxxxxxxx> > Cc: Tony Luck <tony.luck@xxxxxxxxx> > Cc: Fenghua Yu <fenghua.yu@xxxxxxxxx> > Cc: linux-ia64@xxxxxxxxxxxxxxx > Cc: linux-kernel@xxxxxxxxxxxxxxx > Bug: https://bugs.gentoo.org/601014 > Signed-off-by: Sergei Trofimovich <slyfox@xxxxxxxxxx> > --- > arch/ia64/kernel/module.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/arch/ia64/kernel/module.c b/arch/ia64/kernel/module.c > index 6ab0ae7d6535..d1d945c6bd05 100644 > --- a/arch/ia64/kernel/module.c > +++ b/arch/ia64/kernel/module.c > @@ -153,7 +153,7 @@ slot (const struct insn *insn) > static int > apply_imm64 (struct module *mod, struct insn *insn, uint64_t val) > { > - if (slot(insn) != 2) { > + if (slot(insn) != 1 && slot(insn) != 2) { > printk(KERN_ERR "%s: invalid slot number %d for IMM64\n", > mod->name, slot(insn)); > return 0; > @@ -165,7 +165,7 @@ apply_imm64 (struct module *mod, struct insn *insn, uint64_t val) > static int > apply_imm60 (struct module *mod, struct insn *insn, uint64_t val) > { > - if (slot(insn) != 2) { > + if (slot(insn) != 1 && slot(insn) != 2) { > printk(KERN_ERR "%s: invalid slot number %d for IMM60\n", > mod->name, slot(insn)); > return 0; > -- > 2.12.0 > > -- > To unsubscribe from this list: send the line "unsubscribe linux-ia64" in > the body of a message to majordomo@xxxxxxxxxxxxxxx > More majordomo info at http://vger.kernel.org/majordomo-info.html -- To unsubscribe from this list: send the line "unsubscribe linux-ia64" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html
![]() |