All of lore.kernel.org
 help / color / mirror / Atom feed
From: marco.stornelli@gmail.com (Marco Stornelli)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH] ramoops appears geared to not support ARM
Date: Sat, 29 Oct 2011 14:42:42 +0200	[thread overview]
Message-ID: <4EABF4C2.7000104@gmail.com> (raw)
In-Reply-To: <20111029115507.GA19187@n2100.arm.linux.org.uk>

Il 29/10/2011 13:55, Russell King - ARM Linux ha scritto:
> On Sat, Oct 29, 2011 at 01:04:30PM +0200, Marco Stornelli wrote:
>> About the ioremap problem. It seems there is a problem on some ARM arch
>> to use ioremap (ramoops driver) to remap a piece of RAM even if it's not
>> used by kernel (reserved at boot with mem option, Bryan can you
>> confirm?).
>
> It's all very simple.
>
> We have three major 'memory types' - 'normal memory' which must be used
> for things like RAM that we execute code from and use atomic operations
> within.  This can be prefetched and reordered at will.
>
> 'device memory' is for devices, which tighter restrictions on reordering
> and guarantees concerning reads and writes.
>
> 'strongly ordered memory' is much like device memory.
>
> It is absolutely not permitted to map the same physical addresses with
> different types - this is a stronger requirement than getting the cache
> attributes the same.
>
> System memory is mapped using 'normal memory' - obviously because we need
> to be able to execute code and have working atomic operations throughout
> kernel memory.
>
> Now, ioremap creates device memory - because its main function is to
> dynamically map memory regions in devices.
>
> Now think: if we have system memory mapped as 'normal memory', and then
> we try to use ioremap() to remap some of that memory, that will create
> a new 'device memory' mapping with the existing 'normal memory' mapping
> still present.  Now look at the paragraph 'It is absolutely not permitted'
> and realise that the requirements for the architecture are being violated
> if we permitted this to occur.
>
> Also realise that if that condition is violated, 'unpredictable behaviour'
> will occur - not to the extent that the CPU will hang, but it could cause
> data errors which could influence overall system stability.
>
> So, the whole idea of using plain ioremap() with system memory is one
> that is just completely unsupportable on ARM without _first_ removing
> memory from the system mapping, which in turn means updating the page
> tables for every task in the system.
>

Ok, I understand, but other question: isn't there any way to reserve 
normal memory? Or at least, hasn't the mem kernel option any effect from 
that point of view?

WARNING: multiple messages have this Message-ID (diff)
From: Marco Stornelli <marco.stornelli@gmail.com>
To: Russell King - ARM Linux <linux@arm.linux.org.uk>
Cc: linux-arm-kernel@lists.infradead.org, msb@chromium.org,
	linux-kernel@vger.kernel.org, sergiu@chromium.org,
	Bryan Freed <bfreed@chromium.org>,
	akpm@linux-foundation.org, seiji.aguchi@hds.com
Subject: Re: [PATCH] ramoops appears geared to not support ARM
Date: Sat, 29 Oct 2011 14:42:42 +0200	[thread overview]
Message-ID: <4EABF4C2.7000104@gmail.com> (raw)
In-Reply-To: <20111029115507.GA19187@n2100.arm.linux.org.uk>

Il 29/10/2011 13:55, Russell King - ARM Linux ha scritto:
> On Sat, Oct 29, 2011 at 01:04:30PM +0200, Marco Stornelli wrote:
>> About the ioremap problem. It seems there is a problem on some ARM arch
>> to use ioremap (ramoops driver) to remap a piece of RAM even if it's not
>> used by kernel (reserved at boot with mem option, Bryan can you
>> confirm?).
>
> It's all very simple.
>
> We have three major 'memory types' - 'normal memory' which must be used
> for things like RAM that we execute code from and use atomic operations
> within.  This can be prefetched and reordered at will.
>
> 'device memory' is for devices, which tighter restrictions on reordering
> and guarantees concerning reads and writes.
>
> 'strongly ordered memory' is much like device memory.
>
> It is absolutely not permitted to map the same physical addresses with
> different types - this is a stronger requirement than getting the cache
> attributes the same.
>
> System memory is mapped using 'normal memory' - obviously because we need
> to be able to execute code and have working atomic operations throughout
> kernel memory.
>
> Now, ioremap creates device memory - because its main function is to
> dynamically map memory regions in devices.
>
> Now think: if we have system memory mapped as 'normal memory', and then
> we try to use ioremap() to remap some of that memory, that will create
> a new 'device memory' mapping with the existing 'normal memory' mapping
> still present.  Now look at the paragraph 'It is absolutely not permitted'
> and realise that the requirements for the architecture are being violated
> if we permitted this to occur.
>
> Also realise that if that condition is violated, 'unpredictable behaviour'
> will occur - not to the extent that the CPU will hang, but it could cause
> data errors which could influence overall system stability.
>
> So, the whole idea of using plain ioremap() with system memory is one
> that is just completely unsupportable on ARM without _first_ removing
> memory from the system mapping, which in turn means updating the page
> tables for every task in the system.
>

Ok, I understand, but other question: isn't there any way to reserve 
normal memory? Or at least, hasn't the mem kernel option any effect from 
that point of view?

  reply	other threads:[~2011-10-29 12:42 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-10-28 23:21 [PATCH] ramoops appears geared to not support ARM Bryan Freed
2011-10-28 23:21 ` [PATCH] ramoops: Add support for ARM systems Bryan Freed
2011-10-29  8:39 ` [PATCH] ramoops appears geared to not support ARM Marco Stornelli
2011-10-29  8:39   ` Marco Stornelli
2011-10-29  9:34   ` Russell King - ARM Linux
2011-10-29  9:34     ` Russell King - ARM Linux
2011-10-29 11:04     ` Marco Stornelli
2011-10-29 11:04       ` Marco Stornelli
2011-10-29 11:55       ` Russell King - ARM Linux
2011-10-29 11:55         ` Russell King - ARM Linux
2011-10-29 12:42         ` Marco Stornelli [this message]
2011-10-29 12:42           ` Marco Stornelli
2011-10-29 12:53           ` Russell King - ARM Linux
2011-10-29 12:53             ` Russell King - ARM Linux
2011-10-29 14:22 ` Marco Stornelli
     [not found]   ` <CAEYUcX1PUgniJLqYXKM5pf_9T06OPFg4q0ZUCFc8Deu1J_R9-A@mail.gmail.com>
2011-10-30 11:33     ` Marco Stornelli
2011-10-31  6:03       ` Bryan Freed
2011-10-31  8:57         ` Marco Stornelli
2011-10-31 23:03           ` Bryan Freed
2011-11-01  8:52             ` Marco Stornelli

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=4EABF4C2.7000104@gmail.com \
    --to=marco.stornelli@gmail.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    /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.