Hi Michael,

On 12/27/23 10:27, Michael Ellerman wrote:
> Geoff Levand <ge...@infradead.org> writes:
>> Commit 8c5fa3b5c4df3d071dab42b04b971df370d99354 (powerpc/64: Make ELFv2 the
>> default for big-endian builds), merged in Linux-6.5-rc1 changes the calling 
>> ABI
>> in a way that is incompatible with the current code for the PS3's LV1 
>> hypervisor
>> calls.
> 
> I'll take this for now.
> 
> But medium term we would like to switch to only using ELFv2, so it would
> be good if we can work out what the actual problem is.

I've been looking into converting the LV1 hypercalls to v2.

>> This change just adds the line '# CONFIG_PPC64_BIG_ENDIAN_ELF_ABI_V2 is not 
>> set'
>> to the ps3_defconfig file so that the PPC64_ELF_ABI_V1 is used.
>>
>> Fixes run time errors like these:
>>
>>      BUG: Kernel NULL pointer dereference at 0x00000000
>>      Faulting instruction address: 0xc000000000047cf0
>>      Oops: Kernel access of bad area, sig: 11 [#1]
>>
>>      Call Trace:
>>      [c0000000023039e0] [c00000000100ebfc] ps3_create_spu+0xc4/0x2b0 
>> (unreliable)
>>      [c000000002303ab0] [c00000000100d4c4] create_spu+0xcc/0x3c4
>>      [c000000002303b40] [c00000000100eae4] ps3_enumerate_spus+0xa4/0xf8
> 
> That can't be the first hvcall we've done, there's one in
> ps3_setup_arch(). So I guess only some hcalls are failing?

I guess because ps3_create_spu has 7 input parameters and returns
6 parameters, so it hits some difference between V1 and V2 that
the other LV1 calls up to that point have not hit.

-Geoff

Reply via email to