All of lore.kernel.org
 help / color / mirror / Atom feed
From: Richard Henderson <rth@twiddle.net>
To: qemu-devel@nongnu.org
Cc: peter.maydell@linaro.org, Sergey Fedorov <serge.fdrv@gmail.com>,
	Sergey Fedorov <sergey.fedorov@linaro.org>
Subject: [Qemu-devel] [PULL 32/39] tcg: Remove needless CPUState::current_tb
Date: Thu, 12 May 2016 14:13:33 -1000	[thread overview]
Message-ID: <1463098420-29113-33-git-send-email-rth@twiddle.net> (raw)
In-Reply-To: <1463098420-29113-1-git-send-email-rth@twiddle.net>

From: Sergey Fedorov <serge.fdrv@gmail.com>

This field was used for telling cpu_interrupt() to unlink a chain of TBs
being executed when it worked that way. Now, cpu_interrupt() don't do
this anymore. So we don't need this field anymore.

Signed-off-by: Sergey Fedorov <serge.fdrv@gmail.com>
Signed-off-by: Sergey Fedorov <sergey.fedorov@linaro.org>
Message-Id: <1462273462-14036-1-git-send-email-sergey.fedorov@linaro.org>
Signed-off-by: Richard Henderson <rth@twiddle.net>
---
 cpu-exec-common.c  |  2 --
 cpu-exec.c         |  4 ----
 cputlb.c           | 13 -------------
 hw/i386/kvmvapic.c |  1 -
 include/qom/cpu.h  |  2 --
 qom/cpu.c          |  1 -
 translate-all.c    | 20 ++------------------
 7 files changed, 2 insertions(+), 41 deletions(-)

diff --git a/cpu-exec-common.c b/cpu-exec-common.c
index 1b1731c..6bdda6b 100644
--- a/cpu-exec-common.c
+++ b/cpu-exec-common.c
@@ -68,7 +68,6 @@ void cpu_reloading_memory_map(void)
 
 void cpu_loop_exit(CPUState *cpu)
 {
-    cpu->current_tb = NULL;
     siglongjmp(cpu->jmp_env, 1);
 }
 
@@ -77,6 +76,5 @@ void cpu_loop_exit_restore(CPUState *cpu, uintptr_t pc)
     if (pc) {
         cpu_restore_state(cpu, pc);
     }
-    cpu->current_tb = NULL;
     siglongjmp(cpu->jmp_env, 1);
 }
diff --git a/cpu-exec.c b/cpu-exec.c
index 7380b1e..d43d5ae 100644
--- a/cpu-exec.c
+++ b/cpu-exec.c
@@ -216,11 +216,9 @@ static void cpu_exec_nocache(CPUState *cpu, int max_cycles,
                          | (ignore_icount ? CF_IGNORE_ICOUNT : 0));
     tb->orig_tb = cpu->tb_flushed ? NULL : orig_tb;
     cpu->tb_flushed |= old_tb_flushed;
-    cpu->current_tb = tb;
     /* execute the generated code */
     trace_exec_tb_nocache(tb, tb->pc);
     cpu_tb_exec(cpu, tb);
-    cpu->current_tb = NULL;
     tb_phys_invalidate(tb, -1);
     tb_free(tb);
 }
@@ -532,9 +530,7 @@ int cpu_exec(CPUState *cpu)
                     uintptr_t ret;
                     trace_exec_tb(tb, tb->pc);
                     /* execute the generated code */
-                    cpu->current_tb = tb;
                     ret = cpu_tb_exec(cpu, tb);
-                    cpu->current_tb = NULL;
                     last_tb = (TranslationBlock *)(ret & ~TB_EXIT_MASK);
                     tb_exit = ret & TB_EXIT_MASK;
                     switch (tb_exit) {
diff --git a/cputlb.c b/cputlb.c
index 466663b..167280a 100644
--- a/cputlb.c
+++ b/cputlb.c
@@ -76,10 +76,6 @@ void tlb_flush(CPUState *cpu, int flush_global)
 
     tlb_debug("(%d)\n", flush_global);
 
-    /* must reset current TB so that interrupts cannot modify the
-       links while we are modifying them */
-    cpu->current_tb = NULL;
-
     memset(env->tlb_table, -1, sizeof(env->tlb_table));
     memset(env->tlb_v_table, -1, sizeof(env->tlb_v_table));
     memset(cpu->tb_jmp_cache, 0, sizeof(cpu->tb_jmp_cache));
@@ -95,9 +91,6 @@ static inline void v_tlb_flush_by_mmuidx(CPUState *cpu, va_list argp)
     CPUArchState *env = cpu->env_ptr;
 
     tlb_debug("start\n");
-    /* must reset current TB so that interrupts cannot modify the
-       links while we are modifying them */
-    cpu->current_tb = NULL;
 
     for (;;) {
         int mmu_idx = va_arg(argp, int);
@@ -152,9 +145,6 @@ void tlb_flush_page(CPUState *cpu, target_ulong addr)
         tlb_flush(cpu, 1);
         return;
     }
-    /* must reset current TB so that interrupts cannot modify the
-       links while we are modifying them */
-    cpu->current_tb = NULL;
 
     addr &= TARGET_PAGE_MASK;
     i = (addr >> TARGET_PAGE_BITS) & (CPU_TLB_SIZE - 1);
@@ -193,9 +183,6 @@ void tlb_flush_page_by_mmuidx(CPUState *cpu, target_ulong addr, ...)
         va_end(argp);
         return;
     }
-    /* must reset current TB so that interrupts cannot modify the
-       links while we are modifying them */
-    cpu->current_tb = NULL;
 
     addr &= TARGET_PAGE_MASK;
     i = (addr >> TARGET_PAGE_BITS) & (CPU_TLB_SIZE - 1);
diff --git a/hw/i386/kvmvapic.c b/hw/i386/kvmvapic.c
index 4bb695d..f14445d 100644
--- a/hw/i386/kvmvapic.c
+++ b/hw/i386/kvmvapic.c
@@ -446,7 +446,6 @@ static void patch_instruction(VAPICROMState *s, X86CPU *cpu, target_ulong ip)
     resume_all_vcpus();
 
     if (!kvm_enabled()) {
-        cs->current_tb = NULL;
         tb_gen_code(cs, current_pc, current_cs_base, current_flags, 1);
         cpu_resume_from_signal(cs, NULL);
     }
diff --git a/include/qom/cpu.h b/include/qom/cpu.h
index c1ae24d..4349c46 100644
--- a/include/qom/cpu.h
+++ b/include/qom/cpu.h
@@ -253,7 +253,6 @@ struct kvm_run;
  * @as: Pointer to the first AddressSpace, for the convenience of targets which
  *      only have a single AddressSpace
  * @env_ptr: Pointer to subclass-specific CPUArchState field.
- * @current_tb: Currently executing TB.
  * @gdb_regs: Additional GDB registers.
  * @gdb_num_regs: Number of total registers accessible to GDB.
  * @gdb_num_g_regs: Number of registers in GDB 'g' packets.
@@ -305,7 +304,6 @@ struct CPUState {
     MemoryRegion *memory;
 
     void *env_ptr; /* CPUArchState */
-    struct TranslationBlock *current_tb;
     struct TranslationBlock *tb_jmp_cache[TB_JMP_CACHE_SIZE];
     struct GDBRegisterState *gdb_regs;
     int gdb_num_regs;
diff --git a/qom/cpu.c b/qom/cpu.c
index c9007d3..751e992 100644
--- a/qom/cpu.c
+++ b/qom/cpu.c
@@ -254,7 +254,6 @@ static void cpu_common_reset(CPUState *cpu)
     }
 
     cpu->interrupt_request = 0;
-    cpu->current_tb = NULL;
     cpu->halted = 0;
     cpu->mem_io_pc = 0;
     cpu->mem_io_vaddr = 0;
diff --git a/translate-all.c b/translate-all.c
index 2d1957b..b54f472 100644
--- a/translate-all.c
+++ b/translate-all.c
@@ -305,7 +305,6 @@ bool cpu_restore_state(CPUState *cpu, uintptr_t retaddr)
         cpu_restore_state_from_tb(cpu, tb, retaddr);
         if (tb->cflags & CF_NOCACHE) {
             /* one-shot translation, invalidate it immediately */
-            cpu->current_tb = NULL;
             tb_phys_invalidate(tb, -1);
             tb_free(tb);
         }
@@ -1309,9 +1308,9 @@ void tb_invalidate_phys_range(tb_page_addr_t start, tb_page_addr_t end)
 void tb_invalidate_phys_page_range(tb_page_addr_t start, tb_page_addr_t end,
                                    int is_cpu_write_access)
 {
-    TranslationBlock *tb, *tb_next, *saved_tb;
-    CPUState *cpu = current_cpu;
+    TranslationBlock *tb, *tb_next;
 #if defined(TARGET_HAS_PRECISE_SMC)
+    CPUState *cpu = current_cpu;
     CPUArchState *env = NULL;
 #endif
     tb_page_addr_t tb_start, tb_end;
@@ -1378,20 +1377,7 @@ void tb_invalidate_phys_page_range(tb_page_addr_t start, tb_page_addr_t end,
                                      &current_flags);
             }
 #endif /* TARGET_HAS_PRECISE_SMC */
-            /* we need to do that to handle the case where a signal
-               occurs while doing tb_phys_invalidate() */
-            saved_tb = NULL;
-            if (cpu != NULL) {
-                saved_tb = cpu->current_tb;
-                cpu->current_tb = NULL;
-            }
             tb_phys_invalidate(tb, -1);
-            if (cpu != NULL) {
-                cpu->current_tb = saved_tb;
-                if (cpu->interrupt_request && cpu->current_tb) {
-                    cpu_interrupt(cpu, cpu->interrupt_request);
-                }
-            }
         }
         tb = tb_next;
     }
@@ -1407,7 +1393,6 @@ void tb_invalidate_phys_page_range(tb_page_addr_t start, tb_page_addr_t end,
         /* we generate a block containing just the instruction
            modifying the memory. It will ensure that it cannot modify
            itself */
-        cpu->current_tb = NULL;
         tb_gen_code(cpu, current_pc, current_cs_base, current_flags, 1);
         cpu_resume_from_signal(cpu, NULL);
     }
@@ -1512,7 +1497,6 @@ static void tb_invalidate_phys_page(tb_page_addr_t addr,
         /* we generate a block containing just the instruction
            modifying the memory. It will ensure that it cannot modify
            itself */
-        cpu->current_tb = NULL;
         tb_gen_code(cpu, current_pc, current_cs_base, current_flags, 1);
         if (locked) {
             mmap_unlock();
-- 
2.5.5

  parent reply	other threads:[~2016-05-13  0:16 UTC|newest]

Thread overview: 41+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-05-13  0:13 [Qemu-devel] [PULL 00/39] tcg-next patch queue Richard Henderson
2016-05-13  0:13 ` [Qemu-devel] [PULL 01/39] tb: consistently use uint32_t for tb->flags Richard Henderson
2016-05-13  0:13 ` [Qemu-devel] [PULL 02/39] include/qemu/osdep.h: Add a macro to check for alignment Richard Henderson
2016-05-13  0:13 ` [Qemu-devel] [PULL 03/39] include/qemu/osdep.h: Add macros for pointer alignment Richard Henderson
2016-05-13  0:13 ` [Qemu-devel] [PULL 04/39] tci: Make direct jump patching thread-safe Richard Henderson
2016-05-13  0:13 ` [Qemu-devel] [PULL 05/39] tcg/ppc: " Richard Henderson
2016-05-13  0:13 ` [Qemu-devel] [PULL 06/39] tcg/i386: " Richard Henderson
2016-05-13  0:13 ` [Qemu-devel] [PULL 07/39] tcg/s390: " Richard Henderson
2016-05-13  0:13 ` [Qemu-devel] [PULL 08/39] tcg/arm: " Richard Henderson
2016-05-13  0:13 ` [Qemu-devel] [PULL 09/39] tcg/aarch64: " Richard Henderson
2016-05-13  0:13 ` [Qemu-devel] [PULL 10/39] tcg/sparc: " Richard Henderson
2016-05-13  0:13 ` [Qemu-devel] [PULL 11/39] tcg/mips: " Richard Henderson
2016-05-13  0:13 ` [Qemu-devel] [PULL 12/39] tcg: Note requirement on atomic direct jump patching Richard Henderson
2016-05-13  0:13 ` [Qemu-devel] [PULL 13/39] translate-all: remove redundant setting of tcg_ctx.code_gen_buffer_size Richard Henderson
2016-05-13  0:13 ` [Qemu-devel] [PULL 14/39] translate-all: add missing munmap of the code_gen guard page for MIPS Richard Henderson
2016-05-13  0:13 ` [Qemu-devel] [PULL 15/39] translate-all: Adjust 256mb testing for mips64 Richard Henderson
2016-05-13  0:13 ` [Qemu-devel] [PULL 16/39] tcg: Clean up direct block chaining data fields Richard Henderson
2016-05-13  0:13 ` [Qemu-devel] [PULL 17/39] tcg: Use uintptr_t type for jmp_list_{next|first} fields of TB Richard Henderson
2016-05-13  0:13 ` [Qemu-devel] [PULL 18/39] tcg: Rearrange tb_link_page() to avoid forward declaration Richard Henderson
2016-05-13  0:13 ` [Qemu-devel] [PULL 19/39] tcg: Init TB's direct jumps before making it visible Richard Henderson
2016-05-13  0:13 ` [Qemu-devel] [PULL 20/39] tcg: Clarify thread safety check in tb_add_jump() Richard Henderson
2016-05-13  0:13 ` [Qemu-devel] [PULL 21/39] tcg: Rename tb_jmp_remove() to tb_remove_from_jmp_list() Richard Henderson
2016-05-13  0:13 ` [Qemu-devel] [PULL 22/39] tcg: Extract removing of jumps to TB from tb_phys_invalidate() Richard Henderson
2016-05-13  0:13 ` [Qemu-devel] [PULL 23/39] tcg: Clean up tb_jmp_unlink() Richard Henderson
2016-05-13  0:13 ` [Qemu-devel] [PULL 24/39] tcg: Clean up direct block chaining safety checks Richard Henderson
2016-05-13  0:13 ` [Qemu-devel] [PULL 25/39] tcg: Allow goto_tb to any target PC in user mode Richard Henderson
2016-05-13  0:13 ` [Qemu-devel] [PULL 26/39] tcg: code_bitmap and code_write_count are not used by user-mode emulation Richard Henderson
2016-05-13  0:13 ` [Qemu-devel] [PULL 27/39] tcg: reorganize tb_find_physical loop Richard Henderson
2016-05-13  0:13 ` [Qemu-devel] [PULL 28/39] cpu-exec: elide more icount code if CONFIG_USER_ONLY Richard Henderson
2016-05-13  0:13 ` [Qemu-devel] [PULL 29/39] tcg: Clean up from 'next_tb' Richard Henderson
2016-05-13  0:13 ` [Qemu-devel] [PULL 30/39] tcg: Rework tb_invalidated_flag Richard Henderson
2016-05-13  0:13 ` [Qemu-devel] [PULL 31/39] cpu-exec: Move TB chaining into tb_find_fast() Richard Henderson
2016-05-13  0:13 ` Richard Henderson [this message]
2016-05-13  0:13 ` [Qemu-devel] [PULL 33/39] cpu-exec: Remove relic orphaned comment Richard Henderson
2016-05-13  0:13 ` [Qemu-devel] [PULL 34/39] cpu-exec: Move halt handling out of cpu_exec() Richard Henderson
2016-05-13  0:13 ` [Qemu-devel] [PULL 35/39] cpu-exec: Move exception " Richard Henderson
2016-05-13  0:13 ` [Qemu-devel] [PULL 36/39] cpu-exec: Move interrupt " Richard Henderson
2016-05-13  0:13 ` [Qemu-devel] [PULL 37/39] cpu-exec: Move TB execution stuff " Richard Henderson
2016-05-13  0:13 ` [Qemu-devel] [PULL 38/39] cpu-exec: Remove unused 'x86_cpu' and 'env' from cpu_exec() Richard Henderson
2016-05-13  0:13 ` [Qemu-devel] [PULL 39/39] cpu-exec: Clean up 'interrupt_request' reloading in cpu_handle_interrupt() Richard Henderson
2016-05-13 10:30 ` [Qemu-devel] [PULL 00/39] tcg-next patch queue Peter Maydell

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1463098420-29113-33-git-send-email-rth@twiddle.net \
    --to=rth@twiddle.net \
    --cc=peter.maydell@linaro.org \
    --cc=qemu-devel@nongnu.org \
    --cc=serge.fdrv@gmail.com \
    --cc=sergey.fedorov@linaro.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.