qemu-devel
[Top][All Lists]
Advanced

[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




reply via email to

[Prev in Thread] Current Thread [Next in Thread]