[PATCH 00/13] riscv: compat: Add COMPAT mode support for rv64

Jisheng Zhang jszhang3 at mail.ustc.edu.cn
Sun Dec 26 00:22:23 PST 2021


On Wed, 22 Dec 2021 20:59:30 +0800
Guo Ren <guoren at kernel.org> wrote:

> On Wed, Dec 22, 2021 at 2:10 AM Arnd Bergmann <arnd at arndb.de> wrote:
> >
> > On Tue, Dec 21, 2021 at 5:35 PM <guoren at kernel.org> wrote:  
> > >
> > > From: Guo Ren <guoren at linux.alibaba.com>
> > >
> > > Currently, most 64-bit architectures (x86, parisc, powerpc, arm64,
> > > s390, mips, sparc) have supported COMPAT mode. But they all have
> > > history issues and can't use standard linux unistd.h. RISC-V would
> > > be first standard __SYSCALL_COMPAT user of include/uapi/asm-generic
> > > /unistd.h.
> > >
> > > The patchset are based on v5.16-rc6, you can compare rv64-compat32
> > > v.s. rv32-whole in qemu with following step:  
> >
> > Looks good overall, see my individual replies for minor comments I had.  
> Thx for the review :)
> 
> >
> > I think there is a bigger question to answer though, which is whether this is
> > actually a useful feature for rv64. In general, there are two reasons for
> > wanting compat mode:
> >
> > a) compatibility with existing binaries and distros
> >
> > b) reducing the memory footprint of user space in a memory constrained
> > environment, either deeply embedded or in a container.
> >
> > For the other architectures, a) is clearly the main driver, but equally so
> > this is not the case on riscv, which does not have any legacy 32-bit
> > code. Without that, adding compat mode would mainly introduce a
> > second ABI to a lot of environments that at the moment only need to
> > support one, and that adds complexity to the implementation and
> > the extra attack surface of the second syscall ABI when an exploit
> > may be possible only in compat mode.
> >
> > There is still some benefit in b), but it would need to be weighed
> > against the downsides above. Can you explain in more detail what
> > use cases you have in mind, and which CPU cores actually support
> > this mode?  
> The most reason is about b), see our customer's product:
> https://www.cnx-software.com/2021/10/25/allwinner-d1s-f133-risc-v-processor-64mb-ddr2/
> 
> So I think all our next generation rv64 cores should support
> compat-mode. Compare to releasing rv32-full core, rv64 compat-mode is
> very cheap for our CPU design.
> 
> You would get the answer when our new generation CPU is announced and it's soon.
> 

What about adding RV64 ILP32 support instead? This don't need HW side
modifications so can benefit all RV64.

Thanks
 
> Currently, only qemu supports rv64 compact mode, that is my colleague
> (LIU Zhi Wei) contributed.




More information about the linux-riscv mailing list