All of lore.kernel.org
 help / color / mirror / Atom feed
From: Marcelo Tosatti <mtosatti@redhat.com>
To: kvm@vger.kernel.org, linux-kernel@vger.kernel.org
Cc: Marcelo Tosatti <mtosatti@redhat.com>
Subject: [patch 1/3] KVM: x86: add per-vcpu option to set guest vcpu -RT priority
Date: Thu, 21 Sep 2017 08:38:36 -0300	[thread overview]
Message-ID: <20170921114039.294210243@redhat.com> (raw)
In-Reply-To: 20170921113835.031375194@redhat.com

[-- Attachment #1: 01-kvm-vcpu-allow-setfifo --]
[-- Type: text/plain, Size: 3906 bytes --]

In preparation to the patch which adds a hypercall for 
the guest vcpu to change states between: 

	-> SCHED_FIFO.
	-> SCHED_NORMAL.

Add controls to:

	1) Allow control to which priority SCHED_FIFO state will be in
	   place (in the host).

	2) Enable/disable ability to use the hypercall, on a per-vcpu
	   basis.


Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com>

---
 arch/x86/include/asm/kvm_host.h |    4 ++++
 arch/x86/include/uapi/asm/kvm.h |    5 +++++
 arch/x86/kvm/x86.c              |   29 +++++++++++++++++++++++++++++
 include/uapi/linux/kvm.h        |    3 +++
 4 files changed, 41 insertions(+)

Index: kvm.fifopriohc-submit/arch/x86/include/asm/kvm_host.h
===================================================================
--- kvm.fifopriohc-submit.orig/arch/x86/include/asm/kvm_host.h
+++ kvm.fifopriohc-submit/arch/x86/include/asm/kvm_host.h
@@ -688,6 +688,10 @@ struct kvm_vcpu_arch {
 
 	/* GPA available (AMD only) */
 	bool gpa_available;
+
+	/* Enable RT prio hypercall */
+	bool enable_rt_prio_hc;
+	int rt_sched_priority;
 };
 
 struct kvm_lpage_info {
Index: kvm.fifopriohc-submit/arch/x86/kvm/x86.c
===================================================================
--- kvm.fifopriohc-submit.orig/arch/x86/kvm/x86.c
+++ kvm.fifopriohc-submit/arch/x86/kvm/x86.c
@@ -2683,6 +2683,7 @@ int kvm_vm_ioctl_check_extension(struct
 	case KVM_CAP_SET_BOOT_CPU_ID:
  	case KVM_CAP_SPLIT_IRQCHIP:
 	case KVM_CAP_IMMEDIATE_EXIT:
+	case KVM_CAP_VCPU_RT_PRIO_HC:
 		r = 1;
 		break;
 	case KVM_CAP_ADJUST_CLOCK:
@@ -3386,6 +3387,25 @@ static int kvm_set_guest_paused(struct k
 	return 0;
 }
 
+static int kvm_vcpu_ioctl_set_rt_prio_hc(struct kvm_vcpu *vcpu,
+					    struct kvm_vcpu_rt_prio *rt_prio)
+{
+	if (rt_prio->enabled == 0) {
+		vcpu->arch.enable_rt_prio_hc = false;
+		return 0;
+	}
+
+	if (rt_prio->sched_priority < 1 ||
+	    rt_prio->sched_priority > 99)
+		return -EINVAL;
+
+
+	vcpu->arch.enable_rt_prio_hc = true;
+	vcpu->arch.rt_sched_priority = rt_prio->sched_priority;
+
+	return 0;
+}
+
 static int kvm_vcpu_ioctl_enable_cap(struct kvm_vcpu *vcpu,
 				     struct kvm_enable_cap *cap)
 {
@@ -3682,6 +3702,15 @@ long kvm_arch_vcpu_ioctl(struct file *fi
 		r = kvm_vcpu_ioctl_enable_cap(vcpu, &cap);
 		break;
 	}
+	case KVM_SET_VCPU_RT_PRIO_HC: {
+		struct kvm_vcpu_rt_prio rt_prio;
+
+		r = -EFAULT;
+		if (copy_from_user(&rt_prio, argp, sizeof(rt_prio)))
+			goto out;
+		r = kvm_vcpu_ioctl_set_rt_prio_hc(vcpu, &rt_prio);
+		break;
+	}
 	default:
 		r = -EINVAL;
 	}
Index: kvm.fifopriohc-submit/include/uapi/linux/kvm.h
===================================================================
--- kvm.fifopriohc-submit.orig/include/uapi/linux/kvm.h
+++ kvm.fifopriohc-submit/include/uapi/linux/kvm.h
@@ -929,6 +929,7 @@ struct kvm_ppc_resize_hpt {
 #define KVM_CAP_PPC_SMT_POSSIBLE 147
 #define KVM_CAP_HYPERV_SYNIC2 148
 #define KVM_CAP_HYPERV_VP_INDEX 149
+#define KVM_CAP_VCPU_RT_PRIO_HC 150
 
 #ifdef KVM_CAP_IRQ_ROUTING
 
@@ -1355,6 +1356,8 @@ struct kvm_s390_ucas_mapping {
 /* Available with KVM_CAP_S390_CMMA_MIGRATION */
 #define KVM_S390_GET_CMMA_BITS      _IOWR(KVMIO, 0xb8, struct kvm_s390_cmma_log)
 #define KVM_S390_SET_CMMA_BITS      _IOW(KVMIO, 0xb9, struct kvm_s390_cmma_log)
+/* Available with KVM_CAP_VCPU_RT_PRIO_HC */
+#define KVM_SET_VCPU_RT_PRIO_HC	_IOW(KVMIO, 0xba, struct kvm_vcpu_rt_prio)
 
 #define KVM_DEV_ASSIGN_ENABLE_IOMMU	(1 << 0)
 #define KVM_DEV_ASSIGN_PCI_2_3		(1 << 1)
Index: kvm.fifopriohc-submit/arch/x86/include/uapi/asm/kvm.h
===================================================================
--- kvm.fifopriohc-submit.orig/arch/x86/include/uapi/asm/kvm.h
+++ kvm.fifopriohc-submit/arch/x86/include/uapi/asm/kvm.h
@@ -353,6 +353,11 @@ struct kvm_xcrs {
 	__u64 padding[16];
 };
 
+struct kvm_vcpu_rt_prio {
+	__u32 enabled;
+	__u32 sched_priority;
+};
+
 /* definition of registers in kvm_run */
 struct kvm_sync_regs {
 };

  reply	other threads:[~2017-09-21 11:44 UTC|newest]

Thread overview: 52+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-09-21 11:38 [patch 0/3] KVM KVM_HC_RT_PRIO hypercall support Marcelo Tosatti
2017-09-21 11:38 ` Marcelo Tosatti [this message]
2017-09-21 11:38 ` [patch 2/3] KVM: x86: KVM_HC_RT_PRIO hypercall (host-side) Marcelo Tosatti
2017-09-21 13:32   ` Konrad Rzeszutek Wilk
2017-09-21 13:49     ` Paolo Bonzini
2017-09-22  1:08       ` Marcelo Tosatti
2017-09-22  7:23         ` Paolo Bonzini
2017-09-22 12:24           ` Marcelo Tosatti
2017-09-21 11:38 ` [patch 3/3] x86: kvm guest side support for KVM_HC_RT_PRIO hypercall Marcelo Tosatti
2017-09-21 13:36   ` Konrad Rzeszutek Wilk
2017-09-21 14:06     ` Peter Zijlstra
2017-09-22  1:10       ` Marcelo Tosatti
2017-09-22 10:00         ` Peter Zijlstra
2017-09-22 10:56           ` Peter Zijlstra
2017-09-22 12:33             ` Marcelo Tosatti
2017-09-22 12:55               ` Peter Zijlstra
2017-09-23 10:56                 ` Paolo Bonzini
2017-09-23 13:41                   ` Peter Zijlstra
2017-09-24 13:05                     ` Paolo Bonzini
2017-09-25  2:57                       ` Marcelo Tosatti
2017-09-25  9:13                         ` Peter Zijlstra
2017-09-25 15:12                           ` Paolo Bonzini
2017-09-26 22:49                             ` [patch 3/3] x86: kvm guest side support for KVM_HC_RT_PRIO hypercall\ Marcelo Tosatti
2017-09-27  9:37                               ` Paolo Bonzini
2017-09-28  0:44                                 ` Marcelo Tosatti
2017-09-28  7:22                                   ` Paolo Bonzini
2017-09-28 21:35                                     ` Marcelo Tosatti
2017-09-28 21:41                                       ` Marcelo Tosatti
2017-09-29  8:18                                       ` Paolo Bonzini
2017-09-29 16:40                                         ` Marcelo Tosatti
2017-09-29 17:05                                           ` Paolo Bonzini
2017-09-29 20:17                                             ` Marcelo Tosatti
2017-10-02 12:30                                               ` Paolo Bonzini
2017-10-02 12:48                                                 ` Peter Zijlstra
2017-09-26 23:22                           ` [patch 3/3] x86: kvm guest side support for KVM_HC_RT_PRIO hypercall Marcelo Tosatti
2017-09-25 16:20                         ` Konrad Rzeszutek Wilk
2017-09-22 12:16           ` Marcelo Tosatti
2017-09-22 12:31             ` Peter Zijlstra
2017-09-22 12:36               ` Marcelo Tosatti
2017-09-22 12:59                 ` Peter Zijlstra
2017-09-25  1:52                   ` Marcelo Tosatti
2017-09-25  8:35                     ` Peter Zijlstra
2017-09-22 12:40               ` [patch 3/3] x86: kvm guest side support for KVM_HC_RT_PRIO hypercall\ Marcelo Tosatti
2017-09-22 13:01                 ` Peter Zijlstra
2017-09-25  2:22                   ` Marcelo Tosatti
2017-09-25  8:58                     ` Peter Zijlstra
2017-09-25 10:41                     ` Thomas Gleixner
2017-09-25 18:28                       ` Jan Kiszka
2017-09-21 17:45 ` [patch 0/3] KVM KVM_HC_RT_PRIO hypercall support Jan Kiszka
2017-09-22  1:19   ` Marcelo Tosatti
2017-09-22  6:23     ` Jan Kiszka
2017-09-26 23:59       ` Marcelo Tosatti

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=20170921114039.294210243@redhat.com \
    --to=mtosatti@redhat.com \
    --cc=kvm@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.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 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.