summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJustin M. Forbes <jforbes@redhat.com>2014-04-21 07:54:20 -0500
committerJustin M. Forbes <jforbes@redhat.com>2014-04-21 07:54:20 -0500
commitb1bf9ea7daf301bf5840b1899385e95c5f55d10b (patch)
tree40a08a2a52b2f3787ee6e0f0c43d3b73209916cf
parentb126fec5d027a706b15295e29e3f4402d791a2ad (diff)
downloadkernel-b1bf9ea7daf301bf5840b1899385e95c5f55d10b.tar.gz
kernel-b1bf9ea7daf301bf5840b1899385e95c5f55d10b.tar.xz
kernel-b1bf9ea7daf301bf5840b1899385e95c5f55d10b.zip
Linux v3.14.1
-rw-r--r--0001-synaptics-Add-min-max-quirk-for-ThinkPad-T431s-L440-.patch36
-rw-r--r--HID-Bluetooth-hidp-make-sure-input-buffers-are-big-e.patch95
-rw-r--r--Input-ALPS-add-support-for-Dolphin-devices.patch348
-rw-r--r--arm-am33xx-bblack.patch1292
-rw-r--r--arm-imx6-utilite.patch33
-rw-r--r--arm-tegra-paz00-panel-dts.patch99
-rw-r--r--cifs-mask-off-top-byte-in-get_rfc1002_length.patch88
-rw-r--r--cifs-sanity-check-length-of-data-to-send-before-sending.patch129
-rw-r--r--config-arm-generic42
-rw-r--r--config-arm645
-rw-r--r--config-armv788
-rw-r--r--config-armv7-generic99
-rw-r--r--config-armv7-lpae33
-rw-r--r--config-debug2
-rw-r--r--config-generic82
-rw-r--r--config-nodebug2
-rw-r--r--config-powerpc-generic3
-rw-r--r--config-powerpc647
-rw-r--r--config-powerpc64p77
-rw-r--r--config-x86-32-generic5
-rw-r--r--config-x86-generic8
-rw-r--r--config-x86_64-generic3
-rw-r--r--ipv6-addrconf-revert-if_inet6ifa_flag-format.patch45
-rw-r--r--ipv6-introduce-IFA_F_NOPREFIXROUTE-and-IFA_F_MANAGETEMPADDR-flags.patch753
-rw-r--r--iwlwifi-dvm-clear-IWL_STA_UCODE_INPROGRESS-when-asso.patch39
-rw-r--r--kernel.spec116
-rw-r--r--keyring-fix.patch17
-rw-r--r--nfqueue-Orphan-frags-in-nfqnl_zcopy-and-handle-error.patch117
-rw-r--r--nfs-check-gssd-running-before-krb5i-auth.patch53
-rw-r--r--rpc_pipe-fix-cleanup-of-dummy-gssd-directory-when-notification-fails.patch50
-rw-r--r--rpc_pipe-remove-the-clntXX-dir-if-creating-the-pipe-fails.patch32
-rw-r--r--secure-modules.patch122
-rw-r--r--selinux-put-the-mmap-DAC-controls-before-the-MAC-controls.patch94
-rw-r--r--sources4
-rw-r--r--sunrpc-add-an-info-file-for-the-dummy-gssd-pipe.patch96
-rw-r--r--sunrpc-create-a-new-dummy-pipe-for-gssd-to-hold-open.patch233
-rw-r--r--sunrpc-replace-gssd_running-with-more-reliable-check.patch139
-rw-r--r--sysrq-secure-boot.patch53
-rw-r--r--tty-Fix-low_latency-BUG.patch158
39 files changed, 493 insertions, 4134 deletions
diff --git a/0001-synaptics-Add-min-max-quirk-for-ThinkPad-T431s-L440-.patch b/0001-synaptics-Add-min-max-quirk-for-ThinkPad-T431s-L440-.patch
index 920c8eaa..04cbe551 100644
--- a/0001-synaptics-Add-min-max-quirk-for-ThinkPad-T431s-L440-.patch
+++ b/0001-synaptics-Add-min-max-quirk-for-ThinkPad-T431s-L440-.patch
@@ -1,8 +1,8 @@
-From 555b84220a7c84c2faa1964d19733d867d7bf61f Mon Sep 17 00:00:00 2001
+From 1d9820da2ba6e2794a283d709caf710d0a546b3c Mon Sep 17 00:00:00 2001
From: Hans de Goede <hdegoede@redhat.com>
Date: Thu, 10 Apr 2014 11:36:14 +0200
-Subject: [PATCH v3] synaptics: Add min/max quirk for ThinkPad T431s, L440,
- L540, S1 Yoga and X1
+Subject: [PATCH] synaptics: Add min/max quirk for ThinkPad T431s, L440, S1
+ Yoga and X1
We expect that all the Haswell series will need such quirks, sigh.
@@ -14,24 +14,20 @@ The X1 Carbon 3rd generation name says 2nd while it is a 3rd generation.
The X1 and T431s share a PnPID with the T540p, but the reported ranges are
closer to those of the T440s.
-HdG: Squashed 5 quirk patches into one. T431s + L440 + L540 are written by me,
+HdG: Squashed 4 quirk patches into one. T431s + L440 are written by me,
S1 Yoga and X1 are written by Benjamin Tissoires.
-Hdg: Standardized S1 Yoga and X1 values, Yoga uses the same touchpad as the
-X240, X1 uses the same touchpad as the T440.
-
-Cc: stable@vger.kernel.org
Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
---
- drivers/input/mouse/synaptics.c | 42 +++++++++++++++++++++++++++++++++++++++++
- 1 file changed, 42 insertions(+)
+ drivers/input/mouse/synaptics.c | 34 ++++++++++++++++++++++++++++++++++
+ 1 file changed, 34 insertions(+)
diff --git a/drivers/input/mouse/synaptics.c b/drivers/input/mouse/synaptics.c
-index a8b57d7..7c9f509 100644
+index b9d2259..521a8e7 100644
--- a/drivers/input/mouse/synaptics.c
+++ b/drivers/input/mouse/synaptics.c
-@@ -1566,6 +1566,14 @@ static const struct dmi_system_id min_max_dmi_table[] __initconst = {
+@@ -1557,6 +1557,14 @@ static const struct dmi_system_id min_max_dmi_table[] __initconst = {
.driver_data = (int []){1232, 5710, 1156, 4696},
},
{
@@ -46,7 +42,7 @@ index a8b57d7..7c9f509 100644
/* Lenovo ThinkPad T440s */
.matches = {
DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"),
-@@ -1574,6 +1582,14 @@ static const struct dmi_system_id min_max_dmi_table[] __initconst = {
+@@ -1565,6 +1573,14 @@ static const struct dmi_system_id min_max_dmi_table[] __initconst = {
.driver_data = (int []){1024, 5112, 2024, 4832},
},
{
@@ -61,26 +57,18 @@ index a8b57d7..7c9f509 100644
/* Lenovo ThinkPad T540p */
.matches = {
DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"),
-@@ -1581,6 +1597,32 @@ static const struct dmi_system_id min_max_dmi_table[] __initconst = {
+@@ -1572,6 +1588,24 @@ static const struct dmi_system_id min_max_dmi_table[] __initconst = {
},
.driver_data = (int []){1024, 5056, 2058, 4832},
},
+ {
-+ /* Lenovo ThinkPad L540 */
-+ .matches = {
-+ DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"),
-+ DMI_MATCH(DMI_PRODUCT_VERSION, "ThinkPad L540"),
-+ },
-+ .driver_data = (int []){1024, 5112, 2024, 4832},
-+ },
-+ {
+ /* Lenovo Yoga S1 */
+ .matches = {
+ DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"),
+ DMI_EXACT_MATCH(DMI_PRODUCT_VERSION,
+ "ThinkPad S1 Yoga"),
+ },
-+ .driver_data = (int []){1232, 5710, 1156, 4696},
++ .driver_data = (int []){1232, 5711, 1159, 4700},
+ },
+ {
+ /* Lenovo ThinkPad X1 Carbon Haswell (3rd generation) */
@@ -89,7 +77,7 @@ index a8b57d7..7c9f509 100644
+ DMI_MATCH(DMI_PRODUCT_VERSION,
+ "ThinkPad X1 Carbon 2nd"),
+ },
-+ .driver_data = (int []){1024, 5112, 2024, 4832},
++ .driver_data = (int []){1131, 5113, 2021, 4831},
+ },
#endif
{ }
diff --git a/HID-Bluetooth-hidp-make-sure-input-buffers-are-big-e.patch b/HID-Bluetooth-hidp-make-sure-input-buffers-are-big-e.patch
deleted file mode 100644
index 0fb3cc4b..00000000
--- a/HID-Bluetooth-hidp-make-sure-input-buffers-are-big-e.patch
+++ /dev/null
@@ -1,95 +0,0 @@
-Bugzilla: 1027465
-Upstream-status: 3.14
-
-From a4b1b5877b514b276f0f31efe02388a9c2836728 Mon Sep 17 00:00:00 2001
-From: David Herrmann <dh.herrmann@gmail.com>
-Date: Thu, 19 Dec 2013 12:09:32 +0100
-Subject: [PATCH] HID: Bluetooth: hidp: make sure input buffers are big enough
-
-HID core expects the input buffers to be at least of size 4096
-(HID_MAX_BUFFER_SIZE). Other sizes will result in buffer-overflows if an
-input-report is smaller than advertised. We could, like i2c, compute the
-biggest report-size instead of using HID_MAX_BUFFER_SIZE, but this will
-blow up if report-descriptors are changed after ->start() has been called.
-So lets be safe and just use the biggest buffer we have.
-
-Note that this adds an additional copy to the HIDP input path. If there is
-a way to make sure the skb-buf is big enough, we should use that instead.
-
-The best way would be to make hid-core honor the @size argument, though,
-that sounds easier than it is. So lets just fix the buffer-overflows for
-now and afterwards look for a faster way for all transport drivers.
-
-Signed-off-by: David Herrmann <dh.herrmann@gmail.com>
-Signed-off-by: Jiri Kosina <jkosina@suse.cz>
----
- net/bluetooth/hidp/core.c | 16 ++++++++++++++--
- net/bluetooth/hidp/hidp.h | 4 ++++
- 2 files changed, 18 insertions(+), 2 deletions(-)
-
-diff --git a/net/bluetooth/hidp/core.c b/net/bluetooth/hidp/core.c
-index 292e619..d9fb934 100644
---- a/net/bluetooth/hidp/core.c
-+++ b/net/bluetooth/hidp/core.c
-@@ -430,6 +430,16 @@ static void hidp_del_timer(struct hidp_session *session)
- del_timer(&session->timer);
- }
-
-+static void hidp_process_report(struct hidp_session *session,
-+ int type, const u8 *data, int len, int intr)
-+{
-+ if (len > HID_MAX_BUFFER_SIZE)
-+ len = HID_MAX_BUFFER_SIZE;
-+
-+ memcpy(session->input_buf, data, len);
-+ hid_input_report(session->hid, type, session->input_buf, len, intr);
-+}
-+
- static void hidp_process_handshake(struct hidp_session *session,
- unsigned char param)
- {
-@@ -502,7 +512,8 @@ static int hidp_process_data(struct hidp_session *session, struct sk_buff *skb,
- hidp_input_report(session, skb);
-
- if (session->hid)
-- hid_input_report(session->hid, HID_INPUT_REPORT, skb->data, skb->len, 0);
-+ hidp_process_report(session, HID_INPUT_REPORT,
-+ skb->data, skb->len, 0);
- break;
-
- case HIDP_DATA_RTYPE_OTHER:
-@@ -584,7 +595,8 @@ static void hidp_recv_intr_frame(struct hidp_session *session,
- hidp_input_report(session, skb);
-
- if (session->hid) {
-- hid_input_report(session->hid, HID_INPUT_REPORT, skb->data, skb->len, 1);
-+ hidp_process_report(session, HID_INPUT_REPORT,
-+ skb->data, skb->len, 1);
- BT_DBG("report len %d", skb->len);
- }
- } else {
-diff --git a/net/bluetooth/hidp/hidp.h b/net/bluetooth/hidp/hidp.h
-index ab52414..8798492 100644
---- a/net/bluetooth/hidp/hidp.h
-+++ b/net/bluetooth/hidp/hidp.h
-@@ -24,6 +24,7 @@
- #define __HIDP_H
-
- #include <linux/types.h>
-+#include <linux/hid.h>
- #include <linux/kref.h>
- #include <net/bluetooth/bluetooth.h>
- #include <net/bluetooth/l2cap.h>
-@@ -179,6 +180,9 @@ struct hidp_session {
-
- /* Used in hidp_output_raw_report() */
- int output_report_success; /* boolean */
-+
-+ /* temporary input buffer */
-+ u8 input_buf[HID_MAX_BUFFER_SIZE];
- };
-
- /* HIDP init defines */
---
-1.8.5.3
-
diff --git a/Input-ALPS-add-support-for-Dolphin-devices.patch b/Input-ALPS-add-support-for-Dolphin-devices.patch
deleted file mode 100644
index 1bdc0cbf..00000000
--- a/Input-ALPS-add-support-for-Dolphin-devices.patch
+++ /dev/null
@@ -1,348 +0,0 @@
-Bugzilla: 953211
-Upstream-status: Queued for 3.14
-
-From 4081924b7b6ce876fdb8e8049f1a5ba9c1496483 Mon Sep 17 00:00:00 2001
-From: Yunkang Tang <tommywill2011@gmail.com>
-Date: Thu, 26 Dec 2013 14:54:19 -0800
-Subject: [PATCH] Input: ALPS - add support for "Dolphin" devices
-
-This adds support for another flavor of ALPS protocol used in newer
-"Dolphin" devices.
-
-Signed-off-by: Yunkang Tang <yunkang.tang@cn.alps.com>
-Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
----
- drivers/input/mouse/alps.c | 214 ++++++++++++++++++++++++++++++++++++---------
- drivers/input/mouse/alps.h | 7 +-
- 2 files changed, 179 insertions(+), 42 deletions(-)
-
-diff --git a/drivers/input/mouse/alps.c b/drivers/input/mouse/alps.c
-index 5cf62e3..fb15c64 100644
---- a/drivers/input/mouse/alps.c
-+++ b/drivers/input/mouse/alps.c
-@@ -277,6 +277,57 @@ static void alps_process_packet_v1_v2(struct psmouse *psmouse)
- }
-
- /*
-+ * Process bitmap data for V5 protocols. Return value is null.
-+ *
-+ * The bitmaps don't have enough data to track fingers, so this function
-+ * only generates points representing a bounding box of at most two contacts.
-+ * These two points are returned in x1, y1, x2, and y2.
-+ */
-+static void alps_process_bitmap_dolphin(struct alps_data *priv,
-+ struct alps_fields *fields,
-+ int *x1, int *y1, int *x2, int *y2)
-+{
-+ int box_middle_x, box_middle_y;
-+ unsigned int x_map, y_map;
-+ unsigned char start_bit, end_bit;
-+ unsigned char x_msb, x_lsb, y_msb, y_lsb;
-+
-+ x_map = fields->x_map;
-+ y_map = fields->y_map;
-+
-+ if (!x_map || !y_map)
-+ return;
-+
-+ /* Get Most-significant and Least-significant bit */
-+ x_msb = fls(x_map);
-+ x_lsb = ffs(x_map);
-+ y_msb = fls(y_map);
-+ y_lsb = ffs(y_map);
-+
-+ /* Most-significant bit should never exceed max sensor line number */
-+ if (x_msb > priv->x_bits || y_msb > priv->y_bits)
-+ return;
-+
-+ *x1 = *y1 = *x2 = *y2 = 0;
-+
-+ if (fields->fingers > 1) {
-+ start_bit = priv->x_bits - x_msb;
-+ end_bit = priv->x_bits - x_lsb;
-+ box_middle_x = (priv->x_max * (start_bit + end_bit)) /
-+ (2 * (priv->x_bits - 1));
-+
-+ start_bit = y_lsb - 1;
-+ end_bit = y_msb - 1;
-+ box_middle_y = (priv->y_max * (start_bit + end_bit)) /
-+ (2 * (priv->y_bits - 1));
-+ *x1 = fields->x;
-+ *y1 = fields->y;
-+ *x2 = 2 * box_middle_x - *x1;
-+ *y2 = 2 * box_middle_y - *y1;
-+ }
-+}
-+
-+/*
- * Process bitmap data from v3 and v4 protocols. Returns the number of
- * fingers detected. A return value of 0 means at least one of the
- * bitmaps was empty.
-@@ -481,7 +532,8 @@ static void alps_decode_buttons_v3(struct alps_fields *f, unsigned char *p)
- f->ts_middle = !!(p[3] & 0x40);
- }
-
--static void alps_decode_pinnacle(struct alps_fields *f, unsigned char *p)
-+static void alps_decode_pinnacle(struct alps_fields *f, unsigned char *p,
-+ struct psmouse *psmouse)
- {
- f->first_mp = !!(p[4] & 0x40);
- f->is_mp = !!(p[0] & 0x40);
-@@ -502,48 +554,61 @@ static void alps_decode_pinnacle(struct alps_fields *f, unsigned char *p)
- alps_decode_buttons_v3(f, p);
- }
-
--static void alps_decode_rushmore(struct alps_fields *f, unsigned char *p)
-+static void alps_decode_rushmore(struct alps_fields *f, unsigned char *p,
-+ struct psmouse *psmouse)
- {
-- alps_decode_pinnacle(f, p);
-+ alps_decode_pinnacle(f, p, psmouse);
-
- f->x_map |= (p[5] & 0x10) << 11;
- f->y_map |= (p[5] & 0x20) << 6;
- }
-
--static void alps_decode_dolphin(struct alps_fields *f, unsigned char *p)
-+static void alps_decode_dolphin(struct alps_fields *f, unsigned char *p,
-+ struct psmouse *psmouse)
- {
-+ u64 palm_data = 0;
-+ struct alps_data *priv = psmouse->private;
-+
- f->first_mp = !!(p[0] & 0x02);
- f->is_mp = !!(p[0] & 0x20);
-
-- f->fingers = ((p[0] & 0x6) >> 1 |
-+ if (!f->is_mp) {
-+ f->x = ((p[1] & 0x7f) | ((p[4] & 0x0f) << 7));
-+ f->y = ((p[2] & 0x7f) | ((p[4] & 0xf0) << 3));
-+ f->z = (p[0] & 4) ? 0 : p[5] & 0x7f;
-+ alps_decode_buttons_v3(f, p);
-+ } else {
-+ f->fingers = ((p[0] & 0x6) >> 1 |
- (p[0] & 0x10) >> 2);
-- f->x_map = ((p[2] & 0x60) >> 5) |
-- ((p[4] & 0x7f) << 2) |
-- ((p[5] & 0x7f) << 9) |
-- ((p[3] & 0x07) << 16) |
-- ((p[3] & 0x70) << 15) |
-- ((p[0] & 0x01) << 22);
-- f->y_map = (p[1] & 0x7f) |
-- ((p[2] & 0x1f) << 7);
--
-- f->x = ((p[1] & 0x7f) | ((p[4] & 0x0f) << 7));
-- f->y = ((p[2] & 0x7f) | ((p[4] & 0xf0) << 3));
-- f->z = (p[0] & 4) ? 0 : p[5] & 0x7f;
-
-- alps_decode_buttons_v3(f, p);
-+ palm_data = (p[1] & 0x7f) |
-+ ((p[2] & 0x7f) << 7) |
-+ ((p[4] & 0x7f) << 14) |
-+ ((p[5] & 0x7f) << 21) |
-+ ((p[3] & 0x07) << 28) |
-+ (((u64)p[3] & 0x70) << 27) |
-+ (((u64)p[0] & 0x01) << 34);
-+
-+ /* Y-profile is stored in P(0) to p(n-1), n = y_bits; */
-+ f->y_map = palm_data & (BIT(priv->y_bits) - 1);
-+
-+ /* X-profile is stored in p(n) to p(n+m-1), m = x_bits; */
-+ f->x_map = (palm_data >> priv->y_bits) &
-+ (BIT(priv->x_bits) - 1);
-+ }
- }
-
--static void alps_process_touchpad_packet_v3(struct psmouse *psmouse)
-+static void alps_process_touchpad_packet_v3_v5(struct psmouse *psmouse)
- {
- struct alps_data *priv = psmouse->private;
- unsigned char *packet = psmouse->packet;
- struct input_dev *dev = psmouse->dev;
- struct input_dev *dev2 = priv->dev2;
- int x1 = 0, y1 = 0, x2 = 0, y2 = 0;
-- int fingers = 0, bmap_fingers;
-- struct alps_fields f;
-+ int fingers = 0, bmap_fn;
-+ struct alps_fields f = {0};
-
-- priv->decode_fields(&f, packet);
-+ priv->decode_fields(&f, packet, psmouse);
-
- /*
- * There's no single feature of touchpad position and bitmap packets
-@@ -560,19 +625,38 @@ static void alps_process_touchpad_packet_v3(struct psmouse *psmouse)
- */
- if (f.is_mp) {
- fingers = f.fingers;
-- bmap_fingers = alps_process_bitmap(priv,
-- f.x_map, f.y_map,
-- &x1, &y1, &x2, &y2);
--
-- /*
-- * We shouldn't report more than one finger if
-- * we don't have two coordinates.
-- */
-- if (fingers > 1 && bmap_fingers < 2)
-- fingers = bmap_fingers;
--
-- /* Now process position packet */
-- priv->decode_fields(&f, priv->multi_data);
-+ if (priv->proto_version == ALPS_PROTO_V3) {
-+ bmap_fn = alps_process_bitmap(priv, f.x_map,
-+ f.y_map, &x1, &y1,
-+ &x2, &y2);
-+
-+ /*
-+ * We shouldn't report more than one finger if
-+ * we don't have two coordinates.
-+ */
-+ if (fingers > 1 && bmap_fn < 2)
-+ fingers = bmap_fn;
-+
-+ /* Now process position packet */
-+ priv->decode_fields(&f, priv->multi_data,
-+ psmouse);
-+ } else {
-+ /*
-+ * Because Dolphin uses position packet's
-+ * coordinate data as Pt1 and uses it to
-+ * calculate Pt2, so we need to do position
-+ * packet decode first.
-+ */
-+ priv->decode_fields(&f, priv->multi_data,
-+ psmouse);
-+
-+ /*
-+ * Since Dolphin's finger number is reliable,
-+ * there is no need to compare with bmap_fn.
-+ */
-+ alps_process_bitmap_dolphin(priv, &f, &x1, &y1,
-+ &x2, &y2);
-+ }
- } else {
- priv->multi_packet = 0;
- }
-@@ -662,7 +746,7 @@ static void alps_process_packet_v3(struct psmouse *psmouse)
- return;
- }
-
-- alps_process_touchpad_packet_v3(psmouse);
-+ alps_process_touchpad_packet_v3_v5(psmouse);
- }
-
- static void alps_process_packet_v6(struct psmouse *psmouse)
-@@ -1709,6 +1793,52 @@ error:
- return -1;
- }
-
-+static int alps_dolphin_get_device_area(struct psmouse *psmouse,
-+ struct alps_data *priv)
-+{
-+ struct ps2dev *ps2dev = &psmouse->ps2dev;
-+ unsigned char param[4] = {0};
-+ int num_x_electrode, num_y_electrode;
-+
-+ if (alps_enter_command_mode(psmouse))
-+ return -1;
-+
-+ param[0] = 0x0a;
-+ if (ps2_command(ps2dev, NULL, PSMOUSE_CMD_RESET_WRAP) ||
-+ ps2_command(ps2dev, NULL, PSMOUSE_CMD_SETPOLL) ||
-+ ps2_command(ps2dev, NULL, PSMOUSE_CMD_SETPOLL) ||
-+ ps2_command(ps2dev, &param[0], PSMOUSE_CMD_SETRATE) ||
-+ ps2_command(ps2dev, &param[0], PSMOUSE_CMD_SETRATE))
-+ return -1;
-+
-+ if (ps2_command(ps2dev, param, PSMOUSE_CMD_GETINFO))
-+ return -1;
-+
-+ /*
-+ * Dolphin's sensor line number is not fixed. It can be calculated
-+ * by adding the device's register value with DOLPHIN_PROFILE_X/YOFFSET.
-+ * Further more, we can get device's x_max and y_max by multiplying
-+ * sensor line number with DOLPHIN_COUNT_PER_ELECTRODE.
-+ *
-+ * e.g. When we get register's sensor_x = 11 & sensor_y = 8,
-+ * real sensor line number X = 11 + 8 = 19, and
-+ * real sensor line number Y = 8 + 1 = 9.
-+ * So, x_max = (19 - 1) * 64 = 1152, and
-+ * y_max = (9 - 1) * 64 = 512.
-+ */
-+ num_x_electrode = DOLPHIN_PROFILE_XOFFSET + (param[2] & 0x0F);
-+ num_y_electrode = DOLPHIN_PROFILE_YOFFSET + ((param[2] >> 4) & 0x0F);
-+ priv->x_bits = num_x_electrode;
-+ priv->y_bits = num_y_electrode;
-+ priv->x_max = (num_x_electrode - 1) * DOLPHIN_COUNT_PER_ELECTRODE;
-+ priv->y_max = (num_y_electrode - 1) * DOLPHIN_COUNT_PER_ELECTRODE;
-+
-+ if (alps_exit_command_mode(psmouse))
-+ return -1;
-+
-+ return 0;
-+}
-+
- static int alps_hw_init_dolphin_v1(struct psmouse *psmouse)
- {
- struct ps2dev *ps2dev = &psmouse->ps2dev;
-@@ -1763,13 +1893,13 @@ static void alps_set_defaults(struct alps_data *priv)
- break;
- case ALPS_PROTO_V5:
- priv->hw_init = alps_hw_init_dolphin_v1;
-- priv->process_packet = alps_process_packet_v3;
-+ priv->process_packet = alps_process_touchpad_packet_v3_v5;
- priv->decode_fields = alps_decode_dolphin;
- priv->set_abs_params = alps_set_abs_params_mt;
- priv->nibble_commands = alps_v3_nibble_commands;
- priv->addr_command = PSMOUSE_CMD_RESET_WRAP;
- priv->byte0 = 0xc8;
-- priv->mask0 = 0xc8;
-+ priv->mask0 = 0xd8;
- priv->flags = 0;
- priv->x_max = 1360;
- priv->y_max = 660;
-@@ -1845,11 +1975,13 @@ static int alps_identify(struct psmouse *psmouse, struct alps_data *priv)
- if (alps_match_table(psmouse, priv, e7, ec) == 0) {
- return 0;
- } else if (e7[0] == 0x73 && e7[1] == 0x03 && e7[2] == 0x50 &&
-- ec[0] == 0x73 && ec[1] == 0x01) {
-+ ec[0] == 0x73 && (ec[1] == 0x01 || ec[1] == 0x02)) {
- priv->proto_version = ALPS_PROTO_V5;
- alps_set_defaults(priv);
--
-- return 0;
-+ if (alps_dolphin_get_device_area(psmouse, priv))
-+ return -EIO;
-+ else
-+ return 0;
- } else if (ec[0] == 0x88 && ec[1] == 0x08) {
- priv->proto_version = ALPS_PROTO_V3;
- alps_set_defaults(priv);
-diff --git a/drivers/input/mouse/alps.h b/drivers/input/mouse/alps.h
-index 704f0f9..03f88b6 100644
---- a/drivers/input/mouse/alps.h
-+++ b/drivers/input/mouse/alps.h
-@@ -19,6 +19,10 @@
- #define ALPS_PROTO_V5 5
- #define ALPS_PROTO_V6 6
-
-+#define DOLPHIN_COUNT_PER_ELECTRODE 64
-+#define DOLPHIN_PROFILE_XOFFSET 8 /* x-electrode offset */
-+#define DOLPHIN_PROFILE_YOFFSET 1 /* y-electrode offset */
-+
- /**
- * struct alps_model_info - touchpad ID table
- * @signature: E7 response string to match.
-@@ -146,7 +150,8 @@ struct alps_data {
-
- int (*hw_init)(struct psmouse *psmouse);
- void (*process_packet)(struct psmouse *psmouse);
-- void (*decode_fields)(struct alps_fields *f, unsigned char *p);
-+ void (*decode_fields)(struct alps_fields *f, unsigned char *p,
-+ struct psmouse *psmouse);
- void (*set_abs_params)(struct alps_data *priv, struct input_dev *dev1);
-
- int prev_fin;
---
-1.8.4.2
-
diff --git a/arm-am33xx-bblack.patch b/arm-am33xx-bblack.patch
deleted file mode 100644
index 78b5f3d9..00000000
--- a/arm-am33xx-bblack.patch
+++ /dev/null
@@ -1,1292 +0,0 @@
-Bugzilla: 1012025
-Upstream-status: In beagle github repository https://github.com/beagleboard/kernel
-
-From 72567452d5d6007010597158f6afd00e2bf07579 Mon Sep 17 00:00:00 2001
-From: Pantelis Antoniou <panto@antoniou-consulting.com>
-Date: Sat, 15 Sep 2012 12:00:41 +0300
-Subject: [PATCH] pinctrl: pinctrl-single must be initialized early.
-
-When using pinctrl-single to handle i2c initialization, it has
-to be done early. Whether this is the best way to do so, is an
-exercise left to the reader.
----
- drivers/pinctrl/pinctrl-single.c | 12 +++++++++++-
- 1 file changed, 11 insertions(+), 1 deletion(-)
-
-diff --git a/drivers/pinctrl/pinctrl-single.c b/drivers/pinctrl/pinctrl-single.c
-index 829b98c..5107dcf 100644
---- a/drivers/pinctrl/pinctrl-single.c
-+++ b/drivers/pinctrl/pinctrl-single.c
-@@ -2039,7 +2039,17 @@ static struct platform_driver pcs_driver = {
- #endif
- };
-
--module_platform_driver(pcs_driver);
-+static int __init pcs_init(void)
-+{
-+ return platform_driver_register(&pcs_driver);
-+}
-+postcore_initcall(pcs_init);
-+
-+static void __exit pcs_exit(void)
-+{
-+ platform_driver_unregister(&pcs_driver);
-+}
-+module_exit(pcs_exit);
-
- MODULE_AUTHOR("Tony Lindgren <tony@atomide.com>");
- MODULE_DESCRIPTION("One-register-per-pin type device tree based pinctrl driver");
---
-1.8.5.2
-
-From b5a2528c89fc8049b2a6a750634c14983e33d00f Mon Sep 17 00:00:00 2001
-From: Robert Nelson <robertcnelson@gmail.com>
-Date: Fri, 27 Dec 2013 13:05:09 -0600
-Subject: [PATCH] arm: dts: am335x-boneblack: lcdc add panel-info
-
-Signed-off-by: Robert Nelson <robertcnelson@gmail.com>
----
- arch/arm/boot/dts/am335x-boneblack.dts | 13 +++++++++++++
- 1 file changed, 13 insertions(+)
-
-diff --git a/arch/arm/boot/dts/am335x-boneblack.dts b/arch/arm/boot/dts/am335x-boneblack.dts
-index 6b71ad9..09ffbd8 100644
---- a/arch/arm/boot/dts/am335x-boneblack.dts
-+++ b/arch/arm/boot/dts/am335x-boneblack.dts
-@@ -74,5 +74,18 @@
- pinctrl-0 = <&nxp_hdmi_bonelt_pins>;
- pinctrl-1 = <&nxp_hdmi_bonelt_off_pins>;
- status = "okay";
-+
-+ panel-info {
-+ bpp = <16>;
-+ ac-bias = <255>;
-+ ac-bias-intrpt = <0>;
-+ dma-burst-sz = <16>;
-+ fdd = <16>;
-+ sync-edge = <1>;
-+ sync-ctrl = <1>;
-+ raster-order = <0>;
-+ fifo-th = <0>;
-+ invert-pxl-clk;
-+ };
- };
- };
---
-1.8.5.1
-
-From 1da083a002581520dd358b8b8e097078000d12b9 Mon Sep 17 00:00:00 2001
-From: Robert Nelson <robertcnelson@gmail.com>
-Date: Fri, 27 Dec 2013 13:14:19 -0600
-Subject: [PATCH 2/2] arm: dts: am335x-boneblack: add cpu0 opp points
-
-Signed-off-by: Robert Nelson <robertcnelson@gmail.com>
----
- arch/arm/boot/dts/am335x-boneblack.dts | 18 ++++++++++++++++++
- 1 file changed, 18 insertions(+)
-
-diff --git a/arch/arm/boot/dts/am335x-boneblack.dts b/arch/arm/boot/dts/am335x-boneblack.dts
-index 09ffbd8..f213ccd 100644
---- a/arch/arm/boot/dts/am335x-boneblack.dts
-+++ b/arch/arm/boot/dts/am335x-boneblack.dts
-@@ -67,6 +67,24 @@
- };
-
- / {
-+ cpus {
-+ cpu@0 {
-+ cpu0-supply = <&dcdc2_reg>;
-+ /*
-+ * To consider voltage drop between PMIC and SoC,
-+ * tolerance value is reduced to 2% from 4% and
-+ * voltage value is increased as a precaution.
-+ */
-+ operating-points = <
-+ /* kHz uV */
-+ 1000000 1325000
-+ 800000 1300000
-+ 600000 1112000
-+ 300000 969000
-+ >;
-+ };
-+ };
-+
- hdmi {
- compatible = "ti,tilcdc,slave";
- i2c = <&i2c0>;
---
-1.8.5.1
-
-From 8551d8aa7d3e002da2097e7e902fb96fceb8694e Mon Sep 17 00:00:00 2001
-From: Robert Nelson <robertcnelson@gmail.com>
-Date: Tue, 31 Dec 2013 11:17:45 -0600
-Subject: [PATCH 3/3] arm: dts: am335x-bone-common: enable and use i2c2
-
-Signed-off-by: Robert Nelson <robertcnelson@gmail.com>
----
- arch/arm/boot/dts/am335x-bone-common.dtsi | 39 +++++++++++++++++++++++++++++++
- 1 file changed, 39 insertions(+)
-
-diff --git a/arch/arm/boot/dts/am335x-bone-common.dtsi b/arch/arm/boot/dts/am335x-bone-common.dtsi
-index e3f27ec..54366b6 100644
---- a/arch/arm/boot/dts/am335x-bone-common.dtsi
-+++ b/arch/arm/boot/dts/am335x-bone-common.dtsi
-@@ -84,6 +84,13 @@
- >;
- };
-
-+ i2c2_pins: pinmux_i2c2_pins {
-+ pinctrl-single,pins = <
-+ 0x178 0x73 /* (SLEWCTRL_SLOW | PIN_INPUT_PULLUP | MUX_MODE3) uart1_ctsn.i2c2_sda */
-+ 0x17c 0x73 /* (SLEWCTRL_SLOW | PIN_INPUT_PULLUP | MUX_MODE3) uart1_rtsn.i2c2_scl */
-+ >;
-+ };
-+
- uart0_pins: pinmux_uart0_pins {
- pinctrl-single,pins = <
- 0x170 (PIN_INPUT_PULLUP | MUX_MODE0) /* uart0_rxd.uart0_rxd */
-@@ -220,6 +227,38 @@
- reg = <0x24>;
- };
-
-+ baseboard_eeprom: baseboard_eeprom@50 {
-+ compatible = "at,24c256";
-+ reg = <0x50>;
-+ };
-+};
-+
-+&i2c2 {
-+ status = "okay";
-+ pinctrl-names = "default";
-+ pinctrl-0 = <&i2c2_pins>;
-+
-+ clock-frequency = <100000>;
-+
-+ cape_eeprom0: cape_eeprom0@54 {
-+ compatible = "at,24c256";
-+ reg = <0x54>;
-+ };
-+
-+ cape_eeprom1: cape_eeprom1@55 {
-+ compatible = "at,24c256";
-+ reg = <0x55>;
-+ };
-+
-+ cape_eeprom2: cape_eeprom2@56 {
-+ compatible = "at,24c256";
-+ reg = <0x56>;
-+ };
-+
-+ cape_eeprom3: cape_eeprom3@57 {
-+ compatible = "at,24c256";
-+ reg = <0x57>;
-+ };
- };
-
- /include/ "tps65217.dtsi"
---
-1.8.5.2
-
-From a3099dc53a47d1694a5b575580ec3406dc429bf8 Mon Sep 17 00:00:00 2001
-From: Robert Nelson <robertcnelson@gmail.com>
-Date: Tue, 31 Dec 2013 14:18:00 -0600
-Subject: [PATCH 4/4] arm: dts: am335x-bone-common: setup default pinmux
- http://elinux.org/Basic_Proto_Cape
-
-Signed-off-by: Robert Nelson <robertcnelson@gmail.com>
----
- arch/arm/boot/dts/am335x-bone-common.dtsi | 130 ++++++++++++++++++++++++++++++
- 1 file changed, 130 insertions(+)
-
-diff --git a/arch/arm/boot/dts/am335x-bone-common.dtsi b/arch/arm/boot/dts/am335x-bone-common.dtsi
-index e4571af..f85cabc 100644
---- a/arch/arm/boot/dts/am335x-bone-common.dtsi
-+++ b/arch/arm/boot/dts/am335x-bone-common.dtsi
-@@ -98,6 +98,13 @@
- >;
- };
-
-+ uart1_pins: pinmux_uart1_pins {
-+ pinctrl-single,pins = <
-+ 0x180 (PIN_INPUT_PULLUP | MUX_MODE0) /* uart1_rxd.uart1_rxd */
-+ 0x184 (PIN_OUTPUT_PULLDOWN | MUX_MODE0) /* uart1_txd.uart1_txd */
-+ >;
-+ };
-+
- clkout2_pin: pinmux_clkout2_pin {
- pinctrl-single,pins = <
- 0x1b4 (PIN_OUTPUT_PULLDOWN | MUX_MODE3) /* xdma_event_intr1.clkout2 */
-@@ -178,6 +185,33 @@
- 0x1c (PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_ad7.mmc1_dat7 */
- >;
- };
-+
-+ spi0_pins: pinmux_spi0_pins {
-+ pinctrl-single,pins = <
-+ 0x150 (PIN_INPUT_PULLUP | MUX_MODE0) /* spi0_sclk.spi0_sclk */
-+ 0x154 (PIN_INPUT_PULLUP | MUX_MODE0) /* spi0_d0.spi0_d0 */
-+ 0x158 (PIN_OUTPUT_PULLUP | MUX_MODE0) /* spi0_d1.spi0_d1 */
-+ 0x15c (PIN_OUTPUT_PULLUP | MUX_MODE0) /* spi0_cs0.spi0_cs0 */
-+ >;
-+ };
-+
-+ ehrpwm1_pin_p9_14: pinmux_ehrpwm1_pin_p9_14 {
-+ pinctrl-single,pins = <
-+ 0x048 0x6 /* P9_14 (ZCZ ball U14) | MODE 6 */
-+ >;
-+ };
-+
-+ ehrpwm1_pin_p9_16: pinmux_ehrpwm1_pin_p9_16 {
-+ pinctrl-single,pins = <
-+ 0x04c 0x6 /* P9_16 (ZCZ ball T14) | MODE 6 */
-+ >;
-+ };
-+
-+ ecap0_pin_p9_42: pinmux_ecap0_pin_p9_42 {
-+ pinctrl-single,pins = <
-+ 0x164 0x0 /* P9_42 (ZCZ ball C18) | MODE 0 */
-+ >;
-+ };
- };
-
- &uart0 {
-@@ -187,6 +221,13 @@
- status = "okay";
- };
-
-+&uart1 {
-+ pinctrl-names = "default";
-+ pinctrl-0 = <&uart1_pins>;
-+
-+ status = "okay";
-+};
-+
- &usb {
- status = "okay";
-
-@@ -261,6 +302,56 @@
- };
- };
-
-+&epwmss0 {
-+ pinctrl-names = "default";
-+ pinctrl-0 = <&ecap0_pin_p9_42>;
-+ status = "okay";
-+
-+ ecap@48300100 {
-+ status = "okay";
-+ };
-+};
-+
-+&epwmss1 {
-+ pinctrl-names = "default";
-+ pinctrl-0 = <
-+ &ehrpwm1_pin_p9_14
-+ &ehrpwm1_pin_p9_16
-+ >;
-+
-+ status = "okay";
-+
-+ ehrpwm@48302200 {
-+ status = "okay";
-+ };
-+};
-+
-+&spi0 {
-+ pinctrl-names = "default";
-+ pinctrl-0 = <&spi0_pins>;
-+ status = "okay";
-+
-+ spidev0: spi@0 {
-+ compatible = "spidev";
-+ reg = <0>;
-+ spi-max-frequency = <16000000>;
-+ spi-cpha;
-+ };
-+
-+ spidev1: spi@1 {
-+ compatible = "spidev";
-+ reg = <1>;
-+ spi-max-frequency = <16000000>;
-+ };
-+};
-+
-+&tscadc {
-+ status = "okay";
-+ adc {
-+ ti,adc-channels = <4 5 6>;
-+ };
-+};
-+
- /include/ "tps65217.dtsi"
-
- &tps {
-@@ -336,3 +427,42 @@
- cd-gpios = <&gpio0 6 GPIO_ACTIVE_HIGH>;
- cd-inverted;
- };
-+
-+/ {
-+ ocp {
-+ //FIXME: these pwm's still need work, this guild isn't working..
-+ //http://elinux.org/EBC_Exercise_13_Pulse_Width_Modulation
-+ pwm_test_P9_14@0 {
-+ compatible = "pwm_test";
-+ pwms = <&ehrpwm1 0 500000 1>;
-+ pwm-names = "PWM_P9_14";
-+ pinctrl-names = "default";
-+ pinctrl-0 = <&ehrpwm1_pin_p9_14>;
-+ enabled = <1>;
-+ duty = <0>;
-+ status = "okay";
-+ };
-+
-+ pwm_test_P9_16@0 {
-+ compatible = "pwm_test";
-+ pwms = <&ehrpwm1 0 500000 1>;
-+ pwm-names = "PWM_P9_16";
-+ pinctrl-names = "default";
-+ pinctrl-0 = <&ehrpwm1_pin_p9_16>;
-+ enabled = <1>;
-+ duty = <0>;
-+ status = "okay";
-+ };
-+
-+ pwm_test_P9_42 {
-+ compatible = "pwm_test";
-+ pwms = <&ecap0 0 500000 1>;
-+ pwm-names = "PWM_P9_42";
-+ pinctrl-names = "default";
-+ pinctrl-0 = <&ecap0_pin_p9_42>;
-+ enabled = <1>;
-+ duty = <0>;
-+ status = "okay";
-+ };
-+ };
-+};
---
-1.8.5.2
-
-From d13ca825c40b180549f5ae4b9733e3c896d07167 Mon Sep 17 00:00:00 2001
-From: Jyri Sarha <jsarha@ti.com>
-Date: Fri, 20 Dec 2013 12:37:30 +0200
-Subject: [PATCH 1/6] clk: add gpio controlled clock
-
-The added clk-gpio is a basic clock that can be enabled and disabled
-trough a gpio output. The DT binding document for the clock is also
-added. For EPROBE_DEFER handling the registering of the clock has to
-be delayed until of_clk_get() call time.
-
-Signed-off-by: Jyri Sarha <jsarha@ti.com>
-cc: mturquette@linaro.org
-cc: bcousson@baylibre.com
----
- .../devicetree/bindings/clock/gpio-clock.txt | 21 +++
- drivers/clk/Makefile | 1 +
- drivers/clk/clk-gpio.c | 210 +++++++++++++++++++++
- include/linux/clk-provider.h | 25 +++
- 4 files changed, 257 insertions(+)
- create mode 100644 Documentation/devicetree/bindings/clock/gpio-clock.txt
- create mode 100644 drivers/clk/clk-gpio.c
-
-diff --git a/Documentation/devicetree/bindings/clock/gpio-clock.txt b/Documentation/devicetree/bindings/clock/gpio-clock.txt
-new file mode 100644
-index 0000000..54fea39
---- /dev/null
-+++ b/Documentation/devicetree/bindings/clock/gpio-clock.txt
-@@ -0,0 +1,21 @@
-+Binding for simple gpio controlled clock.
-+
-+This binding uses the common clock binding[1].
-+
-+[1] Documentation/devicetree/bindings/clock/clock-bindings.txt
-+
-+Required properties:
-+- compatible : shall be "gpio-clock".
-+- #clock-cells : from common clock binding; shall be set to 0.
-+- enable-gpios : GPIO reference for enabling and disabling the clock.
-+
-+Optional properties:
-+- clocks: Maximum of one parent clock is supported.
-+
-+Example:
-+ clock {
-+ compatible = "gpio-clock";
-+ clocks = <&parentclk>;
-+ #clock-cells = <0>;
-+ enable-gpios = <&gpio 1 GPIO_ACTIVE_HIGH>;
-+ };
-diff --git a/drivers/clk/Makefile b/drivers/clk/Makefile
-index 7a10bc9..9616e3a 100644
---- a/drivers/clk/Makefile
-+++ b/drivers/clk/Makefile
-@@ -8,6 +8,7 @@ obj-$(CONFIG_COMMON_CLK) += clk-fixed-rate.o
- obj-$(CONFIG_COMMON_CLK) += clk-gate.o
- obj-$(CONFIG_COMMON_CLK) += clk-mux.o
- obj-$(CONFIG_COMMON_CLK) += clk-composite.o
-+obj-$(CONFIG_COMMON_CLK) += clk-gpio.o
-
- # SoCs specific
- obj-$(CONFIG_ARCH_BCM2835) += clk-bcm2835.o
-diff --git a/drivers/clk/clk-gpio.c b/drivers/clk/clk-gpio.c
-new file mode 100644
-index 0000000..e04b0e1
---- /dev/null
-+++ b/drivers/clk/clk-gpio.c
-@@ -0,0 +1,210 @@
-+/*
-+ * Copyright (C) 2013 Texas Instruments
-+ * Author: Jyri Sarha <jsarha@ti.com>
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License version 2 as
-+ * published by the Free Software Foundation.
-+ *
-+ * Gpio controlled clock implementation
-+ */
-+
-+#include <linux/clk-provider.h>
-+#include <linux/module.h>
-+#include <linux/slab.h>
-+#include <linux/gpio.h>
-+#include <linux/of_gpio.h>
-+#include <linux/err.h>
-+#include <linux/device.h>
-+
-+/**
-+ * DOC: basic gpio controlled clock which can be enabled and disabled
-+ * with gpio output
-+ * Traits of this clock:
-+ * prepare - clk_(un)prepare only ensures parent is (un)prepared
-+ * enable - clk_enable and clk_disable are functional & control gpio
-+ * rate - inherits rate from parent. No clk_set_rate support
-+ * parent - fixed parent. No clk_set_parent support
-+ */
-+
-+#define to_clk_gpio(_hw) container_of(_hw, struct clk_gpio, hw)
-+
-+static int clk_gpio_enable(struct clk_hw *hw)
-+{
-+ struct clk_gpio *gpio = to_clk_gpio(hw);
-+ int value = gpio->active_low ? 0 : 1;
-+
-+ gpio_set_value(gpio->gpio, value);
-+
-+ return 0;
-+}
-+
-+static void clk_gpio_disable(struct clk_hw *hw)
-+{
-+ struct clk_gpio *gpio = to_clk_gpio(hw);
-+ int value = gpio->active_low ? 1 : 0;
-+
-+ gpio_set_value(gpio->gpio, value);
-+}
-+
-+static int clk_gpio_is_enabled(struct clk_hw *hw)
-+{
-+ struct clk_gpio *gpio = to_clk_gpio(hw);
-+ int value = gpio_get_value(gpio->gpio);
-+
-+ return gpio->active_low ? !value : value;
-+}
-+
-+const struct clk_ops clk_gpio_ops = {
-+ .enable = clk_gpio_enable,
-+ .disable = clk_gpio_disable,
-+ .is_enabled = clk_gpio_is_enabled,
-+};
-+EXPORT_SYMBOL_GPL(clk_gpio_ops);
-+
-+/**
-+ * clk_register_gpio - register a gpip clock with the clock framework
-+ * @dev: device that is registering this clock
-+ * @name: name of this clock
-+ * @parent_name: name of this clock's parent
-+ * @flags: framework-specific flags for this clock
-+ * @gpio: gpio to control this clock
-+ * @active_low: gpio polarity
-+ */
-+struct clk *clk_register_gpio(struct device *dev, const char *name,
-+ const char *parent_name, unsigned long flags,
-+ unsigned int gpio, bool active_low)
-+{
-+ struct clk_gpio *clk_gpio;
-+ struct clk *clk = ERR_PTR(-EINVAL);
-+ struct clk_init_data init = { NULL };
-+ unsigned long gpio_flags;
-+ int err;
-+
-+ if (active_low)
-+ gpio_flags = GPIOF_OUT_INIT_LOW;
-+ else
-+ gpio_flags = GPIOF_OUT_INIT_HIGH;
-+
-+ err = gpio_request_one(gpio, gpio_flags, name);
-+
-+ if (err) {
-+ pr_err("%s: %s: Error requesting clock control gpio %u\n",
-+ __func__, name, gpio);
-+ clk = ERR_PTR(err);
-+ goto clk_register_gpio_err;
-+ }
-+
-+ clk_gpio = kzalloc(sizeof(*clk_gpio), GFP_KERNEL);
-+
-+ if (!clk_gpio) {
-+ pr_err("%s: %s: could not allocate gpio clk\n", __func__, name);
-+ clk = ERR_PTR(-ENOMEM);
-+ goto clk_register_gpio_err;
-+ }
-+
-+ init.name = name;
-+ init.ops = &clk_gpio_ops;
-+ init.flags = flags | CLK_IS_BASIC;
-+ init.parent_names = (parent_name ? &parent_name : NULL);
-+ init.num_parents = (parent_name ? 1 : 0);
-+
-+ clk_gpio->gpio = gpio;
-+ clk_gpio->active_low = active_low;
-+ clk_gpio->hw.init = &init;
-+
-+ clk = clk_register(dev, &clk_gpio->hw);
-+
-+ if (!IS_ERR(clk))
-+ return clk;
-+
-+ kfree(clk_gpio);
-+
-+clk_register_gpio_err:
-+ gpio_free(gpio);
-+
-+ return clk;
-+}
-+EXPORT_SYMBOL_GPL(clk_register_gpio);
-+
-+#ifdef CONFIG_OF
-+/**
-+ * The clk_register_gpio has to be delayed, because the EPROBE_DEFER
-+ * can not be handled properly at of_clk_init() call time.
-+ */
-+
-+struct clk_gpio_delayed_register_data {
-+ struct device_node *node;
-+ struct mutex lock; /* Protect delayed clk registering */
-+ struct clk *clk;
-+};
-+
-+static
-+struct clk *of_clk_gpio_delayed_register_get(struct of_phandle_args *clkspec,
-+ void *_data)
-+{
-+ struct clk_gpio_delayed_register_data *data =
-+ (struct clk_gpio_delayed_register_data *)_data;
-+ struct clk *clk;
-+ const char *clk_name = data->node->name;
-+ const char *parent_name;
-+ enum of_gpio_flags gpio_flags;
-+ int gpio;
-+ bool active_low;
-+
-+ mutex_lock(&data->lock);
-+
-+ if (data->clk) {
-+ mutex_unlock(&data->lock);
-+ return data->clk;
-+ }
-+
-+ gpio = of_get_named_gpio_flags(data->node, "enable-gpios", 0,
-+ &gpio_flags);
-+
-+ if (gpio < 0) {
-+ mutex_unlock(&data->lock);
-+ if (gpio != -EPROBE_DEFER)
-+ pr_err("%s: %s: Can't get 'enable-gpios' DT property\n",
-+ __func__, clk_name);
-+ return ERR_PTR(gpio);
-+ }
-+
-+ active_low = gpio_flags & OF_GPIO_ACTIVE_LOW;
-+
-+ parent_name = of_clk_get_parent_name(data->node, 0);
-+
-+ clk = clk_register_gpio(NULL, clk_name, parent_name, 0,
-+ gpio, active_low);
-+ if (IS_ERR(clk)) {
-+ mutex_unlock(&data->lock);
-+ return clk;
-+ }
-+
-+ data->clk = clk;
-+ mutex_unlock(&data->lock);
-+
-+ return clk;
-+}
-+
-+/**
-+ * of_gpio_clk_setup() - Setup function for gpio controlled clock
-+ */
-+void __init of_gpio_clk_setup(struct device_node *node)
-+{
-+ struct clk_gpio_delayed_register_data *data;
-+
-+ data = kzalloc(sizeof(*data), GFP_KERNEL);
-+ if (!data) {
-+ pr_err("%s: could not allocate gpio clk\n", __func__);
-+ return;
-+ }
-+
-+ data->node = node;
-+ mutex_init(&data->lock);
-+
-+ of_clk_add_provider(node, of_clk_gpio_delayed_register_get, data);
-+}
-+EXPORT_SYMBOL_GPL(of_gpio_clk_setup);
-+CLK_OF_DECLARE(gpio_clk, "gpio-clock", of_gpio_clk_setup);
-+#endif
-diff --git a/include/linux/clk-provider.h b/include/linux/clk-provider.h
-index 7e59253..21082b2 100644
---- a/include/linux/clk-provider.h
-+++ b/include/linux/clk-provider.h
-@@ -407,6 +407,31 @@ struct clk *clk_register_composite(struct device *dev, const char *name,
- struct clk_hw *gate_hw, const struct clk_ops *gate_ops,
- unsigned long flags);
-
-+/***
-+ * struct clk_gpio - gpio controlled clock
-+ *
-+ * @hw: handle between common and hardware-specific interfaces
-+ * @gpio: gpio
-+ * @active_low: gpio polarity
-+ *
-+ * Clock with a gpio control for enabling and disabling the parent clock.
-+ * Implements .enable, .disable and .is_enabled
-+ */
-+
-+struct clk_gpio {
-+ struct clk_hw hw;
-+ unsigned int gpio;
-+ bool active_low;
-+};
-+
-+extern const struct clk_ops clk_gpio_ops;
-+
-+struct clk *clk_register_gpio(struct device *dev, const char *name,
-+ const char *parent_name, unsigned long flags,
-+ unsigned int gpio, bool active_low);
-+
-+void of_gpio_clk_setup(struct device_node *node);
-+
- /**
- * clk_register - allocate a new clock, register it and return an opaque cookie
- * @dev: device that is registering this clock
---
-1.8.5.2
-
-From e21100edd1fbbbe41e93388b88f8548bd3360172 Mon Sep 17 00:00:00 2001
-From: Jyri Sarha <jsarha@ti.com>
-Date: Fri, 20 Dec 2013 12:38:27 +0200
-Subject: [PATCH 2/6] ASoC: davinci-evm: Add named clock reference to DT
- bindings
-
-The referenced clock is used to get codec clock rate and the clock is
-disabled and enabled in startup and shutdown snd_soc_ops call
-backs. The change is also documented in DT bindigs document.
-
-Signed-off-by: Jyri Sarha <jsarha@ti.com>
-cc: bcousson@baylibre.com
----
- .../bindings/sound/davinci-evm-audio.txt | 9 +++-
- sound/soc/davinci/davinci-evm.c | 60 +++++++++++++++++++++-
- 2 files changed, 66 insertions(+), 3 deletions(-)
-
-diff --git a/Documentation/devicetree/bindings/sound/davinci-evm-audio.txt b/Documentation/devicetree/bindings/sound/davinci-evm-audio.txt
-index 865178d..4aa00f6 100644
---- a/Documentation/devicetree/bindings/sound/davinci-evm-audio.txt
-+++ b/Documentation/devicetree/bindings/sound/davinci-evm-audio.txt
-@@ -5,12 +5,19 @@ Required properties:
- - ti,model : The user-visible name of this sound complex.
- - ti,audio-codec : The phandle of the TLV320AIC3x audio codec
- - ti,mcasp-controller : The phandle of the McASP controller
--- ti,codec-clock-rate : The Codec Clock rate (in Hz) applied to the Codec
- - ti,audio-routing : A list of the connections between audio components.
- Each entry is a pair of strings, the first being the connection's sink,
- the second being the connection's source. Valid names for sources and
- sinks are the codec's pins, and the jacks on the board:
-
-+Optional properties:
-+- ti,codec-clock-rate : The Codec Clock rate (in Hz) applied to the Codec.
-+- clocks : Reference to the clock used as codec clock
-+- clock-names : The codec clock should be named "ti,codec-clock"
-+- Either codec-clock-rate or the codec-clock reference has to be defined. If
-+ the both are defined the driver attempts to set referenced clock to the
-+ defined rate and takes the rate from the clock reference.
-+
- Board connectors:
-
- * Headphone Jack
-diff --git a/sound/soc/davinci/davinci-evm.c b/sound/soc/davinci/davinci-evm.c
-index 623eb5e..daaa3a7 100644
---- a/sound/soc/davinci/davinci-evm.c
-+++ b/sound/soc/davinci/davinci-evm.c
-@@ -17,6 +17,7 @@
- #include <linux/platform_data/edma.h>
- #include <linux/i2c.h>
- #include <linux/of_platform.h>
-+#include <linux/clk.h>
- #include <sound/core.h>
- #include <sound/pcm.h>
- #include <sound/soc.h>
-@@ -31,9 +32,30 @@
- #include "davinci-mcasp.h"
-
- struct snd_soc_card_drvdata_davinci {
-+ struct clk *mclk;
- unsigned sysclk;
- };
-
-+static int evm_startup(struct snd_pcm_substream *substream)
-+{
-+ struct snd_soc_pcm_runtime *rtd = substream->private_data;
-+ struct snd_soc_card *soc_card = rtd->codec->card;
-+ struct clk *mclk = ((struct snd_soc_card_drvdata_davinci *)
-+ snd_soc_card_get_drvdata(soc_card))->mclk;
-+
-+ return clk_prepare_enable(mclk);
-+}
-+
-+static void evm_shutdown(struct snd_pcm_substream *substream)
-+{
-+ struct snd_soc_pcm_runtime *rtd = substream->private_data;
-+ struct snd_soc_card *soc_card = rtd->codec->card;
-+ struct clk *mclk = ((struct snd_soc_card_drvdata_davinci *)
-+ snd_soc_card_get_drvdata(soc_card))->mclk;
-+
-+ clk_disable_unprepare(mclk);
-+}
-+
- #define AUDIO_FORMAT (SND_SOC_DAIFMT_DSP_B | \
- SND_SOC_DAIFMT_CBM_CFM | SND_SOC_DAIFMT_IB_NF)
- static int evm_hw_params(struct snd_pcm_substream *substream,
-@@ -82,6 +104,8 @@ static int evm_spdif_hw_params(struct snd_pcm_substream *substream,
- }
-
- static struct snd_soc_ops evm_ops = {
-+ .startup = evm_startup,
-+ .shutdown = evm_shutdown,
- .hw_params = evm_hw_params,
- };
-
-@@ -360,6 +384,7 @@ static int davinci_evm_probe(struct platform_device *pdev)
- of_match_device(of_match_ptr(davinci_evm_dt_ids), &pdev->dev);
- struct snd_soc_dai_link *dai = (struct snd_soc_dai_link *) match->data;
- struct snd_soc_card_drvdata_davinci *drvdata = NULL;
-+ struct clk *mclk;
- int ret = 0;
-
- evm_soc_card.dai_link = dai;
-@@ -379,13 +404,38 @@ static int davinci_evm_probe(struct platform_device *pdev)
- if (ret)
- return ret;
-
-+ mclk = of_clk_get_by_name(np, "ti,codec-clock");
-+ if (PTR_ERR(mclk) == -EPROBE_DEFER) {
-+ return -EPROBE_DEFER;
-+ } else if (IS_ERR(mclk)) {
-+ dev_dbg(&pdev->dev, "Codec clock not found.\n");
-+ mclk = NULL;
-+ }
-+
- drvdata = devm_kzalloc(&pdev->dev, sizeof(*drvdata), GFP_KERNEL);
- if (!drvdata)
- return -ENOMEM;
-
-+ drvdata->mclk = mclk;
-+
- ret = of_property_read_u32(np, "ti,codec-clock-rate", &drvdata->sysclk);
-- if (ret < 0)
-- return -EINVAL;
-+
-+ if (ret < 0) {
-+ if (!drvdata->mclk) {
-+ dev_err(&pdev->dev,
-+ "No clock or clock rate defined.\n");
-+ return -EINVAL;
-+ }
-+ drvdata->sysclk = clk_get_rate(drvdata->mclk);
-+ } else if (drvdata->mclk) {
-+ unsigned int requestd_rate = drvdata->sysclk;
-+ clk_set_rate(drvdata->mclk, drvdata->sysclk);
-+ drvdata->sysclk = clk_get_rate(drvdata->mclk);
-+ if (drvdata->sysclk != requestd_rate)
-+ dev_warn(&pdev->dev,
-+ "Could not get requested rate %u using %u.\n",
-+ requestd_rate, drvdata->sysclk);
-+ }
-
- snd_soc_card_set_drvdata(&evm_soc_card, drvdata);
- ret = devm_snd_soc_register_card(&pdev->dev, &evm_soc_card);
-@@ -399,6 +449,12 @@ static int davinci_evm_probe(struct platform_device *pdev)
- static int davinci_evm_remove(struct platform_device *pdev)
- {
- struct snd_soc_card *card = platform_get_drvdata(pdev);
-+ struct snd_soc_card_drvdata_davinci *drvdata =
-+ (struct snd_soc_card_drvdata_davinci *)
-+ snd_soc_card_get_drvdata(card);
-+
-+ if (drvdata->mclk)
-+ clk_put(drvdata->mclk);
-
- snd_soc_unregister_card(card);
-
---
-1.8.5.2
-
-From bdc80bd25c9ee2e0b71b958c11a76f4e3182fab2 Mon Sep 17 00:00:00 2001
-From: Jyri Sarha <jsarha@ti.com>
-Date: Fri, 20 Dec 2013 12:39:38 +0200
-Subject: [PATCH 3/6] ASoC: davinci-evm: HDMI audio support for TDA998x trough
- McASP I2S bus
-
-Add machine driver support for BeagleBone-Black and other boards with
-tilcdc support and NXP TDA998X HDMI transmitter connected to McASP
-port in I2S mode. The 44100 Hz sample-rate and it's multiples can not
-be supported on Beaglebone-Black because of limited clock-rate
-support. The only supported sample format is SNDRV_PCM_FORMAT_S32_LE.
-The 8 least significant bits are ignored.
-
-Signed-off-by: Jyri Sarha <jsarha@ti.com>
-cc: bcousson@baylibre.com
----
- .../bindings/sound/davinci-evm-audio.txt | 4 +-
- sound/soc/davinci/davinci-evm.c | 167 ++++++++++++++++++++-
- 2 files changed, 168 insertions(+), 3 deletions(-)
-
-diff --git a/Documentation/devicetree/bindings/sound/davinci-evm-audio.txt b/Documentation/devicetree/bindings/sound/davinci-evm-audio.txt
-index 4aa00f6..f1e1031 100644
---- a/Documentation/devicetree/bindings/sound/davinci-evm-audio.txt
-+++ b/Documentation/devicetree/bindings/sound/davinci-evm-audio.txt
-@@ -1,7 +1,9 @@
- * Texas Instruments SoC audio setups with TLV320AIC3X Codec
-
- Required properties:
--- compatible : "ti,da830-evm-audio" : forDM365/DA8xx/OMAPL1x/AM33xx
-+- compatible :
-+ "ti,da830-evm-audio" : for DM365/DA8xx/OMAPL1x/AM33xx
-+ "ti,am33xx-beaglebone-black-audio" : for Beaglebone-black HDMI audio
- - ti,model : The user-visible name of this sound complex.
- - ti,audio-codec : The phandle of the TLV320AIC3x audio codec
- - ti,mcasp-controller : The phandle of the McASP controller
-diff --git a/sound/soc/davinci/davinci-evm.c b/sound/soc/davinci/davinci-evm.c
-index daaa3a7..f212975 100644
---- a/sound/soc/davinci/davinci-evm.c
-+++ b/sound/soc/davinci/davinci-evm.c
-@@ -21,6 +21,7 @@
- #include <sound/core.h>
- #include <sound/pcm.h>
- #include <sound/soc.h>
-+#include <sound/pcm_params.h>
-
- #include <asm/dma.h>
- #include <asm/mach-types.h>
-@@ -34,8 +35,13 @@
- struct snd_soc_card_drvdata_davinci {
- struct clk *mclk;
- unsigned sysclk;
-+ struct snd_pcm_hw_constraint_list *rate_constraint;
- };
-
-+/* If changing sample format the tda998x configuration (REG_CTS_N) needs
-+ to be changed. */
-+#define TDA998X_SAMPLE_FORMAT SNDRV_PCM_FORMAT_S32_LE
-+
- static int evm_startup(struct snd_pcm_substream *substream)
- {
- struct snd_soc_pcm_runtime *rtd = substream->private_data;
-@@ -103,12 +109,80 @@ static int evm_spdif_hw_params(struct snd_pcm_substream *substream,
- return snd_soc_dai_set_fmt(cpu_dai, AUDIO_FORMAT);
- }
-
-+static int evm_tda998x_startup(struct snd_pcm_substream *substream)
-+{
-+ struct snd_pcm_runtime *runtime = substream->runtime;
-+ struct snd_soc_pcm_runtime *rtd = substream->private_data;
-+ struct snd_soc_card *soc_card = rtd->codec->card;
-+ struct snd_soc_card_drvdata_davinci *drvdata =
-+ (struct snd_soc_card_drvdata_davinci *)
-+ snd_soc_card_get_drvdata(soc_card);
-+ struct snd_mask *fmt = constrs_mask(&runtime->hw_constraints,
-+ SNDRV_PCM_HW_PARAM_FORMAT);
-+ snd_mask_none(fmt);
-+ snd_mask_set(fmt, TDA998X_SAMPLE_FORMAT);
-+
-+ runtime->hw.rate_min = drvdata->rate_constraint->list[0];
-+ runtime->hw.rate_max = drvdata->rate_constraint->list[
-+ drvdata->rate_constraint->count - 1];
-+ runtime->hw.rates = SNDRV_PCM_RATE_KNOT;
-+
-+ snd_pcm_hw_constraint_list(runtime, 0, SNDRV_PCM_HW_PARAM_RATE,
-+ drvdata->rate_constraint);
-+ snd_pcm_hw_constraint_minmax(runtime, SNDRV_PCM_HW_PARAM_CHANNELS,
-+ 2, 2);
-+
-+ return evm_startup(substream);
-+}
-+
-+static unsigned int evm_get_bclk(struct snd_pcm_hw_params *params)
-+{
-+ int sample_size = snd_pcm_format_width(params_format(params));
-+ int rate = params_rate(params);
-+ int channels = params_channels(params);
-+
-+ return sample_size * channels * rate;
-+}
-+
-+static int evm_tda998x_hw_params(struct snd_pcm_substream *substream,
-+ struct snd_pcm_hw_params *params)
-+{
-+ struct snd_soc_pcm_runtime *rtd = substream->private_data;
-+ struct snd_soc_dai *cpu_dai = rtd->cpu_dai;
-+ struct snd_soc_codec *codec = rtd->codec;
-+ struct snd_soc_card *soc_card = codec->card;
-+ struct platform_device *pdev = to_platform_device(soc_card->dev);
-+ unsigned int bclk_freq = evm_get_bclk(params);
-+ unsigned sysclk = ((struct snd_soc_card_drvdata_davinci *)
-+ snd_soc_card_get_drvdata(soc_card))->sysclk;
-+ int ret;
-+
-+ ret = snd_soc_dai_set_clkdiv(cpu_dai, 1, sysclk / bclk_freq);
-+ if (ret < 0) {
-+ dev_err(&pdev->dev, "can't set CPU DAI clock divider %d\n",
-+ ret);
-+ return ret;
-+ }
-+
-+ ret = snd_soc_dai_set_sysclk(cpu_dai, 0, sysclk, SND_SOC_CLOCK_IN);
-+ if (ret < 0)
-+ return ret;
-+
-+ return ret;
-+}
-+
- static struct snd_soc_ops evm_ops = {
- .startup = evm_startup,
- .shutdown = evm_shutdown,
- .hw_params = evm_hw_params,
- };
-
-+static struct snd_soc_ops evm_tda998x_ops = {
-+ .startup = evm_tda998x_startup,
-+ .shutdown = evm_shutdown,
-+ .hw_params = evm_tda998x_hw_params,
-+};
-+
- static struct snd_soc_ops evm_spdif_ops = {
- .hw_params = evm_spdif_hw_params,
- };
-@@ -179,6 +253,81 @@ static int evm_aic3x_init(struct snd_soc_pcm_runtime *rtd)
- return 0;
- }
-
-+static unsigned int tda998x_hdmi_rates[] = {
-+ 32000,
-+ 44100,
-+ 48000,
-+ 88200,
-+ 96000,
-+};
-+
-+static struct snd_pcm_hw_constraint_list *evm_tda998x_rate_constraint(
-+ struct snd_soc_card *soc_card)
-+{
-+ struct platform_device *pdev = to_platform_device(soc_card->dev);
-+ unsigned sysclk = ((struct snd_soc_card_drvdata_davinci *)
-+ snd_soc_card_get_drvdata(soc_card))->sysclk;
-+ struct snd_pcm_hw_constraint_list *ret;
-+ unsigned int *rates;
-+ int i = 0, j = 0;
-+
-+ ret = devm_kzalloc(soc_card->dev, sizeof(*ret) +
-+ sizeof(tda998x_hdmi_rates), GFP_KERNEL);
-+ if (!ret) {
-+ dev_err(&pdev->dev, "Unable to allocate rate constraint!\n");
-+ return NULL;
-+ }
-+
-+ rates = (unsigned int *)&ret[1];
-+ ret->list = rates;
-+ ret->mask = 0;
-+ for (; i < ARRAY_SIZE(tda998x_hdmi_rates); i++) {
-+ unsigned int bclk_freq = tda998x_hdmi_rates[i] * 2 *
-+ snd_pcm_format_width(TDA998X_SAMPLE_FORMAT);
-+ if (sysclk % bclk_freq == 0) {
-+ rates[j++] = tda998x_hdmi_rates[i];
-+ dev_dbg(soc_card->dev, "Allowing rate %u\n",
-+ tda998x_hdmi_rates[i]);
-+ }
-+ }
-+ ret->count = j;
-+ return ret;
-+}
-+
-+static const struct snd_soc_dapm_widget tda998x_dapm_widgets[] = {
-+ SND_SOC_DAPM_OUTPUT("HDMI Out"),
-+};
-+
-+static int evm_tda998x_init(struct snd_soc_pcm_runtime *rtd)
-+{
-+ struct snd_soc_dai *cpu_dai = rtd->cpu_dai;
-+ struct snd_soc_dapm_context *dapm = &rtd->codec->dapm;
-+ struct snd_soc_card *soc_card = rtd->codec->card;
-+ struct snd_soc_card_drvdata_davinci *drvdata =
-+ (struct snd_soc_card_drvdata_davinci *)
-+ snd_soc_card_get_drvdata(soc_card);
-+ int ret;
-+
-+ ret = snd_soc_dai_set_clkdiv(cpu_dai, 0, 1);
-+ if (ret < 0)
-+ return ret;
-+
-+ drvdata->rate_constraint = evm_tda998x_rate_constraint(soc_card);
-+
-+ snd_soc_dapm_new_controls(dapm, tda998x_dapm_widgets,
-+ ARRAY_SIZE(tda998x_dapm_widgets));
-+
-+ ret = snd_soc_of_parse_audio_routing(soc_card, "ti,audio-routing");
-+
-+ /* not connected */
-+ snd_soc_dapm_disable_pin(dapm, "RX");
-+
-+ /* always connected */
-+ snd_soc_dapm_enable_pin(dapm, "HDMI Out");
-+
-+ return 0;
-+}
-+
- /* davinci-evm digital audio interface glue - connects codec <--> CPU */
- static struct snd_soc_dai_link dm6446_evm_dai = {
- .name = "TLV320AIC3X",
-@@ -351,7 +500,7 @@ static struct snd_soc_card da850_snd_soc_card = {
- #if defined(CONFIG_OF)
-
- /*
-- * The struct is used as place holder. It will be completely
-+ * The structs are used as place holders. They will be completely
- * filled with data from dt node.
- */
- static struct snd_soc_dai_link evm_dai_tlv320aic3x = {
-@@ -362,10 +511,24 @@ static struct snd_soc_dai_link evm_dai_tlv320aic3x = {
- .init = evm_aic3x_init,
- };
-
-+static struct snd_soc_dai_link evm_dai_tda998x_hdmi = {
-+ .name = "NXP TDA998x HDMI Chip",
-+ .stream_name = "HDMI",
-+ .codec_dai_name = "hdmi-hifi",
-+ .ops = &evm_tda998x_ops,
-+ .init = evm_tda998x_init,
-+ .dai_fmt = (SND_SOC_DAIFMT_CBS_CFS | SND_SOC_DAIFMT_I2S |
-+ SND_SOC_DAIFMT_IB_NF),
-+};
-+
- static const struct of_device_id davinci_evm_dt_ids[] = {
- {
- .compatible = "ti,da830-evm-audio",
-- .data = (void *) &evm_dai_tlv320aic3x,
-+ .data = &evm_dai_tlv320aic3x,
-+ },
-+ {
-+ .compatible = "ti,am33xx-beaglebone-black-audio",
-+ .data = &evm_dai_tda998x_hdmi,
- },
- { /* sentinel */ }
- };
---
-1.8.5.2
-
-From 422e231e0893a542bee0b89f5074ed6f31ec894d Mon Sep 17 00:00:00 2001
-From: Jyri Sarha <jsarha@ti.com>
-Date: Fri, 20 Dec 2013 12:40:16 +0200
-Subject: [PATCH 4/6] ASoC: hdmi-codec: Add devicetree binding with
- documentation
-
-Signed-off-by: Jyri Sarha <jsarha@ti.com>
-cc: bcousson@baylibre.com
----
- Documentation/devicetree/bindings/sound/hdmi.txt | 17 +++++++++++++++++
- sound/soc/codecs/hdmi.c | 10 ++++++++++
- 2 files changed, 27 insertions(+)
- create mode 100644 Documentation/devicetree/bindings/sound/hdmi.txt
-
-diff --git a/Documentation/devicetree/bindings/sound/hdmi.txt b/Documentation/devicetree/bindings/sound/hdmi.txt
-new file mode 100644
-index 0000000..31af7bc
---- /dev/null
-+++ b/Documentation/devicetree/bindings/sound/hdmi.txt
-@@ -0,0 +1,17 @@
-+Device-Tree bindings for dummy HDMI codec
-+
-+Required properties:
-+ - compatible: should be "linux,hdmi-audio".
-+
-+CODEC output pins:
-+ * TX
-+
-+CODEC input pins:
-+ * RX
-+
-+Example node:
-+
-+ hdmi_audio: hdmi_audio@0 {
-+ compatible = "linux,hdmi-audio";
-+ status = "okay";
-+ };
-diff --git a/sound/soc/codecs/hdmi.c b/sound/soc/codecs/hdmi.c
-index 68342b1..6d2fcf1 100644
---- a/sound/soc/codecs/hdmi.c
-+++ b/sound/soc/codecs/hdmi.c
-@@ -20,6 +20,7 @@
- */
- #include <linux/module.h>
- #include <sound/soc.h>
-+#include <linux/of_device.h>
-
- #define DRV_NAME "hdmi-audio-codec"
-
-@@ -60,6 +61,14 @@ static struct snd_soc_dai_driver hdmi_codec_dai = {
-
- };
-
-+#ifdef CONFIG_OF
-+static const struct of_device_id hdmi_audio_codec_ids[] = {
-+ { .compatible = "linux,hdmi-audio", },
-+ { }
-+};
-+MODULE_DEVICE_TABLE(of, hdmi_audio_codec_ids);
-+#endif
-+
- static struct snd_soc_codec_driver hdmi_codec = {
- .dapm_widgets = hdmi_widgets,
- .num_dapm_widgets = ARRAY_SIZE(hdmi_widgets),
-@@ -83,6 +92,7 @@ static struct platform_driver hdmi_codec_driver = {
- .driver = {
- .name = DRV_NAME,
- .owner = THIS_MODULE,
-+ .of_match_table = of_match_ptr(hdmi_audio_codec_ids),
- },
-
- .probe = hdmi_codec_probe,
---
-1.8.5.2
-
-From 73fd20e4b35cd01e12c4a0f5fef41b4836307d13 Mon Sep 17 00:00:00 2001
-From: Jyri Sarha <jsarha@ti.com>
-Date: Fri, 20 Dec 2013 12:40:54 +0200
-Subject: [PATCH 5/6] ASoC: davinci: HDMI audio build for AM33XX and TDA998x
-
-Adds configuration option for HDMI audio support for AM33XX based
-boards with NXP TDA998x HDMI transmitter. The audio is connected to
-NXP TDA998x trough McASP running in i2s mode.
-
-Signed-off-by: Jyri Sarha <jsarha@ti.com>
----
- sound/soc/davinci/Kconfig | 12 ++++++++++++
- sound/soc/davinci/Makefile | 1 +
- 2 files changed, 13 insertions(+)
-
-diff --git a/sound/soc/davinci/Kconfig b/sound/soc/davinci/Kconfig
-index 95970f5..b257413 100644
---- a/sound/soc/davinci/Kconfig
-+++ b/sound/soc/davinci/Kconfig
-@@ -27,6 +27,18 @@ config SND_AM33XX_SOC_EVM
- AM335X-EVMSK, and BeagelBone with AudioCape boards have this
- setup.
-
-+config SND_AM335X_SOC_NXPTDA_EVM
-+ tristate "HDMI Audio for the AM33XX chip based boards with TDA998x"
-+ depends on SND_DAVINCI_SOC && SOC_AM33XX
-+ depends on DRM_TILCDC && DRM_I2C_NXP_TDA998X
-+ select SND_SOC_HDMI_CODEC
-+ select SND_DAVINCI_SOC_MCASP
-+ help
-+ Say Y or M if you want to add support for HDMI SoC audio on
-+ AM33XX boards with NXP TDA998x HDMI transmitter. For example
-+ BeagleBoneBack. The audio is connected to NXP TDA998x trough
-+ McASP running in i2s mode.
-+
- config SND_DAVINCI_SOC_EVM
- tristate "SoC Audio support for DaVinci DM6446, DM355 or DM365 EVM"
- depends on SND_DAVINCI_SOC
-diff --git a/sound/soc/davinci/Makefile b/sound/soc/davinci/Makefile
-index bc81e79..b26ec69 100644
---- a/sound/soc/davinci/Makefile
-+++ b/sound/soc/davinci/Makefile
-@@ -17,3 +17,4 @@ obj-$(CONFIG_SND_AM33XX_SOC_EVM) += snd-soc-evm.o
- obj-$(CONFIG_SND_DM6467_SOC_EVM) += snd-soc-evm.o
- obj-$(CONFIG_SND_DA830_SOC_EVM) += snd-soc-evm.o
- obj-$(CONFIG_SND_DA850_SOC_EVM) += snd-soc-evm.o
-+obj-$(CONFIG_SND_AM335X_SOC_NXPTDA_EVM) += snd-soc-evm.o
---
-1.8.5.2
-
-From 58fcbb33b2e7f5bffa85ac9e7da96a791c68460b Mon Sep 17 00:00:00 2001
-From: Jyri Sarha <jsarha@ti.com>
-Date: Fri, 20 Dec 2013 12:41:44 +0200
-Subject: [PATCH 6/6] drm/tilcdc: Add I2C HDMI audio config for tda998x
-
-The configuration is needed for HDMI audio. The "swap" and "mirr"
-parameters have to be correctly set in the configuration in order to
-have proper colors in the HDMI picture.
-
-Signed-off-by: Jyri Sarha <jsarha@ti.com>
-cc: airlied@linux.ie
----
- drivers/gpu/drm/tilcdc/tilcdc_slave.c | 24 +++++++++++++++++++++++-
- 1 file changed, 23 insertions(+), 1 deletion(-)
-
-diff --git a/drivers/gpu/drm/tilcdc/tilcdc_slave.c b/drivers/gpu/drm/tilcdc/tilcdc_slave.c
-index 595068b..e43240a 100644
---- a/drivers/gpu/drm/tilcdc/tilcdc_slave.c
-+++ b/drivers/gpu/drm/tilcdc/tilcdc_slave.c
-@@ -19,6 +19,7 @@
- #include <linux/pinctrl/pinmux.h>
- #include <linux/pinctrl/consumer.h>
- #include <drm/drm_encoder_slave.h>
-+#include <drm/i2c/tda998x.h>
-
- #include "tilcdc_drv.h"
-
-@@ -111,8 +112,29 @@ static const struct drm_encoder_helper_funcs slave_encoder_helper_funcs = {
- .restore = drm_i2c_encoder_restore,
- };
-
-+static struct tda998x_encoder_params tda998x_pdata = {
-+ .swap_b = 0x3,
-+ .mirr_b = 0x0,
-+ .swap_a = 0x2,
-+ .mirr_a = 0x0,
-+ .swap_d = 0x1,
-+ .mirr_d = 0x0,
-+ .swap_c = 0x0,
-+ .mirr_c = 0x0,
-+ .swap_f = 0x5,
-+ .mirr_f = 0x0,
-+ .swap_e = 0x4,
-+ .mirr_e = 0x0,
-+ .audio_cfg = 0x3, /* I2S mode */
-+ .audio_clk_cfg = 1, /* select clock pin */
-+ .audio_frame[1] = 1, /* channels - 1 */
-+ .audio_format = AFMT_I2S,
-+ .audio_sample_rate = 48000,
-+};
-+
- static const struct i2c_board_info info = {
-- I2C_BOARD_INFO("tda998x", 0x70)
-+ I2C_BOARD_INFO("tda998x", 0x70),
-+ .platform_data = &tda998x_pdata,
- };
-
- static struct drm_encoder *slave_encoder_create(struct drm_device *dev,
---
-1.8.5.2
-
diff --git a/arm-imx6-utilite.patch b/arm-imx6-utilite.patch
index 9274d802..35f34c16 100644
--- a/arm-imx6-utilite.patch
+++ b/arm-imx6-utilite.patch
@@ -31,14 +31,14 @@ diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
index 8081479..5672e91 100644
--- a/arch/arm/boot/dts/Makefile
+++ b/arch/arm/boot/dts/Makefile
-@@ -137,6 +137,7 @@
+@@ -162,6 +162,7 @@ dtb-$(CONFIG_ARCH_MXC) += \
imx6dl-sabresd.dtb \
imx6dl-wandboard.dtb \
imx6q-arm2.dtb \
+ imx6q-cm-fx6.dtb \
+ imx6q-cubox-i.dtb \
imx6q-phytec-pbab01.dtb \
imx6q-sabreauto.dtb \
- imx6q-sabrelite.dtb \
diff --git a/arch/arm/boot/dts/imx6q-cm-fx6.dts b/arch/arm/boot/dts/imx6q-cm-fx6.dts
new file mode 100644
index 0000000..99b46f8
@@ -152,30 +152,7 @@ index 0000000..99b46f8
+ pinctrl-0 = <&pinctrl_uart4>;
+ status = "okay";
+};
-commit a26be0f051e03b9676a39799ca64d5888361d70e
-Author: Sascha Hauer <s.hauer@pengutronix.de>
-Date: Thu Jan 16 13:44:19 2014 +0100
-
- ARM: dts: imx6q: Add spi4 alias
-
- The quad version has a SPI controller more than the other
- versions. Add an alias for it.
-
- Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
- Signed-off-by: Shawn Guo <shawn.guo@linaro.org>
-
-diff --git a/arch/arm/boot/dts/imx6q.dtsi b/arch/arm/boot/dts/imx6q.dtsi
-index 6295fa8..422d169 100644
---- a/arch/arm/boot/dts/imx6q.dtsi
-+++ b/arch/arm/boot/dts/imx6q.dtsi
-@@ -13,6 +13,10 @@
- #include "imx6qdl.dtsi"
-
- / {
-+ aliases {
-+ spi4 = &ecspi5;
-+ };
+
- cpus {
- #address-cells = <1>;
- #size-cells = <0>;
++&sata {
++ status = "okay";
++};
diff --git a/arm-tegra-paz00-panel-dts.patch b/arm-tegra-paz00-panel-dts.patch
new file mode 100644
index 00000000..e64f2ce1
--- /dev/null
+++ b/arm-tegra-paz00-panel-dts.patch
@@ -0,0 +1,99 @@
+From fb4a8356eb67514b10618d1e9e4059ced14c05f2 Mon Sep 17 00:00:00 2001
+From: Marc Dietrich <marvin24@gmx.de>
+Date: Sat, 21 Dec 2013 21:38:13 +0100
+Subject: [PATCH] ARM: tegra: paz00: Add LVDS support to device tree
+
+Add backlight and panel nodes for the PAZ00 TFT LCD panel.
+
+Signed-off-by: Marc Dietrich <marvin24@gmx.de>
+---
+ arch/arm/boot/dts/tegra20-paz00.dts | 46 ++++++++++++++++++++++++++++++++++-
+ 1 files changed, 45 insertions(+), 1 deletions(-)
+
+diff --git a/arch/arm/boot/dts/tegra20-paz00.dts b/arch/arm/boot/dts/tegra20-paz00.dts
+index c7cd8e6..9a39a80 100644
+--- a/arch/arm/boot/dts/tegra20-paz00.dts
++++ b/arch/arm/boot/dts/tegra20-paz00.dts
+@@ -17,6 +17,14 @@
+ };
+
+ host1x@50000000 {
++ dc@54200000 {
++ rgb {
++ status = "okay";
++
++ nvidia,panel = <&panel>;
++ };
++ };
++
+ hdmi@54280000 {
+ status = "okay";
+
+@@ -257,7 +265,11 @@
+ status = "okay";
+ };
+
+- i2c@7000c000 {
++ pwm: pwm@7000a000 {
++ status = "okay";
++ };
++
++ lvds_ddc: i2c@7000c000 {
+ status = "okay";
+ clock-frequency = <400000>;
+
+@@ -475,6 +487,18 @@
+ non-removable;
+ };
+
++ backlight: backlight {
++ compatible = "pwm-backlight";
++
++ enable-gpios = <&gpio TEGRA_GPIO(U, 4) GPIO_ACTIVE_HIGH>;
++ pwms = <&pwm 0 5000000>;
++
++ brightness-levels = <0 16 32 48 64 80 96 112 128 144 160 176 192 208 224 240 255>;
++ default-brightness-level = <10>;
++
++ backlight-boot-off;
++ };
++
+ clocks {
+ compatible = "simple-bus";
+ #address-cells = <1>;
+@@ -509,6 +533,16 @@
+ };
+ };
+
++ panel: panel {
++ compatible = "samsung,ltn101nt05", "simple-panel";
++
++ ddc-i2c-bus = <&lvds_ddc>;
++ power-supply = <&vdd_pnl_reg>;
++ enable-gpios = <&gpio TEGRA_GPIO(M, 6) GPIO_ACTIVE_HIGH>;
++
++ backlight = <&backlight>;
++ };
++
+ regulators {
+ compatible = "simple-bus";
+ #address-cells = <1>;
+@@ -522,6 +556,16 @@
+ regulator-max-microvolt = <5000000>;
+ regulator-always-on;
+ };
++
++ vdd_pnl_reg: regulator@1 {
++ compatible = "regulator-fixed";
++ reg = <1>;
++ regulator-name = "+3VS,vdd_pnl";
++ regulator-min-microvolt = <3300000>;
++ regulator-max-microvolt = <3300000>;
++ gpio = <&gpio TEGRA_GPIO(A, 4) GPIO_ACTIVE_HIGH>;
++ enable-active-high;
++ };
+ };
+
+ sound {
+--
+1.7.1
diff --git a/cifs-mask-off-top-byte-in-get_rfc1002_length.patch b/cifs-mask-off-top-byte-in-get_rfc1002_length.patch
deleted file mode 100644
index 572b0b32..00000000
--- a/cifs-mask-off-top-byte-in-get_rfc1002_length.patch
+++ /dev/null
@@ -1,88 +0,0 @@
-Path: news.gmane.org!not-for-mail
-From: Jeff Layton <jlayton-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
-Newsgroups: gmane.linux.kernel.cifs
-Subject: [PATCH] cifs: mask off top byte in get_rfc1002_length()
-Date: Tue, 25 Feb 2014 05:27:17 -0800
-Lines: 31
-Approved: news@gmane.org
-Message-ID: <1393334837-6480-1-git-send-email-jlayton@redhat.com>
-NNTP-Posting-Host: plane.gmane.org
-X-Trace: ger.gmane.org 1393334843 15695 80.91.229.3 (25 Feb 2014 13:27:23 GMT)
-X-Complaints-To: usenet@ger.gmane.org
-NNTP-Posting-Date: Tue, 25 Feb 2014 13:27:23 +0000 (UTC)
-Cc: klaus-jjkdzbv0JQgAvxtiuMwx3w@public.gmane.org, sprabhu-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org, linux-cifs-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
-To: smfrench-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org
-Original-X-From: linux-cifs-owner-u79uwXL29TY76Z2rM5mHXA@public.gmane.org Tue Feb 25 14:27:30 2014
-Return-path: <linux-cifs-owner-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>
-Envelope-to: glkc-linux-cifs-wOFGN7rlS/M9smdsby/KFg@public.gmane.org
-Original-Received: from vger.kernel.org ([209.132.180.67])
- by plane.gmane.org with esmtp (Exim 4.69)
- (envelope-from <linux-cifs-owner-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>)
- id 1WII2h-0005Fo-GS
- for glkc-linux-cifs-wOFGN7rlS/M9smdsby/KFg@public.gmane.org; Tue, 25 Feb 2014 14:27:27 +0100
-Original-Received: (majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org) by vger.kernel.org via listexpand
- id S1752439AbaBYN10 (ORCPT <rfc822;glkc-linux-cifs@m.gmane.org>);
- Tue, 25 Feb 2014 08:27:26 -0500
-Original-Received: from mail-pa0-f41.google.com ([209.85.220.41]:49339 "EHLO
- mail-pa0-f41.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org
- with ESMTP id S1752329AbaBYN10 (ORCPT
- <rfc822;linux-cifs-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>); Tue, 25 Feb 2014 08:27:26 -0500
-Original-Received: by mail-pa0-f41.google.com with SMTP id fa1so8081181pad.14
- for <linux-cifs-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>; Tue, 25 Feb 2014 05:27:25 -0800 (PST)
-X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
- d=1e100.net; s=20130820;
- h=x-gm-message-state:sender:from:to:cc:subject:date:message-id;
- bh=I4guc46K5w45idU9LGsBcibRE60G/EkhmnDXX8d4lFc=;
- b=YI5Ag6zKBzcWzALN9+g56fwi/XbV8N9i0JCfbhVRCEv9/JYNUHzVBZ+WO3Wqaf54U/
- qNNjrH1Io0LpiVTF5+ZuiDEee4Vt8QbMP7iD7rkxh4RZq9clRgum/wVTwV5l/SfIwud7
- HqGJlJ3jSGtTO4bhBuvX5mD4FrHw4RZJvaWzowzMvYH536b8nZu9typSL4G+KQEV34la
- 19S6ikv1BjtJ49PUS3Gf9xMsqwkJNrLVBauag3yqhztcTSnP5UrxuauSWX0c68R2Lt70
- hdx5HGMQ0P2wgG6+Qvs3tEl2+infCJkpOH5X7KSvN1pT9hxtt6iE5QGFh5dtUTKe7FlA
- /grg==
-X-Gm-Message-State: ALoCoQlVCE5L6UI8IEC9kyuJlrAWBVyYN/eaeZJVp0fm2f2fDE/042yEkI6q9uGoP1vHrftB4/7C
-X-Received: by 10.69.31.65 with SMTP id kk1mr6563795pbd.47.1393334845726;
- Tue, 25 Feb 2014 05:27:25 -0800 (PST)
-Original-Received: from corrin.poochiereds.net.cthon.org (64-71-23-226.static.wiline.com. [64.71.23.226])
- by mx.google.com with ESMTPSA id eb5sm143431078pad.22.2014.02.25.05.27.24
- for <multiple recipients>
- (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
- Tue, 25 Feb 2014 05:27:25 -0800 (PST)
-X-Mailer: git-send-email 1.8.5.3
-Original-Sender: linux-cifs-owner-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
-Precedence: bulk
-List-ID: <linux-cifs.vger.kernel.org>
-X-Mailing-List: linux-cifs-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
-Xref: news.gmane.org gmane.linux.kernel.cifs:9419
-Archived-At: <http://permalink.gmane.org/gmane.linux.kernel.cifs/9419>
-
-The 32-bit rfc1002 header field consists of a type byte and then a
-24-bit length field, but get_rfc1002_length doesn't mask off the top
-byte.
-
-In most cases, it's not a problem since the RFC1002_SESSION_MESSAGE type
-is '\0', but when doing a RFC1002 session establishment, the type is
-non-zero and that throws off the returned length in smb_send_rqst.
-
-Reported-by: klaus-jjkdzbv0JQgAvxtiuMwx3w@public.gmane.org
-Tested-by: Sachin Prabhu <sprabhu-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
-Signed-off-by: Jeff Layton <jlayton-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
----
- fs/cifs/cifsglob.h | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/fs/cifs/cifsglob.h b/fs/cifs/cifsglob.h
-index e7fe49e..45376a4 100644
---- a/fs/cifs/cifsglob.h
-+++ b/fs/cifs/cifsglob.h
-@@ -506,7 +506,7 @@ struct cifs_mnt_data {
- static inline unsigned int
- get_rfc1002_length(void *buf)
- {
-- return be32_to_cpu(*((__be32 *)buf));
-+ return be32_to_cpu(*((__be32 *)buf)) & 0xffffff;
- }
-
- static inline void
---
-1.8.5.3
-
diff --git a/cifs-sanity-check-length-of-data-to-send-before-sending.patch b/cifs-sanity-check-length-of-data-to-send-before-sending.patch
deleted file mode 100644
index b0f31156..00000000
--- a/cifs-sanity-check-length-of-data-to-send-before-sending.patch
+++ /dev/null
@@ -1,129 +0,0 @@
-Path: news.gmane.org!not-for-mail
-From: Jeff Layton <jlayton-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
-Newsgroups: gmane.linux.kernel.cifs
-Subject: [PATCH] cifs: sanity check length of data to send before sending
-Date: Fri, 14 Feb 2014 07:21:00 -0500
-Lines: 72
-Approved: news@gmane.org
-Message-ID: <1392380460-6997-1-git-send-email-jlayton@redhat.com>
-NNTP-Posting-Host: plane.gmane.org
-X-Trace: ger.gmane.org 1392380460 7637 80.91.229.3 (14 Feb 2014 12:21:00 GMT)
-X-Complaints-To: usenet@ger.gmane.org
-NNTP-Posting-Date: Fri, 14 Feb 2014 12:21:00 +0000 (UTC)
-Cc: linux-cifs-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
-To: smfrench-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org
-Original-X-From: linux-cifs-owner-u79uwXL29TY76Z2rM5mHXA@public.gmane.org Fri Feb 14 13:21:08 2014
-Return-path: <linux-cifs-owner-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>
-Envelope-to: glkc-linux-cifs-wOFGN7rlS/M9smdsby/KFg@public.gmane.org
-Original-Received: from vger.kernel.org ([209.132.180.67])
- by plane.gmane.org with esmtp (Exim 4.69)
- (envelope-from <linux-cifs-owner-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>)
- id 1WEHlT-0001gj-Pf
- for glkc-linux-cifs-wOFGN7rlS/M9smdsby/KFg@public.gmane.org; Fri, 14 Feb 2014 13:21:08 +0100
-Original-Received: (majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org) by vger.kernel.org via listexpand
- id S1751935AbaBNMVH (ORCPT <rfc822;glkc-linux-cifs@m.gmane.org>);
- Fri, 14 Feb 2014 07:21:07 -0500
-Original-Received: from mail-qc0-f170.google.com ([209.85.216.170]:60206 "EHLO
- mail-qc0-f170.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org
- with ESMTP id S1751288AbaBNMVG (ORCPT
- <rfc822;linux-cifs-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>); Fri, 14 Feb 2014 07:21:06 -0500
-Original-Received: by mail-qc0-f170.google.com with SMTP id e9so20306487qcy.29
- for <linux-cifs-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>; Fri, 14 Feb 2014 04:21:05 -0800 (PST)
-X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
- d=1e100.net; s=20130820;
- h=x-gm-message-state:sender:from:to:cc:subject:date:message-id;
- bh=8FvTfO9jKY+Fzw5nmoxw6PuPxfXM/khvtS/Hnxnu+to=;
- b=i7Gy5AwQiFX7hVMJJMjvAR61u2zO8E7tTAgE0SfPp25untipj/RTae8xcA+0vVrznY
- sZwOPATUyFmu2mXAKh5L0WutFNF3SQirPVgM5jaKlMZQT253YInioO1AwD00Jtio00LX
- wOt19I6v3umZfSqCBw1dyDiH66kX4xKaKqdQoY2+nEsicG4RJvp4PpaLhG454nfpVxfN
- HeskcNJ5RBvg17JpDvKX6THqbKWsHSHHqKKCROERxeTbs7HTgV9jTNSDeOuPr6Loiovi
- 9DBQwQwMmlC9NebDqR5xatva30WRhyCp/xyHNaoY+aVk8N6r5YlFphLmLRvmaZ0Ed2CH
- 17WA==
-X-Gm-Message-State: ALoCoQmHyaepi0IHvwKS024wRq/srAdGRdo0UGUynLggzf843S3Yj7dwW53RjNbTDG1Y4w+/mqOB
-X-Received: by 10.229.13.133 with SMTP id c5mr12315963qca.22.1392380465000;
- Fri, 14 Feb 2014 04:21:05 -0800 (PST)
-Original-Received: from tlielax.poochiereds.net ([2001:470:8:d63:3a60:77ff:fe93:a95d])
- by mx.google.com with ESMTPSA id u4sm15047497qai.21.2014.02.14.04.21.04
- for <multiple recipients>
- (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
- Fri, 14 Feb 2014 04:21:04 -0800 (PST)
-X-Mailer: git-send-email 1.8.5.3
-Original-Sender: linux-cifs-owner-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
-Precedence: bulk
-List-ID: <linux-cifs.vger.kernel.org>
-X-Mailing-List: linux-cifs-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
-Xref: news.gmane.org gmane.linux.kernel.cifs:9402
-Archived-At: <http://permalink.gmane.org/gmane.linux.kernel.cifs/9402>
-
-We had a bug discovered recently where an upper layer function
-(cifs_iovec_write) could pass down a smb_rqst with an invalid amount of
-data in it. The length of the SMB frame would be correct, but the rqst
-struct would cause smb_send_rqst to send nearly 4GB of data.
-
-This should never be the case. Add some sanity checking to the beginning
-of smb_send_rqst that ensures that the amount of data we're going to
-send agrees with the length in the RFC1002 header. If it doesn't, WARN()
-and return -EIO to the upper layers.
-
-Signed-off-by: Jeff Layton <jlayton-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
----
- fs/cifs/transport.c | 29 +++++++++++++++++++++++++++++
- 1 file changed, 29 insertions(+)
-
-diff --git a/fs/cifs/transport.c b/fs/cifs/transport.c
-index b37570952846..18cd5650a5fc 100644
---- a/fs/cifs/transport.c
-+++ b/fs/cifs/transport.c
-@@ -270,6 +270,26 @@ cifs_rqst_page_to_kvec(struct smb_rqst *rqst, unsigned int idx,
- iov->iov_len = rqst->rq_pagesz;
- }
-
-+static unsigned long
-+rqst_len(struct smb_rqst *rqst)
-+{
-+ unsigned int i;
-+ struct kvec *iov = rqst->rq_iov;
-+ unsigned long buflen = 0;
-+
-+ /* total up iov array first */
-+ for (i = 0; i < rqst->rq_nvec; i++)
-+ buflen += iov[i].iov_len;
-+
-+ /* add in the page array if there is one */
-+ if (rqst->rq_npages) {
-+ buflen += rqst->rq_pagesz * (rqst->rq_npages - 1);
-+ buflen += rqst->rq_tailsz;
-+ }
-+
-+ return buflen;
-+}
-+
- static int
- smb_send_rqst(struct TCP_Server_Info *server, struct smb_rqst *rqst)
- {
-@@ -277,6 +297,7 @@ smb_send_rqst(struct TCP_Server_Info *server, struct smb_rqst *rqst)
- struct kvec *iov = rqst->rq_iov;
- int n_vec = rqst->rq_nvec;
- unsigned int smb_buf_length = get_rfc1002_length(iov[0].iov_base);
-+ unsigned long send_length;
- unsigned int i;
- size_t total_len = 0, sent;
- struct socket *ssocket = server->ssocket;
-@@ -285,6 +306,14 @@ smb_send_rqst(struct TCP_Server_Info *server, struct smb_rqst *rqst)
- if (ssocket == NULL)
- return -ENOTSOCK;
-
-+ /* sanity check send length */
-+ send_length = rqst_len(rqst);
-+ if (send_length != smb_buf_length + 4) {
-+ WARN(1, "Send length mismatch(send_length=%lu smb_buf_length=%u)\n",
-+ send_length, smb_buf_length);
-+ return -EIO;
-+ }
-+
- cifs_dbg(FYI, "Sending smb: smb_len=%u\n", smb_buf_length);
- dump_smb(iov[0].iov_base, iov[0].iov_len);
-
---
-1.8.5.3
-
diff --git a/config-arm-generic b/config-arm-generic
index 3c2f27c4..cd56b249 100644
--- a/config-arm-generic
+++ b/config-arm-generic
@@ -20,6 +20,7 @@ CONFIG_RESET_GPIO=y
CONFIG_RCU_FANOUT_LEAF=16
# CONFIG_RTC_DRV_SNVS is not set
+# CONFIG_RTC_DRV_HYM8563 is not set
CONFIG_BACKLIGHT_PWM=m
CONFIG_INPUT_PWM_BEEPER=m
CONFIG_ARM_SP805_WATCHDOG=m
@@ -28,7 +29,6 @@ CONFIG_ARM_ARCH_TIMER_EVTSTREAM=y
# CONFIG_ARM_DT_BL_CPUFREQ is not set
CONFIG_NR_CPUS=8
-CONFIG_ARM_DMA_USE_IOMMU=y
CONFIG_SWIOTLB=y
CONFIG_DMA_VIRTUAL_CHANNELS=y
CONFIG_FB_SIMPLE=y
@@ -38,10 +38,14 @@ CONFIG_HAVE_PERF_USER_STACK_DUMP=y
# ARM AMBA generic HW
CONFIG_ARM_AMBA=y
+CONFIG_ARM_CCI=y
+CONFIG_ARM_DMA_USE_IOMMU=y
CONFIG_ARM_GIC=y
+CONFIG_ARM_GLOBAL_TIMER=y
+CONFIG_ARM_SMMU=y
CONFIG_MMC_ARMMMCI=y
-CONFIG_SERIAL_AMBA_PL011_CONSOLE=y
CONFIG_SERIAL_AMBA_PL011=y
+CONFIG_SERIAL_AMBA_PL011_CONSOLE=y
CONFIG_SERIO_AMBAKMI=y
CONFIG_OC_ETM=y
CONFIG_FB_ARMCLCD=y
@@ -67,14 +71,18 @@ CONFIG_OF_EARLY_FLATTREE=y
CONFIG_OF_FLATTREE=y
CONFIG_OF_GPIO=y
CONFIG_OF_I2C=m
+CONFIG_OF_IOMMU=y
CONFIG_OF_IRQ=y
CONFIG_OF_MDIO=m
CONFIG_OF_MTD=y
CONFIG_OF_NET=y
CONFIG_OF_PCI_IRQ=m
CONFIG_OF_PCI=m
+CONFIG_OF_RESERVED_MEM=y
+CONFIG_PATA_OF_PLATFORM=m
# CONFIG_OF_SELFTEST is not set
CONFIG_SERIAL_OF_PLATFORM=y
+CONFIG_THERMAL_OF=y
# External Connectors
CONFIG_EXTCON=m
@@ -100,6 +108,7 @@ CONFIG_MTD_PHYSMAP_OF=m
CONFIG_GPIO_DEVRES=y
CONFIG_GPIO_GENERIC=m
CONFIG_GPIO_GENERIC_PLATFORM=m
+CONFIG_GPIO_WATCHDOG=m
CONFIG_GPIOLIB=y
CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
CONFIG_ARCH_REQUIRE_GPIOLIB=y
@@ -109,10 +118,10 @@ CONFIG_POWER_RESET_GPIO=y
CONFIG_POWER_RESET_RESTART=y
#i2c
+CONFIG_I2C_ARB_GPIO_CHALLENGE=m
CONFIG_I2C_BOARDINFO=y
CONFIG_I2C_GPIO=m
CONFIG_I2C_MUX=m
-# CONFIG_I2C_ARB_GPIO_CHALLENGE is not set
CONFIG_I2C_MUX_GPIO=m
CONFIG_I2C_MUX_PINCTRL=m
CONFIG_I2C_MUX_PCA9541=m
@@ -122,7 +131,7 @@ CONFIG_SENSORS_IIO_HWMON=m
CONFIG_IIO_SYSFS_TRIGGER=m
# PHY framework
-CONFIG_GENERIC_PHY=m
+CONFIG_GENERIC_PHY=y
# MFD
CONFIG_MFD_CORE=m
@@ -130,8 +139,21 @@ CONFIG_MFD_CORE=m
CONFIG_SMC91X=m
CONFIG_SMC911X=m
+CONFIG_CPU_THERMAL=y
CONFIG_THERMAL_GOV_USER_SPACE=y
+# Contiguous Memory Allocator
+CONFIG_CMA=y
+CONFIG_DMA_CMA=y
+# CONFIG_CMA_DEBUG is not set
+CONFIG_CMA_SIZE_MBYTES=16
+CONFIG_CMA_SIZE_SEL_MBYTES=y
+# CONFIG_CMA_SIZE_SEL_PERCENTAGE is not set
+# CONFIG_CMA_SIZE_SEL_MIN is not set
+# CONFIG_CMA_SIZE_SEL_MAX is not set
+CONFIG_CMA_ALIGNMENT=8
+CONFIG_CMA_AREAS=7
+
# CONFIG_CRYPTO_TEST is not set
# CONFIG_TRANSPARENT_HUGEPAGE is not set
# CONFIG_XEN is not set
@@ -140,7 +162,6 @@ CONFIG_THERMAL_GOV_USER_SPACE=y
# CONFIG_DRM_SHMOBILE is not set
# CONFIG_I2C_SH_MOBILE is not set
# CONFIG_MMC_DW_SOCFPGA is not set
-# CONFIG_ARM_SMMU is not set
# CONFIG_I2C_NOMADIK is not set
# CONFIG_IRQ_DOMAIN_DEBUG is not set
# CONFIG_LEDS_RENESAS_TPU is not set
@@ -150,6 +171,13 @@ CONFIG_THERMAL_GOV_USER_SPACE=y
# CONFIG_DRM_TEGRA is not set
# CONFIG_SHMOBILE_IOMMU is not set
+# CONFIG_COMMON_CLK_SI570 is not set
+# CONFIG_COMMON_CLK_QCOM is not set
+
+# CONFIG_ARM_PTDUMP is not set
+
+# CONFIG_PATA_PLATFORM is not set
+
### turn off things which make no sense on embedded SoC
# core
@@ -164,6 +192,7 @@ CONFIG_THERMAL_GOV_USER_SPACE=y
# CONFIG_NET_VENDOR_EXAR is not set
# CONFIG_NET_VENDOR_INTEL is not set
# CONFIG_NET_VENDOR_MELLANOX is not set
+# CONFIG_NET_VENDOR_BROCADE is not set
# scsi
@@ -173,8 +202,11 @@ CONFIG_THERMAL_GOV_USER_SPACE=y
# CONFIG_SCSI_IPS is not set
# CONFIG_SCSI_CXGB3_ISCSI is not set
# CONFIG_SCSI_CXGB4_ISCSI is not set
+# CONFIG_SCSI_BFA_FC is not set
# serial
# CONFIG_SERIAL_SH_SCI is not set
CONFIG_CRASH=m
+
+# CONFIG_DEBUG_SET_MODULE_RONX is not set
diff --git a/config-arm64 b/config-arm64
index 78ae1569..38a0debd 100644
--- a/config-arm64
+++ b/config-arm64
@@ -12,8 +12,6 @@ CONFIG_ARCH_HAS_HOLES_MEMORYMODEL=y
CONFIG_ARCH_REQUIRE_GPIOLIB=y
# CONFIG_ARM64_64K_PAGES is not set
CONFIG_COMPAT=y
-# CONFIG_ARM_DT_BL_CPUFREQ is not set
-CONFIG_ARM_SMMU=y
CONFIG_BCMA_POSSIBLE=y
CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0
@@ -42,7 +40,8 @@ CONFIG_HAVE_NET_DSA=y
CONFIG_HVC_DRIVER=y
CONFIG_HZ=100
-# CONFIG_KVM is not set
+CONFIG_KVM=y
+CONFIG_KVM_ARM_MAX_VCPUS=8
CONFIG_LOG_BUF_SHIFT=14
CONFIG_NFS_ACL_SUPPORT=y
diff --git a/config-armv7 b/config-armv7
index 95cdcd1f..d609bc65 100644
--- a/config-armv7
+++ b/config-armv7
@@ -1,6 +1,6 @@
# ARM unified arch kernel
-# CONFIG_ARCH_EXYNOS_MULTI is not set
+# CONFIG_ARCH_BERLIN is not set
# CONFIG_ARCH_KEYSTONE is not set
CONFIG_ARCH_MVEBU=y
CONFIG_ARCH_MXC=y
@@ -10,7 +10,6 @@ CONFIG_ARCH_OMAP4=y
CONFIG_ARCH_PICOXCELL=y
CONFIG_ARCH_ROCKCHIP=y
CONFIG_ARCH_SOCFPGA=y
-CONFIG_ARCH_SUNXI=y
CONFIG_ARCH_TEGRA=y
CONFIG_ARCH_U8500=y
# CONFIG_ARCH_VIRT is not set
@@ -32,7 +31,6 @@ CONFIG_CACHE_TAUROS2=y
CONFIG_MV_XOR=y
CONFIG_CRYPTO_DEV_MV_CESA=m
CONFIG_MV643XX_ETH=m
-CONFIG_I2C_MV64XXX=m
CONFIG_PINCTRL_MVEBU=y
CONFIG_PINCTRL_ARMADA_370=y
CONFIG_PINCTRL_ARMADA_XP=y
@@ -44,11 +42,13 @@ CONFIG_RTC_DRV_MV=m
CONFIG_MVNETA=m
CONFIG_GPIO_MVEBU=y
CONFIG_MVEBU_CLK_CORE=y
+CONFIG_MVEBU_CLK_COREDIV=y
CONFIG_MVEBU_CLK_GATING=y
CONFIG_MMC_MVSDIO=m
CONFIG_SPI_ORION=m
CONFIG_USB_MV_UDC=m
CONFIG_MVEBU_MBUS=y
+CONFIG_PHY_MVEBU_SATA=y
CONFIG_ARMADA_THERMAL=m
CONFIG_DRM_ARMADA=m
@@ -100,7 +100,6 @@ CONFIG_OMAP_IOVMM=m
CONFIG_HWSPINLOCK_OMAP=m
CONFIG_OMAP3_EMU=y
# CONFIG_OMAP3_SDRC_AC_TIMING is not set
-CONFIG_OMAP_WATCHDOG=m
CONFIG_SERIAL_OMAP=y
CONFIG_SERIAL_OMAP_CONSOLE=y
@@ -124,7 +123,6 @@ CONFIG_TWL6040_CORE=y
CONFIG_CLK_TWL6040=m
CONFIG_OMAP_INTERCONNECT=m
CONFIG_MFD_OMAP_USB_HOST=y
-CONFIG_MTD_ONENAND_OMAP2=m
CONFIG_HDQ_MASTER_OMAP=m
CONFIG_REGULATOR_TWL4030=y
CONFIG_BACKLIGHT_PANDORA=m
@@ -146,11 +144,11 @@ CONFIG_TWL6030_GPADC=m
# OMAP5 (possibly other devices too)
CONFIG_MFD_PALMAS=y
-CONFIG_PINCTRL_PALMAS=y
CONFIG_EXTCON_PALMAS=m
-CONFIG_RTC_DRV_PALMAS=m
-CONFIG_REGULATOR_PALMAS=m
CONFIG_GPIO_PALMAS=y
+CONFIG_PINCTRL_PALMAS=y
+CONFIG_REGULATOR_PALMAS=y
+CONFIG_RTC_DRV_PALMAS=m
CONFIG_WL_TI=y
CONFIG_WLCORE_SDIO=m
@@ -160,7 +158,9 @@ CONFIG_WILINK_PLATFORM_DATA=y
CONFIG_MFD_WL1273_CORE=m
CONFIG_NFC_WILINK=m
+CONFIG_MTD_ONENAND_OMAP2=m
CONFIG_MTD_NAND_OMAP2=m
+CONFIG_MTD_NAND_OMAP_BCH=y
CONFIG_SPI_OMAP24XX=m
CONFIG_MFD_TI_SSP=m
CONFIG_SPI_TI_SSP=m
@@ -185,7 +185,7 @@ CONFIG_POWER_AVS=y
CONFIG_POWER_AVS_OMAP=y
CONFIG_POWER_AVS_OMAP_CLASS3=y
-# CONFIG_ARM_OMAP2PLUS_CPUFREQ is not set
+CONFIG_ARM_OMAP2PLUS_CPUFREQ=y
CONFIG_PWM_TIECAP=m
CONFIG_PWM_TIEHRPWM=m
@@ -307,29 +307,29 @@ CONFIG_TI_DAVINCI_EMAC=m
CONFIG_TI_DAVINCI_MDIO=m
CONFIG_TI_CPSW=m
CONFIG_TI_CPSW_PHY_SEL=y
-# CONFIG_TI_CPTS is not set
+CONFIG_TI_CPTS=y
+# Needed for BBone White
+CONFIG_REGULATOR_TPS65217=y
CONFIG_TI_EMIF=m
CONFIG_DRM_TILCDC=m
CONFIG_SPI_DAVINCI=m
CONFIG_SND_DAVINCI_SOC=m
+CONFIG_SND_DAVINCI_SOC_I2S=m
+CONFIG_SND_DAVINCI_SOC_MCASP=m
+CONFIG_SND_DAVINCI_SOC_VCIF=m
+CONFIG_SND_DAVINCI_SOC_GENERIC_EVM=m
+CONFIG_SND_AM33XX_SOC_EVM=m
CONFIG_REGULATOR_TI_ABB=m
CONFIG_TI_ADC081C=m
CONFIG_TI_AM335X_ADC=m
CONFIG_PWM_TIPWMSS=y
-CONFIG_SND_AM33XX_SOC_EVM=m
-CONFIG_SND_AM335X_SOC_NXPTDA_EVM=m
-
-# Allwinner a1x
-CONFIG_PINCTRL_SUNXI=y
-CONFIG_SUNXI_WATCHDOG=m
-CONFIG_MDIO_SUN4I=m
-CONFIG_NET_VENDOR_ALLWINNER=y
-CONFIG_SUN4I_EMAC=m
-CONFIG_EEPROM_SUNXI_SID=m
+# CONFIG_GPIO_DAVINCI is not set
+# CONFIG_DAVINCI_WATCHDOG is not set
# i.MX
CONFIG_MXC_IRQ_PRIOR=y
# CONFIG_MXC_DEBUG_BOARD is not set
+CONFIG_SOC_IMX50=y
CONFIG_SOC_IMX53=y
CONFIG_SOC_IMX6Q=y
CONFIG_SOC_IMX6SL=y
@@ -340,6 +340,7 @@ CONFIG_ARM_IMX6Q_CPUFREQ=m
CONFIG_IMX_THERMAL=m
CONFIG_PATA_IMX=m
CONFIG_PCI_IMX6=y
+# CONFIG_USB_EHCI_MXC is not set
CONFIG_USB_CHIPIDEA=m
CONFIG_USB_CHIPIDEA_UDC=y
CONFIG_USB_CHIPIDEA_HOST=y
@@ -348,13 +349,18 @@ CONFIG_USB_FSL_USB2=m
CONFIG_NET_VENDOR_FREESCALE=y
CONFIG_FEC=m
CONFIG_KEYBOARD_IMX=m
+CONFIG_KEYBOARD_STMPE=m
+CONFIG_TOUCHSCREEN_STMPE=m
CONFIG_SERIAL_IMX=y
CONFIG_SERIAL_IMX_CONSOLE=y
CONFIG_PINCTRL_IMX6SL=y
CONFIG_I2C_IMX=m
+CONFIG_STMPE_I2C=y
CONFIG_SPI_IMX=m
+CONFIG_STMPE_SPI=y
CONFIG_MFD_MC13783=m
CONFIG_MFD_MC13XXX_SPI=m
+CONFIG_MFD_STMPE=y
CONFIG_W1_MASTER_MXC=m
CONFIG_IMX_WEIM=y
CONFIG_IMX2_WDT=m
@@ -362,8 +368,10 @@ CONFIG_HW_RANDOM_MXC_RNGA=m
CONFIG_CRYPTO_DEV_SAHARA=m
CONFIG_RTC_DRV_SNVS=m
# CONFIG_FB_MX3 is not set
+# CONFIG_FB_IMX is not set
CONFIG_SND_IMX_SOC=m
+CONFIG_SND_SOC_FSL_SPDIF=m
CONFIG_SND_SOC_FSL_SSI=m
CONFIG_SND_SOC_FSL_UTILS=m
CONFIG_SND_SOC_IMX_SSI=m
@@ -375,7 +383,6 @@ CONFIG_SND_SOC_IMX_WM8962=m
CONFIG_SND_SOC_IMX_MC13783=m
CONFIG_SND_SOC_IMX_SPDIF=m
-CONFIG_USB_EHCI_MXC=m
CONFIG_USB_IMX21_HCD=m
CONFIG_USB_MXS_PHY=m
CONFIG_MMC_DW_SOCFPGA=m
@@ -392,7 +399,6 @@ CONFIG_AHCI_IMX=m
# CONFIG_MXS_DMA is not set
CONFIG_PWM_IMX=m
-CONFIG_BACKLIGHT_PWM=m
CONFIG_DRM_IMX=m
CONFIG_DRM_IMX_FB_HELPER=m
CONFIG_DRM_IMX_HDMI=m
@@ -424,6 +430,7 @@ CONFIG_INPUT_DA9052_ONKEY=m
CONFIG_INPUT_DA9055_ONKEY=m
CONFIG_GPIO_DA9052=m
CONFIG_GPIO_DA9055=m
+CONFIG_GPIO_STMPE=y
CONFIG_BATTERY_DA9052=m
CONFIG_SENSORS_DA9052_ADC=m
CONFIG_SENSORS_DA9055=m
@@ -476,15 +483,9 @@ CONFIG_AB8500_BM=y
CONFIG_AB8500_GPADC=y
CONFIG_SENSORS_AB8500=m
CONFIG_STE_MODEM_RPROC=m
-CONFIG_CW1200=m
-CONFIG_CW1200_WLAN_SDIO=m
-CONFIG_CW1200_WLAN_SPI=m
-CONFIG_UX500_WATCHDOG=m
-CONFIG_IIO_ST_ACCEL_3AXIS=m
-CONFIG_IIO_ST_GYRO_3AXIS=m
+
CONFIG_IIO_ST_GYRO_I2C_3AXIS=m
CONFIG_IIO_ST_GYRO_SPI_3AXIS=m
-CONFIG_IIO_ST_MAGN_3AXIS=m
CONFIG_IIO_ST_MAGN_I2C_3AXIS=m
CONFIG_IIO_ST_MAGN_SPI_3AXIS=m
CONFIG_IIO_ST_PRESS=m
@@ -497,11 +498,12 @@ CONFIG_IIO_ST_SENSORS_CORE=m
# tegra
CONFIG_ARCH_TEGRA_2x_SOC=y
CONFIG_ARCH_TEGRA_3x_SOC=y
-# CONFIG_ARCH_TEGRA_114_SOC is not set
-# CONFIG_ARCH_TEGRA_124_SOC is not set
+CONFIG_ARCH_TEGRA_114_SOC=y
+CONFIG_ARCH_TEGRA_124_SOC=y
CONFIG_ARM_TEGRA_CPUFREQ=y
CONFIG_TEGRA20_MC=y
CONFIG_TEGRA30_MC=y
+CONFIG_TRUSTED_FOUNDATIONS=y
CONFIG_SERIAL_TEGRA=y
@@ -511,12 +513,13 @@ CONFIG_TEGRA_IOMMU_SMMU=y
CONFIG_MMC_SDHCI_TEGRA=m
CONFIG_I2C_TEGRA=m
+CONFIG_I2C_MUX_PCA954x=m
CONFIG_TEGRA_SYSTEM_DMA=y
CONFIG_TEGRA_EMC_SCALING_ENABLE=y
CONFIG_TEGRA_AHB=y
CONFIG_TEGRA20_APB_DMA=y
-# CONFIG_SPI_TEGRA114 is not set
+CONFIG_SPI_TEGRA114=m
CONFIG_SPI_TEGRA20_SFLASH=m
CONFIG_SPI_TEGRA20_SLINK=m
@@ -530,19 +533,18 @@ CONFIG_RTC_DRV_TEGRA=m
CONFIG_SND_SOC_TEGRA=m
CONFIG_SND_SOC_TEGRA_ALC5632=m
+CONFIG_SND_SOC_TEGRA_MAX98090=m
CONFIG_SND_SOC_TEGRA_RT5640=m
CONFIG_SND_SOC_TEGRA_TRIMSLICE=m
CONFIG_SND_SOC_TEGRA_WM8753=m
CONFIG_SND_SOC_TEGRA_WM8903=m
CONFIG_SND_SOC_TEGRA_WM9712=m
CONFIG_SND_SOC_TEGRA20_AC97=m
+CONFIG_SND_SOC_TEGRA20_DAS=m
+CONFIG_SND_SOC_TEGRA20_SPDIF=m
CONFIG_SND_SOC_TEGRA30_AHUB=m
CONFIG_SND_SOC_TEGRA30_I2S=m
-# bool only, upstream aiming for modular in 3.14
-# https://lkml.org/lkml/2013/11/18/47
-# CONFIG_DRM_TEGRA is not set
-
# AC100 (PAZ00)
CONFIG_MFD_NVEC=y
CONFIG_MFD_TPS80031=y
@@ -560,10 +562,13 @@ CONFIG_PWM_TEGRA=m
CONFIG_TEGRA_HOST1X=m
CONFIG_TEGRA_HOST1X_FIREWALL=y
-
-CONFIG_DRM_TEGRA=y
-# CONFIG_DRM_TEGRA_STAGING is not set
+CONFIG_DRM_TEGRA=m
+CONFIG_DRM_TEGRA_FBDEV=y
# CONFIG_DRM_TEGRA_DEBUG is not set
+CONFIG_DRM_TEGRA_STAGING=y
+CONFIG_DRM_PANEL=y
+CONFIG_DRM_PANEL_SIMPLE=m
+
CONFIG_CRYPTO_DEV_TEGRA_AES=m
@@ -586,6 +591,7 @@ CONFIG_XILINX_EMACLITE=m
CONFIG_GPIO_XILINX=y
CONFIG_I2C_XILINX=m
CONFIG_SPI_XILINX=m
+CONFIG_MMC_SDHCI_OF_ARASAN=m
# Multi function devices
CONFIG_MFD_88PM800=m
@@ -631,6 +637,7 @@ CONFIG_REGULATOR_MAX8973=m
# CONFIG_MFD_MAX77686 is not set
# CONFIG_MFD_MAX77693 is not set
# CONFIG_MFD_MAX8997 is not set
+# CONFIG_MFD_MAX14577 is not set
# CONFIG_MFD_AAT2870_CORE is not set
# CONFIG_MFD_RC5T583 is not set
# CONFIG_MFD_SMSC is not set
@@ -648,10 +655,9 @@ CONFIG_REGULATOR_MAX8973=m
# CONFIG_VIRTUALIZATION is not set
# CONFIG_POWER_RESET_QNAP is not set
# CONFIG_OMAP2_DSS_DEBUG is not set
-# CONFIG_DRM_TEGRA_DEBUG is not set
# CONFIG_CRYPTO_DEV_UX500_DEBUG is not set
# CONFIG_AB8500_DEBUG is not set
# CONFIG_SOC_VF610 is not set
-# CONFIG_ARM_CCI is not set
# CONFIG_MMC_TMIO is not set
+# CONFIG_SND_SOC_ADI is not set
diff --git a/config-armv7-generic b/config-armv7-generic
index 8215e605..26e90fe8 100644
--- a/config-armv7-generic
+++ b/config-armv7-generic
@@ -50,6 +50,7 @@ CONFIG_ALWAYS_USE_PERSISTENT_CLOCK=y
# Platforms enabled/disabled globally on ARMv7
CONFIG_ARCH_HIGHBANK=y
+CONFIG_ARCH_SUNXI=y
CONFIG_ARCH_VEXPRESS_CA9X4=y
CONFIG_ARCH_VEXPRESS_CORTEX_A5_A9_ERRATA=y
# CONFIG_ARCH_VEXPRESS_SPC is not set
@@ -60,13 +61,9 @@ CONFIG_ARCH_VEXPRESS_CORTEX_A5_A9_ERRATA=y
# CONFIG_ARCH_U8500 is not set
# CONFIG_ARCH_WM8850 is not set
# CONFIG_ARCH_SHMOBILE_MULTI is not set
-
-# highbank
-CONFIG_EDAC_HIGHBANK_MC=m
-CONFIG_EDAC_HIGHBANK_L2=m
-CONFIG_SATA_HIGHBANK=m
-CONFIG_ARM_HIGHBANK_CPUFREQ=m
-# CONFIG_ARM_HIGHBANK_CPUIDLE is not set
+# CONFIG_ARCH_BERLIN is not set
+# CONFIG_ARCH_HI3xxx is not set
+# CONFIG_ARCH_MSM_DT is not set
# errata
# v5/v6
@@ -118,15 +115,8 @@ CONFIG_CPU_IDLE_GOV_MENU=y
CONFIG_DEFAULT_MMAP_MIN_ADDR=32768
CONFIG_LSM_MMAP_MIN_ADDR=32768
-CONFIG_ARM_GLOBAL_TIMER=y
-
CONFIG_XZ_DEC_ARM=y
-# Power management
-CONFIG_PM_OPP=y
-CONFIG_ARM_CPU_SUSPEND=y
-CONFIG_GENERIC_CPUFREQ_CPU0=m
-
CONFIG_LOCAL_TIMERS=y
CONFIG_UACCESS_WITH_MEMCPY=y
CONFIG_CC_STACKPROTECTOR=y
@@ -159,10 +149,27 @@ CONFIG_RTC_DRV_PL031=y
CONFIG_PL330_DMA=m
CONFIG_AMBA_PL08X=y
-CONFIG_ARM_SP805_WATCHDOG=m
CONFIG_GPIO_PL061=y
CONFIG_PL320_MBOX=y
+# highbank
+CONFIG_EDAC_HIGHBANK_MC=m
+CONFIG_EDAC_HIGHBANK_L2=m
+CONFIG_SATA_HIGHBANK=m
+CONFIG_ARM_HIGHBANK_CPUFREQ=m
+# CONFIG_ARM_HIGHBANK_CPUIDLE is not set
+
+# Allwinner a1x
+CONFIG_PINCTRL_SUNXI=y
+CONFIG_SUNXI_WATCHDOG=m
+CONFIG_MDIO_SUN4I=m
+CONFIG_NET_VENDOR_ALLWINNER=y
+CONFIG_SUN4I_EMAC=m
+CONFIG_STMMAC_PLATFORM=y
+CONFIG_DWMAC_SUNXI=y
+CONFIG_EEPROM_SUNXI_SID=m
+CONFIG_RTC_DRV_SUNXI=m
+
CONFIG_REGMAP=y
CONFIG_REGMAP_I2C=m
CONFIG_REGMAP_SPI=m
@@ -170,6 +177,11 @@ CONFIG_REGMAP_SPMI=m
CONFIG_REGMAP_MMIO=m
CONFIG_REGMAP_IRQ=y
+# Power management
+CONFIG_PM_OPP=y
+CONFIG_ARM_CPU_SUSPEND=y
+CONFIG_GENERIC_CPUFREQ_CPU0=m
+
# usb
CONFIG_USB_OTG=y
# CONFIG_USB_OTG_WHITELIST is not set
@@ -214,6 +226,8 @@ CONFIG_USB_CONFIGFS_OBEX=y
# CONFIG_USB_CONFIGFS_RNDIS is not set
CONFIG_USB_CONFIGFS_SERIAL=y
CONFIG_USB_CONFIGFS_STORAGE=y
+# CONFIG_USB_CONFIGFS_F_LB_SS is not set
+# CONFIG_USB_CONFIGFS_F_FS is not set
# CONFIG_MUSB_PIO_ONLY is not set
# CONFIG_USB_MUSB_DEBUG is not set
@@ -256,6 +270,8 @@ CONFIG_PINCTRL_SINGLE=y
CONFIG_GENERIC_PINCONF=y
# CONFIG_PINCTRL_SAMSUNG is not set
# CONFIG_PINCTRL_EXYNOS4 is not set
+# CONFIG_PINCTRL_CAPRI is not set
+# CONFIG_PINCTRL_MSM8X74 is not set
# GPIO
# CONFIG_GPIO_EM is not set
@@ -267,8 +283,11 @@ CONFIG_GPIO_MC33880=m
CONFIG_GPIO_TPS65910=y
CONFIG_GPIO_TPS65912=m
CONFIG_LEDS_GPIO=m
+CONFIG_MDIO_BUS_MUX=m
CONFIG_MDIO_BUS_MUX_GPIO=m
CONFIG_MDIO_BUS_MUX_MMIOREG=m
+CONFIG_INPUT_GPIO=m
+CONFIG_INPUT_GPIO_BEEPER=m
CONFIG_INPUT_GPIO_TILT_POLLED=m
CONFIG_INPUT_MATRIXKMAP=m
CONFIG_KEYBOARD_GPIO=m
@@ -300,6 +319,7 @@ CONFIG_NFC_NCI_SPI=y
# i2c
CONFIG_I2C_DESIGNWARE_CORE=m
CONFIG_I2C_DESIGNWARE_PLATFORM=m
+CONFIG_I2C_MV64XXX=m
# HW crypto and rng
CONFIG_CRYPTO_SHA1_ARM=m
@@ -331,6 +351,22 @@ CONFIG_MTD_DATAFLASH=m
CONFIG_MTD_DATAFLASH_WRITE_VERIFY=y
CONFIG_MTD_DATAFLASH_OTP=y
CONFIG_MTD_M25P80=m
+CONFIG_MTD_NAND=m
+CONFIG_MTD_NAND_CAFE=m
+# CONFIG_MTD_NAND_DENALI is not set
+CONFIG_MTD_NAND_DOCG4=m
+CONFIG_MTD_NAND_ECC_SMC=y
+CONFIG_MTD_NAND_FSMC=m
+CONFIG_MTD_NAND_GPIO=m
+CONFIG_MTD_NAND_MXC=m
+CONFIG_MTD_NAND_NANDSIM=m
+CONFIG_MTD_NAND_ORION=m
+CONFIG_MTD_NAND_PLATFORM=m
+CONFIG_MTD_NAND_PXA3xx=m
+CONFIG_MTD_NAND_RICOH=m
+CONFIG_MTD_NAND_TMIO=m
+CONFIG_MTD_SPINAND_MT29F=m
+CONFIG_MTD_SPINAND_ONDIEECC=y
CONFIG_MTD_SST25L=m
CONFIG_EEPROM_AT25=m
CONFIG_EEPROM_93XX46=m
@@ -347,6 +383,7 @@ CONFIG_SPI_DW_PCI=m
# CONFIG_MMC_DW_SOCFPGA is not set
# CONFIG_MMC_DW_EXYNOS is not set
# CONFIG_MMC_DW_IDMAC is not set
+# CONFIG_MMC_DW_K3 is not set
CONFIG_USB_DWC2=m
# CONFIG_USB_DWC2_DEBUG is not set
# CONFIG_USB_DWC2_TRACK_MISSED_SOFS is not set
@@ -355,6 +392,7 @@ CONFIG_USB_DWC3_OMAP=m
CONFIG_USB_DWC3_EXYNOS=m
CONFIG_USB_DWC3_PCI=m
# CONFIG_USB_DWC3_DEBUG is not set
+# CONFIG_USB_DWC3_KEYSTONE is not set
CONFIG_DW_WATCHDOG=m
CONFIG_PCIE_DW=y
CONFIG_PCI_EXYNOS=y
@@ -395,11 +433,12 @@ CONFIG_RTC_DRV_TPS80031=m
# Regulators
CONFIG_REGULATOR=y
CONFIG_RFKILL_REGULATOR=m
-# CONFIG_REGULATOR_DUMMY is not set
-CONFIG_REGULATOR_FIXED_VOLTAGE=m
+CONFIG_REGULATOR_DUMMY=y
+CONFIG_REGULATOR_FIXED_VOLTAGE=y
CONFIG_REGULATOR_VIRTUAL_CONSUMER=m
CONFIG_REGULATOR_USERSPACE_CONSUMER=m
CONFIG_REGULATOR_GPIO=m
+# CONFIG_REGULATOR_ACT8865 is not set
CONFIG_REGULATOR_AD5398=m
CONFIG_REGULATOR_DA9210=m
CONFIG_REGULATOR_FAN53555=m
@@ -476,18 +515,6 @@ CONFIG_LEDS_DAC124S085=m
CONFIG_LEDS_PWM=m
CONFIG_BMP085_SPI=m
-# Contiguous Memory Allocator
-CONFIG_OF_RESERVED_MEM=y
-CONFIG_CMA=y
-CONFIG_DMA_CMA=y
-# CONFIG_CMA_DEBUG is not set
-CONFIG_CMA_SIZE_MBYTES=16
-CONFIG_CMA_SIZE_SEL_MBYTES=y
-# CONFIG_CMA_SIZE_SEL_PERCENTAGE is not set
-# CONFIG_CMA_SIZE_SEL_MIN is not set
-# CONFIG_CMA_SIZE_SEL_MAX is not set
-CONFIG_CMA_ALIGNMENT=8
-CONFIG_CMA_AREAS=7
CONFIG_SRAM=y
# Ethernet
@@ -524,6 +551,9 @@ CONFIG_UBIFS_FS_LZO=y
CONFIG_UBIFS_FS_ZLIB=y
# CONFIG_UBIFS_FS_DEBUG is not set
+# Sensors
+CONFIG_SENSORS_HTU21=m
+
# Chromebook
CONFIG_MFD_CROS_EC=m
CONFIG_MFD_CROS_EC_I2C=m
@@ -532,11 +562,10 @@ CONFIG_KEYBOARD_CROS_EC=m
# Should be in generic
CONFIG_BPF_JIT=y
+
# CONFIG_NET_VENDOR_CIRRUS is not set
# CONFIG_NET_VENDOR_MICROCHIP is not set
-
# CONFIG_PATA_PLATFORM is not set
-
# CONFIG_DRM_EXYNOS is not set
# CONFIG_DRM_TILCDC is not set
# CONFIG_DRM_IMX is not set
@@ -565,6 +594,8 @@ CONFIG_BPF_JIT=y
# CONFIG_SPI_TOPCLIFF_PCH is not set
# CONFIG_SPI_PXA2XX is not set
# CONFIG_SPI_FSL_DSPI is not set
+# CONFIG_FB_XILINX is not set
+# CONFIG_USB_S3C_HSOTG is not set
# these modules all fail with missing __bad_udelay
# http://www.spinics.net/lists/arm/msg15615.html provides some background
@@ -586,7 +617,5 @@ CONFIG_BPF_JIT=y
# CONFIG_DEBUG_USER is not set
# CONFIG_DEBUG_LL is not set
# CONFIG_DEBUG_PINCTRL is not set
-# CONFIG_ARM_DT_BL_CPUFREQ is not set
-
-# FIX ME
-# CONFIG_FB_XILINX is not set
+# CONFIG_DMADEVICES_VDEBUG is not set
+# CONFIG_DMADEVICES_DEBUG is not set
diff --git a/config-armv7-lpae b/config-armv7-lpae
index c3b22bcd..25fe122d 100644
--- a/config-armv7-lpae
+++ b/config-armv7-lpae
@@ -1,8 +1,6 @@
# ARM A15 lpae unified arch kernel
-CONFIG_ARCH_EXYNOS_MULTI=y
CONFIG_ARCH_KEYSTONE=y
CONFIG_ARCH_VIRT=y
-CONFIG_ARCH_EXYNOS5=y
# CONFIG_ARCH_MVEBU is not set
# CONFIG_ARCH_MXC is not set
@@ -12,23 +10,17 @@ CONFIG_ARCH_EXYNOS5=y
# CONFIG_SOC_AM33XX is not set
# CONFIG_SND_AM33XX_SOC_EVM is not set
# CONFIG_SOC_AM43XX is not set
+# CONFIG_SOC_DRA7XX is not set
# CONFIG_ARCH_ROCKCHIP is not set
# CONFIG_ARCH_SOCFPGA is not set
-# CONFIG_ARCH_SUNXI is not set
# CONFIG_ARCH_TEGRA is not set
# CONFIG_ARCH_ZYNQ is not set
-
-# CONFIG_ARCH_EXYNOS4 is not set
-
-# CONFIG_EXYNOS_ATAGS is not set
-
CONFIG_ARM_LPAE=y
CONFIG_SYS_SUPPORTS_HUGETLBFS=y
CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE=y
CONFIG_ARM_VIRT_EXT=y
CONFIG_VIRTUALIZATION=y
-CONFIG_ARM_SMMU=y
CONFIG_ARM_DMA_IOMMU_ALIGNMENT=8
# Cortex-A15
@@ -41,7 +33,7 @@ CONFIG_KVM_ARM_MAX_VCPUS=8
CONFIG_KVM_ARM_VGIC=y
CONFIG_KVM_ARM_TIMER=y
-CONFIG_XEN=y
+# CONFIG_XEN is not set
CONFIG_XEN_FBDEV_FRONTEND=y
CONFIG_INPUT_XEN_KBDDEV_FRONTEND=m
CONFIG_XEN_BLKDEV_FRONTEND=m
@@ -58,6 +50,7 @@ CONFIG_XEN_SYS_HYPERVISOR=y
CONFIG_XEN_GNTDEV=y
CONFIG_XEN_GRANT_DEV_ALLOC=m
CONFIG_XEN_WDT=m
+# CONFIG_XEN_BALLOON is not set
CONFIG_SERIAL_SAMSUNG=y
CONFIG_SERIAL_SAMSUNG_CONSOLE=y
@@ -72,9 +65,9 @@ CONFIG_SOC_EXYNOS5440=y
CONFIG_EXYNOS_THERMAL=m
CONFIG_PCI_EXYNOS=y
-CONFIG_ARM_CCI=y
CONFIG_TCG_TIS_I2C_INFINEON=m
+# CONFIG_EXYNOS_ATAGS is not set
CONFIG_PINCTRL_EXYNOS=y
CONFIG_PINCTRL_EXYNOS5440=y
CONFIG_EXYNOS_IOMMU=y
@@ -113,11 +106,15 @@ CONFIG_SAMSUNG_USB3PHY=m
CONFIG_MMC_DW_EXYNOS=m
CONFIG_RTC_DRV_S3C=m
-# Chromebook
-CONFIG_MFD_CROS_EC=m
-CONFIG_MFD_CROS_EC_I2C=m
-CONFIG_MFD_CROS_EC_SPI=m
-CONFIG_KEYBOARD_CROS_EC=m
+# TI Keystone
+CONFIG_KEYSTONE_USB_PHY=m
+CONFIG_USB_DWC3_KEYSTONE=m
+CONFIG_GPIO_DAVINCI=y
+CONFIG_I2C_DAVINCI=m
+# CONFIG_DAVINCI_WATCHDOG is not set
+# CONFIG_SPI_DAVINCI is not set
+# CONFIG_SND_DAVINCI_SOC is not set
+# CONFIG_TI_SOC_THERMAL is not set
# Arndale/Origen
CONFIG_MFD_MAX8997=y
@@ -136,7 +133,3 @@ CONFIG_S3C_LOWLEVEL_UART_PORT=1
# CONFIG_S3C2410_WATCHDOG is not set
# CONFIG_MMC_SDHCI_S3C is not set
# CONFIG_TEGRA_HOST1X is not set
-# CONFIG_SPI_DAVINCI is not set
-# CONFIG_I2C_DAVINCI is not set
-# CONFIG_SND_DAVINCI_SOC is not set
-# CONFIG_TI_SOC_THERMAL is not set
diff --git a/config-debug b/config-debug
index 8000b4e8..e2253260 100644
--- a/config-debug
+++ b/config-debug
@@ -26,8 +26,6 @@ CONFIG_FAULT_INJECTION_STACKTRACE_FILTER=y
CONFIG_FAIL_IO_TIMEOUT=y
CONFIG_FAIL_MMC_REQUEST=y
-CONFIG_SLUB_DEBUG_ON=y
-
CONFIG_LOCK_STAT=y
CONFIG_DEBUG_STACK_USAGE=y
diff --git a/config-generic b/config-generic
index f4299738..3ed2e5db 100644
--- a/config-generic
+++ b/config-generic
@@ -128,7 +128,8 @@ CONFIG_MMC=m
CONFIG_SDIO_UART=m
# CONFIG_MMC_TEST is not set
# CONFIG_MMC_DEBUG is not set
-# CONFIG_MMC_UNSAFE_RESUME is not set
+# https://lists.fedoraproject.org/pipermail/kernel/2014-February/004889.html
+CONFIG_MMC_UNSAFE_RESUME=y
# CONFIG_MMC_CLKGATE is not set
CONFIG_MMC_BLOCK=m
CONFIG_MMC_BLOCK_MINORS=8
@@ -148,6 +149,7 @@ CONFIG_MMC_REALTEK_PCI=m
CONFIG_MMC_VUB300=m
# CONFIG_MMC_SDHCI_PXAV2 is not set
# CONFIG_MMC_SDHCI_PXAV3 is not set
+# CONFIG_MMC_SDHCI_OF_ARASAN is not set
CONFIG_CB710_CORE=m
@@ -182,6 +184,7 @@ CONFIG_INFINIBAND_NES=m
CONFIG_INFINIBAND_QIB=m
CONFIG_INFINIBAND_QIB_DCA=y
# CONFIG_INFINIBAND_OCRDMA is not set
+# CONFIG_INFINIBAND_USNIC is not set
#
# Executable file formats
@@ -196,7 +199,6 @@ CONFIG_BINFMT_MISC=m
# Device Drivers
#
-# CONFIG_COMMON_CLK_DEBUG is not set
# CONFIG_COMMON_CLK_SI5351 is not set
#
@@ -313,6 +315,8 @@ CONFIG_BLK_DEV=y
CONFIG_BLK_DEV_NULL_BLK=m
CONFIG_BLK_DEV_FD=m
# CONFIG_PARIDE is not set
+CONFIG_ZRAM=m
+# CONFIG_ZRAM_DEBUG is not set
CONFIG_BLK_CPQ_DA=m
CONFIG_BLK_CPQ_CISS_DA=m
@@ -665,7 +669,7 @@ CONFIG_FIREWIRE_SBP2=m
CONFIG_FIREWIRE_NET=m
CONFIG_FIREWIRE_OHCI_DEBUG=y
CONFIG_FIREWIRE_NOSY=m
-CONFIG_FIREWIRE_SERIAL=m
+# CONFIG_FIREWIRE_SERIAL is not set
# CONFIG_FIREWIRE_OHCI_REMOTE_DMA is not set
#
@@ -857,6 +861,7 @@ CONFIG_NETFILTER_XT_TARGET_TPROXY=m
CONFIG_NETFILTER_XT_MATCH_ADDRTYPE=m
CONFIG_NETFILTER_XT_MATCH_BPF=m
+CONFIG_NETFILTER_XT_MATCH_CGROUP=m
CONFIG_NETFILTER_XT_MATCH_CLUSTER=m
CONFIG_NETFILTER_XT_MATCH_COMMENT=m
CONFIG_NETFILTER_XT_MATCH_CPU=m
@@ -873,8 +878,10 @@ CONFIG_NETFILTER_XT_MATCH_ESP=m
CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m
CONFIG_NETFILTER_XT_MATCH_HELPER=m
CONFIG_NETFILTER_XT_MATCH_HL=m
+CONFIG_NETFILTER_XT_MATCH_IPCOMP=m
CONFIG_NETFILTER_XT_MATCH_IPRANGE=m
CONFIG_NETFILTER_XT_MATCH_IPVS=m
+CONFIG_NETFILTER_XT_MATCH_L2TP=m
CONFIG_NETFILTER_XT_MATCH_LENGTH=m
CONFIG_NETFILTER_XT_MATCH_LIMIT=m
CONFIG_NETFILTER_XT_MATCH_MAC=m
@@ -988,6 +995,7 @@ CONFIG_IP6_NF_TARGET_MASQUERADE=m
# nf_tables support
CONFIG_NF_TABLES=m
+CONFIG_NF_TABLES_INET=m
CONFIG_NFT_EXTHDR=m
CONFIG_NFT_META=m
CONFIG_NFT_CT=m
@@ -997,6 +1005,8 @@ CONFIG_NFT_COUNTER=m
CONFIG_NFT_LOG=m
CONFIG_NFT_LIMIT=m
CONFIG_NFT_NAT=m
+CONFIG_NFT_QUEUE=m
+CONFIG_NFT_REJECT=m
CONFIG_NFT_COMPAT=m
CONFIG_NF_TABLES_IPV4=m
@@ -1137,6 +1147,8 @@ CONFIG_NET_SCH_QFQ=m
CONFIG_NET_SCH_CODEL=m
CONFIG_NET_SCH_FQ_CODEL=m
CONFIG_NET_SCH_FQ=m
+CONFIG_NET_SCH_HHF=m
+CONFIG_NET_SCH_PIE=m
CONFIG_NET_SCH_PLUG=m
CONFIG_NET_CLS=y
CONFIG_NET_CLS_ACT=y
@@ -1186,7 +1198,6 @@ CONFIG_OPENVSWITCH=m
CONFIG_OPENVSWITCH_GRE=y
CONFIG_OPENVSWITCH_VXLAN=y
CONFIG_VSOCKETS=m
-CONFIG_NETPRIO_CGROUP=m
#
@@ -1374,6 +1385,10 @@ CONFIG_IXGBE_DCB=y
CONFIG_IXGBE_HWMON=y
CONFIG_IXGBE_PTP=y
CONFIG_I40E=m
+# CONFIG_I40E_VXLAN is not set
+# CONFIG_I40E_DCB is not set
+# CONFIG_I40EVF is not set
+
# CONFIG_NET_VENDOR_I825XX is not set
CONFIG_NET_VENDOR_MARVELL=y
@@ -1620,6 +1635,9 @@ CONFIG_ATH9K_HTC=m
CONFIG_ATH9K_BTCOEX_SUPPORT=y
# CONFIG_ATH9K_HTC_DEBUGFS is not set
# CONFIG_ATH9K_LEGACY_RATE_CONTROL is not set
+# CONFIG_ATH9K_STATION_STATISTICS is not set
+# CONFIG_ATH9K_WOW is not set
+#
CONFIG_ATH10K=m
CONFIG_ATH10K_PCI=m
# CONFIG_ATH10K_DEBUG is not set
@@ -1737,6 +1755,7 @@ CONFIG_RT73USB=m
CONFIG_RTL8180=m
CONFIG_RTL8187=m
# CONFIG_USB_ZD1201 is not set
+# CONFIG_USB_NET_SR9800 is not set
CONFIG_USB_NET_RNDIS_WLAN=m
CONFIG_USB_NET_KALMIA=m
CONFIG_USB_NET_QMI_WWAN=m
@@ -1814,6 +1833,8 @@ CONFIG_NFC_HCI=m
CONFIG_NFC_SHDLC=y
CONFIG_NFC_LLCP=y
CONFIG_NFC_SIM=m
+CONFIG_NFC_MRVL=m
+CONFIG_NFC_MRVL_USB=m
#
# Near Field Communication (NFC) devices
@@ -2312,7 +2333,12 @@ CONFIG_I2C=m
CONFIG_I2C_COMPAT=y
CONFIG_I2C_CHARDEV=m
# CONFIG_I2C_MUX is not set
+# CONFIG_I2C_ARB_GPIO_CHALLENGE is not set
# CONFIG_I2C_MUX_PCA954x is not set
+# CONFIG_I2C_MUX_GPIO is not set
+# CONFIG_I2C_MUX_PCA9541 is not set
+# CONFIG_I2C_MUX_PINCTRL is not set
+#
#
# I2C Algorithms
@@ -2352,6 +2378,7 @@ CONFIG_I2C_NFORCE2=m
# CONFIG_I2C_OCORES is not set
CONFIG_I2C_PARPORT=m
CONFIG_I2C_PARPORT_LIGHT=m
+# CONFIG_I2C_ROBOTFUZZ_OSIF is not set
CONFIG_I2C_PASEMI=m
CONFIG_I2C_PCA_PLATFORM=m
# CONFIG_I2C_PIIX4 is not set
@@ -2536,6 +2563,7 @@ CONFIG_HID_SENSOR_ENUM_BASE_QUIRKS=y
# CONFIG_MCP4725 is not set
# CONFIG_ITG3200 is not set
# CONFIG_APDS9300 is not set
+# CONFIG_CM32181 is not set
# CONFIG_CM36651 is not set
# CONFIG_GP2AP020A00F is not set
# CONFIG_TSL2583 is not set
@@ -2550,6 +2578,7 @@ CONFIG_HID_SENSOR_ENUM_BASE_QUIRKS=y
CONFIG_IIO_ST_GYRO_3AXIS=m
CONFIG_IIO_ST_MAGN_3AXIS=m
CONFIG_IIO_ST_ACCEL_3AXIS=m
+CONFIG_HID_SENSOR_INCLINOMETER_3D=m
# CONFIG_ADJD_S311 is not set
# CONFIG_SENSORS_TSL2563 is not set
# CONFIG_VCNL4000 is not set
@@ -2587,6 +2616,8 @@ CONFIG_IIO_ST_ACCEL_3AXIS=m
# CONFIG_ADXRS450 is not set
# CONFIG_ADIS16400 is not set
# CONFIG_ADIS16480 is not set
+# CONFIG_DHT11 is not set
+# CONFIG_MPL3115 is not set
# staging IIO drivers
# CONFIG_AD7291 is not set
@@ -2718,6 +2749,7 @@ CONFIG_WM831X_WATCHDOG=m
# CONFIG_DW_WATCHDOG is not set
CONFIG_W83697UG_WDT=m
# CONFIG_MEN_A21_WDT is not set
+# CONFIG_GPIO_WATCHDOG is not set
CONFIG_HW_RANDOM=y
CONFIG_HW_RANDOM_TIMERIOMEM=m
@@ -2781,6 +2813,7 @@ CONFIG_RTC_DRV_DS3232=m
CONFIG_RTC_DRV_ISL12022=m
# CONFIG_RTC_DRV_HID_SENSOR_TIME is not set
# CONFIG_RTC_DRV_MOXART is not set
+# CONFIG_RTC_DRV_ISL12057 is not set
CONFIG_R3964=m
# CONFIG_APPLICOM is not set
@@ -2824,6 +2857,7 @@ CONFIG_DRM_I915=m
CONFIG_DRM_I915_KMS=y
CONFIG_DRM_I915_FBDEV=y
# CONFIG_DRM_I915_PRELIMINARY_HW_SUPPORT is not set
+# CONFIG_DRM_I915_UMS is not set
CONFIG_DRM_VIA=m
CONFIG_DRM_NOUVEAU=m
CONFIG_NOUVEAU_DEBUG=5
@@ -2838,6 +2872,7 @@ CONFIG_DRM_UDL=m
CONFIG_DRM_VMWGFX=m
CONFIG_DRM_VMWGFX_FBCON=y
CONFIG_DRM_QXL=m
+CONFIG_DRM_BOCHS=m
#
# PCMCIA character devices
@@ -2871,6 +2906,10 @@ CONFIG_VIDEO_V4L2=y
# CONFIG_VIDEO_V4L2_INT_DEVICE is not set
CONFIG_VIDEO_V4L2_SUBDEV_API=y
# CONFIG_VIDEO_VIVI is not set
+# CONFIG_USB_SI4713 is not set
+# CONFIG_PLATFORM_SI4713 is not set
+# CONFIG_I2C_SI4713 is not set
+# CONFIG_USB_RAREMONO is not set
#
# Video For Linux
@@ -2904,6 +2943,7 @@ CONFIG_VIDEO_CX88_BLACKBIRD=m
CONFIG_VIDEO_CX88_ENABLE_VP3054=y
CONFIG_VIDEO_CX88_VP3054=m
CONFIG_VIDEO_EM28XX=m
+CONFIG_VIDEO_EM28XX_V4L2=m
CONFIG_VIDEO_EM28XX_ALSA=m
CONFIG_VIDEO_EM28XX_DVB=m
CONFIG_VIDEO_EM28XX_RC=y
@@ -3195,6 +3235,7 @@ CONFIG_FB_EFI=y
# CONFIG_FB_BROADSHEET is not set
# CONFIG_FB_UDL is not set
# CONFIG_FB_GOLDFISH is not set
+# CONFIG_FB_OPENCORES is not set
# CONFIG_FIRMWARE_EDID is not set
@@ -3419,6 +3460,7 @@ CONFIG_USB_EHCI_TT_NEWSCHED=y
CONFIG_USB_ISP1362_HCD=m
CONFIG_USB_FUSBH200_HCD=m
# CONFIG_USB_FOTG210_HCD is not set
+# CONFIG_USB_GR_UDC is not set
CONFIG_USB_OHCI_HCD=y
CONFIG_USB_OHCI_HCD_PCI=y
# CONFIG_USB_OHCI_HCD_SSB is not set
@@ -3735,6 +3777,7 @@ CONFIG_USB_SERIAL_MOS7715_PARPORT=y
# CONFIG_USB_SERIAL_ZTE is not set
CONFIG_USB_SERIAL_MOS7840=m
CONFIG_USB_SERIAL_MOTOROLA=m
+# CONFIG_USB_SERIAL_MXUPORT is not set
CONFIG_USB_SERIAL_NAVMAN=m
CONFIG_USB_SERIAL_OPTION=m
CONFIG_USB_SERIAL_OTI6858=m
@@ -3778,6 +3821,7 @@ CONFIG_USB_APPLEDISPLAY=m
# Physical Layer USB driver
CONFIG_USB_PHY=y
+# CONFIG_USB_OTG_FSM is not set
# CONFIG_GENERIC_PHY is not set
# CONFIG_PHY_EXYNOS_MIPI_VIDEO is not set
@@ -3789,6 +3833,7 @@ CONFIG_USB_PHY=y
# CONFIG_SAMSUNG_USBPHY is not set
# CONFIG_SAMSUNG_USB2PHY is not set
# CONFIG_SAMSUNG_USB3PHY is not set
+# CONFIG_BCM_KONA_USB2_PHY is not set
CONFIG_USB_RCAR_PHY=m
CONFIG_USB_ATM=m
CONFIG_USB_CXACRU=m
@@ -3909,6 +3954,7 @@ CONFIG_MFD_VIPERBOARD=m
# CONFIG_MFD_TPS65912 is not set
# CONFIG_MFD_SYSCON is not set
# CONFIG_MFD_DA9063 is not set
+# CONFIG_MFD_LP3943 is not set
#
# File systems
@@ -3961,6 +4007,7 @@ CONFIG_CEPH_FS=m
CONFIG_CEPH_FSCACHE=y
CONFIG_BLK_DEV_RBD=m
CONFIG_CEPH_LIB=m
+CONFIG_CEPH_FS_POSIX_ACL=y
# CONFIG_CEPH_LIB_USE_DNS_RESOLVER is not set
CONFIG_FSCACHE=m
@@ -4269,6 +4316,7 @@ CONFIG_LOCKUP_DETECTOR=y
# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set
# CONFIG_BOOTPARAM_HARDLOCKUP_PANIC is not set
# CONFIG_PANIC_ON_OOPS is not set
+CONFIG_PANIC_TIMEOUT=0
CONFIG_ATOMIC64_SELFTEST=y
CONFIG_MEMORY_FAILURE=y
CONFIG_HWPOISON_INJECT=m
@@ -4479,6 +4527,8 @@ CONFIG_MEMCG_SWAP_ENABLED=y
CONFIG_MEMCG_KMEM=y
# CONFIG_CGROUP_HUGETLB is not set
CONFIG_CGROUP_PERF=y
+CONFIG_CGROUP_NET_PRIO=m
+# CONFIG_CGROUP_NET_CLASSID is not set
CONFIG_BLK_CGROUP=y
# CONFIG_SYSFS_DEPRECATED is not set
@@ -4501,6 +4551,7 @@ CONFIG_THERMAL_GOV_FAIR_SHARE=y
# CONFIG_THERMAL_GOV_USER_SPACE is not set
CONFIG_THERMAL_GOV_STEP_WISE=y
# CONFIG_THERMAL_EMULATION is not set
+# CONFIG_THERMAL_OF is not set
# CONFIG_CPU_THERMAL is not set
CONFIG_INOTIFY=y
@@ -4762,6 +4813,7 @@ CONFIG_NOZOMI=m
CONFIG_INPUT_APANEL=m
CONFIG_INPUT_GP2A=m
# CONFIG_INPUT_GPIO_TILT_POLLED is not set
+# CONFIG_INPUT_GPIO_BEEPER is not set
# CONFIG_INTEL_MENLOW is not set
CONFIG_ENCLOSURE_SERVICES=m
@@ -4841,6 +4893,9 @@ CONFIG_STAGING_MEDIA=y
# CONFIG_TI_ST is not set
# CONFIG_FB_XGI is not set
# CONFIG_VIDEO_GO7007 is not set
+# CONFIG_I2C_BCM2048 is not set
+# CONFIG_VIDEO_TCM825X is not set
+# CONFIG_VIDEO_OMAP4 is not set
# CONFIG_USB_MSI3101 is not set
# CONFIG_DT3155 is not set
# CONFIG_W35UND is not set
@@ -4868,10 +4923,10 @@ CONFIG_RTL8192E=m
# CONFIG_VIDEO_CX25821 is not set
# CONFIG_R8187SE is not set
# CONFIG_R8188EU is not set
+# CONFIG_R8821AE is not set
# CONFIG_RTL8192U is not set
# CONFIG_FB_SM7XX is not set
# CONFIG_SPECTRA is not set
-# CONFIG_ZRAM is not set
# CONFIG_EASYCAP is not set
# CONFIG_SOLO6X10 is not set
# CONFIG_ACPI_QUICKSTART is not set
@@ -4896,7 +4951,6 @@ CONFIG_ALTERA_STAPL=m
# CONFIG_RTS5139 is not set
# CONFIG_NVEC_LEDS is not set
# CONFIG_VT6655 is not set
-# CONFIG_ZSMALLOC is not set
# CONFIG_RAMSTER is not set
# CONFIG_USB_WPAN_HCD is not set
# CONFIG_WIMAX_GDM72XX is not set
@@ -4913,6 +4967,7 @@ CONFIG_ALTERA_STAPL=m
# CONFIG_XILLYBUS is not set
# CONFIG_DGAP is not set
# CONFIG_DGNC is not set
+# CONFIG_RTS5208 is not set
# END OF STAGING
#
@@ -4988,6 +5043,8 @@ CONFIG_PTP_1588_CLOCK_PCH=m
CONFIG_CLEANCACHE=y
CONFIG_FRONTSWAP=y
CONFIG_ZSWAP=y
+CONFIG_ZSMALLOC=y
+# CONFIG_PGTABLE_MAPPING is not set
# CONFIG_MDIO_GPIO is not set
# CONFIG_KEYBOARD_GPIO is not set
@@ -5027,16 +5084,17 @@ CONFIG_GPIO_VIPERBOARD=m
# CONFIG_GPIO_GRGPIO is not set
# CONFIG_GPIO_PL061 is not set
# CONFIG_GPIO_BCM_KONA is not set
+# CONFIG_GPIO_SCH311X is not set
# FIXME: Why?
CONFIG_EVENT_POWER_TRACING_DEPRECATED=y
CONFIG_TEST_KSTRTOX=y
CONFIG_XZ_DEC=y
-# CONFIG_XZ_DEC_X86 is not set
-# CONFIG_XZ_DEC_POWERPC is not set
+CONFIG_XZ_DEC_X86=y
+CONFIG_XZ_DEC_POWERPC=y
# CONFIG_XZ_DEC_IA64 is not set
-# CONFIG_XZ_DEC_ARM is not set
+CONFIG_XZ_DEC_ARM=y
# CONFIG_XZ_DEC_ARMTHUMB is not set
# CONFIG_XZ_DEC_SPARC is not set
# CONFIG_XZ_DEC_TEST is not set
@@ -5059,6 +5117,8 @@ CONFIG_PSTORE_RAM=m
# CONFIG_PSTORE_CONSOLE is not set
# CONFIG_PSTORE_FTRACE is not set
+# CONFIG_TEST_MODULE is not set
+# CONFIG_TEST_USER_COPY is not set
# CONFIG_AVERAGE is not set
# CONFIG_VMXNET3 is not set
@@ -5090,10 +5150,14 @@ CONFIG_FMC_TRIVIAL=m
CONFIG_FMC_WRITE_EEPROM=m
CONFIG_FMC_CHARDEV=m
+# CONFIG_GENWQE is not set
+
# CONFIG_POWERCAP is not set
# CONFIG_HSI is not set
+# CONFIG_CPU_IDLE is not set
+
# CONFIG_ARM_ARCH_TIMER_EVTSTREAM is not set
# CONFIG_PM_DEVFREQ is not set
diff --git a/config-nodebug b/config-nodebug
index f9f43091..ee4842bf 100644
--- a/config-nodebug
+++ b/config-nodebug
@@ -26,8 +26,6 @@ CONFIG_CPUMASK_OFFSTACK=y
# CONFIG_FAIL_IO_TIMEOUT is not set
# CONFIG_FAIL_MMC_REQUEST is not set
-# CONFIG_SLUB_DEBUG_ON is not set
-
# CONFIG_LOCK_STAT is not set
# CONFIG_DEBUG_STACK_USAGE is not set
diff --git a/config-powerpc-generic b/config-powerpc-generic
index a2f0dcfe..9c0ad601 100644
--- a/config-powerpc-generic
+++ b/config-powerpc-generic
@@ -321,6 +321,7 @@ CONFIG_SERIAL_GRLIB_GAISLER_APBUART=m
# CONFIG_PPC_MPC512x is not set
# CONFIG_RTC_DRV_MPC5121 is not set
+# CONFIG_RTC_DRV_HYM8563 is not set
# CONFIG_MPC512X_DMA is not set
@@ -360,7 +361,7 @@ CONFIG_RCU_FANOUT_LEAF=16
# CONFIG_SPAPR_TCE_IOMMU is not set
# CONFIG_TRANSPARENT_HUGEPAGE is not set
-# CONFIG_PPC_DENORMALISATION is not set
+CONFIG_PPC_DENORMALISATION=y
# CONFIG_MDIO_BUS_MUX_MMIOREG is not set
# CONFIG_GPIO_ADNP is not set
# CONFIG_MFD_SYSCON is not set
diff --git a/config-powerpc64 b/config-powerpc64
index 4cefd1ae..4b8ba84a 100644
--- a/config-powerpc64
+++ b/config-powerpc64
@@ -89,6 +89,8 @@ CONFIG_NR_CPUS=1024
CONFIG_RTAS_PROC=y
CONFIG_IOMMU_VMERGE=y
CONFIG_NUMA=y
+CONFIG_NUMA_BALANCING=y
+CONFIG_NUMA_BALANCING_DEFAULT_ENABLED=y
CONFIG_PPC_64K_PAGES=y
CONFIG_PPC_SUBPAGE_PROT=y
CONFIG_SCHED_SMT=y
@@ -99,6 +101,8 @@ CONFIG_HZ_100=y
CONFIG_MEMORY_HOTREMOVE=y
+CONFIG_PPC64_SUPPORTS_MEMORY_FAILURE=y
+
CONFIG_CGROUP_HUGETLB=y
# CONFIG_MV643XX_ETH is not set
@@ -159,7 +163,8 @@ CONFIG_PSERIES_ENERGY=m
CONFIG_CPU_IDLE=y
# CONFIG_CPU_IDLE_GOV_LADDER is not set
-CONFIG_PSERIES_IDLE=y
+CONFIG_PSERIES_CPUIDLE=y
+CONFIG_POWERNV_CPUIDLE=y
CONFIG_PPC_ICSWX=y
CONFIG_IO_EVENT_IRQ=y
diff --git a/config-powerpc64p7 b/config-powerpc64p7
index 8ff01178..4fe09eee 100644
--- a/config-powerpc64p7
+++ b/config-powerpc64p7
@@ -80,6 +80,8 @@ CONFIG_NR_CPUS=1024
CONFIG_RTAS_PROC=y
CONFIG_IOMMU_VMERGE=y
CONFIG_NUMA=y
+CONFIG_NUMA_BALANCING=y
+CONFIG_NUMA_BALANCING_DEFAULT_ENABLED=y
CONFIG_PPC_64K_PAGES=y
CONFIG_PPC_SUBPAGE_PROT=y
CONFIG_SCHED_SMT=y
@@ -90,6 +92,8 @@ CONFIG_HZ_100=y
CONFIG_MEMORY_HOTREMOVE=y
+CONFIG_PPC64_SUPPORTS_MEMORY_FAILURE=y
+
CONFIG_CGROUP_HUGETLB=y
# CONFIG_MV643XX_ETH is not set
@@ -150,7 +154,8 @@ CONFIG_PSERIES_ENERGY=m
CONFIG_CPU_IDLE=y
# CONFIG_CPU_IDLE_GOV_LADDER is not set
-CONFIG_PSERIES_IDLE=y
+CONFIG_PSERIES_CPUIDLE=y
+CONFIG_POWERNV_CPUIDLE=y
CONFIG_PPC_ICSWX=y
CONFIG_IO_EVENT_IRQ=y
diff --git a/config-x86-32-generic b/config-x86-32-generic
index f3c11b3d..21fe6fe7 100644
--- a/config-x86-32-generic
+++ b/config-x86-32-generic
@@ -224,8 +224,13 @@ CONFIG_BACKLIGHT_PWM=m
# CONFIG_GPIO_ADNP is not set
# CONFIG_BACKLIGHT_OT200 is not set
# CONFIG_RTC_DRV_SNVS is not set
+# CONFIG_RTC_DRV_HYM8563 is not set
# CONFIG_OF_DISPLAY_TIMING is not set
# CONFIG_OF_VIDEOMODE is not set
# CONFIG_MLX5_INFINIBAND is not set
# CONFIG_PINCTRL_SINGLE is not set
+# CONFIG_PINCTRL_CAPRI is not set
+# CONFIG_PINCTRL_MSM8X74 is not set
+# CONFIG_COMMON_CLK_SI570 is not set
+# CONFIG_COMMON_CLK_QCOM is not set
diff --git a/config-x86-generic b/config-x86-generic
index 3d42bbcb..f6b3fa8c 100644
--- a/config-x86-generic
+++ b/config-x86-generic
@@ -41,6 +41,7 @@ CONFIG_EFI_VARS_PSTORE_DEFAULT_DISABLE=y
CONFIG_EFI_PCDP=y
CONFIG_FB_EFI=y
CONFIG_EARLY_PRINTK_EFI=y
+CONFIG_EFI_RUNTIME_MAP=y
# needs FB_SIMPLE to work correctly
# CONFIG_X86_SYSFB is not set
@@ -114,6 +115,9 @@ CONFIG_NVRAM=y
CONFIG_CRYPTO_DEV_PADLOCK=m
CONFIG_CRYPTO_DEV_PADLOCK_AES=m
CONFIG_CRYPTO_DEV_PADLOCK_SHA=m
+CONFIG_CRYPTO_DEV_CCP=y
+CONFIG_CRYPTO_DEV_CCP_DD=m
+CONFIG_CRYPTO_DEV_CCP_CRYPTO=m
CONFIG_GENERIC_ISA_DMA=y
@@ -200,6 +204,7 @@ CONFIG_COMPAL_LAPTOP=m
CONFIG_DELL_LAPTOP=m
CONFIG_CHROME_PLATFORMS=y
CONFIG_CHROMEOS_LAPTOP=m
+CONFIG_CHROMEOS_PSTORE=m
CONFIG_EEEPC_LAPTOP=m
CONFIG_FUJITSU_TABLET=m
CONFIG_FUJITSU_LAPTOP=m
@@ -216,6 +221,7 @@ CONFIG_ACER_WMI=m
CONFIG_ACERHDF=m
CONFIG_ASUS_WMI=m
CONFIG_ASUS_NB_WMI=m
+CONFIG_HP_WIRELESS=m
CONFIG_HP_WMI=m
# CONFIG_INTEL_SCU_IPC is not set
CONFIG_DELL_WMI=m
@@ -410,6 +416,7 @@ CONFIG_HP_ACCEL=m
CONFIG_SCHED_SMT=y
CONFIG_CC_STACKPROTECTOR=y
+CONFIG_CC_STACKPROTECTOR_STRONG=y
CONFIG_RELOCATABLE=y
CONFIG_HYPERV=m
@@ -446,6 +453,7 @@ CONFIG_PINCTRL_BAYTRAIL=y
# CONFIG_INTEL_POWERCLAMP is not set
CONFIG_X86_PKG_TEMP_THERMAL=m
+CONFIG_ACPI_INT3403_THERMAL=m
CONFIG_VMWARE_VMCI=m
CONFIG_VMWARE_VMCI_VSOCKETS=m
diff --git a/config-x86_64-generic b/config-x86_64-generic
index 60a25145..02883b84 100644
--- a/config-x86_64-generic
+++ b/config-x86_64-generic
@@ -37,6 +37,7 @@ CONFIG_SWIOTLB=y
# CONFIG_GART_IOMMU is not set
CONFIG_TRANSPARENT_HUGEPAGE=y
+CONFIG_TRANSPARENT_HUGEPAGE_MADVISE=y
CONFIG_CGROUP_HUGETLB=y
CONFIG_MEM_SOFT_DIRTY=y
@@ -117,6 +118,7 @@ CONFIG_XEN_DEV_EVTCHN=m
CONFIG_XEN_SYS_HYPERVISOR=y
# CONFIG_XEN_MCE_LOG is not set
# CONFIG_XEN_STUB is not set
+# CONFIG_XEN_PVH is not set
CONFIG_PROVIDE_OHCI1394_DMA_INIT=y
@@ -170,3 +172,4 @@ CONFIG_SFC_MTD=y
# Override MTD stuff because SFC_MTD needs it
CONFIG_MTD_CHAR=m
CONFIG_MTD_BLOCK=m
+
diff --git a/ipv6-addrconf-revert-if_inet6ifa_flag-format.patch b/ipv6-addrconf-revert-if_inet6ifa_flag-format.patch
deleted file mode 100644
index 1282667f..00000000
--- a/ipv6-addrconf-revert-if_inet6ifa_flag-format.patch
+++ /dev/null
@@ -1,45 +0,0 @@
-Bugzilla: 1056711
-Upstream-status: Submitted for 3.15
-
-This fixes the issue described here:
-https://bugzilla.redhat.com/show_bug.cgi?id=1056711#c5
-
-net-next commit 971a351ccbbd2b6eef136a2221da0b80aca50906
-Author: Jiri Pirko <jiri@resnulli.us>
-Date: Tue Dec 10 13:56:29 2013 +0100
-
- ipv6 addrconf: revert /proc/net/if_inet6 ifa_flag format
-
- Turned out that applications like ifconfig do not handle the change.
- So revert ifa_flag format back to 2-letter hex value.
-
- Introduced by:
- commit 479840ffdbe4242e8a25349218c8e0859223aa35
- "ipv6 addrconf: extend ifa_flags to u32"
-
-Signed-off-by: Jiri Pirko <jpirko@redhat.com>
-
-diff --git a/net/ipv6/addrconf.c b/net/ipv6/addrconf.c
-index be4dbbd..3c3425e 100644
---- a/net/ipv6/addrconf.c
-+++ b/net/ipv6/addrconf.c
-@@ -3367,12 +3367,12 @@ static void if6_seq_stop(struct seq_file *seq, void *v)
- static int if6_seq_show(struct seq_file *seq, void *v)
- {
- struct inet6_ifaddr *ifp = (struct inet6_ifaddr *)v;
-- seq_printf(seq, "%pi6 %02x %02x %02x %03x %8s\n",
-+ seq_printf(seq, "%pi6 %02x %02x %02x %02x %8s\n",
- &ifp->addr,
- ifp->idev->dev->ifindex,
- ifp->prefix_len,
- ifp->scope,
-- ifp->flags,
-+ (u8) ifp->flags,
- ifp->idev->dev->name);
- return 0;
- }
-
-_______________________________________________
-kernel mailing list
-kernel@lists.fedoraproject.org
-https://admin.fedoraproject.org/mailman/listinfo/kernel
diff --git a/ipv6-introduce-IFA_F_NOPREFIXROUTE-and-IFA_F_MANAGETEMPADDR-flags.patch b/ipv6-introduce-IFA_F_NOPREFIXROUTE-and-IFA_F_MANAGETEMPADDR-flags.patch
deleted file mode 100644
index 54d1e915..00000000
--- a/ipv6-introduce-IFA_F_NOPREFIXROUTE-and-IFA_F_MANAGETEMPADDR-flags.patch
+++ /dev/null
@@ -1,753 +0,0 @@
-This patch is made against 3.13 kernel. So it's suitable for F21 and for F20
-later on when F20 is rebased to 3.13.
-
-https://bugzilla.redhat.com/show_bug.cgi?id=1056711
-
-NetworkManager depends on IFA_F_NOPREFIXROUTE IFA_F_MANAGETEMPADDR
-in order to do SLAAC in userspace correctly.
-
-Split patches available here:
-
-http://people.redhat.com/jpirko/f21_backport_of_IFA_F_NOPREFIXROUTE_and_IFA_F_MANAGETEMPADDR/
-
-Jiri Pirko (2):
- ipv6 addrconf: extend ifa_flags to u32
- ipv6 addrconf: introduce IFA_F_MANAGETEMPADDR to tell kernel to manage
- temporary addresses
-
-Li RongQing (1):
- ipv6: unneccessary to get address prefix in addrconf_get_prefix_route
-
-Thomas Haller (2):
- ipv6 addrconf: add IFA_F_NOPREFIXROUTE flag to suppress creation of
- IP6 routes
- ipv6 addrconf: don't cleanup prefix route for IFA_F_NOPREFIXROUTE
-
-stephen hemminger (1):
- ipv6: addrconf spelling fixes
-
- include/net/addrconf.h | 4 +-
- include/net/if_inet6.h | 2 +-
- include/uapi/linux/if_addr.h | 6 +
- net/ipv6/addrconf.c | 409 +++++++++++++++++++++++++------------------
- 4 files changed, 250 insertions(+), 171 deletions(-)
-
-Signed-off-by: Jiri Pirko <jpirko@redhat.com>
-
-diff --git a/include/net/addrconf.h b/include/net/addrconf.h
-index 86505bf..e70278e 100644
---- a/include/net/addrconf.h
-+++ b/include/net/addrconf.h
-@@ -81,9 +81,9 @@ int ipv6_dev_get_saddr(struct net *net, const struct net_device *dev,
- const struct in6_addr *daddr, unsigned int srcprefs,
- struct in6_addr *saddr);
- int __ipv6_get_lladdr(struct inet6_dev *idev, struct in6_addr *addr,
-- unsigned char banned_flags);
-+ u32 banned_flags);
- int ipv6_get_lladdr(struct net_device *dev, struct in6_addr *addr,
-- unsigned char banned_flags);
-+ u32 banned_flags);
- int ipv6_rcv_saddr_equal(const struct sock *sk, const struct sock *sk2);
- void addrconf_join_solict(struct net_device *dev, const struct in6_addr *addr);
- void addrconf_leave_solict(struct inet6_dev *idev, const struct in6_addr *addr);
-diff --git a/include/net/if_inet6.h b/include/net/if_inet6.h
-index 65bb130..9650a3f 100644
---- a/include/net/if_inet6.h
-+++ b/include/net/if_inet6.h
-@@ -50,8 +50,8 @@ struct inet6_ifaddr {
-
- int state;
-
-+ __u32 flags;
- __u8 dad_probes;
-- __u8 flags;
-
- __u16 scope;
-
-diff --git a/include/uapi/linux/if_addr.h b/include/uapi/linux/if_addr.h
-index 23357ab..dea10a8 100644
---- a/include/uapi/linux/if_addr.h
-+++ b/include/uapi/linux/if_addr.h
-@@ -18,6 +18,9 @@ struct ifaddrmsg {
- * It makes no difference for normally configured broadcast interfaces,
- * but for point-to-point IFA_ADDRESS is DESTINATION address,
- * local address is supplied in IFA_LOCAL attribute.
-+ *
-+ * IFA_FLAGS is a u32 attribute that extends the u8 field ifa_flags.
-+ * If present, the value from struct ifaddrmsg will be ignored.
- */
- enum {
- IFA_UNSPEC,
-@@ -28,6 +31,7 @@ enum {
- IFA_ANYCAST,
- IFA_CACHEINFO,
- IFA_MULTICAST,
-+ IFA_FLAGS,
- __IFA_MAX,
- };
-
-@@ -44,6 +48,8 @@ enum {
- #define IFA_F_DEPRECATED 0x20
- #define IFA_F_TENTATIVE 0x40
- #define IFA_F_PERMANENT 0x80
-+#define IFA_F_MANAGETEMPADDR 0x100
-+#define IFA_F_NOPREFIXROUTE 0x200
-
- struct ifa_cacheinfo {
- __u32 ifa_prefered;
-diff --git a/net/ipv6/addrconf.c b/net/ipv6/addrconf.c
-index 4b6b720..3c4e25d 100644
---- a/net/ipv6/addrconf.c
-+++ b/net/ipv6/addrconf.c
-@@ -891,15 +891,95 @@ out:
- goto out2;
- }
-
-+enum cleanup_prefix_rt_t {
-+ CLEANUP_PREFIX_RT_NOP, /* no cleanup action for prefix route */
-+ CLEANUP_PREFIX_RT_DEL, /* delete the prefix route */
-+ CLEANUP_PREFIX_RT_EXPIRE, /* update the lifetime of the prefix route */
-+};
-+
-+/*
-+ * Check, whether the prefix for ifp would still need a prefix route
-+ * after deleting ifp. The function returns one of the CLEANUP_PREFIX_RT_*
-+ * constants.
-+ *
-+ * 1) we don't purge prefix if address was not permanent.
-+ * prefix is managed by its own lifetime.
-+ * 2) we also don't purge, if the address was IFA_F_NOPREFIXROUTE.
-+ * 3) if there are no addresses, delete prefix.
-+ * 4) if there are still other permanent address(es),
-+ * corresponding prefix is still permanent.
-+ * 5) if there are still other addresses with IFA_F_NOPREFIXROUTE,
-+ * don't purge the prefix, assume user space is managing it.
-+ * 6) otherwise, update prefix lifetime to the
-+ * longest valid lifetime among the corresponding
-+ * addresses on the device.
-+ * Note: subsequent RA will update lifetime.
-+ **/
-+static enum cleanup_prefix_rt_t
-+check_cleanup_prefix_route(struct inet6_ifaddr *ifp, unsigned long *expires)
-+{
-+ struct inet6_ifaddr *ifa;
-+ struct inet6_dev *idev = ifp->idev;
-+ unsigned long lifetime;
-+ enum cleanup_prefix_rt_t action = CLEANUP_PREFIX_RT_DEL;
-+
-+ *expires = jiffies;
-+
-+ list_for_each_entry(ifa, &idev->addr_list, if_list) {
-+ if (ifa == ifp)
-+ continue;
-+ if (!ipv6_prefix_equal(&ifa->addr, &ifp->addr,
-+ ifp->prefix_len))
-+ continue;
-+ if (ifa->flags & (IFA_F_PERMANENT | IFA_F_NOPREFIXROUTE))
-+ return CLEANUP_PREFIX_RT_NOP;
-+
-+ action = CLEANUP_PREFIX_RT_EXPIRE;
-+
-+ spin_lock(&ifa->lock);
-+
-+ lifetime = addrconf_timeout_fixup(ifa->valid_lft, HZ);
-+ /*
-+ * Note: Because this address is
-+ * not permanent, lifetime <
-+ * LONG_MAX / HZ here.
-+ */
-+ if (time_before(*expires, ifa->tstamp + lifetime * HZ))
-+ *expires = ifa->tstamp + lifetime * HZ;
-+ spin_unlock(&ifa->lock);
-+ }
-+
-+ return action;
-+}
-+
-+static void
-+cleanup_prefix_route(struct inet6_ifaddr *ifp, unsigned long expires, bool del_rt)
-+{
-+ struct rt6_info *rt;
-+
-+ rt = addrconf_get_prefix_route(&ifp->addr,
-+ ifp->prefix_len,
-+ ifp->idev->dev,
-+ 0, RTF_GATEWAY | RTF_DEFAULT);
-+ if (rt) {
-+ if (del_rt)
-+ ip6_del_rt(rt);
-+ else {
-+ if (!(rt->rt6i_flags & RTF_EXPIRES))
-+ rt6_set_expires(rt, expires);
-+ ip6_rt_put(rt);
-+ }
-+ }
-+}
-+
-+
- /* This function wants to get referenced ifp and releases it before return */
-
- static void ipv6_del_addr(struct inet6_ifaddr *ifp)
- {
-- struct inet6_ifaddr *ifa, *ifn;
-- struct inet6_dev *idev = ifp->idev;
- int state;
-- int deleted = 0, onlink = 0;
-- unsigned long expires = jiffies;
-+ enum cleanup_prefix_rt_t action = CLEANUP_PREFIX_RT_NOP;
-+ unsigned long expires;
-
- spin_lock_bh(&ifp->state_lock);
- state = ifp->state;
-@@ -913,7 +993,7 @@ static void ipv6_del_addr(struct inet6_ifaddr *ifp)
- hlist_del_init_rcu(&ifp->addr_lst);
- spin_unlock_bh(&addrconf_hash_lock);
-
-- write_lock_bh(&idev->lock);
-+ write_lock_bh(&ifp->idev->lock);
-
- if (ifp->flags&IFA_F_TEMPORARY) {
- list_del(&ifp->tmp_list);
-@@ -924,45 +1004,13 @@ static void ipv6_del_addr(struct inet6_ifaddr *ifp)
- __in6_ifa_put(ifp);
- }
-
-- list_for_each_entry_safe(ifa, ifn, &idev->addr_list, if_list) {
-- if (ifa == ifp) {
-- list_del_init(&ifp->if_list);
-- __in6_ifa_put(ifp);
-+ if (ifp->flags & IFA_F_PERMANENT && !(ifp->flags & IFA_F_NOPREFIXROUTE))
-+ action = check_cleanup_prefix_route(ifp, &expires);
-
-- if (!(ifp->flags & IFA_F_PERMANENT) || onlink > 0)
-- break;
-- deleted = 1;
-- continue;
-- } else if (ifp->flags & IFA_F_PERMANENT) {
-- if (ipv6_prefix_equal(&ifa->addr, &ifp->addr,
-- ifp->prefix_len)) {
-- if (ifa->flags & IFA_F_PERMANENT) {
-- onlink = 1;
-- if (deleted)
-- break;
-- } else {
-- unsigned long lifetime;
--
-- if (!onlink)
-- onlink = -1;
--
-- spin_lock(&ifa->lock);
--
-- lifetime = addrconf_timeout_fixup(ifa->valid_lft, HZ);
-- /*
-- * Note: Because this address is
-- * not permanent, lifetime <
-- * LONG_MAX / HZ here.
-- */
-- if (time_before(expires,
-- ifa->tstamp + lifetime * HZ))
-- expires = ifa->tstamp + lifetime * HZ;
-- spin_unlock(&ifa->lock);
-- }
-- }
-- }
-- }
-- write_unlock_bh(&idev->lock);
-+ list_del_init(&ifp->if_list);
-+ __in6_ifa_put(ifp);
-+
-+ write_unlock_bh(&ifp->idev->lock);
-
- addrconf_del_dad_timer(ifp);
-
-@@ -970,41 +1018,9 @@ static void ipv6_del_addr(struct inet6_ifaddr *ifp)
-
- inet6addr_notifier_call_chain(NETDEV_DOWN, ifp);
-
-- /*
-- * Purge or update corresponding prefix
-- *
-- * 1) we don't purge prefix here if address was not permanent.
-- * prefix is managed by its own lifetime.
-- * 2) if there're no addresses, delete prefix.
-- * 3) if there're still other permanent address(es),
-- * corresponding prefix is still permanent.
-- * 4) otherwise, update prefix lifetime to the
-- * longest valid lifetime among the corresponding
-- * addresses on the device.
-- * Note: subsequent RA will update lifetime.
-- *
-- * --yoshfuji
-- */
-- if ((ifp->flags & IFA_F_PERMANENT) && onlink < 1) {
-- struct in6_addr prefix;
-- struct rt6_info *rt;
--
-- ipv6_addr_prefix(&prefix, &ifp->addr, ifp->prefix_len);
--
-- rt = addrconf_get_prefix_route(&prefix,
-- ifp->prefix_len,
-- ifp->idev->dev,
-- 0, RTF_GATEWAY | RTF_DEFAULT);
--
-- if (rt) {
-- if (onlink == 0) {
-- ip6_del_rt(rt);
-- rt = NULL;
-- } else if (!(rt->rt6i_flags & RTF_EXPIRES)) {
-- rt6_set_expires(rt, expires);
-- }
-- }
-- ip6_rt_put(rt);
-+ if (action != CLEANUP_PREFIX_RT_NOP) {
-+ cleanup_prefix_route(ifp, expires,
-+ action == CLEANUP_PREFIX_RT_DEL);
- }
-
- /* clean up prefsrc entries */
-@@ -1024,7 +1040,7 @@ static int ipv6_create_tempaddr(struct inet6_ifaddr *ifp, struct inet6_ifaddr *i
- u32 addr_flags;
- unsigned long now = jiffies;
-
-- write_lock(&idev->lock);
-+ write_lock_bh(&idev->lock);
- if (ift) {
- spin_lock_bh(&ift->lock);
- memcpy(&addr.s6_addr[8], &ift->addr.s6_addr[8], 8);
-@@ -1036,7 +1052,7 @@ static int ipv6_create_tempaddr(struct inet6_ifaddr *ifp, struct inet6_ifaddr *i
- retry:
- in6_dev_hold(idev);
- if (idev->cnf.use_tempaddr <= 0) {
-- write_unlock(&idev->lock);
-+ write_unlock_bh(&idev->lock);
- pr_info("%s: use_tempaddr is disabled\n", __func__);
- in6_dev_put(idev);
- ret = -1;
-@@ -1046,7 +1062,7 @@ retry:
- if (ifp->regen_count++ >= idev->cnf.regen_max_retry) {
- idev->cnf.use_tempaddr = -1; /*XXX*/
- spin_unlock_bh(&ifp->lock);
-- write_unlock(&idev->lock);
-+ write_unlock_bh(&idev->lock);
- pr_warn("%s: regeneration time exceeded - disabled temporary address support\n",
- __func__);
- in6_dev_put(idev);
-@@ -1072,7 +1088,7 @@ retry:
- regen_advance = idev->cnf.regen_max_retry *
- idev->cnf.dad_transmits *
- idev->nd_parms->retrans_time / HZ;
-- write_unlock(&idev->lock);
-+ write_unlock_bh(&idev->lock);
-
- /* A temporary address is created only if this calculated Preferred
- * Lifetime is greater than REGEN_ADVANCE time units. In particular,
-@@ -1099,7 +1115,7 @@ retry:
- in6_dev_put(idev);
- pr_info("%s: retry temporary address regeneration\n", __func__);
- tmpaddr = &addr;
-- write_lock(&idev->lock);
-+ write_lock_bh(&idev->lock);
- goto retry;
- }
-
-@@ -1200,7 +1216,7 @@ static int ipv6_get_saddr_eval(struct net *net,
- * | d is scope of the destination.
- * B-d | \
- * | \ <- smaller scope is better if
-- * B-15 | \ if scope is enough for destinaion.
-+ * B-15 | \ if scope is enough for destination.
- * | ret = B - scope (-1 <= scope >= d <= 15).
- * d-C-1 | /
- * |/ <- greater is better
-@@ -1407,7 +1423,7 @@ try_nextdev:
- EXPORT_SYMBOL(ipv6_dev_get_saddr);
-
- int __ipv6_get_lladdr(struct inet6_dev *idev, struct in6_addr *addr,
-- unsigned char banned_flags)
-+ u32 banned_flags)
- {
- struct inet6_ifaddr *ifp;
- int err = -EADDRNOTAVAIL;
-@@ -1424,7 +1440,7 @@ int __ipv6_get_lladdr(struct inet6_dev *idev, struct in6_addr *addr,
- }
-
- int ipv6_get_lladdr(struct net_device *dev, struct in6_addr *addr,
-- unsigned char banned_flags)
-+ u32 banned_flags)
- {
- struct inet6_dev *idev;
- int err = -EADDRNOTAVAIL;
-@@ -2016,6 +2032,73 @@ static struct inet6_dev *addrconf_add_dev(struct net_device *dev)
- return idev;
- }
-
-+static void manage_tempaddrs(struct inet6_dev *idev,
-+ struct inet6_ifaddr *ifp,
-+ __u32 valid_lft, __u32 prefered_lft,
-+ bool create, unsigned long now)
-+{
-+ u32 flags;
-+ struct inet6_ifaddr *ift;
-+
-+ read_lock_bh(&idev->lock);
-+ /* update all temporary addresses in the list */
-+ list_for_each_entry(ift, &idev->tempaddr_list, tmp_list) {
-+ int age, max_valid, max_prefered;
-+
-+ if (ifp != ift->ifpub)
-+ continue;
-+
-+ /* RFC 4941 section 3.3:
-+ * If a received option will extend the lifetime of a public
-+ * address, the lifetimes of temporary addresses should
-+ * be extended, subject to the overall constraint that no
-+ * temporary addresses should ever remain "valid" or "preferred"
-+ * for a time longer than (TEMP_VALID_LIFETIME) or
-+ * (TEMP_PREFERRED_LIFETIME - DESYNC_FACTOR), respectively.
-+ */
-+ age = (now - ift->cstamp) / HZ;
-+ max_valid = idev->cnf.temp_valid_lft - age;
-+ if (max_valid < 0)
-+ max_valid = 0;
-+
-+ max_prefered = idev->cnf.temp_prefered_lft -
-+ idev->cnf.max_desync_factor - age;
-+ if (max_prefered < 0)
-+ max_prefered = 0;
-+
-+ if (valid_lft > max_valid)
-+ valid_lft = max_valid;
-+
-+ if (prefered_lft > max_prefered)
-+ prefered_lft = max_prefered;
-+
-+ spin_lock(&ift->lock);
-+ flags = ift->flags;
-+ ift->valid_lft = valid_lft;
-+ ift->prefered_lft = prefered_lft;
-+ ift->tstamp = now;
-+ if (prefered_lft > 0)
-+ ift->flags &= ~IFA_F_DEPRECATED;
-+
-+ spin_unlock(&ift->lock);
-+ if (!(flags&IFA_F_TENTATIVE))
-+ ipv6_ifa_notify(0, ift);
-+ }
-+
-+ if ((create || list_empty(&idev->tempaddr_list)) &&
-+ idev->cnf.use_tempaddr > 0) {
-+ /* When a new public address is created as described
-+ * in [ADDRCONF], also create a new temporary address.
-+ * Also create a temporary address if it's enabled but
-+ * no temporary address currently exists.
-+ */
-+ read_unlock_bh(&idev->lock);
-+ ipv6_create_tempaddr(ifp, NULL);
-+ } else {
-+ read_unlock_bh(&idev->lock);
-+ }
-+}
-+
- void addrconf_prefix_rcv(struct net_device *dev, u8 *opt, int len, bool sllao)
- {
- struct prefix_info *pinfo;
-@@ -2170,6 +2253,7 @@ ok:
- return;
- }
-
-+ ifp->flags |= IFA_F_MANAGETEMPADDR;
- update_lft = 0;
- create = 1;
- ifp->cstamp = jiffies;
-@@ -2178,9 +2262,8 @@ ok:
- }
-
- if (ifp) {
-- int flags;
-+ u32 flags;
- unsigned long now;
-- struct inet6_ifaddr *ift;
- u32 stored_lft;
-
- /* update lifetime (RFC2462 5.5.3 e) */
-@@ -2221,70 +2304,8 @@ ok:
- } else
- spin_unlock(&ifp->lock);
-
-- read_lock_bh(&in6_dev->lock);
-- /* update all temporary addresses in the list */
-- list_for_each_entry(ift, &in6_dev->tempaddr_list,
-- tmp_list) {
-- int age, max_valid, max_prefered;
--
-- if (ifp != ift->ifpub)
-- continue;
--
-- /*
-- * RFC 4941 section 3.3:
-- * If a received option will extend the lifetime
-- * of a public address, the lifetimes of
-- * temporary addresses should be extended,
-- * subject to the overall constraint that no
-- * temporary addresses should ever remain
-- * "valid" or "preferred" for a time longer than
-- * (TEMP_VALID_LIFETIME) or
-- * (TEMP_PREFERRED_LIFETIME - DESYNC_FACTOR),
-- * respectively.
-- */
-- age = (now - ift->cstamp) / HZ;
-- max_valid = in6_dev->cnf.temp_valid_lft - age;
-- if (max_valid < 0)
-- max_valid = 0;
--
-- max_prefered = in6_dev->cnf.temp_prefered_lft -
-- in6_dev->cnf.max_desync_factor -
-- age;
-- if (max_prefered < 0)
-- max_prefered = 0;
--
-- if (valid_lft > max_valid)
-- valid_lft = max_valid;
--
-- if (prefered_lft > max_prefered)
-- prefered_lft = max_prefered;
--
-- spin_lock(&ift->lock);
-- flags = ift->flags;
-- ift->valid_lft = valid_lft;
-- ift->prefered_lft = prefered_lft;
-- ift->tstamp = now;
-- if (prefered_lft > 0)
-- ift->flags &= ~IFA_F_DEPRECATED;
--
-- spin_unlock(&ift->lock);
-- if (!(flags&IFA_F_TENTATIVE))
-- ipv6_ifa_notify(0, ift);
-- }
--
-- if ((create || list_empty(&in6_dev->tempaddr_list)) && in6_dev->cnf.use_tempaddr > 0) {
-- /*
-- * When a new public address is created as
-- * described in [ADDRCONF], also create a new
-- * temporary address. Also create a temporary
-- * address if it's enabled but no temporary
-- * address currently exists.
-- */
-- read_unlock_bh(&in6_dev->lock);
-- ipv6_create_tempaddr(ifp, NULL);
-- } else {
-- read_unlock_bh(&in6_dev->lock);
-- }
-+ manage_tempaddrs(in6_dev, ifp, valid_lft, prefered_lft,
-+ create, now);
-
- in6_ifa_put(ifp);
- addrconf_verify(0);
-@@ -2363,10 +2384,11 @@ err_exit:
- /*
- * Manual configuration of address on an interface
- */
--static int inet6_addr_add(struct net *net, int ifindex, const struct in6_addr *pfx,
-+static int inet6_addr_add(struct net *net, int ifindex,
-+ const struct in6_addr *pfx,
- const struct in6_addr *peer_pfx,
-- unsigned int plen, __u8 ifa_flags, __u32 prefered_lft,
-- __u32 valid_lft)
-+ unsigned int plen, __u32 ifa_flags,
-+ __u32 prefered_lft, __u32 valid_lft)
- {
- struct inet6_ifaddr *ifp;
- struct inet6_dev *idev;
-@@ -2385,6 +2407,9 @@ static int inet6_addr_add(struct net *net, int ifindex, const struct in6_addr *p
- if (!valid_lft || prefered_lft > valid_lft)
- return -EINVAL;
-
-+ if (ifa_flags & IFA_F_MANAGETEMPADDR && plen != 64)
-+ return -EINVAL;
-+
- dev = __dev_get_by_index(net, ifindex);
- if (!dev)
- return -ENODEV;
-@@ -2417,14 +2442,20 @@ static int inet6_addr_add(struct net *net, int ifindex, const struct in6_addr *p
- valid_lft, prefered_lft);
-
- if (!IS_ERR(ifp)) {
-- addrconf_prefix_route(&ifp->addr, ifp->prefix_len, dev,
-- expires, flags);
-+ if (!(ifa_flags & IFA_F_NOPREFIXROUTE)) {
-+ addrconf_prefix_route(&ifp->addr, ifp->prefix_len, dev,
-+ expires, flags);
-+ }
-+
- /*
- * Note that section 3.1 of RFC 4429 indicates
- * that the Optimistic flag should not be set for
- * manually configured addresses
- */
- addrconf_dad_start(ifp);
-+ if (ifa_flags & IFA_F_MANAGETEMPADDR)
-+ manage_tempaddrs(idev, ifp, valid_lft, prefered_lft,
-+ true, jiffies);
- in6_ifa_put(ifp);
- addrconf_verify(0);
- return 0;
-@@ -2857,7 +2888,7 @@ static int addrconf_notify(struct notifier_block *this, unsigned long event,
- }
-
- /*
-- * MTU falled under IPV6_MIN_MTU.
-+ * if MTU under IPV6_MIN_MTU.
- * Stop IPv6 on this interface.
- */
-
-@@ -3366,7 +3397,7 @@ static void if6_seq_stop(struct seq_file *seq, void *v)
- static int if6_seq_show(struct seq_file *seq, void *v)
- {
- struct inet6_ifaddr *ifp = (struct inet6_ifaddr *)v;
-- seq_printf(seq, "%pi6 %02x %02x %02x %02x %8s\n",
-+ seq_printf(seq, "%pi6 %02x %02x %02x %03x %8s\n",
- &ifp->addr,
- ifp->idev->dev->ifindex,
- ifp->prefix_len,
-@@ -3593,6 +3624,7 @@ static const struct nla_policy ifa_ipv6_policy[IFA_MAX+1] = {
- [IFA_ADDRESS] = { .len = sizeof(struct in6_addr) },
- [IFA_LOCAL] = { .len = sizeof(struct in6_addr) },
- [IFA_CACHEINFO] = { .len = sizeof(struct ifa_cacheinfo) },
-+ [IFA_FLAGS] = { .len = sizeof(u32) },
- };
-
- static int
-@@ -3616,16 +3648,22 @@ inet6_rtm_deladdr(struct sk_buff *skb, struct nlmsghdr *nlh)
- return inet6_addr_del(net, ifm->ifa_index, pfx, ifm->ifa_prefixlen);
- }
-
--static int inet6_addr_modify(struct inet6_ifaddr *ifp, u8 ifa_flags,
-+static int inet6_addr_modify(struct inet6_ifaddr *ifp, u32 ifa_flags,
- u32 prefered_lft, u32 valid_lft)
- {
- u32 flags;
- clock_t expires;
- unsigned long timeout;
-+ bool was_managetempaddr;
-+ bool had_prefixroute;
-
- if (!valid_lft || (prefered_lft > valid_lft))
- return -EINVAL;
-
-+ if (ifa_flags & IFA_F_MANAGETEMPADDR &&
-+ (ifp->flags & IFA_F_TEMPORARY || ifp->prefix_len != 64))
-+ return -EINVAL;
-+
- timeout = addrconf_timeout_fixup(valid_lft, HZ);
- if (addrconf_finite_timeout(timeout)) {
- expires = jiffies_to_clock_t(timeout * HZ);
-@@ -3645,7 +3683,13 @@ static int inet6_addr_modify(struct inet6_ifaddr *ifp, u8 ifa_flags,
- }
-
- spin_lock_bh(&ifp->lock);
-- ifp->flags = (ifp->flags & ~(IFA_F_DEPRECATED | IFA_F_PERMANENT | IFA_F_NODAD | IFA_F_HOMEADDRESS)) | ifa_flags;
-+ was_managetempaddr = ifp->flags & IFA_F_MANAGETEMPADDR;
-+ had_prefixroute = ifp->flags & IFA_F_PERMANENT &&
-+ !(ifp->flags & IFA_F_NOPREFIXROUTE);
-+ ifp->flags &= ~(IFA_F_DEPRECATED | IFA_F_PERMANENT | IFA_F_NODAD |
-+ IFA_F_HOMEADDRESS | IFA_F_MANAGETEMPADDR |
-+ IFA_F_NOPREFIXROUTE);
-+ ifp->flags |= ifa_flags;
- ifp->tstamp = jiffies;
- ifp->valid_lft = valid_lft;
- ifp->prefered_lft = prefered_lft;
-@@ -3654,8 +3698,30 @@ static int inet6_addr_modify(struct inet6_ifaddr *ifp, u8 ifa_flags,
- if (!(ifp->flags&IFA_F_TENTATIVE))
- ipv6_ifa_notify(0, ifp);
-
-- addrconf_prefix_route(&ifp->addr, ifp->prefix_len, ifp->idev->dev,
-- expires, flags);
-+ if (!(ifa_flags & IFA_F_NOPREFIXROUTE)) {
-+ addrconf_prefix_route(&ifp->addr, ifp->prefix_len, ifp->idev->dev,
-+ expires, flags);
-+ } else if (had_prefixroute) {
-+ enum cleanup_prefix_rt_t action;
-+ unsigned long rt_expires;
-+
-+ write_lock_bh(&ifp->idev->lock);
-+ action = check_cleanup_prefix_route(ifp, &rt_expires);
-+ write_unlock_bh(&ifp->idev->lock);
-+
-+ if (action != CLEANUP_PREFIX_RT_NOP) {
-+ cleanup_prefix_route(ifp, rt_expires,
-+ action == CLEANUP_PREFIX_RT_DEL);
-+ }
-+ }
-+
-+ if (was_managetempaddr || ifp->flags & IFA_F_MANAGETEMPADDR) {
-+ if (was_managetempaddr && !(ifp->flags & IFA_F_MANAGETEMPADDR))
-+ valid_lft = prefered_lft = 0;
-+ manage_tempaddrs(ifp->idev, ifp, valid_lft, prefered_lft,
-+ !was_managetempaddr, jiffies);
-+ }
-+
- addrconf_verify(0);
-
- return 0;
-@@ -3671,7 +3737,7 @@ inet6_rtm_newaddr(struct sk_buff *skb, struct nlmsghdr *nlh)
- struct inet6_ifaddr *ifa;
- struct net_device *dev;
- u32 valid_lft = INFINITY_LIFE_TIME, preferred_lft = INFINITY_LIFE_TIME;
-- u8 ifa_flags;
-+ u32 ifa_flags;
- int err;
-
- err = nlmsg_parse(nlh, sizeof(*ifm), tb, IFA_MAX, ifa_ipv6_policy);
-@@ -3698,14 +3764,17 @@ inet6_rtm_newaddr(struct sk_buff *skb, struct nlmsghdr *nlh)
- if (dev == NULL)
- return -ENODEV;
-
-+ ifa_flags = tb[IFA_FLAGS] ? nla_get_u32(tb[IFA_FLAGS]) : ifm->ifa_flags;
-+
- /* We ignore other flags so far. */
-- ifa_flags = ifm->ifa_flags & (IFA_F_NODAD | IFA_F_HOMEADDRESS);
-+ ifa_flags &= IFA_F_NODAD | IFA_F_HOMEADDRESS | IFA_F_MANAGETEMPADDR |
-+ IFA_F_NOPREFIXROUTE;
-
- ifa = ipv6_get_ifaddr(net, pfx, dev, 1);
- if (ifa == NULL) {
- /*
- * It would be best to check for !NLM_F_CREATE here but
-- * userspace alreay relies on not having to provide this.
-+ * userspace already relies on not having to provide this.
- */
- return inet6_addr_add(net, ifm->ifa_index, pfx, peer_pfx,
- ifm->ifa_prefixlen, ifa_flags,
-@@ -3723,7 +3792,7 @@ inet6_rtm_newaddr(struct sk_buff *skb, struct nlmsghdr *nlh)
- return err;
- }
-
--static void put_ifaddrmsg(struct nlmsghdr *nlh, u8 prefixlen, u8 flags,
-+static void put_ifaddrmsg(struct nlmsghdr *nlh, u8 prefixlen, u32 flags,
- u8 scope, int ifindex)
- {
- struct ifaddrmsg *ifm;
-@@ -3766,7 +3835,8 @@ static inline int inet6_ifaddr_msgsize(void)
- return NLMSG_ALIGN(sizeof(struct ifaddrmsg))
- + nla_total_size(16) /* IFA_LOCAL */
- + nla_total_size(16) /* IFA_ADDRESS */
-- + nla_total_size(sizeof(struct ifa_cacheinfo));
-+ + nla_total_size(sizeof(struct ifa_cacheinfo))
-+ + nla_total_size(4) /* IFA_FLAGS */;
- }
-
- static int inet6_fill_ifaddr(struct sk_buff *skb, struct inet6_ifaddr *ifa,
-@@ -3815,6 +3885,9 @@ static int inet6_fill_ifaddr(struct sk_buff *skb, struct inet6_ifaddr *ifa,
- if (put_cacheinfo(skb, ifa->cstamp, ifa->tstamp, preferred, valid) < 0)
- goto error;
-
-+ if (nla_put_u32(skb, IFA_FLAGS, ifa->flags) < 0)
-+ goto error;
-+
- return nlmsg_end(skb, nlh);
-
- error:
-_______________________________________________
-kernel mailing list
-kernel@lists.fedoraproject.org
-https://admin.fedoraproject.org/mailman/listinfo/kernel \ No newline at end of file
diff --git a/iwlwifi-dvm-clear-IWL_STA_UCODE_INPROGRESS-when-asso.patch b/iwlwifi-dvm-clear-IWL_STA_UCODE_INPROGRESS-when-asso.patch
deleted file mode 100644
index 6db25b3d..00000000
--- a/iwlwifi-dvm-clear-IWL_STA_UCODE_INPROGRESS-when-asso.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-Bugzilla: 1065663
-Upstream-status: 3.14
-
-From ec6f678c74dbdb06a6a775bbb00f1d26c17c404b Mon Sep 17 00:00:00 2001
-From: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
-Date: Tue, 18 Feb 2014 10:30:18 +0200
-Subject: [PATCH] iwlwifi: dvm: clear IWL_STA_UCODE_INPROGRESS when assoc fails
-
-We set IWL_STA_UCODE_INPROGRESS flag when we add a station
-and clear it when we send the LQ command for it. But the LQ
-command is sent only when the association succeeds.
-If the association doesn't succeed, we would leave this flag
-set and that wouldn't indicate the station entry as vacant.
-
-This probably fixes:
-https://bugzilla.redhat.com/show_bug.cgi?id=1065663
-
-Cc: <stable@vger.kernel.org>
-Reviewed-by: Johannes Berg <johannes.berg@intel.com>
-Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
----
- drivers/net/wireless/iwlwifi/dvm/sta.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/drivers/net/wireless/iwlwifi/dvm/sta.c b/drivers/net/wireless/iwlwifi/dvm/sta.c
-index c0d070c..9cdd91c 100644
---- a/drivers/net/wireless/iwlwifi/dvm/sta.c
-+++ b/drivers/net/wireless/iwlwifi/dvm/sta.c
-@@ -590,6 +590,7 @@ void iwl_deactivate_station(struct iwl_priv *priv, const u8 sta_id,
- sizeof(priv->tid_data[sta_id][tid]));
-
- priv->stations[sta_id].used &= ~IWL_STA_DRIVER_ACTIVE;
-+ priv->stations[sta_id].used &= ~IWL_STA_UCODE_INPROGRESS;
-
- priv->num_stations--;
-
---
-1.8.5.3
-
diff --git a/kernel.spec b/kernel.spec
index 394c77da..5397bf38 100644
--- a/kernel.spec
+++ b/kernel.spec
@@ -68,13 +68,13 @@ Summary: The Linux kernel
# base_sublevel is the kernel version we're starting with and patching
# on top of -- for example, 3.1-rc7-git1 starts with a 3.0 base,
# which yields a base_sublevel of 0.
-%define base_sublevel 13
+%define base_sublevel 14
## If this is a released kernel ##
%if 0%{?released_kernel}
# Do we have a -stable update to apply?
-%define stable_update 10
+%define stable_update 1
# Is it a -stable RC?
%define stable_rc 0
# Set rpm version accordingly
@@ -685,15 +685,14 @@ Patch21010: arm-omap-load-tfp410.patch
# ARM tegra
Patch21020: arm-tegra-usb-no-reset-linux33.patch
+# Add panel support for tegra paz00
+# Backported from linux-next scheduled for 3.15
+Patch21021: arm-tegra-paz00-panel-dts.patch
+
# ARM i.MX6
# http://www.spinics.net/lists/devicetree/msg08276.html
Patch21025: arm-imx6-utilite.patch
-# am33xx (BeagleBone)
-# https://github.com/beagleboard/kernel
-# Pulled primarily from the above git repo and should be landing upstream
-Patch21031: arm-am33xx-bblack.patch
-
#rhbz 754518
Patch21235: scsi-sd_revalidate_disk-prevent-NULL-ptr-deref.patch
@@ -707,60 +706,20 @@ Patch22000: weird-root-dentry-name-debug.patch
Patch25047: drm-radeon-Disable-writeback-by-default-on-ppc.patch
-# Fix 15sec NFS mount delay
-Patch25152: sunrpc-create-a-new-dummy-pipe-for-gssd-to-hold-open.patch
-Patch25153: sunrpc-replace-gssd_running-with-more-reliable-check.patch
-Patch25154: nfs-check-gssd-running-before-krb5i-auth.patch
-#rhbz 1037793
-Patch25166: sunrpc-add-an-info-file-for-the-dummy-gssd-pipe.patch
-Patch25167: rpc_pipe-remove-the-clntXX-dir-if-creating-the-pipe-fails.patch
-Patch25168: rpc_pipe-fix-cleanup-of-dummy-gssd-directory-when-notification-fails.patch
-
-#rhbz 953211
-Patch25184: Input-ALPS-add-support-for-Dolphin-devices.patch
-
-#rhbz 1064430 1056711
-Patch25196: ipv6-introduce-IFA_F_NOPREFIXROUTE-and-IFA_F_MANAGETEMPADDR-flags.patch
-Patch25197: ipv6-addrconf-revert-if_inet6ifa_flag-format.patch
-
-#CVE-2014-0069 rhbz 1064253 1062584
-Patch25201: cifs-sanity-check-length-of-data-to-send-before-sending.patch
-
-#rhbz 1068862
-Patch25002: cifs-mask-off-top-byte-in-get_rfc1002_length.patch
-
-#CVE-2014-0102 rhbz 1071396
-Patch25026: keyring-fix.patch
-
-#rhbz 1065087
-Patch25028: tty-Fix-low_latency-BUG.patch
-
-#rhbz 1027465
-Patch25032: HID-Bluetooth-hidp-make-sure-input-buffers-are-big-e.patch
-
-#rhbz 1013466
-Patch25033: selinux-put-the-mmap-DAC-controls-before-the-MAC-controls.patch
-
#rhbz 1051748
Patch25035: Bluetooth-allocate-static-minor-for-vhci.patch
-#rhbz 1065663
-Patch25040: iwlwifi-dvm-clear-IWL_STA_UCODE_INPROGRESS-when-asso.patch
-
#rhbz 1046495
Patch25044: iwlwifi-dvm-take-mutex-when-sending-SYNC-BT-config-command.patch
-#CVE-2014-2568 rhbz 1079012 1079013
-Patch25049: nfqueue-Orphan-frags-in-nfqnl_zcopy-and-handle-error.patch
-
-#rhbz 1074235
-Patch25055: lib-percpu_counter.c-fix-bad-percpu-counter-state-du.patch
-
#CVE-2014-0155 rhbz 1081589 1085016
-Patch25057: KVM-ioapic-fix-assignment-of-ioapic-rtc_status-pending_eoi.patch
+Patch25036: KVM-ioapic-fix-assignment-of-ioapic-rtc_status-pending_eoi.patch
#rhbz 1048314
-Patch25058: 0001-HID-rmi-introduce-RMI-driver-for-Synaptics-touchpads.patch
+Patch25062: 0001-HID-rmi-introduce-RMI-driver-for-Synaptics-touchpads.patch
+
+#rhbz 1074235
+Patch25055: lib-percpu_counter.c-fix-bad-percpu-counter-state-du.patch
#CVE-2014-2851 rhbz 1086730 1087420
Patch25059: net-ipv4-current-group_info-should-be-put-after-using.patch
@@ -1321,9 +1280,9 @@ ApplyPatch arm-lpae-ax88796.patch
ApplyPatch arm-sound-soc-samsung-dma-avoid-another-64bit-division.patch
ApplyPatch arm-omap-load-tfp410.patch
ApplyPatch arm-tegra-usb-no-reset-linux33.patch
+ApplyPatch arm-tegra-paz00-panel-dts.patch
ApplyPatch arm-imx6-utilite.patch
-ApplyPatch arm-am33xx-bblack.patch
#
# bugfixes to drivers and filesystems
@@ -1388,8 +1347,6 @@ ApplyPatch crash-driver.patch
# crypto/
-# keys
-
# secure boot
ApplyPatch secure-modules.patch
ApplyPatch modsign-uefi.patch
@@ -1431,61 +1388,21 @@ ApplyPatch ath9k_rx_dma_stop_check.patch
ApplyPatch drm-radeon-Disable-writeback-by-default-on-ppc.patch
-# Fix 15sec NFS mount delay
-ApplyPatch sunrpc-create-a-new-dummy-pipe-for-gssd-to-hold-open.patch
-ApplyPatch sunrpc-replace-gssd_running-with-more-reliable-check.patch
-ApplyPatch nfs-check-gssd-running-before-krb5i-auth.patch
-#rhbz 1037793
-ApplyPatch rpc_pipe-remove-the-clntXX-dir-if-creating-the-pipe-fails.patch
-ApplyPatch sunrpc-add-an-info-file-for-the-dummy-gssd-pipe.patch
-ApplyPatch rpc_pipe-fix-cleanup-of-dummy-gssd-directory-when-notification-fails.patch
-
-#rhbz 953211
-ApplyPatch Input-ALPS-add-support-for-Dolphin-devices.patch
-
-#rhbz 1064430 1056711
-ApplyPatch ipv6-introduce-IFA_F_NOPREFIXROUTE-and-IFA_F_MANAGETEMPADDR-flags.patch
-ApplyPatch ipv6-addrconf-revert-if_inet6ifa_flag-format.patch
-
-#CVE-2014-0069 rhbz 1064253 1062584
-ApplyPatch cifs-sanity-check-length-of-data-to-send-before-sending.patch
-
-#rhbz 1068862
-ApplyPatch cifs-mask-off-top-byte-in-get_rfc1002_length.patch
-
-#CVE-2014-0102 rhbz 1071396
-ApplyPatch keyring-fix.patch
-
-#rhbz 1065087
-ApplyPatch tty-Fix-low_latency-BUG.patch
-
-#rhbz 1027465
-ApplyPatch HID-Bluetooth-hidp-make-sure-input-buffers-are-big-e.patch
-
-#rhbz 1013466
-ApplyPatch selinux-put-the-mmap-DAC-controls-before-the-MAC-controls.patch
-
#rhbz 1051748
ApplyPatch Bluetooth-allocate-static-minor-for-vhci.patch
-#rhbz 1065663
-ApplyPatch iwlwifi-dvm-clear-IWL_STA_UCODE_INPROGRESS-when-asso.patch
-
#rhbz 1046495
ApplyPatch iwlwifi-dvm-take-mutex-when-sending-SYNC-BT-config-command.patch
-#CVE-2014-2568 rhbz 1079012 1079013
-ApplyPatch nfqueue-Orphan-frags-in-nfqnl_zcopy-and-handle-error.patch
-
-#rhbz 1074235
-ApplyPatch lib-percpu_counter.c-fix-bad-percpu-counter-state-du.patch
-
#CVE-2014-0155 rhbz 1081589 1085016
ApplyPatch KVM-ioapic-fix-assignment-of-ioapic-rtc_status-pending_eoi.patch
#rhbz 1048314
ApplyPatch 0001-HID-rmi-introduce-RMI-driver-for-Synaptics-touchpads.patch
+#rhbz 1074235
+ApplyPatch lib-percpu_counter.c-fix-bad-percpu-counter-state-du.patch
+
#CVE-2014-2851 rhbz 1086730 1087420
ApplyPatch net-ipv4-current-group_info-should-be-put-after-using.patch
@@ -2303,6 +2220,9 @@ fi
# ||----w |
# || ||
%changelog
+* Mon Apr 21 2014 Justin M. Forbes <jforbes@fedoraproject.org> - 3.14.1-200
+- Linux v3.14.1
+
* Thu Apr 17 2014 Hans de Goede <hdegoede@redhat.com>
- Update min/max quirk patch to add a quirk for the ThinkPad L540 (rhbz1088588)
diff --git a/keyring-fix.patch b/keyring-fix.patch
deleted file mode 100644
index 6539144e..00000000
--- a/keyring-fix.patch
+++ /dev/null
@@ -1,17 +0,0 @@
-@@ -, +, @@
----
---- a/security/keys/keyring.c
-+++ a/security/keys/keyring.c
-@@ -1000,7 +1000,11 @@ static int keyring_detect_cycle_iterator(const void *object,
-
- kenter("{%d}", key->serial);
-
-- BUG_ON(key != ctx->match_data);
-+ /* We might get a keyring with matching index-key that is nonetheless a
-+ * different keyring. */
-+ if (key != ctx->match_data)
-+ return 0;
-+
- ctx->result = ERR_PTR(-EDEADLK);
- return 1;
- }
diff --git a/nfqueue-Orphan-frags-in-nfqnl_zcopy-and-handle-error.patch b/nfqueue-Orphan-frags-in-nfqnl_zcopy-and-handle-error.patch
deleted file mode 100644
index 107b7249..00000000
--- a/nfqueue-Orphan-frags-in-nfqnl_zcopy-and-handle-error.patch
+++ /dev/null
@@ -1,117 +0,0 @@
-Bugzilla: 1079013
-Upstream-status: Queued in netdev tree, backport for 3.13.y sent
-
-From 93f7cfcac69051641d5b10325164a0f313ef5185 Mon Sep 17 00:00:00 2001
-From: Josh Boyer <jwboyer@fedoraproject.org>
-Date: Fri, 28 Mar 2014 09:32:19 -0400
-Subject: [PATCH] nfqueue: Orphan frags in nfqnl_zcopy and handle errors
-
-Backport of upstream commit 36d5fe6a0007 to 3.13.y
-
-nfqnl_zcopy can copy elements of the frags array between skbs, but it doesn't
-orphan them. Also, it doesn't handle errors, so this patch takes care of that
-as well, and modify the caller accordingly. skb_tx_error() is also added to
-the callers so they will signal the failed delivery towards the creator of the
-skb.
-
-Signed-off-by: Zoltan Kiss <zoltan.kiss@citrix.com>
-Signed-off-by: David S. Miller <davem@davemloft.net>
-Signed-off-by: Josh Boyer <jwboyer@fedoraproject.org>
----
- net/netfilter/nfnetlink_queue_core.c | 31 ++++++++++++++++++++++---------
- 1 file changed, 22 insertions(+), 9 deletions(-)
-
-diff --git a/net/netfilter/nfnetlink_queue_core.c b/net/netfilter/nfnetlink_queue_core.c
-index 21258cf..b241654 100644
---- a/net/netfilter/nfnetlink_queue_core.c
-+++ b/net/netfilter/nfnetlink_queue_core.c
-@@ -235,22 +235,23 @@ nfqnl_flush(struct nfqnl_instance *queue, nfqnl_cmpfn cmpfn, unsigned long data)
- spin_unlock_bh(&queue->lock);
- }
-
--static void
--nfqnl_zcopy(struct sk_buff *to, const struct sk_buff *from, int len, int hlen)
-+static int
-+nfqnl_zcopy(struct sk_buff *to, struct sk_buff *from, int len, int hlen)
- {
- int i, j = 0;
- int plen = 0; /* length of skb->head fragment */
-+ int ret;
- struct page *page;
- unsigned int offset;
-
- /* dont bother with small payloads */
-- if (len <= skb_tailroom(to)) {
-- skb_copy_bits(from, 0, skb_put(to, len), len);
-- return;
-- }
-+ if (len <= skb_tailroom(to))
-+ return skb_copy_bits(from, 0, skb_put(to, len), len);
-
- if (hlen) {
-- skb_copy_bits(from, 0, skb_put(to, hlen), hlen);
-+ ret = skb_copy_bits(from, 0, skb_put(to, hlen), hlen);
-+ if (unlikely(ret))
-+ return ret;
- len -= hlen;
- } else {
- plen = min_t(int, skb_headlen(from), len);
-@@ -268,6 +269,11 @@ nfqnl_zcopy(struct sk_buff *to, const struct sk_buff *from, int len, int hlen)
- to->len += len + plen;
- to->data_len += len + plen;
-
-+ if (unlikely(skb_orphan_frags(from, GFP_ATOMIC))) {
-+ skb_tx_error(from);
-+ return -ENOMEM;
-+ }
-+
- for (i = 0; i < skb_shinfo(from)->nr_frags; i++) {
- if (!len)
- break;
-@@ -278,6 +284,8 @@ nfqnl_zcopy(struct sk_buff *to, const struct sk_buff *from, int len, int hlen)
- j++;
- }
- skb_shinfo(to)->nr_frags = j;
-+
-+ return 0;
- }
-
- static int
-@@ -374,13 +382,16 @@ nfqnl_build_packet_message(struct net *net, struct nfqnl_instance *queue,
-
- skb = nfnetlink_alloc_skb(net, size, queue->peer_portid,
- GFP_ATOMIC);
-- if (!skb)
-+ if (!skb) {
-+ skb_tx_error(entskb);
- return NULL;
-+ }
-
- nlh = nlmsg_put(skb, 0, 0,
- NFNL_SUBSYS_QUEUE << 8 | NFQNL_MSG_PACKET,
- sizeof(struct nfgenmsg), 0);
- if (!nlh) {
-+ skb_tx_error(entskb);
- kfree_skb(skb);
- return NULL;
- }
-@@ -504,13 +515,15 @@ nfqnl_build_packet_message(struct net *net, struct nfqnl_instance *queue,
- nla->nla_type = NFQA_PAYLOAD;
- nla->nla_len = nla_attr_size(data_len);
-
-- nfqnl_zcopy(skb, entskb, data_len, hlen);
-+ if (nfqnl_zcopy(skb, entskb, data_len, hlen))
-+ goto nla_put_failure;
- }
-
- nlh->nlmsg_len = skb->len;
- return skb;
-
- nla_put_failure:
-+ skb_tx_error(entskb);
- kfree_skb(skb);
- net_err_ratelimited("nf_queue: error creating packet message\n");
- return NULL;
---
-1.8.5.3
-
diff --git a/nfs-check-gssd-running-before-krb5i-auth.patch b/nfs-check-gssd-running-before-krb5i-auth.patch
deleted file mode 100644
index 1e282f0d..00000000
--- a/nfs-check-gssd-running-before-krb5i-auth.patch
+++ /dev/null
@@ -1,53 +0,0 @@
-Bugzilla: N/A
-Upstream-status: sent for 3.14
-
-From 6aa23d76a7b549521a03b63b6d5b7880ea87eab7 Mon Sep 17 00:00:00 2001
-From: Jeff Layton <jlayton@redhat.com>
-Date: Thu, 14 Nov 2013 07:25:19 -0500
-Subject: [PATCH] nfs: check if gssd is running before attempting to use krb5i
- auth in SETCLIENTID call
-
-Currently, the client will attempt to use krb5i in the SETCLIENTID call
-even if rpc.gssd isn't running. When that fails, it'll then fall back to
-RPC_AUTH_UNIX. This introduced a delay when mounting if rpc.gssd isn't
-running, and causes warning messages to pop up in the ring buffer.
-
-Check to see if rpc.gssd is running before even attempting to use krb5i
-auth, and just silently skip trying to do so if it isn't. In the event
-that the admin is actually trying to mount with krb5*, it will still
-fail at a later stage of the mount attempt.
-
-Signed-off-by: Jeff Layton <jlayton@redhat.com>
-Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
----
- fs/nfs/nfs4client.c | 7 ++++++-
- 1 file changed, 6 insertions(+), 1 deletion(-)
-
-diff --git a/fs/nfs/nfs4client.c b/fs/nfs/nfs4client.c
-index b4a160a..c1b7a80 100644
---- a/fs/nfs/nfs4client.c
-+++ b/fs/nfs/nfs4client.c
-@@ -10,6 +10,7 @@
- #include <linux/sunrpc/auth.h>
- #include <linux/sunrpc/xprt.h>
- #include <linux/sunrpc/bc_xprt.h>
-+#include <linux/sunrpc/rpc_pipe_fs.h>
- #include "internal.h"
- #include "callback.h"
- #include "delegation.h"
-@@ -370,7 +371,11 @@ struct nfs_client *nfs4_init_client(struct nfs_client *clp,
- __set_bit(NFS_CS_INFINITE_SLOTS, &clp->cl_flags);
- __set_bit(NFS_CS_DISCRTRY, &clp->cl_flags);
- __set_bit(NFS_CS_NO_RETRANS_TIMEOUT, &clp->cl_flags);
-- error = nfs_create_rpc_client(clp, timeparms, RPC_AUTH_GSS_KRB5I);
-+
-+ error = -EINVAL;
-+ if (gssd_running(clp->cl_net))
-+ error = nfs_create_rpc_client(clp, timeparms,
-+ RPC_AUTH_GSS_KRB5I);
- if (error == -EINVAL)
- error = nfs_create_rpc_client(clp, timeparms, RPC_AUTH_UNIX);
- if (error < 0)
---
-1.8.2.1
-
diff --git a/rpc_pipe-fix-cleanup-of-dummy-gssd-directory-when-notification-fails.patch b/rpc_pipe-fix-cleanup-of-dummy-gssd-directory-when-notification-fails.patch
deleted file mode 100644
index ed03f34d..00000000
--- a/rpc_pipe-fix-cleanup-of-dummy-gssd-directory-when-notification-fails.patch
+++ /dev/null
@@ -1,50 +0,0 @@
-Bugzilla: 1037793
-Upstream-status: submitted for 3.14
-
-Currently, it could leak dentry references in some cases. Make sure
-we clean up properly.
-
-Signed-off-by: Jeff Layton <jlayton@redhat.com>
----
- net/sunrpc/rpc_pipe.c | 14 +++++++++++++-
- 1 file changed, 13 insertions(+), 1 deletion(-)
-
-diff --git a/net/sunrpc/rpc_pipe.c b/net/sunrpc/rpc_pipe.c
-index 5d973b2..b185548 100644
---- a/net/sunrpc/rpc_pipe.c
-+++ b/net/sunrpc/rpc_pipe.c
-@@ -1369,6 +1369,18 @@ out:
- return pipe_dentry;
- }
-
-+static void
-+rpc_gssd_dummy_depopulate(struct dentry *pipe_dentry)
-+{
-+ struct dentry *clnt_dir = pipe_dentry->d_parent;
-+ struct dentry *gssd_dir = clnt_dir->d_parent;
-+
-+ __rpc_rmpipe(clnt_dir->d_inode, pipe_dentry);
-+ __rpc_depopulate(clnt_dir, gssd_dummy_info_file, 0, 1);
-+ __rpc_depopulate(gssd_dir, gssd_dummy_clnt_dir, 0, 1);
-+ dput(pipe_dentry);
-+}
-+
- static int
- rpc_fill_super(struct super_block *sb, void *data, int silent)
- {
-@@ -1412,7 +1424,7 @@ rpc_fill_super(struct super_block *sb, void *data, int silent)
- return 0;
-
- err_depopulate:
-- dput(gssd_dentry);
-+ rpc_gssd_dummy_depopulate(gssd_dentry);
- blocking_notifier_call_chain(&rpc_pipefs_notifier_list,
- RPC_PIPEFS_UMOUNT,
- sb);
---
-1.8.4.2
-
---
-To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
-the body of a message to majordomo@vger.kernel.org
-More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/rpc_pipe-remove-the-clntXX-dir-if-creating-the-pipe-fails.patch b/rpc_pipe-remove-the-clntXX-dir-if-creating-the-pipe-fails.patch
deleted file mode 100644
index e4b1a255..00000000
--- a/rpc_pipe-remove-the-clntXX-dir-if-creating-the-pipe-fails.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-Bugzilla: 1037793
-Upstream-status: submitted for 3.14
-
-In the event that we create the gssd/clntXX dir, but the pipe creation
-subsequently fails, then we should remove the clntXX dir before
-returning.
-
-Signed-off-by: Jeff Layton <jlayton@redhat.com>
----
- net/sunrpc/rpc_pipe.c | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/net/sunrpc/rpc_pipe.c b/net/sunrpc/rpc_pipe.c
-index 5cd7ad1..0b74c61 100644
---- a/net/sunrpc/rpc_pipe.c
-+++ b/net/sunrpc/rpc_pipe.c
-@@ -1313,6 +1313,8 @@ rpc_gssd_dummy_populate(struct dentry *root, struct rpc_pipe *pipe_data)
- }
-
- pipe_dentry = rpc_mkpipe_dentry(clnt_dentry, "gssd", NULL, pipe_data);
-+ if (IS_ERR(pipe_dentry))
-+ __rpc_depopulate(gssd_dentry, gssd_dummy_clnt_dir, 0, 1);
- out:
- dput(clnt_dentry);
- dput(gssd_dentry);
---
-1.8.4.2
-
---
-To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
-the body of a message to majordomo@vger.kernel.org
-More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/secure-modules.patch b/secure-modules.patch
index 21157c93..86bf9dc6 100644
--- a/secure-modules.patch
+++ b/secure-modules.patch
@@ -1,7 +1,7 @@
Bugzilla: N/A
Upstream-status: Fedora mustard. Replaced by securelevels, but that was nak'd
-From 0fc411ee00c81b8a18b1417d31f2736fad155d89 Mon Sep 17 00:00:00 2001
+From f212a4d8b8638a3e15e4cd76874d4fab60726752 Mon Sep 17 00:00:00 2001
From: Matthew Garrett <matthew.garrett@nebula.com>
Date: Fri, 9 Aug 2013 17:58:15 -0400
Subject: [PATCH 01/14] Add secure_modules() call
@@ -17,10 +17,10 @@ Signed-off-by: Matthew Garrett <matthew.garrett@nebula.com>
2 files changed, 17 insertions(+)
diff --git a/include/linux/module.h b/include/linux/module.h
-index 05f2447..de97e77 100644
+index 15cd6b1..30702eb 100644
--- a/include/linux/module.h
+++ b/include/linux/module.h
-@@ -515,6 +515,8 @@ int unregister_module_notifier(struct notifier_block * nb);
+@@ -512,6 +512,8 @@ int unregister_module_notifier(struct notifier_block * nb);
extern void print_modules(void);
@@ -29,7 +29,7 @@ index 05f2447..de97e77 100644
#else /* !CONFIG_MODULES... */
/* Given an address, look for it in the exception tables. */
-@@ -625,6 +627,11 @@ static inline int unregister_module_notifier(struct notifier_block * nb)
+@@ -622,6 +624,11 @@ static inline int unregister_module_notifier(struct notifier_block * nb)
static inline void print_modules(void)
{
}
@@ -42,10 +42,10 @@ index 05f2447..de97e77 100644
#ifdef CONFIG_SYSFS
diff --git a/kernel/module.c b/kernel/module.c
-index dc58274..81206c1 100644
+index f5a3b1e..644c33e 100644
--- a/kernel/module.c
+++ b/kernel/module.c
-@@ -3860,3 +3860,13 @@ void module_layout(struct module *mod,
+@@ -3831,3 +3831,13 @@ void module_layout(struct module *mod,
}
EXPORT_SYMBOL(module_layout);
#endif
@@ -60,10 +60,10 @@ index dc58274..81206c1 100644
+}
+EXPORT_SYMBOL(secure_modules);
--
-1.8.3.1
+1.8.4.2
-From b94942e55b519e70366e970cea3665c464d1b7da Mon Sep 17 00:00:00 2001
+From 394a8259d0b457495dddda8704821ec9e56ea44a Mon Sep 17 00:00:00 2001
From: Matthew Garrett <matthew.garrett@nebula.com>
Date: Thu, 8 Mar 2012 10:10:38 -0500
Subject: [PATCH 02/14] PCI: Lock down BAR access when module security is
@@ -83,7 +83,7 @@ Signed-off-by: Matthew Garrett <matthew.garrett@nebula.com>
3 files changed, 19 insertions(+), 2 deletions(-)
diff --git a/drivers/pci/pci-sysfs.c b/drivers/pci/pci-sysfs.c
-index d8eb880..a851ad6 100644
+index c91e6c1..447742e 100644
--- a/drivers/pci/pci-sysfs.c
+++ b/drivers/pci/pci-sysfs.c
@@ -29,6 +29,7 @@
@@ -94,7 +94,7 @@ index d8eb880..a851ad6 100644
#include "pci.h"
static int sysfs_initialized; /* = 0 */
-@@ -644,6 +645,9 @@ pci_write_config(struct file* filp, struct kobject *kobj,
+@@ -668,6 +669,9 @@ pci_write_config(struct file* filp, struct kobject *kobj,
loff_t init_off = off;
u8 *data = (u8*) buf;
@@ -104,7 +104,7 @@ index d8eb880..a851ad6 100644
if (off > dev->cfg_size)
return 0;
if (off + count > dev->cfg_size) {
-@@ -950,6 +954,9 @@ pci_mmap_resource(struct kobject *kobj, struct bin_attribute *attr,
+@@ -974,6 +978,9 @@ pci_mmap_resource(struct kobject *kobj, struct bin_attribute *attr,
resource_size_t start, end;
int i;
@@ -114,7 +114,7 @@ index d8eb880..a851ad6 100644
for (i = 0; i < PCI_ROM_RESOURCE; i++)
if (res == &pdev->resource[i])
break;
-@@ -1057,6 +1064,9 @@ pci_write_resource_io(struct file *filp, struct kobject *kobj,
+@@ -1081,6 +1088,9 @@ pci_write_resource_io(struct file *filp, struct kobject *kobj,
struct bin_attribute *attr, char *buf,
loff_t off, size_t count)
{
@@ -125,7 +125,7 @@ index d8eb880..a851ad6 100644
}
diff --git a/drivers/pci/proc.c b/drivers/pci/proc.c
-index cdc7836..e3d498b 100644
+index 46d1378..294fe7b 100644
--- a/drivers/pci/proc.c
+++ b/drivers/pci/proc.c
@@ -117,6 +117,9 @@ proc_bus_pci_write(struct file *file, const char __user *buf, size_t nbytes, lof
@@ -158,7 +158,7 @@ index cdc7836..e3d498b 100644
/* Make sure the caller is mapping a real resource for this device */
diff --git a/drivers/pci/syscall.c b/drivers/pci/syscall.c
-index e1c1ec5..bffbf71 100644
+index 24750a1..fa57896 100644
--- a/drivers/pci/syscall.c
+++ b/drivers/pci/syscall.c
@@ -10,6 +10,7 @@
@@ -179,10 +179,10 @@ index e1c1ec5..bffbf71 100644
dev = pci_get_bus_and_slot(bus, dfn);
--
-1.8.3.1
+1.8.4.2
-From 36f34509fe52cc49e1b1f6815a3f235040f64a03 Mon Sep 17 00:00:00 2001
+From 69532e626cece8a43c2528246e0421488b468102 Mon Sep 17 00:00:00 2001
From: Matthew Garrett <matthew.garrett@nebula.com>
Date: Thu, 8 Mar 2012 10:35:59 -0500
Subject: [PATCH 03/14] x86: Lock down IO port access when module security is
@@ -252,10 +252,10 @@ index f895a8c..1af8664 100644
return -EFAULT;
while (count-- > 0 && i < 65536) {
--
-1.8.3.1
+1.8.4.2
-From 67d9800dcf60467e076587b0aac67bcdc516cfe2 Mon Sep 17 00:00:00 2001
+From 8771ff55273e964d707b174dd0dbe433783c0254 Mon Sep 17 00:00:00 2001
From: Matthew Garrett <matthew.garrett@nebula.com>
Date: Fri, 9 Mar 2012 08:39:37 -0500
Subject: [PATCH 04/14] ACPI: Limit access to custom_method
@@ -284,10 +284,10 @@ index 12b62f2..50647b3 100644
/* parse the table header to get the table length */
if (count <= sizeof(struct acpi_table_header))
--
-1.8.3.1
+1.8.4.2
-From bdf3761573167c20c72b151c1088b24fd24869ac Mon Sep 17 00:00:00 2001
+From 7d3e3db90e1b4cf33ba4a46624ae4a68f787e5fc Mon Sep 17 00:00:00 2001
From: Matthew Garrett <matthew.garrett@nebula.com>
Date: Fri, 9 Mar 2012 08:46:50 -0500
Subject: [PATCH 05/14] asus-wmi: Restrict debugfs interface when module
@@ -339,10 +339,10 @@ index 19c313b..db18ef66 100644
1, asus->debug.method_id,
&input, &output);
--
-1.8.3.1
+1.8.4.2
-From 65d88af5a2c6bb6d01da17819d8ba782bd208837 Mon Sep 17 00:00:00 2001
+From 98ebe083d75333e269730fe374cca42ac7f08a07 Mon Sep 17 00:00:00 2001
From: Matthew Garrett <matthew.garrett@nebula.com>
Date: Fri, 9 Mar 2012 09:28:15 -0500
Subject: [PATCH 06/14] Restrict /dev/mem and /dev/kmem when module loading is
@@ -382,10 +382,10 @@ index 1af8664..61406c8 100644
unsigned long to_write = min_t(unsigned long, count,
(unsigned long)high_memory - p);
--
-1.8.3.1
+1.8.4.2
-From 4aa42b7fa5d7f79eb1d179e728ffa561fd9cf354 Mon Sep 17 00:00:00 2001
+From 71353d491c70b303a07b4e79c896e729a4f74978 Mon Sep 17 00:00:00 2001
From: Josh Boyer <jwboyer@redhat.com>
Date: Mon, 25 Jun 2012 19:57:30 -0400
Subject: [PATCH 07/14] acpi: Ignore acpi_rsdp kernel parameter when module
@@ -401,7 +401,7 @@ Signed-off-by: Josh Boyer <jwboyer@redhat.com>
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/drivers/acpi/osl.c b/drivers/acpi/osl.c
-index e5f416c..9311c00 100644
+index 54a20ff..d21d269 100644
--- a/drivers/acpi/osl.c
+++ b/drivers/acpi/osl.c
@@ -45,6 +45,7 @@
@@ -412,7 +412,7 @@ index e5f416c..9311c00 100644
#include <asm/io.h>
#include <asm/uaccess.h>
-@@ -249,7 +250,7 @@ early_param("acpi_rsdp", setup_acpi_rsdp);
+@@ -248,7 +249,7 @@ early_param("acpi_rsdp", setup_acpi_rsdp);
acpi_physical_address __init acpi_os_get_root_pointer(void)
{
#ifdef CONFIG_KEXEC
@@ -422,10 +422,10 @@ index e5f416c..9311c00 100644
#endif
--
-1.8.3.1
+1.8.4.2
-From c9e62c2ce588d98a774a3853e56d95e48b9df98c Mon Sep 17 00:00:00 2001
+From e0a6b0dd91460123d71784d531b9df26449940ae Mon Sep 17 00:00:00 2001
From: Matthew Garrett <matthew.garrett@nebula.com>
Date: Fri, 9 Aug 2013 03:33:56 -0400
Subject: [PATCH 08/14] kexec: Disable at runtime if the kernel enforces module
@@ -441,7 +441,7 @@ Signed-off-by: Matthew Garrett <matthew.garrett@nebula.com>
1 file changed, 8 insertions(+)
diff --git a/kernel/kexec.c b/kernel/kexec.c
-index 2a74f30..13601e3 100644
+index 9c97016..8ad0d38 100644
--- a/kernel/kexec.c
+++ b/kernel/kexec.c
@@ -32,6 +32,7 @@
@@ -452,7 +452,7 @@ index 2a74f30..13601e3 100644
#include <asm/page.h>
#include <asm/uaccess.h>
-@@ -943,6 +944,13 @@ SYSCALL_DEFINE4(kexec_load, unsigned long, entry, unsigned long, nr_segments,
+@@ -946,6 +947,13 @@ SYSCALL_DEFINE4(kexec_load, unsigned long, entry, unsigned long, nr_segments,
return -EPERM;
/*
@@ -467,10 +467,10 @@ index 2a74f30..13601e3 100644
* This leaves us room for future extensions.
*/
--
-1.8.3.1
+1.8.4.2
-From d0e3cb2c13dc9634849ddacf75b6f0d94147516a Mon Sep 17 00:00:00 2001
+From c340630e68e5ed4d731d60d05ef9e2ae27080b66 Mon Sep 17 00:00:00 2001
From: Matthew Garrett <matthew.garrett@nebula.com>
Date: Tue, 3 Sep 2013 11:23:29 -0400
Subject: [PATCH 09/14] uswsusp: Disable when module loading is restricted
@@ -485,7 +485,7 @@ Signed-off-by: Matthew Garrett <matthew.garrett@nebula.com>
1 file changed, 4 insertions(+)
diff --git a/kernel/power/user.c b/kernel/power/user.c
-index 957f061..e570609d 100644
+index 98d3575..efe99de 100644
--- a/kernel/power/user.c
+++ b/kernel/power/user.c
@@ -24,6 +24,7 @@
@@ -507,10 +507,10 @@ index 957f061..e570609d 100644
if (!atomic_add_unless(&snapshot_device_available, -1, 0)) {
--
-1.8.3.1
+1.8.4.2
-From b238417ed3c5a0b21bbfcac84f6c70011b8977c0 Mon Sep 17 00:00:00 2001
+From 273deda4ddec360ce67ac256b8cbdabdc5e8c51d Mon Sep 17 00:00:00 2001
From: Matthew Garrett <matthew.garrett@nebula.com>
Date: Fri, 8 Feb 2013 11:12:13 -0800
Subject: [PATCH 10/14] x86: Restrict MSR access when module loading is
@@ -552,10 +552,10 @@ index 05266b5..e2bd647 100644
err = -EFAULT;
break;
--
-1.8.3.1
+1.8.4.2
-From c3a9afb3b580b4f721d245fc5d13e378b99b9cd8 Mon Sep 17 00:00:00 2001
+From 089166c0d42f1b82988aad4f23607deb6ee531e7 Mon Sep 17 00:00:00 2001
From: Matthew Garrett <matthew.garrett@nebula.com>
Date: Fri, 9 Aug 2013 18:36:30 -0400
Subject: [PATCH 11/14] Add option to automatically enforce module signatures
@@ -591,10 +591,10 @@ index 199f453..ec38acf 100644
290/040 ALL edd_mbr_sig_buffer EDD MBR signatures
2D0/A00 ALL e820_map E820 memory map table
diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
-index 725e157..fe212ef 100644
+index 5216e28..2a147a3 100644
--- a/arch/x86/Kconfig
+++ b/arch/x86/Kconfig
-@@ -1604,6 +1604,16 @@ config EFI_STUB
+@@ -1582,6 +1582,16 @@ config EFI_STUB
See Documentation/efi-stub.txt for more information.
@@ -673,10 +673,10 @@ index a7677ba..4e172e9 100644
setup_efi_pci(boot_params);
diff --git a/arch/x86/include/uapi/asm/bootparam.h b/arch/x86/include/uapi/asm/bootparam.h
-index 9c3733c..a7ba210 100644
+index 225b098..90dbfb7 100644
--- a/arch/x86/include/uapi/asm/bootparam.h
+++ b/arch/x86/include/uapi/asm/bootparam.h
-@@ -131,7 +131,8 @@ struct boot_params {
+@@ -133,7 +133,8 @@ struct boot_params {
__u8 eddbuf_entries; /* 0x1e9 */
__u8 edd_mbr_sig_buf_entries; /* 0x1ea */
__u8 kbd_status; /* 0x1eb */
@@ -687,10 +687,10 @@ index 9c3733c..a7ba210 100644
* The sentinel is set to a nonzero value (0xff) in header.S.
*
diff --git a/arch/x86/kernel/setup.c b/arch/x86/kernel/setup.c
-index 918d489..fe429c1 100644
+index 182b3f9..ab6cc9e 100644
--- a/arch/x86/kernel/setup.c
+++ b/arch/x86/kernel/setup.c
-@@ -1127,6 +1127,12 @@ void __init setup_arch(char **cmdline_p)
+@@ -1129,6 +1129,12 @@ void __init setup_arch(char **cmdline_p)
io_delay_init();
@@ -704,7 +704,7 @@ index 918d489..fe429c1 100644
* Parse the ACPI tables for possible boot-time SMP configuration.
*/
diff --git a/include/linux/module.h b/include/linux/module.h
-index de97e77..d69fe19 100644
+index 30702eb..3eb0f52 100644
--- a/include/linux/module.h
+++ b/include/linux/module.h
@@ -190,6 +190,12 @@ const struct exception_table_entry *search_exception_tables(unsigned long add);
@@ -721,10 +721,10 @@ index de97e77..d69fe19 100644
extern int modules_disabled; /* for sysctl */
diff --git a/kernel/module.c b/kernel/module.c
-index 81206c1..e1428f0 100644
+index 644c33e..92b73b1 100644
--- a/kernel/module.c
+++ b/kernel/module.c
-@@ -3861,6 +3861,13 @@ void module_layout(struct module *mod,
+@@ -3832,6 +3832,13 @@ void module_layout(struct module *mod,
EXPORT_SYMBOL(module_layout);
#endif
@@ -739,10 +739,10 @@ index 81206c1..e1428f0 100644
{
#ifdef CONFIG_MODULE_SIG
--
-1.8.3.1
+1.8.4.2
-From 27a1aa77c7fbaaae8c6a776190a38dcbf3c3d6d2 Mon Sep 17 00:00:00 2001
+From e9ad6bd405fa01b7dd52d8c75b9dc91ae52e131d Mon Sep 17 00:00:00 2001
From: Josh Boyer <jwboyer@redhat.com>
Date: Tue, 5 Feb 2013 19:25:05 -0500
Subject: [PATCH 12/14] efi: Disable secure boot if shim is in insecure mode
@@ -798,10 +798,10 @@ index 4e172e9..4905f4d 100644
}
--
-1.8.3.1
+1.8.4.2
-From 2a445ca2c187da4497ef5f68f111574fd2b0d419 Mon Sep 17 00:00:00 2001
+From f9f355d5e58c1503bb7c03d92c9e89267e0f46ad Mon Sep 17 00:00:00 2001
From: Josh Boyer <jwboyer@fedoraproject.org>
Date: Tue, 27 Aug 2013 13:28:43 -0400
Subject: [PATCH 13/14] efi: Make EFI_SECURE_BOOT_SIG_ENFORCE depend on EFI
@@ -815,10 +815,10 @@ Signed-off-by: Josh Boyer <jwboyer@fedoraproject.org>
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
-index fe212ef..bf83fd3 100644
+index 2a147a3..9e644d5 100644
--- a/arch/x86/Kconfig
+++ b/arch/x86/Kconfig
-@@ -1605,7 +1605,8 @@ config EFI_STUB
+@@ -1583,7 +1583,8 @@ config EFI_STUB
See Documentation/efi-stub.txt for more information.
config EFI_SECURE_BOOT_SIG_ENFORCE
@@ -829,10 +829,10 @@ index fe212ef..bf83fd3 100644
---help---
UEFI Secure Boot provides a mechanism for ensuring that the
--
-1.8.3.1
+1.8.4.2
-From b1c533cc1d1ca7a03497cc4f2e1b029bde95633c Mon Sep 17 00:00:00 2001
+From a30576a9db583213474b74360c5869e8882e6ed7 Mon Sep 17 00:00:00 2001
From: Josh Boyer <jwboyer@fedoraproject.org>
Date: Tue, 27 Aug 2013 13:33:03 -0400
Subject: [PATCH 14/14] efi: Add EFI_SECURE_BOOT bit
@@ -847,10 +847,10 @@ Signed-off-by: Josh Boyer <jwboyer@fedoraproject.org>
2 files changed, 3 insertions(+)
diff --git a/arch/x86/kernel/setup.c b/arch/x86/kernel/setup.c
-index fe429c1..469fbf0 100644
+index ab6cc9e..99933cd 100644
--- a/arch/x86/kernel/setup.c
+++ b/arch/x86/kernel/setup.c
-@@ -1129,7 +1129,9 @@ void __init setup_arch(char **cmdline_p)
+@@ -1131,7 +1131,9 @@ void __init setup_arch(char **cmdline_p)
#ifdef CONFIG_EFI_SECURE_BOOT_SIG_ENFORCE
if (boot_params.secure_boot) {
@@ -861,17 +861,17 @@ index fe429c1..469fbf0 100644
#endif
diff --git a/include/linux/efi.h b/include/linux/efi.h
-index bc5687d..b010a2e 100644
+index 0a819e7..0c1d367 100644
--- a/include/linux/efi.h
+++ b/include/linux/efi.h
-@@ -653,6 +653,7 @@ extern int __init efi_setup_pcdp_console(char *);
- #define EFI_RUNTIME_SERVICES 3 /* Can we use runtime services? */
+@@ -657,6 +657,7 @@ extern int __init efi_setup_pcdp_console(char *);
#define EFI_MEMMAP 4 /* Can we use EFI memory map? */
#define EFI_64BIT 5 /* Is the firmware 64-bit? */
-+#define EFI_SECURE_BOOT 6 /* Are we in Secure Boot mode? */
+ #define EFI_ARCH_1 6 /* First arch-specific bit */
++#define EFI_SECURE_BOOT 7 /* Are we in Secure Boot mode? */
#ifdef CONFIG_EFI
# ifdef CONFIG_X86
--
-1.8.3.1
+1.8.4.2
diff --git a/selinux-put-the-mmap-DAC-controls-before-the-MAC-controls.patch b/selinux-put-the-mmap-DAC-controls-before-the-MAC-controls.patch
deleted file mode 100644
index 31e45488..00000000
--- a/selinux-put-the-mmap-DAC-controls-before-the-MAC-controls.patch
+++ /dev/null
@@ -1,94 +0,0 @@
-Bugzilla: 1013466
-Upstream-status: queued for 3.14/3.15? http://marc.info/?l=selinux&m=139351174702148&w=2
-
-It turns out that doing the SELinux MAC checks for mmap() before the
-DAC checks was causing users and the SELinux policy folks headaches
-as users were seeing a lot of SELinux AVC denials for the
-memprotect:mmap_zero permission that would have also been denied by
-the normal DAC capability checks (CAP_SYS_RAWIO).
-
-Example:
-
- # cat mmap_test.c
- #include <stdlib.h>
- #include <stdio.h>
- #include <errno.h>
- #include <sys/mman.h>
-
- int main(int argc, char *argv[])
- {
- int rc;
- void *mem;
-
- mem = mmap(0x0, 4096,
- PROT_READ | PROT_WRITE,
- MAP_PRIVATE | MAP_ANONYMOUS | MAP_FIXED, -1, 0);
- if (mem == MAP_FAILED)
- return errno;
- printf("mem = %p\n", mem);
- munmap(mem, 4096);
-
- return 0;
- }
- # gcc -g -O0 -o mmap_test mmap_test.c
- # ./mmap_test
- mem = (nil)
- # ausearch -m AVC | grep mmap_zero
- type=AVC msg=audit(...): avc: denied { mmap_zero }
- for pid=1025 comm="mmap_test"
- scontext=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
- tcontext=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
- tclass=memprotect
-
-This patch corrects things so that when the above example is run by a
-user without CAP_SYS_RAWIO the SELinux AVC is no longer generated as
-the DAC capability check fails before the SELinux permission check.
-
-Signed-off-by: Paul Moore <pmoore@redhat.com>
----
- security/selinux/hooks.c | 20 ++++++++------------
- 1 file changed, 8 insertions(+), 12 deletions(-)
-
-diff --git a/security/selinux/hooks.c b/security/selinux/hooks.c
-index 57b0b49..e3664ae 100644
---- a/security/selinux/hooks.c
-+++ b/security/selinux/hooks.c
-@@ -3205,24 +3205,20 @@ error:
-
- static int selinux_mmap_addr(unsigned long addr)
- {
-- int rc = 0;
-- u32 sid = current_sid();
-+ int rc;
-+
-+ /* do DAC check on address space usage */
-+ rc = cap_mmap_addr(addr);
-+ if (rc)
-+ return rc;
-
-- /*
-- * notice that we are intentionally putting the SELinux check before
-- * the secondary cap_file_mmap check. This is such a likely attempt
-- * at bad behaviour/exploit that we always want to get the AVC, even
-- * if DAC would have also denied the operation.
-- */
- if (addr < CONFIG_LSM_MMAP_MIN_ADDR) {
-+ u32 sid = current_sid();
- rc = avc_has_perm(sid, sid, SECCLASS_MEMPROTECT,
- MEMPROTECT__MMAP_ZERO, NULL);
-- if (rc)
-- return rc;
- }
-
-- /* do DAC check on address space usage */
-- return cap_mmap_addr(addr);
-+ return rc;
- }
-
- static int selinux_mmap_file(struct file *file, unsigned long reqprot,
-
-_______________________________________________
-Selinux mailing list
-Selinux@tycho.nsa.gov
-To unsubscribe, send email to Selinux-leave@tycho.nsa.gov.
-To get help, send an email containing "help" to Selinux-request@tycho.nsa.gov.
diff --git a/sources b/sources
index 919239f9..1a5e413e 100644
--- a/sources
+++ b/sources
@@ -1,2 +1,2 @@
-0ecbaf65c00374eb4a826c2f9f37606f linux-3.13.tar.xz
-dcf42b5013a7831d02168fd3eda5cce2 patch-3.13.10.xz
+b621207b3f6ecbb67db18b13258f8ea8 linux-3.14.tar.xz
+2526eb95793ecc1c22d7e1428ef23cdc patch-3.14.1.xz
diff --git a/sunrpc-add-an-info-file-for-the-dummy-gssd-pipe.patch b/sunrpc-add-an-info-file-for-the-dummy-gssd-pipe.patch
deleted file mode 100644
index dd3b5ba2..00000000
--- a/sunrpc-add-an-info-file-for-the-dummy-gssd-pipe.patch
+++ /dev/null
@@ -1,96 +0,0 @@
-Bugzilla: 1037793
-Upstream-status: submitted for 3.14
-
-rpc.gssd expects to see an "info" file in each clntXX dir. Since adding
-the dummy gssd pipe, users that run rpc.gssd see a lot of these messages
-spamming the logs:
-
- rpc.gssd[508]: ERROR: can't open /var/lib/nfs/rpc_pipefs/gssd/clntXX/info: No such file or directory
- rpc.gssd[508]: ERROR: failed to read service info
-
-Add a dummy gssd/clntXX/info file to help silence these messages.
-
-Signed-off-by: Jeff Layton <jlayton@redhat.com>
----
- net/sunrpc/rpc_pipe.c | 50 +++++++++++++++++++++++++++++++++++++++++++++++++-
- 1 file changed, 49 insertions(+), 1 deletion(-)
-
-diff --git a/net/sunrpc/rpc_pipe.c b/net/sunrpc/rpc_pipe.c
-index 0b74c61..5d973b2 100644
---- a/net/sunrpc/rpc_pipe.c
-+++ b/net/sunrpc/rpc_pipe.c
-@@ -17,6 +17,7 @@
- #include <linux/fsnotify.h>
- #include <linux/kernel.h>
- #include <linux/rcupdate.h>
-+#include <linux/utsname.h>
-
- #include <asm/ioctls.h>
- #include <linux/poll.h>
-@@ -1275,6 +1276,44 @@ static const struct rpc_pipe_ops gssd_dummy_pipe_ops = {
- .downcall = dummy_downcall,
- };
-
-+/*
-+ * Here we present a bogus "info" file to keep rpc.gssd happy. We don't expect
-+ * that it will ever use this info to handle an upcall, but rpc.gssd expects
-+ * that this file will be there and have a certain format.
-+ */
-+static int
-+rpc_show_dummy_info(struct seq_file *m, void *v)
-+{
-+ seq_printf(m, "RPC server: %s\n", utsname()->nodename);
-+ seq_printf(m, "service: foo (1) version 0\n");
-+ seq_printf(m, "address: 127.0.0.1\n");
-+ seq_printf(m, "protocol: tcp\n");
-+ seq_printf(m, "port: 0\n");
-+ return 0;
-+}
-+
-+static int
-+rpc_dummy_info_open(struct inode *inode, struct file *file)
-+{
-+ return single_open(file, rpc_show_dummy_info, NULL);
-+}
-+
-+static const struct file_operations rpc_dummy_info_operations = {
-+ .owner = THIS_MODULE,
-+ .open = rpc_dummy_info_open,
-+ .read = seq_read,
-+ .llseek = seq_lseek,
-+ .release = single_release,
-+};
-+
-+static const struct rpc_filelist gssd_dummy_info_file[] = {
-+ [0] = {
-+ .name = "info",
-+ .i_fop = &rpc_dummy_info_operations,
-+ .mode = S_IFREG | S_IRUSR,
-+ },
-+};
-+
- /**
- * rpc_gssd_dummy_populate - create a dummy gssd pipe
- * @root: root of the rpc_pipefs filesystem
-@@ -1312,9 +1351,18 @@ rpc_gssd_dummy_populate(struct dentry *root, struct rpc_pipe *pipe_data)
- goto out;
- }
-
-+ ret = rpc_populate(clnt_dentry, gssd_dummy_info_file, 0, 1, NULL);
-+ if (ret) {
-+ __rpc_depopulate(gssd_dentry, gssd_dummy_clnt_dir, 0, 1);
-+ pipe_dentry = ERR_PTR(ret);
-+ goto out;
-+ }
-+
- pipe_dentry = rpc_mkpipe_dentry(clnt_dentry, "gssd", NULL, pipe_data);
-- if (IS_ERR(pipe_dentry))
-+ if (IS_ERR(pipe_dentry)) {
-+ __rpc_depopulate(clnt_dentry, gssd_dummy_info_file, 0, 1);
- __rpc_depopulate(gssd_dentry, gssd_dummy_clnt_dir, 0, 1);
-+ }
- out:
- dput(clnt_dentry);
- dput(gssd_dentry);
---
-1.8.4.2
diff --git a/sunrpc-create-a-new-dummy-pipe-for-gssd-to-hold-open.patch b/sunrpc-create-a-new-dummy-pipe-for-gssd-to-hold-open.patch
deleted file mode 100644
index 805498a7..00000000
--- a/sunrpc-create-a-new-dummy-pipe-for-gssd-to-hold-open.patch
+++ /dev/null
@@ -1,233 +0,0 @@
-Bugzilla: N/A
-Upstream-status: queued in NFS git tree (for 3.13/3.14?)
-
-rpc.gssd will naturally hold open any pipe named */clnt*/gssd that shows
-up under rpc_pipefs. That behavior gives us a reliable mechanism to tell
-whether it's actually running or not.
-
-Create a new toplevel "gssd" directory in rpc_pipefs when it's mounted.
-Under that directory create another directory called "clntXX", and then
-within that a pipe called "gssd".
-
-We'll never send an upcall along that pipe, and any downcall written to
-it will just return -EINVAL.
-
-Signed-off-by: Jeff Layton <jlayton@redhat.com>
-Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
----
- include/linux/sunrpc/rpc_pipe_fs.h | 3 +-
- net/sunrpc/netns.h | 1 +
- net/sunrpc/rpc_pipe.c | 93 ++++++++++++++++++++++++++++++++++-
- net/sunrpc/sunrpc_syms.c | 8 +++-
- 4 files changed, 100 insertions(+), 5 deletions(-)
-
-diff -up linux-3.11.9-200.fc19.x86_64/include/linux/sunrpc/rpc_pipe_fs.h.orig linux-3.11.9-200.fc19.x86_64/include/linux/sunrpc/rpc_pipe_fs.h
---- linux-3.11.9-200.fc19.x86_64/include/linux/sunrpc/rpc_pipe_fs.h.orig 2013-09-02 16:46:10.000000000 -0400
-+++ linux-3.11.9-200.fc19.x86_64/include/linux/sunrpc/rpc_pipe_fs.h 2013-11-21 10:11:17.893026000 -0500
-@@ -64,7 +64,8 @@ enum {
-
- extern struct dentry *rpc_d_lookup_sb(const struct super_block *sb,
- const unsigned char *dir_name);
--extern void rpc_pipefs_init_net(struct net *net);
-+extern int rpc_pipefs_init_net(struct net *net);
-+extern void rpc_pipefs_exit_net(struct net *net);
- extern struct super_block *rpc_get_sb_net(const struct net *net);
- extern void rpc_put_sb_net(const struct net *net);
-
-diff -up linux-3.11.9-200.fc19.x86_64/net/sunrpc/netns.h.orig linux-3.11.9-200.fc19.x86_64/net/sunrpc/netns.h
---- linux-3.11.9-200.fc19.x86_64/net/sunrpc/netns.h.orig 2013-09-02 16:46:10.000000000 -0400
-+++ linux-3.11.9-200.fc19.x86_64/net/sunrpc/netns.h 2013-11-21 10:11:17.897029000 -0500
-@@ -14,6 +14,7 @@ struct sunrpc_net {
- struct cache_detail *rsi_cache;
-
- struct super_block *pipefs_sb;
-+ struct rpc_pipe *gssd_dummy;
- struct mutex pipefs_sb_lock;
-
- struct list_head all_clients;
-diff -up linux-3.11.9-200.fc19.x86_64/net/sunrpc/rpc_pipe.c.orig linux-3.11.9-200.fc19.x86_64/net/sunrpc/rpc_pipe.c
---- linux-3.11.9-200.fc19.x86_64/net/sunrpc/rpc_pipe.c.orig 2013-09-02 16:46:10.000000000 -0400
-+++ linux-3.11.9-200.fc19.x86_64/net/sunrpc/rpc_pipe.c 2013-11-21 10:11:17.903026000 -0500
-@@ -38,7 +38,7 @@
- #define NET_NAME(net) ((net == &init_net) ? " (init_net)" : "")
-
- static struct file_system_type rpc_pipe_fs_type;
--
-+static const struct rpc_pipe_ops gssd_dummy_pipe_ops;
-
- static struct kmem_cache *rpc_inode_cachep __read_mostly;
-
-@@ -1019,6 +1019,7 @@ enum {
- RPCAUTH_nfsd4_cb,
- RPCAUTH_cache,
- RPCAUTH_nfsd,
-+ RPCAUTH_gssd,
- RPCAUTH_RootEOF
- };
-
-@@ -1055,6 +1056,10 @@ static const struct rpc_filelist files[]
- .name = "nfsd",
- .mode = S_IFDIR | S_IRUGO | S_IXUGO,
- },
-+ [RPCAUTH_gssd] = {
-+ .name = "gssd",
-+ .mode = S_IFDIR | S_IRUGO | S_IXUGO,
-+ },
- };
-
- /*
-@@ -1068,13 +1073,25 @@ struct dentry *rpc_d_lookup_sb(const str
- }
- EXPORT_SYMBOL_GPL(rpc_d_lookup_sb);
-
--void rpc_pipefs_init_net(struct net *net)
-+int rpc_pipefs_init_net(struct net *net)
- {
- struct sunrpc_net *sn = net_generic(net, sunrpc_net_id);
-
-+ sn->gssd_dummy = rpc_mkpipe_data(&gssd_dummy_pipe_ops, 0);
-+ if (IS_ERR(sn->gssd_dummy))
-+ return PTR_ERR(sn->gssd_dummy);
-+
- mutex_init(&sn->pipefs_sb_lock);
- sn->gssd_running = 1;
- sn->pipe_version = -1;
-+ return 0;
-+}
-+
-+void rpc_pipefs_exit_net(struct net *net)
-+{
-+ struct sunrpc_net *sn = net_generic(net, sunrpc_net_id);
-+
-+ rpc_destroy_pipe_data(sn->gssd_dummy);
- }
-
- /*
-@@ -1104,11 +1121,73 @@ void rpc_put_sb_net(const struct net *ne
- }
- EXPORT_SYMBOL_GPL(rpc_put_sb_net);
-
-+static const struct rpc_filelist gssd_dummy_clnt_dir[] = {
-+ [0] = {
-+ .name = "clntXX",
-+ .mode = S_IFDIR | S_IRUGO | S_IXUGO,
-+ },
-+};
-+
-+static ssize_t
-+dummy_downcall(struct file *filp, const char __user *src, size_t len)
-+{
-+ return -EINVAL;
-+}
-+
-+static const struct rpc_pipe_ops gssd_dummy_pipe_ops = {
-+ .upcall = rpc_pipe_generic_upcall,
-+ .downcall = dummy_downcall,
-+};
-+
-+/**
-+ * rpc_gssd_dummy_populate - create a dummy gssd pipe
-+ * @root: root of the rpc_pipefs filesystem
-+ * @pipe_data: pipe data created when netns is initialized
-+ *
-+ * Create a dummy set of directories and a pipe that gssd can hold open to
-+ * indicate that it is up and running.
-+ */
-+static struct dentry *
-+rpc_gssd_dummy_populate(struct dentry *root, struct rpc_pipe *pipe_data)
-+{
-+ int ret = 0;
-+ struct dentry *gssd_dentry;
-+ struct dentry *clnt_dentry = NULL;
-+ struct dentry *pipe_dentry = NULL;
-+ struct qstr q = QSTR_INIT(files[RPCAUTH_gssd].name,
-+ strlen(files[RPCAUTH_gssd].name));
-+
-+ /* We should never get this far if "gssd" doesn't exist */
-+ gssd_dentry = d_hash_and_lookup(root, &q);
-+ if (!gssd_dentry)
-+ return ERR_PTR(-ENOENT);
-+
-+ ret = rpc_populate(gssd_dentry, gssd_dummy_clnt_dir, 0, 1, NULL);
-+ if (ret) {
-+ pipe_dentry = ERR_PTR(ret);
-+ goto out;
-+ }
-+
-+ q.name = gssd_dummy_clnt_dir[0].name;
-+ q.len = strlen(gssd_dummy_clnt_dir[0].name);
-+ clnt_dentry = d_hash_and_lookup(gssd_dentry, &q);
-+ if (!clnt_dentry) {
-+ pipe_dentry = ERR_PTR(-ENOENT);
-+ goto out;
-+ }
-+
-+ pipe_dentry = rpc_mkpipe_dentry(clnt_dentry, "gssd", NULL, pipe_data);
-+out:
-+ dput(clnt_dentry);
-+ dput(gssd_dentry);
-+ return pipe_dentry;
-+}
-+
- static int
- rpc_fill_super(struct super_block *sb, void *data, int silent)
- {
- struct inode *inode;
-- struct dentry *root;
-+ struct dentry *root, *gssd_dentry;
- struct net *net = data;
- struct sunrpc_net *sn = net_generic(net, sunrpc_net_id);
- int err;
-@@ -1126,6 +1205,13 @@ rpc_fill_super(struct super_block *sb, v
- return -ENOMEM;
- if (rpc_populate(root, files, RPCAUTH_lockd, RPCAUTH_RootEOF, NULL))
- return -ENOMEM;
-+
-+ gssd_dentry = rpc_gssd_dummy_populate(root, sn->gssd_dummy);
-+ if (IS_ERR(gssd_dentry)) {
-+ __rpc_depopulate(root, files, RPCAUTH_lockd, RPCAUTH_RootEOF);
-+ return PTR_ERR(gssd_dentry);
-+ }
-+
- dprintk("RPC: sending pipefs MOUNT notification for net %p%s\n",
- net, NET_NAME(net));
- mutex_lock(&sn->pipefs_sb_lock);
-@@ -1140,6 +1226,7 @@ rpc_fill_super(struct super_block *sb, v
- return 0;
-
- err_depopulate:
-+ dput(gssd_dentry);
- blocking_notifier_call_chain(&rpc_pipefs_notifier_list,
- RPC_PIPEFS_UMOUNT,
- sb);
-diff -up linux-3.11.9-200.fc19.x86_64/net/sunrpc/sunrpc_syms.c.orig linux-3.11.9-200.fc19.x86_64/net/sunrpc/sunrpc_syms.c
---- linux-3.11.9-200.fc19.x86_64/net/sunrpc/sunrpc_syms.c.orig 2013-09-02 16:46:10.000000000 -0400
-+++ linux-3.11.9-200.fc19.x86_64/net/sunrpc/sunrpc_syms.c 2013-11-21 10:11:17.908026000 -0500
-@@ -44,12 +44,17 @@ static __net_init int sunrpc_init_net(st
- if (err)
- goto err_unixgid;
-
-- rpc_pipefs_init_net(net);
-+ err = rpc_pipefs_init_net(net);
-+ if (err)
-+ goto err_pipefs;
-+
- INIT_LIST_HEAD(&sn->all_clients);
- spin_lock_init(&sn->rpc_client_lock);
- spin_lock_init(&sn->rpcb_clnt_lock);
- return 0;
-
-+err_pipefs:
-+ unix_gid_cache_destroy(net);
- err_unixgid:
- ip_map_cache_destroy(net);
- err_ipmap:
-@@ -60,6 +65,7 @@ err_proc:
-
- static __net_exit void sunrpc_exit_net(struct net *net)
- {
-+ rpc_pipefs_exit_net(net);
- unix_gid_cache_destroy(net);
- ip_map_cache_destroy(net);
- rpc_proc_exit(net);
-
diff --git a/sunrpc-replace-gssd_running-with-more-reliable-check.patch b/sunrpc-replace-gssd_running-with-more-reliable-check.patch
deleted file mode 100644
index 8cd5c009..00000000
--- a/sunrpc-replace-gssd_running-with-more-reliable-check.patch
+++ /dev/null
@@ -1,139 +0,0 @@
-Bugzilla: N/A
-Upstream-status: queued in NFS git tree (for 3.13/3.14?)
-
-Now that we have a more reliable method to tell if gssd is running, we
-can replace the sn->gssd_running flag with a function that will query to
-see if it's up and running.
-
-There's also no need to attempt an upcall that we know will fail, so
-just return -EACCES if gssd isn't running. Finally, fix the warn_gss()
-message not to claim that that the upcall timed out since we don't
-necesarily perform one now when gssd isn't running, and remove the
-extraneous newline from the message.
-
-Signed-off-by: Jeff Layton <jlayton@redhat.com>
-Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
----
- Fixed up to apply to 3.12.1 by Josh Boyer <jwboyer@fedoraproject.org>
-
- include/linux/sunrpc/rpc_pipe_fs.h | 2 ++
- net/sunrpc/auth_gss/auth_gss.c | 17 +++++++----------
- net/sunrpc/netns.h | 2 --
- net/sunrpc/rpc_pipe.c | 14 ++++++++++----
- 4 files changed, 19 insertions(+), 16 deletions(-)
-
-diff --git a/include/linux/sunrpc/rpc_pipe_fs.h b/include/linux/sunrpc/rpc_pipe_fs.h
-index 85f1342..7f490be 100644
---- a/include/linux/sunrpc/rpc_pipe_fs.h
-+++ b/include/linux/sunrpc/rpc_pipe_fs.h
-@@ -131,5 +131,7 @@ extern int rpc_unlink(struct dentry *);
- extern int register_rpc_pipefs(void);
- extern void unregister_rpc_pipefs(void);
-
-+extern bool gssd_running(struct net *net);
-+
- #endif
- #endif
-diff --git a/net/sunrpc/auth_gss/auth_gss.c b/net/sunrpc/auth_gss/auth_gss.c
-index 0846566..1ada878 100644
---- a/net/sunrpc/auth_gss/auth_gss.c
-+++ b/net/sunrpc/auth_gss/auth_gss.c
-@@ -517,8 +517,7 @@ static void warn_gssd(void)
- unsigned long now = jiffies;
-
- if (time_after(now, ratelimit)) {
-- printk(KERN_WARNING "RPC: AUTH_GSS upcall timed out.\n"
-- "Please check user daemon is running.\n");
-+ pr_warn("RPC: AUTH_GSS upcall failed. Please check user daemon is running.\n");
- ratelimit = now + 15*HZ;
- }
- }
-@@ -581,7 +580,6 @@ gss_create_upcall(struct gss_auth *gss_auth, struct gss_cred *gss_cred)
- struct rpc_pipe *pipe;
- struct rpc_cred *cred = &gss_cred->gc_base;
- struct gss_upcall_msg *gss_msg;
-- unsigned long timeout;
- DEFINE_WAIT(wait);
- int err;
-
-@@ -589,17 +587,16 @@ gss_create_upcall(struct gss_auth *gss_auth, struct gss_cred *gss_cred)
- __func__, from_kuid(&init_user_ns, cred->cr_uid));
- retry:
- err = 0;
-- /* Default timeout is 15s unless we know that gssd is not running */
-- timeout = 15 * HZ;
-- if (!sn->gssd_running)
-- timeout = HZ >> 2;
-+ /* if gssd is down, just skip upcalling altogether */
-+ if (!gssd_running(net)) {
-+ warn_gssd();
-+ return -EACCES;
-+ }
- gss_msg = gss_setup_upcall(gss_auth, cred);
- if (PTR_ERR(gss_msg) == -EAGAIN) {
- err = wait_event_interruptible_timeout(pipe_version_waitqueue,
-- sn->pipe_version >= 0, timeout);
-+ sn->pipe_version >= 0, 15 * HZ);
- if (sn->pipe_version < 0) {
-- if (err == 0)
-- sn->gssd_running = 0;
- warn_gssd();
- err = -EACCES;
- }
-diff --git a/net/sunrpc/netns.h b/net/sunrpc/netns.h
-index 8a8e841..94e506f 100644
---- a/net/sunrpc/netns.h
-+++ b/net/sunrpc/netns.h
-@@ -33,8 +33,6 @@ struct sunrpc_net {
- int pipe_version;
- atomic_t pipe_users;
- struct proc_dir_entry *use_gssp_proc;
--
-- unsigned int gssd_running;
- };
-
- extern int sunrpc_net_id;
-diff --git a/net/sunrpc/rpc_pipe.c b/net/sunrpc/rpc_pipe.c
-index 40aef18..ad444f3 100644
---- a/net/sunrpc/rpc_pipe.c
-+++ b/net/sunrpc/rpc_pipe.c
-@@ -216,14 +216,11 @@ rpc_destroy_inode(struct inode *inode)
- static int
- rpc_pipe_open(struct inode *inode, struct file *filp)
- {
-- struct net *net = inode->i_sb->s_fs_info;
-- struct sunrpc_net *sn = net_generic(net, sunrpc_net_id);
- struct rpc_pipe *pipe;
- int first_open;
- int res = -ENXIO;
-
- mutex_lock(&inode->i_mutex);
-- sn->gssd_running = 1;
- pipe = RPC_I(inode)->pipe;
- if (pipe == NULL)
- goto out;
-@@ -1231,7 +1228,6 @@ int rpc_pipefs_init_net(struct net *net)
- return PTR_ERR(sn->gssd_dummy);
-
- mutex_init(&sn->pipefs_sb_lock);
-- sn->gssd_running = 1;
- sn->pipe_version = -1;
- return 0;
- }
-@@ -1385,6 +1381,16 @@ err_depopulate:
- return err;
- }
-
-+bool
-+gssd_running(struct net *net)
-+{
-+ struct sunrpc_net *sn = net_generic(net, sunrpc_net_id);
-+ struct rpc_pipe *pipe = sn->gssd_dummy;
-+
-+ return pipe->nreaders || pipe->nwriters;
-+}
-+EXPORT_SYMBOL_GPL(gssd_running);
-+
- static struct dentry *
- rpc_mount(struct file_system_type *fs_type,
- int flags, const char *dev_name, void *data)
diff --git a/sysrq-secure-boot.patch b/sysrq-secure-boot.patch
index b4bb80d0..c73e3d25 100644
--- a/sysrq-secure-boot.patch
+++ b/sysrq-secure-boot.patch
@@ -1,20 +1,23 @@
-From 71aac34ed679daa0bf772051eb40412b5bd95da3 Mon Sep 17 00:00:00 2001
+Bugzilla: N/A
+Upstream-status: Fedora mustard
+
+From 29c1f71a2d0845a71ea2ebd2fb33542373dc52dd Mon Sep 17 00:00:00 2001
From: Kyle McMartin <kyle@redhat.com>
Date: Fri, 30 Aug 2013 09:28:51 -0400
Subject: [PATCH] Add sysrq option to disable secure boot mode
---
- arch/x86/kernel/setup.c | 35 +++++++++++++++++++++++++++++++++++
+ arch/x86/kernel/setup.c | 36 ++++++++++++++++++++++++++++++++++++
drivers/input/misc/uinput.c | 1 +
drivers/tty/sysrq.c | 19 +++++++++++++------
include/linux/input.h | 5 +++++
include/linux/sysrq.h | 8 +++++++-
kernel/debug/kdb/kdb_main.c | 2 +-
kernel/module.c | 4 ++--
- 7 files changed, 64 insertions(+), 10 deletions(-)
+ 7 files changed, 65 insertions(+), 10 deletions(-)
diff --git a/arch/x86/kernel/setup.c b/arch/x86/kernel/setup.c
-index 08dc16e..6971f8e 100644
+index c773add..92c480c 100644
--- a/arch/x86/kernel/setup.c
+++ b/arch/x86/kernel/setup.c
@@ -70,6 +70,11 @@
@@ -29,11 +32,10 @@ index 08dc16e..6971f8e 100644
#include <video/edid.h>
#include <asm/mtrr.h>
-@@ -1253,3 +1258,33 @@ void __init i386_reserve_resources(void)
- }
+@@ -1275,6 +1280,37 @@ void __init i386_reserve_resources(void)
#endif /* CONFIG_X86_32 */
-+
+
+#ifdef CONFIG_MAGIC_SYSRQ
+#ifdef CONFIG_MODULE_SIG
+extern bool sig_enforce;
@@ -63,8 +65,13 @@ index 08dc16e..6971f8e 100644
+}
+late_initcall(secure_boot_sysrq);
+#endif /*CONFIG_MAGIC_SYSRQ*/
++
++
+ static struct notifier_block kernel_offset_notifier = {
+ .notifier_call = dump_kernel_offset
+ };
diff --git a/drivers/input/misc/uinput.c b/drivers/input/misc/uinput.c
-index a0a4bba..3327cc3 100644
+index 7728359..a3e8ba8 100644
--- a/drivers/input/misc/uinput.c
+++ b/drivers/input/misc/uinput.c
@@ -351,6 +351,7 @@ static int uinput_allocate_device(struct uinput_device *udev)
@@ -76,10 +83,10 @@ index a0a4bba..3327cc3 100644
input_set_drvdata(udev->dev, udev);
diff --git a/drivers/tty/sysrq.c b/drivers/tty/sysrq.c
-index d5cc3ac..05b33f5 100644
+index ce396ec..aee594a 100644
--- a/drivers/tty/sysrq.c
+++ b/drivers/tty/sysrq.c
-@@ -461,6 +461,7 @@ static struct sysrq_key_op *sysrq_key_table[36] = {
+@@ -462,6 +462,7 @@ static struct sysrq_key_op *sysrq_key_table[36] = {
&sysrq_showstate_blocked_op, /* w */
/* x: May be registered on ppc/powerpc for xmon */
/* x: May be registered on sparc64 for global PMU dump */
@@ -87,7 +94,7 @@ index d5cc3ac..05b33f5 100644
NULL, /* x */
/* y: May be registered on sparc64 for global register dump */
NULL, /* y */
-@@ -504,7 +505,7 @@ static void __sysrq_put_key_op(int key, struct sysrq_key_op *op_p)
+@@ -505,7 +506,7 @@ static void __sysrq_put_key_op(int key, struct sysrq_key_op *op_p)
sysrq_key_table[i] = op_p;
}
@@ -96,7 +103,7 @@ index d5cc3ac..05b33f5 100644
{
struct sysrq_key_op *op_p;
int orig_log_level;
-@@ -524,11 +525,15 @@ void __handle_sysrq(int key, bool check_mask)
+@@ -525,11 +526,15 @@ void __handle_sysrq(int key, bool check_mask)
op_p = __sysrq_get_key_op(key);
if (op_p) {
@@ -113,7 +120,7 @@ index d5cc3ac..05b33f5 100644
printk("%s\n", op_p->action_msg);
console_loglevel = orig_log_level;
op_p->handler(key);
-@@ -559,7 +564,7 @@ void __handle_sysrq(int key, bool check_mask)
+@@ -560,7 +565,7 @@ void __handle_sysrq(int key, bool check_mask)
void handle_sysrq(int key)
{
if (sysrq_on())
@@ -122,7 +129,7 @@ index d5cc3ac..05b33f5 100644
}
EXPORT_SYMBOL(handle_sysrq);
-@@ -639,7 +644,7 @@ static void sysrq_do_reset(unsigned long _state)
+@@ -640,7 +645,7 @@ static void sysrq_do_reset(unsigned long _state)
static void sysrq_handle_reset_request(struct sysrq_state *state)
{
if (state->reset_requested)
@@ -131,7 +138,7 @@ index d5cc3ac..05b33f5 100644
if (sysrq_reset_downtime_ms)
mod_timer(&state->keyreset_timer,
-@@ -756,8 +761,10 @@ static bool sysrq_handle_keypress(struct sysrq_state *sysrq,
+@@ -791,8 +796,10 @@ static bool sysrq_handle_keypress(struct sysrq_state *sysrq,
default:
if (sysrq->active && value && value != 2) {
@@ -143,7 +150,7 @@ index d5cc3ac..05b33f5 100644
}
break;
}
-@@ -1038,7 +1045,7 @@ static ssize_t write_sysrq_trigger(struct file *file, const char __user *buf,
+@@ -1080,7 +1087,7 @@ static ssize_t write_sysrq_trigger(struct file *file, const char __user *buf,
if (get_user(c, buf))
return -EFAULT;
@@ -183,10 +190,10 @@ index 82ce323..9e534f2 100644
* Verify that we are in sync with input_device_id mod_devicetable.h #defines
*/
diff --git a/include/linux/sysrq.h b/include/linux/sysrq.h
-index 7faf933..87ae634 100644
+index 387fa7d..4b07e30 100644
--- a/include/linux/sysrq.h
+++ b/include/linux/sysrq.h
-@@ -31,6 +31,8 @@
+@@ -28,6 +28,8 @@
#define SYSRQ_ENABLE_BOOT 0x0080
#define SYSRQ_ENABLE_RTNICE 0x0100
@@ -195,7 +202,7 @@ index 7faf933..87ae634 100644
struct sysrq_key_op {
void (*handler)(int);
char *help_msg;
-@@ -45,8 +47,12 @@ struct sysrq_key_op {
+@@ -42,8 +44,12 @@ struct sysrq_key_op {
* are available -- else NULL's).
*/
@@ -210,10 +217,10 @@ index 7faf933..87ae634 100644
int unregister_sysrq_key(int key, struct sysrq_key_op *op);
struct sysrq_key_op *__sysrq_get_key_op(int key);
diff --git a/kernel/debug/kdb/kdb_main.c b/kernel/debug/kdb/kdb_main.c
-index 00eb8f7..54fbbcc 100644
+index 0b097c8..18b400d 100644
--- a/kernel/debug/kdb/kdb_main.c
+++ b/kernel/debug/kdb/kdb_main.c
-@@ -1921,7 +1921,7 @@ static int kdb_sr(int argc, const char **argv)
+@@ -1924,7 +1924,7 @@ static int kdb_sr(int argc, const char **argv)
if (argc != 1)
return KDB_ARGCOUNT;
kdb_trap_printk++;
@@ -223,7 +230,7 @@ index 00eb8f7..54fbbcc 100644
return 0;
diff --git a/kernel/module.c b/kernel/module.c
-index bc7c987..5e4e2c2 100644
+index 92b73b1..a44fb2a 100644
--- a/kernel/module.c
+++ b/kernel/module.c
@@ -109,9 +109,9 @@ struct list_head *kdb_modules = &modules; /* kdb needs the list of modules */
@@ -239,5 +246,5 @@ index bc7c987..5e4e2c2 100644
static int param_set_bool_enable_only(const char *val,
const struct kernel_param *kp)
--
-1.8.3.1
+1.8.4.2
diff --git a/tty-Fix-low_latency-BUG.patch b/tty-Fix-low_latency-BUG.patch
deleted file mode 100644
index 60b39581..00000000
--- a/tty-Fix-low_latency-BUG.patch
+++ /dev/null
@@ -1,158 +0,0 @@
-Bugzilla: 1065087
-Upstream-status: 3.14
-
-From a9c3f68f3cd8d55f809fbdb0c138ed061ea1bd25 Mon Sep 17 00:00:00 2001
-From: Peter Hurley <peter@hurleysoftware.com>
-Date: Sat, 22 Feb 2014 12:31:21 +0000
-Subject: tty: Fix low_latency BUG
-
-The user-settable knob, low_latency, has been the source of
-several BUG reports which stem from flush_to_ldisc() running
-in interrupt context. Since 3.12, which added several sleeping
-locks (termios_rwsem and buf->lock) to the input processing path,
-the frequency of these BUG reports has increased.
-
-Note that changes in 3.12 did not introduce this regression;
-sleeping locks were first added to the input processing path
-with the removal of the BKL from N_TTY in commit
-a88a69c91256418c5907c2f1f8a0ec0a36f9e6cc,
-'n_tty: Fix loss of echoed characters and remove bkl from n_tty'
-and later in commit 38db89799bdf11625a831c5af33938dcb11908b6,
-'tty: throttling race fix'. Since those changes, executing
-flush_to_ldisc() in interrupt_context (ie, low_latency set), is unsafe.
-
-However, since most devices do not validate if the low_latency
-setting is appropriate for the context (process or interrupt) in
-which they receive data, some reports are due to misconfiguration.
-Further, serial dma devices for which dma fails, resort to
-interrupt receiving as a backup without resetting low_latency.
-
-Historically, low_latency was used to force wake-up the reading
-process rather than wait for the next scheduler tick. The
-effect was to trim multiple milliseconds of latency from
-when the process would receive new data.
-
-Recent tests [1] have shown that the reading process now receives
-data with only 10's of microseconds latency without low_latency set.
-
-Remove the low_latency rx steering from tty_flip_buffer_push();
-however, leave the knob as an optional hint to drivers that can
-tune their rx fifos and such like. Cleanup stale code comments
-regarding low_latency.
-
-[1] https://lkml.org/lkml/2014/2/20/434
-
-"Yay.. thats an annoying historical pain in the butt gone."
- -- Alan Cox
-
-Reported-by: Beat Bolli <bbolli@ewanet.ch>
-Reported-by: Pavel Roskin <proski@gnu.org>
-Acked-by: David Sterba <dsterba@suse.cz>
-Cc: Grant Edwards <grant.b.edwards@gmail.com>
-Cc: Stanislaw Gruszka <sgruszka@redhat.com>
-Cc: Hal Murray <murray+fedora@ip-64-139-1-69.sjc.megapath.net>
-Cc: <stable@vger.kernel.org> # 3.12.x+
-Signed-off-by: Peter Hurley <peter@hurleysoftware.com>
-Signed-off-by: Alan Cox <alan@linux.intel.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
----
-diff --git a/drivers/tty/ipwireless/tty.c b/drivers/tty/ipwireless/tty.c
-index ebd5bff..17ee3bf 100644
---- a/drivers/tty/ipwireless/tty.c
-+++ b/drivers/tty/ipwireless/tty.c
-@@ -176,9 +176,6 @@ void ipwireless_tty_received(struct ipw_tty *tty, unsigned char *data,
- ": %d chars not inserted to flip buffer!\n",
- length - work);
-
-- /*
-- * This may sleep if ->low_latency is set
-- */
- if (work)
- tty_flip_buffer_push(&tty->port);
- }
-diff --git a/drivers/tty/tty_buffer.c b/drivers/tty/tty_buffer.c
-index 765125d..8ebd9f8 100644
---- a/drivers/tty/tty_buffer.c
-+++ b/drivers/tty/tty_buffer.c
-@@ -351,14 +351,11 @@ EXPORT_SYMBOL(tty_insert_flip_string_flags);
- * Takes any pending buffers and transfers their ownership to the
- * ldisc side of the queue. It then schedules those characters for
- * processing by the line discipline.
-- * Note that this function can only be used when the low_latency flag
-- * is unset. Otherwise the workqueue won't be flushed.
- */
-
- void tty_schedule_flip(struct tty_port *port)
- {
- struct tty_bufhead *buf = &port->buf;
-- WARN_ON(port->low_latency);
-
- buf->tail->commit = buf->tail->used;
- schedule_work(&buf->work);
-@@ -482,17 +479,15 @@ static void flush_to_ldisc(struct work_struct *work)
- */
- void tty_flush_to_ldisc(struct tty_struct *tty)
- {
-- if (!tty->port->low_latency)
-- flush_work(&tty->port->buf.work);
-+ flush_work(&tty->port->buf.work);
- }
-
- /**
- * tty_flip_buffer_push - terminal
- * @port: tty port to push
- *
-- * Queue a push of the terminal flip buffers to the line discipline. This
-- * function must not be called from IRQ context if port->low_latency is
-- * set.
-+ * Queue a push of the terminal flip buffers to the line discipline.
-+ * Can be called from IRQ/atomic context.
- *
- * In the event of the queue being busy for flipping the work will be
- * held off and retried later.
-@@ -500,14 +495,7 @@ void tty_flush_to_ldisc(struct tty_struct *tty)
-
- void tty_flip_buffer_push(struct tty_port *port)
- {
-- struct tty_bufhead *buf = &port->buf;
--
-- buf->tail->commit = buf->tail->used;
--
-- if (port->low_latency)
-- flush_to_ldisc(&buf->work);
-- else
-- schedule_work(&buf->work);
-+ tty_schedule_flip(port);
- }
- EXPORT_SYMBOL(tty_flip_buffer_push);
-
-diff --git a/drivers/usb/gadget/u_serial.c b/drivers/usb/gadget/u_serial.c
-index b369292..ad0aca8 100644
---- a/drivers/usb/gadget/u_serial.c
-+++ b/drivers/usb/gadget/u_serial.c
-@@ -549,8 +549,8 @@ static void gs_rx_push(unsigned long _port)
- port->read_started--;
- }
-
-- /* Push from tty to ldisc; without low_latency set this is handled by
-- * a workqueue, so we won't get callbacks and can hold port_lock
-+ /* Push from tty to ldisc; this is handled by a workqueue,
-+ * so we won't get callbacks and can hold port_lock
- */
- if (do_push)
- tty_flip_buffer_push(&port->port);
-diff --git a/include/linux/tty.h b/include/linux/tty.h
-index 90b4fdc..b90b5c2 100644
---- a/include/linux/tty.h
-+++ b/include/linux/tty.h
-@@ -208,7 +208,7 @@ struct tty_port {
- wait_queue_head_t delta_msr_wait; /* Modem status change */
- unsigned long flags; /* TTY flags ASY_*/
- unsigned char console:1, /* port is a console */
-- low_latency:1; /* direct buffer flush */
-+ low_latency:1; /* optional: tune for latency */
- struct mutex mutex; /* Locking */
- struct mutex buf_mutex; /* Buffer alloc lock */
- unsigned char *xmit_buf; /* Optional buffer */
---
-cgit v0.9.2