All of lore.kernel.org
 help / color / mirror / Atom feed
From: Paolo Bonzini <pbonzini@redhat.com>
To: Markus Armbruster <armbru@redhat.com>
Cc: borntraeger@de.ibm.com, mtosatti@redhat.com,
	qemu-devel@nongnu.org, stefano.stabellini@eu.citrix.com,
	agraf@suse.de
Subject: Re: [Qemu-devel] [PATCH RFC 4/8] s390: Simplify the RAM allocation hook
Date: Thu, 13 Jun 2013 18:14:46 -0400	[thread overview]
Message-ID: <51BA4456.4060305@redhat.com> (raw)
In-Reply-To: <1371106939-6968-5-git-send-email-armbru@redhat.com>

Il 13/06/2013 03:02, Markus Armbruster ha scritto:
> Less code and ifdeffery.

Less ifdeffery is of course fine, but please add instead
kvm_arch_ram_alloc to the other target-*/kvm.c files.  It can just
return NULL.  I think this may affect the karma that comes from a
negative diffstat, but it is more similar to other kvm_arch_ hooks.

Paolo

> Signed-off-by: Markus Armbruster <armbru@redhat.com>
> ---
>  exec.c               |  4 ++--
>  include/sysemu/kvm.h |  3 +--
>  kvm-all.c            | 15 ++-------------
>  target-s390x/kvm.c   | 17 ++++++-----------
>  4 files changed, 11 insertions(+), 28 deletions(-)
> 
> diff --git a/exec.c b/exec.c
> index 4dbb0f1..7552e3c 100644
> --- a/exec.c
> +++ b/exec.c
> @@ -1098,9 +1098,9 @@ ram_addr_t qemu_ram_alloc_from_ptr(ram_addr_t size, void *host,
>  #endif
>          }
>          if (!new_block->host) {
> -            if (kvm_enabled()) {
> +            if (kvm_enabled() && kvm_arch_ram_alloc) {
>                  /* some s390/kvm configurations have special constraints */
> -                new_block->host = kvm_ram_alloc(size);
> +                new_block->host = kvm_arch_ram_alloc(size);
>              } else {
>                  new_block->host = qemu_anon_ram_alloc(size);
>              }
> diff --git a/include/sysemu/kvm.h b/include/sysemu/kvm.h
> index 8b19322..dd79914 100644
> --- a/include/sysemu/kvm.h
> +++ b/include/sysemu/kvm.h
> @@ -152,8 +152,7 @@ int kvm_init_vcpu(CPUState *cpu);
>  int kvm_cpu_exec(CPUArchState *env);
>  
>  #if !defined(CONFIG_USER_ONLY)
> -void *kvm_ram_alloc(ram_addr_t size);
> -void *kvm_arch_ram_alloc(ram_addr_t size);
> +extern void *(*kvm_arch_ram_alloc)(ram_addr_t size);
>  #endif
>  
>  void kvm_setup_guest_memory(void *start, size_t size);
> diff --git a/kvm-all.c b/kvm-all.c
> index 405480e..5e0cc9b 100644
> --- a/kvm-all.c
> +++ b/kvm-all.c
> @@ -119,6 +119,8 @@ static const KVMCapabilityInfo kvm_required_capabilites[] = {
>      KVM_CAP_LAST_INFO
>  };
>  
> +void *(*kvm_arch_ram_alloc)(ram_addr_t size);
> +
>  static KVMSlot *kvm_alloc_slot(KVMState *s)
>  {
>      int i;
> @@ -1816,19 +1818,6 @@ int kvm_has_intx_set_mask(void)
>      return kvm_state->intx_set_mask;
>  }
>  
> -void *kvm_ram_alloc(ram_addr_t size)
> -{
> -#ifdef TARGET_S390X
> -    void *mem;
> -
> -    mem = kvm_arch_ram_alloc(size);
> -    if (mem) {
> -        return mem;
> -    }
> -#endif
> -    return qemu_anon_ram_alloc(size);
> -}
> -
>  void kvm_setup_guest_memory(void *start, size_t size)
>  {
>  #ifdef CONFIG_VALGRIND_H
> diff --git a/target-s390x/kvm.c b/target-s390x/kvm.c
> index 862fb12..be802ab 100644
> --- a/target-s390x/kvm.c
> +++ b/target-s390x/kvm.c
> @@ -92,9 +92,15 @@ const KVMCapabilityInfo kvm_arch_required_capabilities[] = {
>  
>  static int cap_sync_regs;
>  
> +static void *legacy_s390_alloc(ram_addr_t size);
> +
>  int kvm_arch_init(KVMState *s)
>  {
>      cap_sync_regs = kvm_check_extension(s, KVM_CAP_SYNC_REGS);
> +    if (!kvm_check_extension(s, KVM_CAP_S390_GMAP)
> +        || !kvm_check_extension(s, KVM_CAP_S390_COW)) {
> +        kvm_arch_ram_alloc = legacy_s390_alloc;
> +    }
>      return 0;
>  }
>  
> @@ -332,17 +338,6 @@ static void *legacy_s390_alloc(ram_addr_t size)
>      return mem;
>  }
>  
> -void *kvm_arch_ram_alloc(ram_addr_t size)
> -{
> -    /* Can we use the standard allocation ? */
> -    if (kvm_check_extension(kvm_state, KVM_CAP_S390_GMAP) &&
> -        kvm_check_extension(kvm_state, KVM_CAP_S390_COW)) {
> -        return NULL;
> -    } else {
> -        return legacy_s390_alloc(size);
> -    }
> -}
> -
>  int kvm_arch_insert_sw_breakpoint(CPUState *cs, struct kvm_sw_breakpoint *bp)
>  {
>      S390CPU *cpu = S390_CPU(cs);
> 

  parent reply	other threads:[~2013-06-13 22:14 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-06-13  7:02 [Qemu-devel] [PATCH RFC 0/8] Guest memory allocation fixes & cleanup Markus Armbruster
2013-06-13  7:02 ` [Qemu-devel] [PATCH RFC 1/8] exec: Fix Xen RAM allocation with unusual options Markus Armbruster
2013-06-13 11:54   ` Stefano Stabellini
2013-06-13  7:02 ` [Qemu-devel] [PATCH RFC 2/8] exec: Clean up fall back when -mem-path allocation fails Markus Armbruster
2013-06-13 22:12   ` Paolo Bonzini
2013-06-13  7:02 ` [Qemu-devel] [PATCH RFC 3/8] exec: Reduce ifdeffery around -mem-path Markus Armbruster
2013-06-13  7:02 ` [Qemu-devel] [PATCH RFC 4/8] s390: Simplify the RAM allocation hook Markus Armbruster
2013-06-13  8:19   ` Andreas Färber
2013-06-13 22:14   ` Paolo Bonzini [this message]
2013-06-13  7:02 ` [Qemu-devel] [PATCH RFC 5/8] s390: Make qemu_ram_remap() consistent with allocation Markus Armbruster
2013-06-13 22:19   ` Paolo Bonzini
2013-06-13  7:02 ` [Qemu-devel] [PATCH RFC 6/8] exec: Clean up unnecessary S390 ifdeffery Markus Armbruster
2013-06-13 22:21   ` Paolo Bonzini
2013-06-14  8:06     ` Markus Armbruster
2013-06-15 17:26       ` Paolo Bonzini
2013-06-13  7:02 ` [Qemu-devel] [PATCH RFC 7/8] exec: Don't abort when we can't allocate guest memory Markus Armbruster
2013-06-13  8:33   ` Andreas Färber
2013-06-13 16:02   ` Richard Henderson
2013-06-13 17:27     ` Markus Armbruster
2013-06-13 16:21   ` Peter Maydell
2013-06-13 17:27     ` Markus Armbruster
2013-06-13  7:02 ` [Qemu-devel] [PATCH RFC 8/8] pc_sysfw: Fix ISA BIOS init for ridiculously big flash Markus Armbruster
2013-06-13  7:05 ` [Qemu-devel] [PATCH RFC 0/8] Guest memory allocation fixes & cleanup Markus Armbruster

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=51BA4456.4060305@redhat.com \
    --to=pbonzini@redhat.com \
    --cc=agraf@suse.de \
    --cc=armbru@redhat.com \
    --cc=borntraeger@de.ibm.com \
    --cc=mtosatti@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=stefano.stabellini@eu.citrix.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.