diff options
author | Thorsten Leemhuis <fedora@leemhuis.info> | 2016-08-24 22:07:33 +0200 |
---|---|---|
committer | Thorsten Leemhuis <fedora@leemhuis.info> | 2016-08-24 22:07:33 +0200 |
commit | 906085ac6298d68644122eefa71e9017f4e95d1a (patch) | |
tree | 0ee291ae9afae7761b89a72d56260661824b47f4 | |
parent | 40663b773f7a0d85f769183b4ddfc9f90728fe11 (diff) | |
parent | d5ce7505e0f0790d5f363feae31f09174d31d04e (diff) | |
download | kernel-906085ac6298d68644122eefa71e9017f4e95d1a.tar.gz kernel-906085ac6298d68644122eefa71e9017f4e95d1a.tar.xz kernel-906085ac6298d68644122eefa71e9017f4e95d1a.zip |
Merge remote-tracking branch 'origin/master'kernel-4.8.0-0.rc3.git1.1.vanilla.knurd.1.fc24kernel-4.8.0-0.rc3.git1.1.vanilla.knurd.1.fc23
-rw-r--r-- | 0001-udp-fix-poll-issue-with-zero-sized-packets.patch | 73 | ||||
-rw-r--r-- | HID-microsoft-Add-Surface-4-type-cover-pro-4-JP.patch | 76 | ||||
-rw-r--r-- | arm64-ACPI-parse-SPCR-table.patch | 596 | ||||
-rw-r--r-- | arm64-avoid-needing-console-to-enable-serial-console.patch | 46 | ||||
-rw-r--r-- | config-arm-generic | 1 | ||||
-rw-r--r-- | config-arm64 | 1 | ||||
-rw-r--r-- | config-armv7-generic | 1 | ||||
-rw-r--r-- | config-generic | 6 | ||||
-rw-r--r-- | config-nodebug | 114 | ||||
-rw-r--r-- | config-x86-generic | 2 | ||||
-rw-r--r-- | gitrev | 2 | ||||
-rw-r--r-- | i8042-set-up-shared-ps2_cmd_mutex-for-aux-ports.patch | 34 | ||||
-rw-r--r-- | kernel.spec | 32 | ||||
-rw-r--r-- | qcom-QDF2432-tmp-errata.patch | 59 | ||||
-rw-r--r-- | sources | 1 |
15 files changed, 932 insertions, 112 deletions
diff --git a/0001-udp-fix-poll-issue-with-zero-sized-packets.patch b/0001-udp-fix-poll-issue-with-zero-sized-packets.patch new file mode 100644 index 000000000..f5edf2340 --- /dev/null +++ b/0001-udp-fix-poll-issue-with-zero-sized-packets.patch @@ -0,0 +1,73 @@ +From 9f30f83eb6347afa6b1d1df1065608c2b4485e2b Mon Sep 17 00:00:00 2001 +From: Eric Dumazet <edumazet@google.com> +Date: Tue, 23 Aug 2016 13:59:33 -0700 +Subject: [PATCH] udp: fix poll() issue with zero sized packets + +Laura tracked poll() [and friends] regression caused by commit +e6afc8ace6dd ("udp: remove headers from UDP packets before queueing") + +udp_poll() needs to know if there is a valid packet in receive queue, +even if its payload length is 0. + +Change first_packet_length() to return an signed int, and use -1 +as the indication of an empty queue. + +Fixes: e6afc8ace6dd ("udp: remove headers from UDP packets before queueing") +Reported-by: Laura Abbott <labbott@redhat.com> +Signed-off-by: Eric Dumazet <edumazet@google.com> +Tested-by: Laura Abbott <labbott@redhat.com> +--- + net/ipv4/udp.c | 12 ++++++------ + 1 file changed, 6 insertions(+), 6 deletions(-) + +diff --git a/net/ipv4/udp.c b/net/ipv4/udp.c +index e61f7cd..00d18c5 100644 +--- a/net/ipv4/udp.c ++++ b/net/ipv4/udp.c +@@ -1182,13 +1182,13 @@ out: + * @sk: socket + * + * Drops all bad checksum frames, until a valid one is found. +- * Returns the length of found skb, or 0 if none is found. ++ * Returns the length of found skb, or -1 if none is found. + */ +-static unsigned int first_packet_length(struct sock *sk) ++static int first_packet_length(struct sock *sk) + { + struct sk_buff_head list_kill, *rcvq = &sk->sk_receive_queue; + struct sk_buff *skb; +- unsigned int res; ++ int res; + + __skb_queue_head_init(&list_kill); + +@@ -1203,7 +1203,7 @@ static unsigned int first_packet_length(struct sock *sk) + __skb_unlink(skb, rcvq); + __skb_queue_tail(&list_kill, skb); + } +- res = skb ? skb->len : 0; ++ res = skb ? skb->len : -1; + spin_unlock_bh(&rcvq->lock); + + if (!skb_queue_empty(&list_kill)) { +@@ -1232,7 +1232,7 @@ int udp_ioctl(struct sock *sk, int cmd, unsigned long arg) + + case SIOCINQ: + { +- unsigned int amount = first_packet_length(sk); ++ int amount = max_t(int, 0, first_packet_length(sk)); + + return put_user(amount, (int __user *)arg); + } +@@ -2184,7 +2184,7 @@ unsigned int udp_poll(struct file *file, struct socket *sock, poll_table *wait) + + /* Check for false positives due to checksum errors */ + if ((mask & POLLRDNORM) && !(file->f_flags & O_NONBLOCK) && +- !(sk->sk_shutdown & RCV_SHUTDOWN) && !first_packet_length(sk)) ++ !(sk->sk_shutdown & RCV_SHUTDOWN) && first_packet_length(sk) == -1) + mask &= ~(POLLIN | POLLRDNORM); + + return mask; +-- +2.7.4 + diff --git a/HID-microsoft-Add-Surface-4-type-cover-pro-4-JP.patch b/HID-microsoft-Add-Surface-4-type-cover-pro-4-JP.patch new file mode 100644 index 000000000..f231aa10a --- /dev/null +++ b/HID-microsoft-Add-Surface-4-type-cover-pro-4-JP.patch @@ -0,0 +1,76 @@ +From b490a8537df60d449199e162417da74ee9262515 Mon Sep 17 00:00:00 2001 +From: Yuta Kobayashi <alu.ula@outlook.com> +Date: Fri, 12 Aug 2016 07:49:17 +0000 +Subject: [PATCH] HID: microsoft: Add Surface 4 type cover pro 4 (JP) + +Adding support for the Microsoft Surface 4 Type Cover Pro (JP). + +Signed-off-by: Yuta Kobayashi <alu.ula@outlook.com> +Signed-off-by: Jiri Kosina <jkosina@suse.cz> +--- + drivers/hid/hid-core.c | 2 ++ + drivers/hid/hid-ids.h | 1 + + drivers/hid/hid-microsoft.c | 2 ++ + drivers/hid/usbhid/hid-quirks.c | 1 + + 4 files changed, 6 insertions(+) + +diff --git a/drivers/hid/hid-core.c b/drivers/hid/hid-core.c +index ed10d4f..45400de 100644 +--- a/drivers/hid/hid-core.c ++++ b/drivers/hid/hid-core.c +@@ -727,6 +727,7 @@ static void hid_scan_collection(struct hid_parser *parser, unsigned type) + (hid->product == USB_DEVICE_ID_MS_TYPE_COVER_PRO_3 || + hid->product == USB_DEVICE_ID_MS_TYPE_COVER_PRO_3_2 || + hid->product == USB_DEVICE_ID_MS_TYPE_COVER_PRO_3_JP || ++ hid->product == USB_DEVICE_ID_MS_TYPE_COVER_PRO_4_JP || + hid->product == USB_DEVICE_ID_MS_TYPE_COVER_3 || + hid->product == USB_DEVICE_ID_MS_POWER_COVER) && + hid->group == HID_GROUP_MULTITOUCH) +@@ -1982,6 +1983,7 @@ static const struct hid_device_id hid_have_special_driver[] = { + { HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_TYPE_COVER_PRO_3) }, + { HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_TYPE_COVER_PRO_3_2) }, + { HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_TYPE_COVER_PRO_3_JP) }, ++ { HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_TYPE_COVER_PRO_4_JP) }, + { HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_TYPE_COVER_3) }, + { HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_DIGITAL_MEDIA_7K) }, + { HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_DIGITAL_MEDIA_600) }, +diff --git a/drivers/hid/hid-ids.h b/drivers/hid/hid-ids.h +index da1c58e..3466f0d 100644 +--- a/drivers/hid/hid-ids.h ++++ b/drivers/hid/hid-ids.h +@@ -713,6 +713,7 @@ + #define USB_DEVICE_ID_MS_TYPE_COVER_PRO_3 0x07dc + #define USB_DEVICE_ID_MS_TYPE_COVER_PRO_3_2 0x07e2 + #define USB_DEVICE_ID_MS_TYPE_COVER_PRO_3_JP 0x07dd ++#define USB_DEVICE_ID_MS_TYPE_COVER_PRO_4_JP 0x07e9 + #define USB_DEVICE_ID_MS_TYPE_COVER_3 0x07de + #define USB_DEVICE_ID_MS_POWER_COVER 0x07da + +diff --git a/drivers/hid/hid-microsoft.c b/drivers/hid/hid-microsoft.c +index e924d55..56c586f 100644 +--- a/drivers/hid/hid-microsoft.c ++++ b/drivers/hid/hid-microsoft.c +@@ -288,6 +288,8 @@ static const struct hid_device_id ms_devices[] = { + .driver_data = MS_HIDINPUT }, + { HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_TYPE_COVER_PRO_3_JP), + .driver_data = MS_HIDINPUT }, ++ { HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_TYPE_COVER_PRO_4_JP), ++ .driver_data = MS_HIDINPUT }, + { HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_TYPE_COVER_3), + .driver_data = MS_HIDINPUT }, + { HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_POWER_COVER), +diff --git a/drivers/hid/usbhid/hid-quirks.c b/drivers/hid/usbhid/hid-quirks.c +index b4b8c6a..1fccffd 100644 +--- a/drivers/hid/usbhid/hid-quirks.c ++++ b/drivers/hid/usbhid/hid-quirks.c +@@ -98,6 +98,7 @@ static const struct hid_blacklist { + { USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_TYPE_COVER_PRO_3, HID_QUIRK_NO_INIT_REPORTS }, + { USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_TYPE_COVER_PRO_3_2, HID_QUIRK_NO_INIT_REPORTS }, + { USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_TYPE_COVER_PRO_3_JP, HID_QUIRK_NO_INIT_REPORTS }, ++ { USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_TYPE_COVER_PRO_4_JP, HID_QUIRK_NO_INIT_REPORTS }, + { USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_TYPE_COVER_3, HID_QUIRK_NO_INIT_REPORTS }, + { USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_POWER_COVER, HID_QUIRK_NO_INIT_REPORTS }, + { USB_VENDOR_ID_MSI, USB_DEVICE_ID_MSI_GT683R_LED_PANEL, HID_QUIRK_NO_INIT_REPORTS }, +-- +2.7.4 + diff --git a/arm64-ACPI-parse-SPCR-table.patch b/arm64-ACPI-parse-SPCR-table.patch new file mode 100644 index 000000000..ba8a70679 --- /dev/null +++ b/arm64-ACPI-parse-SPCR-table.patch @@ -0,0 +1,596 @@ +From patchwork Fri Aug 12 11:07:14 2016 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +Subject: [v9,1/4] of/serial: move earlycon early_param handling to serial +From: Aleksey Makarov <aleksey.makarov@linaro.org> +X-Patchwork-Id: 9276727 +Message-Id: <20160812110717.12351-1-aleksey.makarov@linaro.org> +To: "Rafael J . Wysocki" <rjw@rjwysocki.net>, + Greg Kroah-Hartman <gregkh@linuxfoundation.org> +Cc: linux-serial@vger.kernel.org, linux-acpi@vger.kernel.org, + linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, + Aleksey Makarov <aleksey.makarov@linaro.org>, + Russell King <linux@arm.linux.org.uk>, Len Brown <lenb@kernel.org>, + Leif Lindholm <leif.lindholm@linaro.org>, + Graeme Gregory <graeme.gregory@linaro.org>, Al Stone <ahs3@redhat.com>, + Christopher Covington <cov@codeaurora.org>, + Yury Norov <ynorov@caviumnetworks.com>, + Peter Hurley <peter@hurleysoftware.com>, + Andy Shevchenko <andy.shevchenko@gmail.com>, + "Zheng, Lv" <lv.zheng@intel.com>, Mark Salter <msalter@redhat.com>, + Kefeng Wang <wangkefeng.wang@huawei.com>, + Rob Herring <robh+dt@kernel.org>, Frank Rowand <frowand.list@gmail.com>, + Jiri Slaby <jslaby@suse.com>, devicetree@vger.kernel.org +Date: Fri, 12 Aug 2016 14:07:14 +0300 + +From: Leif Lindholm <leif.lindholm@linaro.org> + +We have multiple "earlycon" early_param handlers - merge the DT one into +the main earlycon one. It's a cleanup that also will be useful +to defer setting up DT console until ACPI/DT decision is made. + +Rename the exported function to avoid clashing with the function from +arch/microblaze/kernel/prom.c + +Signed-off-by: Leif Lindholm <leif.lindholm@linaro.org> +Signed-off-by: Aleksey Makarov <aleksey.makarov@linaro.org> +Acked-by: Rob Herring <robh@kernel.org> +Acked-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> +Reviewed-by: Peter Hurley <peter@hurleysoftware.com> +Tested-by: Kefeng Wang <wangkefeng.wang@huawei.com> +--- + drivers/of/fdt.c | 11 +---------- + drivers/tty/serial/earlycon.c | 2 +- + include/linux/of_fdt.h | 3 +++ + 3 files changed, 5 insertions(+), 11 deletions(-) + +diff --git a/drivers/of/fdt.c b/drivers/of/fdt.c +index 55f1b83..741cac53 100644 +--- a/drivers/of/fdt.c ++++ b/drivers/of/fdt.c +@@ -924,7 +924,7 @@ static inline void early_init_dt_check_for_initrd(unsigned long node) + + #ifdef CONFIG_SERIAL_EARLYCON + +-static int __init early_init_dt_scan_chosen_serial(void) ++int __init early_init_dt_scan_chosen_stdout(void) + { + int offset; + const char *p, *q, *options = NULL; +@@ -968,15 +968,6 @@ static int __init early_init_dt_scan_chosen_serial(void) + } + return -ENODEV; + } +- +-static int __init setup_of_earlycon(char *buf) +-{ +- if (buf) +- return 0; +- +- return early_init_dt_scan_chosen_serial(); +-} +-early_param("earlycon", setup_of_earlycon); + #endif + + /** +diff --git a/drivers/tty/serial/earlycon.c b/drivers/tty/serial/earlycon.c +index 067783f..7aae655 100644 +--- a/drivers/tty/serial/earlycon.c ++++ b/drivers/tty/serial/earlycon.c +@@ -209,7 +209,7 @@ static int __init param_setup_earlycon(char *buf) + * don't generate a warning from parse_early_params() in that case + */ + if (!buf || !buf[0]) +- return 0; ++ return early_init_dt_scan_chosen_stdout(); + + err = setup_earlycon(buf); + if (err == -ENOENT || err == -EALREADY) +diff --git a/include/linux/of_fdt.h b/include/linux/of_fdt.h +index 26c3302..4341f32 100644 +--- a/include/linux/of_fdt.h ++++ b/include/linux/of_fdt.h +@@ -14,6 +14,7 @@ + + #include <linux/types.h> + #include <linux/init.h> ++#include <linux/errno.h> + + /* Definitions used by the flattened device tree */ + #define OF_DT_HEADER 0xd00dfeed /* marker */ +@@ -66,6 +67,7 @@ extern int early_init_dt_scan_chosen(unsigned long node, const char *uname, + int depth, void *data); + extern int early_init_dt_scan_memory(unsigned long node, const char *uname, + int depth, void *data); ++extern int early_init_dt_scan_chosen_stdout(void); + extern void early_init_fdt_scan_reserved_mem(void); + extern void early_init_fdt_reserve_self(void); + extern void early_init_dt_add_memory_arch(u64 base, u64 size); +@@ -94,6 +96,7 @@ extern void early_get_first_memblock_info(void *, phys_addr_t *); + extern u64 of_flat_dt_translate_address(unsigned long node); + extern void of_fdt_limit_memory(int limit); + #else /* CONFIG_OF_FLATTREE */ ++static inline int early_init_dt_scan_chosen_stdout(void) { return -ENODEV; } + static inline void early_init_fdt_scan_reserved_mem(void) {} + static inline void early_init_fdt_reserve_self(void) {} + static inline const char *of_flat_dt_get_machine_name(void) { return NULL; } +From patchwork Thu Aug 11 15:31:39 2016 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +Subject: [v9,2/4] ACPI: parse SPCR and enable matching console +From: Aleksey Makarov <aleksey.makarov@linaro.org> +X-Patchwork-Id: 9275443 +Message-Id: <20160811153152.755-3-aleksey.makarov@linaro.org> +To: "Rafael J . Wysocki" <rjw@rjwysocki.net>, + Greg Kroah-Hartman <gregkh@linuxfoundation.org> +Cc: linux-serial@vger.kernel.org, linux-acpi@vger.kernel.org, + linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, + Aleksey Makarov <aleksey.makarov@linaro.org>, + Russell King <linux@arm.linux.org.uk>, Len Brown <lenb@kernel.org>, + Leif Lindholm <leif.lindholm@linaro.org>, + Graeme Gregory <graeme.gregory@linaro.org>, Al Stone <ahs3@redhat.com>, + Christopher Covington <cov@codeaurora.org>, + Yury Norov <ynorov@caviumnetworks.com>, + Peter Hurley <peter@hurleysoftware.com>, + Andy Shevchenko <andy.shevchenko@gmail.com>, + "Zheng, Lv" <lv.zheng@intel.com>, Mark Salter <msalter@redhat.com>, + Kefeng Wang <wangkefeng.wang@huawei.com>, Jiri Slaby <jslaby@suse.com> +Date: Thu, 11 Aug 2016 18:31:39 +0300 + +'ARM Server Base Boot Requiremets' [1] mentions SPCR (Serial Port +Console Redirection Table) [2] as a mandatory ACPI table that +specifies the configuration of serial console. + +Defer initialization of DT earlycon until ACPI/DT decision is made. + +Parse the ACPI SPCR table, setup earlycon if required, +enable specified console. + +Thanks to Peter Hurley for explaining how this should work. + +[1] http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.den0044a/index.html +[2] https://msdn.microsoft.com/en-us/library/windows/hardware/dn639132(v=vs.85).aspx + +Signed-off-by: Aleksey Makarov <aleksey.makarov@linaro.org> +Reviewed-by: Peter Hurley <peter@hurleysoftware.com> +Tested-by: Kefeng Wang <wangkefeng.wang@huawei.com> +Acked-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com> +--- + drivers/acpi/Kconfig | 3 ++ + drivers/acpi/Makefile | 1 + + drivers/acpi/spcr.c | 111 ++++++++++++++++++++++++++++++++++++++++++ + drivers/tty/serial/earlycon.c | 19 +++++++- + include/linux/acpi.h | 6 +++ + include/linux/serial_core.h | 9 +++- + 6 files changed, 146 insertions(+), 3 deletions(-) + create mode 100644 drivers/acpi/spcr.c + +diff --git a/drivers/acpi/Kconfig b/drivers/acpi/Kconfig +index 6cef2d1..4a269f9 100644 +--- a/drivers/acpi/Kconfig ++++ b/drivers/acpi/Kconfig +@@ -77,6 +77,9 @@ config ACPI_DEBUGGER_USER + + endif + ++config ACPI_SPCR_TABLE ++ bool ++ + config ACPI_SLEEP + bool + depends on SUSPEND || HIBERNATION +diff --git a/drivers/acpi/Makefile b/drivers/acpi/Makefile +index e5ada78..d799593 100644 +--- a/drivers/acpi/Makefile ++++ b/drivers/acpi/Makefile +@@ -81,6 +81,7 @@ obj-$(CONFIG_ACPI_EC_DEBUGFS) += ec_sys.o + obj-$(CONFIG_ACPI_CUSTOM_METHOD)+= custom_method.o + obj-$(CONFIG_ACPI_BGRT) += bgrt.o + obj-$(CONFIG_ACPI_CPPC_LIB) += cppc_acpi.o ++obj-$(CONFIG_ACPI_SPCR_TABLE) += spcr.o + obj-$(CONFIG_ACPI_DEBUGGER_USER) += acpi_dbg.o + + # processor has its own "processor." module_param namespace +diff --git a/drivers/acpi/spcr.c b/drivers/acpi/spcr.c +new file mode 100644 +index 0000000..e8d7bc7 +--- /dev/null ++++ b/drivers/acpi/spcr.c +@@ -0,0 +1,111 @@ ++/* ++ * Copyright (c) 2012, Intel Corporation ++ * Copyright (c) 2015, Red Hat, Inc. ++ * Copyright (c) 2015, 2016 Linaro Ltd. ++ * ++ * 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. ++ * ++ */ ++ ++#define pr_fmt(fmt) "ACPI: SPCR: " fmt ++ ++#include <linux/acpi.h> ++#include <linux/console.h> ++#include <linux/kernel.h> ++#include <linux/serial_core.h> ++ ++/** ++ * parse_spcr() - parse ACPI SPCR table and add preferred console ++ * ++ * @earlycon: set up earlycon for the console specified by the table ++ * ++ * For the architectures with support for ACPI, CONFIG_ACPI_SPCR_TABLE may be ++ * defined to parse ACPI SPCR table. As a result of the parsing preferred ++ * console is registered and if @earlycon is true, earlycon is set up. ++ * ++ * When CONFIG_ACPI_SPCR_TABLE is defined, this function should be called ++ * from arch inintialization code as soon as the DT/ACPI decision is made. ++ * ++ */ ++int __init parse_spcr(bool earlycon) ++{ ++ static char opts[64]; ++ struct acpi_table_spcr *table; ++ acpi_size table_size; ++ acpi_status status; ++ char *uart; ++ char *iotype; ++ int baud_rate; ++ int err; ++ ++ if (acpi_disabled) ++ return -ENODEV; ++ ++ status = acpi_get_table_with_size(ACPI_SIG_SPCR, 0, ++ (struct acpi_table_header **)&table, ++ &table_size); ++ ++ if (ACPI_FAILURE(status)) ++ return -ENOENT; ++ ++ if (table->header.revision < 2) { ++ err = -ENOENT; ++ pr_err("wrong table version\n"); ++ goto done; ++ } ++ ++ iotype = table->serial_port.space_id == ACPI_ADR_SPACE_SYSTEM_MEMORY ? ++ "mmio" : "io"; ++ ++ switch (table->interface_type) { ++ case ACPI_DBG2_ARM_SBSA_32BIT: ++ iotype = "mmio32"; ++ /* fall through */ ++ case ACPI_DBG2_ARM_PL011: ++ case ACPI_DBG2_ARM_SBSA_GENERIC: ++ case ACPI_DBG2_BCM2835: ++ uart = "pl011"; ++ break; ++ case ACPI_DBG2_16550_COMPATIBLE: ++ case ACPI_DBG2_16550_SUBSET: ++ uart = "uart"; ++ break; ++ default: ++ err = -ENOENT; ++ goto done; ++ } ++ ++ switch (table->baud_rate) { ++ case 3: ++ baud_rate = 9600; ++ break; ++ case 4: ++ baud_rate = 19200; ++ break; ++ case 6: ++ baud_rate = 57600; ++ break; ++ case 7: ++ baud_rate = 115200; ++ break; ++ default: ++ err = -ENOENT; ++ goto done; ++ } ++ ++ snprintf(opts, sizeof(opts), "%s,%s,0x%llx,%d", uart, iotype, ++ table->serial_port.address, baud_rate); ++ ++ pr_info("console: %s\n", opts); ++ ++ if (earlycon) ++ setup_earlycon(opts); ++ ++ err = add_preferred_console(uart, 0, opts + strlen(uart) + 1); ++ ++done: ++ early_acpi_os_unmap_memory((void __iomem *)table, table_size); ++ return err; ++} +diff --git a/drivers/tty/serial/earlycon.c b/drivers/tty/serial/earlycon.c +index 7aae655..ea00b9f 100644 +--- a/drivers/tty/serial/earlycon.c ++++ b/drivers/tty/serial/earlycon.c +@@ -21,6 +21,7 @@ + #include <linux/sizes.h> + #include <linux/of.h> + #include <linux/of_fdt.h> ++#include <linux/acpi.h> + + #ifdef CONFIG_FIX_EARLYCON_MEM + #include <asm/fixmap.h> +@@ -199,6 +200,14 @@ int __init setup_earlycon(char *buf) + return -ENOENT; + } + ++/* ++ * When CONFIG_ACPI_SPCR_TABLE is defined, "earlycon" without parameters in ++ * command line does not start DT earlycon immediately, instead it defers ++ * starting it until DT/ACPI decision is made. At that time if ACPI is enabled ++ * call parse_spcr(), else call early_init_dt_scan_chosen_stdout() ++ */ ++bool earlycon_init_is_deferred __initdata; ++ + /* early_param wrapper for setup_earlycon() */ + static int __init param_setup_earlycon(char *buf) + { +@@ -208,8 +217,14 @@ static int __init param_setup_earlycon(char *buf) + * Just 'earlycon' is a valid param for devicetree earlycons; + * don't generate a warning from parse_early_params() in that case + */ +- if (!buf || !buf[0]) +- return early_init_dt_scan_chosen_stdout(); ++ if (!buf || !buf[0]) { ++ if (IS_ENABLED(CONFIG_ACPI_SPCR_TABLE)) { ++ earlycon_init_is_deferred = true; ++ return 0; ++ } else { ++ return early_init_dt_scan_chosen_stdout(); ++ } ++ } + + err = setup_earlycon(buf); + if (err == -ENOENT || err == -EALREADY) +diff --git a/include/linux/acpi.h b/include/linux/acpi.h +index 4d8452c..32407e4 100644 +--- a/include/linux/acpi.h ++++ b/include/linux/acpi.h +@@ -1074,4 +1074,10 @@ void acpi_table_upgrade(void); + static inline void acpi_table_upgrade(void) { } + #endif + ++#ifdef CONFIG_ACPI_SPCR_TABLE ++int parse_spcr(bool earlycon); ++#else ++static inline int parse_spcr(bool earlycon) { return 0; } ++#endif ++ + #endif /*_LINUX_ACPI_H*/ +diff --git a/include/linux/serial_core.h b/include/linux/serial_core.h +index 2f44e20..04b8cfb 100644 +--- a/include/linux/serial_core.h ++++ b/include/linux/serial_core.h +@@ -367,11 +367,18 @@ extern const struct earlycon_id __earlycon_table_end[]; + + #define EARLYCON_DECLARE(_name, fn) OF_EARLYCON_DECLARE(_name, "", fn) + +-extern int setup_earlycon(char *buf); + extern int of_setup_earlycon(const struct earlycon_id *match, + unsigned long node, + const char *options); + ++#ifdef CONFIG_SERIAL_EARLYCON ++extern bool earlycon_init_is_deferred __initdata; ++extern int setup_earlycon(char *buf); ++#else ++static const bool earlycon_init_is_deferred; ++static inline int setup_earlycon(char *buf) { return 0; } ++#endif ++ + struct uart_port *uart_get_console(struct uart_port *ports, int nr, + struct console *c); + int uart_parse_earlycon(char *p, unsigned char *iotype, unsigned long *addr, +From patchwork Thu Aug 11 15:31:40 2016 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +Subject: [v9,3/4] ARM64: ACPI: enable ACPI_SPCR_TABLE +From: Aleksey Makarov <aleksey.makarov@linaro.org> +X-Patchwork-Id: 9275457 +Message-Id: <20160811153152.755-4-aleksey.makarov@linaro.org> +To: "Rafael J . Wysocki" <rjw@rjwysocki.net>, + Greg Kroah-Hartman <gregkh@linuxfoundation.org> +Cc: linux-serial@vger.kernel.org, linux-acpi@vger.kernel.org, + linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, + Aleksey Makarov <aleksey.makarov@linaro.org>, + Russell King <linux@arm.linux.org.uk>, Len Brown <lenb@kernel.org>, + Leif Lindholm <leif.lindholm@linaro.org>, + Graeme Gregory <graeme.gregory@linaro.org>, Al Stone <ahs3@redhat.com>, + Christopher Covington <cov@codeaurora.org>, + Yury Norov <ynorov@caviumnetworks.com>, + Peter Hurley <peter@hurleysoftware.com>, + Andy Shevchenko <andy.shevchenko@gmail.com>, + "Zheng, Lv" <lv.zheng@intel.com>, Mark Salter <msalter@redhat.com>, + Kefeng Wang <wangkefeng.wang@huawei.com>, + Catalin Marinas <catalin.marinas@arm.com>, + Will Deacon <will.deacon@arm.com> +Date: Thu, 11 Aug 2016 18:31:40 +0300 + +SBBR mentions SPCR as a mandatory ACPI table. So enable it for ARM64 + +Earlycon should be set up as early as possible. ACPI boot tables are +mapped in arch/arm64/kernel/acpi.c:acpi_boot_table_init() that +is called from setup_arch() and that's where we parse SPCR. +So it has to be opted-in per-arch. + +When ACPI_SPCR_TABLE is defined initialization of DT earlycon is +deferred until the DT/ACPI decision is done. Initialize DT earlycon +if ACPI is disabled. + +Signed-off-by: Aleksey Makarov <aleksey.makarov@linaro.org> +Tested-by: Kefeng Wang <wangkefeng.wang@huawei.com> +--- + arch/arm64/Kconfig | 1 + + arch/arm64/kernel/acpi.c | 11 ++++++++++- + 2 files changed, 11 insertions(+), 1 deletion(-) + +diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig +index 69c8787..a54dfc0 100644 +--- a/arch/arm64/Kconfig ++++ b/arch/arm64/Kconfig +@@ -4,6 +4,7 @@ config ARM64 + select ACPI_GENERIC_GSI if ACPI + select ACPI_REDUCED_HARDWARE_ONLY if ACPI + select ACPI_MCFG if ACPI ++ select ACPI_SPCR_TABLE if ACPI + select ARCH_HAS_DEVMEM_IS_ALLOWED + select ARCH_HAS_ACPI_TABLE_UPGRADE if ACPI + select ARCH_HAS_ATOMIC64_DEC_IF_POSITIVE +diff --git a/arch/arm64/kernel/acpi.c b/arch/arm64/kernel/acpi.c +index 3e4f1a4..252a6d9 100644 +--- a/arch/arm64/kernel/acpi.c ++++ b/arch/arm64/kernel/acpi.c +@@ -24,6 +24,7 @@ + #include <linux/memblock.h> + #include <linux/of_fdt.h> + #include <linux/smp.h> ++#include <linux/serial_core.h> + + #include <asm/cputype.h> + #include <asm/cpu_ops.h> +@@ -206,7 +207,7 @@ void __init acpi_boot_table_init(void) + if (param_acpi_off || + (!param_acpi_on && !param_acpi_force && + of_scan_flat_dt(dt_scan_depth1_nodes, NULL))) +- return; ++ goto done; + + /* + * ACPI is disabled at this point. Enable it in order to parse +@@ -226,6 +227,14 @@ void __init acpi_boot_table_init(void) + if (!param_acpi_force) + disable_acpi(); + } ++ ++done: ++ if (acpi_disabled) { ++ if (earlycon_init_is_deferred) ++ early_init_dt_scan_chosen_stdout(); ++ } else { ++ parse_spcr(earlycon_init_is_deferred); ++ } + } + + #ifdef CONFIG_ACPI_APEI +From patchwork Mon Aug 15 13:35:03 2016 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +Subject: [v9,4/4] serial: pl011: add console matching function +From: Aleksey Makarov <aleksey.makarov@linaro.org> +X-Patchwork-Id: 9280971 +Message-Id: <20160815133505.15294-1-aleksey.makarov@linaro.org> +To: "Rafael J . Wysocki" <rjw@rjwysocki.net>, + Greg Kroah-Hartman <gregkh@linuxfoundation.org> +Cc: linux-serial@vger.kernel.org, linux-acpi@vger.kernel.org, + linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, + Aleksey Makarov <aleksey.makarov@linaro.org>, + Russell King <linux@arm.linux.org.uk>, Len Brown <lenb@kernel.org>, + Leif Lindholm <leif.lindholm@linaro.org>, + Graeme Gregory <graeme.gregory@linaro.org>, Al Stone <ahs3@redhat.com>, + Christopher Covington <cov@codeaurora.org>, + Yury Norov <ynorov@caviumnetworks.com>, + Peter Hurley <peter@hurleysoftware.com>, + Andy Shevchenko <andy.shevchenko@gmail.com>, + "Zheng, Lv" <lv.zheng@intel.com>, Mark Salter <msalter@redhat.com>, + Kefeng Wang <wangkefeng.wang@huawei.com>, + Russell King <linux@armlinux.org.uk>, Jiri Slaby <jslaby@suse.com> +Date: Mon, 15 Aug 2016 16:35:03 +0300 + +This patch adds function pl011_console_match() that implements +method match of struct console. It allows to match consoles against +data specified in a string, for example taken from command line or +compiled by ACPI SPCR table handler. + +Signed-off-by: Aleksey Makarov <aleksey.makarov@linaro.org> +Reviewed-by: Peter Hurley <peter@hurleysoftware.com> +Acked-by: Russell King <rmk+kernel@armlinux.org.uk> +--- + drivers/tty/serial/amba-pl011.c | 55 +++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 55 insertions(+) + +diff --git a/drivers/tty/serial/amba-pl011.c b/drivers/tty/serial/amba-pl011.c +index 8a9e213..2f9af8a 100644 +--- a/drivers/tty/serial/amba-pl011.c ++++ b/drivers/tty/serial/amba-pl011.c +@@ -2288,12 +2288,67 @@ static int __init pl011_console_setup(struct console *co, char *options) + return uart_set_options(&uap->port, co, baud, parity, bits, flow); + } + ++/** ++ * pl011_console_match - non-standard console matching ++ * @co: registering console ++ * @name: name from console command line ++ * @idx: index from console command line ++ * @options: ptr to option string from console command line ++ * ++ * Only attempts to match console command lines of the form: ++ * console=pl011,mmio|mmio32,<addr>[,<options>] ++ * console=pl011,0x<addr>[,<options>] ++ * This form is used to register an initial earlycon boot console and ++ * replace it with the amba_console at pl011 driver init. ++ * ++ * Performs console setup for a match (as required by interface) ++ * If no <options> are specified, then assume the h/w is already setup. ++ * ++ * Returns 0 if console matches; otherwise non-zero to use default matching ++ */ ++static int __init pl011_console_match(struct console *co, char *name, int idx, ++ char *options) ++{ ++ unsigned char iotype; ++ unsigned long addr; ++ int i; ++ ++ if (strcmp(name, "pl011") != 0) ++ return -ENODEV; ++ ++ if (uart_parse_earlycon(options, &iotype, &addr, &options)) ++ return -ENODEV; ++ ++ if (iotype != UPIO_MEM && iotype != UPIO_MEM32) ++ return -ENODEV; ++ ++ /* try to match the port specified on the command line */ ++ for (i = 0; i < ARRAY_SIZE(amba_ports); i++) { ++ struct uart_port *port; ++ ++ if (!amba_ports[i]) ++ continue; ++ ++ port = &amba_ports[i]->port; ++ ++ if (port->mapbase != addr) ++ continue; ++ ++ co->index = i; ++ port->cons = co; ++ return pl011_console_setup(co, options); ++ } ++ ++ return -ENODEV; ++} ++ + static struct uart_driver amba_reg; + static struct console amba_console = { + .name = "ttyAMA", + .write = pl011_console_write, + .device = uart_console_device, + .setup = pl011_console_setup, ++ .match = pl011_console_match, + .flags = CON_PRINTBUFFER, + .index = -1, + .data = &amba_reg, diff --git a/arm64-avoid-needing-console-to-enable-serial-console.patch b/arm64-avoid-needing-console-to-enable-serial-console.patch deleted file mode 100644 index 3c639a0a3..000000000 --- a/arm64-avoid-needing-console-to-enable-serial-console.patch +++ /dev/null @@ -1,46 +0,0 @@ -From ce7a9e482dcf66d155e74b39ada1708cf6d9cb25 Mon Sep 17 00:00:00 2001 -From: Mark Salter <msalter@redhat.com> -Date: Wed, 25 Mar 2015 14:17:50 -0400 -Subject: [PATCH] arm64: avoid needing console= to enable serial console - -Tell kernel to prefer one of the serial ports for console on -platforms currently supported (pl011 or 8250). console= on -command line will override these assumed preferences. This is -just a hack to get the behavior we want from DT provided by -firmware. - -Signed-off-by: Mark Salter <msalter@redhat.com> ---- - arch/arm64/kernel/setup.c | 20 ++++++++++++++++++++ - 1 file changed, 20 insertions(+) - -diff --git a/arch/arm64/kernel/setup.c b/arch/arm64/kernel/setup.c -index 9dc67769b6a4..dfac33b47423 100644 ---- a/arch/arm64/kernel/setup.c -+++ b/arch/arm64/kernel/setup.c -@@ -417,3 +417,22 @@ static int __init register_kernel_offset_dumper(void) - return 0; - } - __initcall(register_kernel_offset_dumper); -+ -+/* -+ * Temporary hack to avoid need for console= on command line -+ */ -+static int __init arm64_console_setup(void) -+{ -+ /* Allow cmdline to override our assumed preferences */ -+ if (console_set_on_cmdline) -+ return 0; -+ -+ if (IS_ENABLED(CONFIG_SERIAL_AMBA_PL011)) -+ add_preferred_console("ttyAMA", 0, "115200"); -+ -+ if (IS_ENABLED(CONFIG_SERIAL_8250)) -+ add_preferred_console("ttyS", 0, "115200"); -+ -+ return 0; -+} -+early_initcall(arm64_console_setup); --- -2.5.0 - diff --git a/config-arm-generic b/config-arm-generic index bae4c1640..299dcf58a 100644 --- a/config-arm-generic +++ b/config-arm-generic @@ -31,7 +31,6 @@ CONFIG_INPUT_PWM_BEEPER=m CONFIG_ARM_SP805_WATCHDOG=m CONFIG_ARM_ARCH_TIMER=y CONFIG_ARM_ARCH_TIMER_EVTSTREAM=y -CONFIG_NR_CPUS=8 CONFIG_SWIOTLB=y CONFIG_DMA_VIRTUAL_CHANNELS=y diff --git a/config-arm64 b/config-arm64 index 591a60a06..2290a24cd 100644 --- a/config-arm64 +++ b/config-arm64 @@ -43,6 +43,7 @@ CONFIG_CAVIUM_ERRATUM_27456=y # CONFIG_SERIAL_AMBA_PL010 is not set # CONFIG_AMBA_PL08X is not set CONFIG_ARM_SMMU_V3=y +CONFIG_NR_CPUS=256 CONFIG_ARCH_HAS_HOLES_MEMORYMODEL=y CONFIG_ARCH_REQUIRE_GPIOLIB=y diff --git a/config-armv7-generic b/config-armv7-generic index a8f26d36d..7c9c1d605 100644 --- a/config-armv7-generic +++ b/config-armv7-generic @@ -35,6 +35,7 @@ CONFIG_IRQ_CROSSBAR=y CONFIG_IOMMU_IO_PGTABLE_LPAE=y CONFIG_CPU_SW_DOMAIN_PAN=y CONFIG_ARM_CPU_SUSPEND=y +CONFIG_NR_CPUS=32 # CONFIG_MCPM is not set # CONFIG_OABI_COMPAT is not set diff --git a/config-generic b/config-generic index 5b0be63d4..c26b10330 100644 --- a/config-generic +++ b/config-generic @@ -1859,13 +1859,13 @@ CONFIG_B43=m CONFIG_B43_SDIO=y CONFIG_B43_BCMA=y CONFIG_B43_BCMA_PIO=y -# CONFIG_B43_DEBUG is not set +CONFIG_B43_DEBUG=y CONFIG_B43_PHY_LP=y CONFIG_B43_PHY_N=y CONFIG_B43_PHY_HT=y CONFIG_B43_PHY_G=y CONFIG_B43LEGACY=m -# CONFIG_B43LEGACY_DEBUG is not set +CONFIG_B43LEGACY_DEBUG=y CONFIG_B43LEGACY_DMA=y CONFIG_B43LEGACY_PIO=y CONFIG_B43LEGACY_DMA_AND_PIO_MODE=y @@ -5274,7 +5274,7 @@ CONFIG_PM_DEBUG=y # CONFIG_DPM_WATCHDOG is not set # revisit this in debug CONFIG_PM_TRACE=y CONFIG_PM_TRACE_RTC=y -# CONFIG_PM_TEST_SUSPEND is not set +CONFIG_PM_TEST_SUSPEND=y # CONFIG_PM_OPP is not set # CONFIG_PM_AUTOSLEEP is not set # CONFIG_PM_WAKELOCKS is not set diff --git a/config-nodebug b/config-nodebug index 4bd461d8f..0dc864752 100644 --- a/config-nodebug +++ b/config-nodebug @@ -2,102 +2,102 @@ CONFIG_SND_VERBOSE_PRINTK=y CONFIG_SND_DEBUG=y CONFIG_SND_PCM_XRUN_DEBUG=y -# CONFIG_DEBUG_ATOMIC_SLEEP is not set - -# CONFIG_DEBUG_MUTEXES is not set -# CONFIG_DEBUG_RT_MUTEXES is not set -# CONFIG_DEBUG_LOCK_ALLOC is not set -# CONFIG_LOCK_TORTURE_TEST is not set -# CONFIG_PROVE_LOCKING is not set -# CONFIG_DEBUG_SPINLOCK is not set -# CONFIG_PROVE_RCU is not set +CONFIG_DEBUG_ATOMIC_SLEEP=y + +CONFIG_DEBUG_MUTEXES=y +CONFIG_DEBUG_RT_MUTEXES=y +CONFIG_DEBUG_LOCK_ALLOC=y +CONFIG_LOCK_TORTURE_TEST=m +CONFIG_PROVE_LOCKING=y +CONFIG_DEBUG_SPINLOCK=y +CONFIG_PROVE_RCU=y # CONFIG_PROVE_RCU_REPEATEDLY is not set -# CONFIG_DEBUG_PER_CPU_MAPS is not set +CONFIG_DEBUG_PER_CPU_MAPS=y CONFIG_CPUMASK_OFFSTACK=y -# CONFIG_CPU_NOTIFIER_ERROR_INJECT is not set +CONFIG_CPU_NOTIFIER_ERROR_INJECT=m -# CONFIG_FAULT_INJECTION is not set -# CONFIG_FAILSLAB is not set -# CONFIG_FAIL_PAGE_ALLOC is not set -# CONFIG_FAIL_MAKE_REQUEST is not set -# CONFIG_FAULT_INJECTION_DEBUG_FS is not set -# CONFIG_FAULT_INJECTION_STACKTRACE_FILTER is not set -# CONFIG_FAIL_IO_TIMEOUT is not set -# CONFIG_FAIL_MMC_REQUEST is not set +CONFIG_FAULT_INJECTION=y +CONFIG_FAILSLAB=y +CONFIG_FAIL_PAGE_ALLOC=y +CONFIG_FAIL_MAKE_REQUEST=y +CONFIG_FAULT_INJECTION_DEBUG_FS=y +CONFIG_FAULT_INJECTION_STACKTRACE_FILTER=y +CONFIG_FAIL_IO_TIMEOUT=y +CONFIG_FAIL_MMC_REQUEST=y # CONFIG_F2FS_FAULT_INJECTION is not set -# CONFIG_LOCK_STAT is not set +CONFIG_LOCK_STAT=y -# CONFIG_DEBUG_STACK_USAGE is not set +CONFIG_DEBUG_STACK_USAGE=y -# CONFIG_ACPI_DEBUG is not set +CONFIG_ACPI_DEBUG=y # CONFIG_ACPI_DEBUGGER is not set -# CONFIG_DEBUG_SG is not set -# CONFIG_DEBUG_PI_LIST is not set +CONFIG_DEBUG_SG=y +CONFIG_DEBUG_PI_LIST=y # CONFIG_PAGE_EXTENSION is not set # CONFIG_PAGE_OWNER is not set # CONFIG_DEBUG_PAGEALLOC is not set -# CONFIG_DEBUG_OBJECTS is not set +CONFIG_DEBUG_OBJECTS=y # CONFIG_DEBUG_OBJECTS_SELFTEST is not set -# CONFIG_DEBUG_OBJECTS_FREE is not set -# CONFIG_DEBUG_OBJECTS_TIMERS is not set -# CONFIG_DEBUG_OBJECTS_RCU_HEAD is not set +CONFIG_DEBUG_OBJECTS_FREE=y +CONFIG_DEBUG_OBJECTS_TIMERS=y +CONFIG_DEBUG_OBJECTS_RCU_HEAD=y CONFIG_DEBUG_OBJECTS_ENABLE_DEFAULT=1 CONFIG_X86_PTDUMP=y -# CONFIG_ARM64_PTDUMP is not set -# CONFIG_EFI_PGT_DUMP is not set +CONFIG_ARM64_PTDUMP=y +CONFIG_EFI_PGT_DUMP=y -# CONFIG_CAN_DEBUG_DEVICES is not set +CONFIG_CAN_DEBUG_DEVICES=y -# CONFIG_MODULE_FORCE_UNLOAD is not set +CONFIG_MODULE_FORCE_UNLOAD=y -# CONFIG_DEBUG_NOTIFIERS is not set +CONFIG_DEBUG_NOTIFIERS=y -# CONFIG_DMA_API_DEBUG is not set +CONFIG_DMA_API_DEBUG=y -# CONFIG_MMIOTRACE is not set +CONFIG_MMIOTRACE=y -# CONFIG_DEBUG_CREDENTIALS is not set +CONFIG_DEBUG_CREDENTIALS=y # off in both production debug and nodebug builds, # on in rawhide nodebug builds -# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set +CONFIG_DEBUG_FORCE_WEAK_PER_CPU=y -# CONFIG_EXT4_DEBUG is not set +CONFIG_EXT4_DEBUG=y # CONFIG_XFS_WARN is not set -# CONFIG_DEBUG_PERF_USE_VMALLOC is not set +CONFIG_DEBUG_PERF_USE_VMALLOC=y -# CONFIG_JBD2_DEBUG is not set +CONFIG_JBD2_DEBUG=y -# CONFIG_NFSD_FAULT_INJECTION is not set +CONFIG_NFSD_FAULT_INJECTION=y -# CONFIG_DEBUG_BLK_CGROUP is not set +CONFIG_DEBUG_BLK_CGROUP=y -# CONFIG_DRBD_FAULT_INJECTION is not set +CONFIG_DRBD_FAULT_INJECTION=y -# CONFIG_ATH_DEBUG is not set -# CONFIG_CARL9170_DEBUGFS is not set -# CONFIG_IWLWIFI_DEVICE_TRACING is not set +CONFIG_ATH_DEBUG=y +CONFIG_CARL9170_DEBUGFS=y +CONFIG_IWLWIFI_DEVICE_TRACING=y # CONFIG_RTLWIFI_DEBUG is not set -# CONFIG_DEBUG_OBJECTS_WORK is not set +CONFIG_DEBUG_OBJECTS_WORK=y -# CONFIG_DMADEVICES_DEBUG is not set +CONFIG_DMADEVICES_DEBUG=y # CONFIG_DMADEVICES_VDEBUG is not set CONFIG_PM_ADVANCED_DEBUG=y -# CONFIG_CEPH_LIB_PRETTYDEBUG is not set -# CONFIG_QUOTA_DEBUG is not set +CONFIG_CEPH_LIB_PRETTYDEBUG=y +CONFIG_QUOTA_DEBUG=y CONFIG_KGDB_KDB=y @@ -105,19 +105,19 @@ CONFIG_KDB_DEFAULT_ENABLE=0x0 CONFIG_KDB_KEYBOARD=y CONFIG_KDB_CONTINUE_CATASTROPHIC=0 -# CONFIG_DEBUG_OBJECTS_PERCPU_COUNTER is not set +CONFIG_DEBUG_OBJECTS_PERCPU_COUNTER=y # CONFIG_PERCPU_TEST is not set -# CONFIG_TEST_LIST_SORT is not set +CONFIG_TEST_LIST_SORT=y # CONFIG_TEST_STRING_HELPERS is not set -# CONFIG_DETECT_HUNG_TASK is not set +CONFIG_DETECT_HUNG_TASK=y CONFIG_DEFAULT_HUNG_TASK_TIMEOUT=120 # CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not set -# CONFIG_WQ_WATCHDOG is not set +CONFIG_WQ_WATCHDOG=y -# CONFIG_X86_BOOTPARAM_MEMORY_CORRUPTION_CHECK is not set +CONFIG_X86_BOOTPARAM_MEMORY_CORRUPTION_CHECK=y -# CONFIG_DEBUG_KMEMLEAK is not set +CONFIG_DEBUG_KMEMLEAK=y CONFIG_DEBUG_KMEMLEAK_EARLY_LOG_SIZE=1024 # CONFIG_DEBUG_KMEMLEAK_TEST is not set CONFIG_DEBUG_KMEMLEAK_DEFAULT_OFF=y @@ -128,4 +128,4 @@ CONFIG_DEBUG_KMEMLEAK_DEFAULT_OFF=y # CONFIG_SPI_DEBUG is not set -# CONFIG_DEBUG_VM_PGFLAGS is not set +CONFIG_DEBUG_VM_PGFLAGS=y diff --git a/config-x86-generic b/config-x86-generic index 05465810d..7df9a0751 100644 --- a/config-x86-generic +++ b/config-x86-generic @@ -384,7 +384,7 @@ CONFIG_SP5100_TCO=m # CONFIG_MEMTEST is not set # CONFIG_DEBUG_TLBFLUSH is not set -# CONFIG_MAXSMP is not set +CONFIG_MAXSMP=y CONFIG_HP_ILO=m @@ -1 +1 @@ -fa8410b355251fd30341662a40ac6b22d3e38468 +cad9d20784e9b31f0fa8eb82b4ae5dad633b560d diff --git a/i8042-set-up-shared-ps2_cmd_mutex-for-aux-ports.patch b/i8042-set-up-shared-ps2_cmd_mutex-for-aux-ports.patch new file mode 100644 index 000000000..58b1ccefa --- /dev/null +++ b/i8042-set-up-shared-ps2_cmd_mutex-for-aux-ports.patch @@ -0,0 +1,34 @@ +From 47af45d684b5f3ae000ad448db02ce4f13f73273 Mon Sep 17 00:00:00 2001 +From: Dmitry Torokhov <dmitry.torokhov@gmail.com> +Date: Tue, 16 Aug 2016 17:38:54 -0700 +Subject: Input: i8042 - set up shared ps2_cmd_mutex for AUX ports + +The commit 4097461897df ("Input: i8042 - break load dependency ...") +correctly set up ps2_cmd_mutex pointer for the KBD port but forgot to do +the same for AUX port(s), which results in communication on KBD and AUX +ports to clash with each other. + +Fixes: 4097461897df ("Input: i8042 - break load dependency ...") +Reported-by: Bruno Wolff III <bruno@wolff.to> +Tested-by: Bruno Wolff III <bruno@wolff.to> +Cc: stable@vger.kernel.org +Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com> +--- + drivers/input/serio/i8042.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/drivers/input/serio/i8042.c b/drivers/input/serio/i8042.c +index b4d3408..405252a 100644 +--- a/drivers/input/serio/i8042.c ++++ b/drivers/input/serio/i8042.c +@@ -1305,6 +1305,7 @@ static int __init i8042_create_aux_port(int idx) + serio->write = i8042_aux_write; + serio->start = i8042_start; + serio->stop = i8042_stop; ++ serio->ps2_cmd_mutex = &i8042_mutex; + serio->port_data = port; + serio->dev.parent = &i8042_platform_device->dev; + if (idx < 0) { +-- +cgit v0.12 + diff --git a/kernel.spec b/kernel.spec index e4fe16c3f..7a6c276ef 100644 --- a/kernel.spec +++ b/kernel.spec @@ -77,7 +77,7 @@ Summary: The Linux kernel # The rc snapshot level %define rcrev 3 # The git snapshot level -%define gitrev 0 +%define gitrev 1 # Set rpm version accordingly %define rpmversion 4.%{upstream_sublevel}.0 %endif @@ -133,7 +133,7 @@ Summary: The Linux kernel # Set debugbuildsenabled to 1 for production (build separate debug kernels) # and 0 for rawhide (all kernels are debug kernels). # See also 'make debug' and 'make release'. -%define debugbuildsenabled 1 +%define debugbuildsenabled 0 # Want to build a vanilla kernel build without any non-upstream patches? %define with_vanilla %{?_without_vanilla: 0} %{?!_without_vanilla: 1} @@ -514,7 +514,11 @@ Source5005: kbuild-AFTER_LINK.patch # Standalone patches -Patch420: arm64-avoid-needing-console-to-enable-serial-console.patch +# http://www.spinics.net/lists/arm-kernel/msg523359.html +Patch420: arm64-ACPI-parse-SPCR-table.patch + +# a tempory patch for QCOM hardware enablement. Will be gone by end of 2016/F-26 GA +Patch421: qcom-QDF2432-tmp-errata.patch # http://www.spinics.net/lists/arm-kernel/msg490981.html Patch422: geekbox-v4-device-tree-support.patch @@ -625,6 +629,15 @@ Patch842: qxl-reapply-cursor-after-SetCrtc-calls.patch #CVE-2016-6828 rhbz 1367091,1367092 Patch843: tcp-fix-use-after-free-in-tcp_xmit_retransmit_queue.patch +#rhbz 1365940 +Patch844: 0001-udp-fix-poll-issue-with-zero-sized-packets.patch + +# From kernel list, currently in linux-next +Patch845: HID-microsoft-Add-Surface-4-type-cover-pro-4-JP.patch + +#rhbz 1366224 +Patch846: i8042-set-up-shared-ps2_cmd_mutex-for-aux-ports.patch + # END OF PATCH DEFINITIONS %endif @@ -2162,6 +2175,19 @@ fi # # %changelog +* Wed Aug 24 2016 Justin M. Forbes <jforbes@fedoraproject.org> - 4.8.0-0.rc3.git1.1 +- Linux v4.8-rc3-26-gcad9d20 +- Reenable debugging options. +- Fix keyboard input for some devices (rhbz 1366224) + +* Tue Aug 23 2016 Laura Abbott <labbott@fedoraproject.org> +- Fix for inabiltiy to send zero sized UDP packets (rhbz 1365940) + +* Tue Aug 23 2016 Peter Robinson <pbrobinson@fedoraproject.org> +- Qualcomm QDF2432 errata fix +- Move to upstream patches for ACPI SPCR (serial console) +- Adjust max CPUs on ARM platforms to reflect newer real world hardware + * Mon Aug 22 2016 Justin M. Forbes <jforbes@fedoraproject.org> - 4.8.0-0.rc3.git0.1 - Linux v4.8-rc3 - Disable debugging options. diff --git a/qcom-QDF2432-tmp-errata.patch b/qcom-QDF2432-tmp-errata.patch new file mode 100644 index 000000000..f7ace4787 --- /dev/null +++ b/qcom-QDF2432-tmp-errata.patch @@ -0,0 +1,59 @@ +From edc7986d4d405daebaf2f66269b353da579fce5f Mon Sep 17 00:00:00 2001 +From: Christopher Covington <cov@codeaurora.org> +Date: Tue, 31 May 2016 16:19:02 -0400 +Subject: arm64: Workaround for QDF2432 ID_AA64 SR accesses + +The ARMv8.0 architecture reserves several system register encodings for +future use. These encodings should behave as read-only and always return +zero on a read. As described in Errata 94, the CPU cores in the QDF2432 +errantly cause an instruction abort if an AArch64 MRS instruction attempts +to read any of the following system register encodings: + + Op0, Op1, CRn, CRm, Op2 + 3, 0, C0, [C4-C7], [2-3, 6-7] + 3, 0, C0, C3, [3-7] + 3, 0, C0, [C4,C6,C7], [4-5] + 3, 0, C0, C2, [6-7] + +Naively projecting ARMv8.0 names, this space includes: + + ID_AA64PFR[2-7]_EL1 + ID_AA64DFR[2-3]_EL1 + ID_AA64AFR[2-3]_EL1 + ID_AA64ISAR[2-7]_EL1 + ID_AA64MMFR[2-7]_EL1 + +As of v4.8-rc2, Linux only attempts to query one register in this space, +ID_AA64MMFR2_EL1. As simple workaround, skip that access when the affected +MIDR is detected. + +Signed-off-by: Christopher Covington <cov@codeaurora.org> +--- + arch/arm64/kernel/cpuinfo.c | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +diff --git a/arch/arm64/kernel/cpuinfo.c b/arch/arm64/kernel/cpuinfo.c +index ed1b84f..790de6b 100644 +--- a/arch/arm64/kernel/cpuinfo.c ++++ b/arch/arm64/kernel/cpuinfo.c +@@ -325,6 +325,8 @@ static void cpuinfo_detect_icache_policy(struct cpuinfo_arm64 *info) + + static void __cpuinfo_store_cpu(struct cpuinfo_arm64 *info) + { ++ bool qdf2432_cpu = read_cpuid_id() == 0x510f2811; ++ + info->reg_cntfrq = arch_timer_get_cntfrq(); + info->reg_ctr = read_cpuid_cachetype(); + info->reg_dczid = read_cpuid(DCZID_EL0); +@@ -337,7 +339,7 @@ static void __cpuinfo_store_cpu(struct cpuinfo_arm64 *info) + info->reg_id_aa64isar1 = read_cpuid(ID_AA64ISAR1_EL1); + info->reg_id_aa64mmfr0 = read_cpuid(ID_AA64MMFR0_EL1); + info->reg_id_aa64mmfr1 = read_cpuid(ID_AA64MMFR1_EL1); +- info->reg_id_aa64mmfr2 = read_cpuid(ID_AA64MMFR2_EL1); ++ info->reg_id_aa64mmfr2 = qdf2432_cpu ? 0 : read_cpuid(ID_AA64MMFR2_EL1); + info->reg_id_aa64pfr0 = read_cpuid(ID_AA64PFR0_EL1); + info->reg_id_aa64pfr1 = read_cpuid(ID_AA64PFR1_EL1); + +-- +cgit v0.12 + @@ -1,3 +1,4 @@ 5276563eb1f39a048e4a8a887408c031 linux-4.7.tar.xz fe259c02c75eec61d1aa4b1211f3c853 perf-man-4.7.tar.gz fa0b8dbf79226c52cf0e97bb316bf769 patch-4.8-rc3.xz +f5dff279e939d792cacd5576dbc7ad12 patch-4.8-rc3-git1.xz |