Browse code

linux-esx: IPVS modules, built-in serial driver

Docker Swarm requires IP VS features enabled, so enable them as a modules.

VIC team requested serial driver to be built-in instead of module, but
serial driver initialization adds +26ms to the boot time. I figured out
that most of the time (25ms) it tries to detect sizes of fifo buffers to
detect "U6 16550A". But in our hypervisor we emulate only 16550A serial
device. Patch is added to skip this probbing.

Change-Id: Icead05fe88dfc72531f0a122b217ed2da47e21e5
Reviewed-on: http://photon-jenkins.eng.vmware.com:8082/1660
Tested-by: gerrit-photon <photon-checkins@vmware.com>
Reviewed-by: Sharath George

Alexey Makhalov authored on 2016/11/11 05:45:47
Showing 3 changed files
... ...
@@ -838,6 +838,7 @@ CONFIG_NETFILTER_XT_MATCH_HELPER=m
838 838
 CONFIG_NETFILTER_XT_MATCH_HL=m
839 839
 # CONFIG_NETFILTER_XT_MATCH_IPCOMP is not set
840 840
 CONFIG_NETFILTER_XT_MATCH_IPRANGE=m
841
+CONFIG_NETFILTER_XT_MATCH_IPVS=m
841 842
 # CONFIG_NETFILTER_XT_MATCH_L2TP is not set
842 843
 CONFIG_NETFILTER_XT_MATCH_LENGTH=m
843 844
 CONFIG_NETFILTER_XT_MATCH_LIMIT=m
... ...
@@ -879,7 +880,46 @@ CONFIG_IP_SET_MAX=256
879 879
 # CONFIG_IP_SET_HASH_NETPORT is not set
880 880
 # CONFIG_IP_SET_HASH_NETIFACE is not set
881 881
 # CONFIG_IP_SET_LIST_SET is not set
882
-# CONFIG_IP_VS is not set
882
+CONFIG_IP_VS=m
883
+# CONFIG_IP_VS_IPV6 is not set
884
+# CONFIG_IP_VS_DEBUG is not set
885
+CONFIG_IP_VS_TAB_BITS=12
886
+
887
+#
888
+# IPVS transport protocol load balancing support
889
+#
890
+# CONFIG_IP_VS_PROTO_TCP is not set
891
+# CONFIG_IP_VS_PROTO_UDP is not set
892
+# CONFIG_IP_VS_PROTO_AH_ESP is not set
893
+# CONFIG_IP_VS_PROTO_ESP is not set
894
+# CONFIG_IP_VS_PROTO_AH is not set
895
+# CONFIG_IP_VS_PROTO_SCTP is not set
896
+
897
+#
898
+# IPVS scheduler
899
+#
900
+CONFIG_IP_VS_RR=m
901
+# CONFIG_IP_VS_WRR is not set
902
+# CONFIG_IP_VS_LC is not set
903
+# CONFIG_IP_VS_WLC is not set
904
+# CONFIG_IP_VS_FO is not set
905
+# CONFIG_IP_VS_OVF is not set
906
+# CONFIG_IP_VS_LBLC is not set
907
+# CONFIG_IP_VS_LBLCR is not set
908
+# CONFIG_IP_VS_DH is not set
909
+# CONFIG_IP_VS_SH is not set
910
+# CONFIG_IP_VS_SED is not set
911
+# CONFIG_IP_VS_NQ is not set
912
+
913
+#
914
+# IPVS SH scheduler
915
+#
916
+CONFIG_IP_VS_SH_TAB_BITS=8
917
+
918
+#
919
+# IPVS application helper
920
+#
921
+CONFIG_IP_VS_NFCT=y
883 922
 
884 923
 #
885 924
 # IP: Netfilter Configuration
... ...
@@ -1692,13 +1732,16 @@ CONFIG_DEVPTS_MULTIPLE_INSTANCES=y
1692 1692
 #
1693 1693
 # Serial drivers
1694 1694
 #
1695
-CONFIG_SERIAL_8250=m
1695
+CONFIG_SERIAL_EARLYCON=y
1696
+CONFIG_SERIAL_8250=y
1696 1697
 # CONFIG_SERIAL_8250_DEPRECATED_OPTIONS is not set
1697 1698
 CONFIG_SERIAL_8250_PNP=y
1698
-CONFIG_SERIAL_8250_PCI=m
1699
+CONFIG_SERIAL_8250_CONSOLE=y
1700
+CONFIG_SERIAL_8250_PCI=y
1699 1701
 CONFIG_SERIAL_8250_NR_UARTS=4
1700 1702
 CONFIG_SERIAL_8250_RUNTIME_UARTS=4
1701 1703
 # CONFIG_SERIAL_8250_EXTENDED is not set
1704
+# CONFIG_SERIAL_8250_FSL is not set
1702 1705
 # CONFIG_SERIAL_8250_DW is not set
1703 1706
 # CONFIG_SERIAL_8250_RT288X is not set
1704 1707
 # CONFIG_SERIAL_8250_FINTEK is not set
... ...
@@ -1708,7 +1751,8 @@ CONFIG_SERIAL_8250_RUNTIME_UARTS=4
1708 1708
 # Non-8250 serial port support
1709 1709
 #
1710 1710
 # CONFIG_SERIAL_UARTLITE is not set
1711
-CONFIG_SERIAL_CORE=m
1711
+CONFIG_SERIAL_CORE=y
1712
+CONFIG_SERIAL_CORE_CONSOLE=y
1712 1713
 # CONFIG_SERIAL_JSM is not set
1713 1714
 # CONFIG_SERIAL_SCCNXP is not set
1714 1715
 # CONFIG_SERIAL_SC16IS7XX is not set
... ...
@@ -2,7 +2,7 @@
2 2
 Summary:       Kernel
3 3
 Name:          linux-esx
4 4
 Version:       4.4.26
5
-Release:       1%{?dist}
5
+Release:       2%{?dist}
6 6
 License:       GPLv2
7 7
 URL:           http://www.kernel.org/
8 8
 Group:         System Environment/Kernel
... ...
@@ -37,6 +37,7 @@ Patch22:       ipip-properly-mark-ipip-GRO-packets-as-encapsulated.patch
37 37
 Patch23:       tunnels-dont-apply-GRO-to-multiple-layers-of-encapsulation.patch
38 38
 #fixes CVE-2016-7039
39 39
 Patch24:       net-add-recursion-limit-to-GRO.patch
40
+Patch25:       serial-8250-do-not-probe-U6-16550A-fifo-size.patch
40 41
 BuildRequires: bc
41 42
 BuildRequires: kbd
42 43
 BuildRequires: kmod
... ...
@@ -94,6 +95,7 @@ The Linux package contains the Linux kernel doc files
94 94
 %patch22 -p1
95 95
 %patch23 -p1
96 96
 %patch24 -p1
97
+%patch25 -p1
97 98
 
98 99
 %build
99 100
 # patch vmw_balloon driver
... ...
@@ -165,6 +167,10 @@ ln -sf %{name}-%{version}-%{release}.cfg /boot/photon.cfg
165 165
 /usr/src/%{name}-headers-%{version}-%{release}
166 166
 
167 167
 %changelog
168
+*   Thu Nov 10 2016 Alexey Makhalov <amakhalov@vmware.com> 4.4.26-2
169
+-   .config: add ipvs modules for docker swarm
170
+-   .config: serial driver built in kernel
171
+-   serial-8250-do-not-probe-U6-16550A-fifo-size.patch - faster boot
168 172
 *   Fri Oct 21 2016 Alexey Makhalov <amakhalov@vmware.com> 4.4.26-1
169 173
 -   Update to linux-4.4.26
170 174
 *   Wed Oct 19 2016 Alexey Makhalov <amakhalov@vmware.com> 4.4.20-7
171 175
new file mode 100644
... ...
@@ -0,0 +1,17 @@
0
+diff --git a/drivers/tty/serial/8250/8250_port.c b/drivers/tty/serial/8250/8250_port.c
1
+index 56ccbce..ea95693 100644
2
+--- a/drivers/tty/serial/8250/8250_port.c
3
+@@ -1045,10 +1045,12 @@ static void autoconfig_16550a(struct uart_8250_port *up)
4
+ 	 * We distinguish between 16550A and U6 16550A by counting
5
+ 	 * how many bytes are in the FIFO.
6
+ 	 */
7
++#if 0
8
+ 	if (up->port.type == PORT_16550A && size_fifo(up) == 64) {
9
+ 		up->port.type = PORT_U6_16550A;
10
+ 		up->capabilities |= UART_CAP_AFE;
11
+ 	}
12
++#endif
13
+ }
14
+ 
15
+ /*