From: Kumar Gala <hidden> Date: 2005-09-22 19:51:43
Ben,
Can you take a look at this. I think its pretty straight forward and if
your ok with it please forward on to linus.
- kumar
--
Some variants of 745x may not actually have the L3CR register. Since
we mark which variants of 745x have L3CRs in the cputable we can
use that information to ensure that the mfspr L3CR will not cause
an exception in the processors that don't have the register.
Signed-off-by: Kumar K. Gala <redacted>
---
commit f706b6046f1fee29bdf3081dd783f7e482012165
tree 6d42ee61458ec94ac7d4567e3f0383dd1e47a537
parent d8ac10639b6a1ed900efbee38c18baaca31e64dc
author Kumar K. Gala [off-list ref] Thu, 22 Sep 2005 14:47:52 -0500
committer Kumar K. Gala [off-list ref] Thu, 22 Sep 2005 14:47:52 -0500
arch/ppc/kernel/cpu_setup_6xx.S | 2 ++
1 files changed, 2 insertions(+), 0 deletions(-)
@@ -212,9 +212,11 @@ setup_745x_specifics:*thefirmware.Ifany,wedisableNAPcapabilityas*it's known to be bogus on rev 2.1 and earlier*/+BEGIN_FTR_SECTIONmfsprr11,SPRN_L3CRandis.r11,r11,L3CR_L3E@hbeq1f+END_FTR_SECTION_IFSET(CPU_FTR_L3CR)lwzr6,CPU_SPEC_FEATURES(r5)andi.r0,r6,CPU_FTR_L3_DISABLE_NAPbeq1f
From: Benjamin Herrenschmidt <benh@kernel.crashing.org> Date: 2005-09-24 22:11:24
On Thu, 2005-09-22 at 14:51 -0500, Kumar Gala wrote:
Ben,
Can you take a look at this. I think its pretty straight forward and if
your ok with it please forward on to linus.
We usually haven't dong the fixup of cpu features yet at the point
setup() is run, thus your change will have no effect. You need to
actually go look at the CPU feature bits. (You can look a bit below in
that same code how it does for CPU_FTR_L3_DISABLE_NAP and
CCPU_FTR_CAN_NAP.
Also, it's 745x, those CPUs so far always existed in their 744x version
without L3 and no way to recongnize them via PVR afaik (until before
7447A). I would expect L3CR to just return 0. Is this not the case on
7447/7448 ? If yes, then there is no need to change the code...
Ben.
quoted hunk
- kumar
--
Some variants of 745x may not actually have the L3CR register. Since
we mark which variants of 745x have L3CRs in the cputable we can
use that information to ensure that the mfspr L3CR will not cause
an exception in the processors that don't have the register.
Signed-off-by: Kumar K. Gala <redacted>
---
commit f706b6046f1fee29bdf3081dd783f7e482012165
tree 6d42ee61458ec94ac7d4567e3f0383dd1e47a537
parent d8ac10639b6a1ed900efbee38c18baaca31e64dc
author Kumar K. Gala [off-list ref] Thu, 22 Sep 2005 14:47:52 -0500
committer Kumar K. Gala [off-list ref] Thu, 22 Sep 2005 14:47:52 -0500
arch/ppc/kernel/cpu_setup_6xx.S | 2 ++
1 files changed, 2 insertions(+), 0 deletions(-)
@@ -212,9 +212,11 @@ setup_745x_specifics:*thefirmware.Ifany,wedisableNAPcapabilityas*it's known to be bogus on rev 2.1 and earlier*/+BEGIN_FTR_SECTIONmfsprr11,SPRN_L3CRandis.r11,r11,L3CR_L3E@hbeq1f+END_FTR_SECTION_IFSET(CPU_FTR_L3CR)lwzr6,CPU_SPEC_FEATURES(r5)andi.r0,r6,CPU_FTR_L3_DISABLE_NAPbeq1f
From: Kumar Gala <hidden> Date: 2005-09-26 16:04:26
On Sep 24, 2005, at 5:10 PM, Benjamin Herrenschmidt wrote:
On Thu, 2005-09-22 at 14:51 -0500, Kumar Gala wrote:
quoted
Ben,
Can you take a look at this. I think its pretty straight forward and
if
quoted
your ok with it please forward on to linus.
We usually haven't dong the fixup of cpu features yet at the point
setup() is run, thus your change will have no effect. You need to
actually go look at the CPU feature bits. (You can look a bit below in
that same code how it does for CPU_FTR_L3_DISABLE_NAP and
CCPU_FTR_CAN_NAP.
Dope, you're right. I notice that we apparent do this for BTIC and DPM in this function though?
Also, it's 745x, those CPUs so far always existed in their 744x version
without L3 and no way to recongnize them via PVR afaik (until before
7447A). I would expect L3CR to just return 0. Is this not the case on
7447/7448 ? If yes, then there is no need to change the code...
Need to check. I was lead to believe on 7448 they may have gotten ride of L3CR and thus my patch. I do some digging internally to see what's happening with L3CR on 7448.
Ben.
quoted
- kumar
--
Some variants of 745x may not actually have the L3CR register. Since
we mark which variants of 745x have L3CRs in the cputable we can
use that information to ensure that the mfspr L3CR will not cause
an exception in the processors that don't have the register.
Signed-off-by: Kumar K. Gala <redacted>
---
commit f706b6046f1fee29bdf3081dd783f7e482012165
tree 6d42ee61458ec94ac7d4567e3f0383dd1e47a537
parent d8ac10639b6a1ed900efbee38c18baaca31e64dc
author Kumar K. Gala [off-list ref] Thu, 22 Sep 2005
14:47:52 -0500
quoted
committer Kumar K. Gala [off-list ref] Thu, 22 Sep 2005
@@ -212,9 +212,11 @@ setup_745x_specifics:*thefirmware.Ifany,wedisableNAPcapabilityas*it's known to be bogus on rev 2.1 and earlier*/+BEGIN_FTR_SECTIONmfsprr11,SPRN_L3CRandis.r11,r11,L3CR_L3E@hbeq1f+END_FTR_SECTION_IFSET(CPU_FTR_L3CR)lwzr6,CPU_SPEC_FEATURES(r5)andi.r0,r6,CPU_FTR_L3_DISABLE_NAPbeq1f
From: Benjamin Herrenschmidt <benh@kernel.crashing.org> Date: 2005-10-07 00:35:18
On Fri, 2005-10-07 at 10:26 +1000, Benjamin Herrenschmidt wrote:
quoted
Dope, you're right. I notice that we apparent do this for BTIC and
DPM in this function though?
Yes, those bits are buggy. Good catch
And no, in fact, my brain is buggy... On ppc32 we identify first, then
fixup, then only do the call_setup_cpu ! That's why the Idle NAP code
actually goes test the feature bit.
I think ppc64 does it the other way around. ppc64 certainly _requires_
taht the fixup has not yet been applied while running early_setup() as
it may change some CPU features according to firmware properties.
So in the merged kernel, we need to be extra careful here. I think we
should go the ppc64 way actually and apply the fixups later. But that
means fixing the code in cpu_setup_6xx.S indeed.
Ben.
From: Kumar Gala <hidden> Date: 2005-10-07 14:38:47
On Oct 6, 2005, at 7:33 PM, Benjamin Herrenschmidt wrote:
On Fri, 2005-10-07 at 10:26 +1000, Benjamin Herrenschmidt wrote:
quoted
quoted
Dope, you're right. I notice that we apparent do this for BTIC and
quoted
quoted
DPM in this function though?
Yes, those bits are buggy. Good catch
And no, in fact, my brain is buggy... On ppc32 we identify first, then
fixup, then only do the call_setup_cpu ! That's why the Idle NAP code
actually goes test the feature bit.
I think ppc64 does it the other way around. ppc64 certainly _requires_
taht the fixup has not yet been applied while running early_setup() as
it may change some CPU features according to firmware properties.
So in the merged kernel, we need to be extra careful here. I think we
should go the ppc64 way actually and apply the fixups later. But that
means fixing the code in cpu_setup_6xx.S indeed.
Well, since we do this early on ppc32, my patch should be ok than. (And is need on 7448, do to some crazyness in how L3CR works on various versions of 7448).
I'd like to see we push this now and worry about "fixing" all of cpu_setup_6xx.S when we move it over to arch/powerpc
- kumar