Re: [PATCH v3 1/2] RISC-V: Define sys_riscv_flush_icache when SMP=n

From: Palmer Dabbelt
Date: Fri Aug 10 2018 - 14:27:42 EST


On Fri, 10 Aug 2018 01:38:04 PDT (-0700), Christoph Hellwig wrote:
On Thu, Aug 09, 2018 at 03:19:51PM -0700, Palmer Dabbelt wrote:
This would be necessary to make non-SMP builds work, but there is
another error in the implementation of our syscall linkage that actually
just causes sys_riscv_flush_icache to never build. I've build tested
this on allnoconfig and allnoconfig+SMP=y, as well as defconfig like
normal.

Would't it make sense to use COND_SYSCALL to stub out the syscall
for !SMP builds?

I'm not sure. We can implement the syscall fine in !SMP, it's just that the vDSO is expected to always eat these calls because in non-SMP mode you can do a global fence.i by just doing a local fence.i (there's only one hart).

The original rationale behind not having the syscall in non-SMP mode was to limit the user ABI, but on looking again that seems like it's just a bit of extra complexity that doesn't help anything. It's already been demonstrated that nothing is checking the error because it's been silently slipping past userspace for six months, so the extra complexity seems like it'll just cause someone else to have to chase the bug in the future.

But I'm really OK either way. Is there a precedent for what to do here?