From patchwork Thu Dec 17 20:59:31 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jonathan Creekmore X-Patchwork-Id: 7877561 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 F0A31BEEE5 for ; Thu, 17 Dec 2015 21:02:44 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 08CE02041C for ; Thu, 17 Dec 2015 21:02:44 +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 0BCCE201DD for ; Thu, 17 Dec 2015 21:02:43 +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 1a9feZ-0007jD-DQ; Thu, 17 Dec 2015 20:59:59 +0000 Received: from mail6.bemta14.messagelabs.com ([193.109.254.103]) by lists.xen.org with esmtp (Exim 4.72) (envelope-from ) id 1a9feX-0007it-KA for xen-devel@lists.xenproject.org; Thu, 17 Dec 2015 20:59:57 +0000 Received: from [193.109.254.147] by server-7.bemta-14.messagelabs.com id 72/43-28221-C4223765; Thu, 17 Dec 2015 20:59:56 +0000 X-Env-Sender: jonathan.creekmore@gmail.com X-Msg-Ref: server-14.tower-27.messagelabs.com!1450385995!11732787!1 X-Originating-IP: [209.85.160.181] X-SpamReason: No, hits=0.0 required=7.0 tests= X-StarScan-Received: X-StarScan-Version: 7.35.1; banners=-,-,- X-VirusChecked: Checked Received: (qmail 8418 invoked from network); 17 Dec 2015 20:59:55 -0000 Received: from mail-yk0-f181.google.com (HELO mail-yk0-f181.google.com) (209.85.160.181) by server-14.tower-27.messagelabs.com with AES128-GCM-SHA256 encrypted SMTP; 17 Dec 2015 20:59:55 -0000 Received: by mail-yk0-f181.google.com with SMTP id 140so34476971ykp.0 for ; Thu, 17 Dec 2015 12:59:55 -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=iWHW2QMS7pGJfdILCmJP4wlMigtxyHTm2c1itlW3BZU=; b=QTr94HYDetWq+1edJmuWT881Q3x9I8AlXR3FBzEO4JeIK7n3QKFd6R3EUtI8QPWG89 4O7ZQvST9pjIewnYa6xijUk0wg4BfuaPGJotPMTKgEF0WL/Wc8DXRDnvaYoPk8B9eIPF Qa+e7vx8qPoxstsLnQ/vX2qCBMzMKAUAXhHo3dnepyAMPCZjJJVqYHOXG+2eZgReWuxw zO4EqgQul4i5n3k9zqxGRrdIWGbYRW5wBLyhBf1cGOrnIFOoYDwDnYOVVGE3gF5EnWeM RcG1bWqWJGulVbLfJeEAmVn6qV89Q0FOkRh0Om9rHewOW+vumx2C4Wp7IoiJ1YaUvi/1 VISQ== X-Received: by 10.13.222.70 with SMTP id h67mr33879565ywe.185.1450385994942; Thu, 17 Dec 2015 12:59:54 -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 x8sm12139162ywd.44.2015.12.17.12.59.53 (version=TLS1 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Thu, 17 Dec 2015 12:59:54 -0800 (PST) From: Jonathan Creekmore To: xen-devel@lists.xenproject.org Date: Thu, 17 Dec 2015 14:59:31 -0600 Message-Id: <1450385974-12732-2-git-send-email-jonathan.creekmore@gmail.com> X-Mailer: git-send-email 2.6.4 In-Reply-To: <1450385974-12732-1-git-send-email-jonathan.creekmore@gmail.com> References: <1450385974-12732-1-git-send-email-jonathan.creekmore@gmail.com> Cc: George Dunlap , Jonathan Creekmore , Dario Faggioli Subject: [Xen-devel] [PATCH 1/4] 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 at compile-time instead of just allowing the scheduler to be selected on the command line. To match existing behavior, all four schedulers are compiled in by default, although the 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: Andrew Cooper --- xen/common/Kconfig | 64 +++++++++++++++++++++++++++++++++++++++++++++++++++ xen/common/Makefile | 8 +++---- xen/common/schedule.c | 12 ++++++++-- 3 files changed, 78 insertions(+), 6 deletions(-) diff --git a/xen/common/Kconfig b/xen/common/Kconfig index 7d0e9a9..378a063 100644 --- a/xen/common/Kconfig +++ b/xen/common/Kconfig @@ -44,4 +44,68 @@ config KEXEC If unsure, say Y. +# Enable schedulers +menu "Schedulers" +config SCHED_CREDIT + bool "Credit scheduler support" + default y + ---help--- + The traditional credit scheduler is a general purpose scheduler. + + If unsure, say Y. + +config SCHED_CREDIT2 + bool "Credit2 scheduler support" + default y + ---help--- + The credit2 scheduler is a general purpose scheduler that is + optimized for lower latency and higher VM density. + + If unsure, say Y. + +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. + + If unsure, say N. + +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. + + If unsure, say N. + +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 + +endmenu + endmenu diff --git a/xen/common/Makefile b/xen/common/Makefile index 8ab15ba..3a2026a 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_CREDIT) += sched_credit.o +obj-$(CONFIG_SCHED_CREDIT2) += sched_credit2.o +obj-$(CONFIG_SCHED_ARINC653) += sched_arinc653.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;