@@ -506,6 +506,7 @@ static unsigned int intel_size_cache(struct cpuinfo_x86 *c, unsigned int size)
506
506
#define TLB_DATA0_2M_4M 0x23
507
507
508
508
#define STLB_4K 0x41
509
+ #define STLB_4K_2M 0x42
509
510
510
511
static const struct _tlb_table intel_tlb_table [] = {
511
512
{ 0x01 , TLB_INST_4K , 32 , " TLB_INST 4 KByte pages, 4-way set associative" },
@@ -526,13 +527,20 @@ static const struct _tlb_table intel_tlb_table[] = {
526
527
{ 0x5b , TLB_DATA_4K_4M , 64 , " TLB_DATA 4 KByte and 4 MByte pages" },
527
528
{ 0x5c , TLB_DATA_4K_4M , 128 , " TLB_DATA 4 KByte and 4 MByte pages" },
528
529
{ 0x5d , TLB_DATA_4K_4M , 256 , " TLB_DATA 4 KByte and 4 MByte pages" },
530
+ { 0x61 , TLB_INST_4K , 48 , " TLB_INST 4 KByte pages, full associative" },
531
+ { 0x63 , TLB_DATA_1G , 4 , " TLB_DATA 1 GByte pages, 4-way set associative" },
532
+ { 0x76 , TLB_INST_2M_4M , 8 , " TLB_INST 2-MByte or 4-MByte pages, fully associative" },
529
533
{ 0xb0 , TLB_INST_4K , 128 , " TLB_INST 4 KByte pages, 4-way set associative" },
530
534
{ 0xb1 , TLB_INST_2M_4M , 4 , " TLB_INST 2M pages, 4-way, 8 entries or 4M pages, 4-way entries" },
531
535
{ 0xb2 , TLB_INST_4K , 64 , " TLB_INST 4KByte pages, 4-way set associative" },
532
536
{ 0xb3 , TLB_DATA_4K , 128 , " TLB_DATA 4 KByte pages, 4-way set associative" },
533
537
{ 0xb4 , TLB_DATA_4K , 256 , " TLB_DATA 4 KByte pages, 4-way associative" },
538
+ { 0xb5 , TLB_INST_4K , 64 , " TLB_INST 4 KByte pages, 8-way set ssociative" },
539
+ { 0xb6 , TLB_INST_4K , 128 , " TLB_INST 4 KByte pages, 8-way set ssociative" },
534
540
{ 0xba , TLB_DATA_4K , 64 , " TLB_DATA 4 KByte pages, 4-way associative" },
535
541
{ 0xc0 , TLB_DATA_4K_4M , 8 , " TLB_DATA 4 KByte and 4 MByte pages, 4-way associative" },
542
+ { 0xc1 , STLB_4K_2M , 1024 , " STLB 4 KByte and 2 MByte pages, 8-way associative" },
543
+ { 0xc2 , TLB_DATA_2M_4M , 16 , " DTLB 2 MByte/4MByte pages, 4-way associative" },
536
544
{ 0xca , STLB_4K , 512 , " STLB 4 KByte pages, 4-way associative" },
537
545
{ 0x00 , 0 , 0 }
538
546
};
@@ -558,6 +566,20 @@ static void intel_tlb_lookup(const unsigned char desc)
558
566
if (tlb_lld_4k [ENTRIES ] < intel_tlb_table [k ].entries )
559
567
tlb_lld_4k [ENTRIES ] = intel_tlb_table [k ].entries ;
560
568
break ;
569
+ case STLB_4K_2M :
570
+ if (tlb_lli_4k [ENTRIES ] < intel_tlb_table [k ].entries )
571
+ tlb_lli_4k [ENTRIES ] = intel_tlb_table [k ].entries ;
572
+ if (tlb_lld_4k [ENTRIES ] < intel_tlb_table [k ].entries )
573
+ tlb_lld_4k [ENTRIES ] = intel_tlb_table [k ].entries ;
574
+ if (tlb_lli_2m [ENTRIES ] < intel_tlb_table [k ].entries )
575
+ tlb_lli_2m [ENTRIES ] = intel_tlb_table [k ].entries ;
576
+ if (tlb_lld_2m [ENTRIES ] < intel_tlb_table [k ].entries )
577
+ tlb_lld_2m [ENTRIES ] = intel_tlb_table [k ].entries ;
578
+ if (tlb_lli_4m [ENTRIES ] < intel_tlb_table [k ].entries )
579
+ tlb_lli_4m [ENTRIES ] = intel_tlb_table [k ].entries ;
580
+ if (tlb_lld_4m [ENTRIES ] < intel_tlb_table [k ].entries )
581
+ tlb_lld_4m [ENTRIES ] = intel_tlb_table [k ].entries ;
582
+ break ;
561
583
case TLB_INST_ALL :
562
584
if (tlb_lli_4k [ENTRIES ] < intel_tlb_table [k ].entries )
563
585
tlb_lli_4k [ENTRIES ] = intel_tlb_table [k ].entries ;
@@ -603,6 +625,10 @@ static void intel_tlb_lookup(const unsigned char desc)
603
625
if (tlb_lld_4m [ENTRIES ] < intel_tlb_table [k ].entries )
604
626
tlb_lld_4m [ENTRIES ] = intel_tlb_table [k ].entries ;
605
627
break ;
628
+ case TLB_DATA_1G :
629
+ if (tlb_lld_1g [ENTRIES ] < intel_tlb_table [k ].entries )
630
+ tlb_lld_1g [ENTRIES ] = intel_tlb_table [k ].entries ;
631
+ break ;
606
632
}
607
633
}
608
634
0 commit comments