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

@ -2267,7 +2267,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) {
@ -2279,7 +2278,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,
@ -2301,7 +2300,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;
@ -2370,7 +2369,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,
@ -2400,7 +2399,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;
@ -2413,7 +2412,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,
@ -2443,7 +2442,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;