Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/pytorch/cpuinfo.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMarat Dukhan <marat@fb.com>2018-12-19 07:55:35 +0300
committerMarat Dukhan <marat@fb.com>2018-12-19 07:55:35 +0300
commitb121e4b6fff789af1c5300189aaf092167d13aec (patch)
tree9ae2d38c0b6b963b51a942489f84937207409a80 /src
parenta61747aebe5748505c2430d7e4335c7f85d31275 (diff)
Initialize cache sets and partitions for x86 cache descriptors. Fix #18
Diffstat (limited to 'src')
-rw-r--r--src/x86/cache/descriptor.c386
1 files changed, 264 insertions, 122 deletions
diff --git a/src/x86/cache/descriptor.c b/src/x86/cache/descriptor.c
index adba372..1e7608b 100644
--- a/src/x86/cache/descriptor.c
+++ b/src/x86/cache/descriptor.c
@@ -42,7 +42,7 @@ void cpuinfo_x86_decode_cache_descriptor(
*itlb_4KB = (struct cpuinfo_tlb) {
.entries = 32,
.associativity = 4,
- .pages = CPUINFO_PAGE_SIZE_4KB
+ .pages = CPUINFO_PAGE_SIZE_4KB,
};
break;
case 0x02:
@@ -55,7 +55,7 @@ void cpuinfo_x86_decode_cache_descriptor(
*itlb_4MB = (struct cpuinfo_tlb) {
.entries = 2,
.associativity = 2,
- .pages = CPUINFO_PAGE_SIZE_4MB
+ .pages = CPUINFO_PAGE_SIZE_4MB,
};
break;
case 0x03:
@@ -68,7 +68,7 @@ void cpuinfo_x86_decode_cache_descriptor(
*dtlb_4KB = (struct cpuinfo_tlb) {
.entries = 64,
.associativity = 4,
- .pages = CPUINFO_PAGE_SIZE_4KB
+ .pages = CPUINFO_PAGE_SIZE_4KB,
};
break;
case 0x04:
@@ -81,7 +81,7 @@ void cpuinfo_x86_decode_cache_descriptor(
*dtlb_4MB = (struct cpuinfo_tlb) {
.entries = 8,
.associativity = 4,
- .pages = CPUINFO_PAGE_SIZE_4MB
+ .pages = CPUINFO_PAGE_SIZE_4MB,
};
break;
case 0x05:
@@ -94,7 +94,7 @@ void cpuinfo_x86_decode_cache_descriptor(
*dtlb_4MB = (struct cpuinfo_tlb) {
.entries = 32,
.associativity = 4,
- .pages = CPUINFO_PAGE_SIZE_4MB
+ .pages = CPUINFO_PAGE_SIZE_4MB,
};
break;
case 0x06:
@@ -107,7 +107,9 @@ void cpuinfo_x86_decode_cache_descriptor(
cache->l1i = (struct cpuinfo_x86_cache) {
.size = 8 * 1024,
.associativity = 4,
- .line_size = 32
+ .sets = 64,
+ .partitions = 1,
+ .line_size = 32,
};
break;
case 0x08:
@@ -120,7 +122,9 @@ void cpuinfo_x86_decode_cache_descriptor(
cache->l1i = (struct cpuinfo_x86_cache) {
.size = 16 * 1024,
.associativity = 4,
- .line_size = 32
+ .sets = 128,
+ .partitions = 1,
+ .line_size = 32,
};
break;
case 0x09:
@@ -133,7 +137,9 @@ void cpuinfo_x86_decode_cache_descriptor(
cache->l1i = (struct cpuinfo_x86_cache) {
.size = 32 * 1024,
.associativity = 4,
- .line_size = 64
+ .sets = 128,
+ .partitions = 1,
+ .line_size = 64,
};
break;
case 0x0A:
@@ -146,7 +152,9 @@ void cpuinfo_x86_decode_cache_descriptor(
cache->l1d = (struct cpuinfo_x86_cache) {
.size = 8 * 1024,
.associativity = 2,
- .line_size = 32
+ .sets = 128,
+ .partitions = 1,
+ .line_size = 32,
};
break;
case 0x0B:
@@ -159,7 +167,7 @@ void cpuinfo_x86_decode_cache_descriptor(
*itlb_4MB = (struct cpuinfo_tlb) {
.entries = 4,
.associativity = 4,
- .pages = CPUINFO_PAGE_SIZE_4MB
+ .pages = CPUINFO_PAGE_SIZE_4MB,
};
break;
case 0x0C:
@@ -172,7 +180,9 @@ void cpuinfo_x86_decode_cache_descriptor(
cache->l1d = (struct cpuinfo_x86_cache) {
.size = 16 * 1024,
.associativity = 4,
- .line_size = 32
+ .sets = 128,
+ .partitions = 1,
+ .line_size = 32,
};
break;
case 0x0D:
@@ -185,7 +195,9 @@ void cpuinfo_x86_decode_cache_descriptor(
cache->l1d = (struct cpuinfo_x86_cache) {
.size = 16 * 1024,
.associativity = 4,
- .line_size = 64
+ .sets = 64,
+ .partitions = 1,
+ .line_size = 64,
};
break;
case 0x0E:
@@ -198,7 +210,9 @@ void cpuinfo_x86_decode_cache_descriptor(
cache->l1d = (struct cpuinfo_x86_cache) {
.size = 24 * 1024,
.associativity = 6,
- .line_size = 64
+ .sets = 64,
+ .partitions = 1,
+ .line_size = 64,
};
break;
case 0x1D:
@@ -209,8 +223,10 @@ void cpuinfo_x86_decode_cache_descriptor(
cache->l2 = (struct cpuinfo_x86_cache) {
.size = 128 * 1024,
.associativity = 2,
+ .sets = 1024,
+ .partitions = 1,
.line_size = 64,
- .flags = CPUINFO_CACHE_INCLUSIVE
+ .flags = CPUINFO_CACHE_INCLUSIVE,
};
case 0x21:
/*
@@ -222,8 +238,10 @@ void cpuinfo_x86_decode_cache_descriptor(
cache->l2 = (struct cpuinfo_x86_cache) {
.size = 256 * 1024,
.associativity = 8,
+ .sets = 512,
+ .partitions = 1,
.line_size = 64,
- .flags = CPUINFO_CACHE_INCLUSIVE
+ .flags = CPUINFO_CACHE_INCLUSIVE,
};
break;
case 0x22:
@@ -236,8 +254,10 @@ void cpuinfo_x86_decode_cache_descriptor(
cache->l3 = (struct cpuinfo_x86_cache) {
.size = 512 * 1024,
.associativity = 4,
+ .sets = 2048,
+ .partitions = 1,
.line_size = 64,
- .flags = CPUINFO_CACHE_INCLUSIVE
+ .flags = CPUINFO_CACHE_INCLUSIVE,
};
break;
case 0x23:
@@ -250,8 +270,10 @@ void cpuinfo_x86_decode_cache_descriptor(
cache->l3 = (struct cpuinfo_x86_cache) {
.size = 1024 * 1024,
.associativity = 8,
+ .sets = 2048,
+ .partitions = 1,
.line_size = 64,
- .flags = CPUINFO_CACHE_INCLUSIVE
+ .flags = CPUINFO_CACHE_INCLUSIVE,
};
break;
case 0x24:
@@ -262,8 +284,10 @@ void cpuinfo_x86_decode_cache_descriptor(
cache->l2 = (struct cpuinfo_x86_cache) {
.size = 1024 * 1024,
.associativity = 16,
+ .sets = 1024,
+ .partitions = 1,
.line_size = 64,
- .flags = CPUINFO_CACHE_INCLUSIVE
+ .flags = CPUINFO_CACHE_INCLUSIVE,
};
break;
case 0x25:
@@ -276,8 +300,10 @@ void cpuinfo_x86_decode_cache_descriptor(
cache->l3 = (struct cpuinfo_x86_cache) {
.size = 2 * 1024 * 1024,
.associativity = 8,
+ .sets = 4096,
+ .partitions = 1,
.line_size = 64,
- .flags = CPUINFO_CACHE_INCLUSIVE
+ .flags = CPUINFO_CACHE_INCLUSIVE,
};
break;
case 0x29:
@@ -290,8 +316,10 @@ void cpuinfo_x86_decode_cache_descriptor(
cache->l3 = (struct cpuinfo_x86_cache) {
.size = 4 * 1024 * 1024,
.associativity = 8,
+ .sets = 8192,
+ .partitions = 1,
.line_size = 64,
- .flags = CPUINFO_CACHE_INCLUSIVE
+ .flags = CPUINFO_CACHE_INCLUSIVE,
};
break;
case 0x2C:
@@ -304,8 +332,10 @@ void cpuinfo_x86_decode_cache_descriptor(
cache->l1d = (struct cpuinfo_x86_cache) {
.size = 32 * 1024,
.associativity = 8,
+ .sets = 64,
+ .partitions = 1,
.line_size = 64,
- .flags = CPUINFO_CACHE_INCLUSIVE
+ .flags = CPUINFO_CACHE_INCLUSIVE,
};
break;
case 0x30:
@@ -318,7 +348,9 @@ void cpuinfo_x86_decode_cache_descriptor(
cache->l1i = (struct cpuinfo_x86_cache) {
.size = 32 * 1024,
.associativity = 8,
- .line_size = 64
+ .sets = 64,
+ .partitions = 1,
+ .line_size = 64,
};
break;
case 0x39:
@@ -326,8 +358,10 @@ void cpuinfo_x86_decode_cache_descriptor(
cache->l2 = (struct cpuinfo_x86_cache) {
.size = 128 * 1024,
.associativity = 4,
+ .sets = 512,
+ .partitions = 1,
.line_size = 64,
- .flags = CPUINFO_CACHE_INCLUSIVE
+ .flags = CPUINFO_CACHE_INCLUSIVE,
};
break;
case 0x3A:
@@ -335,8 +369,10 @@ void cpuinfo_x86_decode_cache_descriptor(
cache->l2 = (struct cpuinfo_x86_cache) {
.size = 192 * 1024,
.associativity = 6,
+ .sets = 512,
+ .partitions = 1,
.line_size = 64,
- .flags = CPUINFO_CACHE_INCLUSIVE
+ .flags = CPUINFO_CACHE_INCLUSIVE,
};
break;
case 0x3B:
@@ -344,8 +380,10 @@ void cpuinfo_x86_decode_cache_descriptor(
cache->l2 = (struct cpuinfo_x86_cache) {
.size = 128 * 1024,
.associativity = 2,
+ .sets = 1024,
+ .partitions = 1,
.line_size = 64,
- .flags = CPUINFO_CACHE_INCLUSIVE
+ .flags = CPUINFO_CACHE_INCLUSIVE,
};
break;
case 0x3C:
@@ -353,8 +391,10 @@ void cpuinfo_x86_decode_cache_descriptor(
cache->l2 = (struct cpuinfo_x86_cache) {
.size = 256 * 1024,
.associativity = 4,
+ .sets = 1024,
+ .partitions = 1,
.line_size = 64,
- .flags = CPUINFO_CACHE_INCLUSIVE
+ .flags = CPUINFO_CACHE_INCLUSIVE,
};
break;
case 0x3D:
@@ -362,8 +402,10 @@ void cpuinfo_x86_decode_cache_descriptor(
cache->l2 = (struct cpuinfo_x86_cache) {
.size = 384 * 1024,
.associativity = 6,
+ .sets = 1024,
+ .partitions = 1,
.line_size = 64,
- .flags = CPUINFO_CACHE_INCLUSIVE
+ .flags = CPUINFO_CACHE_INCLUSIVE,
};
break;
case 0x3E:
@@ -371,8 +413,10 @@ void cpuinfo_x86_decode_cache_descriptor(
cache->l2 = (struct cpuinfo_x86_cache) {
.size = 512 * 1024,
.associativity = 4,
+ .sets = 2048,
+ .partitions = 1,
.line_size = 64,
- .flags = CPUINFO_CACHE_INCLUSIVE
+ .flags = CPUINFO_CACHE_INCLUSIVE,
};
break;
case 0x40:
@@ -393,8 +437,10 @@ void cpuinfo_x86_decode_cache_descriptor(
cache->l2 = (struct cpuinfo_x86_cache) {
.size = 128 * 1024,
.associativity = 4,
+ .sets = 1024,
+ .partitions = 1,
.line_size = 32,
- .flags = CPUINFO_CACHE_INCLUSIVE
+ .flags = CPUINFO_CACHE_INCLUSIVE,
};
break;
case 0x42:
@@ -407,8 +453,10 @@ void cpuinfo_x86_decode_cache_descriptor(
cache->l2 = (struct cpuinfo_x86_cache) {
.size = 256 * 1024,
.associativity = 4,
+ .sets = 2048,
+ .partitions = 1,
.line_size = 32,
- .flags = CPUINFO_CACHE_INCLUSIVE
+ .flags = CPUINFO_CACHE_INCLUSIVE,
};
break;
case 0x43:
@@ -421,8 +469,10 @@ void cpuinfo_x86_decode_cache_descriptor(
cache->l2 = (struct cpuinfo_x86_cache) {
.size = 512 * 1024,
.associativity = 4,
+ .sets = 4096,
+ .partitions = 1,
.line_size = 32,
- .flags = CPUINFO_CACHE_INCLUSIVE
+ .flags = CPUINFO_CACHE_INCLUSIVE,
};
break;
case 0x44:
@@ -435,8 +485,10 @@ void cpuinfo_x86_decode_cache_descriptor(
cache->l2 = (struct cpuinfo_x86_cache) {
.size = 1024 * 1024,
.associativity = 4,
+ .sets = 8192,
+ .partitions = 1,
.line_size = 32,
- .flags = CPUINFO_CACHE_INCLUSIVE
+ .flags = CPUINFO_CACHE_INCLUSIVE,
};
break;
case 0x45:
@@ -449,8 +501,10 @@ void cpuinfo_x86_decode_cache_descriptor(
cache->l2 = (struct cpuinfo_x86_cache) {
.size = 2 * 1024 * 1024,
.associativity = 4,
+ .sets = 16384,
+ .partitions = 1,
.line_size = 32,
- .flags = CPUINFO_CACHE_INCLUSIVE
+ .flags = CPUINFO_CACHE_INCLUSIVE,
};
break;
case 0x46:
@@ -463,8 +517,10 @@ void cpuinfo_x86_decode_cache_descriptor(
cache->l3 = (struct cpuinfo_x86_cache) {
.size = 4 * 1024 * 1024,
.associativity = 4,
+ .sets = 16384,
+ .partitions = 1,
.line_size = 64,
- .flags = CPUINFO_CACHE_INCLUSIVE
+ .flags = CPUINFO_CACHE_INCLUSIVE,
};
break;
case 0x47:
@@ -477,8 +533,10 @@ void cpuinfo_x86_decode_cache_descriptor(
cache->l3 = (struct cpuinfo_x86_cache) {
.size = 8 * 1024 * 1024,
.associativity = 8,
+ .sets = 16384,
+ .partitions = 1,
.line_size = 64,
- .flags = CPUINFO_CACHE_INCLUSIVE
+ .flags = CPUINFO_CACHE_INCLUSIVE,
};
break;
case 0x48:
@@ -491,8 +549,10 @@ void cpuinfo_x86_decode_cache_descriptor(
cache->l2 = (struct cpuinfo_x86_cache) {
.size = 3 * 1024 * 1024,
.associativity = 12,
+ .sets = 4096,
+ .partitions = 1,
.line_size = 64,
- .flags = CPUINFO_CACHE_INCLUSIVE
+ .flags = CPUINFO_CACHE_INCLUSIVE,
};
break;
case 0x49:
@@ -509,15 +569,19 @@ void cpuinfo_x86_decode_cache_descriptor(
cache->l3 = (struct cpuinfo_x86_cache) {
.size = 4 * 1024 * 1024,
.associativity = 16,
+ .sets = 4096,
+ .partitions = 1,
.line_size = 64,
- .flags = CPUINFO_CACHE_INCLUSIVE
+ .flags = CPUINFO_CACHE_INCLUSIVE,
};
} else {
cache->l2 = (struct cpuinfo_x86_cache) {
.size = 4 * 1024 * 1024,
.associativity = 16,
+ .sets = 4096,
+ .partitions = 1,
.line_size = 64,
- .flags = CPUINFO_CACHE_INCLUSIVE
+ .flags = CPUINFO_CACHE_INCLUSIVE,
};
}
break;
@@ -531,8 +595,10 @@ void cpuinfo_x86_decode_cache_descriptor(
cache->l3 = (struct cpuinfo_x86_cache) {
.size = 6 * 1024 * 1024,
.associativity = 12,
+ .sets = 8192,
+ .partitions = 1,
.line_size = 64,
- .flags = CPUINFO_CACHE_INCLUSIVE
+ .flags = CPUINFO_CACHE_INCLUSIVE,
};
break;
case 0x4B:
@@ -545,8 +611,10 @@ void cpuinfo_x86_decode_cache_descriptor(
cache->l3 = (struct cpuinfo_x86_cache) {
.size = 8 * 1024 * 1024,
.associativity = 16,
+ .sets = 8192,
+ .partitions = 1,
.line_size = 64,
- .flags = CPUINFO_CACHE_INCLUSIVE
+ .flags = CPUINFO_CACHE_INCLUSIVE,
};
break;
case 0x4C:
@@ -559,8 +627,10 @@ void cpuinfo_x86_decode_cache_descriptor(
cache->l3 = (struct cpuinfo_x86_cache) {
.size = 12 * 1024 * 1024,
.associativity = 12,
+ .sets = 16384,
+ .partitions = 1,
.line_size = 64,
- .flags = CPUINFO_CACHE_INCLUSIVE
+ .flags = CPUINFO_CACHE_INCLUSIVE,
};
break;
case 0x4D:
@@ -573,8 +643,10 @@ void cpuinfo_x86_decode_cache_descriptor(
cache->l3 = (struct cpuinfo_x86_cache) {
.size = 16 * 1024 * 1024,
.associativity = 16,
+ .sets = 16384,
+ .partitions = 1,
.line_size = 64,
- .flags = CPUINFO_CACHE_INCLUSIVE
+ .flags = CPUINFO_CACHE_INCLUSIVE,
};
break;
case 0x4E:
@@ -587,8 +659,10 @@ void cpuinfo_x86_decode_cache_descriptor(
cache->l2 = (struct cpuinfo_x86_cache) {
.size = 6 * 1024 * 1024,
.associativity = 24,
+ .sets = 4096,
+ .partitions = 1,
.line_size = 64,
- .flags = CPUINFO_CACHE_INCLUSIVE
+ .flags = CPUINFO_CACHE_INCLUSIVE,
};
break;
case 0x4F:
@@ -602,7 +676,7 @@ void cpuinfo_x86_decode_cache_descriptor(
.entries = 32,
/* Assume full associativity from nearby entries: manual lacks detail */
.associativity = 32,
- .pages = CPUINFO_PAGE_SIZE_4KB
+ .pages = CPUINFO_PAGE_SIZE_4KB,
};
break;
case 0x50:
@@ -615,7 +689,7 @@ void cpuinfo_x86_decode_cache_descriptor(
*itlb_4KB = *itlb_2MB = *itlb_4MB = (struct cpuinfo_tlb) {
.entries = 64,
.associativity = 64,
- .pages = CPUINFO_PAGE_SIZE_4KB | CPUINFO_PAGE_SIZE_2MB | CPUINFO_PAGE_SIZE_4MB
+ .pages = CPUINFO_PAGE_SIZE_4KB | CPUINFO_PAGE_SIZE_2MB | CPUINFO_PAGE_SIZE_4MB,
};
break;
case 0x51:
@@ -628,7 +702,7 @@ void cpuinfo_x86_decode_cache_descriptor(
*itlb_4KB = *itlb_2MB = *itlb_4MB = (struct cpuinfo_tlb) {
.entries = 128,
.associativity = 128,
- .pages = CPUINFO_PAGE_SIZE_4KB | CPUINFO_PAGE_SIZE_2MB | CPUINFO_PAGE_SIZE_4MB
+ .pages = CPUINFO_PAGE_SIZE_4KB | CPUINFO_PAGE_SIZE_2MB | CPUINFO_PAGE_SIZE_4MB,
};
break;
case 0x52:
@@ -641,7 +715,7 @@ void cpuinfo_x86_decode_cache_descriptor(
*itlb_4KB = *itlb_2MB = *itlb_4MB = (struct cpuinfo_tlb) {
.entries = 256,
.associativity = 256,
- .pages = CPUINFO_PAGE_SIZE_4KB | CPUINFO_PAGE_SIZE_2MB | CPUINFO_PAGE_SIZE_4MB
+ .pages = CPUINFO_PAGE_SIZE_4KB | CPUINFO_PAGE_SIZE_2MB | CPUINFO_PAGE_SIZE_4MB,
};
break;
case 0x55:
@@ -654,7 +728,7 @@ void cpuinfo_x86_decode_cache_descriptor(
*itlb_2MB = *itlb_4MB = (struct cpuinfo_tlb) {
.entries = 7,
.associativity = 7,
- .pages = CPUINFO_PAGE_SIZE_2MB | CPUINFO_PAGE_SIZE_4MB
+ .pages = CPUINFO_PAGE_SIZE_2MB | CPUINFO_PAGE_SIZE_4MB,
};
break;
case 0x56:
@@ -667,7 +741,7 @@ void cpuinfo_x86_decode_cache_descriptor(
*dtlb0_4MB = (struct cpuinfo_tlb) {
.entries = 16,
.associativity = 4,
- .pages = CPUINFO_PAGE_SIZE_4MB
+ .pages = CPUINFO_PAGE_SIZE_4MB,
};
break;
case 0x57:
@@ -680,7 +754,7 @@ void cpuinfo_x86_decode_cache_descriptor(
*dtlb0_4KB = (struct cpuinfo_tlb) {
.entries = 16,
.associativity = 4,
- .pages = CPUINFO_PAGE_SIZE_4KB
+ .pages = CPUINFO_PAGE_SIZE_4KB,
};
break;
case 0x59:
@@ -693,7 +767,7 @@ void cpuinfo_x86_decode_cache_descriptor(
*dtlb0_4KB = (struct cpuinfo_tlb) {
.entries = 16,
.associativity = 16,
- .pages = CPUINFO_PAGE_SIZE_4KB
+ .pages = CPUINFO_PAGE_SIZE_4KB,
};
break;
case 0x5A:
@@ -706,7 +780,7 @@ void cpuinfo_x86_decode_cache_descriptor(
*dtlb0_2MB = *dtlb0_4MB = (struct cpuinfo_tlb) {
.entries = 32,
.associativity = 4,
- .pages = CPUINFO_PAGE_SIZE_2MB | CPUINFO_PAGE_SIZE_4MB
+ .pages = CPUINFO_PAGE_SIZE_2MB | CPUINFO_PAGE_SIZE_4MB,
};
break;
case 0x5B:
@@ -719,7 +793,7 @@ void cpuinfo_x86_decode_cache_descriptor(
*dtlb_4KB = *dtlb_4MB = (struct cpuinfo_tlb) {
.entries = 64,
.associativity = 64,
- .pages = CPUINFO_PAGE_SIZE_4KB | CPUINFO_PAGE_SIZE_4MB
+ .pages = CPUINFO_PAGE_SIZE_4KB | CPUINFO_PAGE_SIZE_4MB,
};
break;
case 0x5C:
@@ -732,7 +806,7 @@ void cpuinfo_x86_decode_cache_descriptor(
*dtlb_4KB = *dtlb_4MB = (struct cpuinfo_tlb) {
.entries = 128,
.associativity = 128,
- .pages = CPUINFO_PAGE_SIZE_4KB | CPUINFO_PAGE_SIZE_4MB
+ .pages = CPUINFO_PAGE_SIZE_4KB | CPUINFO_PAGE_SIZE_4MB,
};
break;
case 0x5D:
@@ -745,7 +819,7 @@ void cpuinfo_x86_decode_cache_descriptor(
*dtlb_4KB = *dtlb_4MB = (struct cpuinfo_tlb) {
.entries = 256,
.associativity = 256,
- .pages = CPUINFO_PAGE_SIZE_4KB | CPUINFO_PAGE_SIZE_4MB
+ .pages = CPUINFO_PAGE_SIZE_4KB | CPUINFO_PAGE_SIZE_4MB,
};
break;
case 0x60:
@@ -756,7 +830,9 @@ void cpuinfo_x86_decode_cache_descriptor(
cache->l1d = (struct cpuinfo_x86_cache) {
.size = 16 * 1024,
.associativity = 8,
- .line_size = 64
+ .sets = 32,
+ .partitions = 1,
+ .line_size = 64,
};
break;
case 0x61:
@@ -767,7 +843,7 @@ void cpuinfo_x86_decode_cache_descriptor(
*itlb_4KB = (struct cpuinfo_tlb) {
.entries = 48,
.associativity = 48,
- .pages = CPUINFO_PAGE_SIZE_4KB
+ .pages = CPUINFO_PAGE_SIZE_4KB,
};
break;
case 0x63:
@@ -779,12 +855,12 @@ void cpuinfo_x86_decode_cache_descriptor(
*dtlb_2MB = *dtlb_4MB = (struct cpuinfo_tlb) {
.entries = 32,
.associativity = 4,
- .pages = CPUINFO_PAGE_SIZE_2MB | CPUINFO_PAGE_SIZE_4MB
+ .pages = CPUINFO_PAGE_SIZE_2MB | CPUINFO_PAGE_SIZE_4MB,
};
*dtlb_1GB = (struct cpuinfo_tlb) {
.entries = 4,
.associativity = 4,
- .pages = CPUINFO_PAGE_SIZE_1GB
+ .pages = CPUINFO_PAGE_SIZE_1GB,
};
break;
case 0x64:
@@ -796,7 +872,7 @@ void cpuinfo_x86_decode_cache_descriptor(
*dtlb_4KB = (struct cpuinfo_tlb) {
.entries = 512,
.associativity = 4,
- .pages = CPUINFO_PAGE_SIZE_4KB
+ .pages = CPUINFO_PAGE_SIZE_4KB,
};
break;
case 0x66:
@@ -807,7 +883,9 @@ void cpuinfo_x86_decode_cache_descriptor(
cache->l1d = (struct cpuinfo_x86_cache) {
.size = 8 * 1024,
.associativity = 4,
- .line_size = 64
+ .sets = 32,
+ .partitions = 1,
+ .line_size = 64,
};
break;
case 0x67:
@@ -818,7 +896,9 @@ void cpuinfo_x86_decode_cache_descriptor(
cache->l1d = (struct cpuinfo_x86_cache) {
.size = 16 * 1024,
.associativity = 4,
- .line_size = 64
+ .sets = 64,
+ .partitions = 1,
+ .line_size = 64,
};
break;
case 0x68:
@@ -829,7 +909,9 @@ void cpuinfo_x86_decode_cache_descriptor(
cache->l1d = (struct cpuinfo_x86_cache) {
.size = 32 * 1024,
.associativity = 4,
- .line_size = 64
+ .sets = 128,
+ .partitions = 1,
+ .line_size = 64,
};
break;
case 0x6A:
@@ -842,7 +924,7 @@ void cpuinfo_x86_decode_cache_descriptor(
*dtlb_4KB = (struct cpuinfo_tlb) {
.entries = 64,
.associativity = 8,
- .pages = CPUINFO_PAGE_SIZE_4KB
+ .pages = CPUINFO_PAGE_SIZE_4KB,
};
break;
case 0x6B:
@@ -853,7 +935,7 @@ void cpuinfo_x86_decode_cache_descriptor(
*dtlb_4KB = (struct cpuinfo_tlb) {
.entries = 256,
.associativity = 8,
- .pages = CPUINFO_PAGE_SIZE_4KB
+ .pages = CPUINFO_PAGE_SIZE_4KB,
};
break;
case 0x6C:
@@ -864,7 +946,7 @@ void cpuinfo_x86_decode_cache_descriptor(
*dtlb_2MB = *dtlb_4MB = (struct cpuinfo_tlb) {
.entries = 128,
.associativity = 8,
- .pages = CPUINFO_PAGE_SIZE_2MB | CPUINFO_PAGE_SIZE_4MB
+ .pages = CPUINFO_PAGE_SIZE_2MB | CPUINFO_PAGE_SIZE_4MB,
};
break;
case 0x6D:
@@ -875,7 +957,7 @@ void cpuinfo_x86_decode_cache_descriptor(
*dtlb_1GB = (struct cpuinfo_tlb) {
.entries = 16,
.associativity = 16,
- .pages = CPUINFO_PAGE_SIZE_1GB
+ .pages = CPUINFO_PAGE_SIZE_1GB,
};
break;
case 0x70:
@@ -894,14 +976,14 @@ void cpuinfo_x86_decode_cache_descriptor(
*dtlb_4KB = *itlb_4KB = (struct cpuinfo_tlb) {
.entries = 32,
.associativity = 4,
- .pages = CPUINFO_PAGE_SIZE_4KB
+ .pages = CPUINFO_PAGE_SIZE_4KB,
};
break;
#endif /* CPUINFO_ARCH_X86 */
default:
cache->trace = (struct cpuinfo_trace_cache) {
.uops = 12 * 1024,
- .associativity = 8
+ .associativity = 8,
};
}
break;
@@ -914,7 +996,7 @@ void cpuinfo_x86_decode_cache_descriptor(
*/
cache->trace = (struct cpuinfo_trace_cache) {
.uops = 16 * 1024,
- .associativity = 8
+ .associativity = 8,
};
break;
case 0x72:
@@ -926,14 +1008,14 @@ void cpuinfo_x86_decode_cache_descriptor(
*/
cache->trace = (struct cpuinfo_trace_cache) {
.uops = 32 * 1024,
- .associativity = 8
+ .associativity = 8,
};
break;
case 0x73:
/* Where does this come from? */
cache->trace = (struct cpuinfo_trace_cache) {
.uops = 64 * 1024,
- .associativity = 8
+ .associativity = 8,
};
break;
case 0x76:
@@ -946,7 +1028,7 @@ void cpuinfo_x86_decode_cache_descriptor(
*itlb_2MB = *itlb_4MB = (struct cpuinfo_tlb) {
.entries = 8,
.associativity = 8,
- .pages = CPUINFO_PAGE_SIZE_2MB | CPUINFO_PAGE_SIZE_4MB
+ .pages = CPUINFO_PAGE_SIZE_2MB | CPUINFO_PAGE_SIZE_4MB,
};
break;
case 0x78:
@@ -959,8 +1041,10 @@ void cpuinfo_x86_decode_cache_descriptor(
cache->l2 = (struct cpuinfo_x86_cache) {
.size = 1024 * 1024,
.associativity = 4,
+ .sets = 4096,
+ .partitions = 1,
.line_size = 64,
- .flags = CPUINFO_CACHE_INCLUSIVE
+ .flags = CPUINFO_CACHE_INCLUSIVE,
};
break;
case 0x79:
@@ -973,8 +1057,10 @@ void cpuinfo_x86_decode_cache_descriptor(
cache->l2 = (struct cpuinfo_x86_cache) {
.size = 128 * 1024,
.associativity = 8,
+ .sets = 256,
+ .partitions = 1,
.line_size = 64,
- .flags = CPUINFO_CACHE_INCLUSIVE
+ .flags = CPUINFO_CACHE_INCLUSIVE,
};
break;
case 0x7A:
@@ -987,8 +1073,10 @@ void cpuinfo_x86_decode_cache_descriptor(
cache->l2 = (struct cpuinfo_x86_cache) {
.size = 256 * 1024,
.associativity = 8,
+ .sets = 512,
+ .partitions = 1,
.line_size = 64,
- .flags = CPUINFO_CACHE_INCLUSIVE
+ .flags = CPUINFO_CACHE_INCLUSIVE,
};
break;
case 0x7B:
@@ -1001,8 +1089,10 @@ void cpuinfo_x86_decode_cache_descriptor(
cache->l2 = (struct cpuinfo_x86_cache) {
.size = 512 * 1024,
.associativity = 8,
+ .sets = 1024,
+ .partitions = 1,
.line_size = 64,
- .flags = CPUINFO_CACHE_INCLUSIVE
+ .flags = CPUINFO_CACHE_INCLUSIVE,
};
break;
case 0x7C:
@@ -1015,8 +1105,10 @@ void cpuinfo_x86_decode_cache_descriptor(
cache->l2 = (struct cpuinfo_x86_cache) {
.size = 1024 * 1024,
.associativity = 8,
+ .sets = 2048,
+ .partitions = 1,
.line_size = 64,
- .flags = CPUINFO_CACHE_INCLUSIVE
+ .flags = CPUINFO_CACHE_INCLUSIVE,
};
break;
case 0x7D:
@@ -1029,8 +1121,10 @@ void cpuinfo_x86_decode_cache_descriptor(
cache->l2 = (struct cpuinfo_x86_cache) {
.size = 2 * 1024 * 1024,
.associativity = 8,
+ .sets = 4096,
+ .partitions = 1,
.line_size = 64,
- .flags = CPUINFO_CACHE_INCLUSIVE
+ .flags = CPUINFO_CACHE_INCLUSIVE,
};
break;
case 0x7F:
@@ -1043,8 +1137,10 @@ void cpuinfo_x86_decode_cache_descriptor(
cache->l2 = (struct cpuinfo_x86_cache) {
.size = 512 * 1024,
.associativity = 2,
+ .sets = 4096,
+ .partitions = 1,
.line_size = 64,
- .flags = CPUINFO_CACHE_INCLUSIVE
+ .flags = CPUINFO_CACHE_INCLUSIVE,
};
break;
case 0x80:
@@ -1057,14 +1153,16 @@ void cpuinfo_x86_decode_cache_descriptor(
* "Level 1 Cache, 16K, 4-way set associative, 16 Bytes/Line"
*/
switch (vendor) {
-#if CPUINFO_ARCH_X86
+#if CPUINFO_ARCH_X86 && !defined(__ANDROID__)
case cpuinfo_vendor_cyrix:
case cpuinfo_vendor_nsc:
cache->l1i = cache->l1d = (struct cpuinfo_x86_cache) {
.size = 16 * 1024,
.associativity = 4,
+ .sets = 256,
+ .partitions = 1,
.line_size = 16,
- .flags = CPUINFO_CACHE_UNIFIED
+ .flags = CPUINFO_CACHE_UNIFIED,
};
break;
#endif /* CPUINFO_ARCH_X86 */
@@ -1072,8 +1170,10 @@ void cpuinfo_x86_decode_cache_descriptor(
cache->l2 = (struct cpuinfo_x86_cache) {
.size = 512 * 1024,
.associativity = 8,
+ .sets = 1024,
+ .partitions = 1,
.line_size = 64,
- .flags = CPUINFO_CACHE_INCLUSIVE
+ .flags = CPUINFO_CACHE_INCLUSIVE,
};
}
break;
@@ -1087,8 +1187,10 @@ void cpuinfo_x86_decode_cache_descriptor(
cache->l2 = (struct cpuinfo_x86_cache) {
.size = 256 * 1024,
.associativity = 4,
+ .sets = 2048,
+ .partitions = 1,
.line_size = 32,
- .flags = CPUINFO_CACHE_INCLUSIVE
+ .flags = CPUINFO_CACHE_INCLUSIVE,
};
break;
case 0x83:
@@ -1101,8 +1203,10 @@ void cpuinfo_x86_decode_cache_descriptor(
cache->l2 = (struct cpuinfo_x86_cache) {
.size = 512 * 1024,
.associativity = 8,
+ .sets = 2048,
+ .partitions = 1,
.line_size = 32,
- .flags = CPUINFO_CACHE_INCLUSIVE
+ .flags = CPUINFO_CACHE_INCLUSIVE,
};
break;
case 0x84:
@@ -1115,8 +1219,10 @@ void cpuinfo_x86_decode_cache_descriptor(
cache->l2 = (struct cpuinfo_x86_cache) {
.size = 1024 * 1024,
.associativity = 8,
+ .sets = 4096,
+ .partitions = 1,
.line_size = 32,
- .flags = CPUINFO_CACHE_INCLUSIVE
+ .flags = CPUINFO_CACHE_INCLUSIVE,
};
break;
case 0x85:
@@ -1129,8 +1235,10 @@ void cpuinfo_x86_decode_cache_descriptor(
cache->l2 = (struct cpuinfo_x86_cache) {
.size = 2 * 1024 * 1024,
.associativity = 8,
+ .sets = 8192,
+ .partitions = 1,
.line_size = 32,
- .flags = CPUINFO_CACHE_INCLUSIVE
+ .flags = CPUINFO_CACHE_INCLUSIVE,
};
break;
case 0x86:
@@ -1143,8 +1251,10 @@ void cpuinfo_x86_decode_cache_descriptor(
cache->l2 = (struct cpuinfo_x86_cache) {
.size = 512 * 1024,
.associativity = 4,
+ .sets = 2048,
+ .partitions = 1,
.line_size = 64,
- .flags = CPUINFO_CACHE_INCLUSIVE
+ .flags = CPUINFO_CACHE_INCLUSIVE,
};
break;
case 0x87:
@@ -1157,8 +1267,10 @@ void cpuinfo_x86_decode_cache_descriptor(
cache->l2 = (struct cpuinfo_x86_cache) {
.size = 1024 * 1024,
.associativity = 8,
+ .sets = 2048,
+ .partitions = 1,
.line_size = 64,
- .flags = CPUINFO_CACHE_INCLUSIVE
+ .flags = CPUINFO_CACHE_INCLUSIVE,
};
break;
case 0xA0:
@@ -1169,7 +1281,7 @@ void cpuinfo_x86_decode_cache_descriptor(
*dtlb_4KB = (struct cpuinfo_tlb) {
.entries = 32,
.associativity = 32,
- .pages = CPUINFO_PAGE_SIZE_4KB
+ .pages = CPUINFO_PAGE_SIZE_4KB,
};
break;
case 0xB0:
@@ -1182,7 +1294,7 @@ void cpuinfo_x86_decode_cache_descriptor(
*itlb_4KB = (struct cpuinfo_tlb) {
.entries = 128,
.associativity = 4,
- .pages = CPUINFO_PAGE_SIZE_4KB
+ .pages = CPUINFO_PAGE_SIZE_4KB,
};
break;
case 0xB1:
@@ -1195,12 +1307,12 @@ void cpuinfo_x86_decode_cache_descriptor(
*itlb_2MB = (struct cpuinfo_tlb) {
.entries = 8,
.associativity = 4,
- .pages = CPUINFO_PAGE_SIZE_2MB | CPUINFO_PAGE_SIZE_4MB
+ .pages = CPUINFO_PAGE_SIZE_2MB | CPUINFO_PAGE_SIZE_4MB,
};
*itlb_4MB = (struct cpuinfo_tlb) {
.entries = 4,
.associativity = 4,
- .pages = CPUINFO_PAGE_SIZE_2MB | CPUINFO_PAGE_SIZE_4MB
+ .pages = CPUINFO_PAGE_SIZE_2MB | CPUINFO_PAGE_SIZE_4MB,
};
break;
case 0xB2:
@@ -1213,7 +1325,7 @@ void cpuinfo_x86_decode_cache_descriptor(
*itlb_4KB = (struct cpuinfo_tlb) {
.entries = 64,
.associativity = 4,
- .pages = CPUINFO_PAGE_SIZE_4KB
+ .pages = CPUINFO_PAGE_SIZE_4KB,
};
break;
case 0xB3:
@@ -1226,7 +1338,7 @@ void cpuinfo_x86_decode_cache_descriptor(
*dtlb_4KB = (struct cpuinfo_tlb) {
.entries = 128,
.associativity = 4,
- .pages = CPUINFO_PAGE_SIZE_4KB
+ .pages = CPUINFO_PAGE_SIZE_4KB,
};
break;
case 0xB4:
@@ -1239,7 +1351,7 @@ void cpuinfo_x86_decode_cache_descriptor(
*dtlb_4KB = (struct cpuinfo_tlb) {
.entries = 256,
.associativity = 4,
- .pages = CPUINFO_PAGE_SIZE_4KB
+ .pages = CPUINFO_PAGE_SIZE_4KB,
};
break;
case 0xB5:
@@ -1250,7 +1362,7 @@ void cpuinfo_x86_decode_cache_descriptor(
*itlb_4KB = (struct cpuinfo_tlb) {
.entries = 64,
.associativity = 8,
- .pages = CPUINFO_PAGE_SIZE_4KB
+ .pages = CPUINFO_PAGE_SIZE_4KB,
};
break;
case 0xB6:
@@ -1261,7 +1373,7 @@ void cpuinfo_x86_decode_cache_descriptor(
*itlb_4KB = (struct cpuinfo_tlb) {
.entries = 128,
.associativity = 8,
- .pages = CPUINFO_PAGE_SIZE_4KB
+ .pages = CPUINFO_PAGE_SIZE_4KB,
};
break;
case 0xBA:
@@ -1274,7 +1386,7 @@ void cpuinfo_x86_decode_cache_descriptor(
*itlb_4KB = (struct cpuinfo_tlb) {
.entries = 64,
.associativity = 4,
- .pages = CPUINFO_PAGE_SIZE_4KB
+ .pages = CPUINFO_PAGE_SIZE_4KB,
};
break;
case 0xC0:
@@ -1287,7 +1399,7 @@ void cpuinfo_x86_decode_cache_descriptor(
*itlb_4KB = *itlb_4MB = (struct cpuinfo_tlb) {
.entries = 8,
.associativity = 4,
- .pages = CPUINFO_PAGE_SIZE_4KB | CPUINFO_PAGE_SIZE_4MB
+ .pages = CPUINFO_PAGE_SIZE_4KB | CPUINFO_PAGE_SIZE_4MB,
};
break;
case 0xC1:
@@ -1298,7 +1410,7 @@ void cpuinfo_x86_decode_cache_descriptor(
*stlb2_4KB = *stlb2_2MB = (struct cpuinfo_tlb) {
.entries = 1024,
.associativity = 8,
- .pages = CPUINFO_PAGE_SIZE_4KB | CPUINFO_PAGE_SIZE_2MB
+ .pages = CPUINFO_PAGE_SIZE_4KB | CPUINFO_PAGE_SIZE_2MB,
};
break;
case 0xC2:
@@ -1309,7 +1421,7 @@ void cpuinfo_x86_decode_cache_descriptor(
*dtlb_4KB = *dtlb_2MB = (struct cpuinfo_tlb) {
.entries = 16,
.associativity = 4,
- .pages = CPUINFO_PAGE_SIZE_4KB | CPUINFO_PAGE_SIZE_2MB
+ .pages = CPUINFO_PAGE_SIZE_4KB | CPUINFO_PAGE_SIZE_2MB,
};
break;
case 0xC3:
@@ -1321,12 +1433,12 @@ void cpuinfo_x86_decode_cache_descriptor(
*stlb2_4KB = *stlb2_2MB = (struct cpuinfo_tlb) {
.entries = 1536,
.associativity = 6,
- .pages = CPUINFO_PAGE_SIZE_4KB | CPUINFO_PAGE_SIZE_2MB
+ .pages = CPUINFO_PAGE_SIZE_4KB | CPUINFO_PAGE_SIZE_2MB,
};
*stlb2_1GB = (struct cpuinfo_tlb) {
.entries = 16,
.associativity = 4,
- .pages = CPUINFO_PAGE_SIZE_1GB
+ .pages = CPUINFO_PAGE_SIZE_1GB,
};
break;
case 0xC4:
@@ -1337,7 +1449,7 @@ void cpuinfo_x86_decode_cache_descriptor(
*dtlb_2MB = *dtlb_4MB = (struct cpuinfo_tlb) {
.entries = 32,
.associativity = 4,
- .pages = CPUINFO_PAGE_SIZE_2MB | CPUINFO_PAGE_SIZE_4MB
+ .pages = CPUINFO_PAGE_SIZE_2MB | CPUINFO_PAGE_SIZE_4MB,
};
break;
case 0xCA:
@@ -1350,7 +1462,7 @@ void cpuinfo_x86_decode_cache_descriptor(
*stlb2_4KB = (struct cpuinfo_tlb) {
.entries = 512,
.associativity = 4,
- .pages = CPUINFO_PAGE_SIZE_4KB
+ .pages = CPUINFO_PAGE_SIZE_4KB,
};
break;
case 0xD0:
@@ -1363,8 +1475,10 @@ void cpuinfo_x86_decode_cache_descriptor(
cache->l3 = (struct cpuinfo_x86_cache) {
.size = 512 * 1024,
.associativity = 4,
+ .sets = 2048,
+ .partitions = 1,
.line_size = 64,
- .flags = CPUINFO_CACHE_INCLUSIVE
+ .flags = CPUINFO_CACHE_INCLUSIVE,
};
break;
case 0xD1:
@@ -1377,8 +1491,10 @@ void cpuinfo_x86_decode_cache_descriptor(
cache->l3 = (struct cpuinfo_x86_cache) {
.size = 1024 * 1024,
.associativity = 4,
+ .sets = 4096,
+ .partitions = 1,
.line_size = 64,
- .flags = CPUINFO_CACHE_INCLUSIVE
+ .flags = CPUINFO_CACHE_INCLUSIVE,
};
break;
case 0xD2:
@@ -1391,8 +1507,10 @@ void cpuinfo_x86_decode_cache_descriptor(
cache->l3 = (struct cpuinfo_x86_cache) {
.size = 2 * 1024 * 2014,
.associativity = 4,
+ .sets = 8192,
+ .partitions = 1,
.line_size = 64,
- .flags = CPUINFO_CACHE_INCLUSIVE
+ .flags = CPUINFO_CACHE_INCLUSIVE,
};
break;
case 0xD6:
@@ -1405,8 +1523,10 @@ void cpuinfo_x86_decode_cache_descriptor(
cache->l3 = (struct cpuinfo_x86_cache) {
.size = 1024 * 1024,
.associativity = 8,
- .line_size = 8,
- .flags = CPUINFO_CACHE_INCLUSIVE
+ .sets = 2048,
+ .partitions = 1,
+ .line_size = 64,
+ .flags = CPUINFO_CACHE_INCLUSIVE,
};
break;
case 0xD7:
@@ -1419,8 +1539,10 @@ void cpuinfo_x86_decode_cache_descriptor(
cache->l3 = (struct cpuinfo_x86_cache) {
.size = 2 * 1024 * 1024,
.associativity = 8,
+ .sets = 4096,
+ .partitions = 1,
.line_size = 64,
- .flags = CPUINFO_CACHE_INCLUSIVE
+ .flags = CPUINFO_CACHE_INCLUSIVE,
};
break;
case 0xD8:
@@ -1433,8 +1555,10 @@ void cpuinfo_x86_decode_cache_descriptor(
cache->l3 = (struct cpuinfo_x86_cache) {
.size = 4 * 1024 * 1024,
.associativity = 8,
+ .sets = 8192,
+ .partitions = 1,
.line_size = 64,
- .flags = CPUINFO_CACHE_INCLUSIVE
+ .flags = CPUINFO_CACHE_INCLUSIVE,
};
break;
case 0xDC:
@@ -1447,8 +1571,10 @@ void cpuinfo_x86_decode_cache_descriptor(
cache->l3 = (struct cpuinfo_x86_cache) {
.size = 3 * 512 * 1024,
.associativity = 12,
+ .sets = 2048,
+ .partitions = 1,
.line_size = 64,
- .flags = CPUINFO_CACHE_INCLUSIVE
+ .flags = CPUINFO_CACHE_INCLUSIVE,
};
break;
case 0xDD:
@@ -1461,8 +1587,10 @@ void cpuinfo_x86_decode_cache_descriptor(
cache->l3 = (struct cpuinfo_x86_cache) {
.size = 3 * 1024 * 1024,
.associativity = 12,
+ .sets = 4096,
+ .partitions = 1,
.line_size = 64,
- .flags = CPUINFO_CACHE_INCLUSIVE
+ .flags = CPUINFO_CACHE_INCLUSIVE,
};
break;
case 0xDE:
@@ -1475,8 +1603,10 @@ void cpuinfo_x86_decode_cache_descriptor(
cache->l3 = (struct cpuinfo_x86_cache) {
.size = 6 * 1024 * 1024,
.associativity = 12,
+ .sets = 8192,
+ .partitions = 1,
.line_size = 64,
- .flags = CPUINFO_CACHE_INCLUSIVE
+ .flags = CPUINFO_CACHE_INCLUSIVE,
};
break;
case 0xE2:
@@ -1489,8 +1619,10 @@ void cpuinfo_x86_decode_cache_descriptor(
cache->l3 = (struct cpuinfo_x86_cache) {
.size = 2 * 1024 * 1024,
.associativity = 16,
+ .sets = 2048,
+ .partitions = 1,
.line_size = 64,
- .flags = CPUINFO_CACHE_INCLUSIVE
+ .flags = CPUINFO_CACHE_INCLUSIVE,
};
break;
case 0xE3:
@@ -1503,8 +1635,10 @@ void cpuinfo_x86_decode_cache_descriptor(
cache->l3 = (struct cpuinfo_x86_cache) {
.size = 4 * 1024 * 1024,
.associativity = 16,
+ .sets = 4096,
+ .partitions = 1,
.line_size = 64,
- .flags = CPUINFO_CACHE_INCLUSIVE
+ .flags = CPUINFO_CACHE_INCLUSIVE,
};
break;
case 0xE4:
@@ -1517,8 +1651,10 @@ void cpuinfo_x86_decode_cache_descriptor(
cache->l3 = (struct cpuinfo_x86_cache) {
.size = 8 * 1024 * 1024,
.associativity = 16,
+ .sets = 8192,
+ .partitions = 1,
.line_size = 64,
- .flags = CPUINFO_CACHE_INCLUSIVE
+ .flags = CPUINFO_CACHE_INCLUSIVE,
};
break;
case 0xEA:
@@ -1531,8 +1667,10 @@ void cpuinfo_x86_decode_cache_descriptor(
cache->l3 = (struct cpuinfo_x86_cache) {
.size = 12 * 1024 * 1024,
.associativity = 24,
+ .sets = 8192,
+ .partitions = 1,
.line_size = 64,
- .flags = CPUINFO_CACHE_INCLUSIVE
+ .flags = CPUINFO_CACHE_INCLUSIVE,
};
break;
case 0xEB:
@@ -1545,8 +1683,10 @@ void cpuinfo_x86_decode_cache_descriptor(
cache->l3 = (struct cpuinfo_x86_cache) {
.size = 18 * 1024 * 1024,
.associativity = 24,
+ .sets = 12288,
+ .partitions = 1,
.line_size = 64,
- .flags = CPUINFO_CACHE_INCLUSIVE
+ .flags = CPUINFO_CACHE_INCLUSIVE,
};
break;
case 0xEC:
@@ -1559,8 +1699,10 @@ void cpuinfo_x86_decode_cache_descriptor(
cache->l3 = (struct cpuinfo_x86_cache) {
.size = 24 * 1024 * 1024,
.associativity = 24,
+ .sets = 16384,
+ .partitions = 1,
.line_size = 64,
- .flags = CPUINFO_CACHE_INCLUSIVE
+ .flags = CPUINFO_CACHE_INCLUSIVE,
};
break;
case 0xF0: