Commit e83ac234 authored by jkummerow's avatar jkummerow Committed by Commit bot

[arm][arm64] Remove COHERENT_CACHE support

We have evidence (see r34896) that this avoids crashes.

BUG=chromium:524337

Review-Url: https://codereview.chromium.org/1995483002
Cr-Commit-Position: refs/heads/master@{#36317}
parent c7f5419f
...@@ -141,15 +141,6 @@ void CpuFeatures::ProbeImpl(bool cross_compile) { ...@@ -141,15 +141,6 @@ void CpuFeatures::ProbeImpl(bool cross_compile) {
} }
if (FLAG_enable_32dregs && cpu.has_vfp3_d32()) supported_ |= 1u << VFP32DREGS; if (FLAG_enable_32dregs && cpu.has_vfp3_d32()) supported_ |= 1u << VFP32DREGS;
if (cpu.implementer() == base::CPU::NVIDIA &&
cpu.variant() == base::CPU::NVIDIA_DENVER &&
cpu.part() <= base::CPU::NVIDIA_DENVER_V10) {
// TODO(jkummerow): This is turned off as an experiment to see if it
// affects crash rates. Keep an eye on crash reports and either remove
// coherent cache support permanently, or re-enable it!
// supported_ |= 1u << COHERENT_CACHE;
}
#endif #endif
DCHECK(!IsSupported(VFP3) || IsSupported(ARMv7)); DCHECK(!IsSupported(VFP3) || IsSupported(ARMv7));
...@@ -212,18 +203,14 @@ void CpuFeatures::PrintTarget() { ...@@ -212,18 +203,14 @@ void CpuFeatures::PrintTarget() {
void CpuFeatures::PrintFeatures() { void CpuFeatures::PrintFeatures() {
printf( printf(
"ARMv8=%d ARMv7=%d VFP3=%d VFP32DREGS=%d NEON=%d SUDIV=%d MLS=%d" "ARMv8=%d ARMv7=%d VFP3=%d VFP32DREGS=%d NEON=%d SUDIV=%d MLS=%d"
"UNALIGNED_ACCESSES=%d MOVW_MOVT_IMMEDIATE_LOADS=%d COHERENT_CACHE=%d", "UNALIGNED_ACCESSES=%d MOVW_MOVT_IMMEDIATE_LOADS=%d",
CpuFeatures::IsSupported(ARMv8), CpuFeatures::IsSupported(ARMv8), CpuFeatures::IsSupported(ARMv7),
CpuFeatures::IsSupported(ARMv7), CpuFeatures::IsSupported(VFP3), CpuFeatures::IsSupported(VFP32DREGS),
CpuFeatures::IsSupported(VFP3), CpuFeatures::IsSupported(NEON), CpuFeatures::IsSupported(SUDIV),
CpuFeatures::IsSupported(VFP32DREGS), CpuFeatures::IsSupported(MLS),
CpuFeatures::IsSupported(NEON), CpuFeatures::IsSupported(UNALIGNED_ACCESSES),
CpuFeatures::IsSupported(SUDIV), CpuFeatures::IsSupported(MOVW_MOVT_IMMEDIATE_LOADS));
CpuFeatures::IsSupported(MLS),
CpuFeatures::IsSupported(UNALIGNED_ACCESSES),
CpuFeatures::IsSupported(MOVW_MOVT_IMMEDIATE_LOADS),
CpuFeatures::IsSupported(COHERENT_CACHE));
#ifdef __arm__ #ifdef __arm__
bool eabi_hardfloat = base::OS::ArmUsingHardFloat(); bool eabi_hardfloat = base::OS::ArmUsingHardFloat();
#elif USE_EABI_HARDFLOAT #elif USE_EABI_HARDFLOAT
......
...@@ -51,26 +51,13 @@ void CpuFeatures::ProbeImpl(bool cross_compile) { ...@@ -51,26 +51,13 @@ void CpuFeatures::ProbeImpl(bool cross_compile) {
// Only use statically determined features for cross compile (snapshot). // Only use statically determined features for cross compile (snapshot).
if (cross_compile) return; if (cross_compile) return;
// Probe for runtime features // We used to probe for coherent cache support, but on older CPUs it
base::CPU cpu; // causes crashes (crbug.com/524337), and newer CPUs don't even have
if (cpu.implementer() == base::CPU::NVIDIA && // the feature any more.
cpu.variant() == base::CPU::NVIDIA_DENVER &&
cpu.part() <= base::CPU::NVIDIA_DENVER_V10) {
// TODO(jkummerow): This is turned off as an experiment to see if it
// affects crash rates. Keep an eye on crash reports and either remove
// coherent cache support permanently, or re-enable it!
// supported_ |= 1u << COHERENT_CACHE;
}
} }
void CpuFeatures::PrintTarget() { } void CpuFeatures::PrintTarget() { }
void CpuFeatures::PrintFeatures() {}
void CpuFeatures::PrintFeatures() {
printf("COHERENT_CACHE=%d\n", CpuFeatures::IsSupported(COHERENT_CACHE));
}
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
// CPURegList utilities. // CPURegList utilities.
......
...@@ -201,7 +201,6 @@ AssemblerBase::~AssemblerBase() { ...@@ -201,7 +201,6 @@ AssemblerBase::~AssemblerBase() {
void AssemblerBase::FlushICache(Isolate* isolate, void* start, size_t size) { void AssemblerBase::FlushICache(Isolate* isolate, void* start, size_t size) {
if (size == 0) return; if (size == 0) return;
if (CpuFeatures::IsSupported(COHERENT_CACHE)) return;
#if defined(USE_SIMULATOR) #if defined(USE_SIMULATOR)
Simulator::FlushICache(isolate->simulator_i_cache(), start, size); Simulator::FlushICache(isolate->simulator_i_cache(), start, size);
......
...@@ -706,7 +706,6 @@ enum CpuFeature { ...@@ -706,7 +706,6 @@ enum CpuFeature {
MIPSr6, MIPSr6,
// ARM64 // ARM64
ALWAYS_ALIGN_CSP, ALWAYS_ALIGN_CSP,
COHERENT_CACHE,
// PPC // PPC
FPR_GPR_MOV, FPR_GPR_MOV,
LWSYNC, LWSYNC,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment