Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F175698608
D60624.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
2 KB
Referenced Files
None
Subscribers
None
D60624.diff
View Options
Index: sys/arm64/arm64/identcpu.c
===================================================================
--- sys/arm64/arm64/identcpu.c
+++ sys/arm64/arm64/identcpu.c
@@ -2287,7 +2287,7 @@
* Present in r3p0 - r4p0
* Fixed in r4p1
*/
- return (midr_check_var_part_range(midr, CPU_IMPL_ARM,
+ return (midr_check_var_rev_range(midr, CPU_IMPL_ARM,
CPU_PART_NEOVERSE_N1, 3, 0, 4, 0) && CTR_DIC_VAL(ctr) != 0);
}
Index: sys/arm64/arm64/pmap.c
===================================================================
--- sys/arm64/arm64/pmap.c
+++ sys/arm64/arm64/pmap.c
@@ -1798,7 +1798,7 @@
}
/* Disable on Cortex-A510 for erratum 2051678 - r0p0 to r0p2 */
- if (midr_check_var_part_range(midr, CPU_IMPL_ARM, CPU_PART_CORTEX_A510,
+ if (midr_check_var_rev_range(midr, CPU_IMPL_ARM, CPU_PART_CORTEX_A510,
0, 0, 0, 2)) {
static u_int errata_id = 2051678;
@@ -1904,7 +1904,7 @@
* Present in r0p0 - r1p1
* Fixed in r1p2
*/
- if (midr_check_var_part_range(midr, CPU_IMPL_ARM, CPU_PART_CORTEX_A510,
+ if (midr_check_var_rev_range(midr, CPU_IMPL_ARM, CPU_PART_CORTEX_A510,
0, 0, 1, 1))
return (FEAT_DEFAULT_DISABLE);
Index: sys/arm64/include/cpu.h
===================================================================
--- sys/arm64/include/cpu.h
+++ sys/arm64/include/cpu.h
@@ -198,9 +198,14 @@
((mask) & CPU_ID_RAW((impl), (part), (var), (rev))))
#if !defined(__ASSEMBLER__)
+/*
+ * Check whether midr identifies the given implementer and part at a product
+ * revision rXpY from r(var_low)p(rev_low) to r(var_high)p(rev_high)
+ * inclusive. X is MIDR_EL1.Variant, and Y is MIDR_EL1.Revision.
+ */
static inline bool
-midr_check_var_part_range(u_int midr, u_int impl, u_int part, u_int var_low,
- u_int part_low, u_int var_high, u_int part_high)
+midr_check_var_rev_range(u_int midr, u_int impl, u_int part, u_int var_low,
+ u_int rev_low, u_int var_high, u_int rev_high)
{
/* Check for the correct part */
if (CPU_IMPL(midr) != impl || CPU_PART(midr) != part)
@@ -210,12 +215,12 @@
if (CPU_VAR(midr) < var_low || CPU_VAR(midr) > var_high)
return (false);
- /* If the variant is the low value, check if the part is high enough */
- if (CPU_VAR(midr) == var_low && CPU_PART(midr) < part_low)
+ /* If the variant is var_low, check if the revision is high enough */
+ if (CPU_VAR(midr) == var_low && CPU_REV(midr) < rev_low)
return (false);
- /* If the variant is the high value, check if the part is low enough */
- if (CPU_VAR(midr) == var_high && CPU_PART(midr) > part_high)
+ /* If the variant is var_high, check if the revision is low enough */
+ if (CPU_VAR(midr) == var_high && CPU_REV(midr) > rev_high)
return (false);
return (true);
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Tue, Oct 13, 2:58 PM (15 h, 7 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
40729547
Default Alt Text
D60624.diff (2 KB)
Attached To
Mode
D60624: arm64: Fix midr_check_var_part_range()
Attached
Detach File
Event Timeline
Log In to Comment