From: thomas.petazzoni@free-electrons.com (Thomas Petazzoni)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 9/9] arm: mvebu: switch internal register address at runtime if needed
Date: Wed, 22 May 2013 19:59:42 +0200 [thread overview]
Message-ID: <20130522195942.33ff1131@skate> (raw)
In-Reply-To: <20130522174258.GO2824@lunn.ch>
Dear Andrew Lunn,
On Wed, 22 May 2013 19:42:58 +0200, Andrew Lunn wrote:
> > + * However, when the bit is not set, we do a static mapping of the
> > + * register area that allows to change the internal register address,
> > + * we change this address, and set this bit.
>
> Hi Thomas
>
> Please could you explain this "and set this bit".
>
> If i understand the comment correctly, you are talking about the bit
> in CP15. Why is it necessary to set it, since at the next WFI its
> going to get cleared. I also don't actually see any code doing the
> setting of this bit.
Nice catch. This is a left-over from a previous implementation. For
experimentation purposes, I have been using a different CP15 bit that
was not getting cleared on WFIs, so once the register address switch was
done, I was setting this bit to indicate to further invocations of
earlyprintk that the switch has occurred.
In the mean time, the code has been changed to use the final bit used
by Marvell bootloaders, and this one gets cleared at the next WFI. So
I'm now using a global variable instead to indicate that the switch has
occurred making this comment inaccurate.
I'll fix that in the next revision of this patch set.
> > + /*
> > + * Change the physical base address of the
> > + * registers. From now on, and until
> > + * debug_ll_io_init() is called below, it is not
> > + * possible to do any print, because earlyprintk will
> > + * not work.
>
> Is its "not work" or "locks up the CPU as dead as a Dodo?".
locks up the CPU as a Dodo: you have switched the registers from 0xd0
to 0xf1, but the earlyprintk virtual mapping still points to 0xd0. So
if you try to do a printk, it will call earlyprintk, which will use the
old virtual mapping (since mvebu_switched_regs isn't set yet, it will
be at the next line), and that will make it use the old physical
address of the UART. So you'll write to 0xd0012000, and you're dead.
Thanks for the review!
Thomas
--
Thomas Petazzoni, Free Electrons
Kernel, drivers, real-time and embedded Linux
development, consulting, training and support.
http://free-electrons.com
next prev parent reply other threads:[~2013-05-22 17:59 UTC|newest]
Thread overview: 91+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-05-21 10:33 [PATCH 0/9] Switch internal registers address to 0xF1 on Armada 370/XP Thomas Petazzoni
2013-05-21 10:33 ` [PATCH 1/9] arm: mvebu: fix length of SATA registers area in .dtsi Thomas Petazzoni
2013-05-21 13:42 ` Jason Cooper
2013-05-21 10:33 ` [PATCH 2/9] arm: mvebu: fix length of Ethernet " Thomas Petazzoni
2013-05-21 13:43 ` Jason Cooper
2013-05-21 10:33 ` [PATCH 3/9] arm: mvebu: mark functions of armada-370-xp.c as static Thomas Petazzoni
2013-05-21 13:45 ` Jason Cooper
2013-05-21 10:33 ` [PATCH 4/9] arm: mvebu: remove dependency of SMP init on static I/O mapping Thomas Petazzoni
2013-05-21 10:33 ` [PATCH 5/9] arm: mvebu: avoid hardcoded virtual address in coherency code Thomas Petazzoni
2013-05-21 10:33 ` [PATCH 6/9] arm: mvebu: move cache and mvebu-mbus initialization later Thomas Petazzoni
2013-05-21 14:16 ` Jason Cooper
2013-05-21 15:37 ` Thomas Petazzoni
2013-05-21 15:43 ` Jason Cooper
2013-05-21 16:10 ` Thomas Petazzoni
2013-05-21 16:37 ` Jason Cooper
2013-05-21 16:44 ` Thomas Petazzoni
2013-05-21 10:33 ` [PATCH 7/9] arm: mvebu: remove hardcoded static I/O mapping Thomas Petazzoni
2013-05-21 10:33 ` [PATCH 8/9] arm: mvebu: don't hardcode a physical address in headsmp.S Thomas Petazzoni
2013-05-21 10:33 ` [PATCH 9/9] arm: mvebu: switch internal register address at runtime if needed Thomas Petazzoni
2013-05-22 13:27 ` Thomas Petazzoni
2013-05-22 14:04 ` Andrew Lunn
2013-05-22 14:16 ` Thomas Petazzoni
2013-05-22 14:17 ` Sebastian Hesselbarth
2013-05-22 17:42 ` Andrew Lunn
2013-05-22 17:59 ` Thomas Petazzoni [this message]
2013-05-22 18:31 ` Andrew Lunn
2013-05-21 19:38 ` [PATCH 0/9] Switch internal registers address to 0xF1 on Armada 370/XP Willy Tarreau
2013-05-21 20:12 ` Thomas Petazzoni
2013-05-21 20:26 ` Willy Tarreau
2013-05-22 10:01 ` Sebastian Hesselbarth
2013-05-22 11:46 ` Greg
2013-05-22 13:43 ` Russell King - ARM Linux
2013-05-22 13:52 ` Thomas Petazzoni
2013-05-22 14:11 ` Arnd Bergmann
2013-05-22 14:17 ` Russell King - ARM Linux
2013-05-22 14:23 ` Sebastian Hesselbarth
2013-05-22 14:33 ` Arnd Bergmann
2013-05-22 14:41 ` Gregory CLEMENT
2013-05-22 15:18 ` Arnd Bergmann
2013-05-22 15:37 ` Gregory CLEMENT
2013-05-22 15:43 ` Arnd Bergmann
2013-05-22 15:56 ` Gregory CLEMENT
2013-05-22 20:30 ` Arnd Bergmann
2013-05-22 15:06 ` Thomas Petazzoni
2013-05-22 15:35 ` Arnd Bergmann
2013-05-22 15:51 ` Andrew Lunn
2013-05-22 16:22 ` Thomas Petazzoni
2013-05-22 20:36 ` Arnd Bergmann
2013-05-23 10:02 ` Thomas Petazzoni
2013-05-23 14:12 ` Arnd Bergmann
2013-05-23 14:47 ` Thomas Petazzoni
2013-05-23 17:39 ` Arnd Bergmann
2013-05-22 16:08 ` Thomas Petazzoni
2013-05-22 16:35 ` Willy Tarreau
2013-05-22 16:42 ` Thomas Petazzoni
2013-05-22 16:49 ` Willy Tarreau
2013-05-22 17:00 ` Thomas Petazzoni
2013-05-22 17:08 ` Willy Tarreau
2013-05-22 17:14 ` Thomas Petazzoni
2013-05-22 20:47 ` Sebastian Hesselbarth
2013-05-22 16:49 ` Jason Cooper
2013-05-22 16:57 ` Thomas Petazzoni
2013-05-22 17:13 ` Jason Cooper
2013-05-22 18:05 ` Thomas Petazzoni
2013-05-22 18:09 ` Jason Cooper
2013-05-22 18:13 ` Thomas Petazzoni
2013-05-22 18:19 ` Jason Gunthorpe
2013-05-22 18:55 ` Andrew Lunn
2013-05-22 19:36 ` Jason Gunthorpe
2013-05-22 20:31 ` Andrew Lunn
2013-05-23 9:53 ` Thomas Petazzoni
2013-05-23 17:27 ` Jason Gunthorpe
2013-05-22 20:40 ` Arnd Bergmann
2013-05-22 21:31 ` Thomas Petazzoni
2013-05-23 5:53 ` Andrew Lunn
2013-05-23 7:53 ` Russell King - ARM Linux
2013-05-23 12:23 ` Thomas Petazzoni
2013-05-23 14:14 ` Arnd Bergmann
2013-05-23 14:50 ` Thomas Petazzoni
2013-05-23 20:26 ` Russell King - ARM Linux
2013-05-23 20:40 ` Arnd Bergmann
2013-05-23 23:09 ` Russell King - ARM Linux
2013-05-23 23:17 ` Thomas Petazzoni
2013-05-23 23:40 ` Russell King - ARM Linux
2013-05-24 10:25 ` Greg
2013-05-24 7:15 ` Arnd Bergmann
2013-05-24 7:43 ` Thomas Petazzoni
2013-05-24 9:16 ` Arnd Bergmann
2013-05-24 7:46 ` Russell King - ARM Linux
2013-05-24 8:07 ` Thomas Petazzoni
2013-05-24 10:57 ` Arnd Bergmann
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=20130522195942.33ff1131@skate \
--to=thomas.petazzoni@free-electrons.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).