Re: [PATCH 1/2] mips: convert syscall to generic entry

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,


> Am 09.09.2021 um 14:45 schrieb Zhou Yanjie <zhouyu@xxxxxxxxxxxxxx>:
> 
> Hi,
> 
> On 2021/9/8 下午8:41, Jiaxun Yang wrote:
>> 
>> 在 2021/9/8 16:51, Thomas Bogendoerfer 写道:
>>> On Wed, Sep 08, 2021 at 10:08:47AM +0800, 陈飞扬 wrote:
>>>> On Tue, 7 Sept 2021 at 21:49, Jiaxun Yang <jiaxun.yang@xxxxxxxxxxx> wrote:
>>>>> 
>>>>> 在 2021/9/7 14:16, FreeFlyingSheep 写道:
>>>>>> From: Feiyang Chen <chenfeiyang@xxxxxxxxxxx>
>>>>>> 
>>>>>> Convert mips syscall to use the generic entry infrastructure from
>>>>>> kernel/entry/*.
>>>>>> 
>>>>>> There are a few special things on mips:
>>>>>> 
>>>>>> - There is one type of syscall on mips32 (scall32-o32) and three types
>>>>>> of syscalls on mips64 (scall64-o32, scall64-n32 and scall64-n64). Now
>>>>>> convert to C code to handle different types of syscalls.
>>>>>> 
>>>>>> - For some special syscalls (e.g. fork, clone, clone3 and sysmips),
>>>>>> save_static_function() wrapper is used to save static registers. Now
>>>>>> SAVE_STATIC is used in handle_sys before calling do_syscall(), so the
>>>>>> save_static_function() wrapper can be removed.
>>>>>> 
>>>>>> - For sigreturn/rt_sigreturn and sysmips, inline assembly is used to
>>>>>> jump to syscall_exit directly for skipping setting the error flag and
>>>>>> restoring all registers. Now use regs->regs[27] to mark whether to
>>>>>> handle the error flag and always restore all registers in handle_sys,
>>>>>> so these functions can return normally as other architecture.
>>>>> Hmm, that would give us overhead of register context on these syscalls.
>>>>> 
>>>>> I guess it's worthy?
>>>>> 
>>>> Hi, Jiaxun,
>>>> 
>>>> Saving and restoring registers against different system calls can be
>>>> difficult due to the use of generic entry.
>>>> To avoid a lot of duplicate code, I think the overhead is worth it.
>>> could you please provide numbers for that ? This code still runs
>>> on low end MIPS CPUs for which overhead might mean a different
>>> ballpark than some highend Loongson CPUs.
>> 
>> It shows ~3% regression for UnixBench on MT7621A (1004Kec).
>> 
>> + Yanjie could you help with a run on ingenic platform?
> 
> 
> Sure, I can help with JZ4775, JZ4780, X1000, X1830, X2000 from Ingenic, and SF16A18, SF19A2890 from SiFlower.
> 
> + Paul could you help with a run on JZ4760 and JZ4770?
> 
> + Nikolaus could you help with a run on JZ4730?

Have not observed a negative effect on jz4730. Same for jz4780.
But I have not done performance tests.

BR,
Nikolaus



[Index of Archives]     [Linux Kernel]     [Kernel Newbies]     [x86 Platform Driver]     [Netdev]     [Linux Wireless]     [Netfilter]     [Bugtraq]     [Linux Filesystems]     [Yosemite Discussion]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Device Mapper]

  Powered by Linux