All of lore.kernel.org
 help / color / mirror / Atom feed
* [parisc-linux] some more cpu info?
@ 2006-09-12 11:21 Joel Soete
  0 siblings, 0 replies; only message in thread
From: Joel Soete @ 2006-09-12 11:21 UTC (permalink / raw)
  To: Kyle McMartin, parisc-linux

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

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2006-09-12 11:21 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-09-12 11:21 [parisc-linux] some more cpu info? Joel Soete

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.