aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarat Dukhan <marat@fb.com>2018-03-08 13:06:40 -0800
committerMarat Dukhan <marat@fb.com>2018-03-08 13:10:41 -0800
commitab7f9492d8f971887777c2deb31638db409651d1 (patch)
treeeb59c8ac69f0e4ad000d55cfa484880e0d80c3fe
parentf1662429eba7728f15587593aca092b103cca124 (diff)
downloadcpuinfo-ab7f9492d8f971887777c2deb31638db409651d1.tar.gz
Work around for Exynos 5260 misreported as Exynos 5420
-rw-r--r--src/arm/linux/chipset.c14
-rw-r--r--test/name/proc-cpuinfo-hardware.cc4
-rw-r--r--test/name/ro-arch.cc2
-rw-r--r--test/name/ro-chipname.cc2
-rw-r--r--test/name/ro-product-board.cc2
5 files changed, 19 insertions, 5 deletions
diff --git a/src/arm/linux/chipset.c b/src/arm/linux/chipset.c
index d803f4b..9f306c2 100644
--- a/src/arm/linux/chipset.c
+++ b/src/arm/linux/chipset.c
@@ -3077,6 +3077,20 @@ void cpuinfo_arm_fixup_chipset(
/* Exynos 4410 was renamed to Exynos 4412 */
chipset->model = 4412;
break;
+ case 5420:
+ /* Common bug: Exynos 5260 (Hexa-core) reported as Exynos 5420 (Quad-core) */
+ switch (cores) {
+ case 4:
+ break;
+ case 6:
+ cpuinfo_log_info("reinterpreted Exynos 5420 chipset with 6 cores as Exynos 5260");
+ chipset->model = 5260;
+ break;
+ default:
+ cpuinfo_log_warning("system reported invalid %"PRIu32"-core Exynos 5420 chipset", cores);
+ chipset->model = 0;
+ }
+ break;
case 7580:
/* Common bug: Exynos 7578 (Quad-core) reported as Exynos 7580 (Octa-core) */
switch (cores) {
diff --git a/test/name/proc-cpuinfo-hardware.cc b/test/name/proc-cpuinfo-hardware.cc
index 1808422..cf7ebf2 100644
--- a/test/name/proc-cpuinfo-hardware.cc
+++ b/test/name/proc-cpuinfo-hardware.cc
@@ -495,7 +495,7 @@ TEST(PROC_CPUINFO_HARDWARE, samsung_exynos) {
EXPECT_EQ("Samsung Exynos 4415",
parse_proc_cpuinfo_hardware("Samsung EXYNOS4415"));
EXPECT_EQ("Samsung Exynos 5420",
- parse_proc_cpuinfo_hardware("Samsung EXYNOS5420"));
+ parse_proc_cpuinfo_hardware("Samsung EXYNOS5420", 4));
EXPECT_EQ("Samsung Exynos 5430",
parse_proc_cpuinfo_hardware("Samsung EXYNOS5430"));
EXPECT_EQ("Samsung Exynos 5433",
@@ -518,7 +518,7 @@ TEST(PROC_CPUINFO_HARDWARE, samsung_universal) {
EXPECT_EQ("Samsung Exynos 5410",
parse_proc_cpuinfo_hardware("UNIVERSAL5410"));
EXPECT_EQ("Samsung Exynos 5420",
- parse_proc_cpuinfo_hardware("UNIVERSAL5420"));
+ parse_proc_cpuinfo_hardware("UNIVERSAL5420", 4));
EXPECT_EQ("Samsung Exynos 5422",
parse_proc_cpuinfo_hardware("universal5422"));
EXPECT_EQ("Samsung Exynos 5430",
diff --git a/test/name/ro-arch.cc b/test/name/ro-arch.cc
index cfdb268..af5746c 100644
--- a/test/name/ro-arch.cc
+++ b/test/name/ro-arch.cc
@@ -37,7 +37,7 @@ TEST(RO_ARCH, samsung_exynos) {
EXPECT_EQ("Samsung Exynos 5410",
parse_ro_arch("exynos5410"));
EXPECT_EQ("Samsung Exynos 5420",
- parse_ro_arch("exynos5420"));
+ parse_ro_arch("exynos5420", 4));
EXPECT_EQ("Samsung Exynos 5422",
parse_ro_arch("exynos5422"));
EXPECT_EQ("Samsung Exynos 5430",
diff --git a/test/name/ro-chipname.cc b/test/name/ro-chipname.cc
index 983fcd9..7f82ade 100644
--- a/test/name/ro-chipname.cc
+++ b/test/name/ro-chipname.cc
@@ -128,7 +128,7 @@ TEST(RO_CHIPNAME, samsung_exynos) {
EXPECT_EQ("Samsung Exynos 5410",
parse_ro_chipname("exynos5410"));
EXPECT_EQ("Samsung Exynos 5420",
- parse_ro_chipname("exynos5420"));
+ parse_ro_chipname("exynos5420", 4));
EXPECT_EQ("Samsung Exynos 5422",
parse_ro_chipname("exynos5422"));
EXPECT_EQ("Samsung Exynos 5430",
diff --git a/test/name/ro-product-board.cc b/test/name/ro-product-board.cc
index ae2e8d6..3c99acf 100644
--- a/test/name/ro-product-board.cc
+++ b/test/name/ro-product-board.cc
@@ -275,7 +275,7 @@ TEST(RO_PRODUCT_BOARD, samsung_universal) {
EXPECT_EQ("Samsung Exynos 5410",
parse_ro_product_board("universal5410"));
EXPECT_EQ("Samsung Exynos 5420",
- parse_ro_product_board("universal5420"));
+ parse_ro_product_board("universal5420", 4));
EXPECT_EQ("Samsung Exynos 5422",
parse_ro_product_board("universal5422"));
EXPECT_EQ("Samsung Exynos 5430",