All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Jiaxun Yang" <jiaxun.yang@flygoat.com>
To: "Serge Semin" <fancer.lancer@gmail.com>,
	"Thomas Bogendoerfer" <tsbogend@alpha.franken.de>
Cc: "Arnd Bergmann" <arnd@arndb.de>,
	"Andrew Morton" <akpm@linux-foundation.org>,
	"Mike Rapoport" <rppt@kernel.org>,
	"Matthew Wilcox" <willy@infradead.org>,
	"Tiezhu Yang" <yangtiezhu@loongson.cn>,
	"Huacai Chen" <chenhuacai@kernel.org>,
	"Yinglu Yang" <yangyinglu@loongson.cn>,
	"Alexey Malahov" <Alexey.Malahov@baikalelectronics.ru>,
	"Aleksandar Rikalo" <aleksandar.rikalo@syrmia.com>,
	"Aleksandar Rikalo" <arikalo@gmail.com>,
	"Dragan Mladjenovic" <dragan.mladjenovic@syrmia.com>,
	"Chao-ying Fu" <cfu@wavecomp.com>,
	"Marc Zyngier" <maz@kernel.org>,
	"linux-mips@vger.kernel.org" <linux-mips@vger.kernel.org>,
	linux-mm@kvack.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH 1/7] mips: dmi: Fix early remap on MIPS32
Date: Fri, 24 Nov 2023 22:34:28 +0000	[thread overview]
Message-ID: <7040f3a6-64f4-4110-9bf6-e65db85ea034@app.fastmail.com> (raw)
In-Reply-To: <3iksuovvsln3cw3xpmjd7f7xixfvwaneu4ok56fnookvyolpco@wrxxew3thgnq>



在2023年11月24日十一月 下午6:52,Serge Semin写道:
> On Thu, Nov 23, 2023 at 05:33:31PM +0000, Jiaxun Yang wrote:
>> 
>> 
>> 在2023年11月23日十一月 下午4:07,Thomas Bogendoerfer写道:
>> > On Thu, Nov 23, 2023 at 03:07:09PM +0000, Jiaxun Yang wrote:
>> >> 
>> [...]
>> >
>> > the problem with all 32bit unmapped segments is their limitations in
>> > size. But there is always room to try to use unmapped and fall back
>> > to mapped, if it doesn't work. But I doubt anybody is going to
>> > implement that.
>> 
>> Yep, I guess fallback should be implemented for ioremap_cache as well.
>> 
>> >
>> >> >> AFAIK for Loongson DMI is located at cached memory so using ioremap_uc
>> >> >> blindly will cause inconsistency.
>> >> >
>> >> > why ?
>> >> 
>> >> Firmware sometimes does not flush those tables from cache back to memory.
>> >> For Loongson systems (as well as most MTI systems) cache is enabled by
>> >> firmware.
>> >
>> > kernel flushes all caches on startup, so there shouldn't be a problem.
>> 
>> Actually dmi_setup() is called before cpu_cache_init().
>
> To preliminary sum the discussion, indeed there can be issues on the
> platforms which have DMI initialized on the cached region. Here are
> several solutions and additional difficulties I think may be caused by
> implementing them:
>
> 1. Use unmapped cached region utilization in the MIPS32 ioremap_prot()
> method.
> This solution a bit clumsy than it looks on the first glance.
> ioremap_prot() can be used for various types of the cachability
> mapping. Currently it's a default-cacheable CA preserved in the
> _page_cachable_default variable and Write-combined CA saved in
> boot_cpu_data.writecombine. Based on that we would have needed to use
> the unmapped cached region utilized for the IO-remaps called with the
> "_page_cachable_default" mapping flags passed only. The rest of the IO
> range mappings, including the write-combined ones, would have been
> handled by VM means. This would have made the ioremap_prot() a bit
> less maintainable, but still won't be that hard to implement (unless I
> miss something):
> --- a/arch/mips/mm/ioremap.c
> +++ b/arch/mips/mm/ioremap.c
>         /*
> -        * Map uncached objects in the low 512mb of address space using KSEG1,
> -        * otherwise map using page tables.
> +        * Map uncached/default-cached objects in the low 512mb of address
> +        * space using KSEG1/KSEG0, otherwise map using page tables.
>          */
> -       if (IS_LOW512(phys_addr) && IS_LOW512(last_addr) &&
> -           flags == _CACHE_UNCACHED)
> -               return (void __iomem *) CKSEG1ADDR(phys_addr);
> +       if (IS_LOW512(phys_addr) && IS_LOW512(last_addr)) {
> +               if (flags == _CACHE_UNCACHED)
> +                       return (void __iomem *) CKSEG1ADDR(phys_addr);
> +               else if (flags == _page_cachable_default)
> +                       return (void __iomem *) CKSEG0ADDR(phys_addr);
> +       }
>
A nip, _page_cachable_default is set in cpu_cache_init() as well. We'd
better move it to cpu-probe.c, or give it a reasonable default value.

Thanks
-- 
- Jiaxun

  parent reply	other threads:[~2023-11-24 22:34 UTC|newest]

Thread overview: 42+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-11-22 18:23 [PATCH 0/7] MIPS: mm: Fix some memory-related issues Serge Semin
2023-11-22 18:23 ` [PATCH 1/7] mips: dmi: Fix early remap on MIPS32 Serge Semin
2023-11-22 19:35   ` Arnd Bergmann
2023-11-23  9:32     ` Serge Semin
2023-11-23 12:13       ` Jiaxun Yang
2023-11-23 12:29         ` Thomas Bogendoerfer
2023-11-23 15:07           ` Jiaxun Yang
2023-11-23 16:07             ` Thomas Bogendoerfer
2023-11-23 17:33               ` Jiaxun Yang
2023-11-24 18:52                 ` Serge Semin
2023-11-24 22:03                   ` Jiaxun Yang
2023-11-27 16:23                     ` Serge Semin
2023-11-27 21:08                       ` Jiaxun Yang
2023-11-28 11:34                         ` Serge Semin
2023-11-28 15:46                           ` Jiaxun Yang
2023-11-30 19:16                             ` Serge Semin
2023-12-01  0:13                               ` Jiaxun Yang
2023-12-01 14:54                                 ` Serge Semin
2023-12-01 15:10                                   ` Jiaxun Yang
2023-12-01 18:26                                     ` Serge Semin
2023-11-28 12:41                       ` Arnd Bergmann
2023-11-28 13:52                         ` Serge Semin
2023-11-28 21:59                           ` Arnd Bergmann
2023-11-30 19:26                             ` Serge Semin
2023-11-24 22:34                   ` Jiaxun Yang [this message]
2023-11-22 18:24 ` [PATCH 2/7] mips: Fix incorrect max_low_pfn adjustment Serge Semin
2023-11-22 18:24 ` [PATCH 3/7] mips: Fix max_mapnr being uninitialized on early stages Serge Semin
2023-11-22 18:24 ` [PATCH 4/7] mips: Optimize max_mapnr init procedure Serge Semin
2023-11-22 18:24 ` [PATCH 5/7] mm/mm_init.c: Extend init unavailable range doc info Serge Semin
2023-11-23 10:18   ` Mike Rapoport
2023-11-23 10:42     ` Serge Semin
2023-11-24  8:19       ` Mike Rapoport
2023-11-24 11:18         ` Serge Semin
2023-11-28  7:13           ` Mike Rapoport
2023-11-28 10:51             ` Serge Semin
2023-11-29  6:14               ` Mike Rapoport
2023-11-30 13:30                 ` Serge Semin
2023-11-22 18:24 ` [PATCH 6/7] mm/mm_init.c: Append '\n' to the unavailable ranges log-message Serge Semin
2023-11-23 10:06   ` Mike Rapoport
2023-11-22 18:24 ` [PATCH 7/7] mips: Set dump-stack arch description Serge Semin
2023-11-22 18:29 ` [PATCH 0/7] MIPS: mm: Fix some memory-related issues Andrew Morton
2023-11-23 10:12   ` Serge Semin

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=7040f3a6-64f4-4110-9bf6-e65db85ea034@app.fastmail.com \
    --to=jiaxun.yang@flygoat.com \
    --cc=Alexey.Malahov@baikalelectronics.ru \
    --cc=akpm@linux-foundation.org \
    --cc=aleksandar.rikalo@syrmia.com \
    --cc=arikalo@gmail.com \
    --cc=arnd@arndb.de \
    --cc=cfu@wavecomp.com \
    --cc=chenhuacai@kernel.org \
    --cc=dragan.mladjenovic@syrmia.com \
    --cc=fancer.lancer@gmail.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mips@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=maz@kernel.org \
    --cc=rppt@kernel.org \
    --cc=tsbogend@alpha.franken.de \
    --cc=willy@infradead.org \
    --cc=yangtiezhu@loongson.cn \
    --cc=yangyinglu@loongson.cn \
    /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
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.