[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH v16 00/23] i386 cleanup PART 2
From: |
Claudio Fontana |
Subject: |
Re: [PATCH v16 00/23] i386 cleanup PART 2 |
Date: |
Mon, 15 Mar 2021 10:44:50 +0100 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.12.0 |
Hi Philippe,
On 3/14/21 1:00 AM, Philippe Mathieu-Daudé wrote:
> Hi Claudio,
>
> On 2/4/21 5:39 PM, Claudio Fontana wrote:
>> v15 -> v16:
>>
>> * cpu: Move synchronize_from_tb() to tcg_ops:
>> - adjusted comments (Alex)
>>
>> * cpu: tcg_ops: move to tcg-cpu-ops.h, keep a pointer in CPUClass:
>> - remove forward decl. of AccelCPUClass, should be in a later patch. (Alex)
>> - simplified comment about tcg_ops in struct CPUClass (Alex)
>> - remove obsolete comment about ARM blocking TCGCPUOps from being const.
>> (Alex)
>>
>> * accel: replace struct CpusAccel with AccelOpsClass:
>> - reworded commit message to be clearer about the objective (Alex)
>>
>> * accel: introduce AccelCPUClass extending CPUClass
>> - reworded commit message to be clearer about the objective (Alex)
>>
>> * hw/core/cpu: call qemu_init_vcpu in cpu_common_realizefn:
>> - dropped this patch (Alex, Philippe)
>>
>> will try again later, also in the context of:
>> https://www.mail-archive.com/qemu-devel@nongnu.org/msg686480.html
>>
>> * accel: introduce new accessor functions
>> - squashed comments in previous patch introducing accel-cpu.h. (Philippe)
>>
>> * accel-cpu: make cpu_realizefn return a bool
>> - split in two patches, separating the change to the phys_bits check
>> (Philippe)
>
> I am looking at this code:
>
> $ git grep tcg_ softmmu/physmem.c
> softmmu/physmem.c:153:static void
> tcg_log_global_after_sync(MemoryListener *listener);
> softmmu/physmem.c:154:static void tcg_commit(MemoryListener *listener);
> softmmu/physmem.c:161: * @tcg_as_listener: listener for tracking changes
> to the AddressSpace
> softmmu/physmem.c:167: MemoryListener tcg_as_listener;
> softmmu/physmem.c:590:static void tcg_iommu_unmap_notify(IOMMUNotifier
> *n, IOMMUTLBEntry *iotlb)
> softmmu/physmem.c:606:static void tcg_register_iommu_notifier(CPUState *cpu,
> softmmu/physmem.c:640: tcg_iommu_unmap_notify,
> softmmu/physmem.c:654:void tcg_iommu_free_notifier_list(CPUState *cpu)
> softmmu/physmem.c:668:void tcg_iommu_init_notifier_list(CPUState *cpu)
> softmmu/physmem.c:698: tcg_register_iommu_notifier(cpu, iommu_mr,
> iommu_idx);
> softmmu/physmem.c:761: if (tcg_enabled()) {
> softmmu/physmem.c:762:
> newas->tcg_as_listener.log_global_after_sync = tcg_log_global_after_sync;
> softmmu/physmem.c:763: newas->tcg_as_listener.commit = tcg_commit;
> softmmu/physmem.c:764:
> memory_listener_register(&newas->tcg_as_listener, as);
> softmmu/physmem.c:891: assert(tcg_enabled());
> softmmu/physmem.c:904: if (cc->tcg_ops->adjust_watchpoint_address) {
> softmmu/physmem.c:906: addr =
> cc->tcg_ops->adjust_watchpoint_address(cpu, addr, len);
> softmmu/physmem.c:927: if (wp->flags & BP_CPU &&
> cc->tcg_ops->debug_check_watchpoint &&
> softmmu/physmem.c:928:
> !cc->tcg_ops->debug_check_watchpoint(cpu, wp)) {
> softmmu/physmem.c:1004: assert(tcg_enabled());
> softmmu/physmem.c:1059: if (dirty && tcg_enabled()) {
> softmmu/physmem.c:1107: if (tcg_enabled()) {
> softmmu/physmem.c:2605:static void
> tcg_log_global_after_sync(MemoryListener *listener)
> softmmu/physmem.c:2634: cpuas = container_of(listener,
> CPUAddressSpace, tcg_as_listener);
> softmmu/physmem.c:2639:static void tcg_commit(MemoryListener *listener)
> softmmu/physmem.c:2644: assert(tcg_enabled());
> softmmu/physmem.c:2647: cpuas = container_of(listener,
> CPUAddressSpace, tcg_as_listener);
> softmmu/physmem.c:2700: assert(tcg_enabled());
> softmmu/physmem.c:3000: if (tcg_enabled()) {
>
> which reminded me the starter generic part of your effort
> (already merged).
>
> Do you have plans for this code?
>
> Similarly:
>
> $ git grep kvm_ softmmu/physmem.c
> softmmu/physmem.c:752: assert(asidx == 0 || !kvm_enabled());
> softmmu/physmem.c:1295: if (kvm_enabled())
> softmmu/physmem.c:1296: kvm_flush_coalesced_mmio_buffer();
> softmmu/physmem.c:1566: if (kvm_enabled()) {
> softmmu/physmem.c:2046: if (kvm_enabled() && !kvm_has_sync_mmu()) {
>
> Thanks,
>
> Phil.
>
Hi Phil,
indeed it is a juicy target for splitting things between TCG-only and non-TCG
code,
specifically as we discovered that we don't need any of the watchpoint stuff
outside of TCG.
I think I am tied up in the ARM code for a while,
so if you are asking because you want to start there, just go ahead,
I'll try to review, otherwise I'll get back to it (and to i386) later on.
Ciao,
Claudio