Re: C vdso
From: Christophe Leroy <hidden>
Date: 2020-10-24 11:19:58
Le 24/10/2020 à 12:07, Michael Ellerman a écrit :
Michael Ellerman [off-list ref] writes:quoted
Christophe Leroy [off-list ref] writes:quoted
Le 24/09/2020 à 15:17, Christophe Leroy a écrit :quoted
Le 17/09/2020 à 14:33, Michael Ellerman a écrit :quoted
Christophe Leroy [off-list ref] writes:quoted
What is the status with the generic C vdso merge ? In some mail, you mentionned having difficulties getting it working on ppc64, any progress ? What's the problem ? Can I help ?Yeah sorry I was hoping to get time to work on it but haven't been able to. It's causing crashes on ppc64 ie. big endian....quoted
quoted
Can you tell what defconfig you are using ? I have been able to setup a full glibc PPC64 cross compilation chain and been able to test it under QEMU with success, using Nathan's vdsotest tool.What config are you using ?ppc64_defconfig + guest.config Or pseries_defconfig. I'm using Ubuntu GCC 9.3.0 mostly, but it happens with other toolchains too.I'm also seeing warnings because of the feature fixups: That's happening because the 32-bit VDSO is built with CONFIG_PPC32=y, due to config-fake32.h, and that causes the feature fixup entries to be the wrong size. See the logic in feature-fixup.h: We expect the fixup entries to still use 64-bit values, even for the 32-bit VDSO in a 64-bit kernel. TBH I'm not sure how config-fake32.h can work long term, it's so fragile to be defining/redefining a handful of CONFIG symbols like that.
I took the idea from mips (arch/mips/vdso/config-n32-o32-env.c) after struggling in different direction. At that time the generic VDSO code was far less careful and was including several linux headers IIRC. I agree with you that it's rather fragile.
The generic VDSO code is fairly careful to only include uapi and vdso headers, not linux ones. So I think we need to better split our headers so that we can build the VDSO code with few or no linux headers, and so avoid the need to define any (or most) CONFIG symbols.
I'll revisit it when I'm back from vacation (I'm leaving now for two weeks). Christophe