From patchwork Thu Jan 14 14:49:11 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jonathan Creekmore X-Patchwork-Id: 8032461 Return-Path: X-Original-To: patchwork-xen-devel@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork2.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.136]) by patchwork2.web.kernel.org (Postfix) with ESMTP id A5B15BEEE5 for ; Thu, 14 Jan 2016 14:52:18 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id A6A9F20411 for ; Thu, 14 Jan 2016 14:52:17 +0000 (UTC) Received: from lists.xen.org (lists.xenproject.org [50.57.142.19]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 839B42044B for ; Thu, 14 Jan 2016 14:52:15 +0000 (UTC) Received: from localhost ([127.0.0.1] helo=lists.xen.org) by lists.xen.org with esmtp (Exim 4.72) (envelope-from ) id 1aJjDT-0002S2-3W; Thu, 14 Jan 2016 14:49:35 +0000 Received: from mail6.bemta5.messagelabs.com ([195.245.231.135]) by lists.xen.org with esmtp (Exim 4.72) (envelope-from ) id 1aJjDQ-0002Ka-RL for xen-devel@lists.xenproject.org; Thu, 14 Jan 2016 14:49:33 +0000 Received: from [85.158.139.211] by server-14.bemta-5.messagelabs.com id D3/8A-18633-475B7965; Thu, 14 Jan 2016 14:49:24 +0000 X-Env-Sender: jonathan.creekmore@gmail.com X-Msg-Ref: server-5.tower-206.messagelabs.com!1452782963!15894719!1 X-Originating-IP: [209.85.220.195] X-SpamReason: No, hits=0.5 required=7.0 tests=BODY_RANDOM_LONG X-StarScan-Received: X-StarScan-Version: 7.35.1; banners=-,-,- X-VirusChecked: Checked Received: (qmail 17137 invoked from network); 14 Jan 2016 14:49:24 -0000 Received: from mail-qk0-f195.google.com (HELO mail-qk0-f195.google.com) (209.85.220.195) by server-5.tower-206.messagelabs.com with AES128-GCM-SHA256 encrypted SMTP; 14 Jan 2016 14:49:24 -0000 Received: by mail-qk0-f195.google.com with SMTP id e124so14705641qkc.3 for ; Thu, 14 Jan 2016 06:49:24 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=Mr60pbrgKCRPKRNjbzhxl0/1vnH/QoQIsvbKdUhktvY=; b=qlQTFcxW8Yhpp7UsOVMchi8kCMG3f2ca6klGJ6H5DpP0AfAD9Z/xXHsLKDSr0VjJKD lyddliqIJrC8aecAkt6oqFNl+nYL65m5cFJmtC3vsryLjBBR8NQIhQHtMkwKfvjOIrR4 i/fPILo4EswdszJzUGABJiC0w10LptRKxGcjbIJ/D52R/UaPjdcHMfDfQYYa4vrG1OJw /TRXZlISmnq4qzFPucmV40JhV5aCMlOb4PlmgPAOIhJ2Uag8Sz5FgkxoBLQ9iGe/pPbY 31idr597fOJfnTdWu0JCcnZDxHm66lcK3YnnscycViyUc7dFfyfWQItdQH+ON5xzt/sx wHFQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=Mr60pbrgKCRPKRNjbzhxl0/1vnH/QoQIsvbKdUhktvY=; b=lv+V3AKbZfpOMFTovxr7xMwnOYn3QvA6cA3AJHB3mf+Dw0Hf+W86kroGQrYVPgpW3e Mx5r/sE4SEjVi+lYpiTWh0ygNJFymg0Ac/91shPpca81752kRWbDXJG70dAHz+sjWs+K pnsEGNK8VQEavqp58TgryJdbC/pipZJDHmLQ2IH8QKsqTUAcq551uZ51eZUpVZI0n6AD wvpN/ehmMV0Rz3ew6jE4Y5/GS41LLtoWR18+fLEGK8gzw8ig+MYeIVMV8cHQk7X5fUuh Zlc+Pa9yfubCzc+VkozQTX1WbLL+ngAqZURVDhpl/1hveis6fkhymsBS7ERzWg5z3kko 2PDw== X-Gm-Message-State: ALoCoQlaUBL5hv8d11jLs5uc0y7ZNS6GOOVwkXd5G0UF7M+mvch0qDnkwOUfF6Byy02jmcv7+3S1C2hGGuEwV1eDQyhlPQQMWA== X-Received: by 10.129.29.3 with SMTP id d3mr3111242ywd.190.1452782963083; Thu, 14 Jan 2016 06:49:23 -0800 (PST) Received: from Nebula.lan (c-68-34-224-206.hsd1.al.comcast.net. [68.34.224.206]) by smtp.gmail.com with ESMTPSA id i81sm4633114ywe.28.2016.01.14.06.49.22 (version=TLS1 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Thu, 14 Jan 2016 06:49:22 -0800 (PST) From: Jonathan Creekmore To: xen-devel@lists.xenproject.org Date: Thu, 14 Jan 2016 08:49:11 -0600 Message-Id: <1452782954-56016-3-git-send-email-jonathan.creekmore@gmail.com> X-Mailer: git-send-email 2.6.4 In-Reply-To: <1452782954-56016-1-git-send-email-jonathan.creekmore@gmail.com> References: <1452782954-56016-1-git-send-email-jonathan.creekmore@gmail.com> Cc: George Dunlap , Jonathan Creekmore , Dario Faggioli Subject: [Xen-devel] [PATCH v5 2/5] build: Hook the schedulers into Kconfig X-BeenThere: xen-devel@lists.xen.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org X-Spam-Status: No, score=-4.1 required=5.0 tests=BAYES_00, DKIM_ADSP_CUSTOM_MED, DKIM_SIGNED, FREEMAIL_FROM, RCVD_IN_DNSWL_MED, T_DKIM_INVALID, UNPARSEABLE_RELAY autolearn=unavailable version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP Allow the schedulers to be independently enabled or disabled (except credit) at compile-time. To match existing behavior, all four schedulers are compiled in by default, although the Credit2, RTDS, and ARINC653 are marked EXPERIMENTAL to match their not currently supported status. CC: George Dunlap CC: Dario Faggioli Signed-off-by: Jonathan Creekmore Reviewed-by: Doug Goldstein --- Changed since v4: * Removed the "if unsure" language * Removed ability to disable the "credit" scheduler * Remove stub vcpu_migration_delay functions since credit cannot be disabled Changed since v2: * Hid the scheduler menu behind the EXPERT option * Provide static inlines for credit functions that are assumed to be always available * Provide an absolute default of the credit scheduler if the scheduler menu is not visible Changed since v1: * Marked credit2 as EXPERIMENTAL * Removed confusing language from the commit message * Alphabetize the schedulers --- xen/common/Kconfig | 59 +++++++++++++++++++++++++++++++++++++++++++++++++++ xen/common/Makefile | 8 +++---- xen/common/schedule.c | 12 +++++++++-- 3 files changed, 73 insertions(+), 6 deletions(-) diff --git a/xen/common/Kconfig b/xen/common/Kconfig index 046e257..286792a 100644 --- a/xen/common/Kconfig +++ b/xen/common/Kconfig @@ -51,4 +51,63 @@ config KEXEC If unsure, say Y. +# Enable schedulers +menu "Schedulers" + visible if EXPERT = "y" + +config SCHED_CREDIT + bool + default y + ---help--- + The traditional credit scheduler is a general purpose scheduler. + +config SCHED_CREDIT2 + bool "Credit2 scheduler support (EXPERIMENTAL)" + default y + ---help--- + The credit2 scheduler is a general purpose scheduler that is + optimized for lower latency and higher VM density. + +config SCHED_RTDS + bool "RTDS scheduler support (EXPERIMENTAL)" + default y + ---help--- + The RTDS scheduler is a soft and firm real-time scheduler for + multicore, targeted for embedded, automotive, graphics and gaming + in the cloud, and general low-latency workloads. + +config SCHED_ARINC653 + bool "ARINC653 scheduler support (EXPERIMENTAL)" + default y + ---help--- + The ARINC653 scheduler is a hard real-time scheduler for single + cores, targeted for avionics, drones, and medical devices. + +choice + prompt "Default Scheduler?" + default SCHED_CREDIT_DEFAULT if SCHED_CREDIT + default SCHED_CREDIT2_DEFAULT if SCHED_CREDIT2 + default SCHED_RTDS_DEFAULT if SCHED_RTDS + default SCHED_ARINC653_DEFAULT if SCHED_ARINC653 + + config SCHED_CREDIT_DEFAULT + bool "Credit Scheduler" if SCHED_CREDIT + config SCHED_CREDIT2_DEFAULT + bool "Credit2 Scheduler" if SCHED_CREDIT2 + config SCHED_RTDS_DEFAULT + bool "RT Scheduler" if SCHED_RTDS + config SCHED_ARINC653_DEFAULT + bool "ARINC653 Scheduler" if SCHED_ARINC653 +endchoice + +config SCHED_DEFAULT + string + default "credit" if SCHED_CREDIT_DEFAULT + default "credit2" if SCHED_CREDIT2_DEFAULT + default "rtds" if SCHED_RTDS_DEFAULT + default "arinc653" if SCHED_ARINC653_DEFAULT + default "credit" + +endmenu + endmenu diff --git a/xen/common/Makefile b/xen/common/Makefile index 8ab15ba..29a5916 100644 --- a/xen/common/Makefile +++ b/xen/common/Makefile @@ -30,10 +30,10 @@ obj-y += rangeset.o obj-y += radix-tree.o obj-y += rbtree.o obj-y += rcupdate.o -obj-y += sched_credit.o -obj-y += sched_credit2.o -obj-y += sched_arinc653.o -obj-y += sched_rt.o +obj-$(CONFIG_SCHED_ARINC653) += sched_arinc653.o +obj-$(CONFIG_SCHED_CREDIT) += sched_credit.o +obj-$(CONFIG_SCHED_CREDIT2) += sched_credit2.o +obj-$(CONFIG_SCHED_RTDS) += sched_rt.o obj-y += schedule.o obj-y += shutdown.o obj-y += softirq.o diff --git a/xen/common/schedule.c b/xen/common/schedule.c index d121896..2f98a48 100644 --- a/xen/common/schedule.c +++ b/xen/common/schedule.c @@ -38,8 +38,8 @@ #include #include -/* opt_sched: scheduler - default to credit */ -static char __initdata opt_sched[10] = "credit"; +/* opt_sched: scheduler - default to configured value */ +static char __initdata opt_sched[10] = CONFIG_SCHED_DEFAULT; string_param("sched", opt_sched); /* if sched_smt_power_savings is set, @@ -65,10 +65,18 @@ DEFINE_PER_CPU(struct schedule_data, schedule_data); DEFINE_PER_CPU(struct scheduler *, scheduler); static const struct scheduler *schedulers[] = { +#ifdef CONFIG_SCHED_CREDIT &sched_credit_def, +#endif +#ifdef CONFIG_SCHED_CREDIT2 &sched_credit2_def, +#endif +#ifdef CONFIG_SCHED_ARINC653 &sched_arinc653_def, +#endif +#ifdef CONFIG_SCHED_RTDS &sched_rtds_def, +#endif }; static struct scheduler __read_mostly ops;