Subject: Re: MP, SP, extintr, mc, ofb
To: Tim Kelly <hockey@dialectronics.com>
From: Michael <macallan18@earthlink.net>
List: port-macppc
Date: 12/14/2004 10:23:22
Hello,

> >Weird - do you have any idea what could be the reason to disable power
> >saving on the 7455? It works nicely with the S900/G3, so I have power
> >saving on the desktop machine but not on the notebook, kind of paradox ;)
> 
> Not yet. Nathan might know. I just started looking into the power save mode
> last night since I was seeing different behavior with the fan after
> applying the newest extintr.c file with the PSL_EE enabled before lowering
> spl in Idle(). The 604 appears to require different handling for true power
> savings, and I haven't put all the pieces together with regard to CPUs with
> HID0.

Ok, I was digging around in Darwin again, found this:
http://darwinsource.opendarwin.org/10.3.6/xnu-517.9.4/osfmk/ppc/start.s

;       750 (generic)

                        .align  2
                        .long   0xFFFF0000              ; All revisions
                        .short  PROCESSOR_VERSION_750
                        .short  0
                        .long   pfFloat | pfCanSleep | pfCanNap | pfCanDoze | pf32Byte | pfL2
                        .long   kCache32 | kHasGraphicsOps | kHasStfiwx
                        .long   0
                        .long   PatchExt32
                        .long   init750
                        .long   CPU_SUBTYPE_POWERPC_750
                        .long   32
                        .long   32*1024
                        .long   32*1024
                        .long   64
                        .long   52
                        .long   32


;       7400 (generic)

                        .align  2
                        .long   0xFFFF0000              ; All revisions
                        .short  PROCESSOR_VERSION_7400
                        .short  0
                        .long   pfFloat | pfAltivec | pfSMPcap | pfCanSleep | pfCanNap | pfCanDoze | pf32Byte | pfL1fa | pfL2 | pfL2fa | pfHasDcba
                        .long   kHasAltivec | kCache32 | kDcbaAvailable | kDataStreamsRecommended | kDataStreamsAvailable | kHasGraphicsOps | kHasStfiwx
                        .long   0
                        .long   PatchExt32
                        .long   init7400
                        .long   CPU_SUBTYPE_POWERPC_7400
                        .long   32
                        .long   32*1024
                        .long   32*1024
                        .long   64
                        .long   52
                        .long   36

....
;       7455 (1.xx)  Just like 7450 2.0

                        .align  2
                        .long   0xFFFFFF00              ; Just revisions 1.xx
                        .short  PROCESSOR_VERSION_7455
                        .short  0x0100
                        .long   pfFloat | pfAltivec | pfSMPcap | pfCanSleep | pfNoMSRir | pfNoL2PFNap | pfLClck | pf32Byte | pfL2 | pfL2fa | pfL2i | pfL3 | pfL3fa | pfHasDcba
                        .long   kHasAltivec | kCache32 | kDcbaAvailable | kDataStreamsRecommended | kDataStreamsAvailable | kHasGraphicsOps | kHasStfiwx
                        .long   0
                        .long   PatchExt32
                        .long   init745X
                        .long   CPU_SUBTYPE_POWERPC_7450
                        .long   32
                        .long   32*1024
                        .long   32*1024
                        .long   64
                        .long   52
                        .long   36

;       7455 (2.0)

                        .align  2
                        .long   0xFFFFFFFF              ; Just revision 2.0
                        .short  PROCESSOR_VERSION_7455
                        .short  0x0200
                        .long   pfFloat | pfAltivec | pfSMPcap | pfCanSleep | pfWillNap | pfNoMSRir | pfNoL2PFNap | pfLClck | pf32Byte | pfL2 | pfL2fa | pfL2i | pfL3 | pfL3fa | pfHasDcba
                        .long   kHasAltivec | kCache32 | kDcbaAvailable | kDataStreamsRecommended | kDataStreamsAvailable | kHasGraphicsOps | kHasStfiwx
                        .long   0
                        .long   PatchExt32
                        .long   init745X
                        .long   CPU_SUBTYPE_POWERPC_7450
                        .long   32
                        .long   32*1024
                        .long   32*1024
                        .long   64
                        .long   52
                        .long   36

;       7455 (2.1)

                        .align  2
                        .long   0xFFFF0000              ; All other revisions
                        .short  PROCESSOR_VERSION_7455
                        .short  0
                        .long   pfFloat | pfAltivec | pfSMPcap | pfCanSleep | pfCanNap | pfNoMSRir | pfNoL2PFNap | pfLClck | pf32Byte | pfL2 | pfL2fa | pfL2i | pfL3 | pfL3fa | pfHasDcba
                        .long   kHasAltivec | kCache32 | kDcbaAvailable | kDataStreamsRecommended | kDataStreamsAvailable | kHasGraphicsOps | kHasStfiwx
                        .long   0
                        .long   PatchExt32
                        .long   init745X
                        .long   CPU_SUBTYPE_POWERPC_7450
...
I only see the 7455s differ in flag - pfCanNap vs. pfWillNap vs nothing, the 7400 and the G3 has pfCanDoze and pfCanNap. So it's clear why the 745x are excluded - no doze mode. But the 7455 v2.1 and the 7457 should be included for nap mode.

have fun
Michael