Commit Graph
88 Commits
Author SHA1 Message Date
kfraser@localhost.localdomain 6b5e36a305 linux: improve x86 page table handling performance
Where possible,
- use hypercalls instead of writing to read-only pages
- fold TLB flushes into page table update hypercalls
- on PAE, use single-access updates instead of two-access ones

The single change to PAE pte_clear() yields a 25-30% boost for kernel
builds on a 4x2x2 CPUs, 8Gb box; the other changes together yield
improvements of 2-5%.

Also, adjust backward compatibility handling in a few more places.

Signed-off-by: Jan Beulich <jbeulich@novell.com>
2007-04-05 09:10:33 +01:00
kfraser@localhost.localdomain c93368e0fb linux: make compatibility config options more scalable
Signed-off-by: Jan Beulich <jbeulich@novell.com>
2007-04-05 08:58:32 +01:00
Keir Fraser ed34f48aa8 Various cleanups and fixes for PV-on-HVM drivers.
Signed-off-by: Keir Fraser <keir@xensource.com>
2007-04-04 21:49:04 +01:00
kfraser@localhost.localdomain 26e24b46d1 linux: No need to force pcibios_scan_all_fns() on modern Xen.
Signed-off-by: Keir Fraser <keir@xensource.com>
2007-03-13 13:28:26 +00:00
kfraser@localhost.localdomain 16ea519d6c linux: Upgrade to latest Xen interface version (0x00030205).
Signed-off-by: Keir Fraser <keir@xensource.com>
2007-03-09 11:44:31 +00:00
kfraser@localhost.localdomain 74bca0b6e8 linux: scan DMI early
While shuffling quite a few things around, this gets us closer to
native, which clearly had a reason to do the DMI scan early.

Signed-off-by: Jan Beulich <jbeulich@novell.com>
2007-03-05 15:46:33 +00:00
kfraser@localhost.localdomain bba72daaae linux/x86-64 2.6.18: do away with pud_offset_k()
Signed-off-by: Jan Beulich <jbeulich@novell.com>
2007-03-05 15:06:13 +00:00
kfraser@localhost.localdomain 744703ccb7 linux/x86_64 2.6.18: remove orig_ist
orig_ist is bound to presence of a TSS, hence is meaningless on Xen
kernels.

Signed-off-by: Jan Beulich <jbeulich@novell.com>
2007-03-05 15:04:28 +00:00
Ian Campbell f380fac05a [LINUX] Purge include <linux/config.h>. It has been obsolete for some time now.
Signed-off-by: Ian Campbell <ian.campbell@xensource.com>
2007-02-23 16:56:45 +00:00
kfraser@localhost.localdomain 99f8ff2844 linux: Fix swiotlb bug-out due to uninitialised end_pfn/max_mapnr.
Signed-off-by: Keir Fraser <keir@xensource.com>
2007-02-20 12:27:03 +00:00
kfraser@localhost.localdomain 2d59634928 linux/x86: Clean up page table handling headers
- remove dead code
- fix line breaking and space vs. tab usage
- remove redundant parentheses

Signed-off-by: Jan Beulich <jbeulich@novell.com>
2007-02-20 09:41:32 +00:00
kfraser@localhost.localdomain eee7931c83 linux/x86: Adjust and fix page table handling.
Ensure that all and only those page table entries that have their
present bit set undergo p2m/m2p translation in all relevant places.
This should fix migration issues with _PAGE_PROTNONE pages which
previously could retain MFNs in PTEs while having the present bit
clear (and thus were not getting (un)canonicalized during save/
restore).

Many thanks to Keir Fraser for his analysis, suggestions, and
corrections.

Signed-off-by: Jan Beulich <jbeulich@novell.com>
2007-02-20 09:33:14 +00:00
kfraser@localhost.localdomain 408c8a79de linux: Introduce {current_,}vcpu_info.
Also consolidate time-xen.c in giving get_time_values_from_xen() a
'cpu' parameter to match other functions (this consolidation could of
course also be done the other way around, but I think this way the
resulting code can be more efficient).

Signed-off-by: Jan Beulich <jbeulich@novell.com>
2007-02-19 16:11:56 +00:00
kfraser@localhost.localdomain 44a156d31f linux/i386: relax highpte pinning/write-protecting
Signed-off-by: Jan Beulich <jbeulich@novell.com>
2007-01-22 15:42:13 +00:00
Christian Limpach 361f8004cb [merge] with xen-unstable 2007-01-18 15:18:07 +00:00
Christian Limpach 54a1273470 [linux] Update to linux-2.6.18.
Signed-off-by: Christian Limpach <Christian.Limpach@xensource.com>


--HG--
rename : linux-2.6-xen-sparse/include/asm-i386/mach-xen/setup_arch_pre.h => linux-2.6-xen-sparse/include/asm-i386/mach-xen/setup_arch.h
rename : patches/linux-2.6.17/blktap-aio-16_03_06.patch => patches/linux-2.6.18/blktap-aio-16_03_06.patch
rename : patches/linux-2.6.17/fix-ide-cd-pio-mode.patch => patches/linux-2.6.18/fix-ide-cd-pio-mode.patch
rename : patches/linux-2.6.17/git-3566561bfadffcb5dbc85d576be80c0dbf2cccc9.patch => patches/linux-2.6.18/git-3566561bfadffcb5dbc85d576be80c0dbf2cccc9.patch
rename : patches/linux-2.6.17/git-4bfaaef01a1badb9e8ffb0c0a37cd2379008d21f.patch => patches/linux-2.6.18/git-4bfaaef01a1badb9e8ffb0c0a37cd2379008d21f.patch
rename : patches/linux-2.6.17/git-dbaab49f92ff6ae6255762a948375e4036cbdbd2.patch => patches/linux-2.6.18/git-dbaab49f92ff6ae6255762a948375e4036cbdbd2.patch
rename : patches/linux-2.6.17/i386-mach-io-check-nmi.patch => patches/linux-2.6.18/i386-mach-io-check-nmi.patch
rename : patches/linux-2.6.17/ipv6-no-autoconf.patch => patches/linux-2.6.18/ipv6-no-autoconf.patch
rename : patches/linux-2.6.17/linux-2.6.19-rc1-kexec-move_segment_code-i386.patch => patches/linux-2.6.18/linux-2.6.19-rc1-kexec-move_segment_code-i386.patch
rename : patches/linux-2.6.17/linux-2.6.19-rc1-kexec-move_segment_code-x86_64.patch => patches/linux-2.6.18/linux-2.6.19-rc1-kexec-move_segment_code-x86_64.patch
rename : patches/linux-2.6.17/net-csum.patch => patches/linux-2.6.18/net-csum.patch
rename : patches/linux-2.6.17/net-gso-5-rcv-mss.patch => patches/linux-2.6.18/net-gso-5-rcv-mss.patch
rename : patches/linux-2.6.17/net-gso-6-linear-segmentation.patch => patches/linux-2.6.18/net-gso-6-linear-segmentation.patch
rename : patches/linux-2.6.17/pmd-shared.patch => patches/linux-2.6.18/pmd-shared.patch
rename : patches/linux-2.6.17/rename-TSS_sysenter_esp0-SYSENTER_stack_esp0.patch => patches/linux-2.6.18/rename-TSS_sysenter_esp0-SYSENTER_stack_esp0.patch
rename : patches/linux-2.6.17/series => patches/linux-2.6.18/series
rename : patches/linux-2.6.17/x86-elfnote-as-preprocessor-macro.patch => patches/linux-2.6.18/x86-elfnote-as-preprocessor-macro.patch
rename : patches/linux-2.6.17/x86-put-note-sections-into-a-pt_note-segment-in-vmlinux.patch => patches/linux-2.6.18/x86-put-note-sections-into-a-pt_note-segment-in-vmlinux.patch
rename : patches/linux-2.6.17/x86_64-put-note-sections-into-a-pt_note-segment-in-vmlinux.patch => patches/linux-2.6.18/x86_64-put-note-sections-into-a-pt_note-segment-in-vmlinux.patch
rename : patches/linux-2.6.17/xen-hotplug.patch => patches/linux-2.6.18/xen-hotplug.patch
rename : patches/linux-2.6.17/xenoprof-generic.patch => patches/linux-2.6.18/xenoprof-generic.patch
2007-01-17 18:41:22 +00:00
Christian Limpach 432e7b62cb [linux] Update to linux-2.6.17.
Signed-off-by: Christian Limpach <Christian.Limpach@xensource.com>

--HG--
rename : patches/linux-2.6.16.33/blktap-aio-16_03_06.patch => patches/linux-2.6.17/blktap-aio-16_03_06.patch
rename : patches/linux-2.6.16.33/fix-hz-suspend.patch => patches/linux-2.6.17/fix-hz-suspend.patch
rename : patches/linux-2.6.16.33/fix-ide-cd-pio-mode.patch => patches/linux-2.6.17/fix-ide-cd-pio-mode.patch
rename : patches/linux-2.6.16.33/git-2a8a3d5b65e86ec1dfef7d268c64a909eab94af7.patch => patches/linux-2.6.17/git-2a8a3d5b65e86ec1dfef7d268c64a909eab94af7.patch
rename : patches/linux-2.6.16.33/git-2efe55a9cec8418f0e0cde3dc3787a42fddc4411.patch => patches/linux-2.6.17/git-2efe55a9cec8418f0e0cde3dc3787a42fddc4411.patch
rename : patches/linux-2.6.16.33/git-3566561bfadffcb5dbc85d576be80c0dbf2cccc9.patch => patches/linux-2.6.17/git-3566561bfadffcb5dbc85d576be80c0dbf2cccc9.patch
rename : patches/linux-2.6.16.33/git-4bfaaef01a1badb9e8ffb0c0a37cd2379008d21f.patch => patches/linux-2.6.17/git-4bfaaef01a1badb9e8ffb0c0a37cd2379008d21f.patch
rename : patches/linux-2.6.16.33/git-dbaab49f92ff6ae6255762a948375e4036cbdbd2.patch => patches/linux-2.6.17/git-dbaab49f92ff6ae6255762a948375e4036cbdbd2.patch
rename : patches/linux-2.6.16.33/i386-mach-io-check-nmi.patch => patches/linux-2.6.17/i386-mach-io-check-nmi.patch
rename : patches/linux-2.6.16.33/ipv6-no-autoconf.patch => patches/linux-2.6.17/ipv6-no-autoconf.patch
rename : patches/linux-2.6.16.33/kasprintf.patch => patches/linux-2.6.17/kasprintf.patch
rename : patches/linux-2.6.16.33/linux-2.6.19-rc1-kexec-move_segment_code-i386.patch => patches/linux-2.6.17/linux-2.6.19-rc1-kexec-move_segment_code-i386.patch
rename : patches/linux-2.6.16.33/linux-2.6.19-rc1-kexec-move_segment_code-x86_64.patch => patches/linux-2.6.17/linux-2.6.19-rc1-kexec-move_segment_code-x86_64.patch
rename : patches/linux-2.6.16.33/net-csum.patch => patches/linux-2.6.17/net-csum.patch
rename : patches/linux-2.6.16.33/net-gso-0-base.patch => patches/linux-2.6.17/net-gso-0-base.patch
rename : patches/linux-2.6.16.33/net-gso-1-check-dodgy.patch => patches/linux-2.6.17/net-gso-1-check-dodgy.patch
rename : patches/linux-2.6.16.33/net-gso-2-checksum-fix.patch => patches/linux-2.6.17/net-gso-2-checksum-fix.patch
rename : patches/linux-2.6.16.33/net-gso-3-fix-errorcheck.patch => patches/linux-2.6.17/net-gso-3-fix-errorcheck.patch
rename : patches/linux-2.6.16.33/net-gso-4-kill-warnon.patch => patches/linux-2.6.17/net-gso-4-kill-warnon.patch
rename : patches/linux-2.6.16.33/net-gso-5-rcv-mss.patch => patches/linux-2.6.17/net-gso-5-rcv-mss.patch
rename : patches/linux-2.6.16.33/net-gso-6-linear-segmentation.patch => patches/linux-2.6.17/net-gso-6-linear-segmentation.patch
rename : patches/linux-2.6.16.33/pmd-shared.patch => patches/linux-2.6.17/pmd-shared.patch
rename : patches/linux-2.6.16.33/rename-TSS_sysenter_esp0-SYSENTER_stack_esp0.patch => patches/linux-2.6.17/rename-TSS_sysenter_esp0-SYSENTER_stack_esp0.patch
rename : patches/linux-2.6.16.33/series => patches/linux-2.6.17/series
rename : patches/linux-2.6.16.33/vsnprintf.patch => patches/linux-2.6.17/vsnprintf.patch
rename : patches/linux-2.6.16.33/x86-elfnote-as-preprocessor-macro.patch => patches/linux-2.6.17/x86-elfnote-as-preprocessor-macro.patch
rename : patches/linux-2.6.16.33/x86-increase-interrupt-vector-range.patch => patches/linux-2.6.17/x86-increase-interrupt-vector-range.patch
rename : patches/linux-2.6.16.33/x86-put-note-sections-into-a-pt_note-segment-in-vmlinux.patch => patches/linux-2.6.17/x86-put-note-sections-into-a-pt_note-segment-in-vmlinux.patch
rename : patches/linux-2.6.16.33/x86_64-put-note-sections-into-a-pt_note-segment-in-vmlinux.patch => patches/linux-2.6.17/x86_64-put-note-sections-into-a-pt_note-segment-in-vmlinux.patch
rename : patches/linux-2.6.16.33/xen-hotplug.patch => patches/linux-2.6.17/xen-hotplug.patch
rename : patches/linux-2.6.16.33/xenoprof-generic.patch => patches/linux-2.6.17/xenoprof-generic.patch
2007-01-12 14:30:49 +00:00
kfraser@localhost.localdomain 8f529b5deb [LINUX] x86/64: Sync pagetable management with i386 Xen code.
PUDs,PMDs,PTEs are all marked as ForeignPage so that they can be
grabbed from tlb_remove_page() at the appropriate time and freed in a
special way.

Signed-off-by: Jan Beulich <jbeulich@novell.com>
2007-01-12 10:22:36 +00:00
Ian Campbell 69f0c953b4 [LINUX] Kexec: Reapply kexec patches to sparse tree.
Signed-off-by: Ian Campbell <ian.campbell@xensource.com>
2006-12-08 11:47:09 +00:00
Ian Campbell 24a9aad534 [LINUX] Kexec: add kexec files to sparse tree.
Signed-off-by: Ian Campbell <ian.campbell@xensource.com>
2006-12-08 11:47:09 +00:00
kfraser@localhost.localdomain 90f0b6ab3a [LINUX] Missing xenoprof.h header file for x86/64.
Signed-off-by: Isaku Yamahata <yamahata@valinux.co.jp>
2006-11-30 17:27:00 +00:00
kfraser@localhost.localdomain 99bbc67f93 linux/x86-64: missing agp.h
This causes data corruption and/or crashes when AGP is actually used.

Signed-off-by: Jan Beulich <jbeulich@novell.com>
2006-11-30 17:21:52 +00:00
Ian Campbell 6fc8621b96 [XEN] Kexec / Kdump: x86_64 specific code
This patch contains the x86_64 implementation of Kexec / Kdump for Xen.

Signed-Off-By: Magnus Damm <magnus@valinux.co.jp>
Signed-Off-By: Simon Horman <horms@verge.net.au>
2006-11-30 12:38:51 +00:00
kfraser@localhost.localdomain e9542d25de [HVM] Fix building PV-on-HVM drivers on i386.
Signed-off-by: Keir Fraser <keir@xensource.com>
2006-11-27 10:02:24 +00:00
kfraser@localhost.localdomain 217b97f42d [LINUX] Make xen /dev/mem aware of IA64 to use X.
The original /dev/mem (linux/drivers/char/mem.c) is aware of IA64
specific issues. On the other hand paravirtualized /dev/mem
(linux-2.6-xen-sparse/drivers/xen/char/mem.c) is simplifed not to be
aware of IA64. This patch makes it IA64-aware to use X on domain0/IA64.
With this patch and ia64-specific patches, X server can boot on domain0/IA64.

Signed-off-by: Isaku Yamahata <yamahata@valinux.co.jp>
2006-11-22 10:23:14 +00:00
kfraser@localhost.localdomain 7186363e84 [LINUX] x86/64: Fix backward compatibility to Xen 3.0.2.
This requires us to explicitly specify _PAGE_USER for kernel mappings.
Original patch by Jan Beulich <jbeulich@novell.com> and Gerd Hoffmann.
Signed-off-by: Keir Fraser <keir@xensource.com>
2006-11-14 17:00:05 +00:00
kfraser@localhost.localdomain 1a9e089e65 [LINUX] Preserve flags when converting PTEs from machine to phys.
Signed-off-by: John Byrne <john.l.byrne@hp.com>
2006-11-14 11:57:53 +00:00
kfraser@localhost.localdomain 66d409985f [LINUX] Clean up header includes (gnttab.h from fixmap.h).
include/asm-{i386,x86_64}/mach-xen/asm/fixmap.h was needlessly
including include/xen/gnttab.h. Removing this made necessary explicit
inclusion of that header in tpm_xen.c, the build of which should not
have succeeded on non-x86 architectures before.

Signed-off-by: Jan Beulich <jbeulich@novell.com>
2006-11-03 12:10:02 +00:00
kfraser@localhost.localdomain 11b39cba56 [LINUX] Fix build breakage from previous patch.
Signed-off-by: Keir Fraser <keir@xensource.com>
2006-10-30 14:28:29 +00:00
kfraser@localhost.localdomain 3d91901864 [LINUX] Use CONFIG_XEN_COMPAT_030002 where possible.
Signed-off-by: Jan Beulich <jbeulich@novell.com>
2006-10-30 14:14:46 +00:00
kfraser@localhost.localdomain fa088340b4 [LINUX] Declare structs as 'static __initdata' where possible.
Probably still not catching all possible cases, but using static
(where not already the case) makes the code size smaller, and using __initdata
has the usual advantages.

Signed-off-by: Jan Beulich <jbeulich@novell.com>
2006-10-30 14:09:13 +00:00
kfraser@localhost.localdomain b3ea76b1e0 [HVM] Clean ups for PV-on-HVM drivers. In particular, platform-pci
driver can now handle multi-page hypercall stub areas.
Signed-off-by: Keir Fraser <keir@xensource.com>
2006-08-22 17:16:58 +01:00
kfraser@localhost.localdomain 314ded7410 [x86_64] Guests no longer set _PAGE_USER on kernel mappings.
This may allow guest kernels to be run outside ring 3 in future, and
also provides scope for optimisations today (e.g., using global bit on
user mappings).

Signed-off-by: Jun Nakajima <jun.nakajima@intel.com>
Signed-off-by: Keir Fraser <keir@xensource.com>
2006-08-22 15:26:40 +01:00
kfraser@localhost.localdomain 30b586b9fb [LINUX] Split useful bits of page.h into new header maddr.h.
Split the bits of page.h which are needed by PV-on-HVM drivers out
into a separate header file, so that it's a bit easier to get the xenolinux
machine address functions when compiled against a native kernel.

Signed-off-by: Steven Smith <ssmith@xensource.com>
Signed-off-by: Keir Fraser <keir@xensource.com>
2006-08-14 13:54:10 +01:00
kfraser@localhost.localdomain 13fbff7760 [HVM] Add stubs to Linux for the new hvm_op hypercall.
Signed-off-by: Steven Smith <ssmith@xensource.com>
2006-08-14 11:33:50 +01:00
kfraser@localhost.localdomain 177155de98 [LINUX] Do not early-unpin pagetables that contain foreign mappings.
This fixes a bug whereby foreign pages were freed by the unpin, which
then become owned by the local domain before it destroys its ptes.
It therefore (erroneously) detects the mappings as local and so
updates reference counts, leading to crashes.
Signed-off-by: Keir Fraser <keir@xensource.com>
2006-08-01 15:48:48 +01:00
kfraser@dhcp93.uk.xensource.com 19c8828f4b Add new XENMEM_machphys_mapping to get info about location and
sizeof of the mach2phys table default mapping. Use this in Linux to
dynamically adapt the mfn_to_pfn() routine to undelrying hypervisor.
Signed-off-by: Keir Fraser <keir@xensource.com>
2006-06-20 14:45:46 +01:00
kfraser@dhcp93.uk.xensource.com 5363eb610a Export machine_to_phys start and end addresses to guests.
Use this info in Linux to bounds-check accesses to the
m2p table.
Signed-off-by: Keir Fraser <keir@xensource.com>
2006-06-20 12:01:09 +01:00
kaf24@firebug.cl.cam.ac.uk 1d0986e6b4 [LINUX] Eliminates a deadlock and reduce (sometimes significantly) the time
interrupts are off during context switch.

Signed-off-by: Jan Beulich <jbeulich@novell.com>
2006-06-13 15:56:28 +01:00
Ian.Campbell@xensource.com c9c67d5a02 [LINUX] Correctly return the results of {event_channel_op,physdev_op}_compat
Signed-off-by: Ian Campbell <ian.campbell@xensource.com>
2006-06-13 10:14:20 +01:00
kaf24@firebug.cl.cam.ac.uk 3729abf36e [LINUX] Rename hw_resend_irq to allow it to be defined seperately per arch.
Signed-off-by Kevin Tian <kevin.tian@intel.com>
2006-06-07 14:38:36 +01:00
kfraser@dhcp93.uk.xensource.com 1f9df5417a Fix ACM hypercall macros (broke the x86/64 and ia64 builds).
Signed-off-by: Keir Fraser <keir@xensource.com>
2006-05-31 13:26:10 +01:00
kaf24@firebug.cl.cam.ac.uk 9fea9fb410 [ACM] Add a hypervisor call macro to the linux kernel; it
completes the alignment of the ACM call interface with the other Xen 
hypervisor call interfaces. This macro is used to call from the a guest 
kernel directly into the ACM hypervisor module.

Signed-off by: Reiner Sailer <sailer@us.ibm.com>
Signed-off by: Bryan D. Payne <bdpayne@us.ibm.com>
2006-05-31 07:23:54 +01:00
kaf24@firebug.cl.cam.ac.uk 3231ebb6ba Define halt() and safe_halt() properly for Linux-on-Xen. Remove duplicated
code for initial bringup of secondary VCPUs.
Signed-off-by: Keir Fraser <keir@xensource.com>
2006-05-30 13:29:29 +01:00
Ian.Campbell@xensource.com 1fa74a12d2 Move include/asm-x86_64/e820.h to include/asm-x86_64/mach-xen/asm/e820.h
This fixes the native build.

Signed-off-by: Ian Campbell <ian.campbell@xensource.com>


--HG--
rename : linux-2.6-xen-sparse/include/asm-x86_64/e820.h => linux-2.6-xen-sparse/include/asm-x86_64/mach-xen/asm/e820.h
2006-05-26 11:23:55 +01:00
Ian.Campbell@xensource.com f715a4ce18 Convert x86/64 Linux to use the new memory map hypercall.
This change removes several of the differences between the bare-metal
and Xen versions.

Signed-off-by: Ian Campbell <ian.campbell@xensource.com>
2006-05-22 09:23:15 +01:00
Ian.Campbell@xensource.com c9e03023f9 Add include/asm-x86_64/e820.h to sparse tree
Signed-off-by: Ian Campbell <ian.campbell@xensource.com>
2006-05-22 09:21:58 +01:00
kaf24@firebug.cl.cam.ac.uk 5856c39120 Remove Emacs variables settings from tail of our Linux files.
Signed-off-by: Keir Fraser <keir@xensource.com>
2006-05-18 11:39:03 +01:00
cl349@firebug.cl.cam.ac.uk 15efc30a11 Add support to domain builders for loading kernels with physical addresses in the elf paddr and entry fields.
Add a new __xen_guest header field to distinguish between kernels with
the previous use of the paddr field and the new use.
Add a new __xen_guest header field to control the kernel entry point,
since the elf header entry field now points to a physical address.
This header field is also useful for supporting alternative entry
points in kernel images which run both on xen and native.
Also add a kernel config option to control whether the resulting kernel
should include compatibility code to run on Xen 3.0.2 or whether such
code such be left out, resulting in a kernel which will only run on
newer Xen versions.  Default to having compatibility enabled.
Kernels built with the new use of the elf header fields would otherwise
not work on Xen versions prior to this changeset.

Signed-off-by: Christian Limpach <Christian.Limpach@cl.cam.ac.uk>
2006-05-11 17:30:50 +01:00
kaf24@firebug.cl.cam.ac.uk 3ae4dcdda2 x86/64 has the wrong number of arguments defined for HYPERVISOR_xenoprof_op.
Signed-off-by: Ray Bryant <raybry@mpdtxmail.amd.com>
2006-05-11 13:45:10 +01:00