All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Alex Bennée" <alex.bennee@linaro.org>
To: Claudio Fontana <cfontana@suse.de>
Cc: "Paul Durrant" <paul@xen.org>, "Jason Wang" <jasowang@redhat.com>,
	qemu-devel@nongnu.org, "Peter Xu" <peterx@redhat.com>,
	haxm-team@intel.com, "Colin Xu" <colin.xu@intel.com>,
	"Olaf Hering" <ohering@suse.de>,
	"Stefano Stabellini" <sstabellini@kernel.org>,
	"Bruce Rogers" <brogers@suse.com>,
	"Emilio G . Cota" <cota@braap.org>,
	"Anthony Perard" <anthony.perard@citrix.com>,
	"Philippe Mathieu-Daudé" <philmd@redhat.com>,
	"Laurent Vivier" <lvivier@redhat.com>,
	"Thomas Huth" <thuth@redhat.com>,
	"Eduardo Habkost" <ehabkost@redhat.com>,
	"Richard Henderson" <richard.henderson@linaro.org>,
	"Cameron Esfahani" <dirty@apple.com>,
	"Dario Faggioli" <dfaggioli@suse.com>,
	"Roman Bolshakov" <r.bolshakov@yadro.com>,
	"Sunil Muthuswamy" <sunilmut@microsoft.com>,
	"Marcelo Tosatti" <mtosatti@redhat.com>,
	"Wenchao Wang" <wenchao.wang@intel.com>,
	"Paolo Bonzini" <pbonzini@redhat.com>
Subject: Re: [RFC v9 20/32] cpu: Move tlb_fill to tcg_ops
Date: Wed, 09 Dec 2020 16:12:40 +0000	[thread overview]
Message-ID: <87k0trc5xv.fsf@linaro.org> (raw)
In-Reply-To: <ff41bd99-c5e8-c517-f7b0-5ab26a9a0e73@suse.de>


Claudio Fontana <cfontana@suse.de> writes:

> On 12/9/20 12:26 PM, Alex Bennée wrote:
>> 
>> Claudio Fontana <cfontana@suse.de> writes:
>> 
>>> From: Eduardo Habkost <ehabkost@redhat.com>
>>>
>>> Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
>>> [claudio: wrapped in CONFIG_TCG]
>>> Signed-off-by: Claudio Fontana <cfontana@suse.de>
>>> Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
>>> ---
>>>  accel/tcg/cputlb.c              |  6 +++---
>>>  accel/tcg/user-exec.c           |  6 +++---
>>>  include/hw/core/cpu.h           |  9 ---------
>>>  include/hw/core/tcg-cpu-ops.h   | 12 ++++++++++++
>>>  target/alpha/cpu.c              |  2 +-
>>>  target/arm/cpu.c                |  2 +-
>>>  target/avr/cpu.c                |  2 +-
>>>  target/cris/cpu.c               |  2 +-
>>>  target/hppa/cpu.c               |  2 +-
>>>  target/i386/tcg-cpu.c           |  2 +-
>>>  target/lm32/cpu.c               |  2 +-
>>>  target/m68k/cpu.c               |  2 +-
>>>  target/microblaze/cpu.c         |  2 +-
>>>  target/mips/cpu.c               |  2 +-
>>>  target/moxie/cpu.c              |  2 +-
>>>  target/nios2/cpu.c              |  2 +-
>>>  target/openrisc/cpu.c           |  2 +-
>>>  target/ppc/translate_init.c.inc |  2 +-
>>>  target/riscv/cpu.c              |  2 +-
>>>  target/rx/cpu.c                 |  2 +-
>>>  target/s390x/cpu.c              |  2 +-
>>>  target/sh4/cpu.c                |  2 +-
>>>  target/sparc/cpu.c              |  2 +-
>>>  target/tilegx/cpu.c             |  2 +-
>>>  target/tricore/cpu.c            |  2 +-
>>>  target/unicore32/cpu.c          |  2 +-
>>>  target/xtensa/cpu.c             |  2 +-
>>>  27 files changed, 41 insertions(+), 38 deletions(-)
>>>
>>> diff --git a/accel/tcg/cputlb.c b/accel/tcg/cputlb.c
>>> index 42ab79c1a5..2dc71b5528 100644
>>> --- a/accel/tcg/cputlb.c
>>> +++ b/accel/tcg/cputlb.c
>>> @@ -1286,7 +1286,7 @@ static void tlb_fill(CPUState *cpu, target_ulong addr, int size,
>>>       * This is not a probe, so only valid return is success; failure
>>>       * should result in exception + longjmp to the cpu loop.
>>>       */
>>> -    ok = cc->tlb_fill(cpu, addr, size, access_type, mmu_idx, false, retaddr);
>>> +    ok = cc->tcg_ops.tlb_fill(cpu, addr, size, access_type, mmu_idx, false, retaddr);
>>>      assert(ok);
>>>  }
>>>  
>>> @@ -1557,8 +1557,8 @@ static int probe_access_internal(CPUArchState *env, target_ulong addr,
>>>              CPUState *cs = env_cpu(env);
>>>              CPUClass *cc = CPU_GET_CLASS(cs);
>>>  
>>> -            if (!cc->tlb_fill(cs, addr, fault_size, access_type,
>>> -                              mmu_idx, nonfault, retaddr)) {
>>> +            if (!cc->tcg_ops.tlb_fill(cs, addr, fault_size, access_type,
>>> +                                      mmu_idx, nonfault, retaddr)) {
>>>                  /* Non-faulting page table read failed.  */
>>>                  *phost = NULL;
>>>                  return TLB_INVALID_MASK;
>>> diff --git a/accel/tcg/user-exec.c b/accel/tcg/user-exec.c
>>> index 4ebe25461a..7f53992251 100644
>>> --- a/accel/tcg/user-exec.c
>>> +++ b/accel/tcg/user-exec.c
>>> @@ -186,7 +186,7 @@ static inline int handle_cpu_signal(uintptr_t pc, siginfo_t *info,
>>>      clear_helper_retaddr();
>>>  
>>>      cc = CPU_GET_CLASS(cpu);
>>> -    cc->tlb_fill(cpu, address, 0, access_type, MMU_USER_IDX, false, pc);
>>> +    cc->tcg_ops.tlb_fill(cpu, address, 0, access_type, MMU_USER_IDX, false, pc);
>>>      g_assert_not_reached();
>>>  }
>>>  
>>> @@ -216,8 +216,8 @@ static int probe_access_internal(CPUArchState *env, target_ulong addr,
>>>          } else {
>>>              CPUState *cpu = env_cpu(env);
>>>              CPUClass *cc = CPU_GET_CLASS(cpu);
>>> -            cc->tlb_fill(cpu, addr, fault_size, access_type,
>>> -                         MMU_USER_IDX, false, ra);
>>> +            cc->tcg_ops.tlb_fill(cpu, addr, fault_size, access_type,
>>> +                                 MMU_USER_IDX, false, ra);
>>>              g_assert_not_reached();
>>>          }
>>>      }
>>> diff --git a/include/hw/core/cpu.h b/include/hw/core/cpu.h
>>> index 52142e9094..c82ef261c6 100644
>>> --- a/include/hw/core/cpu.h
>>> +++ b/include/hw/core/cpu.h
>>> @@ -110,12 +110,6 @@ struct TranslationBlock;
>>>   *       If the target behaviour here is anything other than "set
>>>   *       the PC register to the value passed in" then the target must
>>>   *       also implement the synchronize_from_tb hook.
>>> - * @tlb_fill: Callback for handling a softmmu tlb miss or user-only
>>> - *       address fault.  For system mode, if the access is valid, call
>>> - *       tlb_set_page and return true; if the access is invalid, and
>>> - *       probe is true, return false; otherwise raise an exception and
>>> - *       do not return.  For user-only mode, always raise an exception
>>> - *       and do not return.
>>>   * @get_phys_page_debug: Callback for obtaining a physical address.
>>>   * @get_phys_page_attrs_debug: Callback for obtaining a physical address and the
>>>   *       associated memory transaction attributes to use for the access.
>>> @@ -183,9 +177,6 @@ struct CPUClass {
>>>      void (*get_memory_mapping)(CPUState *cpu, MemoryMappingList *list,
>>>                                 Error **errp);
>>>      void (*set_pc)(CPUState *cpu, vaddr value);
>>> -    bool (*tlb_fill)(CPUState *cpu, vaddr address, int size,
>>> -                     MMUAccessType access_type, int mmu_idx,
>>> -                     bool probe, uintptr_t retaddr);
>>>      hwaddr (*get_phys_page_debug)(CPUState *cpu, vaddr addr);
>>>      hwaddr (*get_phys_page_attrs_debug)(CPUState *cpu, vaddr addr,
>>>                                          MemTxAttrs *attrs);
>>> diff --git a/include/hw/core/tcg-cpu-ops.h b/include/hw/core/tcg-cpu-ops.h
>>> index e12f32919b..2ea94acca0 100644
>>> --- a/include/hw/core/tcg-cpu-ops.h
>>> +++ b/include/hw/core/tcg-cpu-ops.h
>>> @@ -37,6 +37,18 @@ typedef struct TcgCpuOperations {
>>>      void (*cpu_exec_exit)(CPUState *cpu);
>>>      /** @cpu_exec_interrupt: Callback for processing interrupts in cpu_exec */
>>>      bool (*cpu_exec_interrupt)(CPUState *cpu, int interrupt_request);
>>> +    /**
>>> +     * @tlb_fill: Handle a softmmu tlb miss or user-only address fault
>>> +     *
>>> +     * For system mode, if the access is valid, call tlb_set_page
>>> +     * and return true; if the access is invalid, and probe is
>>> +     * true, return false; otherwise raise an exception and do
>>> +     * not return.  For user-only mode, always raise an exception
>>> +     * and do not return.
>>> +     */
>>> +    bool (*tlb_fill)(CPUState *cpu, vaddr address, int size,
>>> +                     MMUAccessType access_type, int mmu_idx,
>>> +                     bool probe, uintptr_t retaddr);
>> 
>> As per previous patch, here is a chance to clean-up the comment.
>
>
> Could you provide the text? I think you understand this better than I
> do...

As Eduardo pointed out the kernel-doc pass won't work with in-line
functions unless they are extracted and typedefed which seems excessive
considering we don't currently generate docs from these headers. Ignore
the request.

>
>
>> 
>> Otherwise:
>> 
>> Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
>> 
>
> Thanks!
>
> Claudio


-- 
Alex Bennée


  reply	other threads:[~2020-12-09 16:18 UTC|newest]

Thread overview: 87+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-12-08 19:48 [RFC v9 00/22] i386 cleanup Claudio Fontana
2020-12-08 19:48 ` [RFC v9 01/32] accel/tcg: split CpusAccel into three TCG variants Claudio Fontana
2020-12-09  8:34   ` Alex Bennée
2020-12-08 19:48 ` [RFC v9 02/32] accel/tcg: split tcg_start_vcpu_thread Claudio Fontana
2020-12-09  9:03   ` Alex Bennée
2020-12-08 19:48 ` [RFC v9 03/32] accel/tcg: rename tcg-cpus functions to match module name Claudio Fontana
2020-12-09  9:10   ` Alex Bennée
2020-12-08 19:48 ` [RFC v9 04/32] i386: move kvm accel files into kvm/ Claudio Fontana
2020-12-09  9:17   ` Alex Bennée
2020-12-08 19:48 ` [RFC v9 05/32] i386: move whpx accel files into whpx/ Claudio Fontana
2020-12-09  9:21   ` Alex Bennée
2020-12-08 19:48 ` [RFC v9 06/32] i386: move hax accel files into hax/ Claudio Fontana
2020-12-09  9:22   ` Alex Bennée
2020-12-08 19:48 ` [RFC v9 07/32] i386: hvf: remove stale MAINTAINERS entry for old hvf stubs Claudio Fontana
2020-12-09  9:22   ` Alex Bennée
2020-12-08 19:48 ` [RFC v9 08/32] i386: move TCG accel files into tcg/ Claudio Fontana
2020-12-09  9:30   ` Alex Bennée
2020-12-09 11:05     ` Claudio Fontana
2020-12-08 19:48 ` [RFC v9 09/32] i386: move cpu dump out of helper.c into cpu-dump.c Claudio Fontana
2020-12-09  9:59   ` Alex Bennée
2020-12-08 19:48 ` [RFC v9 10/32] i386: move TCG cpu class initialization out of helper.c Claudio Fontana
2020-12-09 10:23   ` Alex Bennée
2020-12-09 11:19     ` Claudio Fontana
2020-12-08 19:48 ` [RFC v9 11/32] tcg: cpu_exec_{enter,exit} helpers Claudio Fontana
2020-12-09 10:33   ` Alex Bennée
2020-12-08 19:48 ` [RFC v9 12/32] tcg: make CPUClass.cpu_exec_* optional Claudio Fontana
2020-12-09 10:36   ` Alex Bennée
2020-12-08 19:48 ` [RFC v9 13/32] tcg: Make CPUClass.debug_excp_handler optional Claudio Fontana
2020-12-09 10:37   ` Alex Bennée
2020-12-08 19:48 ` [RFC v9 14/32] cpu: Remove unnecessary noop methods Claudio Fontana
2020-12-09 10:38   ` Alex Bennée
2020-12-08 19:48 ` [RFC v9 15/32] cpu: Introduce TCGCpuOperations struct Claudio Fontana
2020-12-09 10:39   ` Alex Bennée
2020-12-08 19:48 ` [RFC v9 16/32] target/riscv: remove CONFIG_TCG, as it is always TCG Claudio Fontana
2020-12-08 22:10   ` Alistair Francis
2020-12-08 19:48 ` [RFC v9 17/32] accel/tcg: split TCG-only code from cpu_exec_realizefn Claudio Fontana
2020-12-09 10:42   ` Alex Bennée
2020-12-09 11:22     ` Claudio Fontana
2020-12-08 19:48 ` [RFC v9 18/32] cpu: Move synchronize_from_tb() to tcg_ops Claudio Fontana
2020-12-09  9:27   ` Philippe Mathieu-Daudé
2020-12-09 14:33     ` Claudio Fontana
2020-12-09 15:06       ` Philippe Mathieu-Daudé
2020-12-09 10:50   ` Alex Bennée
2020-12-09 14:46     ` Eduardo Habkost
2020-12-09 15:51       ` Alex Bennée
2020-12-08 19:48 ` [RFC v9 19/32] cpu: Move cpu_exec_* " Claudio Fontana
2020-12-09  9:28   ` Philippe Mathieu-Daudé
2020-12-09 11:02     ` Claudio Fontana
2020-12-09 11:16   ` Alex Bennée
2020-12-08 19:48 ` [RFC v9 20/32] cpu: Move tlb_fill " Claudio Fontana
2020-12-09 11:26   ` Alex Bennée
2020-12-09 14:38     ` Claudio Fontana
2020-12-09 16:12       ` Alex Bennée [this message]
2020-12-08 19:48 ` [RFC v9 21/32] cpu: Move debug_excp_handler " Claudio Fontana
2020-12-09 11:29   ` Alex Bennée
2020-12-08 19:48 ` [RFC v9 22/32] target/arm: do not use cc->do_interrupt for KVM directly Claudio Fontana
2020-12-09 11:30   ` Alex Bennée
2020-12-08 19:48 ` [RFC v9 23/32] cpu: move cc->do_interrupt to tcg_ops Claudio Fontana
2020-12-09 11:43   ` Alex Bennée
2020-12-08 19:48 ` [RFC v9 24/32] cpu: move cc->transaction_failed " Claudio Fontana
2020-12-09  9:31   ` Philippe Mathieu-Daudé
2020-12-09 14:43     ` Claudio Fontana
2020-12-09 14:59       ` Eduardo Habkost
2020-12-09 12:03   ` Alex Bennée
2020-12-08 19:48 ` [RFC v9 25/32] cpu: move do_unaligned_access " Claudio Fontana
2020-12-09 12:47   ` Alex Bennée
2020-12-08 19:48 ` [RFC v9 26/32] accel: extend AccelState and AccelClass to user-mode Claudio Fontana
2020-12-09 12:51   ` Alex Bennée
2020-12-09 12:58     ` Claudio Fontana
2020-12-08 19:48 ` [RFC v9 27/32] accel: replace struct CpusAccel with AccelOpsClass Claudio Fontana
2020-12-09 12:54   ` Alex Bennée
2020-12-09 14:50     ` Claudio Fontana
2020-12-09 17:28     ` Claudio Fontana
2020-12-09 18:30       ` Alex Bennée
2020-12-09 19:27         ` Claudio Fontana
2020-12-08 19:48 ` [RFC v9 28/32] accel: introduce AccelCPUClass extending CPUClass Claudio Fontana
2020-12-08 19:48 ` [RFC v9 29/32] i386: split cpu accelerators from cpu.c, using AccelCPUClass Claudio Fontana
2020-12-08 19:48 ` [RFC v9 30/32] cpu: call AccelCPUClass::cpu_realizefn in cpu_exec_realizefn Claudio Fontana
2020-12-08 19:48 ` [RFC v9 31/32] hw/core/cpu: call qemu_init_vcpu in cpu_common_realizefn Claudio Fontana
2020-12-08 19:48 ` [RFC v9 32/32] cpu: introduce cpu_accel_instance_init Claudio Fontana
2020-12-08 20:00 ` [RFC v9 00/22] i386 cleanup Philippe Mathieu-Daudé
2020-12-08 22:15   ` Claudio Fontana
2020-12-09  8:47     ` Paolo Bonzini
2020-12-08 22:00 ` no-reply
2020-12-09 10:22   ` Alex Bennée
2020-12-09 12:58 ` Alex Bennée
2020-12-09 14:10   ` Claudio Fontana

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=87k0trc5xv.fsf@linaro.org \
    --to=alex.bennee@linaro.org \
    --cc=anthony.perard@citrix.com \
    --cc=brogers@suse.com \
    --cc=cfontana@suse.de \
    --cc=colin.xu@intel.com \
    --cc=cota@braap.org \
    --cc=dfaggioli@suse.com \
    --cc=dirty@apple.com \
    --cc=ehabkost@redhat.com \
    --cc=haxm-team@intel.com \
    --cc=jasowang@redhat.com \
    --cc=lvivier@redhat.com \
    --cc=mtosatti@redhat.com \
    --cc=ohering@suse.de \
    --cc=paul@xen.org \
    --cc=pbonzini@redhat.com \
    --cc=peterx@redhat.com \
    --cc=philmd@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=r.bolshakov@yadro.com \
    --cc=richard.henderson@linaro.org \
    --cc=sstabellini@kernel.org \
    --cc=sunilmut@microsoft.com \
    --cc=thuth@redhat.com \
    --cc=wenchao.wang@intel.com \
    /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.