Message ID | 1379558748-13808-1-git-send-email-aik@ozlabs.ru |
---|---|
State | New |
Headers | show |
On 09/19/2013 12:45 PM, Alexey Kardashevskiy wrote: > This adds QEMU wrappers for KVM_SET_ONE_REG/KVM_GET_ONE_REG ioctls. Ping? > > Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru> > --- > Changes: > v3: > * changed comments > > v2: > * added Doc Comments > * removed error_print > --- > include/sysemu/kvm.h | 21 +++++++++++++++++++++ > kvm-all.c | 18 ++++++++++++++++++ > 2 files changed, 39 insertions(+) > > diff --git a/include/sysemu/kvm.h b/include/sysemu/kvm.h > index c7bc07b..9080ffe 100644 > --- a/include/sysemu/kvm.h > +++ b/include/sysemu/kvm.h > @@ -319,4 +319,25 @@ int kvm_irqchip_remove_irqfd_notifier(KVMState *s, EventNotifier *n, int virq); > void kvm_pc_gsi_handler(void *opaque, int n, int level); > void kvm_pc_setup_irq_routing(bool pci_enabled); > void kvm_init_irq_routing(KVMState *s); > + > +/** > + * kvm_set_one_reg - set a register value in KVM via KVM_SET_ONE_REG ioctl > + * @id: The register ID > + * @addr: The pointer to a value 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 *addr); > + > +/** > + * kvm_get_one_reg - get a register value from KVM via KVM_GET_ONE_REG ioctl > + * @id: The register ID > + * @addr: The pointer to a value 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 *addr); > + > #endif > diff --git a/kvm-all.c b/kvm-all.c > index ded7fc8..cdc32ec 100644 > --- a/kvm-all.c > +++ b/kvm-all.c > @@ -2049,3 +2049,21 @@ int kvm_on_sigbus(int code, void *addr) > { > return kvm_arch_on_sigbus(code, addr); > } > + > +int kvm_set_one_reg(CPUState *cs, uint64_t id, void *addr) > +{ > + struct kvm_one_reg reg = { > + .id = id, > + .addr = (uintptr_t)addr, > + }; > + return kvm_vcpu_ioctl(cs, KVM_SET_ONE_REG, ®); > +} > + > +int kvm_get_one_reg(CPUState *cs, uint64_t id, void *addr) > +{ > + struct kvm_one_reg reg = { > + .id = id, > + .addr = (uintptr_t)addr, > + }; > + return kvm_vcpu_ioctl(cs, KVM_GET_ONE_REG, ®); > +} >
Il 27/09/2013 10:02, Alexey Kardashevskiy ha scritto: > On 09/19/2013 12:45 PM, Alexey Kardashevskiy wrote: >> This adds QEMU wrappers for KVM_SET_ONE_REG/KVM_GET_ONE_REG ioctls. > > Ping? > > >> >> Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru> >> --- >> Changes: >> v3: >> * changed comments >> >> v2: >> * added Doc Comments >> * removed error_print >> --- >> include/sysemu/kvm.h | 21 +++++++++++++++++++++ >> kvm-all.c | 18 ++++++++++++++++++ >> 2 files changed, 39 insertions(+) >> >> diff --git a/include/sysemu/kvm.h b/include/sysemu/kvm.h >> index c7bc07b..9080ffe 100644 >> --- a/include/sysemu/kvm.h >> +++ b/include/sysemu/kvm.h >> @@ -319,4 +319,25 @@ int kvm_irqchip_remove_irqfd_notifier(KVMState *s, EventNotifier *n, int virq); >> void kvm_pc_gsi_handler(void *opaque, int n, int level); >> void kvm_pc_setup_irq_routing(bool pci_enabled); >> void kvm_init_irq_routing(KVMState *s); >> + >> +/** >> + * kvm_set_one_reg - set a register value in KVM via KVM_SET_ONE_REG ioctl >> + * @id: The register ID >> + * @addr: The pointer to a value 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 *addr); >> + >> +/** >> + * kvm_get_one_reg - get a register value from KVM via KVM_GET_ONE_REG ioctl >> + * @id: The register ID >> + * @addr: The pointer to a value 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 *addr); >> + >> #endif >> diff --git a/kvm-all.c b/kvm-all.c >> index ded7fc8..cdc32ec 100644 >> --- a/kvm-all.c >> +++ b/kvm-all.c >> @@ -2049,3 +2049,21 @@ int kvm_on_sigbus(int code, void *addr) >> { >> return kvm_arch_on_sigbus(code, addr); >> } >> + >> +int kvm_set_one_reg(CPUState *cs, uint64_t id, void *addr) >> +{ >> + struct kvm_one_reg reg = { >> + .id = id, >> + .addr = (uintptr_t)addr, >> + }; >> + return kvm_vcpu_ioctl(cs, KVM_SET_ONE_REG, ®); >> +} >> + >> +int kvm_get_one_reg(CPUState *cs, uint64_t id, void *addr) >> +{ >> + struct kvm_one_reg reg = { >> + .id = id, >> + .addr = (uintptr_t)addr, >> + }; >> + return kvm_vcpu_ioctl(cs, KVM_GET_ONE_REG, ®); >> +} >> > > Acked-by: Paolo Bonzini <pbonzini@redhat.com> Include it with the acked-by together with the first patch that needs it. Alex can pick it up. Paolo
On 09/27/2013 06:59 PM, Paolo Bonzini wrote: > Il 27/09/2013 10:02, Alexey Kardashevskiy ha scritto: >> On 09/19/2013 12:45 PM, Alexey Kardashevskiy wrote: >>> This adds QEMU wrappers for KVM_SET_ONE_REG/KVM_GET_ONE_REG ioctls. >> >> Ping? >> >> >>> >>> Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru> >>> --- >>> Changes: >>> v3: >>> * changed comments >>> >>> v2: >>> * added Doc Comments >>> * removed error_print >>> --- >>> include/sysemu/kvm.h | 21 +++++++++++++++++++++ >>> kvm-all.c | 18 ++++++++++++++++++ >>> 2 files changed, 39 insertions(+) >>> >>> diff --git a/include/sysemu/kvm.h b/include/sysemu/kvm.h >>> index c7bc07b..9080ffe 100644 >>> --- a/include/sysemu/kvm.h >>> +++ b/include/sysemu/kvm.h >>> @@ -319,4 +319,25 @@ int kvm_irqchip_remove_irqfd_notifier(KVMState *s, EventNotifier *n, int virq); >>> void kvm_pc_gsi_handler(void *opaque, int n, int level); >>> void kvm_pc_setup_irq_routing(bool pci_enabled); >>> void kvm_init_irq_routing(KVMState *s); >>> + >>> +/** >>> + * kvm_set_one_reg - set a register value in KVM via KVM_SET_ONE_REG ioctl >>> + * @id: The register ID >>> + * @addr: The pointer to a value 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 *addr); >>> + >>> +/** >>> + * kvm_get_one_reg - get a register value from KVM via KVM_GET_ONE_REG ioctl >>> + * @id: The register ID >>> + * @addr: The pointer to a value 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 *addr); >>> + >>> #endif >>> diff --git a/kvm-all.c b/kvm-all.c >>> index ded7fc8..cdc32ec 100644 >>> --- a/kvm-all.c >>> +++ b/kvm-all.c >>> @@ -2049,3 +2049,21 @@ int kvm_on_sigbus(int code, void *addr) >>> { >>> return kvm_arch_on_sigbus(code, addr); >>> } >>> + >>> +int kvm_set_one_reg(CPUState *cs, uint64_t id, void *addr) >>> +{ >>> + struct kvm_one_reg reg = { >>> + .id = id, >>> + .addr = (uintptr_t)addr, >>> + }; >>> + return kvm_vcpu_ioctl(cs, KVM_SET_ONE_REG, ®); >>> +} >>> + >>> +int kvm_get_one_reg(CPUState *cs, uint64_t id, void *addr) >>> +{ >>> + struct kvm_one_reg reg = { >>> + .id = id, >>> + .addr = (uintptr_t)addr, >>> + }; >>> + return kvm_vcpu_ioctl(cs, KVM_GET_ONE_REG, ®); >>> +} >>> >> >> > > Acked-by: Paolo Bonzini <pbonzini@redhat.com> > > Include it with the acked-by together with the first patch that needs > it. Alex can pick it up. Why to wait? Alex, please pick it up. The first patch which needs it is "[PATCH] spapr: add "compat" machine option", posted earlier today.
Il 27/09/2013 11:08, Alexey Kardashevskiy ha scritto: >> > Include it with the acked-by together with the first patch that needs >> > it. Alex can pick it up. > > Why to wait? > > Alex, please pick it up. > > The first patch which needs it is "[PATCH] spapr: add "compat" machine > option", posted earlier today. Perfect. I just didn't want to force Alex to wait for the next pull request from me or Gleb. Paolo
On 09/27/2013 07:08 PM, Alexey Kardashevskiy wrote: > On 09/27/2013 06:59 PM, Paolo Bonzini wrote: >> Il 27/09/2013 10:02, Alexey Kardashevskiy ha scritto: >>> On 09/19/2013 12:45 PM, Alexey Kardashevskiy wrote: >>>> This adds QEMU wrappers for KVM_SET_ONE_REG/KVM_GET_ONE_REG ioctls. >>> >>> Ping? >>> >>> >>>> >>>> Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru> >>>> --- >>>> Changes: >>>> v3: >>>> * changed comments >>>> >>>> v2: >>>> * added Doc Comments >>>> * removed error_print >>>> --- >>>> include/sysemu/kvm.h | 21 +++++++++++++++++++++ >>>> kvm-all.c | 18 ++++++++++++++++++ >>>> 2 files changed, 39 insertions(+) >>>> >>>> diff --git a/include/sysemu/kvm.h b/include/sysemu/kvm.h >>>> index c7bc07b..9080ffe 100644 >>>> --- a/include/sysemu/kvm.h >>>> +++ b/include/sysemu/kvm.h >>>> @@ -319,4 +319,25 @@ int kvm_irqchip_remove_irqfd_notifier(KVMState *s, EventNotifier *n, int virq); >>>> void kvm_pc_gsi_handler(void *opaque, int n, int level); >>>> void kvm_pc_setup_irq_routing(bool pci_enabled); >>>> void kvm_init_irq_routing(KVMState *s); >>>> + >>>> +/** >>>> + * kvm_set_one_reg - set a register value in KVM via KVM_SET_ONE_REG ioctl >>>> + * @id: The register ID >>>> + * @addr: The pointer to a value 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 *addr); >>>> + >>>> +/** >>>> + * kvm_get_one_reg - get a register value from KVM via KVM_GET_ONE_REG ioctl >>>> + * @id: The register ID >>>> + * @addr: The pointer to a value 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 *addr); >>>> + >>>> #endif >>>> diff --git a/kvm-all.c b/kvm-all.c >>>> index ded7fc8..cdc32ec 100644 >>>> --- a/kvm-all.c >>>> +++ b/kvm-all.c >>>> @@ -2049,3 +2049,21 @@ int kvm_on_sigbus(int code, void *addr) >>>> { >>>> return kvm_arch_on_sigbus(code, addr); >>>> } >>>> + >>>> +int kvm_set_one_reg(CPUState *cs, uint64_t id, void *addr) >>>> +{ >>>> + struct kvm_one_reg reg = { >>>> + .id = id, >>>> + .addr = (uintptr_t)addr, >>>> + }; >>>> + return kvm_vcpu_ioctl(cs, KVM_SET_ONE_REG, ®); >>>> +} >>>> + >>>> +int kvm_get_one_reg(CPUState *cs, uint64_t id, void *addr) >>>> +{ >>>> + struct kvm_one_reg reg = { >>>> + .id = id, >>>> + .addr = (uintptr_t)addr, >>>> + }; >>>> + return kvm_vcpu_ioctl(cs, KVM_GET_ONE_REG, ®); >>>> +} >>>> >>> >>> >> >> Acked-by: Paolo Bonzini <pbonzini@redhat.com> >> >> Include it with the acked-by together with the first patch that needs >> it. Alex can pick it up. > > > Why to wait? > > Alex, please pick it up. > > The first patch which needs it is "[PATCH] spapr: add "compat" machine > option", posted earlier today. Alex did not pick it up. And I use this patch in 2 of my series (client-arch-support and power8 migration patch) so I would really love not to post it twice. This does not need to go to 2.0-lalala but would be nice to have it in some kvm-next. Thanks!
On 03/20/2014 11:35 PM, Alexey Kardashevskiy wrote: > On 09/27/2013 07:08 PM, Alexey Kardashevskiy wrote: >> On 09/27/2013 06:59 PM, Paolo Bonzini wrote: >>> Il 27/09/2013 10:02, Alexey Kardashevskiy ha scritto: >>>> On 09/19/2013 12:45 PM, Alexey Kardashevskiy wrote: >>>>> This adds QEMU wrappers for KVM_SET_ONE_REG/KVM_GET_ONE_REG ioctls. >>>> >>>> Ping? >>>> >>>> >>>>> >>>>> Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru> >>>>> --- >>>>> Changes: >>>>> v3: >>>>> * changed comments >>>>> >>>>> v2: >>>>> * added Doc Comments >>>>> * removed error_print >>>>> --- >>>>> include/sysemu/kvm.h | 21 +++++++++++++++++++++ >>>>> kvm-all.c | 18 ++++++++++++++++++ >>>>> 2 files changed, 39 insertions(+) >>>>> >>>>> diff --git a/include/sysemu/kvm.h b/include/sysemu/kvm.h >>>>> index c7bc07b..9080ffe 100644 >>>>> --- a/include/sysemu/kvm.h >>>>> +++ b/include/sysemu/kvm.h >>>>> @@ -319,4 +319,25 @@ int kvm_irqchip_remove_irqfd_notifier(KVMState *s, EventNotifier *n, int virq); >>>>> void kvm_pc_gsi_handler(void *opaque, int n, int level); >>>>> void kvm_pc_setup_irq_routing(bool pci_enabled); >>>>> void kvm_init_irq_routing(KVMState *s); >>>>> + >>>>> +/** >>>>> + * kvm_set_one_reg - set a register value in KVM via KVM_SET_ONE_REG ioctl >>>>> + * @id: The register ID >>>>> + * @addr: The pointer to a value 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 *addr); >>>>> + >>>>> +/** >>>>> + * kvm_get_one_reg - get a register value from KVM via KVM_GET_ONE_REG ioctl >>>>> + * @id: The register ID >>>>> + * @addr: The pointer to a value 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 *addr); >>>>> + >>>>> #endif >>>>> diff --git a/kvm-all.c b/kvm-all.c >>>>> index ded7fc8..cdc32ec 100644 >>>>> --- a/kvm-all.c >>>>> +++ b/kvm-all.c >>>>> @@ -2049,3 +2049,21 @@ int kvm_on_sigbus(int code, void *addr) >>>>> { >>>>> return kvm_arch_on_sigbus(code, addr); >>>>> } >>>>> + >>>>> +int kvm_set_one_reg(CPUState *cs, uint64_t id, void *addr) >>>>> +{ >>>>> + struct kvm_one_reg reg = { >>>>> + .id = id, >>>>> + .addr = (uintptr_t)addr, >>>>> + }; >>>>> + return kvm_vcpu_ioctl(cs, KVM_SET_ONE_REG, ®); >>>>> +} >>>>> + >>>>> +int kvm_get_one_reg(CPUState *cs, uint64_t id, void *addr) >>>>> +{ >>>>> + struct kvm_one_reg reg = { >>>>> + .id = id, >>>>> + .addr = (uintptr_t)addr, >>>>> + }; >>>>> + return kvm_vcpu_ioctl(cs, KVM_GET_ONE_REG, ®); >>>>> +} >>>>> >>>> >>>> >>> >>> Acked-by: Paolo Bonzini <pbonzini@redhat.com> >>> >>> Include it with the acked-by together with the first patch that needs >>> it. Alex can pick it up. >> >> >> Why to wait? >> >> Alex, please pick it up. >> >> The first patch which needs it is "[PATCH] spapr: add "compat" machine >> option", posted earlier today. > > Alex did not pick it up. And I use this patch in 2 of my series > (client-arch-support and power8 migration patch) so I would really love not > to post it twice. This does not need to go to 2.0-lalala but would be nice > to have it in some kvm-next. Thanks! Paolo, ping! Thanks!
Il 26/03/2014 15:23, Alexey Kardashevskiy ha scritto: >> Alex did not pick it up. And I use this patch in 2 of my series >> (client-arch-support and power8 migration patch) so I would really love not >> to post it twice. This does not need to go to 2.0-lalala but would be nice >> to have it in some kvm-next. Thanks! > > > Paolo, ping! Applying it now to uq/master, thanks. Paolo
On 03/27/2014 01:35 AM, Paolo Bonzini wrote: > Il 26/03/2014 15:23, Alexey Kardashevskiy ha scritto: >>> Alex did not pick it up. And I use this patch in 2 of my series >>> (client-arch-support and power8 migration patch) so I would really love not >>> to post it twice. This does not need to go to 2.0-lalala but would be nice >>> to have it in some kvm-next. Thanks! >> >> >> Paolo, ping! > > Applying it now to uq/master, thanks. I looked at git://github.com/bonzini/qemu.git, "uq/master", it is 7 months old so I am obviously looking at the wrong repo. Where exactly did the subj patch go? Or you just do not push "uq/master" very often? :) Thanks!
> > Applying it now to uq/master, thanks. > > I looked at git://github.com/bonzini/qemu.git, "uq/master", it is 7 months > old so I am obviously looking at the wrong repo. Where exactly did the subj > patch go? Or you just do not push "uq/master" very often? :) Thanks! It's git://git.kernel.org/pub/scm/virt/kvm/qemu-kvm.git -- I'll add to my workflow to push uq/master to github as well, thanks for the suggestion. Paolo
diff --git a/include/sysemu/kvm.h b/include/sysemu/kvm.h index c7bc07b..9080ffe 100644 --- a/include/sysemu/kvm.h +++ b/include/sysemu/kvm.h @@ -319,4 +319,25 @@ int kvm_irqchip_remove_irqfd_notifier(KVMState *s, EventNotifier *n, int virq); void kvm_pc_gsi_handler(void *opaque, int n, int level); void kvm_pc_setup_irq_routing(bool pci_enabled); void kvm_init_irq_routing(KVMState *s); + +/** + * kvm_set_one_reg - set a register value in KVM via KVM_SET_ONE_REG ioctl + * @id: The register ID + * @addr: The pointer to a value 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 *addr); + +/** + * kvm_get_one_reg - get a register value from KVM via KVM_GET_ONE_REG ioctl + * @id: The register ID + * @addr: The pointer to a value 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 *addr); + #endif diff --git a/kvm-all.c b/kvm-all.c index ded7fc8..cdc32ec 100644 --- a/kvm-all.c +++ b/kvm-all.c @@ -2049,3 +2049,21 @@ int kvm_on_sigbus(int code, void *addr) { return kvm_arch_on_sigbus(code, addr); } + +int kvm_set_one_reg(CPUState *cs, uint64_t id, void *addr) +{ + struct kvm_one_reg reg = { + .id = id, + .addr = (uintptr_t)addr, + }; + return kvm_vcpu_ioctl(cs, KVM_SET_ONE_REG, ®); +} + +int kvm_get_one_reg(CPUState *cs, uint64_t id, void *addr) +{ + struct kvm_one_reg reg = { + .id = id, + .addr = (uintptr_t)addr, + }; + return kvm_vcpu_ioctl(cs, KVM_GET_ONE_REG, ®); +}
This adds QEMU wrappers for KVM_SET_ONE_REG/KVM_GET_ONE_REG ioctls. Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru> --- Changes: v3: * changed comments v2: * added Doc Comments * removed error_print --- include/sysemu/kvm.h | 21 +++++++++++++++++++++ kvm-all.c | 18 ++++++++++++++++++ 2 files changed, 39 insertions(+)