diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2012-10-12 09:20:28 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2012-10-12 09:20:28 -0400 |
commit | ccff9b1db693062b0a9c9070f4304deb47ef215c (patch) | |
tree | a956cc800a03f11254105fbd9926bab537b6863f /arch/x86/xen/enlighten.c | |
parent | 3dc329baa2ed1740036183041cefaf8ceb714038 (diff) | |
parent | cb6b6df111e46b9d0f79eb971575fd50555f43f4 (diff) |
Merge tag 'stable/for-linus-3.7-rc0-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/konrad/xen
Pull Xen fixes from Konrad Rzeszutek Wilk:
"This has four bug-fixes and one tiny feature that I forgot to put
initially in my tree due to oversight.
The feature is for kdump kernels to speed up the /proc/vmcore reading.
There is a ram_is_pfn helper function that the different platforms can
register for. We are now doing that.
The bug-fixes cover some embarrassing struct pv_cpu_ops variables
being set to NULL on Xen (but not baremetal). We had a similar issue
in the past with {write|read}_msr_safe and this fills the three
missing ones. The other bug-fix is to make the console output (hvc)
be capable of dealing with misbehaving backends and not fall flat on
its face. Lastly, a quirk for older XenBus implementations that came
with an ancient v3.4 hypervisor (so RHEL5 based) - reading of certain
non-existent attributes just hangs the guest during bootup - so we
take precaution of not doing that on such older installations.
Feature:
- Register a pfn_is_ram helper to speed up reading of /proc/vmcore.
Bug-fixes:
- Three pvops call for Xen were undefined causing BUG_ONs.
- Add a quirk so that the shutdown watches (used by kdump) are not
used with older Xen (3.4).
- Fix ungraceful state transition for the HVC console."
* tag 'stable/for-linus-3.7-rc0-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/konrad/xen:
xen/pv-on-hvm kexec: add quirk for Xen 3.4 and shutdown watches.
xen/bootup: allow {read|write}_cr8 pvops call.
xen/bootup: allow read_tscp call for Xen PV guests.
xen pv-on-hvm: add pfn_is_ram helper for kdump
xen/hvc: handle backend CLOSED without CLOSING
Diffstat (limited to 'arch/x86/xen/enlighten.c')
-rw-r--r-- | arch/x86/xen/enlighten.c | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/arch/x86/xen/enlighten.c b/arch/x86/xen/enlighten.c index bf788d34530d..e3497f240eab 100644 --- a/arch/x86/xen/enlighten.c +++ b/arch/x86/xen/enlighten.c | |||
@@ -987,7 +987,16 @@ static void xen_write_cr4(unsigned long cr4) | |||
987 | 987 | ||
988 | native_write_cr4(cr4); | 988 | native_write_cr4(cr4); |
989 | } | 989 | } |
990 | 990 | #ifdef CONFIG_X86_64 | |
991 | static inline unsigned long xen_read_cr8(void) | ||
992 | { | ||
993 | return 0; | ||
994 | } | ||
995 | static inline void xen_write_cr8(unsigned long val) | ||
996 | { | ||
997 | BUG_ON(val); | ||
998 | } | ||
999 | #endif | ||
991 | static int xen_write_msr_safe(unsigned int msr, unsigned low, unsigned high) | 1000 | static int xen_write_msr_safe(unsigned int msr, unsigned low, unsigned high) |
992 | { | 1001 | { |
993 | int ret; | 1002 | int ret; |
@@ -1156,6 +1165,11 @@ static const struct pv_cpu_ops xen_cpu_ops __initconst = { | |||
1156 | .read_cr4_safe = native_read_cr4_safe, | 1165 | .read_cr4_safe = native_read_cr4_safe, |
1157 | .write_cr4 = xen_write_cr4, | 1166 | .write_cr4 = xen_write_cr4, |
1158 | 1167 | ||
1168 | #ifdef CONFIG_X86_64 | ||
1169 | .read_cr8 = xen_read_cr8, | ||
1170 | .write_cr8 = xen_write_cr8, | ||
1171 | #endif | ||
1172 | |||
1159 | .wbinvd = native_wbinvd, | 1173 | .wbinvd = native_wbinvd, |
1160 | 1174 | ||
1161 | .read_msr = native_read_msr_safe, | 1175 | .read_msr = native_read_msr_safe, |
@@ -1164,6 +1178,8 @@ static const struct pv_cpu_ops xen_cpu_ops __initconst = { | |||
1164 | .read_tsc = native_read_tsc, | 1178 | .read_tsc = native_read_tsc, |
1165 | .read_pmc = native_read_pmc, | 1179 | .read_pmc = native_read_pmc, |
1166 | 1180 | ||
1181 | .read_tscp = native_read_tscp, | ||
1182 | |||
1167 | .iret = xen_iret, | 1183 | .iret = xen_iret, |
1168 | .irq_enable_sysexit = xen_sysexit, | 1184 | .irq_enable_sysexit = xen_sysexit, |
1169 | #ifdef CONFIG_X86_64 | 1185 | #ifdef CONFIG_X86_64 |