Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 18 Apr 2009 14:50:28 -0400
From:      Chuck Robey <chuckr@telenix.org>
To:        Mark Tinguely <tinguely@casselton.net>
Cc:        gballet@gmail.com, freebsd-arm@freebsd.org, ticso@cicely.de
Subject:   Re: Pandora
Message-ID:  <49EA20F4.8080304@telenix.org>
In-Reply-To: <200904181755.n3IHttoF093174@casselton.net>
References:  <200904181755.n3IHttoF093174@casselton.net>

next in thread | previous in thread | raw e-mail | index | archive | help
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Mark Tinguely wrote:
> He is not in error talking about previous versions of the ARM.

Didn't want to sound like I was arguing, more like I didn't know, but it flew in
the face of what I'd thought, so I needed to find out.

> 
> The newer version of ARM are extensions of previous versions. The basic
> instruction set is the same, but newer versions have newer features.
> For example, the ARMv7 has a new security mode - for virtual machine monitor?
> The ARMv6 introduced new caches and ldrex/strex instructions.
> The Xscale and some of the ARMv5 have a new memory pagetable layout.
> Some ARMs have superpages, bits for caching/buffering. In each version,
> there are chips that have different coprocessors: vector processors,
> java processor, some do thumb instructions, etc. Not every feature is
> currently supported in FreeBSD.

OK, then, I'll hunt around for whatever I can find to compare the armv6 with armv7.

The security mode, I saw some troubling comments on the web which strongly
hinted that it was some sort of shadowy attempt to put in government-inspired
backdoors into Arm code.  Honestly, that sounded more than a bit panickey (or
crazy) to me, but OTOH, it was the government which tried (thank god
unsuccessfully) to force all public encryption to have a government-accessible
backdoor (you recall the Skipjack algorithm which was going to be required to
use the ClipperChip key-escrow foolishness?), and the ClipperChip sounded (at
the time) unreal also, but seeing as it was the truth, I guess I would rather
see that anything I worked on completely ignored "TrustZone", at least until
it's ultimate usage was clear to me.  I know that  "TrustZone" is supposedly
orthogonal to all of the more familiar user mode/system mode type access
limitation controls.  Also, according to what I've read so far, the
"secure"/"insecure" labelling that goes on in TrustZone goes all the way down to
having differing secure/insecure peripherals, memory, etc).  That's not a rumor,
that's what I read in a Cortex-A8 presentation.

OTOH, I didn't think of virtual machine usages when I read it, and NOW I've
found a good tech ref for the arm-v7a, so I will know it for sure in a little while.

> 
> Every ARM board is unique. The BeagleBoard, new Gumstix and the Pandora
> use the same processor and many things will be simular, but there will
> be difference too. They will have different devices that may require stub
> code, and the interrupts could be wired differently. 

Never saw Gumstix.  I'll go fix that now.

> 
> FreeBSD has files for each ARM version, ARM7, ARM9, Xscale, ARM10 (ARMv6),
> ARM11 (ARMv7) that defines how that chip flushes the cache, changes
> memory space, etc. For example: sys/arm/arm/cpufunc_asm_arm11.S.
> A person should start with the existing FreeBSD code when porting to
> a new board, processor type and extend for that board.

I didn't realize that the arm6 was a viable branch-point for implementing other
arm methods.  I need to get the tech ref for the arm6, I supppose I'll need to
read them both.

Could you please address another feature that bothered me?  I read, maybe 3
years ago, about the virtual memory manager in the Xscale having a memory area
replacement policy of round robin nailed into the hardware.  It's very obviously
stated as such in the Xscale manuals, because I saw it myself 3 years ago.
Well, in starting to read the armv7a I found Round Robin again ... I need to
read more, because this writeup was more in depth, but it seems to me that you'd
expect LRU to be the algorithm that any sane person would use to replace memory
areas.  If you want, I'll go out and get  you page numbers on this, but I wanted
to know, from someone who knows VM better than I do, is, or why is, round robin
being used in any Arm?  I've been asking various people for 3 years now, and
never gotten any good answer, and it bothers me a lot.

> 
> I have some ideas in code form for the newer memory models that we need
> to test in silicon - the emulators don't really implement the memory models.

I'd like to see it, sure, but I think I need no less than 1-2 weeks to read
more, before I can say much that you could actually pay any attention to.  Those
tech refs are pretty large, and I'm no VM expert.  If you wanted to point me at
anything regarding FreeBSD's VM, I'd appreciate that (but I'm definitely going
to be googling that also).  Last time I did any heavy kernel work was the work I
did in net (and some toher sections) for a commercial implementation of
FreeBSD-2.2.8.  I need to come up to date.

Thanks extremely for the answers so far, I need to read a bunch, glad now that I
don't get the Pandora for at least 6 weeks.  I'm gonna need it.

> 
> --Mark.

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (FreeBSD)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iEYEARECAAYFAknqIPQACgkQz62J6PPcoOkwbACfdNCSNeoZzRFQapA8r9iPPDDC
xjEAn0d4JkPmD1G5fmB/ZhJeIXv/H8Hs
=noOl
-----END PGP SIGNATURE-----



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?49EA20F4.8080304>