From: Joel Soete <soete.joel@scarlet.be>
To: Kyle McMartin <kyle@mcmartin.ca>, parisc-linux@lists.parisc-linux.org
Subject: [parisc-linux] some more cpu info?
Date: Tue, 12 Sep 2006 11:21:13 +0000 [thread overview]
Message-ID: <45069829.5060804@scarlet.be> (raw)
Hello Kyle,
ITSR that JDA sent me some interesting material about cpuinfog which
would look like:
--- include/asm-parisc/pdc.h.Orig 2006-09-10 21:22:11.000000000 +0200
+++ include/asm-parisc/pdc.h 2006-09-11 12:32:59.000000000 +0200
@@ -346,26 +346,57 @@
#endif
cc_alias: 4, /* alias boundaries for virtual
addresses */
cc_block: 4, /* to determine most efficient stride */
- cc_line : 3, /* maximum amount written back as a
result of store (multiple of 16 bytes) */
+ cc_line : 3, /* maximum amount written back as a result
+ of store (multiple of 16 bytes) */
cc_shift: 2, /* how much to shift cc_block left */
cc_wt : 1, /* 0 = WT-Dcache, 1 = WB-Dcache */
- cc_sh : 2, /* 0 = separate I/D-cache, else shared
I/D-cache */
- cc_cst : 3, /* 0 = incoherent D-cache, 1=coherent
D-cache */
+ cc_sh : 2, /* 0 = separate I/D-cache (both FIC and
FDC),
+ 1 = shared I/D-cache (only FDC),
+ 2 = shared I/D-cache (only FIC),
+ 3 = shared I/D-cache (either FIC or
FDC) */
+ cc_cst : 3, /* 0 = incoherent D-cache,
+ 1 = coherent D-cache,
+ 2 - 7 reserved */
cc_pad1 : 10, /* reserved */
cc_hv : 3; /* hversion dependent */
};
-struct pdc_tlb_cf { /* for PDC_CACHE (I/D-TLB's) */
- unsigned long tc_pad0:12, /* reserved */
+struct pdc_dtlb_cf { /* for PDC_CACHE (D-TLB's) */
+ unsigned long
#ifdef __LP64__
tc_padW:32,
#endif
+ tc_pad0 :12, /* reserved */
+ tc_sh : 2, /* 0 = separate I/D-TLB (both PITLB and
PDTLB),
+ 1 = shared I/D-TLB (only PDTLB),
+ 2 = shared I/D-TLB (only PITLB),
+ 3 = shared I/D-TLB (either PITLB or
PDTLB) */
+ tc_hv : 1, /* HV */
+ tc_u : 1, /* 0 = TLB U-bit not implemented,
+ 1 = TLB U-bit implemented */
+ tc_cst : 3, /* 0 = incoherent D-cache,
+ 1 = coherent D-cache,
+ 2 -7 reserved */
+ tc_pad1 :11, /* reserved */
+ tc_hv1 : 2; /* HV1 */
+};
+
+struct pdc_itlb_cf { /* for PDC_CACHE (I-TLB's) */
+ unsigned long
+#ifdef __LP64__
+ tc_padW:32,
+#endif
+ tc_pad0 :12, /* reserved */
tc_sh : 2, /* 0 = separate I/D-TLB, else shared
I/D-TLB */
tc_hv : 1, /* HV */
- tc_page : 1, /* 0 = 2K page-size-machine, 1 = 4k page
size */
- tc_cst : 3, /* 0 = incoherent operations, else
coherent operations */
- tc_aid : 5, /* ITLB: width of access ids of
processor (encoded!) */
- tc_pad1 : 8; /* ITLB: width of space-registers
(encoded) */
+ tc_page : 1, /* 0 = 2K page-size-machine,
+ 1 = 4k page size */
+ tc_cst : 3, /* 0 = incoherent D-cache,
+ 1 = coherent D-cache,
+ 2 -7 reserved */
+ tc_aid : 5, /* encoded width of access ids of
processor */
+ tc_sr : 6, /* encoded width of space-registers */
+ tc_hv1 : 2; /* HV1 */
};
struct pdc_cache_info { /* main-PDC_CACHE-structure
(caches & TLB's) */
@@ -385,7 +416,7 @@
unsigned long dc_loop;
/* Instruction-TLB */
unsigned long it_size; /* number of entries in I-TLB */
- struct pdc_tlb_cf it_conf; /* I-TLB-configuration */
+ struct pdc_itlb_cf it_conf; /* I-TLB-configuration */
unsigned long it_sp_base;
unsigned long it_sp_stride;
unsigned long it_sp_count;
@@ -395,7 +426,7 @@
unsigned long it_loop;
/* data-TLB */
unsigned long dt_size; /* number of entries in D-TLB */
- struct pdc_tlb_cf dt_conf; /* D-TLB-configuration */
+ struct pdc_dtlb_cf dt_conf; /* D-TLB-configuration */
unsigned long dt_sp_base;
unsigned long dt_sp_stride;
unsigned long dt_sp_count;
--- arch/parisc/kernel/cache.c.Orig 2006-09-11 11:35:10.000000000 +0200
+++ arch/parisc/kernel/cache.c 2006-09-12 12:44:21.000000000 +0200
@@ -104,11 +104,14 @@
cache_info.ic_size/1024 );
if (cache_info.dc_loop == 1)
snprintf(buf, 32, "%lu-way associative",
cache_info.dc_loop);
- seq_printf(m, "D-cache\t\t: %ld KB (%s%s, %s)\n",
+ seq_printf(m, "D-cache\t\t: %ld KB (stride = %lu, %s/%s%s, %s)\n",
cache_info.dc_size/1024,
+ cache_info.dc_stride,
+ (cache_info.dc_conf.cc_cst ? "CO":"NC"),
(cache_info.dc_conf.cc_wt ? "WT":"WB"),
(cache_info.dc_conf.cc_sh ? ", shared I/D":""),
- ((cache_info.dc_loop == 1) ? "direct mapped" : buf));
+ ((cache_info.dc_loop == 1) ? "direct mapped" : buf)
+ );
seq_printf(m, "ITLB entries\t: %ld\n" "DTLB entries\t: %ld%s\n",
cache_info.it_size,
cache_info.dt_size,
@@ -143,7 +146,7 @@
if (pdc_cache_info(&cache_info) < 0)
panic("parisc_cache_init: pdc_cache_info failed");
-#if 0
+#if 1
printk("ic_size %lx dc_size %lx it_size %lx\n",
cache_info.ic_size,
cache_info.dc_size,
@@ -155,13 +158,13 @@
cache_info.dc_count,
cache_info.dc_loop);
- printk("dc_conf = 0x%lx alias %d blk %d line %d shift %d\n",
+ printk("dc_conf = 0x%lx alias %d blk %d line %d shift %d "
+ "wt %d sh %d cst %d assoc %d\n",
*(unsigned long *) (&cache_info.dc_conf),
cache_info.dc_conf.cc_alias,
cache_info.dc_conf.cc_block,
cache_info.dc_conf.cc_line,
- cache_info.dc_conf.cc_shift);
- printk(" wt %d sh %d cst %d hv %d\n",
+ cache_info.dc_conf.cc_shift,
cache_info.dc_conf.cc_wt,
cache_info.dc_conf.cc_sh,
cache_info.dc_conf.cc_cst,
@@ -173,31 +176,34 @@
cache_info.ic_count,
cache_info.ic_loop);
- printk("ic_conf = 0x%lx alias %d blk %d line %d shift %d\n",
+ printk("ic_conf = 0x%lx alias %d blk %d line %d shift %d "
+ "wt %d sh %d cst %d assoc %d\n",
*(unsigned long *) (&cache_info.ic_conf),
cache_info.ic_conf.cc_alias,
cache_info.ic_conf.cc_block,
cache_info.ic_conf.cc_line,
- cache_info.ic_conf.cc_shift);
- printk(" wt %d sh %d cst %d hv %d\n",
+ cache_info.ic_conf.cc_shift,
cache_info.ic_conf.cc_wt,
cache_info.ic_conf.cc_sh,
cache_info.ic_conf.cc_cst,
cache_info.ic_conf.cc_hv);
- printk("D-TLB conf: sh %d page %d cst %d aid %d pad1 %d \n",
+ printk("D-TLB conf: sh %d hv %d u %d cst %d pad1 %d hv1 %d\n",
cache_info.dt_conf.tc_sh,
- cache_info.dt_conf.tc_page,
+ cache_info.dt_conf.tc_hv,
+ cache_info.dt_conf.tc_u,
cache_info.dt_conf.tc_cst,
- cache_info.dt_conf.tc_aid,
- cache_info.dt_conf.tc_pad1);
+ cache_info.dt_conf.tc_pad1,
+ cache_info.dt_conf.tc_hv1);
- printk("I-TLB conf: sh %d page %d cst %d aid %d pad1 %d \n",
+ printk("I-TLB conf: sh %d hv %d page %d cst %d aid %d sr %d hv1
%d\n",
cache_info.it_conf.tc_sh,
+ cache_info.dt_conf.tc_hv,
cache_info.it_conf.tc_page,
cache_info.it_conf.tc_cst,
cache_info.it_conf.tc_aid,
- cache_info.it_conf.tc_pad1);
+ cache_info.it_conf.tc_sr,
+ cache_info.it_conf.tc_hv1);
#endif
split_tlb = 0;
=== <> ===
(but may be have got something more recent?)
I would just like to add those cache line size info:
--- arch/parisc/kernel/cache.c 2006-09-12 12:44:21.000000000 +0200
+++ arch/parisc/kernel/cache.c.New 2006-09-12 12:43:00.000000000 +0200
@@ -102,6 +102,8 @@
seq_printf(m, "I-cache\t\t: %ld KB\n",
cache_info.ic_size/1024 );
+ seq_printf(m, "I-cache line\t: %d Byte\n",
+ cache_info.ic_conf.cc_line << 4 );
if (cache_info.dc_loop == 1)
snprintf(buf, 32, "%lu-way associative",
cache_info.dc_loop);
seq_printf(m, "D-cache\t\t: %ld KB (stride = %lu, %s/%s%s, %s)\n",
@@ -112,6 +114,8 @@
(cache_info.dc_conf.cc_sh ? ", shared I/D":""),
((cache_info.dc_loop == 1) ? "direct mapped" : buf)
);
+ seq_printf(m, "D-cache line\t: %d Byte\n",
+ cache_info.dc_conf.cc_line << 4 );
seq_printf(m, "ITLB entries\t: %ld\n" "DTLB entries\t: %ld%s\n",
cache_info.it_size,
cache_info.dt_size,
=== <> ===
Tested on my c110, it reports:
# cat /proc/cpuinfo
processor : 0
cpu family : PA-RISC 1.1c
cpu : PA7200 (PCX-T')
cpu MHz : 120.000000
model : 9000/777/C110
model name : Raven 120 T'
hversion : 0x000058e0
sversion : 0x00000481
I-cache : 256 KB
I-cache line : 32 Byte
D-cache : 258 KB (stride = 32, WBCO, direct mapped)
D-cache line : 32 Byte
ITLB entries : 120
DTLB entries : 120 - shared with ITLB
BTLB fixed : max. 16384 pages, pagesize=4096 (64MB)
BTLB fix-entr. : 0 instruction, 0 data (16 combined)
BTLB var-entr. : 0 instruction, 0 data (0 combined)
bogomips : 119.29
software id : 2011460976
Please fill free to commit if there are some interest ;-)
Tia,
Joel
_______________________________________________
parisc-linux mailing list
parisc-linux@lists.parisc-linux.org
http://lists.parisc-linux.org/mailman/listinfo/parisc-linux
reply other threads:[~2006-09-12 11:21 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=45069829.5060804@scarlet.be \
--to=soete.joel@scarlet.be \
--cc=kyle@mcmartin.ca \
--cc=parisc-linux@lists.parisc-linux.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.