Browse code

linux-esx: get LAPIC timer frequency from HV, skip calibration. +Dummy net driver

Change-Id: I8c7d7f63b1deca18132edef5047415eec631381b
Reviewed-on: http://photon-jenkins.eng.vmware.com/106
Tested-by: jenkins-photon <wangnan2015@hotmail.com>
Reviewed-by: Sharath George

Alexey Makhalov authored on 2015/11/11 04:48:18
Showing 3 changed files
... ...
@@ -1,7 +1,7 @@
1 1
 From d5e7229bec41406a4040a1ac9131e24cb1f8768d Mon Sep 17 00:00:00 2001
2 2
 From: Alexey Makhalov <amakhalov@vmware.com>
3 3
 Date: Wed, 30 Sep 2015 23:00:00 +0000
4
-Subject: [PATCH 1/5] Measure correct boot time.
4
+Subject: [PATCH 1/6] Measure correct boot time.
5 5
 
6 6
 ---
7 7
  arch/x86/Kconfig          |  8 ++++++++
... ...
@@ -98,7 +98,7 @@ index 5650655..c386186 100644
98 98
 From 500436e32d4dffae5d78f12be72c2e6784ab8cfb Mon Sep 17 00:00:00 2001
99 99
 From: Alexey Makhalov <amakhalov@vmware.com>
100 100
 Date: Fri, 2 Oct 2015 20:00:06 +0000
101
-Subject: [PATCH 2/5] PV io_delay for VMware guest.
101
+Subject: [PATCH 2/6] PV io_delay for VMware guest.
102 102
 
103 103
 ---
104 104
  arch/x86/kernel/cpu/vmware.c | 13 +++++++++++++
... ...
@@ -149,7 +149,7 @@ index 628a059..8fdd031 100644
149 149
 From adff5db39b45d8adef2b4579ec46ab1bb721a81f Mon Sep 17 00:00:00 2001
150 150
 From: Alexey Makhalov <amakhalov@vmware.com>
151 151
 Date: Wed, 7 Oct 2015 22:53:18 +0000
152
-Subject: [PATCH 3/5] Improved tsc based sched_clock & clocksource.
152
+Subject: [PATCH 3/6] Improved tsc based sched_clock & clocksource.
153 153
 
154 154
 ---
155 155
  arch/x86/Kconfig             |  1 +
... ...
@@ -327,7 +327,7 @@ index c0a2051..284a7ba 100644
327 327
 From 3bd5760c3b1f6cb39568361561d7d1e5440f1109 Mon Sep 17 00:00:00 2001
328 328
 From: Alexey Makhalov <amakhalov@vmware.com>
329 329
 Date: Mon, 12 Oct 2015 22:43:38 +0000
330
-Subject: [PATCH 4/5] Move read_boot_clock64 into pv_time_ops.
330
+Subject: [PATCH 4/6] Move read_boot_clock64 into pv_time_ops.
331 331
 
332 332
 ---
333 333
  arch/x86/Kconfig                      | 14 ++++++--
... ...
@@ -635,7 +635,7 @@ index 284a7ba..615aeb4 100644
635 635
 From aa93eaec3f709633007ab6ce3ddbb8aaa455b557 Mon Sep 17 00:00:00 2001
636 636
 From: Alexey Makhalov <amakhalov@vmware.com>
637 637
 Date: Thu, 5 Nov 2015 21:02:52 +0000
638
-Subject: [PATCH 5/5] Fix clocksource_vmware issue in VM version <= 10
638
+Subject: [PATCH 5/6] Fix clocksource_vmware issue in VM version <= 10
639 639
 
640 640
 ---
641 641
  arch/x86/kernel/cpu/vmware.c | 48 +++++++++++++++++++++++++++++++++++++++++---
... ...
@@ -729,3 +729,93 @@ index 1bf1fe3..0b89bb9 100644
729 729
 -- 
730 730
 1.9.1
731 731
 
732
+
733
+From 245c6ff168fabde177b5b6023356b6005b0efbef Mon Sep 17 00:00:00 2001
734
+From: Alexey Makhalov <amakhalov@vmware.com>
735
+Date: Tue, 10 Nov 2015 11:46:57 +0000
736
+Subject: [PATCH 6/6] Get lapic timer frequency from HV, skip calibration
737
+
738
+---
739
+ arch/x86/kernel/cpu/vmware.c | 48 +++++---------------------------------------
740
+ 1 file changed, 5 insertions(+), 43 deletions(-)
741
+
742
+diff --git a/arch/x86/kernel/cpu/vmware.c b/arch/x86/kernel/cpu/vmware.c
743
+index 0b89bb9..b16618b 100644
744
+--- a/arch/x86/kernel/cpu/vmware.c
745
+@@ -96,45 +96,11 @@ static struct clocksource clocksource_vmware = {
746
+ };
747
+ 
748
+ #ifdef CONFIG_VMWARE_ONLY
749
+-/*
750
+- * clocksource_vmware_periodic - is a temporary clocksource only for
751
+- * early boot initialization.
752
+- * Hack to avoid infinite looping in calibrate_APIC_clock() when
753
+- * tsc_deadline_timer is not supported by hypervisor (VM version <= 10)
754
+- * calibrate_APIC_clock() relies on _periodic_ timer!
755
+- * In that case we do not need to use clocksource that is valid for
756
+- * hres/oneshot timer.
757
+- */
758
+-static struct clocksource __initdata clocksource_vmware_periodic = {
759
+-	.name = "vmware-clock-periodic",
760
+-	.read = vmware_clock_get_cycles,
761
+-	.rating = 100,
762
+-	.mask = CLOCKSOURCE_MASK(64),
763
+-};
764
+-
765
+-static struct clocksource __initdata * initial_clocksource;
766
+-
767
+-/*
768
+- * clocksource_vmware_register
769
+- *
770
+- * Time to register real clocksource. It will be activated in
771
+- * clocksource_done_booting().
772
+- */
773
+-static int __init clocksource_vmware_register(void)
774
+-{
775
+-	if (!boot_cpu_has(X86_FEATURE_TSC_DEADLINE_TIMER)) {
776
+-		clocksource_register_khz(&clocksource_vmware, vtsc_khz);
777
+-		clocksource_unregister(&clocksource_vmware_periodic);
778
+-	}
779
+-	return 0;
780
+-}
781
+-subsys_initcall(clocksource_vmware_register);
782
+-
783
+ /* We want to use clocksource_vmware from the beginning to avoid drifting in
784
+    monotonic clock */
785
+ struct clocksource * __init clocksource_default_clock(void)
786
+ {
787
+-	return initial_clocksource;
788
++	return &clocksource_vmware;
789
+ }
790
+ #endif
791
+ 
792
+@@ -197,21 +163,17 @@ static void __init vmware_platform_setup(void)
793
+ 	printk(KERN_INFO "Pre Kernel boot time: %dms\n",
794
+ 		(unsigned int) (tsc_at_head / vtsc_khz));
795
+ 
796
++#ifdef CONFIG_X86_LOCAL_APIC
797
++	/* Skip lapic calibration since we know bus frequency. */
798
++	lapic_timer_frequency = ecx;
799
++#endif
800
+ 	vmware_cyc2ns.cyc2ns_mul =
801
+ 		DIV_ROUND_CLOSEST(NSEC_PER_MSEC << CYC2NS_SCALE_FACTOR,
802
+ 				  vtsc_khz);
803
+ 	vmware_cyc2ns.cyc2ns_shift = CYC2NS_SCALE_FACTOR;
804
+ 	vmware_cyc2ns.cyc2ns_offset = tsc_at_head;
805
+ 
806
+-#ifdef CONFIG_VMWARE_ONLY
807
+-	if (!boot_cpu_has(X86_FEATURE_TSC_DEADLINE_TIMER))
808
+-		initial_clocksource = &clocksource_vmware_periodic;
809
+-	else
810
+-		initial_clocksource = &clocksource_vmware;
811
+-	clocksource_register_khz(initial_clocksource, vtsc_khz);
812
+-#else
813
+ 	clocksource_register_khz(&clocksource_vmware, vtsc_khz);
814
+-#endif
815
+ 
816
+ 	paravirt_ops_setup();
817
+ }
818
+-- 
819
+1.9.1
820
+
... ...
@@ -1436,7 +1436,7 @@ CONFIG_FUSION_MAX_SGE=128
1436 1436
 CONFIG_NETDEVICES=y
1437 1437
 CONFIG_NET_CORE=y
1438 1438
 # CONFIG_BONDING is not set
1439
-# CONFIG_DUMMY is not set
1439
+CONFIG_DUMMY=m
1440 1440
 # CONFIG_EQUALIZER is not set
1441 1441
 # CONFIG_NET_FC is not set
1442 1442
 # CONFIG_NET_TEAM is not set
... ...
@@ -2,7 +2,7 @@
2 2
 Summary:       Kernel
3 3
 Name:          linux-esx
4 4
 Version:       4.2.0
5
-Release:       6%{?dist}
5
+Release:       7%{?dist}
6 6
 License:       GPLv2
7 7
 URL:           http://www.kernel.org/
8 8
 Group:         System Environment/Kernel
... ...
@@ -120,8 +120,11 @@ ln -sf %{name}-%{version}-%{release}.cfg /boot/photon.cfg
120 120
 /usr/src/%{name}-headers-%{version}-%{release}
121 121
 
122 122
 %changelog
123
+*   Tue Nov 10 2015 Alexey Makhalov <amakhalov@vmware.com> 4.2.0-7
124
+-   Get LAPIC timer frequency from HV, skip boot time calibration.
125
+-   .config: + dummy net driver (M).
123 126
 *   Mon Nov 09 2015 Alexey Makhalov <amakhalov@vmware.com> 4.2.0-6
124
--   Rename subpackage dev -> devel
127
+-   Rename subpackage dev -> devel.
125 128
 -   Added the build essential files in the devel subpackage.
126 129
 -   .config: added genede driver module.
127 130
 *   Wed Oct 28 2015 Alexey Makhalov <amakhalov@vmware.com> 4.2.0-5