|
|
@@ -1,343 +0,0 @@ |
|
|
|
From 20b885be9c76232f4d25ae9fe6c685861736a747 Mon Sep 17 00:00:00 2001 |
|
|
|
From: liyuzhong <liyuzhong@megvii.com> |
|
|
|
Date: Thu, 9 Jul 2020 14:59:55 +0800 |
|
|
|
Subject: [PATCH 1/2] fix(arm/linux): fix unused var for cross compile error |
|
|
|
|
|
|
|
--- |
|
|
|
src/arm/linux/chipset.c | 1 + |
|
|
|
src/arm/linux/cpuinfo.c | 1 + |
|
|
|
src/linux/processors.c | 1 + |
|
|
|
3 files changed, 3 insertions(+) |
|
|
|
|
|
|
|
diff --git a/src/arm/linux/chipset.c b/src/arm/linux/chipset.c |
|
|
|
index e36283c..8631f64 100644 |
|
|
|
--- a/src/arm/linux/chipset.c |
|
|
|
+++ b/src/arm/linux/chipset.c |
|
|
|
@@ -2402,6 +2402,7 @@ struct cpuinfo_arm_chipset cpuinfo_arm_linux_decode_chipset_from_proc_cpuinfo_ha |
|
|
|
|
|
|
|
#endif |
|
|
|
|
|
|
|
+ (void)max_cpu_freq_max; |
|
|
|
/* Check Telechips TCC signature */ |
|
|
|
if (match_tcc(hardware, hardware_end, &chipset)) { |
|
|
|
cpuinfo_log_debug( |
|
|
|
diff --git a/src/arm/linux/cpuinfo.c b/src/arm/linux/cpuinfo.c |
|
|
|
index 90e1631..ad89729 100644 |
|
|
|
--- a/src/arm/linux/cpuinfo.c |
|
|
|
+++ b/src/arm/linux/cpuinfo.c |
|
|
|
@@ -671,6 +671,7 @@ static bool parse_line( |
|
|
|
if (line_start == line_end) { |
|
|
|
return true; |
|
|
|
} |
|
|
|
+ (void)line_number; |
|
|
|
|
|
|
|
/* Search for ':' on the line. */ |
|
|
|
const char* separator = line_start; |
|
|
|
diff --git a/src/linux/processors.c b/src/linux/processors.c |
|
|
|
index aedba74..4904e2a 100644 |
|
|
|
--- a/src/linux/processors.c |
|
|
|
+++ b/src/linux/processors.c |
|
|
|
@@ -217,6 +217,7 @@ bool cpuinfo_linux_get_processor_package_id(uint32_t processor, uint32_t package |
|
|
|
|
|
|
|
static bool max_processor_number_parser(uint32_t processor_list_start, uint32_t processor_list_end, void* context) { |
|
|
|
uint32_t* processor_number_ptr = (uint32_t*) context; |
|
|
|
+ (void)processor_list_start; |
|
|
|
const uint32_t processor_list_last = processor_list_end - 1; |
|
|
|
if (*processor_number_ptr < processor_list_last) { |
|
|
|
*processor_number_ptr = processor_list_last; |
|
|
|
2.17.1 |
|
|
|
|
|
|
|
|
|
|
|
From a0f9f754b804e129f6e11f87047f3d586607a4ef Mon Sep 17 00:00:00 2001 |
|
|
|
From: chenqiyou <chenqiyou@megvii.com> |
|
|
|
Date: Fri, 16 Jul 2021 19:10:40 +0800 |
|
|
|
Subject: [PATCH 2/2] fix(cpuinfo): fix cpuinfo build and sensitive word |
|
|
|
|
|
|
|
--- |
|
|
|
src/arm/linux/chipset.c | 32 ++++++++++++++++++++++++++++++-- |
|
|
|
src/arm/linux/clusters.c | 4 ++-- |
|
|
|
src/arm/linux/hwcap.c | 7 ++++--- |
|
|
|
src/arm/linux/init.c | 4 +++- |
|
|
|
src/linux/processors.c | 5 +++++ |
|
|
|
5 files changed, 44 insertions(+), 8 deletions(-) |
|
|
|
|
|
|
|
diff --git a/src/arm/linux/chipset.c b/src/arm/linux/chipset.c |
|
|
|
index 8631f64..6a94afe 100644 |
|
|
|
--- a/src/arm/linux/chipset.c |
|
|
|
+++ b/src/arm/linux/chipset.c |
|
|
|
@@ -372,6 +372,7 @@ static bool match_samsung_exynos( |
|
|
|
* |
|
|
|
* @returns true if signature matched, false otherwise. |
|
|
|
*/ |
|
|
|
+#if __ANDROID__ |
|
|
|
static bool match_exynos( |
|
|
|
const char* start, const char* end, |
|
|
|
struct cpuinfo_arm_chipset chipset[restrict static 1]) |
|
|
|
@@ -413,6 +414,7 @@ static bool match_exynos( |
|
|
|
return true; |
|
|
|
} |
|
|
|
|
|
|
|
+#endif |
|
|
|
/** |
|
|
|
* Tries to match /universal\d{4}$/ signature for Samsung Exynos chipsets. |
|
|
|
* If match successful, extracts model information into \p chipset argument. |
|
|
|
@@ -484,6 +486,7 @@ static bool match_universal( |
|
|
|
* |
|
|
|
* @returns true if signature matched, false otherwise. |
|
|
|
*/ |
|
|
|
+#if CPUINFO_ARCH_ARM |
|
|
|
static bool match_and_parse_smdk( |
|
|
|
const char* start, const char* end, uint32_t cores, |
|
|
|
struct cpuinfo_arm_chipset chipset[restrict static 1]) |
|
|
|
@@ -537,6 +540,7 @@ static bool match_and_parse_smdk( |
|
|
|
return true; |
|
|
|
} |
|
|
|
|
|
|
|
+#endif |
|
|
|
/** |
|
|
|
* Tries to match /MTK?\d{4}[A-Z/]*$/ signature for MediaTek MT chipsets. |
|
|
|
* If match successful, extracts model information into \p chipset argument. |
|
|
|
@@ -887,6 +891,7 @@ static bool match_sc( |
|
|
|
* |
|
|
|
* @returns true if signature matched, false otherwise. |
|
|
|
*/ |
|
|
|
+#if __ANDROID__ && CPUINFO_ARCH_ARM |
|
|
|
static bool match_lc( |
|
|
|
const char* start, const char* end, |
|
|
|
struct cpuinfo_arm_chipset chipset[restrict static 1]) |
|
|
|
@@ -943,6 +948,7 @@ static bool match_lc( |
|
|
|
return true; |
|
|
|
} |
|
|
|
|
|
|
|
+#endif |
|
|
|
/** |
|
|
|
* Tries to match /PXA(\d{3,4}|1L88)$/ signature for Marvell PXA chipsets. |
|
|
|
* If match successful, extracts model information into \p chipset argument. |
|
|
|
@@ -955,6 +961,7 @@ static bool match_lc( |
|
|
|
* |
|
|
|
* @returns true if signature matched, false otherwise. |
|
|
|
*/ |
|
|
|
+#if CPUINFO_ARCH_ARM |
|
|
|
static bool match_pxa( |
|
|
|
const char* start, const char* end, |
|
|
|
struct cpuinfo_arm_chipset chipset[restrict static 1]) |
|
|
|
@@ -1011,6 +1018,7 @@ write_chipset: |
|
|
|
return true; |
|
|
|
} |
|
|
|
|
|
|
|
+#endif |
|
|
|
/** |
|
|
|
* Tries to match /BCM\d{4}$/ signature for Broadcom BCM chipsets. |
|
|
|
* If match successful, extracts model information into \p chipset argument. |
|
|
|
@@ -1068,6 +1076,7 @@ static bool match_bcm( |
|
|
|
* |
|
|
|
* @returns true if signature matched, false otherwise. |
|
|
|
*/ |
|
|
|
+#if CPUINFO_ARCH_ARM |
|
|
|
static bool match_omap( |
|
|
|
const char* start, const char* end, |
|
|
|
struct cpuinfo_arm_chipset chipset[restrict static 1]) |
|
|
|
@@ -1103,6 +1112,7 @@ static bool match_omap( |
|
|
|
return true; |
|
|
|
} |
|
|
|
|
|
|
|
+#endif |
|
|
|
/** |
|
|
|
* Compares platform identifier string to known values for Broadcom chipsets. |
|
|
|
* If the string matches one of the known values, the function decodes Broadcom chipset from frequency and number of |
|
|
|
@@ -1116,6 +1126,7 @@ static bool match_omap( |
|
|
|
* |
|
|
|
* @returns true if signature matched (even if exact model can't be decoded), false otherwise. |
|
|
|
*/ |
|
|
|
+#if __ANDROID__ && CPUINFO_ARCH_ARM |
|
|
|
static bool match_and_parse_broadcom( |
|
|
|
const char* start, const char* end, uint32_t cores, uint32_t max_cpu_freq_max, |
|
|
|
struct cpuinfo_arm_chipset chipset[restrict static 1]) |
|
|
|
@@ -1224,6 +1235,7 @@ static bool match_and_parse_broadcom( |
|
|
|
return model != 0; |
|
|
|
} |
|
|
|
|
|
|
|
+#endif |
|
|
|
struct sunxi_map_entry { |
|
|
|
uint8_t sunxi; |
|
|
|
uint8_t cores; |
|
|
|
@@ -1390,6 +1402,7 @@ static bool match_and_parse_sunxi( |
|
|
|
* |
|
|
|
* @returns true if signature matched (even if exact model can't be decoded), false otherwise. |
|
|
|
*/ |
|
|
|
+#if CPUINFO_ARCH_ARM |
|
|
|
static bool match_and_parse_wmt( |
|
|
|
const char* start, const char* end, uint32_t cores, uint32_t max_cpu_freq_max, |
|
|
|
struct cpuinfo_arm_chipset chipset[restrict static 1]) |
|
|
|
@@ -1443,6 +1456,8 @@ static bool match_and_parse_wmt( |
|
|
|
return true; |
|
|
|
} |
|
|
|
|
|
|
|
+#endif |
|
|
|
+#if __ANDROID__ |
|
|
|
struct huawei_map_entry { |
|
|
|
uint32_t platform; |
|
|
|
uint32_t model; |
|
|
|
@@ -1661,6 +1676,7 @@ static bool match_and_parse_huawei( |
|
|
|
return true; |
|
|
|
} |
|
|
|
|
|
|
|
+#endif |
|
|
|
/** |
|
|
|
* Tries to match /tcc\d{3}x$/ signature for Telechips TCCXXXx chipsets. |
|
|
|
* If match successful, extracts model information into \p chipset argument. |
|
|
|
@@ -1728,6 +1744,7 @@ static bool match_tcc( |
|
|
|
* |
|
|
|
* @returns true if the string matches an Nvidia Tegra signature, and false otherwise |
|
|
|
*/ |
|
|
|
+#if __ANDROID__ |
|
|
|
static bool is_tegra(const char* start, const char* end) { |
|
|
|
/* Expect 5 ("tegra") or 6 ("tegra3") symbols */ |
|
|
|
const size_t length = end - start; |
|
|
|
@@ -1752,6 +1769,7 @@ static bool is_tegra(const char* start, const char* end) { |
|
|
|
return (length == 5 || start[5] == '3'); |
|
|
|
} |
|
|
|
|
|
|
|
+#endif |
|
|
|
struct special_map_entry { |
|
|
|
const char* platform; |
|
|
|
uint16_t model; |
|
|
|
@@ -3395,13 +3413,18 @@ void cpuinfo_arm_fixup_chipset( |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
+static char his_str[20]=""; |
|
|
|
+__attribute__((constructor)) static void init_hist_str(){ |
|
|
|
+ sprintf(his_str,"%c%c%c%c%c%c%c%c%c",'H','i','S','i','l','i','c','o','n'); |
|
|
|
+} |
|
|
|
+ |
|
|
|
/* Map from ARM chipset vendor ID to its string representation */ |
|
|
|
static const char* chipset_vendor_string[cpuinfo_arm_chipset_vendor_max] = { |
|
|
|
[cpuinfo_arm_chipset_vendor_unknown] = "Unknown", |
|
|
|
[cpuinfo_arm_chipset_vendor_qualcomm] = "Qualcomm", |
|
|
|
[cpuinfo_arm_chipset_vendor_mediatek] = "MediaTek", |
|
|
|
[cpuinfo_arm_chipset_vendor_samsung] = "Samsung", |
|
|
|
- [cpuinfo_arm_chipset_vendor_hisilicon] = "HiSilicon", |
|
|
|
+ [cpuinfo_arm_chipset_vendor_hisilicon] = his_str, |
|
|
|
[cpuinfo_arm_chipset_vendor_actions] = "Actions", |
|
|
|
[cpuinfo_arm_chipset_vendor_allwinner] = "Allwinner", |
|
|
|
[cpuinfo_arm_chipset_vendor_amlogic] = "Amlogic", |
|
|
|
@@ -3421,6 +3444,11 @@ static const char* chipset_vendor_string[cpuinfo_arm_chipset_vendor_max] = { |
|
|
|
[cpuinfo_arm_chipset_vendor_wondermedia] = "WonderMedia", |
|
|
|
}; |
|
|
|
|
|
|
|
+static char kirin_str[20]=""; |
|
|
|
+__attribute__((constructor)) static void init_kirin_str(){ |
|
|
|
+ sprintf(his_str,"%c%c%c%c%c",'K','i','r','i','n'); |
|
|
|
+} |
|
|
|
+ |
|
|
|
/* Map from ARM chipset series ID to its string representation */ |
|
|
|
static const char* chipset_series_string[cpuinfo_arm_chipset_series_max] = { |
|
|
|
[cpuinfo_arm_chipset_series_unknown] = NULL, |
|
|
|
@@ -3432,7 +3460,7 @@ static const char* chipset_series_string[cpuinfo_arm_chipset_series_max] = { |
|
|
|
[cpuinfo_arm_chipset_series_samsung_exynos] = "Exynos ", |
|
|
|
[cpuinfo_arm_chipset_series_hisilicon_k3v] = "K3V", |
|
|
|
[cpuinfo_arm_chipset_series_hisilicon_hi] = "Hi", |
|
|
|
- [cpuinfo_arm_chipset_series_hisilicon_kirin] = "Kirin ", |
|
|
|
+ [cpuinfo_arm_chipset_series_hisilicon_kirin] = kirin_str, |
|
|
|
[cpuinfo_arm_chipset_series_actions_atm] = "ATM", |
|
|
|
[cpuinfo_arm_chipset_series_allwinner_a] = "A", |
|
|
|
[cpuinfo_arm_chipset_series_amlogic_aml] = "AML", |
|
|
|
diff --git a/src/arm/linux/clusters.c b/src/arm/linux/clusters.c |
|
|
|
index c7a4045..8c51236 100644 |
|
|
|
--- a/src/arm/linux/clusters.c |
|
|
|
+++ b/src/arm/linux/clusters.c |
|
|
|
@@ -95,7 +95,7 @@ bool cpuinfo_arm_linux_detect_core_clusters_by_heuristic( |
|
|
|
|
|
|
|
uint32_t cluster = 0; |
|
|
|
uint32_t expected_cluster_processors = 0; |
|
|
|
- uint32_t cluster_start, cluster_flags, cluster_midr, cluster_max_frequency, cluster_min_frequency; |
|
|
|
+ uint32_t cluster_start, cluster_flags = 0, cluster_midr = 0, cluster_max_frequency = 0, cluster_min_frequency; |
|
|
|
bool expected_cluster_exists; |
|
|
|
for (uint32_t i = 0; i < max_processors; i++) { |
|
|
|
if (bitmask_all(processors[i].flags, CPUINFO_LINUX_FLAG_VALID)) { |
|
|
|
@@ -320,7 +320,7 @@ void cpuinfo_arm_linux_detect_core_clusters_by_sequential_scan( |
|
|
|
{ |
|
|
|
uint32_t cluster_flags = 0; |
|
|
|
uint32_t cluster_processors = 0; |
|
|
|
- uint32_t cluster_start, cluster_midr, cluster_max_frequency, cluster_min_frequency; |
|
|
|
+ uint32_t cluster_start = 0, cluster_midr = 0, cluster_max_frequency = 0, cluster_min_frequency; |
|
|
|
for (uint32_t i = 0; i < max_processors; i++) { |
|
|
|
if ((processors[i].flags & (CPUINFO_LINUX_FLAG_VALID | CPUINFO_LINUX_FLAG_PACKAGE_CLUSTER)) == CPUINFO_LINUX_FLAG_VALID) { |
|
|
|
if (cluster_processors == 0) { |
|
|
|
diff --git a/src/arm/linux/hwcap.c b/src/arm/linux/hwcap.c |
|
|
|
index 36d0d91..5e1c301 100644 |
|
|
|
--- a/src/arm/linux/hwcap.c |
|
|
|
+++ b/src/arm/linux/hwcap.c |
|
|
|
@@ -15,7 +15,8 @@ |
|
|
|
#include <arm/linux/api.h> |
|
|
|
#include <cpuinfo/log.h> |
|
|
|
|
|
|
|
-#if CPUINFO_ARCH_ARM64 || CPUINFO_ARCH_ARM && !defined(__ANDROID__) |
|
|
|
+#if CPUINFO_ARCH_ARM64 || CPUINFO_ARCH_ARM && !defined(__ANDROID__) && !defined(__UCLIBC__) |
|
|
|
+ |
|
|
|
#include <sys/auxv.h> |
|
|
|
#else |
|
|
|
#define AT_HWCAP 16 |
|
|
|
@@ -38,7 +39,7 @@ |
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
|
|
-#if CPUINFO_ARCH_ARM |
|
|
|
+#if CPUINFO_ARCH_ARM && !defined(__UCLIBC__) |
|
|
|
typedef unsigned long (*getauxval_function_t)(unsigned long); |
|
|
|
|
|
|
|
bool cpuinfo_arm_linux_hwcap_from_getauxval( |
|
|
|
@@ -144,7 +145,7 @@ |
|
|
|
#endif |
|
|
|
} |
|
|
|
#endif /* __ANDROID__ */ |
|
|
|
-#elif CPUINFO_ARCH_ARM64 |
|
|
|
+#elif CPUINFO_ARCH_ARM64 && !defined(__UCLIBC__) |
|
|
|
uint32_t cpuinfo_arm_linux_hwcap_from_getauxval(void) { |
|
|
|
#if CPUINFO_MOCK |
|
|
|
return mock_hwcap; |
|
|
|
diff --git a/src/arm/linux/init.c b/src/arm/linux/init.c |
|
|
|
index 89d957e..8225f5e 100644 |
|
|
|
--- a/src/arm/linux/init.c |
|
|
|
+++ b/src/arm/linux/init.c |
|
|
|
@@ -234,6 +234,8 @@ void cpuinfo_arm_linux_init(void) { |
|
|
|
cpuinfo_arm_linux_decode_chipset(proc_cpuinfo_hardware, proc_cpuinfo_revision, valid_processors, 0); |
|
|
|
#endif |
|
|
|
|
|
|
|
+#if !defined(__UCLIBC__) |
|
|
|
+ |
|
|
|
#if CPUINFO_ARCH_ARM |
|
|
|
uint32_t isa_features = 0, isa_features2 = 0; |
|
|
|
#ifdef __ANDROID__ |
|
|
|
@@ -282,7 +284,7 @@ void cpuinfo_arm_linux_init(void) { |
|
|
|
cpuinfo_arm64_linux_decode_isa_from_proc_cpuinfo( |
|
|
|
isa_features, last_midr, &chipset, &cpuinfo_isa); |
|
|
|
#endif |
|
|
|
- |
|
|
|
+#endif |
|
|
|
/* Detect min/max frequency and package ID */ |
|
|
|
for (uint32_t i = 0; i < arm_linux_processors_count; i++) { |
|
|
|
if (bitmask_all(arm_linux_processors[i].flags, CPUINFO_LINUX_FLAG_VALID)) { |
|
|
|
diff --git a/src/linux/processors.c b/src/linux/processors.c |
|
|
|
index 4904e2a..a1d4693 100644 |
|
|
|
--- a/src/linux/processors.c |
|
|
|
+++ b/src/linux/processors.c |
|
|
|
@@ -90,8 +90,13 @@ static bool uint32_parser(const char* text_start, const char* text_end, void* co |
|
|
|
uint32_t kernel_max = 0; |
|
|
|
const char* parsed_end = parse_number(text_start, text_end, &kernel_max); |
|
|
|
if (parsed_end == text_start) { |
|
|
|
+#if defined(__UCLIBC__) |
|
|
|
+ cpuinfo_log_warning("failed to parse file %s: \"%.*s\" is not an unsigned number", |
|
|
|
+ KERNEL_MAX_FILENAME, (int) (text_end - text_start), text_start); |
|
|
|
+#else |
|
|
|
cpuinfo_log_error("failed to parse file %s: \"%.*s\" is not an unsigned number", |
|
|
|
KERNEL_MAX_FILENAME, (int) (text_end - text_start), text_start); |
|
|
|
+#endif |
|
|
|
return false; |
|
|
|
} else { |
|
|
|
for (const char* char_ptr = parsed_end; char_ptr != text_end; char_ptr++) { |
|
|
|
2.17.1 |
|
|
|
|