Revert "memory_range_lock: Enable interrupt when trylock fails"

This reverts commit 0d3ef65092.

Reason for revert: This fix causes circular dependency with memory_range manipulation and TLB flush. See #1394.

Change-Id: I4774e81ff300c199629e283e538c0a30ad0eeaae
This commit is contained in:
Masamichi Takagi
2019-09-20 07:18:15 +00:00
committed by Ken Sato
parent 41d37bcd30
commit edd3ea0103
12 changed files with 102 additions and 393 deletions

View File

@@ -2131,7 +2131,6 @@ int do_process_vm_read_writev(int pid,
struct vm_range *range;
struct mcs_rwlock_node_irqsave lock;
struct mcs_rwlock_node update_lock;
unsigned long irqflags;
/* Sanity checks */
if (flags) {
@@ -2143,7 +2142,7 @@ int do_process_vm_read_writev(int pid,
}
/* Check if parameters are okay */
memory_range_read_lock(lthread->vm, &irqflags);
ihk_mc_spinlock_lock_noirq(&lthread->vm->memory_range_lock);
range = lookup_process_memory_range(lthread->vm,
(uintptr_t)local_iov,
@@ -2165,7 +2164,7 @@ int do_process_vm_read_writev(int pid,
ret = 0;
arg_out:
memory_range_read_unlock(lthread->vm, &irqflags);
ihk_mc_spinlock_unlock_noirq(&lthread->vm->memory_range_lock);
if (ret != 0) {
goto out;
@@ -2234,7 +2233,7 @@ arg_out:
if (pli != li) {
struct vm_range *range;
memory_range_read_lock(lthread->vm, &irqflags);
ihk_mc_spinlock_lock_noirq(&lthread->vm->memory_range_lock);
/* Is base valid? */
range = lookup_process_memory_range(lthread->vm,
@@ -2264,7 +2263,7 @@ arg_out:
ret = 0;
pli_out:
memory_range_read_unlock(lthread->vm, &irqflags);
ihk_mc_spinlock_unlock_noirq(&lthread->vm->memory_range_lock);
if (ret != 0) {
goto out;
@@ -2277,7 +2276,7 @@ pli_out:
if (pri != ri) {
struct vm_range *range;
memory_range_read_lock(rvm, &irqflags);
ihk_mc_spinlock_lock_noirq(&rvm->memory_range_lock);
/* Is base valid? */
range = lookup_process_memory_range(rvm,
@@ -2307,7 +2306,7 @@ pli_out:
ret = 0;
pri_out:
memory_range_read_unlock(rvm, &irqflags);
ihk_mc_spinlock_unlock_noirq(&rvm->memory_range_lock);
if (ret != 0) {
goto out;