Linux-RISC-V Archive on lore.kernel.org
 help / color / Atom feed
From: Damien Le Moal <Damien.LeMoal@wdc.com>
To: Sean Anderson <seanga2@gmail.com>,
	"linux-riscv@lists.infradead.org"
	<linux-riscv@lists.infradead.org>,
	Palmer Dabbelt <palmer@dabbelt.com>
Cc: Anup Patel <Anup.Patel@wdc.com>,
	Paul Walmsley <paul.walmsley@sifive.com>
Subject: Re: [PATCH 02/10] riscv: Force flat memory model with no-mmu
Date: Sat, 15 Feb 2020 02:40:59 +0000
Message-ID: <BYAPR04MB5816D6AB39649A563BC96F2FE7140@BYAPR04MB5816.namprd04.prod.outlook.com> (raw)
In-Reply-To: <cb38129d-ceb8-4eb0-6bbb-a9c825478410@gmail.com>

On 2020/02/15 11:26, Sean Anderson wrote:
> On 2/14/20 9:15 PM, Damien Le Moal wrote:
>> On 2020/02/15 5:18, Sean Anderson wrote:
>>> Hi,
>>>
>>> On 2/12/20 5:34 AM, Damien Le Moal wrote:
>>>> Compilation errors trigger if ARCH_SPARSEMEM_ENABLE is enabled for
>>>> a nommu kernel. Since the sparsemem model does not make sense anyway
>>>> for the nommu case, do not allow selecting this option to always use
>>>> the flatmem model.
>>>>
>>>> Signed-off-by: Damien Le Moal <damien.lemoal@wdc.com>
>>>> ---
>>>>  arch/riscv/Kconfig | 1 +
>>>>  1 file changed, 1 insertion(+)
>>>>
>>>> diff --git a/arch/riscv/Kconfig b/arch/riscv/Kconfig
>>>> index 73f029eae0cc..1a3b5a5276be 100644
>>>> --- a/arch/riscv/Kconfig
>>>> +++ b/arch/riscv/Kconfig
>>>> @@ -121,6 +121,7 @@ config ARCH_FLATMEM_ENABLE
>>>>  
>>>>  config ARCH_SPARSEMEM_ENABLE
>>>>  	def_bool y
>>>> +	depends on MMU
>>>>  	select SPARSEMEM_VMEMMAP_ENABLE
>>>>  
>>>>  config ARCH_SELECT_MEMORY_MODEL
>>>>
>>>
>>> Just for some background, why did you choose NOMMU? Afaik the K210 has
>>> an MMU following the RISC-V privileged specification 1.9
>>
>> Our early experiments with the k210 with opensbi revealed that the mmu is
>> definitely not a normal one or that it is not functional (e.g. S-mode fault
>> delegation bit setup leads to a hang). So at the time, we started assuming
>> that this is a nommu platform.
>>
>> Since then, others also mentioned that there is in fact an MMU but not
>> following the latest specs (I think Olof mentioned that). But I have not
>> look into this (yet) to try to make it work. Not sure how much effort would
>> be needed on the kernel to support this older specs mmu.
>>
>> In any case, considering the tiny 6+2MB of memory available, direct M-mode
>> Linux boot avoids the bootloader chain and openSBI use, which saves a lot
>> of memory. We could reduce this chain to opensbi with direct payload only,
>> but even then, page alignment will lead to memory loss. And at run-time,
>> nommu saves a lot too with the absence of page tables. Nommu makes sense
>> for this platform.
> 
> Well, the VM mode bits are in mstatus for this priv spec, so OpenSBI
> won't work since there is no way to set them. 

Interesting. At FOSDEM, we discussed with Palmer the work that would be
needed to disentangle NOMMU and M-MODE boot, which for now are rather
synonymous, but shouldn't. I guess this platform would still require M-MODE
boot, but not necessarily NOMMU.

>> This is the first step to get this platform running Linux. Due to the low
>> memory, it probably isn't a practical use case to use Linux in the first
>> place, but it definitely is a great inexpensive platform for getting
>> started with RISCV. NOMMU allows running Linux without much effort. Going
>> forward, we can also try to get that SoC MMU running.
> 
> Yeah, that's pretty reasonable. However, I don't think much has changed
> other than the locations of some of the registers has been changed
> around. The existing code to set up page table entries should not need
> major modifications.

OK. Sounds easy enough. But I think cleanup work to dissociate M-mode boot
and NOMMU will be needed first. After that, trying to enable the MMU should
be easier.

> 
> Alternatively, the base+bound scheme could probably work pretty well
> with low memory, though we would not be able to re-use any existing
> code.
> 
> --Sean
> 


-- 
Damien Le Moal
Western Digital Research


  reply index

Thread overview: 89+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-02-12 10:34 [PATCH 00/10] Kendryte k210 SoC boards support Damien Le Moal
2020-02-12 10:34 ` [PATCH 01/10] riscv: Fix gitignore Damien Le Moal
2020-02-20  0:15   ` Palmer Dabbelt
2020-02-12 10:34 ` [PATCH 02/10] riscv: Force flat memory model with no-mmu Damien Le Moal
2020-02-14 20:18   ` Sean Anderson
2020-02-15  2:15     ` Damien Le Moal
2020-02-15  2:26       ` Sean Anderson
2020-02-15  2:40         ` Damien Le Moal [this message]
2020-03-02  3:48   ` Anup Patel
2020-03-04 18:38   ` Palmer Dabbelt
2020-02-12 10:34 ` [PATCH 03/10] riscv: Unaligned load/store handling for M_MODE Damien Le Moal
2020-03-02  3:57   ` Anup Patel
2020-03-04 19:28   ` Palmer Dabbelt
2020-02-12 10:34 ` [PATCH 04/10] riscv: Add BUILTIN_DTB support Damien Le Moal
2020-03-02  3:58   ` Anup Patel
2020-03-04 19:28   ` Palmer Dabbelt
2020-03-05  4:58     ` Anup Patel
2020-03-05  5:14       ` Damien Le Moal
2020-03-05  5:37         ` Anup Patel
2020-03-05  6:13           ` Damien Le Moal
2020-03-08  6:10             ` Anup Patel
2020-03-05  8:18         ` Atish Patra
2020-03-07  0:02           ` Sean Anderson
2020-03-07  1:51             ` Atish Patra
2020-03-07  2:08               ` Sean Anderson
2020-03-06 23:56         ` Sean Anderson
2020-02-12 10:34 ` [PATCH 05/10] riscv: Add SOC early init support Damien Le Moal
2020-03-04 19:28   ` Palmer Dabbelt
2020-02-12 10:34 ` [PATCH 06/10] riscv: Add Kendryte K210 SoC support Damien Le Moal
2020-02-14 20:31   ` Sean Anderson
2020-03-04 19:38   ` Palmer Dabbelt
2020-02-12 10:34 ` [PATCH 07/10] riscv: Select required drivers for Kendryte SOC Damien Le Moal
2020-03-02  3:59   ` Anup Patel
2020-03-04 19:44   ` Palmer Dabbelt
2020-02-12 10:34 ` [PATCH 08/10] riscv: Add Kendryte K210 device tree Damien Le Moal
2020-02-14 20:51   ` Sean Anderson
2020-02-15  2:34     ` Damien Le Moal
2020-02-15  2:48       ` Sean Anderson
2020-02-15  3:00         ` Damien Le Moal
2020-02-18 14:12           ` Carlos Eduardo de Paula
2020-02-18 14:18             ` Sean Anderson
2020-02-18 14:30               ` Carlos Eduardo de Paula
2020-02-18 17:48                 ` Sean Anderson
2020-02-18 19:26                   ` Carlos Eduardo de Paula
2020-02-19  9:06                     ` Wladimir J. van der Laan
2020-02-19 22:28                       ` Sean Anderson
2020-02-20 10:48                         ` Wladimir J. van der Laan
2020-02-22 19:07                       ` Wladimir J. van der Laan
2020-04-01 17:55                         ` Drew Fustini
2020-04-02  2:24                           ` Damien Le Moal
2020-02-19  8:50                   ` Wladimir J. van der Laan
2020-02-27 19:43       ` Sean Anderson
2020-03-02  4:06   ` Anup Patel
2020-03-02  4:15     ` Damien Le Moal
2020-03-02  4:22       ` Anup Patel
2020-03-02  4:51         ` Damien Le Moal
2020-03-02  5:05           ` Anup Patel
2020-03-02  5:08             ` Damien Le Moal
2020-03-07  0:18               ` Sean Anderson
2020-03-07  4:11                 ` Anup Patel
2020-03-04 19:44   ` Palmer Dabbelt
2020-02-12 10:34 ` [PATCH 09/10] riscv: Kendryte K210 default config Damien Le Moal
2020-03-02  4:07   ` Anup Patel
2020-03-04 19:44   ` Palmer Dabbelt
2020-02-12 10:34 ` [PATCH 10/10] riscv: create a loader.bin for the kendryte kflash.py tool Damien Le Moal
2020-03-02  4:08   ` Anup Patel
2020-03-04 19:44   ` Palmer Dabbelt
2020-02-14 15:05 ` [PATCH 00/10] Kendryte k210 SoC boards support Carlos Eduardo de Paula
2020-02-15  2:02   ` Damien Le Moal
2020-02-17 13:28     ` Carlos Eduardo de Paula
2020-02-26 21:31       ` Carlos Eduardo de Paula
2020-02-27  2:18         ` Damien Le Moal
2020-02-28 20:32 ` Sean Anderson
2020-03-02  3:01   ` Damien Le Moal
2020-03-02  3:53     ` Sean Anderson
2020-03-02  4:11       ` Damien Le Moal
2020-03-02  4:18         ` Sean Anderson
2020-03-02  4:54           ` Damien Le Moal
2020-03-02  4:56             ` Sean Anderson
2020-03-02  5:03               ` Damien Le Moal
2020-03-02  4:17       ` Anup Patel
2020-03-02  4:21         ` Sean Anderson
2020-03-02  4:48         ` Damien Le Moal
2020-03-02  4:51           ` Damien Le Moal
2020-03-02  5:02           ` Sean Anderson
2020-03-02  5:11             ` Damien Le Moal
2020-03-02  5:25               ` Sean Anderson
2020-03-02  5:43                 ` Damien Le Moal
2020-03-04 19:44 ` Palmer Dabbelt

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=BYAPR04MB5816D6AB39649A563BC96F2FE7140@BYAPR04MB5816.namprd04.prod.outlook.com \
    --to=damien.lemoal@wdc.com \
    --cc=Anup.Patel@wdc.com \
    --cc=linux-riscv@lists.infradead.org \
    --cc=palmer@dabbelt.com \
    --cc=paul.walmsley@sifive.com \
    --cc=seanga2@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

Linux-RISC-V Archive on lore.kernel.org

Archives are clonable:
	git clone --mirror https://lore.kernel.org/linux-riscv/0 linux-riscv/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 linux-riscv linux-riscv/ https://lore.kernel.org/linux-riscv \
		linux-riscv@lists.infradead.org
	public-inbox-index linux-riscv

Example config snippet for mirrors

Newsgroup available over NNTP:
	nntp://nntp.lore.kernel.org/org.infradead.lists.linux-riscv


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git