[PATCH] riscv: Don't output a bogus mmu-type on a no MMU kernel

Atish Patra atishp at atishpatra.org
Sun May 22 01:25:46 PDT 2022


On Sat, May 21, 2022 at 1:47 PM Palmer Dabbelt <palmer at dabbelt.com> wrote:
>
> On Thu, 14 Apr 2022 10:30:36 PDT (-0700), niklas.cassel at wdc.com wrote:
> > Currently on a 64-bit kernel built without CONFIG_MMU, /proc/cpuinfo will
> > show the current MMU mode as sv57.
> >
> > While the device tree property "mmu-type" does have a value "riscv,none" to
> > describe a CPU without a MMU, since commit 73c7c8f68e72 ("riscv: Use
> > pgtable_l4_enabled to output mmu_type in cpuinfo"), we no longer rely on
> > device tree to output the MMU mode. (Not even for CONFIG_32BIT.)
> >
> > Therefore, instead of readding code to look at the "mmu-type" device tree
> > property, let's continue with the existing convention to use fixed values
> > for configurations where we don't determine the MMU mode at runtime.
> >
> > Add a new fixed value for !CONFIG_MMU in order to output the correct
> > MMU mode in cpuinfo.
>
> There's really two ideas as to what /proc/cpuinfo should be: do we show
> what the HW has, or what we userspace sees.  This sort of thing is a
> perfect example of that split.  We've been kind of vague about this in
> the past, but IMO putting what userspace sees in /proc/cpuinfo (and
> HWCAP, etc) is the right way to go.  That does hide a bit from userspace
> WRT what hardware it's running on, but it's more in line with the design
> of RISC-V (ie, a lot is hidden from userspace).
>

How about vendor id, arch id & implementation id ? Looking at the
/proc/cpuinfo output on arm64/x86,
it seems to print related information there.
---------------------------------------------------
/proc/cpuinfo output in x86
---------------------------------------------------
processor       : 31
vendor_id       : GenuineIntel
cpu family      : 6
model           : 85
model name      : Intel(R) Xeon(R) Gold 6246R CPU @ 3.40GHz
---------------------------------------------------
/proc/cpuinfo output in aarm64
---------------------------------------------------
ubuntu at ubuntu:~$ cat /proc/cpuinfo
processor       : 0
CPU implementer : 0x41
CPU architecture: 8
CPU variant     : 0x1
CPU part        : 0xd07
CPU revision    : 0
---------------------------------------------------


> I've put this on for-next.
>
> Thanks!
>
> > Signed-off-by: Niklas Cassel <niklas.cassel at wdc.com>
> > ---
> >  arch/riscv/kernel/cpu.c | 4 ++++
> >  1 file changed, 4 insertions(+)
> >
> > diff --git a/arch/riscv/kernel/cpu.c b/arch/riscv/kernel/cpu.c
> > index ccb617791e56..ecfb3e85ffb2 100644
> > --- a/arch/riscv/kernel/cpu.c
> > +++ b/arch/riscv/kernel/cpu.c
> > @@ -138,6 +138,7 @@ static void print_mmu(struct seq_file *f)
> >  {
> >       char sv_type[16];
> >
> > +#ifdef CONFIG_MMU
> >  #if defined(CONFIG_32BIT)
> >       strncpy(sv_type, "sv32", 5);
> >  #elif defined(CONFIG_64BIT)
> > @@ -148,6 +149,9 @@ static void print_mmu(struct seq_file *f)
> >       else
> >               strncpy(sv_type, "sv39", 5);
> >  #endif
> > +#else
> > +     strncpy(sv_type, "none", 5);
> > +#endif /* CONFIG_MMU */
> >       seq_printf(f, "mmu\t\t: %s\n", sv_type);
> >  }
>
> _______________________________________________
> linux-riscv mailing list
> linux-riscv at lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-riscv



-- 
Regards,
Atish



More information about the linux-riscv mailing list