I noticed that an old problem is back (see below). The time command is
authorkaf24@firebug.cl.cam.ac.uk <kaf24@firebug.cl.cam.ac.uk>
Mon, 22 Aug 2005 09:37:27 +0000 (09:37 +0000)
committerkaf24@firebug.cl.cam.ac.uk <kaf24@firebug.cl.cam.ac.uk>
Mon, 22 Aug 2005 09:37:27 +0000 (09:37 +0000)
not showing the correct time (it's 3 sec in real time). The patch
attached restores the dropped line at the time of upgrading to 2.6.12.

Jun Nakajima

linux-2.6-xen-sparse/arch/xen/x86_64/kernel/vsyscall.c

index 737ffeb6d024337c16e05ae8014d708a646dac31..d96b83e6835319eeef9fb95f95fdc15a4227f78e 100644 (file)
@@ -210,15 +210,16 @@ static void __init map_vsyscall(void)
        __set_fixmap(VSYSCALL_FIRST_PAGE, physaddr_page0, PAGE_KERNEL_VSYSCALL);
 }
 
-extern void __set_fixmap_user (enum fixed_addresses, unsigned long, pgprot_t);
-
+#ifdef CONFIG_XEN
 static void __init map_vsyscall_user(void)
 {
+       extern void __set_fixmap_user(enum fixed_addresses, unsigned long, pgprot_t);
        extern char __vsyscall_0;
        unsigned long physaddr_page0 = __pa_symbol(&__vsyscall_0);
 
        __set_fixmap_user(VSYSCALL_FIRST_PAGE, physaddr_page0, PAGE_KERNEL_VSYSCALL);
 }
+#endif
 
 static int __init vsyscall_init(void)
 {
@@ -227,7 +228,10 @@ static int __init vsyscall_init(void)
        BUG_ON((unsigned long) &vtime != VSYSCALL_ADDR(__NR_vtime));
        BUG_ON((VSYSCALL_ADDR(0) != __fix_to_virt(VSYSCALL_FIRST_PAGE)));
        map_vsyscall();
-        map_vsyscall_user();    /* establish tranlation for user address space */
+#ifdef CONFIG_XEN
+       map_vsyscall_user();
+       sysctl_vsyscall = 0; /* disable vgettimeofay() */
+#endif
 #ifdef CONFIG_SYSCTL
        register_sysctl_table(kernel_root_table2, 0);
 #endif