From: Chris Wright <chrisw@sous-sol.org>
To: linux-kernel@vger.kernel.org
Cc: xen-devel@lists.xensource.com, virtualization@lists.osdl.org,
Ian Pratt <ian.pratt@xensource.com>,
Christian Limpach <Christian.Limpach@cl.cam.ac.uk>
Subject: [RFC PATCH 27/35] Add nosegneg capability to the vsyscall page notes
Date: Tue, 21 Mar 2006 22:31:07 -0800 [thread overview]
Message-ID: <20060322063802.797884000@sorel.sous-sol.org> (raw)
In-Reply-To: <20060322063040.960068000@sorel.sous-sol.org>
[-- Attachment #1: 26-i386-vsyscall-note --]
[-- Type: text/plain, Size: 2158 bytes --]
Add the "nosegneg" fake capabilty to the vsyscall page notes. This is
used by the runtime linker to select a glibc version which then
disables negative-offset accesses to the thread-local segment via
%gs. These accesses require emulation in Xen (because segments are
truncated to protect the hypervisor address space) and avoiding them
provides a measurable performance boost.
Signed-off-by: Ian Pratt <ian.pratt@xensource.com>
Signed-off-by: Christian Limpach <Christian.Limpach@cl.cam.ac.uk>
Signed-off-by: Chris Wright <chrisw@sous-sol.org>
---
arch/i386/kernel/vsyscall-note.S | 29 +++++++++++++++++++++++++++++
1 files changed, 29 insertions(+)
--- xen-subarch-2.6.orig/arch/i386/kernel/vsyscall-note.S
+++ xen-subarch-2.6/arch/i386/kernel/vsyscall-note.S
@@ -3,6 +3,7 @@
* Here we can supply some information useful to userland.
*/
+#include <linux/config.h>
#include <linux/uts.h>
#include <linux/version.h>
@@ -23,3 +24,31 @@
ASM_ELF_NOTE_BEGIN(".note.kernel-version", "a", UTS_SYSNAME, 0)
.long LINUX_VERSION_CODE
ASM_ELF_NOTE_END
+
+#ifdef CONFIG_XEN
+/*
+ * Add a special note telling glibc's dynamic linker a fake hardware
+ * flavor that it will use to choose the search path for libraries in the
+ * same way it uses real hardware capabilities like "mmx".
+ * We supply "nosegneg" as the fake capability, to indicate that we
+ * do not like negative offsets in instructions using segment overrides,
+ * since we implement those inefficiently. This makes it possible to
+ * install libraries optimized to avoid those access patterns in someplace
+ * like /lib/i686/tls/nosegneg. Note that an /etc/ld.so.conf.d/file
+ * corresponding to the bits here is needed to make ldconfig work right.
+ * It should contain:
+ * hwcap 0 nosegneg
+ * to match the mapping of bit to name that we give here.
+ */
+#define NOTE_KERNELCAP_BEGIN(ncaps, mask) \
+ ASM_ELF_NOTE_BEGIN(".note.kernelcap", "a", "GNU", 2) \
+ .long ncaps, mask
+#define NOTE_KERNELCAP(bit, name) \
+ .byte bit; .asciz name
+#define NOTE_KERNELCAP_END ASM_ELF_NOTE_END
+
+NOTE_KERNELCAP_BEGIN(1, 1)
+NOTE_KERNELCAP(1, "nosegneg")
+NOTE_KERNELCAP_END
+#endif
+
--
next prev parent reply other threads:[~2006-03-22 6:37 UTC|newest]
Thread overview: 109+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-03-22 6:30 [RFC PATCH 00/35] Xen i386 paravirtualization support Chris Wright
2006-03-22 6:30 ` [RFC PATCH 01/35] Add XEN config options and disable unsupported config options Chris Wright
2006-03-22 6:30 ` [RFC PATCH 02/35] Makefile support to build Xen subarch Chris Wright
2006-03-22 6:30 ` [RFC PATCH 03/35] Add Xen interface header files Chris Wright
2006-03-22 6:30 ` [RFC PATCH 04/35] Hypervisor " Chris Wright
2006-03-22 8:28 ` Arjan van de Ven
2006-03-22 9:31 ` Keir Fraser
2006-03-22 9:46 ` Arjan van de Ven
2006-03-22 11:32 ` David Schwartz
2006-03-22 14:29 ` Keir Fraser
2006-03-22 6:30 ` [RFC PATCH 05/35] Add sync bitops Chris Wright
2006-03-22 6:30 ` [RFC PATCH 06/35] Add vmlinuz build target Chris Wright
2006-03-22 6:30 ` [RFC PATCH 07/35] Make LOAD_OFFSET defined by subarch Chris Wright
2006-03-22 22:57 ` Dan Hecht
2006-03-27 8:18 ` Gerd Hoffmann
2006-03-22 6:30 ` [RFC PATCH 08/35] Add Xen-specific memory management definitions Chris Wright
2006-03-22 6:30 ` [RFC PATCH 09/35] Change __FIXADDR_TOP to leave room for the hypervisor Chris Wright
2006-03-22 17:27 ` Anthony Liguori
2006-03-22 17:32 ` Chris Wright
2006-03-22 6:30 ` [RFC PATCH 10/35] Add a new head.S start-of-day file for booting on Xen Chris Wright
2006-03-22 13:43 ` Andi Kleen
2006-03-22 18:58 ` Chris Wright
2006-03-22 18:45 ` Andi Kleen
2006-03-22 19:26 ` Chris Wright
2006-03-22 6:30 ` [RFC PATCH 11/35] Add support for Xen to entry.S Chris Wright
2006-03-22 13:55 ` Andi Kleen
2006-03-22 17:24 ` [Xen-devel] " Zachary Amsden
2006-03-22 6:30 ` [RFC PATCH 12/35] Add start-of-day setup hooks to subarch Chris Wright
2006-03-22 6:30 ` [RFC PATCH 13/35] Support loading an initrd when running on Xen Chris Wright
2006-03-22 14:22 ` Andi Kleen
2006-03-22 19:20 ` Chris Wright
2006-03-22 6:30 ` [RFC PATCH 14/35] subarch modify CPU capabilities Chris Wright
2006-03-22 8:35 ` [Xen-devel] " Zachary Amsden
2006-03-22 9:33 ` Keir Fraser
2006-03-22 19:29 ` Chris Wright
2006-03-22 6:30 ` [RFC PATCH 15/35] subarch support for controlling interrupt delivery Chris Wright
2006-03-22 6:30 ` [RFC PATCH 16/35] subarch support for interrupt and exception gates Chris Wright
2006-03-22 13:45 ` Andi Kleen
2006-03-22 20:54 ` Chris Wright
2006-03-22 6:30 ` [RFC PATCH 17/35] Segment register changes for Xen Chris Wright
2006-03-22 14:24 ` Andi Kleen
2006-03-22 19:33 ` Chris Wright
2006-03-23 0:16 ` Zachary Amsden
2006-03-22 6:30 ` [RFC PATCH 18/35] Support gdt/idt/ldt handling on Xen Chris Wright
2006-03-22 14:30 ` Andi Kleen
2006-03-22 17:51 ` [Xen-devel] " Zachary Amsden
2006-03-22 17:36 ` Andi Kleen
2006-03-22 6:30 ` [RFC PATCH 19/35] subarch support for control register accesses Chris Wright
2006-03-22 8:55 ` Zachary Amsden
2006-03-22 21:45 ` Chris Wright
2006-03-22 6:31 ` [RFC PATCH 20/35] subarch stack pointer update Chris Wright
2006-03-22 6:31 ` [RFC PATCH 21/35] subarch TLB support Chris Wright
2006-03-22 6:31 ` [RFC PATCH 22/35] subarch suport for idle loop (NO_IDLE_HZ for Xen) Chris Wright
2006-03-22 6:31 ` [RFC PATCH 23/35] Add support for Xen event channels Chris Wright
2006-03-22 8:36 ` Arjan van de Ven
2006-03-22 11:30 ` Keir Fraser
2006-03-22 14:07 ` Andi Kleen
2006-03-22 6:31 ` [RFC PATCH 24/35] subarch support for mask value for irq nubmers Chris Wright
2006-03-22 6:31 ` [RFC PATCH 25/35] Add Xen time abstractions Chris Wright
2006-03-22 8:38 ` Arjan van de Ven
2006-03-22 19:37 ` Chris Wright
2006-03-22 22:26 ` [Xen-devel] " Dan Hecht
2006-03-23 3:23 ` [Xen-devel] " Eli Collins
2006-03-23 6:47 ` Chris Wright
2006-03-22 6:31 ` [RFC PATCH 26/35] Add Xen subarch reboot support Chris Wright
2006-03-22 8:40 ` Arjan van de Ven
2006-03-22 10:22 ` Keir Fraser
2006-03-22 10:39 ` Arjan van de Ven
2006-03-22 10:52 ` Keir Fraser
2006-03-22 14:21 ` Andi Kleen
2006-03-22 20:59 ` Pavel Machek
2006-03-22 6:31 ` Chris Wright [this message]
2006-03-22 6:31 ` [RFC PATCH 28/35] add support for Xen feature queries Chris Wright
2006-03-22 8:42 ` Arjan van de Ven
2006-03-22 6:31 ` [RFC PATCH 29/35] Add the Xen virtual console driver Chris Wright
2006-03-22 8:43 ` Arjan van de Ven
2006-03-22 9:29 ` Keir Fraser
2006-03-22 14:17 ` Andi Kleen
2006-03-22 16:00 ` Anthony Liguori
2006-03-22 16:07 ` Keir Fraser
2006-03-22 16:14 ` Anthony Liguori
2006-03-22 6:31 ` [RFC PATCH 30/35] Add generic_page_range() function Chris Wright
2006-03-22 8:51 ` Zachary Amsden
2006-03-22 9:27 ` [Xen-devel] " Keir Fraser
2006-03-22 11:21 ` Nick Piggin
2006-03-22 14:33 ` Keir Fraser
2006-03-22 15:35 ` Keir Fraser
2006-03-23 0:15 ` Nick Piggin
2006-03-23 0:26 ` Nick Piggin
2006-03-22 6:31 ` [RFC PATCH 31/35] Add Xen grant table support Chris Wright
2006-03-22 8:45 ` Arjan van de Ven
2006-03-22 18:38 ` Chris Wright
2006-03-22 6:31 ` [RFC PATCH 32/35] Add Xen driver utility functions Chris Wright
2006-03-22 14:12 ` Andi Kleen
2006-03-22 6:31 ` [RFC PATCH 33/35] Add the Xenbus sysfs and virtual device hotplug driver Chris Wright
2006-03-22 8:53 ` Arjan van de Ven
2006-03-22 11:14 ` Keir Fraser
2006-03-22 6:31 ` [RFC PATCH 34/35] Add the Xen virtual network device driver Chris Wright
2006-03-22 8:59 ` Arjan van de Ven
2006-03-22 15:29 ` James Morris
2006-03-22 17:17 ` Stephen Hemminger
2006-03-22 6:31 ` [RFC PATCH 35/35] Add Xen virtual block " Chris Wright
2006-03-22 16:39 ` Anthony Liguori
2006-03-22 16:54 ` Christoph Hellwig
2006-03-27 8:42 ` Gerd Hoffmann
2006-03-22 17:15 ` [RFC PATCH 00/35] Xen i386 paravirtualization support Anthony Liguori
2006-03-22 17:27 ` Chris Wright
2006-03-22 17:50 ` Anthony Liguori
2006-05-09 8:49 Chris Wright
2006-05-09 7:00 ` [RFC PATCH 27/35] Add nosegneg capability to the vsyscall page notes Chris Wright
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=20060322063802.797884000@sorel.sous-sol.org \
--to=chrisw@sous-sol.org \
--cc=Christian.Limpach@cl.cam.ac.uk \
--cc=ian.pratt@xensource.com \
--cc=linux-kernel@vger.kernel.org \
--cc=virtualization@lists.osdl.org \
--cc=xen-devel@lists.xensource.com \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®