From: Oliver O'Halloran <oohall@gmail.com> Date: 2016-07-04 00:44:24
This patch adds the kernel command line parameter "no_tb_segs" which
forces the kernel to use 256MB rather than 1TB segments. Forcing the use
of 256MB segments makes it considerably easier to test code that depends
on an SLB miss occurring.
Suggested-by: Michael Neuling <redacted>
Suggested-by: Michael Ellerman <mpe@ellerman.id.au>
Signed-off-by: Oliver O'Halloran <oohall@gmail.com>
---
arch/powerpc/mm/hash_utils_64.c | 15 +++++++++++++++
1 file changed, 15 insertions(+)
@@ -321,6 +321,15 @@ int htab_remove_mapping(unsigned long vstart, unsigned long vend,returnret;}+staticboolno_tb_segs=false;++staticint__initparse_no_tb_segs(char*p)+{+no_tb_segs=true;+return0;+}+early_param("no_tb_segs",parse_no_tb_segs);+staticint__inithtab_dt_scan_seg_sizes(unsignedlongnode,constchar*uname,intdepth,void*data)
@@ -339,6 +348,12 @@ static int __init htab_dt_scan_seg_sizes(unsigned long node,for(;size>=4;size-=4,++prop){if(be32_to_cpu(prop[0])==40){DBG("1T segment support detected\n");++if(no_tb_segs){+DBG("Forcing 256MB segments\n");+break;+}+cur_cpu_spec->mmu_features|=MMU_FTR_1T_SEGMENT;return1;}
This patch adds the kernel command line parameter "no_tb_segs" which
forces the kernel to use 256MB rather than 1TB segments. Forcing the use
of 256MB segments makes it considerably easier to test code that depends
on an SLB miss occurring.
Suggested-by: Michael Neuling <redacted>
Suggested-by: Michael Ellerman <mpe@ellerman.id.au>
Signed-off-by: Oliver O'Halloran <oohall@gmail.com>
---
arch/powerpc/mm/hash_utils_64.c | 15 +++++++++++++++
1 file changed, 15 insertions(+)
@@ -321,6 +321,15 @@ int htab_remove_mapping(unsigned long vstart, unsigned long vend,returnret;}+staticboolno_tb_segs=false;++staticint__initparse_no_tb_segs(char*p)+{+no_tb_segs=true;+return0;+}+early_param("no_tb_segs",parse_no_tb_segs);
Please update Documentation/kernel-paramaters.txt as well and document the use case and the
fact that this for debugging.
quoted hunk
+
static int __init htab_dt_scan_seg_sizes(unsigned long node,
const char *uname, int depth,
void *data)
@@ -339,6 +348,12 @@ static int __init htab_dt_scan_seg_sizes(unsigned long node, for (; size >= 4; size -= 4, ++prop) { if (be32_to_cpu(prop[0]) == 40) { DBG("1T segment support detected\n");++ if (no_tb_segs) {+ DBG("Forcing 256MB segments\n");+ break;+ }+ cur_cpu_spec->mmu_features |= MMU_FTR_1T_SEGMENT; return 1; }
From: Michael Ellerman <mpe@ellerman.id.au> Date: 2016-07-04 06:09:55
On Mon, 2016-04-07 at 00:44:04 UTC, Oliver O'Halloran wrote:
This patch adds the kernel command line parameter "no_tb_segs" which
forces the kernel to use 256MB rather than 1TB segments. Forcing the use
of 256MB segments makes it considerably easier to test code that depends
on an SLB miss occurring.
That's a fairly awful name :)
Can you call it "disable_1T_segments" ?
It should also be mentioned in Documentation/kernel-parameters.txt, with
emphasis that it's a debug option and powerpc only.
cheers
From: Michael Neuling <hidden> Date: 2016-07-05 00:24:08
On Mon, 2016-07-04 at 16:09 +1000, Michael Ellerman wrote:
On Mon, 2016-04-07 at 00:44:04 UTC, Oliver O'Halloran wrote:
quoted
=20
This patch adds the kernel command line parameter "no_tb_segs" which
forces the kernel to use 256MB rather than 1TB segments. Forcing the
use
of 256MB segments makes it considerably easier to test code that
depends
on an SLB miss occurring.
That's a fairly awful name :)
=20
Can you call it "disable_1T_segments" ?
=C2=A0
=20
It should also be mentioned in Documentation/kernel-parameters.txt, with
emphasis that it's a debug option and powerpc only.
To that end, should we add "powerpc_" at the start of the option?
Mikey
From: oliver <oohall@gmail.com> Date: 2016-07-05 00:53:04
On Tue, Jul 5, 2016 at 10:24 AM, Michael Neuling [off-list ref] wrote:
On Mon, 2016-07-04 at 16:09 +1000, Michael Ellerman wrote:
quoted
On Mon, 2016-04-07 at 00:44:04 UTC, Oliver O'Halloran wrote:
quoted
This patch adds the kernel command line parameter "no_tb_segs" which
forces the kernel to use 256MB rather than 1TB segments. Forcing the
use
of 256MB segments makes it considerably easier to test code that
depends
on an SLB miss occurring.
That's a fairly awful name :)
Can you call it "disable_1T_segments" ?
It should also be mentioned in Documentation/kernel-parameters.txt, with
emphasis that it's a debug option and powerpc only.
To that end, should we add "powerpc_" at the start of the option?
I don't think it's necessary. There are annotations in
kernel-parameters.txt that indicate what options are arch specific and
it looks like none of the existing architecture specific options are
prefixed.