From: Scott Wood <scottwood@freescale.com>
To: Alexander Graf <agraf@suse.de>
Cc: Elie Richa <richa@adacore.com>,
QEMU-devel Developers <qemu-devel@nongnu.org>
Subject: Re: [Qemu-devel] [PATCH 21/28] PPC: E500: Add PV spinning code
Date: Wed, 27 Jul 2011 11:18:33 -0500 [thread overview]
Message-ID: <20110727111833.7e7f980d@schlenkerla.am.freescale.net> (raw)
In-Reply-To: <4E3013E7.7000507@suse.de>
On Wed, 27 Jul 2011 15:34:31 +0200
Alexander Graf <agraf@suse.de> wrote:
> On 07/25/2011 10:40 PM, Scott Wood wrote:
> > On Sat, 23 Jul 2011 12:50:05 +0200
> > Alexander Graf<agraf@suse.de> wrote:
> >
> >> +typedef struct spin_info {
> >> + uint64_t addr;
> >> + uint64_t r3;
> >> + uint32_t resv;
> >> + uint32_t pir;
> >> + uint64_t r6;
> >> +} __attribute__ ((packed)) SpinInfo;
> > Note that r6 isn't part of the ePAPR spin table -- I think it may have been
> > in an early draft and gotten into U-Boot that way. A future ePAPR could
> > assign another use to that position in the spin table.
>
> How is the size defined then?
The size of what?
The size of the IMA is up to the boot program (ePAPR 1.1 will impose a
minimum of 1 MiB), and is conveyed to the OS in r7.
The size of the spin table entry is determined by the release method name.
If fields are added in the future, we'd call it something like
"spin-table-v2". Any OS that writes to the r6 field with a "spin-table"
release-method is invoking undefined behavior.
> > Do we support any host ABIs strange enough that __attribute__((packed))
> > would be needed here?
>
> I don't think we do, but in general I prefer to be safe rather than
> sorry. It doesn't hurt, right?
GCC takes it as meaning the start of the structure could be misaligned, and
thus generates poor code for some architectures.
I think specifying both packed and an explicit struct alignment will avoid
that problem and still be sufficiently paranoid, if desired. Not that this
is particularly performance critical, of course. :-)
> >> +static void mmubooke_create_initial_mapping(CPUState *env,
> >> + target_ulong va,
> >> + target_phys_addr_t pa,
> >> + target_phys_addr_t len)
> >> +{
> >> + ppcmas_tlb_t *tlb = booke206_get_tlbm(env, 1, 0, 0);
> >> + target_phys_addr_t size;
> >> +
> >> + size = (booke206_page_size_to_tlb(len)<< MAS1_TSIZE_SHIFT);
> >> + tlb->mas1 = MAS1_VALID | size;
> >> + tlb->mas2 = va& TARGET_PAGE_MASK;
> >> + tlb->mas7_3 = pa& TARGET_PAGE_MASK;
> >> + tlb->mas7_3 |= MAS3_UR | MAS3_UW | MAS3_UX | MAS3_SR | MAS3_SW | MAS3_SX;
> >> +}
> > [snip]
> >> + mmubooke_create_initial_mapping(env, env->nip, env->nip, map_size);
> > ePAPR says:
> >
> > The Secondary IMA (SIMA) mapping in the MMU shall map effective address 0
> > to the entry_addr field in the spin table, aligned down to the SIMA size.
>
> So it jumps to nip & ~64MB?
Yes.
-Scott
next prev parent reply other threads:[~2011-07-27 16:18 UTC|newest]
Thread overview: 34+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-07-23 10:49 [Qemu-devel] [PATCH 00/28] SMP support for MPC8544DS Alexander Graf
2011-07-23 10:49 ` [Qemu-devel] [PATCH 01/28] PPC: Move openpic to target specific code compilation Alexander Graf
2011-07-23 10:49 ` [Qemu-devel] [PATCH 02/28] PPC: Add CPU local MMIO regions to MPIC Alexander Graf
2011-07-23 10:49 ` [Qemu-devel] [PATCH 03/28] PPC: Extend MPIC MMIO range Alexander Graf
2011-07-23 10:49 ` [Qemu-devel] [PATCH 04/28] PPC: Fix IPI support in MPIC Alexander Graf
2011-07-23 10:49 ` [Qemu-devel] [PATCH 05/28] PPC: Set MPIC IDE for IPI to 0 Alexander Graf
2011-07-25 8:46 ` Elie Richa
2011-07-25 8:50 ` Alexander Graf
2011-07-23 10:49 ` [Qemu-devel] [PATCH 06/28] PPC: MPIC: Remove read functionality for WO registers Alexander Graf
2011-07-23 10:49 ` [Qemu-devel] [PATCH 07/28] PPC: MPIC: Fix CI bit definitions Alexander Graf
2011-07-23 10:49 ` [Qemu-devel] [PATCH 08/28] PPC: Bump MPIC up to 32 supported CPUs Alexander Graf
2011-07-23 10:49 ` [Qemu-devel] [PATCH 09/28] PPC: E500: create multiple envs Alexander Graf
2011-07-23 10:49 ` [Qemu-devel] [PATCH 10/28] PPC: E500: Generate IRQ lines for many CPUs Alexander Graf
2011-07-23 10:49 ` [Qemu-devel] [PATCH 11/28] device tree: add nop_node Alexander Graf
2011-07-23 10:49 ` [Qemu-devel] [PATCH 12/28] PPC: bamboo: Move host fdt copy to target Alexander Graf
2011-07-23 10:49 ` [Qemu-devel] [PATCH 13/28] PPC: KVM: Add generic function to read host clockfreq Alexander Graf
2011-07-23 10:49 ` [Qemu-devel] [PATCH 14/28] PPC: E500: Use generic kvm function for freq Alexander Graf
2011-07-23 10:49 ` [Qemu-devel] [PATCH 15/28] PPC: E500: Remove mpc8544_copy_soc_cell Alexander Graf
2011-07-23 10:50 ` [Qemu-devel] [PATCH 16/28] PPC: bamboo: Use kvm api for freq and clock frequencies Alexander Graf
2011-07-23 10:50 ` [Qemu-devel] [PATCH 17/28] PPC: KVM: Remove kvmppc_read_host_property Alexander Graf
2011-07-23 10:50 ` [Qemu-devel] [PATCH 18/28] PPC: KVM: Add stubs for kvm helper functions Alexander Graf
2011-07-23 10:50 ` [Qemu-devel] [PATCH 19/28] PPC: E500: Update freqs for all CPUs Alexander Graf
2011-07-23 10:50 ` [Qemu-devel] [PATCH 20/28] PPC: E500: Remove unneeded CPU nodes Alexander Graf
2011-07-23 10:50 ` [Qemu-devel] [PATCH 21/28] PPC: E500: Add PV spinning code Alexander Graf
2011-07-25 20:40 ` Scott Wood
2011-07-27 13:34 ` Alexander Graf
2011-07-27 16:18 ` Scott Wood [this message]
2011-07-23 10:50 ` [Qemu-devel] [PATCH 22/28] PPC: E500: Update cpu-release-addr property in cpu nodes Alexander Graf
2011-07-23 10:50 ` [Qemu-devel] [PATCH 23/28] device tree: add add_subnode command Alexander Graf
2011-07-23 10:50 ` [Qemu-devel] [PATCH 24/28] device tree: dont fail operations Alexander Graf
2011-07-23 10:50 ` [Qemu-devel] [PATCH 25/28] device tree: give dt more size Alexander Graf
2011-07-23 10:50 ` [Qemu-devel] [PATCH 26/28] MPC8544DS: Remove CPU nodes Alexander Graf
2011-07-23 10:50 ` [Qemu-devel] [PATCH 27/28] MPC8544DS: Generate CPU nodes on init Alexander Graf
2011-07-23 10:50 ` [Qemu-devel] [PATCH 28/28] PPC: E500: Bump CPU count to 15 Alexander Graf
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=20110727111833.7e7f980d@schlenkerla.am.freescale.net \
--to=scottwood@freescale.com \
--cc=agraf@suse.de \
--cc=qemu-devel@nongnu.org \
--cc=richa@adacore.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
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).