Skip to content

Commit

Permalink
softmmu: Tidy dirtylimit_dirty_ring_full_time
Browse files Browse the repository at this point in the history
Drop inline marker: let compiler decide.

Change return type to uint64_t: this matches the computation in the
return statement and the local variable assignment in the caller.

Rename local to dirty_ring_size_MB to fix typo.
Simplify conversion to MiB via qemu_target_page_bits and right shift.

Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Thomas Huth <thuth@redhat.com>
Reviewed-by: Juan Quintela <quintela@redhat.com>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
  • Loading branch information
rth7680 committed May 1, 2023
1 parent 7c18f2d commit 3b07992
Showing 1 changed file with 10 additions and 5 deletions.
15 changes: 10 additions & 5 deletions softmmu/dirtylimit.c
Original file line number Diff line number Diff line change
Expand Up @@ -232,18 +232,23 @@ bool dirtylimit_vcpu_index_valid(int cpu_index)
cpu_index >= ms->smp.max_cpus);
}

static inline int64_t dirtylimit_dirty_ring_full_time(uint64_t dirtyrate)
static uint64_t dirtylimit_dirty_ring_full_time(uint64_t dirtyrate)
{
static uint64_t max_dirtyrate;
uint32_t dirty_ring_size = kvm_dirty_ring_size();
uint64_t dirty_ring_size_meory_MB =
dirty_ring_size * qemu_target_page_size() >> 20;
unsigned target_page_bits = qemu_target_page_bits();
uint64_t dirty_ring_size_MB;

/* So far, the largest (non-huge) page size is 64k, i.e. 16 bits. */
assert(target_page_bits < 20);

/* Convert ring size (pages) to MiB (2**20). */
dirty_ring_size_MB = kvm_dirty_ring_size() >> (20 - target_page_bits);

if (max_dirtyrate < dirtyrate) {
max_dirtyrate = dirtyrate;
}

return dirty_ring_size_meory_MB * 1000000 / max_dirtyrate;
return dirty_ring_size_MB * 1000000 / max_dirtyrate;
}

static inline bool dirtylimit_done(uint64_t quota,
Expand Down

0 comments on commit 3b07992

Please sign in to comment.