From: Mitch Bradley <wmb@firmworks•com>
To: Russell King - ARM Linux <linux@arm•linux.org.uk>
Cc: Nicolas Pitre <nico@fluxnic•net>,
devicetree-discuss <devicetree-discuss@lists•ozlabs.org>,
linuxppc-dev <linuxppc-dev@ozlabs•org>,
microblaze-uclinux@itee•uq.edu.au,
Olof Johansson <olof@lixom•net>,
Dan Malek <ppc6dev@digitaldans•com>,
Jeremy Kerr <jeremy.kerr@canonical•com>,
linux-arm-kernel@lists•infradead.org
Subject: Re: Request review of device tree documentation
Date: Sun, 13 Jun 2010 21:45:50 -1000 [thread overview]
Message-ID: <4C15DE2E.1050905@firmworks.com> (raw)
In-Reply-To: <20100614073828.GA6095@n2100.arm.linux.org.uk>
Russell King - ARM Linux wrote:
> On Sun, Jun 13, 2010 at 11:23:45PM -0600, Grant Likely wrote:
>
>>>> Or perhaps the MMU and caches can be turned off for the duration of the
>>>> callback.
>>>> I don't have the details of ARM MMUs and caches reloaded into my head
>>>> yet. Maybe next week...
>>>>
>
> We've had these kinds of questions in the past. Doing what you're asking
> above is not really an option - it requires:
>
> 1. disable all IRQs
> 2. setup 1:1 MMU mappings for code to turn off MMU
> (requires new page table)
> 3. disable imprecise exceptions
> 4. flush caches and TLBS
> 5. jump to 1:1 mapping area for code to disable MMU
> 6. disable caches and mmu
> 7. call function
> 8. flush caches and TLBs
> 9. re-enable caches and mmu
> 10. re-enable imprecise exceptions
> 11. switch back to original MMU mappings
> 12. re-enable all IRQs
>
> This is fine if you don't care at all about interrupt latency.
> Unfortunately, most people do care about interrupt latency because
> that directly affects interactivity and system performance. The
> called function could not enable interrupts or exceptions - as the
> CPU vectors are in virtual space, disabling the MMU effectively
> makes them disappear.
>
> Moreover, with the MMU and caches disabled, the CPU performance is
> extremely poor, so the called function will run slowly.
>
> So, disabling the MMU isn't really viable.
>
None of this is a deal-breaker for the kind of debugging tasks that are
the primary use case for the callback.
> Now, if the external code was fully PIC, we could then run it with
> the MMU enabled. However, this wouldn't really help - the external
> code could not access any devices without knowledge of how the kernel
> setup the V:P translations.
>
> So you'd need to pass some kind of data structure giving locations of
> devices to the called code - but then what if the kernel doesn't have
> the device mapped?
>
>
next prev parent reply other threads:[~2010-06-14 7:47 UTC|newest]
Thread overview: 75+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-06-11 22:59 Request review of device tree documentation Grant Likely
2010-06-11 23:47 ` Dan Malek
2010-06-12 2:58 ` Benjamin Herrenschmidt
2010-06-12 4:48 ` Mitch Bradley
2010-06-12 6:53 ` Grant Likely
2010-06-12 8:19 ` Mitch Bradley
2010-06-12 10:45 ` Benjamin Herrenschmidt
2010-06-12 10:48 ` Benjamin Herrenschmidt
2010-06-12 16:30 ` Mitch Bradley
2010-06-12 22:52 ` Benjamin Herrenschmidt
2010-06-13 5:07 ` Grant Likely
2010-06-13 5:39 ` Mitch Bradley
2010-06-13 5:59 ` Benjamin Herrenschmidt
2010-06-13 6:45 ` Mitch Bradley
2010-06-13 8:29 ` Benjamin Herrenschmidt
2010-06-14 5:36 ` Grant Likely
2010-06-14 20:00 ` Ben Dooks
2010-06-13 8:57 ` Benjamin Herrenschmidt
2010-06-14 5:23 ` Grant Likely
2010-06-14 7:38 ` Russell King - ARM Linux
2010-06-14 7:45 ` Mitch Bradley [this message]
2010-06-14 9:25 ` Russell King - ARM Linux
2010-06-14 9:36 ` Benjamin Herrenschmidt
2010-06-14 9:47 ` Russell King - ARM Linux
2010-06-14 14:29 ` Jamie Lokier
2010-06-14 13:51 ` Nicolas Pitre
2010-06-14 15:35 ` Grant Likely
2010-06-14 15:58 ` Nicolas Pitre
2010-06-14 16:16 ` Grant Likely
2010-06-14 5:02 ` Grant Likely
2010-06-14 12:44 ` David Gibson
2010-06-14 14:59 ` Nicolas Pitre
2010-06-14 15:08 ` Grant Likely
2010-06-14 16:02 ` Jamie Lokier
2010-06-14 16:23 ` Nicolas Pitre
2010-06-14 16:29 ` Grant Likely
2010-06-14 16:28 ` Grant Likely
2010-06-14 16:33 ` Jamie Lokier
2010-06-14 16:58 ` Mitch Bradley
2010-06-14 17:26 ` Nicolas Pitre
2010-06-14 18:20 ` Mitch Bradley
2010-06-14 19:40 ` Nicolas Pitre
2010-06-14 20:08 ` Mark Brown
2010-06-16 6:09 ` Mike Rapoport
2010-06-16 6:13 ` Mitch Bradley
2010-06-16 6:17 ` Mike Rapoport
2010-06-16 6:32 ` Mitch Bradley
2010-06-16 6:47 ` Mike Rapoport
2010-06-16 7:40 ` Mitch Bradley
2010-06-16 9:45 ` Vladimir Pantelic
2010-06-16 10:39 ` Mike Rapoport
2010-06-16 11:41 ` Jamie Lokier
2010-06-16 13:48 ` Jamie Bennett
2010-06-16 14:39 ` Nicolas Pitre
2010-06-16 17:43 ` Tim Bird
2010-06-16 6:52 ` M. Warner Losh
2010-06-18 22:12 ` Frank Rowand
2010-06-15 2:02 ` David Gibson
2010-06-14 15:51 ` M. Warner Losh
2010-06-13 5:48 ` Benjamin Herrenschmidt
2010-06-14 5:13 ` Grant Likely
2010-06-14 6:09 ` Benjamin Herrenschmidt
2010-06-14 6:17 ` Mitch Bradley
2010-06-12 22:15 ` Olof Johansson
2010-06-12 23:09 ` Grant Likely
2010-06-13 6:47 ` [microblaze-uclinux] " Edgar E. Iglesias
2010-06-12 3:00 ` Benjamin Herrenschmidt
2010-06-12 3:07 ` Benjamin Herrenschmidt
2010-06-13 13:12 ` Jeremy Kerr
2010-06-14 5:40 ` Grant Likely
2010-06-12 17:33 ` Stephan Gatzka
2010-06-12 18:19 ` Grant Likely
2010-06-14 5:54 ` Grant Likely
2010-08-05 4:43 ` David Gibson
2010-09-01 16:19 ` Grant Likely
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=4C15DE2E.1050905@firmworks.com \
--to=wmb@firmworks$(echo .)com \
--cc=devicetree-discuss@lists$(echo .)ozlabs.org \
--cc=jeremy.kerr@canonical$(echo .)com \
--cc=linux-arm-kernel@lists$(echo .)infradead.org \
--cc=linux@arm$(echo .)linux.org.uk \
--cc=linuxppc-dev@ozlabs$(echo .)org \
--cc=microblaze-uclinux@itee$(echo .)uq.edu.au \
--cc=nico@fluxnic$(echo .)net \
--cc=olof@lixom$(echo .)net \
--cc=ppc6dev@digitaldans$(echo .)com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox