public inbox for linux-riscv@lists.infradead.org
 help / color / mirror / Atom feed
* more RELOCATABLE + errata code model issues
@ 2023-09-18 10:36 Conor Dooley
  2023-09-18 15:15 ` Palmer Dabbelt
  0 siblings, 1 reply; 3+ messages in thread
From: Conor Dooley @ 2023-09-18 10:36 UTC (permalink / raw)
  To: Alexandre Ghiti; +Cc: Lad Prabhakar, Palmer Dabbelt, linux-riscv


[-- Attachment #1.1: Type: text/plain, Size: 1278 bytes --]


Hey Alex,

LKP reported [1] some issues with relocatable kernels & code models.
You didn't touch the commit that caused the issues, so you didn't see
the failure report I guess, but Prabhakar is looking for some guidance
on what he should do to resolve the problems. Copy-pasting from his
mail:
> > All errors (new ones prefixed by >>):
> > 
> > >> ld.lld: error: relocation R_RISCV_LO12_I cannot be used against
> > >> symbol 'riscv_cbom_block_size'; recompile with -fPIC
> >    >>> defined in vmlinux.a(arch/riscv/mm/cacheflush.o)
> >    >>> referenced by errata.c
> >    >>>               arch/riscv/errata/andes/errata.o:(andes_errata_patch_func) in archive vmlinux.a
> > 
> I did reproduce this issue locally. The andes errata is not compiled as medany. The config is RELOCATABLE + MEDLOW. I can see the cacheflush.o is compiled with medany flag.
> I can fix the build by adding a medany flag as below:
> +#ifdef CONFIG_RISCV_ALTERNATIVE_EARLY
> +CFLAGS_errata.o := -mcmodel=medany
> #endif
> 
> But I am not sure if this is correct approach. Any pointers on this?

The T-Head errata have something similar, so seems like fair game to me.
Any thoughts?

Thanks,
Conor.

[1] - https://lore.kernel.org/all/202309111311.8tcq3KVc-lkp@intel.com/

[-- Attachment #1.2: signature.asc --]
[-- Type: application/pgp-signature, Size: 228 bytes --]

[-- Attachment #2: Type: text/plain, Size: 161 bytes --]

_______________________________________________
linux-riscv mailing list
linux-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-riscv

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: more RELOCATABLE + errata code model issues
  2023-09-18 10:36 more RELOCATABLE + errata code model issues Conor Dooley
@ 2023-09-18 15:15 ` Palmer Dabbelt
  2023-09-18 16:59   ` Alexandre Ghiti
  0 siblings, 1 reply; 3+ messages in thread
From: Palmer Dabbelt @ 2023-09-18 15:15 UTC (permalink / raw)
  To: Conor Dooley; +Cc: alex, prabhakar.mahadev-lad.rj, linux-riscv

On Mon, 18 Sep 2023 03:36:03 PDT (-0700), Conor Dooley wrote:
>
> Hey Alex,
>
> LKP reported [1] some issues with relocatable kernels & code models.
> You didn't touch the commit that caused the issues, so you didn't see
> the failure report I guess, but Prabhakar is looking for some guidance
> on what he should do to resolve the problems. Copy-pasting from his
> mail:
>> > All errors (new ones prefixed by >>):
>> > 
>> > >> ld.lld: error: relocation R_RISCV_LO12_I cannot be used against
>> > >> symbol 'riscv_cbom_block_size'; recompile with -fPIC
>> >    >>> defined in vmlinux.a(arch/riscv/mm/cacheflush.o)
>> >    >>> referenced by errata.c
>> >    >>>               arch/riscv/errata/andes/errata.o:(andes_errata_patch_func) in archive vmlinux.a
>> > 
>> I did reproduce this issue locally. The andes errata is not compiled as medany. The config is RELOCATABLE + MEDLOW. I can see the cacheflush.o is compiled with medany flag.
>> I can fix the build by adding a medany flag as below:
>> +#ifdef CONFIG_RISCV_ALTERNATIVE_EARLY
>> +CFLAGS_errata.o := -mcmodel=medany
>> #endif
>> 
>> But I am not sure if this is correct approach. Any pointers on this?
>
> The T-Head errata have something similar, so seems like fair game to me.
> Any thoughts?

We're using medany as a cheap way to get PIC, so anything that's 
pre-relocation will need medany.  We don't really have a good way to 
check that, medany isn't supposed to be ABI (we're really just abusing 
it here for PIC).  Thus none of this gets checked at build time, and I 
won't catch any errata pre-merge because I'm in QEMU.  So this is all 
kind of fragile.

So maybe there's a better way to do all that, but for now just adding 
medany seems like the way to go.

> Thanks,
> Conor.
>
> [1] - https://lore.kernel.org/all/202309111311.8tcq3KVc-lkp@intel.com/

_______________________________________________
linux-riscv mailing list
linux-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-riscv

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: more RELOCATABLE + errata code model issues
  2023-09-18 15:15 ` Palmer Dabbelt
@ 2023-09-18 16:59   ` Alexandre Ghiti
  0 siblings, 0 replies; 3+ messages in thread
From: Alexandre Ghiti @ 2023-09-18 16:59 UTC (permalink / raw)
  To: Palmer Dabbelt, Conor Dooley; +Cc: prabhakar.mahadev-lad.rj, linux-riscv


On 18/09/2023 17:15, Palmer Dabbelt wrote:
> On Mon, 18 Sep 2023 03:36:03 PDT (-0700), Conor Dooley wrote:
>>
>> Hey Alex,
>>
>> LKP reported [1] some issues with relocatable kernels & code models.
>> You didn't touch the commit that caused the issues, so you didn't see
>> the failure report I guess, but Prabhakar is looking for some guidance
>> on what he should do to resolve the problems. Copy-pasting from his
>> mail:
>>> > All errors (new ones prefixed by >>):
>>> > > >> ld.lld: error: relocation R_RISCV_LO12_I cannot be used against
>>> > >> symbol 'riscv_cbom_block_size'; recompile with -fPIC
>>> >    >>> defined in vmlinux.a(arch/riscv/mm/cacheflush.o)
>>> >    >>> referenced by errata.c
>>> >    >>> arch/riscv/errata/andes/errata.o:(andes_errata_patch_func) 
>>> in archive vmlinux.a
>>> > I did reproduce this issue locally. The andes errata is not 
>>> compiled as medany. The config is RELOCATABLE + MEDLOW. I can see 
>>> the cacheflush.o is compiled with medany flag.
>>> I can fix the build by adding a medany flag as below:
>>> +#ifdef CONFIG_RISCV_ALTERNATIVE_EARLY
>>> +CFLAGS_errata.o := -mcmodel=medany
>>> #endif
>>>
>>> But I am not sure if this is correct approach. Any pointers on this?
>>
>> The T-Head errata have something similar, so seems like fair game to me.
>> Any thoughts?
>
> We're using medany as a cheap way to get PIC, so anything that's 
> pre-relocation will need medany.  We don't really have a good way to 
> check that, medany isn't supposed to be ABI (we're really just abusing 
> it here for PIC).  Thus none of this gets checked at build time, and I 
> won't catch any errata pre-merge because I'm in QEMU. So this is all 
> kind of fragile.
>
> So maybe there's a better way to do all that, but for now just adding 
> medany seems like the way to go.


There is the pre-mmu documentation now that gives hint about what to do 
for the very early code: 
https://elixir.bootlin.com/linux/v6.6-rc2/source/Documentation/riscv/boot.rst#L151 
but admittedly, it does not state that it would result in compilation 
errors, maybe that can be added.


>
>> Thanks,
>> Conor.
>>
>> [1] - https://lore.kernel.org/all/202309111311.8tcq3KVc-lkp@intel.com/
>
> _______________________________________________
> linux-riscv mailing list
> linux-riscv@lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-riscv

_______________________________________________
linux-riscv mailing list
linux-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-riscv

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2023-09-18 16:59 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-09-18 10:36 more RELOCATABLE + errata code model issues Conor Dooley
2023-09-18 15:15 ` Palmer Dabbelt
2023-09-18 16:59   ` Alexandre Ghiti

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox