qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Alexander Graf <agraf@suse.de>
To: Cornelia Huck <cornelia.huck@de.ibm.com>, qemu-devel@nongnu.org
Cc: Alexey Kardashevskiy <aik@ozlabs.ru>,
	Paolo Bonzini <pbonzini@redhat.com>,
	qemu-ppc@nongnu.org, Peter Maydell <peter.maydell@linaro.org>
Subject: Re: [Qemu-devel] [PATCH] kvm: make one_reg helpers available for everyone
Date: Tue, 13 May 2014 12:01:21 +0200	[thread overview]
Message-ID: <5371ED71.60208@suse.de> (raw)
In-Reply-To: <1399622806-61662-1-git-send-email-cornelia.huck@de.ibm.com>


On 09.05.14 10:06, Cornelia Huck wrote:
> s390x introduced helper functions for getting/setting one_regs with
> commit 860643bc. However, nothing about these is s390-specific.
>
> Alexey Kardashevskiy had already posted a general version, so let's
> merge the two patches and massage the code a bit.
>
> CC: Alexey Kardashevskiy <aik@ozlabs.ru>
> Signed-off-by: Cornelia Huck <cornelia.huck@de.ibm.com>

Thanks a lot for the patch Conny. Unfortunately Paolo seems to have 
missed this and queued Alexey's patch instead.

Does s390x even compile still with Alexey's patch applied? If it does, 
please post a simple follow-up patch removing your own s390 
implementation. If it doesn't compile, NACK on the current KVM pull request.


Alex

> ---
>   include/sysemu/kvm.h | 20 ++++++++++++++++++++
>   kvm-all.c            | 28 ++++++++++++++++++++++++++++
>   target-s390x/kvm.c   | 29 -----------------------------
>   trace-events         |  6 ++----
>   4 files changed, 50 insertions(+), 33 deletions(-)
>
> diff --git a/include/sysemu/kvm.h b/include/sysemu/kvm.h
> index 5ad4e0e..a6c2823 100644
> --- a/include/sysemu/kvm.h
> +++ b/include/sysemu/kvm.h
> @@ -383,4 +383,24 @@ void kvm_init_irq_routing(KVMState *s);
>    *          > 0: irq chip was created
>    */
>   int kvm_arch_irqchip_create(KVMState *s);
> +
> +/**
> + * kvm_set_one_reg - set a register value in KVM via KVM_SET_ONE_REG ioctl
> + * @id: The register ID
> + * @source: The pointer to the value to be set. It must point to a variable
> + *          of the correct type/size for the register being accessed.
> + *
> + * Returns: 0 on success, or a negative errno on failure.
> + */
> +int kvm_set_one_reg(CPUState *cs, uint64_t id, void *source);
> +
> +/**
> + * kvm_get_one_reg - get a register value from KVM via KVM_GET_ONE_REG ioctl
> + * @id: The register ID
> + * @target: The pointer where the value is to be stored. It must point to a
> + *          variable of the correct type/size for the register being accessed.
> + *
> + * Returns: 0 on success, or a negative errno on failure.
> + */
> +int kvm_get_one_reg(CPUState *cs, uint64_t id, void *target);
>   #endif
> diff --git a/kvm-all.c b/kvm-all.c
> index 5cb7f26..94520e5 100644
> --- a/kvm-all.c
> +++ b/kvm-all.c
> @@ -2114,3 +2114,31 @@ int kvm_create_device(KVMState *s, uint64_t type, bool test)
>   
>       return test ? 0 : create_dev.fd;
>   }
> +
> +int kvm_set_one_reg(CPUState *cs, uint64_t id, void *source)
> +{
> +    struct kvm_one_reg reg;
> +    int r;
> +
> +    reg.id = id;
> +    reg.addr = (uintptr_t) source;
> +    r = kvm_vcpu_ioctl(cs, KVM_SET_ONE_REG, &reg);
> +    if (r) {
> +        trace_kvm_failed_reg_set(id, strerror(r));
> +    }
> +    return r;
> +}
> +
> +int kvm_get_one_reg(CPUState *cs, uint64_t id, void *target)
> +{
> +    struct kvm_one_reg reg;
> +    int r;
> +
> +    reg.id = id;
> +    reg.addr = (uintptr_t) target;
> +    r = kvm_vcpu_ioctl(cs, KVM_GET_ONE_REG, &reg);
> +    if (r) {
> +        trace_kvm_failed_reg_get(id, strerror(r));
> +    }
> +    return r;
> +}
> diff --git a/target-s390x/kvm.c b/target-s390x/kvm.c
> index b7b0edc..ba2dffe 100644
> --- a/target-s390x/kvm.c
> +++ b/target-s390x/kvm.c
> @@ -129,35 +129,6 @@ void kvm_arch_reset_vcpu(CPUState *cpu)
>       }
>   }
>   
> -static int kvm_set_one_reg(CPUState *cs, uint64_t id, void *source)
> -{
> -    struct kvm_one_reg reg;
> -    int r;
> -
> -    reg.id = id;
> -    reg.addr = (uint64_t) source;
> -    r = kvm_vcpu_ioctl(cs, KVM_SET_ONE_REG, &reg);
> -    if (r) {
> -        trace_kvm_failed_reg_set(id, strerror(errno));
> -    }
> -    return r;
> -}
> -
> -static int kvm_get_one_reg(CPUState *cs, uint64_t id, void *target)
> -{
> -    struct kvm_one_reg reg;
> -    int r;
> -
> -    reg.id = id;
> -    reg.addr = (uint64_t) target;
> -    r = kvm_vcpu_ioctl(cs, KVM_GET_ONE_REG, &reg);
> -    if (r) {
> -        trace_kvm_failed_reg_get(id, strerror(errno));
> -    }
> -    return r;
> -}
> -
> -
>   int kvm_arch_put_registers(CPUState *cs, int level)
>   {
>       S390CPU *cpu = S390_CPU(cs);
> diff --git a/trace-events b/trace-events
> index af4449d..2c5b307 100644
> --- a/trace-events
> +++ b/trace-events
> @@ -1230,6 +1230,8 @@ kvm_run_exit(int cpu_index, uint32_t reason) "cpu_index %d, reason %d"
>   kvm_device_ioctl(int fd, int type, void *arg) "dev fd %d, type 0x%x, arg %p"
>   kvm_failed_spr_set(int str, const char *msg) "Warning: Unable to set SPR %d to KVM: %s"
>   kvm_failed_spr_get(int str, const char *msg) "Warning: Unable to retrieve SPR %d from KVM: %s"
> +kvm_failed_reg_get(uint64_t id, const char *msg) "Warning: Unable to retrieve ONEREG %" PRIu64 " from KVM: %s"
> +kvm_failed_reg_set(uint64_t id, const char *msg) "Warning: Unable to set ONEREG %" PRIu64 " to KVM: %s"
>   
>   # memory.c
>   memory_region_ops_read(void *mr, uint64_t addr, uint64_t value, unsigned size) "mr %p addr %#"PRIx64" value %#"PRIx64" size %u"
> @@ -1246,7 +1248,3 @@ xen_pv_mmio_write(uint64_t addr) "WARNING: write to Xen PV Device MMIO space (ad
>   # hw/pci/pci_host.c
>   pci_cfg_read(const char *dev, unsigned devid, unsigned fnid, unsigned offs, unsigned val) "%s %02u:%u @0x%x -> 0x%x"
>   pci_cfg_write(const char *dev, unsigned devid, unsigned fnid, unsigned offs, unsigned val) "%s %02u:%u @0x%x <- 0x%x"
> -
> -# target-s390/kvm.c
> -kvm_failed_reg_get(uint64_t id, const char *msg) "Warning: Unable to retrieve ONEREG %" PRIu64 " from KVM: %s"
> -kvm_failed_reg_set(uint64_t id, const char *msg) "Warning: Unable to set ONEREG %" PRIu64 " to KVM: %s"

  reply	other threads:[~2014-05-13 10:01 UTC|newest]

Thread overview: 27+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-04-03 13:14 [Qemu-devel] [PATCH 0/4] power7/8 migration patches Alexey Kardashevskiy
2014-04-03 13:14 ` [Qemu-devel] [PATCH 1/4] kvm: Add set_one_reg/get_one_reg helpers Alexey Kardashevskiy
2014-05-08 12:27   ` Alexander Graf
2014-05-09  1:35     ` Alexey Kardashevskiy
2014-05-09  8:06       ` [Qemu-devel] [PATCH] kvm: make one_reg helpers available for everyone Cornelia Huck
2014-05-13 10:01         ` Alexander Graf [this message]
2014-04-03 13:14 ` [Qemu-devel] [PATCH 2/4] spapr: Enable DABRX special register Alexey Kardashevskiy
2014-04-03 13:19   ` Alexander Graf
2014-04-04  6:13     ` Alexey Kardashevskiy
2014-04-04 12:21       ` Alexander Graf
2014-04-03 18:42   ` Tom Musta
2014-04-04  0:51     ` Alexey Kardashevskiy
2014-04-04 12:40       ` Tom Musta
2014-04-03 13:14 ` [Qemu-devel] [PATCH 3/4] KVM: PPC: Support POWER8 registers Alexey Kardashevskiy
2014-04-03 13:33   ` Alexander Graf
2014-04-03 19:12     ` Tom Musta
2014-04-04  6:58       ` Alexey Kardashevskiy
2014-04-04 12:23         ` Alexander Graf
2014-04-03 13:14 ` [Qemu-devel] [PATCH 4/4] spapr: Add support for time base offset migration Alexey Kardashevskiy
2014-04-10 12:34   ` Alexander Graf
2014-04-10 14:31     ` Alexey Kardashevskiy
2014-04-11  9:40       ` Alexander Graf
2014-04-11 21:55         ` Benjamin Herrenschmidt
2014-04-11 22:59           ` Alexander Graf
2014-04-11 23:03             ` [Qemu-devel] [Qemu-ppc] " Alexander Graf
2014-04-12  3:44           ` [Qemu-devel] " Alexey Kardashevskiy
2014-04-12  7:25             ` Alexander Graf

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=5371ED71.60208@suse.de \
    --to=agraf@suse.de \
    --cc=aik@ozlabs.ru \
    --cc=cornelia.huck@de.ibm.com \
    --cc=pbonzini@redhat.com \
    --cc=peter.maydell@linaro.org \
    --cc=qemu-devel@nongnu.org \
    --cc=qemu-ppc@nongnu.org \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).