On Mon, Jul 19, 2021 at 09:40:39AM +0800, Yunsheng Lin wrote: > On 2021/7/18 10:09, Michael S. Tsirkin wrote: > > On Tue, Jul 06, 2021 at 10:04:02AM +0800, Yunsheng Lin wrote: > >> On 2021/7/6 2:39, Michael S. Tsirkin wrote: > >>> On Mon, Jul 05, 2021 at 11:57:34AM +0800, Yunsheng Lin wrote: > > [..] > > >>>> diff --git a/tools/include/asm/processor.h b/tools/include/asm/processor.h > >>>> new file mode 100644 > >>>> index 0000000..3198ad6 > >>>> --- /dev/null > >>>> +++ b/tools/include/asm/processor.h > >>>> @@ -0,0 +1,36 @@ > >>>> +/* SPDX-License-Identifier: GPL-2.0 */ > >>>> + > >>>> +#ifndef __TOOLS_LINUX_ASM_PROCESSOR_H > >>>> +#define __TOOLS_LINUX_ASM_PROCESSOR_H > >>>> + > >>>> +#include <pthread.h> > >>>> + > >>>> +#if defined(__i386__) || defined(__x86_64__) > >>>> +#include "../../arch/x86/include/asm/vdso/processor.h" > >>>> +#elif defined(__arm__) > >>>> +#include "../../arch/arm/include/asm/vdso/processor.h" > >>>> +#elif defined(__aarch64__) > >>>> +#include "../../arch/arm64/include/asm/vdso/processor.h" > >>>> +#elif defined(__powerpc__) > >>>> +#include "../../arch/powerpc/include/vdso/processor.h" > >>>> +#elif defined(__s390__) > >>>> +#include "../../arch/s390/include/vdso/processor.h" > >>>> +#elif defined(__sh__) > >>>> +#include "../../arch/sh/include/asm/processor.h" > >>>> +#elif defined(__sparc__) > >>>> +#include "../../arch/sparc/include/asm/processor.h" > >>>> +#elif defined(__alpha__) > >>>> +#include "../../arch/alpha/include/asm/processor.h" > >>>> +#elif defined(__mips__) > >>>> +#include "../../arch/mips/include/asm/vdso/processor.h" > >>>> +#elif defined(__ia64__) > >>>> +#include "../../arch/ia64/include/asm/processor.h" > >>>> +#elif defined(__xtensa__) > >>>> +#include "../../arch/xtensa/include/asm/processor.h" > >>>> +#elif defined(__nds32__) > >>>> +#include "../../arch/nds32/include/asm/processor.h" > >>>> +#else > >>>> +#define cpu_relax() sched_yield() > >>> > >>> Does this have a chance to work outside of kernel? > >> > >> I am not sure I understand what you meant here. > >> sched_yield() is a pthread API, so it should work in the > >> user space. > >> And it allow the rigntest to compile when it is built on > >> the arch which is not handled as above. > > > > It might compile but is likely too heavy to behave > > reasonably. > > > > Also, given you did not actually test it I don't > > think you should add such arch code. > > Note you broke at least s390 here: > > ../../arch/s390/include/vdso/processor.h > > does not actually exist. Where these headers > > do exit they tend to include lots of code which won't > > build out of kernel. > > You are right, it should be in: > ../../arch/s390/include/asm/vdso/processor.h > > > > > All this is just for cpu_relax - open coding that seems way easier. > > Sure. > > As Eugenio has posted a patchset to fix the compilation, which does > not seems to be merged yet and may have some merging conflicts with > this patchset, so either wait for the Eugenio' patchset to be merged > before proceeding with this patchset, or explicitly note the dependency > of Eugenio' patchset when sending the new version of patchset. I am not > familiar with the merging flow of virtio to say which way is better, any > suggestion how to proceed with this patchset? > > 1. https://lkml.org/lkml/2021/7/6/1132 > > > > > > >>> > >>>> +#endif > >>> > >>> did you actually test or even test build all these arches? > >>> Not sure we need to bother with hacks like these. > >> > >> Only x86_64 and arm64 arches have been built and tested. > > > > In that case I think you should not add code that you > > have not even built let alone tested. > > Ok. > > > > > > >> This is added referring the tools/include/asm/barrier.h. > >> > >>> > >>> > >>>> + > > > > . I will merge Eugenio's patchset soon. -- MST _______________________________________________ Virtualization mailing list Virtualization@xxxxxxxxxxxxxxxxxxxxxxxxxx https://lists.linuxfoundation.org/mailman/listinfo/virtualization