From: Rafael Beims <hidden> Date: 2011-01-05 18:09:09
Hello all,
I'm working with an MPC880 board that is supposed to run linux-2.6.32. After
some work, I could get the kernel up and running, mounting a rootfs via
NFS.
The problem that I'm facing now is that when I try to run any process (may
be an ls, cat, or whatever), the response of the process is *very* slow
(something like 10 to 20 seconds for a ls).
Monitoring the network packets, I can see that the nfs protocol is exchanged
just fine, but at some time it simply stops, starting again with a request
from the board several seconds later.
I'm thinking that the processor is running (something, I don't know what)
for all this time before I can see requests coming from the board again. I
pinged the board from the PC and during all this I can see the packets being
answered.
My question to all is, did anyone see something like this already? Besides
that, what is the status of the linux kernel support for the 8xx platform?
Is it being actively tested / used today? I ask this because it seems that
all the information on the internet very aged (forum discussions from 2005
and below mostly).
Is there something that I can do to try to narrow the cause of the problem?
Anyway, any help would be truly appreciated. Please excuse me if this is not
the right place to ask this too.
Thanks and best regards,
Rafael Beims
rbeims@gmail.com
(41) 8873-7565
"What I hear, I forget. What I see, I remember. And what I do, I
understand."
- Chinese Proverb
From: Wolfgang Denk <hidden> Date: 2011-01-05 18:35:08
Dear Rafael Beims,
In message [off-list ref] you wrote:
I'm working with an MPC880 board that is supposed to run linux-2.6.32. After
some work, I could get the kernel up and running, mounting a rootfs via
NFS.
2.6.32 is pretty old. Is there any specific reason for not using a
recent kernel version?
The problem that I'm facing now is that when I try to run any process (may
be an ls, cat, or whatever), the response of the process is *very* slow
(something like 10 to 20 seconds for a ls).
This sounds as if only the output to the (serial ?) console port was
slow - typically this happens when there is a problem with interrupt
assignment, and you receive charatcers only after each of these times
out.
My question to all is, did anyone see something like this already? Besides
We have seen this many times in the past, when interrupts were not
working correctly. I recommend to check youyr device tree settings
for these.
[It would have helped if you had included a log of your kernel's boot
messages.]
that, what is the status of the linux kernel support for the 8xx platform?
It is working and actively maintained, but 8xx is a platform that is
more or less hopelessly obsoleted - nobody uses it in new designs any
more, so there is little work going on with it in recent kernel
versions (at least compared with other architectures).
Is it being actively tested / used today? I ask this because it seems that
Yes, it is.
all the information on the internet very aged (forum discussions from 2005
and below mostly).
Is there something that I can do to try to narrow the cause of the problem?
Check your interrupts.
Best regards,
Wolfgang Denk
--
DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd@denx.de
Never underestimate the power of human stupidity when it comes to
using technology they don't understand.
From: Rafael Beims <hidden> Date: 2011-01-05 18:50:19
Hello Mr. Denk
As I already posted, the patch that was posted before seems to have
solved the problem. Anyway, some answers follow:
On Wed, Jan 5, 2011 at 4:35 PM, Wolfgang Denk [off-list ref] wrote:
Dear Rafael Beims,
In message [off-list ref]=
you wrote:
quoted
I'm working with an MPC880 board that is supposed to run linux-2.6.32. =
After
quoted
some work, I could get the kernel up and running, mounting a rootfs via
NFS.
2.6.32 is pretty old. =A0Is there any specific reason for not using a
recent kernel version?
The company that I work for uses some kernel versions in favor of
others... Maybe with time we can change that, but for now I need to
use this version.
quoted
The problem that I'm facing now is that when I try to run any process (=
may
quoted
be an ls, cat, or whatever), the response of the process is *very* slow
(something like 10 to 20 seconds for a ls).
This sounds as if only the output to the (serial ?) console port was
slow - typically this happens when there is a problem with interrupt
assignment, and you receive charatcers only after each of these times
out.
quoted
My question to all is, did anyone see something like this already? Besi=
des
We have seen this many times in the past, when interrupts were not
working correctly. =A0I recommend to check youyr device tree settings
for these.
[It would have helped if you had included a log of your kernel's boot
messages.]
quoted
that, what is the status of the linux kernel support for the 8xx platfo=
rm?
It is working and actively maintained, but 8xx is a platform that is
more or less hopelessly obsoleted - nobody uses it in new designs any
more, so there is little work going on with it in recent kernel
versions (at least compared with other architectures).
quoted
Is it being actively tested / used today? I ask this because it seems t=
hat
Yes, it is.
This is very nice, because this way we can be more confident that
everything will work as it should.
quoted
all the information on the internet very aged (forum discussions from 2=
005
quoted
and below mostly).
quoted
Is there something that I can do to try to narrow the cause of the prob=
lem?
Check your interrupts.
Best regards,
Wolfgang Denk
--
DENX Software Engineering GmbH, =A0 =A0 MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd@denx.de
Never underestimate the power of human stupidity =A0when =A0it =A0comes =
=A0to
using technology they don't understand.
Thank you very much for the answers!
Rafael Beims
rbeims@gmail.com
(41) 8873-7565
"What I hear, I forget. What I see, I remember. And what I do, I understand=
."
- Chinese Proverb
Dear Rafael Beims,
In message[off-list ref] you wrote:
quoted
I'm working with an MPC880 board that is supposed to run linux-2.6.32. After
some work, I could get the kernel up and running, mounting a rootfs via
NFS.
2.6.32 is pretty old. Is there any specific reason for not using a
recent kernel version?
I think that all the kernel version has the same problem
quoted
The problem that I'm facing now is that when I try to run any process (may
be an ls, cat, or whatever), the response of the process is *very* slow
(something like 10 to 20 seconds for a ls).
This sounds as if only the output to the (serial ?) console port was
slow - typically this happens when there is a problem with interrupt
assignment, and you receive charatcers only after each of these times
out.
It is not a serial/console/interrupt problem
quoted
My question to all is, did anyone see something like this already? Besides
We have seen this many times in the past, when interrupts were not
working correctly. I recommend to check youyr device tree settings
for these.
[It would have helped if you had included a log of your kernel's boot
messages.]
quoted
that, what is the status of the linux kernel support for the 8xx platform?
It is working and actively maintained, but 8xx is a platform that is
more or less hopelessly obsoleted - nobody uses it in new designs any
more, so there is little work going on with it in recent kernel
versions (at least compared with other architectures).
agree, this architecture is basically dead
quoted
Is it being actively tested / used today? I ask this because it seems that
Yes, it is.
quoted
all the information on the internet very aged (forum discussions from 2005
and below mostly).
Is there something that I can do to try to narrow the cause of the problem?
Check your interrupts.
Best regards,
Wolfgang Denk
Hello all,
I'm working with an MPC880 board that is supposed to run linux-2.6.32. After
some work, I could get the kernel up and running, mounting a rootfs via
NFS.
The problem that I'm facing now is that when I try to run any process (may
be an ls, cat, or whatever), the response of the process is *very* slow
(something like 10 to 20 seconds for a ls).
Monitoring the network packets, I can see that the nfs protocol is exchanged
just fine, but at some time it simply stops, starting again with a request
from the board several seconds later.
I'm thinking that the processor is running (something, I don't know what)
for all this time before I can see requests coming from the board again. I
pinged the board from the PC and during all this I can see the packets being
answered.
Can you try this patch?
My question to all is, did anyone see something like this already? Besides
that, what is the status of the linux kernel support for the 8xx platform?
Is it being actively tested / used today? I ask this because it seems that
all the information on the internet very aged (forum discussions from 2005
and below mostly).
Is there something that I can do to try to narrow the cause of the problem?
Anyway, any help would be truly appreciated. Please excuse me if this is not
the right place to ask this too.
Thanks and best regards,
Rafael Beims
rbeims@gmail.com
(41) 8873-7565
"What I hear, I forget. What I see, I remember. And what I do, I
understand."
- Chinese Proverb
_______________________________________________
Linuxppc-dev mailing list
Linuxppc-dev@lists.ozlabs.org
https://lists.ozlabs.org/listinfo/linuxppc-dev
@@ -173,21 +173,29 @@ static pte_t set_pte_filter(pte_t pte, unsigned long addr)pte=__pte(pte_val(pte)&~_PAGE_HPTEFLAGS);if(pte_looks_normal(pte)&&!(cpu_has_feature(CPU_FTR_COHERENT_ICACHE)||cpu_has_feature(CPU_FTR_NOEXECUTE))){-structpage*pg=maybe_pte_to_page(pte);-if(!pg)+unsignedlongpfn=pte_pfn(pte);+structpage*pg;++if(unlikely(!pfn_valid(pfn)))returnpte;-if(!test_bit(PG_arch_1,&pg->flags)){++pg=pfn_to_page(pfn);#ifdef CONFIG_8xx-/* On 8xx, cache control instructions (particularly-*"dcbst"fromflush_dcache_icache)faultaswrite-*operationifthereisanunpopulatedTLBentry-*fortheaddressinquestion.Toworkaroundthat,-*weinvalidatetheTLBhere,thusavoidingdcbst-*misbehaviour.-*/-/* 8xx doesn't care about PID, size or ind args */-_tlbil_va(addr,0,0,0);+/* On 8xx, cache control instructions (particularly+*"dcbst"fromflush_dcache_icache)faultaswrite+*operationifthereisanunpopulatedTLBentry+*fortheaddressinquestion.Toworkaroundthat,+*weinvalidatetheTLBhere,thusavoidingdcbst+*misbehaviour.+*/+/* 8xx doesn't care about PID, size or ind args */+_tlbil_va(addr,0,0,0);#endif /* CONFIG_8xx */++if(!pg)+returnpte;++if(!PageReserved(pg)&&!test_bit(PG_arch_1,&pg->flags)){flush_dcache_icache_page(pg);set_bit(PG_arch_1,&pg->flags);}
Rex, do you recall under what specific circumstances the _tlbil_va is
needed? Is it possible that it will be caused by a dcbst in other
contexts that are not dependent on the state of PG_arch_1?
-Scott
@@ -32,7 +32,7 @@#define _PAGE_FILE 0x0002 /* when !present: nonlinear file mapping */#define _PAGE_NO_CACHE 0x0002 /* I: cache inhibit */#define _PAGE_SHARED 0x0004 /* No ASID (context) compare */-#define _PAGE_SPECIAL 0x0008 /* SW entry, forced to 0 by the TLB miss */+#define _PAGE_SPECIAL 0x0000 /* SW entry, forced to 0 by the TLB miss */
What do you think is going wrong with the special bit on 8xx?
Or might the change to set_pte_filter() alone be what fixed the problem?
Only the set_pte_filter doesn't fix the problem. The slow-down depends on
the __HAVE_ARCH_PTE_SPECIAL related code, but 2 months ago I didn't find the reason
and now I don't have the architecture. I will do some tests when I will came back in Italy.
@@ -173,21 +173,29 @@ static pte_t set_pte_filter(pte_t pte, unsigned long addr)pte=__pte(pte_val(pte)&~_PAGE_HPTEFLAGS);if(pte_looks_normal(pte)&&!(cpu_has_feature(CPU_FTR_COHERENT_ICACHE)||cpu_has_feature(CPU_FTR_NOEXECUTE))){-structpage*pg=maybe_pte_to_page(pte);-if(!pg)+unsignedlongpfn=pte_pfn(pte);+structpage*pg;++if(unlikely(!pfn_valid(pfn)))returnpte;-if(!test_bit(PG_arch_1,&pg->flags)){++pg=pfn_to_page(pfn);#ifdef CONFIG_8xx-/* On 8xx, cache control instructions (particularly-*"dcbst"fromflush_dcache_icache)faultaswrite-*operationifthereisanunpopulatedTLBentry-*fortheaddressinquestion.Toworkaroundthat,-*weinvalidatetheTLBhere,thusavoidingdcbst-*misbehaviour.-*/-/* 8xx doesn't care about PID, size or ind args */-_tlbil_va(addr,0,0,0);+/* On 8xx, cache control instructions (particularly+*"dcbst"fromflush_dcache_icache)faultaswrite+*operationifthereisanunpopulatedTLBentry+*fortheaddressinquestion.Toworkaroundthat,+*weinvalidatetheTLBhere,thusavoidingdcbst+*misbehaviour.+*/+/* 8xx doesn't care about PID, size or ind args */+_tlbil_va(addr,0,0,0);#endif /* CONFIG_8xx */++if(!pg)+returnpte;++if(!PageReserved(pg)&&!test_bit(PG_arch_1,&pg->flags)){flush_dcache_icache_page(pg);set_bit(PG_arch_1,&pg->flags);}
Rex, do you recall under what specific circumstances the _tlbil_va is
needed? Is it possible that it will be caused by a dcbst in other
contexts that are not dependent on the state of PG_arch_1?
-Scott
+ /* On 8xx, cache control instructions (particularly+ * "dcbst" from flush=5Fdcache=5Ficache) fault as write+ * operation if there is an unpopulated TLB entry+ * for the address in question. To workaround that,+ * we invalidate the TLB here, thus avoiding dcbst+ * misbehaviour.+ */+ /* 8xx doesn't care about PID, size or ind args */+ =5Ftlbil=5Fva(addr, 0, 0, 0); #endif /* CONFIG=5F8xx */++ if (!pg)+ return pte;++ if (!PageReserved(pg)&& !test=5Fbit(PG=5Farch=5F1,&pg->flags)) { flush=5Fdcache=5Ficache=5Fpage(pg); set=5Fbit(PG=5Farch=5F1,&pg->flags); }
Rex, do you recall under what specific circumstances the =5Ftlbil=5Fva is
needed? Is it possible that it will be caused by a dcbst in other
contexts that are not dependent on the state of PG=5Farch=5F1?
The 8xx tlbil=5Fva should not be needed in recent 2.6 after I fixed the 8xx=
TLB code
to workaround the dcbst bug there instead. See=20
http://git.kernel.org/?p=3Dlinux/kernel/git/torvalds/linux-2.6.git;a=3Dcomm=
itdiff;h=3D0a2ab51ffb8dfdf51402dcfb446629648c96bc78;hp=3D60e071fee994ff98c3=
7d03a4a7c5a3f8b1e3b8e5
Not sure what release it went into though.
Jocke=
=
Not sure what release it went into though.
=A0Jocke
I saw that the commit you mention did make it in the 2.6.33 version. I
will try to boot it here and see if the problem is also solved in this
version.
Rafael
From: Rafael Beims <hidden> Date: 2011-01-10 16:35:40
Once you have tested it and it works, please send a patch to remove the 8xx workaround.
Make sure Scott is cc:ed
I tested linux-2.6.33 on my ppc880 board today, and even without the
slowdown.patch applied, the board runs processes with good
performance.
It really seems that the problem is solved from linux-2.6.33 on.
I'm not sure what you mean by sending a patch to remove the
workaround. The only thing that I did in the 2.6.32 version was to
apply the slowdown.patch attached in the message from Michael.
Could you clarify please?
Thanks for all the help so far,
Rafael
Rafael Beims [off-list ref] wrote on 2011/01/10 17:35:38:
quoted
Once you have tested it and it works, please send a patch to remove the 8xx workaround.
Make sure Scott is cc:ed
I tested linux-2.6.33 on my ppc880 board today, and even without the
slowdown.patch applied, the board runs processes with good
performance.
It really seems that the problem is solved from linux-2.6.33 on.
I'm not sure what you mean by sending a patch to remove the
workaround. The only thing that I did in the 2.6.32 version was to
apply the slowdown.patch attached in the message from Michael.
Could you clarify please?
Yes, this part in arch/powerpc/mm/pgtable.c:
#ifdef CONFIG_8xx
/* On 8xx, cache control instructions (particularly
* "dcbst" from flush_dcache_icache) fault as write
* operation if there is an unpopulated TLB entry
* for the address in question. To workaround that,
* we invalidate the TLB here, thus avoiding dcbst
* misbehaviour.
*/
/* 8xx doesn't care about PID, size or ind args */
_tlbil_va(addr, 0, 0, 0);
#endif /* CONFIG_8xx */
Should be removed in >= 2.6.33 kernels.
My 8xx TLB work fixes this problem more efficiently.
Jocke
Sent by: linuxppc-dev-bounces+joakim.tjernlund=transmode.se@lists.ozlabs.org
Rafael Beims [off-list ref] wrote on 2011/01/10 17:35:38:
quoted
quoted
Once you have tested it and it works, please send a patch to remove the 8xx workaround.
Make sure Scott is cc:ed
I tested linux-2.6.33 on my ppc880 board today, and even without the
slowdown.patch applied, the board runs processes with good
performance.
It really seems that the problem is solved from linux-2.6.33 on.
I'm not sure what you mean by sending a patch to remove the
workaround. The only thing that I did in the 2.6.32 version was to
apply the slowdown.patch attached in the message from Michael.
Could you clarify please?
Yes, this part in arch/powerpc/mm/pgtable.c:
#ifdef CONFIG_8xx
/* On 8xx, cache control instructions (particularly
* "dcbst" from flush_dcache_icache) fault as write
* operation if there is an unpopulated TLB entry
* for the address in question. To workaround that,
* we invalidate the TLB here, thus avoiding dcbst
* misbehaviour.
*/
/* 8xx doesn't care about PID, size or ind args */
_tlbil_va(addr, 0, 0, 0);
#endif /* CONFIG_8xx */
Should be removed in >= 2.6.33 kernels.
My 8xx TLB work fixes this problem more efficiently.
Can you test these 2 patches on recent 2.6 linux:
From 9024200169bf86b4f34cb3b1ebf68e0056237bc0 Mon Sep 17 00:00:00 2001
From: Joakim Tjernlund <redacted>
Date: Tue, 11 Jan 2011 13:43:42 +0100
Subject: [PATCH 1/2] powerpc: Move 8xx invalidation of non present TLBs
8xx does not invalidate ~PRESENT TLBs, move the workaround
in mm/fault.c here to keep 8xx quirks localized and expedite
the invalidation faster.
Signed-off-by: Joakim Tjernlund <redacted>
---
arch/powerpc/kernel/head_8xx.S | 12 ++++++++++--
arch/powerpc/mm/fault.c | 6 ------
2 files changed, 10 insertions(+), 8 deletions(-)
@@ -221,7 +221,11 @@ DataAccess:stwr10,_DSISR(r11)mrr5,r10mfsprr4,SPRN_DAR-lir10,0x00f0+/*invalidate~PRESENTTLBs,8xxMMUdon't do this */+andis.r10,r5,0x4000+beq+1f+tlbier4+1:lir10,0x00f0mtsprSPRN_DAR,r10/*TagDAR,tobeusedinDTLBError*/EXC_XFER_EE_LITE(0x300,handle_page_fault)
@@ -234,7 +238,11 @@ InstructionAccess:EXCEPTION_PROLOGmrr4,r12mrr5,r9-EXC_XFER_EE_LITE(0x400,handle_page_fault)+/*invalidate~PRESENTTLBs,8xxMMUdon't do this */+andis.r10,r5,0x4000+beq+1f+tlbier4+1:EXC_XFER_EE_LITE(0x400,handle_page_fault)/*Externalinterrupt*/EXCEPTION(0x500,HardwareInterrupt,do_IRQ,EXC_XFER_LITE)
@@ -247,12 +247,6 @@ good_area:gotobad_area;#endif /* CONFIG_6xx */#if defined(CONFIG_8xx)-/* 8xx sometimes need to load a invalid/non-present TLBs.-*Thesemustbeinvalidatedseparatelyaslinuxmmdon't.-*/-if(error_code&0x40000000)/* no translation? */-_tlbil_va(address,0,0,0);-/* The MPC8xx seems to always set 0x80000000, which is*"undefined".Ofthosethatcanbeset,thisistheonly*onewhichseemsbad.--
1.7.3.4
and
From 0ef93601290a75b087495dddeee6062a870f1dc6 Mon Sep 17 00:00:00 2001
From: Joakim Tjernlund <redacted>
Date: Tue, 11 Jan 2011 13:55:22 +0100
Subject: [PATCH 2/2] powerpc: Remove 8xx redundant dcbst workaround.
On 8xx dcbst fault as write operation if there is an unpopulated TLB entry
for the address in question. There is as of commit
0a2ab51ffb8dfdf51402dcfb446629648c96bc78,
powerpc/8xx: Fixup DAR from buggy dcbX instructions
a better workaround in the TLB error handler so this bad
one can be removed.
Signed-off-by: Joakim Tjernlund <redacted>
---
arch/powerpc/mm/pgtable.c | 11 -----------
1 files changed, 0 insertions(+), 11 deletions(-)
@@ -185,17 +185,6 @@ static pte_t set_pte_filter(pte_t pte, unsigned long addr)if(!pg)returnpte;if(!test_bit(PG_arch_1,&pg->flags)){-#ifdef CONFIG_8xx-/* On 8xx, cache control instructions (particularly-*"dcbst"fromflush_dcache_icache)faultaswrite-*operationifthereisanunpopulatedTLBentry-*fortheaddressinquestion.Toworkaroundthat,-*weinvalidatetheTLBhere,thusavoidingdcbst-*misbehaviour.-*/-/* 8xx doesn't care about PID, size or ind args */-_tlbil_va(addr,0,0,0);-#endif /* CONFIG_8xx */flush_dcache_icache_page(pg);set_bit(PG_arch_1,&pg->flags);}--
Sent by: linuxppc-dev-bounces+joakim.tjernlund=transmode.se@lists.ozlabs.org
Rafael Beims [off-list ref] wrote on 2011/01/10 17:35:38:
quoted
quoted
Once you have tested it and it works, please send a patch to remove the 8xx workaround.
Make sure Scott is cc:ed
I tested linux-2.6.33 on my ppc880 board today, and even without the
slowdown.patch applied, the board runs processes with good
performance.
It really seems that the problem is solved from linux-2.6.33 on.
I'm not sure what you mean by sending a patch to remove the
workaround. The only thing that I did in the 2.6.32 version was to
apply the slowdown.patch attached in the message from Michael.
Could you clarify please?
Yes, this part in arch/powerpc/mm/pgtable.c:
#ifdef CONFIG_8xx
/* On 8xx, cache control instructions (particularly
* "dcbst" from flush_dcache_icache) fault as write
* operation if there is an unpopulated TLB entry
* for the address in question. To workaround that,
* we invalidate the TLB here, thus avoiding dcbst
* misbehaviour.
*/
/* 8xx doesn't care about PID, size or ind args */
_tlbil_va(addr, 0, 0, 0);
#endif /* CONFIG_8xx */
Should be removed in >= 2.6.33 kernels.
My 8xx TLB work fixes this problem more efficiently.
Can you test these 2 patches on recent 2.6 linux:
quoted
From 9024200169bf86b4f34cb3b1ebf68e0056237bc0 Mon Sep 17 00:00:00 2001
From: Joakim Tjernlund <redacted>
Date: Tue, 11 Jan 2011 13:43:42 +0100
Subject: [PATCH 1/2] powerpc: Move 8xx invalidation of non present TLBs
[...]
and
quoted
From 0ef93601290a75b087495dddeee6062a870f1dc6 Mon Sep 17 00:00:00 2001
Heiko Schocher [off-list ref] wrote on 2011/01/21 07:53:02:
Hello Joakim,
Joakim Tjernlund wrote:
quoted
quoted
Sent by: linuxppc-dev-bounces+joakim.tjernlund=transmode.se@lists.ozlabs.org
Rafael Beims [off-list ref] wrote on 2011/01/10 17:35:38:
quoted
quoted
Once you have tested it and it works, please send a patch to remove the 8xx workaround.
Make sure Scott is cc:ed
I tested linux-2.6.33 on my ppc880 board today, and even without the
slowdown.patch applied, the board runs processes with good
performance.
It really seems that the problem is solved from linux-2.6.33 on.
I'm not sure what you mean by sending a patch to remove the
workaround. The only thing that I did in the 2.6.32 version was to
apply the slowdown.patch attached in the message from Michael.
Could you clarify please?
Yes, this part in arch/powerpc/mm/pgtable.c:
#ifdef CONFIG_8xx
/* On 8xx, cache control instructions (particularly
* "dcbst" from flush_dcache_icache) fault as write
* operation if there is an unpopulated TLB entry
* for the address in question. To workaround that,
* we invalidate the TLB here, thus avoiding dcbst
* misbehaviour.
*/
/* 8xx doesn't care about PID, size or ind args */
_tlbil_va(addr, 0, 0, 0);
#endif /* CONFIG_8xx */
Should be removed in >= 2.6.33 kernels.
My 8xx TLB work fixes this problem more efficiently.
Can you test these 2 patches on recent 2.6 linux:
quoted
From 9024200169bf86b4f34cb3b1ebf68e0056237bc0 Mon Sep 17 00:00:00 2001
From: Joakim Tjernlund <redacted>
Date: Tue, 11 Jan 2011 13:43:42 +0100
Subject: [PATCH 1/2] powerpc: Move 8xx invalidation of non present TLBs
[...]
quoted
and
quoted
From 0ef93601290a75b087495dddeee6062a870f1dc6 Mon Sep 17 00:00:00 2001
Tested this on a board similliar to the mainline tqm8xx board with
lmbench:
-bash-3.2# cat /proc/cpuinfo
processor : 0
cpu : 8xx
clock : 80.000000MHz
revision : 0.0 (pvr 0050 0000)
bogomips : 10.00
timebase : 5000000
platform : KUP4K
model : KUP4K
Memory : 96 MB
-bash-3.2#
-bash-3.2# cat /proc/version
Linux version 2.6.34-00064-g3e81b6b (hs@pollux.denx.de) (gcc version 4.2.2) #89 Thu Jan 20 08:39:52 CET 2011
-bash-3.2#
(First run of lmbench without your 2 patches, the two other runs with it)
Thanks,
From a quick look, the only thing that really stands out is Prot Fault below:
File & VM system latencies in microseconds - smaller is better
-------------------------------------------------------------------------------
Host OS 0K File 10K File Mmap Prot Page 100fd
Create Delete Create Delete Latency Fault Fault selct
--------- ------------- ------ ------ ------ ------ ------- ----- ------- -----
kup4k Linux 2.6.34- 16.7K 10.3K 90.9K 13.7K 22.6K 27.1 43.4 117.9
kup4k Linux 2.6.34- 16.9K 15.6K 100.0K 16.1K 22.7K 9.590 39.8 119.2
kup4k Linux 2.6.34- 16.7K 13.5K 100.0K 15.9K 22.8K 9.306 39.8 119.6
Anyhow, nothing broke so I am happy with the results.
On top of those 2 patches I came up with this cleanup patch too:
From 920c236b290ee00d84506369e3898126c78215e8 Mon Sep 17 00:00:00 2001
From: Joakim Tjernlund <redacted>
Date: Tue, 18 Jan 2011 09:50:09 +0100
Subject: [PATCH 3/3] powerpc: Use symbolic constants in 8xx TLB asm
Use the PTE #defines where possible instead of
hardcoded constants.
Signed-off-by: Joakim Tjernlund <redacted>
---
arch/powerpc/kernel/head_8xx.S | 10 +++++-----
1 files changed, 5 insertions(+), 5 deletions(-)