From patchwork Wed Mar 16 14:11:01 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Douglas Goldstein X-Patchwork-Id: 8600891 Return-Path: X-Original-To: patchwork-xen-devel@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork1.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.136]) by patchwork1.web.kernel.org (Postfix) with ESMTP id 9F5709F294 for ; Wed, 16 Mar 2016 14:13:53 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 92E54202EC for ; Wed, 16 Mar 2016 14:13:52 +0000 (UTC) Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) (using TLSv1.2 with cipher AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 0B91D20364 for ; Wed, 16 Mar 2016 14:13:50 +0000 (UTC) Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1agCAT-0000jp-9x; Wed, 16 Mar 2016 14:11:21 +0000 Received: from mail6.bemta14.messagelabs.com ([193.109.254.103]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1agCAS-0000iW-5X for xen-devel@lists.xen.org; Wed, 16 Mar 2016 14:11:20 +0000 Received: from [193.109.254.147] by server-10.bemta-14.messagelabs.com id B4/4A-02986-78969E65; Wed, 16 Mar 2016 14:11:19 +0000 X-Env-Sender: cardoe@cardoe.com X-Msg-Ref: server-12.tower-27.messagelabs.com!1458137477!31592369!1 X-Originating-IP: [209.85.161.194] X-SpamReason: No, hits=0.5 required=7.0 tests=BODY_RANDOM_LONG X-StarScan-Received: X-StarScan-Version: 8.11; banners=-,-,- X-VirusChecked: Checked Received: (qmail 56018 invoked from network); 16 Mar 2016 14:11:18 -0000 Received: from mail-yw0-f194.google.com (HELO mail-yw0-f194.google.com) (209.85.161.194) by server-12.tower-27.messagelabs.com with AES128-GCM-SHA256 encrypted SMTP; 16 Mar 2016 14:11:18 -0000 Received: by mail-yw0-f194.google.com with SMTP id p65so3652375ywb.3 for ; Wed, 16 Mar 2016 07:11:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cardoe.com; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=LiDfOkSZJOKI9dG+GcKtlnRIsIgl4oQysSP8GEAZu1I=; b=eUQbYjJbkdnQxm3yZGvhhPUxTrkOY8pT8v0W8htyEVZbXG928WL3FoIxRlewzO4f+T 3286pWCPsukq+GMe3utpZNbLeGI7AJFSnlho2yb9B7aJBqwLKqVTC6SYArpoWoJbRg/8 jO5J56dGW2SU90jr6WiP+CvR3pcDqh/bOj+Ss= 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=LiDfOkSZJOKI9dG+GcKtlnRIsIgl4oQysSP8GEAZu1I=; b=Noa8DS97R3JzAzYwYCkn1ahkUFkcws/bkw1tZI6O75wN3UqwGsuqgM3CYO4Z5KATC8 VP2JVjXGbwz6ncoZwPRMYawuag39QL/46ivCsJ818jMxoW+Q2Y9ky//UoENX2HPjdAwy UjfYrbp4Z4jxY+fArxnxceylkmfhAe5Bu6DJ4zsKCjO9Vo4tB8BSjKE1WUXRkRX0bIVW Xm0KHwzYaVIZ+DHls0sFBHjXF6FEJGAKmwX2ftyezlJjkG7hpdAtrsavKBPk2OE0h8mF EJfINbNFz9O5+5/AQz1iABZb3reCYHrjtTEiTcaSjBaucFyRmG7P4oxKEg4Q2vWexSpL BVkQ== X-Gm-Message-State: AD7BkJIK3p572CQsq6NOH1JSZA4zqLggX4RQY756ujK0VX+qT/ZyJ6XQfpKdUN6Z0qtsXg== X-Received: by 10.13.223.74 with SMTP id i71mr1797491ywe.335.1458137477330; Wed, 16 Mar 2016 07:11:17 -0700 (PDT) Received: from swanson.lan (c-68-46-196-185.hsd1.al.comcast.net. [68.46.196.185]) by smtp.gmail.com with ESMTPSA id a140sm1937862ywe.50.2016.03.16.07.11.16 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Wed, 16 Mar 2016 07:11:16 -0700 (PDT) From: Doug Goldstein To: xen-devel@lists.xen.org Date: Wed, 16 Mar 2016 09:11:01 -0500 Message-Id: <1458137461-3535-4-git-send-email-cardoe@cardoe.com> X-Mailer: git-send-email 2.4.10 In-Reply-To: <1458137461-3535-1-git-send-email-cardoe@cardoe.com> References: <1458137461-3535-1-git-send-email-cardoe@cardoe.com> Cc: Keir Fraser , Doug Goldstein , Jan Beulich , Andrew Cooper Subject: [Xen-devel] [PATCH v3 3/3] tmem: allow tmem to be disabled with Kconfig X-BeenThere: xen-devel@lists.xen.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" X-Spam-Status: No, score=-0.4 required=5.0 tests=BAYES_00,DKIM_SIGNED, RCVD_IN_BL_SPAMCOP_NET, T_DKIM_INVALID, UNPARSEABLE_RELAY autolearn=no 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 Wrap the various tmem functions with the Kconfig generated CONFIG_TMEM option allowing users to build Xen without tmem support. Signed-off-by: Doug Goldstein Acked-by: Jan Beulich --- CC: Keir Fraser CC: Jan Beulich CC: Andrew Cooper CC: Konrad Rzeszutek Wilk change since v2: - actually do all the tweaks to the Makefile suggested by Jan changes from v1: - add description provided by Konrad (thanks!) - tweaks to Makefile suggested by Jan - other fixes suggested by Jan --- xen/arch/x86/x86_64/compat/entry.S | 4 ++++ xen/arch/x86/x86_64/entry.S | 4 ++++ xen/common/Kconfig | 10 ++++++++++ xen/common/Makefile | 8 +++++--- xen/include/xen/hypercall.h | 4 ++++ xen/include/xen/tmem.h | 26 ++++++++++++++++++++++++++ xen/include/xen/tmem_xen.h | 11 +++++++++++ 7 files changed, 64 insertions(+), 3 deletions(-) diff --git a/xen/arch/x86/x86_64/compat/entry.S b/xen/arch/x86/x86_64/compat/entry.S index 927439d..5218f8a 100644 --- a/xen/arch/x86/x86_64/compat/entry.S +++ b/xen/arch/x86/x86_64/compat/entry.S @@ -345,6 +345,10 @@ compat_crash_page_fault: #define compat_kexec_op do_ni_hypercall #endif +#ifndef CONFIG_TMEM +#define do_tmem_op do_ni_hypercall +#endif + #ifndef CONFIG_XENOPROF #define compat_xenoprof_op do_ni_hypercall #endif diff --git a/xen/arch/x86/x86_64/entry.S b/xen/arch/x86/x86_64/entry.S index dd7f114..cab9763 100644 --- a/xen/arch/x86/x86_64/entry.S +++ b/xen/arch/x86/x86_64/entry.S @@ -681,6 +681,10 @@ ENTRY(exception_table) #define do_kexec_op do_ni_hypercall #endif +#ifndef CONFIG_TMEM +#define do_tmem_op do_ni_hypercall +#endif + #ifndef CONFIG_XENOPROF #define do_xenoprof_op do_ni_hypercall #endif diff --git a/xen/common/Kconfig b/xen/common/Kconfig index 8fbc46d..39b0fa7 100644 --- a/xen/common/Kconfig +++ b/xen/common/Kconfig @@ -87,6 +87,16 @@ config LATE_HWDOM If unsure, say N. +# Enables transactional memory support +config TMEM + def_bool y + prompt "Transactional Memory Support" if EXPERT = "y" + ---help--- + Transcendent memory allows PV-aware guests to collaborate on memory + usage. Guests can 'swap' their memory to the hypervisor or have an + collective pool of memory shared across guests. The end result is + less memory usage by guests allowing higher guest density. + # Adds support for Xenoprof config XENOPROF def_bool y diff --git a/xen/common/Makefile b/xen/common/Makefile index 82625a5..77de27e 100644 --- a/xen/common/Makefile +++ b/xen/common/Makefile @@ -49,8 +49,6 @@ obj-y += sysctl.o obj-y += tasklet.o obj-y += time.o obj-y += timer.o -obj-y += tmem.o -obj-y += tmem_xen.o obj-y += trace.o obj-y += version.o obj-y += vm_event.o @@ -65,7 +63,11 @@ obj-bin-$(CONFIG_X86) += $(foreach n,decompress bunzip2 unxz unlzma unlzo unlz4 obj-$(perfc) += perfc.o obj-$(crash_debug) += gdbstub.o -obj-$(CONFIG_COMPAT) += $(addprefix compat/,domain.o kernel.o memory.o multicall.o tmem_xen.o xlat.o) +obj-$(CONFIG_COMPAT) += $(addprefix compat/,domain.o kernel.o memory.o multicall.o xlat.o) + +tmem-y := tmem.o tmem_xen.o +tmem-$(CONFIG_COMPAT) += compat/tmem_xen.o +obj-$(CONFIG_TMEM) += $(tmem-y) subdir-$(CONFIG_X86) += hvm diff --git a/xen/include/xen/hypercall.h b/xen/include/xen/hypercall.h index 26cb615..0c8ae0e 100644 --- a/xen/include/xen/hypercall.h +++ b/xen/include/xen/hypercall.h @@ -133,9 +133,13 @@ extern long do_xsm_op( XEN_GUEST_HANDLE_PARAM(xsm_op_t) u_xsm_op); +#ifdef CONFIG_TMEM extern long do_tmem_op( XEN_GUEST_HANDLE_PARAM(tmem_op_t) uops); +#else +#define do_tmem_op do_ni_hypercall +#endif extern long do_xenoprof_op(int op, XEN_GUEST_HANDLE_PARAM(void) arg); diff --git a/xen/include/xen/tmem.h b/xen/include/xen/tmem.h index 32a542a..414a14d 100644 --- a/xen/include/xen/tmem.h +++ b/xen/include/xen/tmem.h @@ -11,9 +11,35 @@ struct xen_sysctl_tmem_op; +#ifdef CONFIG_TMEM extern int tmem_control(struct xen_sysctl_tmem_op *op); extern void tmem_destroy(void *); extern void *tmem_relinquish_pages(unsigned int, unsigned int); extern unsigned long tmem_freeable_pages(void); +#else +static inline int +tmem_control(struct xen_sysctl_tmem_op *op) +{ + return -ENOSYS; +} + +static inline void +tmem_destroy(void *p) +{ + return; +} + +static inline void * +tmem_relinquish_pages(unsigned int x, unsigned int y) +{ + return NULL; +} + +static inline unsigned long +tmem_freeable_pages(void) +{ + return 0; +} +#endif /* CONFIG_TMEM */ #endif /* __XEN_TMEM_H__ */ diff --git a/xen/include/xen/tmem_xen.h b/xen/include/xen/tmem_xen.h index f516bbe..19ed835 100644 --- a/xen/include/xen/tmem_xen.h +++ b/xen/include/xen/tmem_xen.h @@ -63,6 +63,7 @@ static inline bool_t tmem_shared_auth(void) return opt_tmem_shared_auth; } +#ifdef CONFIG_TMEM extern bool_t opt_tmem; static inline bool_t tmem_enabled(void) { @@ -73,6 +74,16 @@ static inline void tmem_disable(void) { opt_tmem = 0; } +#else +static inline bool_t tmem_enabled(void) +{ + return 0; +} + +static inline void tmem_disable(void) +{ +} +#endif /* CONFIG_TMEM */ /* * Memory free page list management