Le 01/10/2020 à 17:40, Taylor Simpson a écrit : > > >> -----Original Message----- >> From: Laurent Vivier <laur...@vivier.eu> >> Sent: Thursday, October 1, 2020 1:53 AM >> To: Taylor Simpson <tsimp...@quicinc.com>; qemu-devel@nongnu.org >> Cc: richard.hender...@linaro.org; phi...@redhat.com; riku.voi...@iki.fi; >> aleksandar.m.m...@gmail.com; a...@rev.ng >> Subject: Re: [RFC PATCH v4 27/29] Hexagon (linux-user/hexagon) Linux user >> emulation >> >> Le 30/09/2020 à 22:47, Taylor Simpson a écrit : >>> >>> >>>> -----Original Message----- >>>> From: Laurent Vivier <laur...@vivier.eu> >>>> Sent: Monday, September 28, 2020 3:03 PM >>>> To: Taylor Simpson <tsimp...@quicinc.com>; qemu-devel@nongnu.org >>>> Cc: richard.hender...@linaro.org; phi...@redhat.com; riku.voi...@iki.fi; >>>> aleksandar.m.m...@gmail.com; a...@rev.ng >>>> Subject: Re: [RFC PATCH v4 27/29] Hexagon (linux-user/hexagon) Linux >> user >>>> emulation >>>> >>>>> + >>>>> +syscall_nr_generators += { >>>>> + 'hexagon': generator(sh, >>>>> + arguments: [ 'cat', 'syscall_nr.h', '>', >>>>> '@OUTPUT@' ], >>>>> + output: '@BASENAME@_nr.h') >>>> >>>> Why do we need that? >>>> The syscall_nr_generators is used to generate syscall_nr.h from syscall.tbl >>> >>> The other linux-user targets have this in their meson.build files. I'll >>> remove >> if it's not needed. >> >> Not all the targets (only the ones with syscall.tbl) and they call >> syscallhdr.sh and not cat. So you can remove it. >> >>>> >>>>> +} >>>>> diff --git a/linux-user/meson.build b/linux-user/meson.build >>>>> index 2b94e4b..8b1dfc8 100644 >>>>> --- a/linux-user/meson.build >>>>> +++ b/linux-user/meson.build >>>>> @@ -22,6 +22,7 @@ syscall_nr_generators = {} >>>>> >>>>> subdir('alpha') >>>>> subdir('arm') >>>>> +subdir('hexagon') >>>> >>>> so you don't need that either >>> >>> OK >>> >>>>> - grep -e "#define __NR_" -e "#define __NR3264" >>>>> + grep -e "#define __NR_" -e "#define __NR3264" | grep -v >>>> __NR_syscalls >>>> >>>> Why do you remove __NR_syscalls? >>> >>> Older kernels have a bunch of >>> #undef __NR_syscalls >>> #define __NR_syscalls X >>> >>> The script removes all #undef's but leaves the #define's, so we get compile >> errors. That symbol isn't used by qemu so it's safe to remove. >>> >> >> As the syscall_nr.h generated from syscall.tbl don't have this symbol, I >> think we can remove it. But I'm very surprised it doesn't work with it >> for you. >> >> Could you put this one-line change in a separate patch? >> >> The best would be to re-run it once the change is made to update all the >> generated syscall_nr.h without the __NR_syscalls line. >> >> Moreover the syscall_nr.h I generate from linux-5.9 for hexagon is >> different from the one you put in this series (the 1024 -> 1079 part is >> missing). > > The syscall_nr.h I submitted is from 4.9, and we are in the process of > upgrading the toolchain/kernel/etc.
Do you know why the syscalls between 1024 and 1079 are in your syscall_nr.h while they are not in linux 4.9? (They are normally enabled by __ARCH_WANT_SYSCALL_DEPRECATED) > > Which versions of the kernel does qemu expect to support? I'll investigate > whether those versions have multiple __NR_syscalls. If not, there's no need > for that change. For linux-user, we have all the linux-user targets at the same syscall API level, and we update them to have the definitions from the latest kernel. Thanks, Laurent