On 3/15/21 10:44 AM, Claudio Fontana wrote: > Hi Philippe, > > On 3/14/21 1:00 AM, Philippe Mathieu-Daudé wrote: >> Hi Claudio,
>> >> 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. No plan yet. I looked back at what I did + your patches to get the big picture again, and had a look at my notes and wip patches. Since you are making big changes/progress, I now prefer to check upfront to avoid duplicated effort. Regards, Phil.