Linux v4.0.4 rebase
This commit is contained in:
parent
27c38fdeef
commit
ea45716900
|
@ -1,34 +0,0 @@
|
|||
From 1f16ea294d2ef63013740f4c8539e430b6c12dff Mon Sep 17 00:00:00 2001
|
||||
From: Johannes Berg <johannes.berg@intel.com>
|
||||
Date: Fri, 6 Mar 2015 09:17:37 +0100
|
||||
Subject: [PATCH] iwlwifi: mvm: remove WARN_ON for invalid BA notification
|
||||
|
||||
The firmware frequently manages to trigger this, and there's
|
||||
no known driver workaround, so stop warning.
|
||||
|
||||
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
|
||||
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
|
||||
---
|
||||
drivers/net/wireless/iwlwifi/mvm/tx.c | 6 ++++--
|
||||
1 file changed, 4 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/drivers/net/wireless/iwlwifi/mvm/tx.c b/drivers/net/wireless/iwlwifi/mvm/tx.c
|
||||
index 07304e1..96a0540 100644
|
||||
--- a/drivers/net/wireless/iwlwifi/mvm/tx.c
|
||||
+++ b/drivers/net/wireless/iwlwifi/mvm/tx.c
|
||||
@@ -949,8 +949,10 @@ int iwl_mvm_rx_ba_notif(struct iwl_mvm *mvm, struct iwl_rx_cmd_buffer *rxb,
|
||||
mvmsta = iwl_mvm_sta_from_mac80211(sta);
|
||||
tid_data = &mvmsta->tid_data[tid];
|
||||
|
||||
- if (WARN_ONCE(tid_data->txq_id != scd_flow, "Q %d, tid %d, flow %d",
|
||||
- tid_data->txq_id, tid, scd_flow)) {
|
||||
+ if (tid_data->txq_id != scd_flow) {
|
||||
+ IWL_ERR(mvm,
|
||||
+ "invalid BA notification: Q %d, tid %d, flow %d\n",
|
||||
+ tid_data->txq_id, tid, scd_flow);
|
||||
rcu_read_unlock();
|
||||
return 0;
|
||||
}
|
||||
--
|
||||
2.1.0
|
||||
|
|
@ -20,7 +20,7 @@ Signed-off-by: Matthew Garrett <matthew.garrett@nebula.com>
|
|||
7 files changed, 69 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/Documentation/x86/zero-page.txt b/Documentation/x86/zero-page.txt
|
||||
index 199f453cb4de..ec38acf00b40 100644
|
||||
index 82fbdbc1e0b0..a811210ad486 100644
|
||||
--- a/Documentation/x86/zero-page.txt
|
||||
+++ b/Documentation/x86/zero-page.txt
|
||||
@@ -30,6 +30,8 @@ Offset Proto Name Meaning
|
||||
|
@ -33,10 +33,10 @@ index 199f453cb4de..ec38acf00b40 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 36327438caf0..61542c282e70 100644
|
||||
index b7d31ca55187..ab403a636357 100644
|
||||
--- a/arch/x86/Kconfig
|
||||
+++ b/arch/x86/Kconfig
|
||||
@@ -1566,6 +1566,16 @@ config EFI_MIXED
|
||||
@@ -1695,6 +1695,16 @@ config EFI_MIXED
|
||||
|
||||
If unsure, say N.
|
||||
|
||||
|
@ -54,7 +54,7 @@ index 36327438caf0..61542c282e70 100644
|
|||
def_bool y
|
||||
prompt "Enable seccomp to safely compute untrusted bytecode"
|
||||
diff --git a/arch/x86/boot/compressed/eboot.c b/arch/x86/boot/compressed/eboot.c
|
||||
index de8eebd6f67c..975d11bfaf5b 100644
|
||||
index ef17683484e9..105e7360d747 100644
|
||||
--- a/arch/x86/boot/compressed/eboot.c
|
||||
+++ b/arch/x86/boot/compressed/eboot.c
|
||||
@@ -12,6 +12,7 @@
|
||||
|
@ -63,9 +63,9 @@ index de8eebd6f67c..975d11bfaf5b 100644
|
|||
#include <asm/desc.h>
|
||||
+#include <asm/bootparam_utils.h>
|
||||
|
||||
#undef memcpy /* Use memcpy from misc.c */
|
||||
|
||||
@@ -814,6 +815,37 @@ out:
|
||||
#include "../string.h"
|
||||
#include "eboot.h"
|
||||
@@ -827,6 +828,37 @@ out:
|
||||
return status;
|
||||
}
|
||||
|
||||
|
@ -103,7 +103,7 @@ index de8eebd6f67c..975d11bfaf5b 100644
|
|||
/*
|
||||
* See if we have Graphics Output Protocol
|
||||
*/
|
||||
@@ -1389,6 +1421,10 @@ struct boot_params *efi_main(struct efi_config *c,
|
||||
@@ -1406,6 +1438,10 @@ struct boot_params *efi_main(struct efi_config *c,
|
||||
else
|
||||
setup_boot_services32(efi_early);
|
||||
|
||||
|
@ -129,10 +129,10 @@ index 225b0988043a..90dbfb73e11f 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 41ead8d3bc0b..5a5cf7395724 100644
|
||||
index 0a2421cca01f..a3d8174dedf9 100644
|
||||
--- a/arch/x86/kernel/setup.c
|
||||
+++ b/arch/x86/kernel/setup.c
|
||||
@@ -1142,6 +1142,12 @@ void __init setup_arch(char **cmdline_p)
|
||||
@@ -1151,6 +1151,12 @@ void __init setup_arch(char **cmdline_p)
|
||||
|
||||
io_delay_init();
|
||||
|
||||
|
@ -146,7 +146,7 @@ index 41ead8d3bc0b..5a5cf7395724 100644
|
|||
* Parse the ACPI tables for possible boot-time SMP configuration.
|
||||
*/
|
||||
diff --git a/include/linux/module.h b/include/linux/module.h
|
||||
index 341a73ecea2e..cca08ac450e2 100644
|
||||
index b033dab5c8bf..f526b6e02f59 100644
|
||||
--- a/include/linux/module.h
|
||||
+++ b/include/linux/module.h
|
||||
@@ -188,6 +188,12 @@ const struct exception_table_entry *search_exception_tables(unsigned long add);
|
||||
|
@ -163,10 +163,10 @@ index 341a73ecea2e..cca08ac450e2 100644
|
|||
|
||||
extern int modules_disabled; /* for sysctl */
|
||||
diff --git a/kernel/module.c b/kernel/module.c
|
||||
index 1f7b4664300e..866417ecc76a 100644
|
||||
index 0372c3961016..55dacebb687b 100644
|
||||
--- a/kernel/module.c
|
||||
+++ b/kernel/module.c
|
||||
@@ -3843,6 +3843,13 @@ void module_layout(struct module *mod,
|
||||
@@ -3909,6 +3909,13 @@ void module_layout(struct module *mod,
|
||||
EXPORT_SYMBOL(module_layout);
|
||||
#endif
|
||||
|
||||
|
@ -180,6 +180,3 @@ index 1f7b4664300e..866417ecc76a 100644
|
|||
bool secure_modules(void)
|
||||
{
|
||||
#ifdef CONFIG_MODULE_SIG
|
||||
--
|
||||
1.9.3
|
||||
|
||||
|
|
|
@ -15,7 +15,7 @@ Upstream-status: Fedora mustard
|
|||
7 files changed, 65 insertions(+), 10 deletions(-)
|
||||
|
||||
diff --git a/arch/x86/kernel/setup.c b/arch/x86/kernel/setup.c
|
||||
index b40d6174242f..0ee7749bad74 100644
|
||||
index 26c5d54124c1..dab298f03a9c 100644
|
||||
--- a/arch/x86/kernel/setup.c
|
||||
+++ b/arch/x86/kernel/setup.c
|
||||
@@ -70,6 +70,11 @@
|
||||
|
@ -30,7 +30,7 @@ index b40d6174242f..0ee7749bad74 100644
|
|||
#include <video/edid.h>
|
||||
|
||||
#include <asm/mtrr.h>
|
||||
@@ -1277,6 +1282,37 @@ void __init i386_reserve_resources(void)
|
||||
@@ -1278,6 +1283,37 @@ void __init i386_reserve_resources(void)
|
||||
|
||||
#endif /* CONFIG_X86_32 */
|
||||
|
||||
|
@ -81,10 +81,10 @@ index 421e29e4cd81..61c1eb97806c 100644
|
|||
input_set_drvdata(udev->dev, udev);
|
||||
|
||||
diff --git a/drivers/tty/sysrq.c b/drivers/tty/sysrq.c
|
||||
index 42bad18c66c9..496e073b09d7 100644
|
||||
index 259a4d5a4e8f..512c21dcb86f 100644
|
||||
--- a/drivers/tty/sysrq.c
|
||||
+++ b/drivers/tty/sysrq.c
|
||||
@@ -463,6 +463,7 @@ static struct sysrq_key_op *sysrq_key_table[36] = {
|
||||
@@ -464,6 +464,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 */
|
||||
|
@ -92,7 +92,7 @@ index 42bad18c66c9..496e073b09d7 100644
|
|||
NULL, /* x */
|
||||
/* y: May be registered on sparc64 for global register dump */
|
||||
NULL, /* y */
|
||||
@@ -506,7 +507,7 @@ static void __sysrq_put_key_op(int key, struct sysrq_key_op *op_p)
|
||||
@@ -507,7 +508,7 @@ static void __sysrq_put_key_op(int key, struct sysrq_key_op *op_p)
|
||||
sysrq_key_table[i] = op_p;
|
||||
}
|
||||
|
||||
|
@ -101,7 +101,7 @@ index 42bad18c66c9..496e073b09d7 100644
|
|||
{
|
||||
struct sysrq_key_op *op_p;
|
||||
int orig_log_level;
|
||||
@@ -526,11 +527,15 @@ void __handle_sysrq(int key, bool check_mask)
|
||||
@@ -527,11 +528,15 @@ void __handle_sysrq(int key, bool check_mask)
|
||||
|
||||
op_p = __sysrq_get_key_op(key);
|
||||
if (op_p) {
|
||||
|
@ -115,10 +115,10 @@ index 42bad18c66c9..496e073b09d7 100644
|
|||
*/
|
||||
- if (!check_mask || sysrq_on_mask(op_p->enable_mask)) {
|
||||
+ if (from == SYSRQ_FROM_KERNEL || sysrq_on_mask(op_p->enable_mask)) {
|
||||
printk("%s\n", op_p->action_msg);
|
||||
pr_cont("%s\n", op_p->action_msg);
|
||||
console_loglevel = orig_log_level;
|
||||
op_p->handler(key);
|
||||
@@ -562,7 +567,7 @@ void __handle_sysrq(int key, bool check_mask)
|
||||
@@ -563,7 +568,7 @@ void __handle_sysrq(int key, bool check_mask)
|
||||
void handle_sysrq(int key)
|
||||
{
|
||||
if (sysrq_on())
|
||||
|
@ -127,7 +127,7 @@ index 42bad18c66c9..496e073b09d7 100644
|
|||
}
|
||||
EXPORT_SYMBOL(handle_sysrq);
|
||||
|
||||
@@ -642,7 +647,7 @@ static void sysrq_do_reset(unsigned long _state)
|
||||
@@ -643,7 +648,7 @@ static void sysrq_do_reset(unsigned long _state)
|
||||
static void sysrq_handle_reset_request(struct sysrq_state *state)
|
||||
{
|
||||
if (state->reset_requested)
|
||||
|
@ -136,7 +136,7 @@ index 42bad18c66c9..496e073b09d7 100644
|
|||
|
||||
if (sysrq_reset_downtime_ms)
|
||||
mod_timer(&state->keyreset_timer,
|
||||
@@ -793,8 +798,10 @@ static bool sysrq_handle_keypress(struct sysrq_state *sysrq,
|
||||
@@ -794,8 +799,10 @@ static bool sysrq_handle_keypress(struct sysrq_state *sysrq,
|
||||
|
||||
default:
|
||||
if (sysrq->active && value && value != 2) {
|
||||
|
@ -148,7 +148,7 @@ index 42bad18c66c9..496e073b09d7 100644
|
|||
}
|
||||
break;
|
||||
}
|
||||
@@ -1089,7 +1096,7 @@ static ssize_t write_sysrq_trigger(struct file *file, const char __user *buf,
|
||||
@@ -1090,7 +1097,7 @@ static ssize_t write_sysrq_trigger(struct file *file, const char __user *buf,
|
||||
|
||||
if (get_user(c, buf))
|
||||
return -EFAULT;
|
||||
|
@ -215,7 +215,7 @@ index 387fa7d05c98..4b07e30b3279 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 60f6bb817f70..c0a20ee0ad96 100644
|
||||
index 4121345498e0..0ff3cef5df96 100644
|
||||
--- a/kernel/debug/kdb/kdb_main.c
|
||||
+++ b/kernel/debug/kdb/kdb_main.c
|
||||
@@ -1968,7 +1968,7 @@ static int kdb_sr(int argc, const char **argv)
|
||||
|
@ -228,7 +228,7 @@ index 60f6bb817f70..c0a20ee0ad96 100644
|
|||
|
||||
return 0;
|
||||
diff --git a/kernel/module.c b/kernel/module.c
|
||||
index 6244f24abe27..b77554170d76 100644
|
||||
index 55dacebb687b..9d4deeb9268e 100644
|
||||
--- a/kernel/module.c
|
||||
+++ b/kernel/module.c
|
||||
@@ -107,9 +107,9 @@ struct list_head *kdb_modules = &modules; /* kdb needs the list of modules */
|
||||
|
@ -243,6 +243,3 @@ index 6244f24abe27..b77554170d76 100644
|
|||
|
||||
static int param_set_bool_enable_only(const char *val,
|
||||
const struct kernel_param *kp)
|
||||
--
|
||||
2.1.0
|
||||
|
||||
|
|
|
@ -0,0 +1,47 @@
|
|||
From: Benjamin Tissoires <benjamin.tissoires@redhat.com>
|
||||
Date: Thu, 16 Apr 2015 13:01:46 -0400
|
||||
Subject: [PATCH] Input - synaptics: pin 3 touches when the firmware reports 3
|
||||
fingers
|
||||
|
||||
Synaptics PS/2 touchpad can send only 2 touches in a report. They can
|
||||
detect 4 or 5 and this information is valuable.
|
||||
|
||||
In commit 63c4fda (Input: synaptics - allocate 3 slots to keep stability
|
||||
in image sensors), we allocate 3 slots, but we still continue to report
|
||||
the 2 available fingers. That means that the client sees 2 used slots while
|
||||
there is a total of 3 fingers advertised by BTN_TOOL_TRIPLETAP.
|
||||
|
||||
For old kernels this is not a problem because max_slots was 2 and libinput/
|
||||
xorg-synaptics knew how to deal with that. Now that max_slot is 3, the
|
||||
clients ignore BTN_TOOL_TRIPLETAP and count the actual used slots (so 2).
|
||||
It then gets confused when receiving the BTN_TOOL_TRIPLETAP and DOUBLETAP
|
||||
information, and goes wild.
|
||||
|
||||
We can pin the 3 slots until we get a total number of fingers below 2.
|
||||
|
||||
Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=1212230
|
||||
|
||||
Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
|
||||
---
|
||||
drivers/input/mouse/synaptics.c | 8 ++++++++
|
||||
1 file changed, 8 insertions(+)
|
||||
|
||||
diff --git a/drivers/input/mouse/synaptics.c b/drivers/input/mouse/synaptics.c
|
||||
index 630af73e98c4..c69b308beb3f 100644
|
||||
--- a/drivers/input/mouse/synaptics.c
|
||||
+++ b/drivers/input/mouse/synaptics.c
|
||||
@@ -935,6 +935,14 @@ static void synaptics_report_mt_data(struct psmouse *psmouse,
|
||||
input_report_abs(dev, ABS_MT_PRESSURE, hw[i]->z);
|
||||
}
|
||||
|
||||
+ /* keep (slot count <= num_fingers) by pinning all slots */
|
||||
+ if (num_fingers >= 3) {
|
||||
+ for (i = 0; i < 3; i++) {
|
||||
+ input_mt_slot(dev, i);
|
||||
+ input_mt_report_slot_state(dev, MT_TOOL_FINGER, true);
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
input_mt_drop_unused(dev);
|
||||
|
||||
/* Don't use active slot count to generate BTN_TOOL events. */
|
|
@ -1,151 +0,0 @@
|
|||
From: Benjamin Tissoires <benjamin.tissoires@redhat.com>
|
||||
Date: Sun, 8 Mar 2015 22:35:41 -0700
|
||||
Subject: [PATCH] Input: synaptics - re-route tracksticks buttons on the Lenovo
|
||||
2015 series
|
||||
|
||||
The 2015 series of the Lenovo thinkpads added back the hardware buttons on
|
||||
top of the touchpad for the trackstick.
|
||||
|
||||
Unfortunately, they are wired to the touchpad, and not the trackstick.
|
||||
Thus, they are seen as extra buttons from the kernel point of view.
|
||||
|
||||
This leads to a problem in user space because extra buttons on synaptics
|
||||
devices used to be used as scroll up/down buttons. So in the end, the
|
||||
experience for the user is scroll events for buttons left and right when
|
||||
using the trackstick. Yay!
|
||||
|
||||
Fortunately, the firmware advertises such behavior in the extended
|
||||
capability $10, and so we can re-route the buttons through the pass-through
|
||||
interface.
|
||||
|
||||
Hallelujah-expressed-by: Peter Hutterer <peter.hutterer@who-t.net>
|
||||
Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
|
||||
Acked-by: Hans de Goede <hdegoede@redhat.com>
|
||||
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
|
||||
---
|
||||
drivers/input/mouse/synaptics.c | 47 +++++++++++++++++++++++++++++++----------
|
||||
drivers/input/mouse/synaptics.h | 5 +++++
|
||||
2 files changed, 41 insertions(+), 11 deletions(-)
|
||||
|
||||
diff --git a/drivers/input/mouse/synaptics.c b/drivers/input/mouse/synaptics.c
|
||||
index 9d599eb79f17..ecc7811cbd46 100644
|
||||
--- a/drivers/input/mouse/synaptics.c
|
||||
+++ b/drivers/input/mouse/synaptics.c
|
||||
@@ -579,18 +579,22 @@ static int synaptics_is_pt_packet(unsigned char *buf)
|
||||
return (buf[0] & 0xFC) == 0x84 && (buf[3] & 0xCC) == 0xC4;
|
||||
}
|
||||
|
||||
-static void synaptics_pass_pt_packet(struct serio *ptport, unsigned char *packet)
|
||||
+static void synaptics_pass_pt_packet(struct psmouse *psmouse,
|
||||
+ struct serio *ptport,
|
||||
+ unsigned char *packet)
|
||||
{
|
||||
+ struct synaptics_data *priv = psmouse->private;
|
||||
struct psmouse *child = serio_get_drvdata(ptport);
|
||||
|
||||
if (child && child->state == PSMOUSE_ACTIVATED) {
|
||||
- serio_interrupt(ptport, packet[1], 0);
|
||||
+ serio_interrupt(ptport, packet[1] | priv->pt_buttons, 0);
|
||||
serio_interrupt(ptport, packet[4], 0);
|
||||
serio_interrupt(ptport, packet[5], 0);
|
||||
if (child->pktsize == 4)
|
||||
serio_interrupt(ptport, packet[2], 0);
|
||||
- } else
|
||||
+ } else {
|
||||
serio_interrupt(ptport, packet[1], 0);
|
||||
+ }
|
||||
}
|
||||
|
||||
static void synaptics_pt_activate(struct psmouse *psmouse)
|
||||
@@ -847,6 +851,7 @@ static void synaptics_report_ext_buttons(struct psmouse *psmouse,
|
||||
struct input_dev *dev = psmouse->dev;
|
||||
struct synaptics_data *priv = psmouse->private;
|
||||
int ext_bits = (SYN_CAP_MULTI_BUTTON_NO(priv->ext_cap) + 1) >> 1;
|
||||
+ char buf[6] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
|
||||
int i;
|
||||
|
||||
if (!SYN_CAP_MULTI_BUTTON_NO(priv->ext_cap))
|
||||
@@ -857,12 +862,30 @@ static void synaptics_report_ext_buttons(struct psmouse *psmouse,
|
||||
!((psmouse->packet[0] ^ psmouse->packet[3]) & 0x02))
|
||||
return;
|
||||
|
||||
- for (i = 0; i < ext_bits; i++) {
|
||||
- input_report_key(dev, BTN_0 + 2 * i,
|
||||
- hw->ext_buttons & (1 << i));
|
||||
- input_report_key(dev, BTN_1 + 2 * i,
|
||||
- hw->ext_buttons & (1 << (i + ext_bits)));
|
||||
+ if (!SYN_CAP_EXT_BUTTONS_STICK(priv->ext_cap_10)) {
|
||||
+ for (i = 0; i < ext_bits; i++) {
|
||||
+ input_report_key(dev, BTN_0 + 2 * i,
|
||||
+ hw->ext_buttons & (1 << i));
|
||||
+ input_report_key(dev, BTN_1 + 2 * i,
|
||||
+ hw->ext_buttons & (1 << (i + ext_bits)));
|
||||
+ }
|
||||
+ return;
|
||||
}
|
||||
+
|
||||
+ /*
|
||||
+ * This generation of touchpads has the trackstick buttons
|
||||
+ * physically wired to the touchpad. Re-route them through
|
||||
+ * the pass-through interface.
|
||||
+ */
|
||||
+ if (!priv->pt_port)
|
||||
+ return;
|
||||
+
|
||||
+ /* The trackstick expects at most 3 buttons */
|
||||
+ priv->pt_buttons = SYN_CAP_EXT_BUTTON_STICK_L(hw->ext_buttons) |
|
||||
+ SYN_CAP_EXT_BUTTON_STICK_R(hw->ext_buttons) << 1 |
|
||||
+ SYN_CAP_EXT_BUTTON_STICK_M(hw->ext_buttons) << 2;
|
||||
+
|
||||
+ synaptics_pass_pt_packet(psmouse, priv->pt_port, buf);
|
||||
}
|
||||
|
||||
static void synaptics_report_buttons(struct psmouse *psmouse,
|
||||
@@ -1459,7 +1482,8 @@ static psmouse_ret_t synaptics_process_byte(struct psmouse *psmouse)
|
||||
if (SYN_CAP_PASS_THROUGH(priv->capabilities) &&
|
||||
synaptics_is_pt_packet(psmouse->packet)) {
|
||||
if (priv->pt_port)
|
||||
- synaptics_pass_pt_packet(priv->pt_port, psmouse->packet);
|
||||
+ synaptics_pass_pt_packet(psmouse, priv->pt_port,
|
||||
+ psmouse->packet);
|
||||
} else
|
||||
synaptics_process_packet(psmouse);
|
||||
|
||||
@@ -1561,8 +1585,9 @@ static void set_input_params(struct psmouse *psmouse,
|
||||
__set_bit(BTN_BACK, dev->keybit);
|
||||
}
|
||||
|
||||
- for (i = 0; i < SYN_CAP_MULTI_BUTTON_NO(priv->ext_cap); i++)
|
||||
- __set_bit(BTN_0 + i, dev->keybit);
|
||||
+ if (!SYN_CAP_EXT_BUTTONS_STICK(priv->ext_cap_10))
|
||||
+ for (i = 0; i < SYN_CAP_MULTI_BUTTON_NO(priv->ext_cap); i++)
|
||||
+ __set_bit(BTN_0 + i, dev->keybit);
|
||||
|
||||
__clear_bit(EV_REL, dev->evbit);
|
||||
__clear_bit(REL_X, dev->relbit);
|
||||
diff --git a/drivers/input/mouse/synaptics.h b/drivers/input/mouse/synaptics.h
|
||||
index 8d3761ce8f54..f39539c70219 100644
|
||||
--- a/drivers/input/mouse/synaptics.h
|
||||
+++ b/drivers/input/mouse/synaptics.h
|
||||
@@ -111,6 +111,10 @@
|
||||
#define SYN_CAP_EXT_BUTTONS_STICK(ex10) ((ex10) & 0x010000)
|
||||
#define SYN_CAP_SECUREPAD(ex10) ((ex10) & 0x020000)
|
||||
|
||||
+#define SYN_CAP_EXT_BUTTON_STICK_L(eb) (!!((eb) & 0x01))
|
||||
+#define SYN_CAP_EXT_BUTTON_STICK_M(eb) (!!((eb) & 0x02))
|
||||
+#define SYN_CAP_EXT_BUTTON_STICK_R(eb) (!!((eb) & 0x04))
|
||||
+
|
||||
/* synaptics modes query bits */
|
||||
#define SYN_MODE_ABSOLUTE(m) ((m) & (1 << 7))
|
||||
#define SYN_MODE_RATE(m) ((m) & (1 << 6))
|
||||
@@ -192,6 +196,7 @@ struct synaptics_data {
|
||||
bool disable_gesture; /* disable gestures */
|
||||
|
||||
struct serio *pt_port; /* Pass-through serio port */
|
||||
+ unsigned char pt_buttons; /* Pass-through buttons */
|
||||
|
||||
struct synaptics_mt_state mt_state; /* Current mt finger state */
|
||||
bool mt_state_lost; /* mt_state may be incorrect */
|
||||
--
|
||||
2.1.0
|
||||
|
|
@ -1,44 +0,0 @@
|
|||
From: Benjamin Tissoires <benjamin.tissoires@redhat.com>
|
||||
Date: Sun, 8 Mar 2015 22:34:50 -0700
|
||||
Subject: [PATCH] Input: synaptics - remove TOPBUTTONPAD property for Lenovos
|
||||
2015
|
||||
|
||||
The 2015 series of the Lenovo thinkpads added back the hardware buttons on
|
||||
top of the touchpad for the trackstick.
|
||||
|
||||
Unfortunately, Lenovo used the PNPIDs that are supposed to be "5 buttons"
|
||||
touchpads, so the new laptops also have the INPUT_PROP_TOPBUTTONPAD. Yay!
|
||||
|
||||
Instead of manually removing each of the new ones, or hoping that we know
|
||||
all the current ones, we can consider that the PNPIDs list that were given
|
||||
contains touchpads that have the trackstick buttons, either physically
|
||||
wired to them, or emulated with the top software button property.
|
||||
|
||||
Thanks to the extra buttons capability in query $10, we can reliably detect
|
||||
the physical buttons from the software ones, and so we can remove the
|
||||
TOPBUTTONPAD property even if it was declared as such.
|
||||
|
||||
Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
|
||||
Acked-by: Hans de Goede <hdegoede@redhat.com>
|
||||
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
|
||||
---
|
||||
drivers/input/mouse/synaptics.c | 3 ++-
|
||||
1 file changed, 2 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/drivers/input/mouse/synaptics.c b/drivers/input/mouse/synaptics.c
|
||||
index 8f6a153677b9..9d599eb79f17 100644
|
||||
--- a/drivers/input/mouse/synaptics.c
|
||||
+++ b/drivers/input/mouse/synaptics.c
|
||||
@@ -1570,7 +1570,8 @@ static void set_input_params(struct psmouse *psmouse,
|
||||
|
||||
if (SYN_CAP_CLICKPAD(priv->ext_cap_0c)) {
|
||||
__set_bit(INPUT_PROP_BUTTONPAD, dev->propbit);
|
||||
- if (psmouse_matches_pnp_id(psmouse, topbuttonpad_pnp_ids))
|
||||
+ if (psmouse_matches_pnp_id(psmouse, topbuttonpad_pnp_ids) &&
|
||||
+ !SYN_CAP_EXT_BUTTONS_STICK(priv->ext_cap_10))
|
||||
__set_bit(INPUT_PROP_TOPBUTTONPAD, dev->propbit);
|
||||
/* Clickpads report only left button */
|
||||
__clear_bit(BTN_RIGHT, dev->keybit);
|
||||
--
|
||||
2.1.0
|
||||
|
|
@ -1,35 +0,0 @@
|
|||
From: Benjamin Tissoires <benjamin.tissoires@redhat.com>
|
||||
Date: Sun, 8 Mar 2015 22:38:55 -0700
|
||||
Subject: [PATCH] Input: synaptics - remove X1 Carbon 3rd gen from the
|
||||
topbuttonpad list
|
||||
|
||||
Lenovo decided to switch back to physical buttons for the trackstick on
|
||||
their latest series. The PNPId list was provided before they reverted back
|
||||
to physical buttons, so it contains the new models too. We can know from
|
||||
the touchpad capabilities that the touchpad has physical buttons, so
|
||||
removing the ids from the list is not mandatory. It is still nicer to
|
||||
remove the wrong ids, so start by removing the X1 Carbon 3rd gen, with the
|
||||
PNPId of LEN0048.
|
||||
|
||||
Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
|
||||
Acked-by: Hans de Goede <hdegoede@redhat.com>
|
||||
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
|
||||
---
|
||||
drivers/input/mouse/synaptics.c | 1 -
|
||||
1 file changed, 1 deletion(-)
|
||||
|
||||
diff --git a/drivers/input/mouse/synaptics.c b/drivers/input/mouse/synaptics.c
|
||||
index ecc7811cbd46..160def02cde2 100644
|
||||
--- a/drivers/input/mouse/synaptics.c
|
||||
+++ b/drivers/input/mouse/synaptics.c
|
||||
@@ -183,7 +183,6 @@ static const char * const topbuttonpad_pnp_ids[] = {
|
||||
"LEN0045",
|
||||
"LEN0046",
|
||||
"LEN0047",
|
||||
- "LEN0048",
|
||||
"LEN0049",
|
||||
"LEN2000",
|
||||
"LEN2001", /* Edge E431 */
|
||||
--
|
||||
2.1.0
|
||||
|
|
@ -1,32 +0,0 @@
|
|||
From: Benjamin Tissoires <benjamin.tissoires@redhat.com>
|
||||
Date: Sun, 8 Mar 2015 22:39:17 -0700
|
||||
Subject: [PATCH] Input: synaptics - remove X250 from the topbuttonpad list
|
||||
|
||||
Lenovo X250 has a PnpID of LEN0046, but it does not have the top software
|
||||
button requirement.
|
||||
|
||||
For the record, Lenovo T450s and W541 have a PnpID of LEN200f and LEN004a,
|
||||
so they are not on the top software button list.
|
||||
|
||||
Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
|
||||
Reviewed-by: Daniel Martin <consume.noise@gmail.com>
|
||||
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
|
||||
---
|
||||
drivers/input/mouse/synaptics.c | 1 -
|
||||
1 file changed, 1 deletion(-)
|
||||
|
||||
diff --git a/drivers/input/mouse/synaptics.c b/drivers/input/mouse/synaptics.c
|
||||
index 160def02cde2..ca7ca8d4eb33 100644
|
||||
--- a/drivers/input/mouse/synaptics.c
|
||||
+++ b/drivers/input/mouse/synaptics.c
|
||||
@@ -181,7 +181,6 @@ static const char * const topbuttonpad_pnp_ids[] = {
|
||||
"LEN0041",
|
||||
"LEN0042", /* Yoga */
|
||||
"LEN0045",
|
||||
- "LEN0046",
|
||||
"LEN0047",
|
||||
"LEN0049",
|
||||
"LEN2000",
|
||||
--
|
||||
2.1.0
|
||||
|
|
@ -1,125 +0,0 @@
|
|||
From: Benjamin Tissoires <benjamin.tissoires@redhat.com>
|
||||
Date: Sun, 8 Mar 2015 22:34:03 -0700
|
||||
Subject: [PATCH] Input: synaptics - retrieve the extended capabilities in
|
||||
query $10
|
||||
|
||||
Newer Synaptics touchpads need to get information from the query $10.
|
||||
Retrieve it if available.
|
||||
|
||||
Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
|
||||
Acked-by: Hans de Goede <hdegoede@redhat.com>
|
||||
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
|
||||
---
|
||||
drivers/input/mouse/synaptics.c | 23 ++++++++++++++++++++---
|
||||
drivers/input/mouse/synaptics.h | 23 +++++++++++++++++++++++
|
||||
2 files changed, 43 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/drivers/input/mouse/synaptics.c b/drivers/input/mouse/synaptics.c
|
||||
index 2176874a41b1..8f6a153677b9 100644
|
||||
--- a/drivers/input/mouse/synaptics.c
|
||||
+++ b/drivers/input/mouse/synaptics.c
|
||||
@@ -241,11 +241,24 @@ static int synaptics_model_id(struct psmouse *psmouse)
|
||||
return 0;
|
||||
}
|
||||
|
||||
+static int synaptics_more_extended_queries(struct psmouse *psmouse)
|
||||
+{
|
||||
+ struct synaptics_data *priv = psmouse->private;
|
||||
+ unsigned char buf[3];
|
||||
+
|
||||
+ if (synaptics_send_cmd(psmouse, SYN_QUE_MEXT_CAPAB_10, buf))
|
||||
+ return -1;
|
||||
+
|
||||
+ priv->ext_cap_10 = (buf[0]<<16) | (buf[1]<<8) | buf[2];
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
/*
|
||||
- * Read the board id from the touchpad
|
||||
+ * Read the board id and the "More Extended Queries" from the touchpad
|
||||
* The board id is encoded in the "QUERY MODES" response
|
||||
*/
|
||||
-static int synaptics_board_id(struct psmouse *psmouse)
|
||||
+static int synaptics_query_modes(struct psmouse *psmouse)
|
||||
{
|
||||
struct synaptics_data *priv = psmouse->private;
|
||||
unsigned char bid[3];
|
||||
@@ -257,6 +270,10 @@ static int synaptics_board_id(struct psmouse *psmouse)
|
||||
if (synaptics_send_cmd(psmouse, SYN_QUE_MODES, bid))
|
||||
return -1;
|
||||
priv->board_id = ((bid[0] & 0xfc) << 6) | bid[1];
|
||||
+
|
||||
+ if (SYN_MEXT_CAP_BIT(bid[0]))
|
||||
+ return synaptics_more_extended_queries(psmouse);
|
||||
+
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -446,7 +463,7 @@ static int synaptics_query_hardware(struct psmouse *psmouse)
|
||||
return -1;
|
||||
if (synaptics_firmware_id(psmouse))
|
||||
return -1;
|
||||
- if (synaptics_board_id(psmouse))
|
||||
+ if (synaptics_query_modes(psmouse))
|
||||
return -1;
|
||||
if (synaptics_capability(psmouse))
|
||||
return -1;
|
||||
diff --git a/drivers/input/mouse/synaptics.h b/drivers/input/mouse/synaptics.h
|
||||
index 1bd01f21783b..8d3761ce8f54 100644
|
||||
--- a/drivers/input/mouse/synaptics.h
|
||||
+++ b/drivers/input/mouse/synaptics.h
|
||||
@@ -22,6 +22,7 @@
|
||||
#define SYN_QUE_EXT_CAPAB_0C 0x0c
|
||||
#define SYN_QUE_EXT_MAX_COORDS 0x0d
|
||||
#define SYN_QUE_EXT_MIN_COORDS 0x0f
|
||||
+#define SYN_QUE_MEXT_CAPAB_10 0x10
|
||||
|
||||
/* synatics modes */
|
||||
#define SYN_BIT_ABSOLUTE_MODE (1 << 7)
|
||||
@@ -53,6 +54,7 @@
|
||||
#define SYN_EXT_CAP_REQUESTS(c) (((c) & 0x700000) >> 20)
|
||||
#define SYN_CAP_MULTI_BUTTON_NO(ec) (((ec) & 0x00f000) >> 12)
|
||||
#define SYN_CAP_PRODUCT_ID(ec) (((ec) & 0xff0000) >> 16)
|
||||
+#define SYN_MEXT_CAP_BIT(m) ((m) & (1 << 1))
|
||||
|
||||
/*
|
||||
* The following describes response for the 0x0c query.
|
||||
@@ -89,6 +91,26 @@
|
||||
#define SYN_CAP_REDUCED_FILTERING(ex0c) ((ex0c) & 0x000400)
|
||||
#define SYN_CAP_IMAGE_SENSOR(ex0c) ((ex0c) & 0x000800)
|
||||
|
||||
+/*
|
||||
+ * The following descibes response for the 0x10 query.
|
||||
+ *
|
||||
+ * byte mask name meaning
|
||||
+ * ---- ---- ------- ------------
|
||||
+ * 1 0x01 ext buttons are stick buttons exported in the extended
|
||||
+ * capability are actually meant to be used
|
||||
+ * by the tracktick (pass-through).
|
||||
+ * 1 0x02 SecurePad the touchpad is a SecurePad, so it
|
||||
+ * contains a built-in fingerprint reader.
|
||||
+ * 1 0xe0 more ext count how many more extented queries are
|
||||
+ * available after this one.
|
||||
+ * 2 0xff SecurePad width the width of the SecurePad fingerprint
|
||||
+ * reader.
|
||||
+ * 3 0xff SecurePad height the height of the SecurePad fingerprint
|
||||
+ * reader.
|
||||
+ */
|
||||
+#define SYN_CAP_EXT_BUTTONS_STICK(ex10) ((ex10) & 0x010000)
|
||||
+#define SYN_CAP_SECUREPAD(ex10) ((ex10) & 0x020000)
|
||||
+
|
||||
/* synaptics modes query bits */
|
||||
#define SYN_MODE_ABSOLUTE(m) ((m) & (1 << 7))
|
||||
#define SYN_MODE_RATE(m) ((m) & (1 << 6))
|
||||
@@ -156,6 +178,7 @@ struct synaptics_data {
|
||||
unsigned long int capabilities; /* Capabilities */
|
||||
unsigned long int ext_cap; /* Extended Capabilities */
|
||||
unsigned long int ext_cap_0c; /* Ext Caps from 0x0c query */
|
||||
+ unsigned long int ext_cap_10; /* Ext Caps from 0x10 query */
|
||||
unsigned long int identity; /* Identification */
|
||||
unsigned int x_res, y_res; /* X/Y resolution in units/mm */
|
||||
unsigned int x_max, y_max; /* Max coordinates (from FW) */
|
||||
--
|
||||
2.1.0
|
||||
|
|
@ -43,10 +43,10 @@ Signed-off-by: Josh Stone <jistone@redhat.com>
|
|||
2 files changed, 21 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/Makefile b/Makefile
|
||||
index bb43e9e6a79c..8a3aba74fe0b 100644
|
||||
index 3d16bcc87585..8d2cb8495b41 100644
|
||||
--- a/Makefile
|
||||
+++ b/Makefile
|
||||
@@ -709,7 +709,11 @@ KBUILD_CFLAGS += -fomit-frame-pointer
|
||||
@@ -706,7 +706,11 @@ KBUILD_CFLAGS += -fomit-frame-pointer
|
||||
endif
|
||||
endif
|
||||
|
||||
|
@ -59,7 +59,7 @@ index bb43e9e6a79c..8a3aba74fe0b 100644
|
|||
ifdef CONFIG_DEBUG_INFO
|
||||
ifdef CONFIG_DEBUG_INFO_SPLIT
|
||||
diff --git a/lib/Kconfig.debug b/lib/Kconfig.debug
|
||||
index a28590083622..ce1107439d7d 100644
|
||||
index c5cefb3c009c..b663e8e211b0 100644
|
||||
--- a/lib/Kconfig.debug
|
||||
+++ b/lib/Kconfig.debug
|
||||
@@ -165,7 +165,23 @@ config DEBUG_INFO_DWARF4
|
||||
|
@ -85,8 +85,5 @@ index a28590083622..ce1107439d7d 100644
|
|||
+ environment to automatically compile everything both ways,
|
||||
+ generating an error if anything differs.
|
||||
|
||||
config ENABLE_WARN_DEPRECATED
|
||||
bool "Enable __deprecated logic"
|
||||
--
|
||||
2.1.0
|
||||
|
||||
config GDB_SCRIPTS
|
||||
bool "Provide GDB scripts for kernel debugging"
|
||||
|
|
|
@ -1,95 +0,0 @@
|
|||
From: Mike Christie <michaelc@cs.wisc.edu>
|
||||
Date: Tue, 21 Apr 2015 03:42:24 -0400
|
||||
Subject: [PATCH] SCSI: add 1024 max sectors black list flag
|
||||
|
||||
This works around a issue with qnap iscsi targets not handling large IOs
|
||||
very well.
|
||||
|
||||
The target returns:
|
||||
|
||||
VPD INQUIRY: Block limits page (SBC)
|
||||
Maximum compare and write length: 1 blocks
|
||||
Optimal transfer length granularity: 1 blocks
|
||||
Maximum transfer length: 4294967295 blocks
|
||||
Optimal transfer length: 4294967295 blocks
|
||||
Maximum prefetch, xdread, xdwrite transfer length: 0 blocks
|
||||
Maximum unmap LBA count: 8388607
|
||||
Maximum unmap block descriptor count: 1
|
||||
Optimal unmap granularity: 16383
|
||||
Unmap granularity alignment valid: 0
|
||||
Unmap granularity alignment: 0
|
||||
Maximum write same length: 0xffffffff blocks
|
||||
Maximum atomic transfer length: 0
|
||||
Atomic alignment: 0
|
||||
Atomic transfer length granularity: 0
|
||||
|
||||
and it is *sometimes* able to handle at least one IO of size up to 8 MB. We
|
||||
have seen in traces where it will sometimes work, but other times it
|
||||
looks like it fails and it looks like it returns failures if we send
|
||||
multiple large IOs sometimes. Also it looks like it can return 2 different
|
||||
errors. It will sometimes send iscsi reject errors indicating out of
|
||||
resources or it will send invalid cdb illegal requests check conditions.
|
||||
And then when it sends iscsi rejects it does not seem to handle retries
|
||||
when there are command sequence holes, so I could not just add code to
|
||||
try and gracefully handle that error code.
|
||||
|
||||
The problem is that we do not have a good contact for the company,
|
||||
so we are not able to determine under what conditions it returns
|
||||
which error and why it sometimes works.
|
||||
|
||||
So, this patch just adds a new black list flag to set targets like this to
|
||||
the old max safe sectors of 1024. The max_hw_sectors changes added in 3.19
|
||||
caused this regression, so I also ccing stable.
|
||||
|
||||
Reported-by: Christian Hesse <list@eworm.de>
|
||||
Signed-off-by: Mike Christie <michaelc@cs.wisc.edu>
|
||||
Cc: stable@vger.kernel.org
|
||||
---
|
||||
drivers/scsi/scsi_devinfo.c | 1 +
|
||||
drivers/scsi/scsi_scan.c | 6 ++++++
|
||||
include/scsi/scsi_devinfo.h | 1 +
|
||||
3 files changed, 8 insertions(+)
|
||||
|
||||
diff --git a/drivers/scsi/scsi_devinfo.c b/drivers/scsi/scsi_devinfo.c
|
||||
index 262ab837a704..9f77d23239a2 100644
|
||||
--- a/drivers/scsi/scsi_devinfo.c
|
||||
+++ b/drivers/scsi/scsi_devinfo.c
|
||||
@@ -226,6 +226,7 @@ static struct {
|
||||
{"PIONEER", "CD-ROM DRM-624X", NULL, BLIST_FORCELUN | BLIST_SINGLELUN},
|
||||
{"Promise", "VTrak E610f", NULL, BLIST_SPARSELUN | BLIST_NO_RSOC},
|
||||
{"Promise", "", NULL, BLIST_SPARSELUN},
|
||||
+ {"QNAP", "iSCSI Storage", NULL, BLIST_MAX_1024},
|
||||
{"QUANTUM", "XP34301", "1071", BLIST_NOTQ},
|
||||
{"REGAL", "CDC-4X", NULL, BLIST_MAX5LUN | BLIST_SINGLELUN},
|
||||
{"SanDisk", "ImageMate CF-SD1", NULL, BLIST_FORCELUN},
|
||||
diff --git a/drivers/scsi/scsi_scan.c b/drivers/scsi/scsi_scan.c
|
||||
index 983aed10ff2f..cc662c98d2b6 100644
|
||||
--- a/drivers/scsi/scsi_scan.c
|
||||
+++ b/drivers/scsi/scsi_scan.c
|
||||
@@ -909,6 +909,12 @@ static int scsi_add_lun(struct scsi_device *sdev, unsigned char *inq_result,
|
||||
*/
|
||||
if (*bflags & BLIST_MAX_512)
|
||||
blk_queue_max_hw_sectors(sdev->request_queue, 512);
|
||||
+ /*
|
||||
+ * Max 1024 sector transfer length for targets that report incorrect
|
||||
+ * max/optimal lengths and relied on the old block layer safe default
|
||||
+ */
|
||||
+ else if (*bflags & BLIST_MAX_1024)
|
||||
+ blk_queue_max_hw_sectors(sdev->request_queue, 1024);
|
||||
|
||||
/*
|
||||
* Some devices may not want to have a start command automatically
|
||||
diff --git a/include/scsi/scsi_devinfo.h b/include/scsi/scsi_devinfo.h
|
||||
index 183eaab7c380..96e3f56519e7 100644
|
||||
--- a/include/scsi/scsi_devinfo.h
|
||||
+++ b/include/scsi/scsi_devinfo.h
|
||||
@@ -36,5 +36,6 @@
|
||||
for sequential scan */
|
||||
#define BLIST_TRY_VPD_PAGES 0x10000000 /* Attempt to read VPD pages */
|
||||
#define BLIST_NO_RSOC 0x20000000 /* don't try to issue RSOC */
|
||||
+#define BLIST_MAX_1024 0x40000000 /* maximum 1024 sector cdb length */
|
||||
|
||||
#endif
|
||||
--
|
||||
2.1.0
|
||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -5,17 +5,24 @@ Subject: [PATCH] arm: dts: am335x-bone-common: setup default pinmux
|
|||
|
||||
Signed-off-by: Robert Nelson <robertcnelson@gmail.com>
|
||||
---
|
||||
arch/arm/boot/dts/am335x-bone-common.dtsi | 130 ++++++++++++++++++++++++++++++
|
||||
1 file changed, 130 insertions(+)
|
||||
arch/arm/boot/dts/am335x-bone-common.dtsi | 222 ++++++++++++++++++++++++++++++
|
||||
1 file changed, 222 insertions(+)
|
||||
|
||||
diff --git a/arch/arm/boot/dts/am335x-bone-common.dtsi b/arch/arm/boot/dts/am335x-bone-common.dtsi
|
||||
index c7357bcc7d5c..86cdb52dbf8a 100644
|
||||
index 1fd496fe1a68..9688dda39e7a 100644
|
||||
--- a/arch/arm/boot/dts/am335x-bone-common.dtsi
|
||||
+++ b/arch/arm/boot/dts/am335x-bone-common.dtsi
|
||||
@@ -98,6 +98,13 @@
|
||||
@@ -95,6 +95,20 @@
|
||||
>;
|
||||
};
|
||||
|
||||
+ 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 */
|
||||
+ >;
|
||||
+ };
|
||||
+
|
||||
+ uart1_pins: pinmux_uart1_pins {
|
||||
+ pinctrl-single,pins = <
|
||||
+ 0x180 (PIN_INPUT_PULLUP | MUX_MODE0) /* uart1_rxd.uart1_rxd */
|
||||
|
@ -26,7 +33,7 @@ index c7357bcc7d5c..86cdb52dbf8a 100644
|
|||
clkout2_pin: pinmux_clkout2_pin {
|
||||
pinctrl-single,pins = <
|
||||
0x1b4 (PIN_OUTPUT_PULLDOWN | MUX_MODE3) /* xdma_event_intr1.clkout2 */
|
||||
@@ -178,6 +185,33 @@
|
||||
@@ -175,6 +189,60 @@
|
||||
0x1c (PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_ad7.mmc1_dat7 */
|
||||
>;
|
||||
};
|
||||
|
@ -56,14 +63,48 @@ index c7357bcc7d5c..86cdb52dbf8a 100644
|
|||
+ pinctrl-single,pins = <
|
||||
+ 0x164 0x0 /* P9_42 (ZCZ ball C18) | MODE 0 */
|
||||
+ >;
|
||||
+ };
|
||||
+
|
||||
+ 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 @@
|
||||
@@ -184,6 +252,20 @@
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
+&uart1 {
|
||||
+ pinctrl-names = "default";
|
||||
+ pinctrl-0 = <&uart1_pins>;
|
||||
+
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&uart1 {
|
||||
+ pinctrl-names = "default";
|
||||
+ pinctrl-0 = <&uart1_pins>;
|
||||
|
@ -74,10 +115,60 @@ index c7357bcc7d5c..86cdb52dbf8a 100644
|
|||
&usb {
|
||||
status = "okay";
|
||||
};
|
||||
@@ -261,6 +302,56 @@
|
||||
@@ -259,6 +341,106 @@
|
||||
};
|
||||
};
|
||||
|
||||
+&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>;
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+&epwmss0 {
|
||||
+ pinctrl-names = "default";
|
||||
+ pinctrl-0 = <&ecap0_pin_p9_42>;
|
||||
|
@ -131,10 +222,12 @@ index c7357bcc7d5c..86cdb52dbf8a 100644
|
|||
/include/ "tps65217.dtsi"
|
||||
|
||||
&tps {
|
||||
@@ -337,3 +428,42 @@
|
||||
cd-gpios = <&gpio0 6 GPIO_ACTIVE_HIGH>;
|
||||
cd-inverted;
|
||||
};
|
||||
@@ -347,4 +529,44 @@
|
||||
|
||||
&sham {
|
||||
status = "okay";
|
||||
+
|
||||
+};
|
||||
+
|
||||
+/ {
|
||||
+ ocp {
|
||||
|
@ -173,7 +266,4 @@ index c7357bcc7d5c..86cdb52dbf8a 100644
|
|||
+ status = "okay";
|
||||
+ };
|
||||
+ };
|
||||
+};
|
||||
--
|
||||
1.9.3
|
||||
|
||||
};
|
||||
|
|
|
@ -0,0 +1,42 @@
|
|||
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 | 19 +++++++++++++++++++
|
||||
1 file changed, 19 insertions(+)
|
||||
|
||||
diff --git a/arch/arm64/kernel/setup.c b/arch/arm64/kernel/setup.c
|
||||
index 74753132c3ac..3cc99d7c2361 100644
|
||||
--- a/arch/arm64/kernel/setup.c
|
||||
+++ b/arch/arm64/kernel/setup.c
|
||||
@@ -579,3 +579,22 @@ const struct seq_operations cpuinfo_op = {
|
||||
.stop = c_stop,
|
||||
.show = c_show
|
||||
};
|
||||
+
|
||||
+/*
|
||||
+ * 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);
|
|
@ -0,0 +1,104 @@
|
|||
If there are too many pending per work I/O, too many
|
||||
high priority work thread can be generated so that
|
||||
system performance can be effected.
|
||||
|
||||
This patch limits the max pending per work I/O as 16,
|
||||
and will fackback to single queue mode when the max
|
||||
number is reached.
|
||||
|
||||
This patch fixes Fedora 22 live booting performance
|
||||
regression when it is booted from squashfs over dm
|
||||
based on loop, and looks the following reasons are
|
||||
related with the problem:
|
||||
|
||||
- not like other filesyststems(such as ext4), squashfs
|
||||
is a bit special, and I observed that increasing I/O jobs
|
||||
to access file in squashfs only improve I/O performance a
|
||||
little, but it can make big difference for ext4
|
||||
|
||||
- nested loop: both squashfs.img and ext3fs.img are mounted
|
||||
as loop block, and ext3fs.img is inside the squashfs
|
||||
|
||||
- during booting, lots of tasks may run concurrently
|
||||
|
||||
Fixes: b5dd2f6047ca108001328aac0e8588edd15f1778
|
||||
Cc: stable@vger.kernel.org (v4.0)
|
||||
Reported-by: Justin M. Forbes <jforbes@fedoraproject.org>
|
||||
Tested-by: Justin M. Forbes <jforbes@fedoraproject.org>
|
||||
Signed-off-by: Ming Lei <ming.lei@canonical.com>
|
||||
---
|
||||
drivers/block/loop.c | 19 +++++++++++++++++--
|
||||
drivers/block/loop.h | 2 ++
|
||||
2 files changed, 19 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/drivers/block/loop.c b/drivers/block/loop.c
|
||||
index ae3fcb4..5a728c6 100644
|
||||
--- a/drivers/block/loop.c
|
||||
+++ b/drivers/block/loop.c
|
||||
@@ -1425,13 +1425,24 @@ static int loop_queue_rq(struct blk_mq_hw_ctx *hctx,
|
||||
const struct blk_mq_queue_data *bd)
|
||||
{
|
||||
struct loop_cmd *cmd = blk_mq_rq_to_pdu(bd->rq);
|
||||
+ struct loop_device *lo = cmd->rq->q->queuedata;
|
||||
+ bool single_queue = !!(cmd->rq->cmd_flags & REQ_WRITE);
|
||||
+
|
||||
+ /*
|
||||
+ * Fallback to single queue mode if the pending per work
|
||||
+ * I/O number reaches 16, otherwise too many high priority
|
||||
+ * worker thread may effect system performance as reported
|
||||
+ * in fedora live booting from squashfs over loop.
|
||||
+ */
|
||||
+ if (atomic_read(&lo->pending_per_work_io) >= 16)
|
||||
+ single_queue = true;
|
||||
|
||||
blk_mq_start_request(bd->rq);
|
||||
|
||||
- if (cmd->rq->cmd_flags & REQ_WRITE) {
|
||||
- struct loop_device *lo = cmd->rq->q->queuedata;
|
||||
+ if (single_queue) {
|
||||
bool need_sched = true;
|
||||
|
||||
+ cmd->per_work_io = false;
|
||||
spin_lock_irq(&lo->lo_lock);
|
||||
if (lo->write_started)
|
||||
need_sched = false;
|
||||
@@ -1443,6 +1454,8 @@ static int loop_queue_rq(struct blk_mq_hw_ctx *hctx,
|
||||
if (need_sched)
|
||||
queue_work(loop_wq, &lo->write_work);
|
||||
} else {
|
||||
+ atomic_inc(&lo->pending_per_work_io);
|
||||
+ cmd->per_work_io = true;
|
||||
queue_work(loop_wq, &cmd->read_work);
|
||||
}
|
||||
|
||||
@@ -1467,6 +1480,8 @@ static void loop_handle_cmd(struct loop_cmd *cmd)
|
||||
if (ret)
|
||||
cmd->rq->errors = -EIO;
|
||||
blk_mq_complete_request(cmd->rq);
|
||||
+ if (cmd->per_work_io)
|
||||
+ atomic_dec(&lo->pending_per_work_io);
|
||||
}
|
||||
|
||||
static void loop_queue_write_work(struct work_struct *work)
|
||||
diff --git a/drivers/block/loop.h b/drivers/block/loop.h
|
||||
index 301c27f..eb855f5 100644
|
||||
--- a/drivers/block/loop.h
|
||||
+++ b/drivers/block/loop.h
|
||||
@@ -57,6 +57,7 @@ struct loop_device {
|
||||
struct list_head write_cmd_head;
|
||||
struct work_struct write_work;
|
||||
bool write_started;
|
||||
+ atomic_t pending_per_work_io;
|
||||
int lo_state;
|
||||
struct mutex lo_ctl_mutex;
|
||||
|
||||
@@ -68,6 +69,7 @@ struct loop_device {
|
||||
struct loop_cmd {
|
||||
struct work_struct read_work;
|
||||
struct request *rq;
|
||||
+ bool per_work_io;
|
||||
struct list_head list;
|
||||
};
|
||||
|
||||
--
|
||||
1.9.1
|
|
@ -58,7 +58,6 @@ CONFIG_SERIAL_AMBA_PL011=y
|
|||
CONFIG_SERIAL_AMBA_PL011_CONSOLE=y
|
||||
CONFIG_SERIAL_8250_DW=y
|
||||
CONFIG_SERIO_AMBAKMI=y
|
||||
CONFIG_OC_ETM=y
|
||||
CONFIG_FB_ARMCLCD=y
|
||||
|
||||
# ARM VExpress
|
||||
|
@ -101,7 +100,6 @@ CONFIG_OF_RESERVED_MEM=y
|
|||
CONFIG_OF_RESOLVE=y
|
||||
CONFIG_PM_GENERIC_DOMAINS_OF=y
|
||||
CONFIG_PATA_OF_PLATFORM=m
|
||||
# CONFIG_OF_SELFTEST is not set
|
||||
CONFIG_SERIAL_OF_PLATFORM=y
|
||||
CONFIG_THERMAL_OF=y
|
||||
|
||||
|
@ -114,6 +112,33 @@ CONFIG_USB_OHCI_HCD_PLATFORM=m
|
|||
CONFIG_USB_EHCI_HCD_PLATFORM=m
|
||||
CONFIG_USB_XHCI_PLATFORM=m
|
||||
|
||||
# MMC/SD
|
||||
CONFIG_MMC_SPI=m
|
||||
|
||||
# Designware (used by numerous devices)
|
||||
CONFIG_MMC_DW=m
|
||||
CONFIG_MMC_DW_PLTFM=m
|
||||
CONFIG_MMC_DW_PCI=m
|
||||
CONFIG_SPI_DW_MMIO=m
|
||||
CONFIG_SPI_DW_PCI=m
|
||||
# CONFIG_MMC_DW_IDMAC is not set
|
||||
# CONFIG_MMC_DW_K3 is not set
|
||||
# CONFIG_MMC_QCOM_DML is not set
|
||||
CONFIG_USB_DWC2=m
|
||||
CONFIG_USB_DWC2_DUAL_ROLE=y
|
||||
CONFIG_USB_DWC2_PLATFORM=m
|
||||
CONFIG_USB_DWC2_PCI=m
|
||||
# CONFIG_USB_DWC2_DEBUG is not set
|
||||
# CONFIG_USB_DWC2_TRACK_MISSED_SOFS is not set
|
||||
CONFIG_USB_DWC3=m
|
||||
CONFIG_USB_DWC3_DUAL_ROLE=y
|
||||
CONFIG_USB_DWC3_PCI=m
|
||||
# CONFIG_USB_DWC3_DEBUG is not set
|
||||
# CONFIG_DWC3_HOST_USB3_LPM_ENABLE is not set
|
||||
CONFIG_DW_WATCHDOG=m
|
||||
CONFIG_PCIE_DW=y
|
||||
# CONFIG_MMC_DW_EXYNOS is not set
|
||||
|
||||
# External Connectors
|
||||
CONFIG_EXTCON=m
|
||||
CONFIG_EXTCON_GPIO=m
|
||||
|
@ -169,9 +194,6 @@ CONFIG_IIO_SYSFS_TRIGGER=m
|
|||
# PHY framework
|
||||
CONFIG_GENERIC_PHY=y
|
||||
|
||||
# MFD
|
||||
CONFIG_MFD_CORE=m
|
||||
|
||||
CONFIG_SMC91X=m
|
||||
CONFIG_SMC911X=m
|
||||
|
||||
|
@ -282,3 +304,8 @@ CONFIG_CMA_AREAS=7
|
|||
# CONFIG_BMP085_SPI is not set
|
||||
# CONFIG_TI_DAC7512 is not set
|
||||
# CONFIG_SPI_ROCKCHIP is not set
|
||||
|
||||
# EDAC
|
||||
CONFIG_EDAC=y
|
||||
CONFIG_EDAC_MM_EDAC=m
|
||||
CONFIG_EDAC_LEGACY_SYSFS=y
|
||||
|
|
16
config-arm64
16
config-arm64
|
@ -10,6 +10,10 @@ CONFIG_SCHED_SMT=y
|
|||
CONFIG_ARCH_XGENE=y
|
||||
CONFIG_ARCH_SEATTLE=y
|
||||
# CONFIG_ARCH_THUNDER is not set
|
||||
# CONFIG_ARCH_EXYNOS7 is not set
|
||||
# CONFIG_ARCH_FSL_LS2085A is not set
|
||||
# CONFIG_ARCH_MEDIATEK is not set
|
||||
# CONFIG_ARCH_TEGRA is not set
|
||||
|
||||
# Erratum
|
||||
CONFIG_ARM64_ERRATUM_826319=y
|
||||
|
@ -103,6 +107,7 @@ CONFIG_NET_XGENE=y
|
|||
CONFIG_RTC_DRV_XGENE=m
|
||||
CONFIG_HW_RANDOM_XGENE=m
|
||||
CONFIG_GPIO_XGENE=y
|
||||
CONFIG_GPIO_XGENE_SB=m
|
||||
|
||||
# busted build for various reasons
|
||||
# uses pci_* for some reason to allocate DMA buffers
|
||||
|
@ -141,8 +146,12 @@ CONFIG_AMD_XGBE=m
|
|||
CONFIG_AMD_XGBE_PHY=m
|
||||
# CONFIG_AMD_XGBE_DCB is not set
|
||||
|
||||
CONFIG_NET_VENDOR_MELLANOX=y
|
||||
CONFIG_MLX4_EN=m
|
||||
CONFIG_MLX4_EN_DCB=y
|
||||
CONFIG_MLX4_EN_VXLAN=y
|
||||
|
||||
# CONFIG_IMX_THERMAL is not set
|
||||
# CONFIG_MMC_DW is not set
|
||||
|
||||
CONFIG_DMI=y
|
||||
CONFIG_DMIID=y
|
||||
|
@ -153,3 +162,8 @@ CONFIG_SATA_AHCI_PLATFORM=y
|
|||
# CONFIG_SND_SOC is not set
|
||||
|
||||
# CONFIG_PMIC_OPREGION is not set
|
||||
# CONFIG_DEBUG_RODATA is not set
|
||||
|
||||
CONFIG_DEBUG_SECTION_MISMATCH=y
|
||||
|
||||
CONFIG_EDAC_XGENE=y
|
||||
|
|
24
config-armv7
24
config-armv7
|
@ -41,6 +41,7 @@ CONFIG_RTC_DRV_S35390A=m
|
|||
CONFIG_RTC_DRV_88PM80X=m
|
||||
CONFIG_RTC_DRV_ISL12057=m
|
||||
CONFIG_RTC_DRV_MV=m
|
||||
CONFIG_RTC_DRV_ARMADA38X=m
|
||||
CONFIG_MVNETA=m
|
||||
CONFIG_GPIO_MVEBU=y
|
||||
CONFIG_MVEBU_CLK_CORE=y
|
||||
|
@ -63,6 +64,7 @@ CONFIG_USB_EHCI_HCD_ORION=m
|
|||
CONFIG_MMC_SDHCI_PXAV3=m
|
||||
CONFIG_MVPP2=m
|
||||
CONFIG_COMMON_CLK_SI5351=m
|
||||
CONFIG_RTC_DRV_ARMADA38X=m
|
||||
# CONFIG_CACHE_FEROCEON_L2 is not set
|
||||
# CONFIG_CACHE_FEROCEON_L2_WRITETHROUGH is not set
|
||||
|
||||
|
@ -73,8 +75,6 @@ CONFIG_SOC_OMAP5=y
|
|||
CONFIG_SOC_OMAP3430=y
|
||||
CONFIG_SOC_TI81XX=y
|
||||
# CONFIG_MACH_CM_T35 is not set
|
||||
# CONFIG_MACH_CM_T3517 is not set
|
||||
# CONFIG_MACH_CRANEBOARD is not set
|
||||
# CONFIG_MACH_DEVKIT8000 is not set
|
||||
# CONFIG_MACH_NOKIA_RX51 is not set
|
||||
# CONFIG_MACH_OMAP_LDP is not set
|
||||
|
@ -98,9 +98,7 @@ CONFIG_OMAP_PACKAGE_CUS=y
|
|||
|
||||
CONFIG_OMAP2PLUS_MBOX=m
|
||||
CONFIG_OMAP_MBOX_KFIFO_SIZE=256
|
||||
CONFIG_OMAP_DM_TIMER=y
|
||||
CONFIG_OMAP_PM_NOOP=y
|
||||
CONFIG_DMA_OMAP=y
|
||||
CONFIG_DMA_OMAP=m
|
||||
CONFIG_OMAP_IOMMU=y
|
||||
CONFIG_HWSPINLOCK_OMAP=m
|
||||
# CONFIG_OMAP3_SDRC_AC_TIMING is not set
|
||||
|
@ -114,6 +112,8 @@ CONFIG_GPIO_TWL6040=m
|
|||
CONFIG_GPIO_PCF857X=m
|
||||
CONFIG_I2C_OMAP=m
|
||||
CONFIG_CHARGER_TWL4030=m
|
||||
CONFIG_CHARGER_ISP1704=m
|
||||
CONFIG_CHARGER_BQ2415X=m
|
||||
CONFIG_OMAP_WATCHDOG=m
|
||||
CONFIG_TWL4030_CORE=y
|
||||
CONFIG_TWL4030_MADC=m
|
||||
|
@ -159,7 +159,6 @@ CONFIG_REGULATOR_PALMAS=y
|
|||
CONFIG_REGULATOR_PBIAS=m
|
||||
CONFIG_RTC_DRV_PALMAS=m
|
||||
CONFIG_OMAP5_DSS_HDMI=y
|
||||
CONFIG_OMAP5_DSS_HDMI_AUDIO=y
|
||||
CONFIG_COMMON_CLK_PALMAS=m
|
||||
CONFIG_INPUT_PALMAS_PWRBUTTON=m
|
||||
|
||||
|
@ -223,6 +222,7 @@ CONFIG_OMAP2_DSS_DSI=y
|
|||
CONFIG_OMAP2_DSS_MIN_FCK_PER_PCK=0
|
||||
CONFIG_OMAP2_DSS_SLEEP_AFTER_VENC_RESET=y
|
||||
|
||||
CONFIG_DISPLAY_ENCODER_OPA362=m
|
||||
CONFIG_DISPLAY_ENCODER_TFP410=m
|
||||
CONFIG_DISPLAY_ENCODER_TPD12S015=m
|
||||
CONFIG_DISPLAY_CONNECTOR_DVI=m
|
||||
|
@ -259,7 +259,10 @@ CONFIG_SND_OMAP_SOC_OMAP_TWL4030=m
|
|||
CONFIG_SND_OMAP_SOC_OMAP3_PANDORA=m
|
||||
CONFIG_SND_OMAP_SOC_RX51=m
|
||||
CONFIG_SND_SOC_TLV320AIC23=m
|
||||
CONFIG_SND_SOC_TLV320AIC23_I2C=m
|
||||
CONFIG_SND_SOC_TLV320AIC23_SPI=m
|
||||
CONFIG_SND_SOC_TLV320AIC3X=m
|
||||
CONFIG_SND_SOC_TLV320AIC31XX=m
|
||||
CONFIG_SND_SOC_TPA6130A2=m
|
||||
CONFIG_SND_SOC_TWL4030=m
|
||||
CONFIG_SND_SOC_TWL6040=m
|
||||
|
@ -289,9 +292,11 @@ CONFIG_TI_DAVINCI_EMAC=m
|
|||
CONFIG_TI_DAVINCI_MDIO=m
|
||||
CONFIG_TI_CPSW=m
|
||||
CONFIG_TI_CPSW_PHY_SEL=y
|
||||
CONFIG_TI_CPSW_ALE=m
|
||||
CONFIG_TI_CPTS=y
|
||||
# Builtin needed for BBone White
|
||||
CONFIG_REGULATOR_TPS65217=y
|
||||
CONFIG_INPUT_TPS65218_PWRBUTTON=m
|
||||
CONFIG_TI_EMIF=m
|
||||
CONFIG_DRM_TILCDC=m
|
||||
CONFIG_SPI_DAVINCI=m
|
||||
|
@ -308,6 +313,7 @@ CONFIG_TI_AM335X_ADC=m
|
|||
CONFIG_PWM_TIPWMSS=y
|
||||
CONFIG_MFD_TPS65218=m
|
||||
CONFIG_REGULATOR_TPS65218=m
|
||||
CONFIG_VIDEO_AM437X_VPFE=m
|
||||
|
||||
# QCom
|
||||
CONFIG_ARCH_MSM8X60=y
|
||||
|
@ -321,8 +327,11 @@ CONFIG_PINCTRL_APQ8084=m
|
|||
CONFIG_PINCTRL_IPQ8064=m
|
||||
CONFIG_PINCTRL_MSM8960=m
|
||||
CONFIG_PINCTRL_MSM8X74=m
|
||||
CONFIG_PINCTRL_MSM8916=m
|
||||
CONFIG_PINCTRL_QCOM_SPMI_PMIC=m
|
||||
CONFIG_COMMON_CLK_QCOM=m
|
||||
# CONFIG_IPQ_LCC_806X is not set
|
||||
# CONFIG_MSM_LCC_8960 is not set
|
||||
CONFIG_MFD_QCOM_RPM=m
|
||||
CONFIG_MFD_PM8921_CORE=m
|
||||
CONFIG_REGULATOR_QCOM_RPM=m
|
||||
|
@ -363,6 +372,7 @@ CONFIG_MFD_SPMI_PMIC=m
|
|||
CONFIG_SPMI=m
|
||||
CONFIG_SPMI_MSM_PMIC_ARB=m
|
||||
CONFIG_QCOM_SPMI_IADC=m
|
||||
CONFIG_QCOM_SPMI_VADC=m
|
||||
|
||||
# i.MX
|
||||
# CONFIG_MXC_DEBUG_BOARD is not set
|
||||
|
@ -628,6 +638,8 @@ CONFIG_USB_GADGET_XILINX=m
|
|||
CONFIG_PCIE_XILINX=y
|
||||
CONFIG_CADENCE_WATCHDOG=m
|
||||
CONFIG_REGULATOR_ISL9305=m
|
||||
CONFIG_EDAC_SYNOPSYS=m
|
||||
CONFIG_PINCTRL_ZYNQ=y
|
||||
|
||||
# Multi function devices
|
||||
CONFIG_MFD_88PM800=m
|
||||
|
|
|
@ -24,7 +24,6 @@ CONFIG_ARM_CPU_TOPOLOGY=y
|
|||
CONFIG_ARM_DMA_MEM_BUFFERABLE=y
|
||||
CONFIG_SWP_EMULATE=y
|
||||
CONFIG_CACHE_L2X0=y
|
||||
CONFIG_CACHE_PL310=y
|
||||
CONFIG_HIGHPTE=y
|
||||
CONFIG_AUTO_ZRELADDR=y
|
||||
CONFIG_ATAGS=y
|
||||
|
@ -34,6 +33,7 @@ CONFIG_ZBOOT_ROM_BSS=0x0
|
|||
CONFIG_XZ_DEC_ARMTHUMB=y
|
||||
CONFIG_ARCH_HAS_TICK_BROADCAST=y
|
||||
CONFIG_IRQ_CROSSBAR=y
|
||||
CONFIG_IOMMU_IO_PGTABLE_LPAE=y
|
||||
|
||||
# CONFIG_MCPM is not set
|
||||
# CONFIG_OABI_COMPAT is not set
|
||||
|
@ -71,6 +71,7 @@ CONFIG_ARCH_VIRT=y
|
|||
# CONFIG_ARCH_U8500 is not set
|
||||
# CONFIG_ARCH_VEXPRESS_SPC is not set
|
||||
# CONFIG_ARCH_WM8850 is not set
|
||||
# CONFIG_ARCH_DIGICOLOR is not set
|
||||
|
||||
# errata
|
||||
# v5/v6
|
||||
|
@ -127,6 +128,12 @@ CONFIG_THERMAL=y
|
|||
CONFIG_CLOCK_THERMAL=y
|
||||
CONFIG_CPUFREQ_DT=y
|
||||
# CONFIG_ARM_BIG_LITTLE_CPUFREQ is not set
|
||||
CONFIG_PM_DEVFREQ=y
|
||||
CONFIG_PM_DEVFREQ_EVENT=y
|
||||
CONFIG_DEVFREQ_GOV_SIMPLE_ONDEMAND=y
|
||||
CONFIG_DEVFREQ_GOV_PERFORMANCE=y
|
||||
CONFIG_DEVFREQ_GOV_POWERSAVE=y
|
||||
CONFIG_DEVFREQ_GOV_USERSPACE=y
|
||||
|
||||
CONFIG_DEFAULT_MMAP_MIN_ADDR=32768
|
||||
CONFIG_LSM_MMAP_MIN_ADDR=32768
|
||||
|
@ -154,7 +161,6 @@ CONFIG_ARM_TIMER_SP804=y
|
|||
CONFIG_SERIO_AMBAKMI=m
|
||||
CONFIG_SERIAL_AMBA_PL010=y
|
||||
CONFIG_SERIAL_AMBA_PL010_CONSOLE=y
|
||||
CONFIG_SERIAL_MRST_MAX3110=m
|
||||
|
||||
CONFIG_RTC_DRV_PL030=y
|
||||
CONFIG_RTC_DRV_PL031=y
|
||||
|
@ -164,6 +170,7 @@ CONFIG_AMBA_PL08X=y
|
|||
CONFIG_GPIO_PL061=y
|
||||
CONFIG_PL320_MBOX=y
|
||||
CONFIG_SND_ARMAACI=m
|
||||
CONFIG_USB_ISP1760=m
|
||||
|
||||
# highbank
|
||||
CONFIG_EDAC_HIGHBANK_MC=m
|
||||
|
@ -172,7 +179,7 @@ CONFIG_SATA_HIGHBANK=m
|
|||
CONFIG_ARM_HIGHBANK_CPUFREQ=m
|
||||
# CONFIG_ARM_HIGHBANK_CPUIDLE is not set
|
||||
|
||||
# Allwinner
|
||||
# AllWinner
|
||||
# CONFIG_MACH_SUN4I is not set
|
||||
# CONFIG_MACH_SUN5I is not set
|
||||
CONFIG_MACH_SUN6I=y
|
||||
|
@ -192,7 +199,6 @@ CONFIG_SPI_SUN6I=m
|
|||
CONFIG_MMC_SUNXI=m
|
||||
CONFIG_I2C_SUN6I_P2WI=m
|
||||
CONFIG_GPIO_PCA953X=m
|
||||
CONFIG_POWER_RESET_SUN6I=y
|
||||
CONFIG_TOUCHSCREEN_SUN4I=m
|
||||
CONFIG_MFD_AXP20X=y
|
||||
CONFIG_REGULATOR_AXP20X=m
|
||||
|
@ -202,6 +208,9 @@ CONFIG_SUN4I_EMAC=m
|
|||
CONFIG_RTC_DRV_SUN6I=m
|
||||
CONFIG_AXP288_ADC=m
|
||||
CONFIG_MTD_NAND_SUNXI=m
|
||||
CONFIG_SERIO_SUN4I_PS2=m
|
||||
CONFIG_KEYBOARD_SUN4I_LRADC=m
|
||||
CONFIG_PWM_SUN4I=m
|
||||
|
||||
# Exynos
|
||||
CONFIG_ARCH_EXYNOS3=y
|
||||
|
@ -220,13 +229,15 @@ CONFIG_ARM_EXYNOS5250_CPUFREQ=y
|
|||
CONFIG_ARM_EXYNOS5440_CPUFREQ=y
|
||||
CONFIG_ARM_EXYNOS_CPU_FREQ_BOOST_SW=y
|
||||
CONFIG_ARM_EXYNOS_CPUIDLE=y
|
||||
CONFIG_DEVFREQ_EVENT_EXYNOS_PPMU=y
|
||||
CONFIG_ARM_EXYNOS5_BUS_DEVFREQ=m
|
||||
# CONFIG_EXYNOS5420_MCPM not set
|
||||
CONFIG_ARM_EXYNOS_CPUFREQ=m
|
||||
|
||||
CONFIG_I2C_EXYNOS5=m
|
||||
CONFIG_I2C_S3C2410=m
|
||||
CONFIG_SPI_S3C64XX=m
|
||||
CONFIG_EXYNOS_THERMAL=m
|
||||
CONFIG_EXYNOS_THERMAL_CORE=y
|
||||
CONFIG_EXYNOS_ADC=m
|
||||
CONFIG_MMC_SDHCI_S3C=m
|
||||
CONFIG_MMC_SDHCI_S3C_DMA=y
|
||||
|
@ -256,12 +267,12 @@ CONFIG_REGULATOR_WM8994=m
|
|||
CONFIG_EXYNOS_VIDEO=y
|
||||
CONFIG_EXYNOS_MIPI_DSI=y
|
||||
CONFIG_DRM_EXYNOS=m
|
||||
CONFIG_DRM_EXYNOS_DMABUF=y
|
||||
CONFIG_DRM_EXYNOS_DP=y
|
||||
CONFIG_DRM_EXYNOS_DPI=y
|
||||
CONFIG_DRM_EXYNOS_DSI=y
|
||||
CONFIG_DRM_EXYNOS_FIMC=y
|
||||
CONFIG_DRM_EXYNOS_FIMD=y
|
||||
CONFIG_DRM_EXYNOS7_DECON=y
|
||||
CONFIG_DRM_EXYNOS_G2D=y
|
||||
CONFIG_DRM_EXYNOS_GSC=y
|
||||
CONFIG_DRM_EXYNOS_HDMI=y
|
||||
|
@ -294,7 +305,6 @@ CONFIG_SND_SOC_ODROIDX2=m
|
|||
# CONFIG_EXYNOS_IOMMU_DEBUG is not set
|
||||
# CONFIG_SAMSUNG_PM_DEBUG is not set
|
||||
# CONFIG_SAMSUNG_PM_CHECK is not set
|
||||
# CONFIG_ARM_EXYNOS5_BUS_DEVFREQ is not set
|
||||
|
||||
# Arndale/Origen
|
||||
CONFIG_MFD_MAX8997=y
|
||||
|
@ -333,6 +343,8 @@ CONFIG_SND_SOC_ROCKCHIP=m
|
|||
CONFIG_SND_SOC_ROCKCHIP_I2S=m
|
||||
CONFIG_ROCKCHIP_THERMAL=m
|
||||
CONFIG_DRM_ROCKCHIP=m
|
||||
CONFIG_ROCKCHIP_DW_HDMI=m
|
||||
CONFIG_PHY_ROCKCHIP_USB=m
|
||||
|
||||
# Tegra
|
||||
CONFIG_ARCH_TEGRA_114_SOC=y
|
||||
|
@ -340,7 +352,6 @@ CONFIG_ARCH_TEGRA_124_SOC=y
|
|||
CONFIG_ARM_TEGRA_CPUFREQ=y
|
||||
CONFIG_TRUSTED_FOUNDATIONS=y
|
||||
CONFIG_SERIAL_TEGRA=y
|
||||
CONFIG_TEGRA30_MC=y
|
||||
CONFIG_PCI_TEGRA=y
|
||||
CONFIG_AHCI_TEGRA=m
|
||||
CONFIG_TEGRA_IOMMU_SMMU=y
|
||||
|
@ -359,6 +370,7 @@ CONFIG_SND_SOC_TEGRA_MAX98090=m
|
|||
CONFIG_SND_SOC_TEGRA_RT5640=m
|
||||
CONFIG_SND_SOC_TEGRA30_AHUB=m
|
||||
CONFIG_SND_SOC_TEGRA30_I2S=m
|
||||
CONFIG_SND_SOC_TEGRA_RT5677=m
|
||||
CONFIG_SND_HDA_TEGRA=m
|
||||
CONFIG_TEGRA_HOST1X=m
|
||||
CONFIG_TEGRA_HOST1X_FIREWALL=y
|
||||
|
@ -366,12 +378,13 @@ CONFIG_DRM_TEGRA=m
|
|||
CONFIG_DRM_TEGRA_FBDEV=y
|
||||
# CONFIG_DRM_TEGRA_DEBUG is not set
|
||||
CONFIG_DRM_TEGRA_STAGING=y
|
||||
CONFIG_NOUVEAU_PLATFORM_DRIVER=m
|
||||
CONFIG_NOUVEAU_PLATFORM_DRIVER=y
|
||||
CONFIG_AD525X_DPOT=m
|
||||
CONFIG_AD525X_DPOT_I2C=m
|
||||
CONFIG_AD525X_DPOT_SPI=m
|
||||
CONFIG_TEGRA_SOCTHERM=m
|
||||
CONFIG_TEGRA_MC=y
|
||||
CONFIG_ARM_TEGRA_DEVFREQ=m
|
||||
|
||||
# Jetson TK1
|
||||
CONFIG_PINCTRL_AS3722=y
|
||||
|
@ -390,10 +403,9 @@ CONFIG_DRM_PANEL_SIMPLE=m
|
|||
CONFIG_DRM_PANEL_LD9040=m
|
||||
CONFIG_DRM_PANEL_S6E8AA0=m
|
||||
CONFIG_DRM_PANEL_SHARP_LQ101R1SX01=m
|
||||
CONFIG_DRM_DW_HDMI=m
|
||||
|
||||
# regmap
|
||||
CONFIG_REGMAP=y
|
||||
CONFIG_REGMAP_I2C=m
|
||||
CONFIG_REGMAP_SPI=m
|
||||
CONFIG_REGMAP_SPMI=m
|
||||
CONFIG_REGMAP_MMIO=m
|
||||
|
@ -410,12 +422,11 @@ CONFIG_USB_OTG=y
|
|||
CONFIG_USB_GADGET=m
|
||||
CONFIG_USB_GADGET_VBUS_DRAW=100
|
||||
CONFIG_USB_GADGET_STORAGE_NUM_BUFFERS=2
|
||||
# Use PIO on musb as upstream doesn't support multiple DMA engines yet :-/
|
||||
CONFIG_MUSB_PIO_ONLY=y
|
||||
# CONFIG_USB_GADGET_XILINX is not set
|
||||
CONFIG_USB_MUSB_HDRC=m
|
||||
CONFIG_USB_MUSB_DUAL_ROLE=y
|
||||
CONFIG_USB_MUSB_DSPS=m
|
||||
# Use PIO on musb as upstream doesn't support multiple DMA engines yet :-/
|
||||
CONFIG_MUSB_PIO_ONLY=y
|
||||
# CONFIG_USB_MUSB_TUSB6010 is not set
|
||||
# CONFIG_USB_MUSB_UX500 is not set
|
||||
CONFIG_USB_GPIO_VBUS=m
|
||||
|
@ -435,6 +446,7 @@ CONFIG_USB_CONFIGFS_SERIAL=y
|
|||
# CONFIG_USB_CONFIGFS_F_UAC2 is not set
|
||||
# CONFIG_USB_CONFIGFS_F_MIDI is not set
|
||||
# CONFIG_USB_CONFIGFS_F_HID is not set
|
||||
# CONFIG_USB_CONFIGFS_F_UVC is not set
|
||||
|
||||
# CONFIG_USB_GADGET_DEBUG is not set
|
||||
# CONFIG_USB_GADGET_DEBUG_FILES is not set
|
||||
|
@ -549,11 +561,6 @@ CONFIG_CRYPTO_SHA512_ARM_NEON=m
|
|||
CONFIG_TI_PRIV_EDMA=y
|
||||
CONFIG_TI_EDMA=y
|
||||
|
||||
# EDAC
|
||||
CONFIG_EDAC=y
|
||||
CONFIG_EDAC_MM_EDAC=m
|
||||
CONFIG_EDAC_LEGACY_SYSFS=y
|
||||
|
||||
# Watchdog
|
||||
|
||||
# Mailbox
|
||||
|
@ -588,32 +595,6 @@ CONFIG_MTD_ST_SPI_FSM=m
|
|||
CONFIG_EEPROM_AT25=m
|
||||
CONFIG_EEPROM_93XX46=m
|
||||
|
||||
# MMC/SD
|
||||
CONFIG_MMC_SPI=m
|
||||
|
||||
# Designware (used by numerous devices)
|
||||
CONFIG_MMC_DW=m
|
||||
CONFIG_MMC_DW_PLTFM=m
|
||||
CONFIG_MMC_DW_PCI=m
|
||||
CONFIG_SPI_DW_MMIO=m
|
||||
CONFIG_SPI_DW_PCI=m
|
||||
# CONFIG_MMC_DW_IDMAC is not set
|
||||
# CONFIG_MMC_DW_K3 is not set
|
||||
# CONFIG_MMC_QCOM_DML is not set
|
||||
CONFIG_USB_DWC2=m
|
||||
CONFIG_USB_DWC2_DUAL_ROLE=y
|
||||
CONFIG_USB_DWC2_PLATFORM=m
|
||||
CONFIG_USB_DWC2_PCI=m
|
||||
# CONFIG_USB_DWC2_DEBUG is not set
|
||||
# CONFIG_USB_DWC2_TRACK_MISSED_SOFS is not set
|
||||
CONFIG_USB_DWC3=m
|
||||
CONFIG_USB_DWC3_DUAL_ROLE=y
|
||||
CONFIG_USB_DWC3_PCI=m
|
||||
# CONFIG_USB_DWC3_DEBUG is not set
|
||||
# CONFIG_DWC3_HOST_USB3_LPM_ENABLE is not set
|
||||
CONFIG_DW_WATCHDOG=m
|
||||
CONFIG_PCIE_DW=y
|
||||
|
||||
# Sound
|
||||
CONFIG_SND_ARM=y
|
||||
CONFIG_SND_SOC_AC97_BUS=y
|
||||
|
@ -787,6 +768,9 @@ CONFIG_KEYBOARD_CROS_EC=m
|
|||
CONFIG_I2C_CROS_EC_TUNNEL=m
|
||||
CONFIG_SND_SOC_TS3A227E=m
|
||||
|
||||
CONFIG_R8188EU=m
|
||||
# CONFIG_88EU_AP_MODE is not set
|
||||
|
||||
# Needs work/investigation
|
||||
# CONFIG_ARM_KPROBES_TEST is not set
|
||||
|
||||
|
@ -817,6 +801,7 @@ CONFIG_SND_SOC_TS3A227E=m
|
|||
# CONFIG_SERIAL_IFX6X60 is not set
|
||||
# CONFIG_SERIAL_BCM63XX is not set
|
||||
# CONFIG_FB_XILINX is not set
|
||||
# CONFIG_USB_GADGET_XILINX is not set
|
||||
# CONFIG_BRCMSTB_GISB_ARB is not set
|
||||
# CONFIG_SUNGEM is not set
|
||||
# CONFIG_FB_SAVAGE is not set
|
||||
|
@ -830,7 +815,6 @@ CONFIG_SND_SOC_TS3A227E=m
|
|||
# CONFIG_MMC_TMIO is not set
|
||||
# CONFIG_PINCTRL_IMX35 is not set
|
||||
# CONFIG_DVB_USB_PCTV452E is not set
|
||||
# CONFIG_DWMAC_SOCFPGA is not set
|
||||
|
||||
# CONFIG_MFD_LP8788 is not set
|
||||
# CONFIG_MFD_MAX77693 is not set
|
||||
|
@ -841,6 +825,11 @@ CONFIG_SND_SOC_TS3A227E=m
|
|||
# CONFIG_MFD_AS3711 is not set
|
||||
# CONFIG_PMIC_DA903X is not set
|
||||
# CONFIG_PMIC_ADP5520 is not set
|
||||
# CONFIG_INPUT_REGULATOR_HAPTIC is not set
|
||||
# CONFIG_INPUT_AXP20X_PEK is not set
|
||||
# CONFIG_POWER_RESET_BRCMSTB is not set
|
||||
# CONFIG_INPUT_TPS65218_PWRBUTTON is not set
|
||||
# CONFIG_CLK_QORIQ is not set
|
||||
|
||||
# Debug options. We need to deal with them at some point like x86
|
||||
# CONFIG_DEBUG_USER is not set
|
||||
|
|
|
@ -82,3 +82,4 @@ CONFIG_GPIO_SYSCON=m
|
|||
# CONFIG_SND_SOC_TEGRA20_AC97 is not set
|
||||
# CONFIG_SND_SOC_TEGRA20_DAS is not set
|
||||
# CONFIG_SND_SOC_TEGRA20_SPDIF is not set
|
||||
# CONFIG_SND_SOC_TEGRA_RT5677 is not set
|
||||
|
|
106
config-generic
106
config-generic
|
@ -74,6 +74,7 @@ CONFIG_SLUB=y
|
|||
CONFIG_SLUB_CPU_PARTIAL=y
|
||||
# CONFIG_SLUB_STATS is not set
|
||||
# CONFIG_SLUB_DEBUG_ON is not set
|
||||
# CONFIG_KASAN is not set
|
||||
|
||||
# CONFIG_AD525X_DPOT is not set
|
||||
|
||||
|
@ -147,9 +148,8 @@ CONFIG_MMC_REALTEK_USB=m
|
|||
CONFIG_MMC_VUB300=m
|
||||
CONFIG_MMC_TOSHIBA_PCI=m
|
||||
# CONFIG_MMC_SPI is not set
|
||||
# CONFIG_MMC_SDHCI_PXAV2 is not set
|
||||
# CONFIG_MMC_SDHCI_PXAV3 is not set
|
||||
# CONFIG_MMC_SDHCI_OF_ARASAN is not set
|
||||
# CONFIG_MMC_SDHCI_F_SDH30 is not set
|
||||
# CONFIG_MMC_USDHI6ROL0 is not set
|
||||
|
||||
|
||||
|
@ -201,6 +201,7 @@ CONFIG_BINFMT_MISC=m
|
|||
#
|
||||
|
||||
# CONFIG_COMMON_CLK_SI5351 is not set
|
||||
# CONFIG_COMMON_CLK_CDCE706 is not set
|
||||
|
||||
#
|
||||
# Generic Driver Options
|
||||
|
@ -214,6 +215,9 @@ CONFIG_EXTRA_FIRMWARE=""
|
|||
# CONFIG_FW_LOADER_USER_HELPER is not set
|
||||
# CONFIG_FW_LOADER_USER_HELPER_FALLBACK is not set
|
||||
|
||||
CONFIG_REGMAP=y
|
||||
CONFIG_REGMAP_I2C=m
|
||||
|
||||
# CONFIG_CMA is not set
|
||||
# CONFIG_DMA_CMA is not set
|
||||
# CONFIG_FENCE_TRACE is not set
|
||||
|
@ -306,6 +310,7 @@ CONFIG_MTD_CFI_I2=y
|
|||
# CONFIG_MTD_ONENAND is not set
|
||||
# CONFIG_MTD_NAND_ECC_BCH is not set
|
||||
# CONFIG_MTD_NAND_DISKONCHIP is not set
|
||||
# CONFIG_MTD_NAND_HISI504 is not set
|
||||
# CONFIG_MTD_LPDDR is not set
|
||||
CONFIG_MTD_UBI=m
|
||||
CONFIG_MTD_UBI_WL_THRESHOLD=4096
|
||||
|
@ -380,6 +385,7 @@ CONFIG_BLK_DEV_THROTTLING=y
|
|||
CONFIG_SCSI_VIRTIO=m
|
||||
CONFIG_VIRTIO_BLK=m
|
||||
CONFIG_VIRTIO_PCI=m
|
||||
CONFIG_VIRTIO_PCI_LEGACY=y
|
||||
CONFIG_VIRTIO_BALLOON=m
|
||||
CONFIG_VIRTIO_MMIO=m
|
||||
# CONFIG_VIRTIO_MMIO_CMDLINE_DEVICES is not set
|
||||
|
@ -529,7 +535,6 @@ CONFIG_SCSI_DC395x=m
|
|||
# CONFIG_SCSI_NSP32 is not set
|
||||
CONFIG_SCSI_WD719X=m
|
||||
CONFIG_SCSI_DEBUG=m
|
||||
CONFIG_SCSI_DC390T=m
|
||||
CONFIG_SCSI_QLA_FC=m
|
||||
CONFIG_TCM_QLA2XXX=m
|
||||
CONFIG_SCSI_QLA_ISCSI=m
|
||||
|
@ -1143,7 +1148,6 @@ CONFIG_IP_DCCP_CCID3=y
|
|||
# TIPC Configuration (EXPERIMENTAL)
|
||||
#
|
||||
CONFIG_TIPC=m
|
||||
CONFIG_TIPC_PORTS=8192
|
||||
# CONFIG_TIPC_MEDIA_IB is not set
|
||||
|
||||
CONFIG_NETLABEL=y
|
||||
|
@ -1212,6 +1216,8 @@ CONFIG_NET_ACT_POLICE=m
|
|||
CONFIG_NET_ACT_SIMP=m
|
||||
CONFIG_NET_ACT_SKBEDIT=m
|
||||
CONFIG_NET_ACT_VLAN=m
|
||||
CONFIG_NET_ACT_BPF=m
|
||||
CONFIG_NET_ACT_CONNMARK=m
|
||||
|
||||
CONFIG_DCB=y
|
||||
CONFIG_DNS_RESOLVER=m
|
||||
|
@ -1421,6 +1427,7 @@ CONFIG_IXGBEVF=m
|
|||
CONFIG_IXGBE=m
|
||||
CONFIG_IXGBE_DCA=y
|
||||
CONFIG_IXGBE_DCB=y
|
||||
CONFIG_IXGBE_VXLAN=y
|
||||
CONFIG_IXGBE_HWMON=y
|
||||
CONFIG_I40E=m
|
||||
CONFIG_I40E_VXLAN=y
|
||||
|
@ -1521,8 +1528,6 @@ CONFIG_NET_VENDOR_STMICRO=y
|
|||
CONFIG_STMMAC_ETH=m
|
||||
# CONFIG_STMMAC_PLATFORM is not set
|
||||
# CONFIG_STMMAC_PCI is not set
|
||||
# CONFIG_STMMAC_DA is not set
|
||||
# CONFIG_STMMAC_DEBUG_FS is not set
|
||||
|
||||
CONFIG_NET_VENDOR_SUN=y
|
||||
CONFIG_HAPPYMEAL=m
|
||||
|
@ -1535,6 +1540,7 @@ CONFIG_TEHUTI=m
|
|||
|
||||
CONFIG_NET_VENDOR_TI=y
|
||||
CONFIG_TLAN=m
|
||||
# CONFIG_TI_CPSW_ALE is not set
|
||||
|
||||
CONFIG_NET_VENDOR_VIA=y
|
||||
CONFIG_VIA_RHINE=m
|
||||
|
@ -1840,6 +1846,7 @@ CONFIG_MWIFIEX_PCIE=m
|
|||
CONFIG_MWIFIEX_USB=m
|
||||
|
||||
CONFIG_IEEE802154=m
|
||||
CONFIG_IEEE802154_SOCKET=m
|
||||
CONFIG_IEEE802154_6LOWPAN=m
|
||||
CONFIG_IEEE802154_DRIVERS=m
|
||||
CONFIG_IEEE802154_FAKELB=m
|
||||
|
@ -1964,6 +1971,7 @@ CONFIG_BT=m
|
|||
CONFIG_BT_BREDR=y
|
||||
CONFIG_BT_LE=y
|
||||
CONFIG_BT_6LOWPAN=m
|
||||
# CONFIG_BT_SELFTEST is not set
|
||||
CONFIG_BT_SCO=y
|
||||
CONFIG_BT_CMTP=m
|
||||
CONFIG_BT_RFCOMM=m
|
||||
|
@ -2309,6 +2317,7 @@ CONFIG_TOUCHSCREEN_ZFORCE=m
|
|||
# CONFIG_TOUCHSCREEN_AR1021_I2C is not set
|
||||
|
||||
CONFIG_INPUT_MISC=y
|
||||
CONFIG_INPUT_E3X0_BUTTON=m
|
||||
CONFIG_INPUT_PCSPKR=m
|
||||
CONFIG_INPUT_RETU_PWRBUTTON=m
|
||||
CONFIG_INPUT_UINPUT=m
|
||||
|
@ -2357,7 +2366,7 @@ CONFIG_TCG_TIS=m
|
|||
CONFIG_TCG_NSC=m
|
||||
CONFIG_TCG_ATMEL=m
|
||||
# CONFIG_TCG_INFINEON is not set
|
||||
# CONFIG_TCG_ST33_I2C is not set
|
||||
# CONFIG_TCG_TIS_I2C_ST33 is not set
|
||||
# CONFIG_TCG_XEN is not set
|
||||
CONFIG_TELCLOCK=m
|
||||
|
||||
|
@ -2402,6 +2411,7 @@ CONFIG_SERIAL_ARC=m
|
|||
CONFIG_SERIAL_ARC_NR_PORTS=1
|
||||
# CONFIG_SERIAL_RP2 is not set
|
||||
# CONFIG_SERIAL_FSL_LPUART is not set
|
||||
# CONFIG_SERIAL_CONEXANT_DIGICOLOR is not set
|
||||
# CONFIG_SERIAL_ST_ASC is not set
|
||||
# CONFIG_SERIAL_PCH_UART is not set
|
||||
# CONFIG_SERIAL_MAX3100 is not set
|
||||
|
@ -2664,6 +2674,7 @@ CONFIG_IIO_INTERRUPT_TRIGGER=m
|
|||
CONFIG_HID_SENSOR_IIO_COMMON=m
|
||||
CONFIG_HID_SENSOR_IIO_TRIGGER=m
|
||||
# CONFIG_IIO_SYSFS_TRIGGER is not set
|
||||
# CONFIG_IIO_SSP_SENSORHUB is not set
|
||||
# CONFIG_AD5446 is not set
|
||||
# CONFIG_AD5380 is not set
|
||||
# CONFIG_AD5064 is not set
|
||||
|
@ -2675,7 +2686,8 @@ CONFIG_HID_SENSOR_IIO_TRIGGER=m
|
|||
# CONFIG_MCP4725 is not set
|
||||
# CONFIG_ITG3200 is not set
|
||||
# CONFIG_APDS9300 is not set
|
||||
# CONFIG_CM32181 is not set
|
||||
CONFIG_CM32181=m
|
||||
# CONFIG_CM3232 is not set
|
||||
# CONFIG_CM36651 is not set
|
||||
# CONFIG_GP2AP020A00F is not set
|
||||
# CONFIG_TSL2583 is not set
|
||||
|
@ -2688,6 +2700,7 @@ CONFIG_HID_SENSOR_IIO_TRIGGER=m
|
|||
# CONFIG_TI_ADC128S052 is not set
|
||||
# CONFIG_VIPERBOARD_ADC is not set
|
||||
# CONFIG_VF610_ADC is not set
|
||||
# CONFIG_CC10001_ADC is not set
|
||||
# CONFIG_INV_MPU6050_IIO is not set
|
||||
CONFIG_IIO_ST_GYRO_3AXIS=m
|
||||
CONFIG_IIO_ST_MAGN_3AXIS=m
|
||||
|
@ -2708,6 +2721,8 @@ CONFIG_HID_SENSOR_DEVICE_ROTATION=m
|
|||
# CONFIG_IIO_ST_PRESS is not set
|
||||
# CONFIG_KXSD9 is not set
|
||||
# CONFIG_MMA8452 is not set
|
||||
# CONFIG_MMA9551 is not set
|
||||
# CONFIG_MMA9553 is not set
|
||||
# CONFIG_AD7266 is not set
|
||||
# CONFIG_AD7298 is not set
|
||||
# CONFIG_AD7476 is not set
|
||||
|
@ -2734,6 +2749,7 @@ CONFIG_HID_SENSOR_DEVICE_ROTATION=m
|
|||
# CONFIG_ADIS16130 is not set
|
||||
# CONFIG_ADIS16136 is not set
|
||||
# CONFIG_ADIS16260 is not set
|
||||
# CONFIG_KMX61 is not set
|
||||
# CONFIG_ADXRS450 is not set
|
||||
# CONFIG_BMG160 is not set
|
||||
# CONFIG_ADIS16400 is not set
|
||||
|
@ -2744,8 +2760,10 @@ CONFIG_HID_SENSOR_DEVICE_ROTATION=m
|
|||
# CONFIG_SI7005 is not set
|
||||
# CONFIG_SI7020 is not set
|
||||
# CONFIG_AS3935 is not set
|
||||
# CONFIG_SX9500 is not set
|
||||
CONFIG_KXCJK1013=m
|
||||
# CONFIG_ISL29125 is not set
|
||||
# CONFIG_JSA1212 is not set
|
||||
# CONFIG_TCS3414 is not set
|
||||
# CONFIG_AK09911 is not set
|
||||
# CONFIG_T5403 is not set
|
||||
|
@ -2904,6 +2922,9 @@ CONFIG_RTC_DRV_CMOS=y
|
|||
CONFIG_RTC_DRV_DS1307=m
|
||||
CONFIG_RTC_DRV_DS1511=m
|
||||
CONFIG_RTC_DRV_DS1553=m
|
||||
CONFIG_RTC_DRV_DS1685_FAMILY=m
|
||||
# CONFIG_RTC_DS1685_PROC_REGS is not set
|
||||
CONFIG_RTC_DS1685_SYSFS_REGS=y
|
||||
CONFIG_RTC_DRV_DS1672=m
|
||||
CONFIG_RTC_DRV_DS1742=m
|
||||
CONFIG_RTC_DRV_DS1374=m
|
||||
|
@ -2964,6 +2985,7 @@ CONFIG_RTC_DRV_PCF85063=m
|
|||
# CONFIG_RTC_DRV_MOXART is not set
|
||||
# CONFIG_RTC_DRV_ISL12057 is not set
|
||||
# CONFIG_RTC_DRV_XGENE is not set
|
||||
# CONFIG_RTC_DRV_ABB5ZES3 is not set
|
||||
|
||||
CONFIG_R3964=m
|
||||
# CONFIG_APPLICOM is not set
|
||||
|
@ -3020,6 +3042,9 @@ CONFIG_DRM_VMWGFX_FBCON=y
|
|||
CONFIG_DRM_QXL=m
|
||||
CONFIG_DRM_BOCHS=m
|
||||
CONFIG_DRM_PTN3460=m
|
||||
# CONFIG_DRM_PANEL is not set
|
||||
# CONFIG_DRM_PANEL_SIMPLE is not set
|
||||
# CONFIG_DRM_PANEL_S6E8AA0 is not set
|
||||
|
||||
#
|
||||
# PCMCIA character devices
|
||||
|
@ -3050,7 +3075,6 @@ CONFIG_MEDIA_CONTROLLER=y
|
|||
CONFIG_VIDEO_DEV=m
|
||||
# CONFIG_VIDEO_ADV_DEBUG is not set
|
||||
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
|
||||
|
@ -3068,13 +3092,11 @@ CONFIG_VIDEO_V4L2_SUBDEV_API=y
|
|||
CONFIG_VIDEO_AU0828=m
|
||||
CONFIG_VIDEO_AU0828_V4L2=y
|
||||
CONFIG_VIDEO_BT848=m
|
||||
CONFIG_VIDEO_BWQCAM=m
|
||||
CONFIG_VIDEO_SR030PC30=m
|
||||
CONFIG_VIDEO_NOON010PC30=m
|
||||
CONFIG_VIDEO_CAFE_CCIC=m
|
||||
# CONFIG_VIDEO_CPIA is not set
|
||||
CONFIG_VIDEO_CPIA2=m
|
||||
CONFIG_VIDEO_CQCAM=m
|
||||
CONFIG_VIDEO_CX23885=m
|
||||
CONFIG_MEDIA_ALTERA_CI=m
|
||||
CONFIG_VIDEO_CX18=m
|
||||
|
@ -3101,7 +3123,6 @@ CONFIG_VIDEO_IVTV=m
|
|||
CONFIG_VIDEO_MEYE=m
|
||||
CONFIG_VIDEO_MXB=m
|
||||
CONFIG_VIDEO_PVRUSB2_DVB=y
|
||||
# CONFIG_VIDEO_PMS is not set
|
||||
CONFIG_VIDEO_HDPVR=m
|
||||
CONFIG_VIDEO_SAA6588=m
|
||||
CONFIG_VIDEO_SAA7134=m
|
||||
|
@ -3113,7 +3134,6 @@ CONFIG_VIDEO_USBVISION=m
|
|||
CONFIG_VIDEO_STK1160_COMMON=m
|
||||
CONFIG_VIDEO_STK1160=m
|
||||
CONFIG_VIDEO_STK1160_AC97=y
|
||||
CONFIG_VIDEO_W9966=m
|
||||
CONFIG_VIDEO_ZORAN=m
|
||||
CONFIG_VIDEO_ZORAN_AVS6EYES=m
|
||||
CONFIG_VIDEO_ZORAN_BUZ=m
|
||||
|
@ -3128,7 +3148,6 @@ CONFIG_VIDEO_SAA7164=m
|
|||
CONFIG_VIDEO_TM6000=m
|
||||
CONFIG_VIDEO_TM6000_ALSA=m
|
||||
CONFIG_VIDEO_TM6000_DVB=m
|
||||
CONFIG_VIDEO_TLG2300=m
|
||||
# CONFIG_VIDEO_TIMBERDALE is not set
|
||||
# CONFIG_VIDEO_M5MOLS is not set
|
||||
# CONFIG_VIDEO_TW68 is not set
|
||||
|
@ -3252,7 +3271,6 @@ CONFIG_DVB_HOPPER=m
|
|||
CONFIG_VIDEO_SAA7146=m
|
||||
CONFIG_VIDEO_SAA7146_VV=m
|
||||
CONFIG_VIDEO_TUNER=m
|
||||
CONFIG_VIDEO_BTCX=m
|
||||
CONFIG_VIDEO_PVRUSB2=m
|
||||
CONFIG_VIDEO_PVRUSB2_SYSFS=y
|
||||
# CONFIG_VIDEO_PVRUSB2_DEBUGIFC is not set
|
||||
|
@ -3296,8 +3314,6 @@ CONFIG_V4L_MEM2MEM_DRIVERS=y
|
|||
# CONFIG_VIDEO_RENESAS_VSP1 is not set
|
||||
# CONFIG_V4L_TEST_DRIVERS is not set
|
||||
|
||||
# CONFIG_VIDEO_MEM2MEM_TESTDEV is not set
|
||||
|
||||
#
|
||||
# Broadcom Crystal HD video decoder driver
|
||||
#
|
||||
|
@ -3389,6 +3405,8 @@ CONFIG_VGA_CONSOLE=y
|
|||
CONFIG_VGACON_SOFT_SCROLLBACK=y
|
||||
CONFIG_VGACON_SOFT_SCROLLBACK_SIZE=64
|
||||
CONFIG_DUMMY_CONSOLE=y
|
||||
CONFIG_DUMMY_CONSOLE_COLUMNS=80
|
||||
CONFIG_DUMMY_CONSOLE_ROWS=25
|
||||
CONFIG_FRAMEBUFFER_CONSOLE=y
|
||||
CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
|
||||
CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y
|
||||
|
@ -3550,6 +3568,10 @@ CONFIG_SND_USB_UA101=m
|
|||
CONFIG_SND_USB_6FIRE=m
|
||||
CONFIG_SND_USB_HIFACE=m
|
||||
# CONFIG_SND_BCD2000 is not set
|
||||
CONFIG_SND_USB_POD=m
|
||||
CONFIG_SND_USB_PODHD=m
|
||||
CONFIG_SND_USB_TONEPORT=m
|
||||
CONFIG_SND_USB_VARIAX=m
|
||||
|
||||
#
|
||||
# PCMCIA devices
|
||||
|
@ -3557,7 +3579,6 @@ CONFIG_SND_USB_HIFACE=m
|
|||
# CONFIG_SND_PCMCIA is not set
|
||||
|
||||
CONFIG_SND_FIREWIRE=y
|
||||
CONFIG_SND_FIREWIRE_SPEAKERS=m
|
||||
CONFIG_SND_ISIGHT=m
|
||||
CONFIG_SND_SCS1X=m
|
||||
CONFIG_SND_DICE=m
|
||||
|
@ -3598,7 +3619,7 @@ CONFIG_USB_EHCI_TT_NEWSCHED=y
|
|||
# CONFIG_USB_EHCI_MV is not set
|
||||
# CONFIG_USB_EHCI_HCD_PLATFORM is not set
|
||||
# CONFIG_USB_ISP116X_HCD is not set
|
||||
# CONFIG_USB_ISP1760_HCD is not set
|
||||
# CONFIG_USB_ISP1760 is not set
|
||||
CONFIG_USB_ISP1362_HCD=m
|
||||
CONFIG_USB_FUSBH200_HCD=m
|
||||
# CONFIG_USB_FOTG210_HCD is not set
|
||||
|
@ -3677,6 +3698,7 @@ CONFIG_HID_MULTITOUCH=m
|
|||
CONFIG_HID_NTRIG=y
|
||||
CONFIG_HID_PLANTRONICS=m
|
||||
CONFIG_HID_PRIMAX=m
|
||||
CONFIG_HID_BETOP_FF=m
|
||||
CONFIG_HID_PRODIKEYS=m
|
||||
CONFIG_HID_DRAGONRISE=m
|
||||
CONFIG_HID_GYRATION=m
|
||||
|
@ -3793,6 +3815,7 @@ CONFIG_USB_GSPCA_NW80X=m
|
|||
CONFIG_USB_GSPCA_VICAM=m
|
||||
CONFIG_USB_GSPCA_KINECT=m
|
||||
CONFIG_USB_GSPCA_SE401=m
|
||||
CONFIG_USB_GSPCA_TOUPTEK=m
|
||||
|
||||
CONFIG_USB_S2255=m
|
||||
# CONFIG_VIDEO_SH_MOBILE_CEU is not set
|
||||
|
@ -4023,6 +4046,8 @@ CONFIG_PCF50633_GPIO=m
|
|||
CONFIG_INPUT_PCF50633_PMU=m
|
||||
CONFIG_INPUT_GPIO_ROTARY_ENCODER=m
|
||||
|
||||
CONFIG_MFD_CORE=m
|
||||
|
||||
CONFIG_MFD_VX855=m
|
||||
CONFIG_MFD_SM501=m
|
||||
CONFIG_MFD_SM501_GPIO=y
|
||||
|
@ -4083,6 +4108,8 @@ CONFIG_MFD_VIPERBOARD=m
|
|||
# CONFIG_MFD_HI6421_PMIC is not set
|
||||
# CONFIG_MFD_RK808 is not set
|
||||
# CONFIG_MFD_RN5T618 is not set
|
||||
# CONFIG_MFD_DA9150 is not set
|
||||
# CONFIG_MFD_RT5033 is not set
|
||||
# CONFIG_EZX_PCAP is not set
|
||||
# CONFIG_INTEL_SOC_PMIC is not set
|
||||
|
||||
|
@ -4132,6 +4159,7 @@ CONFIG_AUTOFS4_FS=y
|
|||
# CONFIG_EXOFS_FS is not set
|
||||
# CONFIG_EXOFS_DEBUG is not set
|
||||
CONFIG_NILFS2_FS=m
|
||||
# CONFIG_FS_DAX is not set
|
||||
# CONFIG_LOGFS is not set
|
||||
CONFIG_CEPH_FS=m
|
||||
CONFIG_CEPH_FSCACHE=y
|
||||
|
@ -4228,6 +4256,7 @@ CONFIG_F2FS_FS_XATTR=y
|
|||
CONFIG_F2FS_FS_POSIX_ACL=y
|
||||
CONFIG_F2FS_FS_SECURITY=y
|
||||
# CONFIG_F2FS_CHECK_FS is not set
|
||||
# CONFIG_F2FS_IO_TRACE is not set
|
||||
|
||||
#
|
||||
# Network File Systems
|
||||
|
@ -4247,6 +4276,7 @@ CONFIG_NFSD=m
|
|||
CONFIG_NFSD_V3=y
|
||||
CONFIG_NFSD_V3_ACL=y
|
||||
CONFIG_NFSD_V4=y
|
||||
CONFIG_NFSD_PNFS=y
|
||||
CONFIG_NFSD_V4_SECURITY_LABEL=y
|
||||
CONFIG_NFS_FSCACHE=y
|
||||
# CONFIG_NFS_USE_LEGACY_DNS is not set
|
||||
|
@ -4465,7 +4495,6 @@ CONFIG_HWPOISON_INJECT=m
|
|||
CONFIG_CROSS_MEMORY_ATTACH=y
|
||||
# CONFIG_DEBUG_SECTION_MISMATCH is not set
|
||||
# CONFIG_BACKTRACE_SELF_TEST is not set
|
||||
CONFIG_RESOURCE_COUNTERS=y
|
||||
# CONFIG_COMPAT_BRK is not set
|
||||
# CONFIG_DEBUG_VIRTUAL is not set
|
||||
# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
|
||||
|
@ -4480,6 +4509,7 @@ CONFIG_KGDB_SERIAL_CONSOLE=y
|
|||
CONFIG_KGDB_TESTS=y
|
||||
CONFIG_KGDB_LOW_LEVEL_TRAP=y
|
||||
# CONFIG_KGDB_TESTS_ON_BOOT is not set
|
||||
# CONFIG_GDB_SCRIPTS is not set
|
||||
|
||||
|
||||
#
|
||||
|
@ -4518,6 +4548,7 @@ CONFIG_CRYPTO=y
|
|||
CONFIG_CRYPTO_FIPS=y
|
||||
CONFIG_CRYPTO_USER_API_HASH=y
|
||||
CONFIG_CRYPTO_USER_API_SKCIPHER=y
|
||||
CONFIG_CRYPTO_USER_API_RNG=y
|
||||
CONFIG_CRYPTO_MANAGER=y
|
||||
# Note, CONFIG_CRYPTO_MANAGER_DISABLE_TESTS needs to be unset, or FIPS will be disabled.
|
||||
# CONFIG_CRYPTO_MANAGER_DISABLE_TESTS is not set
|
||||
|
@ -4622,14 +4653,11 @@ CONFIG_RD_XZ=y
|
|||
CONFIG_RD_LZO=y
|
||||
CONFIG_RD_LZ4=y
|
||||
|
||||
CONFIG_INIT_FALLBACK=y
|
||||
|
||||
CONFIG_KEYS=y
|
||||
CONFIG_PERSISTENT_KEYRINGS=y
|
||||
CONFIG_BIG_KEYS=y
|
||||
CONFIG_TRUSTED_KEYS=m
|
||||
CONFIG_ENCRYPTED_KEYS=m
|
||||
CONFIG_KEYS_DEBUG_PROC_KEYS=y
|
||||
CONFIG_CDROM_PKTCDVD=m
|
||||
CONFIG_CDROM_PKTCDVD_BUFFERS=8
|
||||
# CONFIG_CDROM_PKTCDVD_WCACHE is not set
|
||||
|
@ -4739,7 +4767,6 @@ CONFIG_PM_DEBUG=y
|
|||
CONFIG_PM_TRACE=y
|
||||
CONFIG_PM_TRACE_RTC=y
|
||||
# CONFIG_PM_TEST_SUSPEND is not set
|
||||
CONFIG_PM_RUNTIME=y
|
||||
# CONFIG_PM_OPP is not set
|
||||
# CONFIG_PM_AUTOSLEEP is not set
|
||||
# CONFIG_PM_WAKELOCKS is not set
|
||||
|
@ -4761,8 +4788,6 @@ CONFIG_CPU_FREQ_STAT_DETAILS=y
|
|||
|
||||
# CONFIG_MOUSE_ATIXL is not set
|
||||
|
||||
# CONFIG_MEDIA_PARPORT_SUPPORT is not set
|
||||
|
||||
CONFIG_RADIO_ADAPTERS=y
|
||||
CONFIG_RADIO_TEA5764=m
|
||||
CONFIG_RADIO_SAA7706H=m
|
||||
|
@ -4867,6 +4892,8 @@ CONFIG_SND_SOC_GENERIC_DMAENGINE_PCM=y
|
|||
# CONFIG_SND_SOC_TLV320AIC23_I2C is not set
|
||||
# CONFIG_SND_SOC_TLV320AIC23_SPI is not set
|
||||
# CONFIG_SND_SOC_TS3A227E is not set
|
||||
# CONFIG_SND_SOC_XTFPGA_I2S is not set
|
||||
# CONFIG_SND_SOC_STA32X is not set
|
||||
|
||||
CONFIG_BALLOON_COMPACTION=y
|
||||
CONFIG_COMPACTION=y
|
||||
|
@ -4874,6 +4901,7 @@ CONFIG_MIGRATION=y
|
|||
CONFIG_BOUNCE=y
|
||||
CONFIG_NEW_LEDS=y
|
||||
CONFIG_LEDS_CLASS=y
|
||||
CONFIG_LEDS_CLASS_FLASH=m
|
||||
# CONFIG_LEDS_LOCOMO is not set
|
||||
# CONFIG_LEDS_NET48XX is not set
|
||||
# CONFIG_LEDS_PCA9532 is not set
|
||||
|
@ -5004,6 +5032,8 @@ CONFIG_APM_POWER=m
|
|||
CONFIG_POWER_RESET=y
|
||||
# CONFIG_POWER_RESET_LTC2952 is not set
|
||||
# CONFIG_POWER_RESET_SYSCON is not set
|
||||
# CONFIG_BATTERY_GAUGE_LTC2941 is not set
|
||||
# CONFIG_POWER_RESET_RESTART is not set
|
||||
|
||||
# CONFIG_PDA_POWER is not set
|
||||
|
||||
|
@ -5028,7 +5058,6 @@ CONFIG_VFIO_PCI=m
|
|||
# LIRC
|
||||
CONFIG_LIRC_STAGING=y
|
||||
CONFIG_LIRC_BT829=m
|
||||
CONFIG_LIRC_IGORPLUGUSB=m
|
||||
CONFIG_LIRC_IMON=m
|
||||
CONFIG_LIRC_ZILOG=m
|
||||
CONFIG_LIRC_PARALLEL=m
|
||||
|
@ -5039,6 +5068,7 @@ CONFIG_LIRC_SIR=m
|
|||
|
||||
# CONFIG_SAMPLES is not set
|
||||
|
||||
CONFIG_DEVMEM=y
|
||||
# CONFIG_DEVKMEM is not set
|
||||
|
||||
CONFIG_NOZOMI=m
|
||||
|
@ -5053,7 +5083,6 @@ CONFIG_INPUT_GP2A=m
|
|||
CONFIG_ENCLOSURE_SERVICES=m
|
||||
CONFIG_IPWIRELESS=m
|
||||
|
||||
# CONFIG_BLK_DEV_XIP is not set
|
||||
CONFIG_MEMSTICK=m
|
||||
# CONFIG_MEMSTICK_DEBUG is not set
|
||||
# CONFIG_MEMSTICK_UNSAFE_RESUME is not set
|
||||
|
@ -5130,14 +5159,12 @@ CONFIG_STAGING_MEDIA=y
|
|||
# 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_DT3155 is not set
|
||||
# CONFIG_PRISM2_USB is not set
|
||||
# CONFIG_ECHO is not set
|
||||
CONFIG_USB_ATMEL=m
|
||||
# CONFIG_COMEDI is not set
|
||||
# CONFIG_PANEL is not set
|
||||
# CONFIG_LINE6_USB is not set
|
||||
# CONFIG_VME_BUS is not set
|
||||
# CONFIG_VT6656 is not set
|
||||
# Larry Finger maintains these (rhbz 913753)
|
||||
|
@ -5156,11 +5183,9 @@ CONFIG_R8723AU=m # Jes Sorensen maintains this (rhbz 1100162)
|
|||
# CONFIG_SOLO6X10 is not set
|
||||
# CONFIG_LTE_GDM724X is not set
|
||||
CONFIG_R8712U=m # Larry Finger maintains this (rhbz 699618)
|
||||
# CONFIG_BCM_WIMAX is not set
|
||||
# CONFIG_FT1000 is not set
|
||||
# CONFIG_SPEAKUP is not set
|
||||
# CONFIG_TOUCHSCREEN_SYNAPTICS_I2C_RMI4 is not set
|
||||
# CONFIG_TOUCHSCREEN_CLEARPAD_TM1217 is not set
|
||||
CONFIG_ALTERA_STAPL=m
|
||||
# CONFIG_DVB_CXD2099 is not set
|
||||
# CONFIG_DVB_RTL2832_SDR is not set
|
||||
|
@ -5183,9 +5208,10 @@ CONFIG_USBIP_HOST=m
|
|||
# CONFIG_UNISYSSPAR is not set
|
||||
# CONFIG_MEDIA_TUNER_MSI001 is not set
|
||||
# CONFIG_COMMON_CLK_XLNX_CLKWZRD is not set
|
||||
# CONFIG_VIDEO_SAA7191 is not set
|
||||
# CONFIG_DVB_MN88472 is not set
|
||||
# CONFIG_DVB_MN88473 is not set
|
||||
# CONFIG_FB_SM7XX is not set
|
||||
# CONFIG_FB_TFT is not set
|
||||
# END OF STAGING
|
||||
|
||||
#
|
||||
|
@ -5219,8 +5245,11 @@ CONFIG_RCU_TORTURE_TEST=m
|
|||
# CONFIG_RCU_CPU_STALL_INFO is not set
|
||||
# CONFIG_TASKS_RCU is not set
|
||||
# CONFIG_RCU_USER_QS is not set
|
||||
CONFIG_RCU_KTHREAD_PRIO=0
|
||||
CONFIG_SPARSE_RCU_POINTER=y
|
||||
|
||||
# CONFIG_LIVEPATCH is not set
|
||||
|
||||
CONFIG_KSM=y
|
||||
CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
|
||||
|
||||
|
@ -5251,6 +5280,7 @@ CONFIG_FRONTSWAP=y
|
|||
CONFIG_ZSWAP=y
|
||||
CONFIG_ZBUD=y
|
||||
CONFIG_ZSMALLOC=y
|
||||
# CONFIG_ZSMALLOC_STAT is not set
|
||||
# CONFIG_PGTABLE_MAPPING is not set
|
||||
|
||||
# CONFIG_MDIO_GPIO is not set
|
||||
|
@ -5298,6 +5328,7 @@ CONFIG_GPIO_VIPERBOARD=m
|
|||
# CONFIG_GPIO_MAX7301 is not set
|
||||
# CONFIG_GPIO_MC33880 is not set
|
||||
# CONFIG_GPIO_MCP23S08 is not set
|
||||
# CONFIG_GPIO_XILINX is not set
|
||||
|
||||
# FIXME: Why?
|
||||
|
||||
|
@ -5328,12 +5359,14 @@ CONFIG_HWSPINLOCK=m
|
|||
CONFIG_PSTORE=y
|
||||
CONFIG_PSTORE_RAM=m
|
||||
# CONFIG_PSTORE_CONSOLE is not set
|
||||
# CONFIG_PSTORE_PMSG is not set
|
||||
# CONFIG_PSTORE_FTRACE is not set
|
||||
|
||||
# CONFIG_TEST_LKM is not set
|
||||
# CONFIG_TEST_USER_COPY is not set
|
||||
# CONFIG_TEST_BPF is not set
|
||||
# CONFIG_TEST_UDELAY is not set
|
||||
# CONFIG_TEST_HEXDUMP is not set
|
||||
# CONFIG_TEST_RHASHTABLE is not set
|
||||
|
||||
# CONFIG_AVERAGE is not set
|
||||
|
@ -5354,8 +5387,11 @@ CONFIG_BCMA_DRIVER_GPIO=y
|
|||
# CONFIG_GOOGLE_FIRMWARE is not set
|
||||
# CONFIG_INTEL_MID_PTI is not set
|
||||
CONFIG_IOMMU_SUPPORT=y
|
||||
# CONFIG_IOMMU_IO_PGTABLE_LPAE is not set
|
||||
# CONFIG_IOMMU_IO_PGTABLE_LPAE_SELFTEST is not set
|
||||
|
||||
# CONFIG_MAILBOX is not set
|
||||
# CONFIG_ALTERA_MBOX is not set
|
||||
|
||||
# CONFIG_RESET_CONTROLLER is not set
|
||||
|
||||
|
@ -5375,10 +5411,12 @@ CONFIG_POWERCAP=y
|
|||
# CONFIG_CPU_IDLE is not set
|
||||
|
||||
# CONFIG_ARM_ARCH_TIMER_EVTSTREAM is not set
|
||||
# CONFIG_ASM9260_TIMER is not set
|
||||
|
||||
# CONFIG_HMC_DRV is not set
|
||||
|
||||
# CONFIG_PM_DEVFREQ is not set
|
||||
# CONFIG_PM_DEVFREQ_EVENT is not set
|
||||
# CONFIG_DEVFREQ_GOV_SIMPLE_ONDEMAND is not set
|
||||
# CONFIG_DEVFREQ_GOV_PERFORMANCE is not set
|
||||
# CONFIG_DEVFREQ_GOV_POWERSAVE is not set
|
||||
|
@ -5403,3 +5441,5 @@ CONFIG_POWERCAP=y
|
|||
|
||||
# set in x86-generic presently
|
||||
# CONFIG_TOUCHSCREEN_GOODIX is not set
|
||||
|
||||
CONFIG_PCI_ECAM=y
|
||||
|
|
|
@ -76,7 +76,6 @@ CONFIG_MEMORY_HOTPLUG=y
|
|||
# CONFIG_ATM_HORIZON is not set
|
||||
# CONFIG_ATM_FIRESTREAM is not set
|
||||
# CONFIG_ATM_AMBASSADOR is not set
|
||||
# CONFIG_SCSI_DC390T is not set
|
||||
# CONFIG_SCSI_BUSLOGIC is not set
|
||||
|
||||
|
||||
|
@ -210,6 +209,10 @@ CONFIG_EXTRA_TARGETS=""
|
|||
|
||||
CONFIG_NET_VENDOR_IBM=y
|
||||
|
||||
CONFIG_MLX4_EN=m
|
||||
CONFIG_MLX4_EN_DCB=y
|
||||
CONFIG_MLX4_EN_VXLAN=y
|
||||
|
||||
# CONFIG_SERIO_XILINX_XPS_PS2 is not set
|
||||
|
||||
# CONFIG_PPC_SMLPAR is not set
|
||||
|
@ -333,7 +336,7 @@ CONFIG_I2C_MPC=m
|
|||
|
||||
# CONFIG_CPU_IDLE is not set
|
||||
# CONFIG_OF_UNITTEST is not set
|
||||
# CONFIG_OF_SELFTEST is not set
|
||||
# CONFIG_OF_OVERLAY is not set
|
||||
# CONFIG_TOUCHSCREEN_AUO_PIXCIR is not set
|
||||
# CONFIG_INPUT_GP2A is not set
|
||||
# CONFIG_INPUT_GPIO_TILT_POLLED is not set
|
||||
|
|
|
@ -34,7 +34,6 @@ CONFIG_HVCS=m
|
|||
CONFIG_HVC_CONSOLE=y
|
||||
# CONFIG_HVC_OLD_HVSI is not set
|
||||
CONFIG_HOTPLUG_PCI=y
|
||||
CONFIG_THERM_PM72=y
|
||||
CONFIG_IBMVETH=m
|
||||
CONFIG_SCSI_IBMVSCSI=m
|
||||
# CONFIG_HOTPLUG_PCI_CPCI is not set
|
||||
|
@ -180,8 +179,8 @@ CONFIG_CXL=m
|
|||
# CONFIG_PPC_ICSWX_PID is not set
|
||||
# CONFIG_PPC_ICSWX_USE_SIGILL is not set
|
||||
# CONFIG_PCIEPORTBUS is not set
|
||||
# CONFIG_PPC_TRANSACTIONAL_MEM is not set
|
||||
# CONFIG_SND_HDA_INTEL is not set
|
||||
CONFIG_BLK_DEV_RSXX=m
|
||||
CONFIG_PPC_TRANSACTIONAL_MEM=y
|
||||
|
||||
# CONFIG_CARL9170 is not set
|
||||
|
|
|
@ -28,7 +28,6 @@ CONFIG_HVCS=m
|
|||
CONFIG_HVC_CONSOLE=y
|
||||
# CONFIG_HVC_OLD_HVSI is not set
|
||||
CONFIG_HOTPLUG_PCI=y
|
||||
CONFIG_THERM_PM72=y
|
||||
CONFIG_IBMVETH=m
|
||||
CONFIG_SCSI_IBMVSCSI=m
|
||||
# CONFIG_HOTPLUG_PCI_CPCI is not set
|
||||
|
@ -172,3 +171,4 @@ CONFIG_CXL=m
|
|||
# CONFIG_PCIEPORTBUS is not set
|
||||
# CONFIG_SND_HDA_INTEL is not set
|
||||
CONFIG_BLK_DEV_RSXX=m
|
||||
CONFIG_PPC_TRANSACTIONAL_MEM=y
|
||||
|
|
|
@ -206,6 +206,7 @@ CONFIG_VMCP=y
|
|||
|
||||
CONFIG_SCHED_MC=y
|
||||
CONFIG_SCHED_BOOK=y
|
||||
CONFIG_SCHED_TOPOLOGY=y
|
||||
|
||||
# CONFIG_WARN_DYNAMIC_STACK is not set
|
||||
|
||||
|
@ -301,6 +302,7 @@ CONFIG_HOTPLUG_PCI_S390=y
|
|||
|
||||
CONFIG_MLX4_EN=m
|
||||
CONFIG_MLX4_EN_DCB=y
|
||||
CONFIG_MLX4_EN_VXLAN=y
|
||||
CONFIG_INFINIBAND=m
|
||||
CONFIG_INFINIBAND_USER_ACCESS=m
|
||||
CONFIG_MLX4_INFINIBAND=m
|
||||
|
|
|
@ -178,6 +178,7 @@ CONFIG_SERIAL_GRLIB_GAISLER_APBUART=m
|
|||
# CONFIG_MMC_SDHCI_OF is not set
|
||||
|
||||
# CONFIG_X86_INTEL_MID is not set
|
||||
# CONFIG_X86_INTEL_QUARK is not set
|
||||
|
||||
CONFIG_MFD_CS5535=m
|
||||
# CONFIG_MFD_SYSCON is not set
|
||||
|
@ -198,7 +199,7 @@ CONFIG_BACKLIGHT_PWM=m
|
|||
# CONFIG_EDAC_SBRIDGE is not set
|
||||
|
||||
# CONFIG_OF_UNITTEST is not set
|
||||
# CONFIG_OF_SELFTEST is not set
|
||||
# CONFIG_OF_OVERLAY is not set
|
||||
# CONFIG_TOUCHSCREEN_AUO_PIXCIR is not set
|
||||
# CONFIG_INPUT_GP2A is not set
|
||||
# CONFIG_INPUT_GPIO_TILT_POLLED is not set
|
||||
|
@ -217,3 +218,4 @@ CONFIG_BACKLIGHT_PWM=m
|
|||
# CONFIG_PINCTRL_IPQ8064 is not set
|
||||
# CONFIG_COMMON_CLK_SI570 is not set
|
||||
# CONFIG_COMMON_CLK_QCOM is not set
|
||||
# CONFIG_DRM_PANEL_SHARP_LQ101R1SX01 is not set
|
||||
|
|
|
@ -40,7 +40,6 @@ CONFIG_X86_PM_TIMER=y
|
|||
|
||||
CONFIG_EFI=y
|
||||
CONFIG_EFI_STUB=y
|
||||
# CONFIG_EFI_MIXED is not set
|
||||
CONFIG_EFI_VARS=y
|
||||
CONFIG_EFIVAR_FS=y
|
||||
CONFIG_EFI_VARS_PSTORE=y
|
||||
|
@ -130,7 +129,6 @@ CONFIG_GENERIC_ISA_DMA=y
|
|||
|
||||
CONFIG_PCI_MMCONFIG=y
|
||||
CONFIG_PCI_BIOS=y
|
||||
CONFIG_PCI_IOAPIC=y
|
||||
|
||||
CONFIG_HOTPLUG_PCI=y
|
||||
CONFIG_HOTPLUG_PCI_COMPAQ=m
|
||||
|
@ -199,6 +197,7 @@ CONFIG_EDAC_IE31200=m
|
|||
CONFIG_SCHED_MC=y
|
||||
|
||||
CONFIG_TCG_INFINEON=m
|
||||
CONFIG_TCG_CRB=m
|
||||
|
||||
CONFIG_HW_RANDOM_INTEL=m
|
||||
CONFIG_HW_RANDOM_AMD=m
|
||||
|
@ -490,6 +489,9 @@ CONFIG_NFC_MICROREAD_MEI=m
|
|||
# CONFIG_X86_GOLDFISH is not set
|
||||
|
||||
CONFIG_X86_INTEL_LPSS=y
|
||||
|
||||
# CONFIG_X86_AMD_PLATFORM_DEVICE is not set
|
||||
|
||||
CONFIG_IOSF_MBI=m
|
||||
# CONFIG_IOSF_MBI_DEBUG is not set
|
||||
CONFIG_PWM_LPSS=m
|
||||
|
@ -511,6 +513,7 @@ CONFIG_SND_SOC_INTEL_BYT_RT5640_MACH=m
|
|||
CONFIG_SND_SOC_INTEL_BYT_MAX98090_MACH=m
|
||||
CONFIG_SND_SOC_INTEL_BYTCR_RT5640_MACH=m
|
||||
CONFIG_SND_SOC_INTEL_CHT_BSW_RT5672_MACH=m
|
||||
CONFIG_SND_SOC_INTEL_CHT_BSW_RT5645_MACH=m
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -24,6 +24,9 @@ CONFIG_PHYSICAL_ALIGN=0x1000000
|
|||
# https://lists.fedoraproject.org/pipermail/kernel/2013-December/004753.html
|
||||
CONFIG_DEFAULT_MMAP_MIN_ADDR=65536
|
||||
|
||||
# enable the 32-bit entry point for Baytrail
|
||||
CONFIG_EFI_MIXED=y
|
||||
|
||||
CONFIG_IA32_EMULATION=y
|
||||
# CONFIG_IA32_AOUT is not set
|
||||
|
||||
|
@ -80,7 +83,6 @@ CONFIG_CRYPTO_TWOFISH_AVX_X86_64=m
|
|||
CONFIG_CRYPTO_DES3_EDE_X86_64=m
|
||||
# staging crypto
|
||||
# CONFIG_CRYPTO_SKEIN is not set
|
||||
# CONFIG_CRYPTO_THREEFISH is not set
|
||||
|
||||
# CONFIG_I2C_ALI1535 is not set
|
||||
# CONFIG_I2C_ALI1563 is not set
|
||||
|
@ -169,6 +171,7 @@ CONFIG_NTB_NETDEV=m
|
|||
CONFIG_IP1000=m
|
||||
CONFIG_MLX4_EN=m
|
||||
CONFIG_MLX4_EN_DCB=y
|
||||
CONFIG_MLX4_EN_VXLAN=y
|
||||
# CONFIG_MLX4_DEBUG is not set
|
||||
CONFIG_SFC=m
|
||||
CONFIG_SFC_MCDI_MON=y
|
||||
|
|
|
@ -14,7 +14,7 @@ Signed-off-by: Josh Boyer <jwboyer@fedoraproject.org>
|
|||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/drivers/gpu/drm/i915/i915_params.c b/drivers/gpu/drm/i915/i915_params.c
|
||||
index db07153b693f..c049fe3fbdff 100644
|
||||
index 44f2262a5553..09566acd995d 100644
|
||||
--- a/drivers/gpu/drm/i915/i915_params.c
|
||||
+++ b/drivers/gpu/drm/i915/i915_params.c
|
||||
@@ -51,7 +51,7 @@ struct i915_params i915 __read_mostly = {
|
||||
|
@ -23,9 +23,6 @@ index db07153b693f..c049fe3fbdff 100644
|
|||
.mmio_debug = 0,
|
||||
- .verbose_state_checks = 1,
|
||||
+ .verbose_state_checks = 0,
|
||||
.nuclear_pageflip = 0,
|
||||
};
|
||||
|
||||
module_param_named(modeset, i915.modeset, int, 0400);
|
||||
--
|
||||
2.1.0
|
||||
|
||||
|
|
|
@ -14,18 +14,15 @@ Upstream-status: http://lists.freedesktop.org/archives/intel-gfx/2013-November/0
|
|||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
|
||||
index 2e2f6443fd53..2a0813e5ace9 100644
|
||||
index f75173c20f47..1003782a38c4 100644
|
||||
--- a/drivers/gpu/drm/i915/intel_display.c
|
||||
+++ b/drivers/gpu/drm/i915/intel_display.c
|
||||
@@ -10869,7 +10869,7 @@ check_crtc_state(struct drm_device *dev)
|
||||
@@ -10917,7 +10917,7 @@ check_crtc_state(struct drm_device *dev)
|
||||
|
||||
if (active &&
|
||||
!intel_pipe_config_compare(dev, &crtc->config, &pipe_config)) {
|
||||
!intel_pipe_config_compare(dev, crtc->config, &pipe_config)) {
|
||||
- I915_STATE_WARN(1, "pipe state doesn't match!\n");
|
||||
+ DRM_DEBUG_KMS("pipe state doesn't match!\n");
|
||||
intel_dump_pipe_config(crtc, &pipe_config,
|
||||
"[hw state]");
|
||||
intel_dump_pipe_config(crtc, &crtc->config,
|
||||
--
|
||||
2.1.0
|
||||
|
||||
intel_dump_pipe_config(crtc, crtc->config,
|
||||
|
|
|
@ -1,561 +0,0 @@
|
|||
From: Rob Clark <robdclark@gmail.com>
|
||||
Date: Mon, 15 Dec 2014 13:56:32 -0500
|
||||
Subject: [PATCH] drm/i915: tame the chattermouth (v2)
|
||||
|
||||
Many distro's have mechanism in place to collect and automatically file
|
||||
bugs for failed WARN()s. And since i915 has a lot of hw state sanity
|
||||
checks which result in WARN(), it generates quite a lot of noise which
|
||||
is somewhat disconcerting to the end user.
|
||||
|
||||
Separate out the internal hw-is-in-the-state-I-expected checks into
|
||||
I915_STATE_WARN()s and allow configuration via i915.verbose_checks module
|
||||
param about whether this will generate a full blown stacktrace or just
|
||||
DRM_ERROR(). The new moduleparam defaults to true, so by default there
|
||||
is no change in behavior. And even when disabled, you will still get
|
||||
an error message logged.
|
||||
|
||||
v2: paint the macro names blue, clarify that the default behavior
|
||||
remains the same as before
|
||||
|
||||
Signed-off-by: Rob Clark <robdclark@gmail.com>
|
||||
Acked-by: Jani Nikula <jani.nikula@intel.com>
|
||||
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
|
||||
---
|
||||
drivers/gpu/drm/i915/i915_drv.h | 30 ++++++++
|
||||
drivers/gpu/drm/i915/i915_params.c | 5 ++
|
||||
drivers/gpu/drm/i915/intel_display.c | 134 +++++++++++++++++------------------
|
||||
drivers/gpu/drm/i915/intel_dp.c | 4 +-
|
||||
4 files changed, 104 insertions(+), 69 deletions(-)
|
||||
|
||||
diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
|
||||
index ddd005ce3a94..204dd676ebac 100644
|
||||
--- a/drivers/gpu/drm/i915/i915_drv.h
|
||||
+++ b/drivers/gpu/drm/i915/i915_drv.h
|
||||
@@ -60,6 +60,35 @@
|
||||
#undef WARN_ON
|
||||
#define WARN_ON(x) WARN(x, "WARN_ON(" #x ")")
|
||||
|
||||
+/* Use I915_STATE_WARN(x) and I915_STATE_WARN_ON() (rather than WARN() and
|
||||
+ * WARN_ON()) for hw state sanity checks to check for unexpected conditions
|
||||
+ * which may not necessarily be a user visible problem. This will either
|
||||
+ * WARN() or DRM_ERROR() depending on the verbose_checks moduleparam, to
|
||||
+ * enable distros and users to tailor their preferred amount of i915 abrt
|
||||
+ * spam.
|
||||
+ */
|
||||
+#define I915_STATE_WARN(condition, format...) ({ \
|
||||
+ int __ret_warn_on = !!(condition); \
|
||||
+ if (unlikely(__ret_warn_on)) { \
|
||||
+ if (i915.verbose_state_checks) \
|
||||
+ __WARN_printf(format); \
|
||||
+ else \
|
||||
+ DRM_ERROR(format); \
|
||||
+ } \
|
||||
+ unlikely(__ret_warn_on); \
|
||||
+})
|
||||
+
|
||||
+#define I915_STATE_WARN_ON(condition) ({ \
|
||||
+ int __ret_warn_on = !!(condition); \
|
||||
+ if (unlikely(__ret_warn_on)) { \
|
||||
+ if (i915.verbose_state_checks) \
|
||||
+ __WARN_printf("WARN_ON(" #condition ")\n"); \
|
||||
+ else \
|
||||
+ DRM_ERROR("WARN_ON(" #condition ")\n"); \
|
||||
+ } \
|
||||
+ unlikely(__ret_warn_on); \
|
||||
+})
|
||||
+
|
||||
enum pipe {
|
||||
INVALID_PIPE = -1,
|
||||
PIPE_A = 0,
|
||||
@@ -2315,6 +2344,7 @@ struct i915_params {
|
||||
bool disable_vtd_wa;
|
||||
int use_mmio_flip;
|
||||
bool mmio_debug;
|
||||
+ bool verbose_state_checks;
|
||||
};
|
||||
extern struct i915_params i915 __read_mostly;
|
||||
|
||||
diff --git a/drivers/gpu/drm/i915/i915_params.c b/drivers/gpu/drm/i915/i915_params.c
|
||||
index c91cb2033cc5..db07153b693f 100644
|
||||
--- a/drivers/gpu/drm/i915/i915_params.c
|
||||
+++ b/drivers/gpu/drm/i915/i915_params.c
|
||||
@@ -51,6 +51,7 @@ struct i915_params i915 __read_mostly = {
|
||||
.disable_vtd_wa = 0,
|
||||
.use_mmio_flip = 0,
|
||||
.mmio_debug = 0,
|
||||
+ .verbose_state_checks = 1,
|
||||
};
|
||||
|
||||
module_param_named(modeset, i915.modeset, int, 0400);
|
||||
@@ -173,3 +174,7 @@ module_param_named(mmio_debug, i915.mmio_debug, bool, 0600);
|
||||
MODULE_PARM_DESC(mmio_debug,
|
||||
"Enable the MMIO debug code (default: false). This may negatively "
|
||||
"affect performance.");
|
||||
+
|
||||
+module_param_named(verbose_state_checks, i915.verbose_state_checks, bool, 0600);
|
||||
+MODULE_PARM_DESC(verbose_state_checks,
|
||||
+ "Enable verbose logs (ie. WARN_ON()) in case of unexpected hw state conditions.");
|
||||
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
|
||||
index c10b52ef116d..2e2f6443fd53 100644
|
||||
--- a/drivers/gpu/drm/i915/intel_display.c
|
||||
+++ b/drivers/gpu/drm/i915/intel_display.c
|
||||
@@ -1024,7 +1024,7 @@ void assert_pll(struct drm_i915_private *dev_priv,
|
||||
reg = DPLL(pipe);
|
||||
val = I915_READ(reg);
|
||||
cur_state = !!(val & DPLL_VCO_ENABLE);
|
||||
- WARN(cur_state != state,
|
||||
+ I915_STATE_WARN(cur_state != state,
|
||||
"PLL state assertion failure (expected %s, current %s)\n",
|
||||
state_string(state), state_string(cur_state));
|
||||
}
|
||||
@@ -1040,7 +1040,7 @@ static void assert_dsi_pll(struct drm_i915_private *dev_priv, bool state)
|
||||
mutex_unlock(&dev_priv->dpio_lock);
|
||||
|
||||
cur_state = val & DSI_PLL_VCO_EN;
|
||||
- WARN(cur_state != state,
|
||||
+ I915_STATE_WARN(cur_state != state,
|
||||
"DSI PLL state assertion failure (expected %s, current %s)\n",
|
||||
state_string(state), state_string(cur_state));
|
||||
}
|
||||
@@ -1071,7 +1071,7 @@ void assert_shared_dpll(struct drm_i915_private *dev_priv,
|
||||
return;
|
||||
|
||||
cur_state = pll->get_hw_state(dev_priv, pll, &hw_state);
|
||||
- WARN(cur_state != state,
|
||||
+ I915_STATE_WARN(cur_state != state,
|
||||
"%s assertion failure (expected %s, current %s)\n",
|
||||
pll->name, state_string(state), state_string(cur_state));
|
||||
}
|
||||
@@ -1095,7 +1095,7 @@ static void assert_fdi_tx(struct drm_i915_private *dev_priv,
|
||||
val = I915_READ(reg);
|
||||
cur_state = !!(val & FDI_TX_ENABLE);
|
||||
}
|
||||
- WARN(cur_state != state,
|
||||
+ I915_STATE_WARN(cur_state != state,
|
||||
"FDI TX state assertion failure (expected %s, current %s)\n",
|
||||
state_string(state), state_string(cur_state));
|
||||
}
|
||||
@@ -1112,7 +1112,7 @@ static void assert_fdi_rx(struct drm_i915_private *dev_priv,
|
||||
reg = FDI_RX_CTL(pipe);
|
||||
val = I915_READ(reg);
|
||||
cur_state = !!(val & FDI_RX_ENABLE);
|
||||
- WARN(cur_state != state,
|
||||
+ I915_STATE_WARN(cur_state != state,
|
||||
"FDI RX state assertion failure (expected %s, current %s)\n",
|
||||
state_string(state), state_string(cur_state));
|
||||
}
|
||||
@@ -1135,7 +1135,7 @@ static void assert_fdi_tx_pll_enabled(struct drm_i915_private *dev_priv,
|
||||
|
||||
reg = FDI_TX_CTL(pipe);
|
||||
val = I915_READ(reg);
|
||||
- WARN(!(val & FDI_TX_PLL_ENABLE), "FDI TX PLL assertion failure, should be active but is disabled\n");
|
||||
+ I915_STATE_WARN(!(val & FDI_TX_PLL_ENABLE), "FDI TX PLL assertion failure, should be active but is disabled\n");
|
||||
}
|
||||
|
||||
void assert_fdi_rx_pll(struct drm_i915_private *dev_priv,
|
||||
@@ -1148,7 +1148,7 @@ void assert_fdi_rx_pll(struct drm_i915_private *dev_priv,
|
||||
reg = FDI_RX_CTL(pipe);
|
||||
val = I915_READ(reg);
|
||||
cur_state = !!(val & FDI_RX_PLL_ENABLE);
|
||||
- WARN(cur_state != state,
|
||||
+ I915_STATE_WARN(cur_state != state,
|
||||
"FDI RX PLL assertion failure (expected %s, current %s)\n",
|
||||
state_string(state), state_string(cur_state));
|
||||
}
|
||||
@@ -1190,7 +1190,7 @@ void assert_panel_unlocked(struct drm_i915_private *dev_priv,
|
||||
((val & PANEL_UNLOCK_MASK) == PANEL_UNLOCK_REGS))
|
||||
locked = false;
|
||||
|
||||
- WARN(panel_pipe == pipe && locked,
|
||||
+ I915_STATE_WARN(panel_pipe == pipe && locked,
|
||||
"panel assertion failure, pipe %c regs locked\n",
|
||||
pipe_name(pipe));
|
||||
}
|
||||
@@ -1206,7 +1206,7 @@ static void assert_cursor(struct drm_i915_private *dev_priv,
|
||||
else
|
||||
cur_state = I915_READ(CURCNTR(pipe)) & CURSOR_MODE;
|
||||
|
||||
- WARN(cur_state != state,
|
||||
+ I915_STATE_WARN(cur_state != state,
|
||||
"cursor on pipe %c assertion failure (expected %s, current %s)\n",
|
||||
pipe_name(pipe), state_string(state), state_string(cur_state));
|
||||
}
|
||||
@@ -1236,7 +1236,7 @@ void assert_pipe(struct drm_i915_private *dev_priv,
|
||||
cur_state = !!(val & PIPECONF_ENABLE);
|
||||
}
|
||||
|
||||
- WARN(cur_state != state,
|
||||
+ I915_STATE_WARN(cur_state != state,
|
||||
"pipe %c assertion failure (expected %s, current %s)\n",
|
||||
pipe_name(pipe), state_string(state), state_string(cur_state));
|
||||
}
|
||||
@@ -1251,7 +1251,7 @@ static void assert_plane(struct drm_i915_private *dev_priv,
|
||||
reg = DSPCNTR(plane);
|
||||
val = I915_READ(reg);
|
||||
cur_state = !!(val & DISPLAY_PLANE_ENABLE);
|
||||
- WARN(cur_state != state,
|
||||
+ I915_STATE_WARN(cur_state != state,
|
||||
"plane %c assertion failure (expected %s, current %s)\n",
|
||||
plane_name(plane), state_string(state), state_string(cur_state));
|
||||
}
|
||||
@@ -1271,7 +1271,7 @@ static void assert_planes_disabled(struct drm_i915_private *dev_priv,
|
||||
if (INTEL_INFO(dev)->gen >= 4) {
|
||||
reg = DSPCNTR(pipe);
|
||||
val = I915_READ(reg);
|
||||
- WARN(val & DISPLAY_PLANE_ENABLE,
|
||||
+ I915_STATE_WARN(val & DISPLAY_PLANE_ENABLE,
|
||||
"plane %c assertion failure, should be disabled but not\n",
|
||||
plane_name(pipe));
|
||||
return;
|
||||
@@ -1283,7 +1283,7 @@ static void assert_planes_disabled(struct drm_i915_private *dev_priv,
|
||||
val = I915_READ(reg);
|
||||
cur_pipe = (val & DISPPLANE_SEL_PIPE_MASK) >>
|
||||
DISPPLANE_SEL_PIPE_SHIFT;
|
||||
- WARN((val & DISPLAY_PLANE_ENABLE) && pipe == cur_pipe,
|
||||
+ I915_STATE_WARN((val & DISPLAY_PLANE_ENABLE) && pipe == cur_pipe,
|
||||
"plane %c assertion failure, should be off on pipe %c but is still active\n",
|
||||
plane_name(i), pipe_name(pipe));
|
||||
}
|
||||
@@ -1299,7 +1299,7 @@ static void assert_sprites_disabled(struct drm_i915_private *dev_priv,
|
||||
if (INTEL_INFO(dev)->gen >= 9) {
|
||||
for_each_sprite(pipe, sprite) {
|
||||
val = I915_READ(PLANE_CTL(pipe, sprite));
|
||||
- WARN(val & PLANE_CTL_ENABLE,
|
||||
+ I915_STATE_WARN(val & PLANE_CTL_ENABLE,
|
||||
"plane %d assertion failure, should be off on pipe %c but is still active\n",
|
||||
sprite, pipe_name(pipe));
|
||||
}
|
||||
@@ -1307,20 +1307,20 @@ static void assert_sprites_disabled(struct drm_i915_private *dev_priv,
|
||||
for_each_sprite(pipe, sprite) {
|
||||
reg = SPCNTR(pipe, sprite);
|
||||
val = I915_READ(reg);
|
||||
- WARN(val & SP_ENABLE,
|
||||
+ I915_STATE_WARN(val & SP_ENABLE,
|
||||
"sprite %c assertion failure, should be off on pipe %c but is still active\n",
|
||||
sprite_name(pipe, sprite), pipe_name(pipe));
|
||||
}
|
||||
} else if (INTEL_INFO(dev)->gen >= 7) {
|
||||
reg = SPRCTL(pipe);
|
||||
val = I915_READ(reg);
|
||||
- WARN(val & SPRITE_ENABLE,
|
||||
+ I915_STATE_WARN(val & SPRITE_ENABLE,
|
||||
"sprite %c assertion failure, should be off on pipe %c but is still active\n",
|
||||
plane_name(pipe), pipe_name(pipe));
|
||||
} else if (INTEL_INFO(dev)->gen >= 5) {
|
||||
reg = DVSCNTR(pipe);
|
||||
val = I915_READ(reg);
|
||||
- WARN(val & DVS_ENABLE,
|
||||
+ I915_STATE_WARN(val & DVS_ENABLE,
|
||||
"sprite %c assertion failure, should be off on pipe %c but is still active\n",
|
||||
plane_name(pipe), pipe_name(pipe));
|
||||
}
|
||||
@@ -1328,7 +1328,7 @@ static void assert_sprites_disabled(struct drm_i915_private *dev_priv,
|
||||
|
||||
static void assert_vblank_disabled(struct drm_crtc *crtc)
|
||||
{
|
||||
- if (WARN_ON(drm_crtc_vblank_get(crtc) == 0))
|
||||
+ if (I915_STATE_WARN_ON(drm_crtc_vblank_get(crtc) == 0))
|
||||
drm_crtc_vblank_put(crtc);
|
||||
}
|
||||
|
||||
@@ -1337,12 +1337,12 @@ static void ibx_assert_pch_refclk_enabled(struct drm_i915_private *dev_priv)
|
||||
u32 val;
|
||||
bool enabled;
|
||||
|
||||
- WARN_ON(!(HAS_PCH_IBX(dev_priv->dev) || HAS_PCH_CPT(dev_priv->dev)));
|
||||
+ I915_STATE_WARN_ON(!(HAS_PCH_IBX(dev_priv->dev) || HAS_PCH_CPT(dev_priv->dev)));
|
||||
|
||||
val = I915_READ(PCH_DREF_CONTROL);
|
||||
enabled = !!(val & (DREF_SSC_SOURCE_MASK | DREF_NONSPREAD_SOURCE_MASK |
|
||||
DREF_SUPERSPREAD_SOURCE_MASK));
|
||||
- WARN(!enabled, "PCH refclk assertion failure, should be active but is disabled\n");
|
||||
+ I915_STATE_WARN(!enabled, "PCH refclk assertion failure, should be active but is disabled\n");
|
||||
}
|
||||
|
||||
static void assert_pch_transcoder_disabled(struct drm_i915_private *dev_priv,
|
||||
@@ -1355,7 +1355,7 @@ static void assert_pch_transcoder_disabled(struct drm_i915_private *dev_priv,
|
||||
reg = PCH_TRANSCONF(pipe);
|
||||
val = I915_READ(reg);
|
||||
enabled = !!(val & TRANS_ENABLE);
|
||||
- WARN(enabled,
|
||||
+ I915_STATE_WARN(enabled,
|
||||
"transcoder assertion failed, should be off on pipe %c but is still active\n",
|
||||
pipe_name(pipe));
|
||||
}
|
||||
@@ -1435,11 +1435,11 @@ static void assert_pch_dp_disabled(struct drm_i915_private *dev_priv,
|
||||
enum pipe pipe, int reg, u32 port_sel)
|
||||
{
|
||||
u32 val = I915_READ(reg);
|
||||
- WARN(dp_pipe_enabled(dev_priv, pipe, port_sel, val),
|
||||
+ I915_STATE_WARN(dp_pipe_enabled(dev_priv, pipe, port_sel, val),
|
||||
"PCH DP (0x%08x) enabled on transcoder %c, should be disabled\n",
|
||||
reg, pipe_name(pipe));
|
||||
|
||||
- WARN(HAS_PCH_IBX(dev_priv->dev) && (val & DP_PORT_EN) == 0
|
||||
+ I915_STATE_WARN(HAS_PCH_IBX(dev_priv->dev) && (val & DP_PORT_EN) == 0
|
||||
&& (val & DP_PIPEB_SELECT),
|
||||
"IBX PCH dp port still using transcoder B\n");
|
||||
}
|
||||
@@ -1448,11 +1448,11 @@ static void assert_pch_hdmi_disabled(struct drm_i915_private *dev_priv,
|
||||
enum pipe pipe, int reg)
|
||||
{
|
||||
u32 val = I915_READ(reg);
|
||||
- WARN(hdmi_pipe_enabled(dev_priv, pipe, val),
|
||||
+ I915_STATE_WARN(hdmi_pipe_enabled(dev_priv, pipe, val),
|
||||
"PCH HDMI (0x%08x) enabled on transcoder %c, should be disabled\n",
|
||||
reg, pipe_name(pipe));
|
||||
|
||||
- WARN(HAS_PCH_IBX(dev_priv->dev) && (val & SDVO_ENABLE) == 0
|
||||
+ I915_STATE_WARN(HAS_PCH_IBX(dev_priv->dev) && (val & SDVO_ENABLE) == 0
|
||||
&& (val & SDVO_PIPE_B_SELECT),
|
||||
"IBX PCH hdmi port still using transcoder B\n");
|
||||
}
|
||||
@@ -1469,13 +1469,13 @@ static void assert_pch_ports_disabled(struct drm_i915_private *dev_priv,
|
||||
|
||||
reg = PCH_ADPA;
|
||||
val = I915_READ(reg);
|
||||
- WARN(adpa_pipe_enabled(dev_priv, pipe, val),
|
||||
+ I915_STATE_WARN(adpa_pipe_enabled(dev_priv, pipe, val),
|
||||
"PCH VGA enabled on transcoder %c, should be disabled\n",
|
||||
pipe_name(pipe));
|
||||
|
||||
reg = PCH_LVDS;
|
||||
val = I915_READ(reg);
|
||||
- WARN(lvds_pipe_enabled(dev_priv, pipe, val),
|
||||
+ I915_STATE_WARN(lvds_pipe_enabled(dev_priv, pipe, val),
|
||||
"PCH LVDS enabled on transcoder %c, should be disabled\n",
|
||||
pipe_name(pipe));
|
||||
|
||||
@@ -5382,25 +5382,25 @@ static void intel_connector_check_state(struct intel_connector *connector)
|
||||
if (connector->mst_port)
|
||||
return;
|
||||
|
||||
- WARN(connector->base.dpms == DRM_MODE_DPMS_OFF,
|
||||
+ I915_STATE_WARN(connector->base.dpms == DRM_MODE_DPMS_OFF,
|
||||
"wrong connector dpms state\n");
|
||||
- WARN(connector->base.encoder != &encoder->base,
|
||||
+ I915_STATE_WARN(connector->base.encoder != &encoder->base,
|
||||
"active connector not linked to encoder\n");
|
||||
|
||||
if (encoder) {
|
||||
- WARN(!encoder->connectors_active,
|
||||
+ I915_STATE_WARN(!encoder->connectors_active,
|
||||
"encoder->connectors_active not set\n");
|
||||
|
||||
encoder_enabled = encoder->get_hw_state(encoder, &pipe);
|
||||
- WARN(!encoder_enabled, "encoder not enabled\n");
|
||||
- if (WARN_ON(!encoder->base.crtc))
|
||||
+ I915_STATE_WARN(!encoder_enabled, "encoder not enabled\n");
|
||||
+ if (I915_STATE_WARN_ON(!encoder->base.crtc))
|
||||
return;
|
||||
|
||||
crtc = encoder->base.crtc;
|
||||
|
||||
- WARN(!crtc->enabled, "crtc not enabled\n");
|
||||
- WARN(!to_intel_crtc(crtc)->active, "crtc not active\n");
|
||||
- WARN(pipe != to_intel_crtc(crtc)->pipe,
|
||||
+ I915_STATE_WARN(!crtc->enabled, "crtc not enabled\n");
|
||||
+ I915_STATE_WARN(!to_intel_crtc(crtc)->active, "crtc not active\n");
|
||||
+ I915_STATE_WARN(pipe != to_intel_crtc(crtc)->pipe,
|
||||
"encoder active on the wrong pipe\n");
|
||||
}
|
||||
}
|
||||
@@ -7810,24 +7810,24 @@ static void assert_can_disable_lcpll(struct drm_i915_private *dev_priv)
|
||||
struct intel_crtc *crtc;
|
||||
|
||||
for_each_intel_crtc(dev, crtc)
|
||||
- WARN(crtc->active, "CRTC for pipe %c enabled\n",
|
||||
+ I915_STATE_WARN(crtc->active, "CRTC for pipe %c enabled\n",
|
||||
pipe_name(crtc->pipe));
|
||||
|
||||
- WARN(I915_READ(HSW_PWR_WELL_DRIVER), "Power well on\n");
|
||||
- WARN(I915_READ(SPLL_CTL) & SPLL_PLL_ENABLE, "SPLL enabled\n");
|
||||
- WARN(I915_READ(WRPLL_CTL1) & WRPLL_PLL_ENABLE, "WRPLL1 enabled\n");
|
||||
- WARN(I915_READ(WRPLL_CTL2) & WRPLL_PLL_ENABLE, "WRPLL2 enabled\n");
|
||||
- WARN(I915_READ(PCH_PP_STATUS) & PP_ON, "Panel power on\n");
|
||||
- WARN(I915_READ(BLC_PWM_CPU_CTL2) & BLM_PWM_ENABLE,
|
||||
+ I915_STATE_WARN(I915_READ(HSW_PWR_WELL_DRIVER), "Power well on\n");
|
||||
+ I915_STATE_WARN(I915_READ(SPLL_CTL) & SPLL_PLL_ENABLE, "SPLL enabled\n");
|
||||
+ I915_STATE_WARN(I915_READ(WRPLL_CTL1) & WRPLL_PLL_ENABLE, "WRPLL1 enabled\n");
|
||||
+ I915_STATE_WARN(I915_READ(WRPLL_CTL2) & WRPLL_PLL_ENABLE, "WRPLL2 enabled\n");
|
||||
+ I915_STATE_WARN(I915_READ(PCH_PP_STATUS) & PP_ON, "Panel power on\n");
|
||||
+ I915_STATE_WARN(I915_READ(BLC_PWM_CPU_CTL2) & BLM_PWM_ENABLE,
|
||||
"CPU PWM1 enabled\n");
|
||||
if (IS_HASWELL(dev))
|
||||
- WARN(I915_READ(HSW_BLC_PWM2_CTL) & BLM_PWM_ENABLE,
|
||||
+ I915_STATE_WARN(I915_READ(HSW_BLC_PWM2_CTL) & BLM_PWM_ENABLE,
|
||||
"CPU PWM2 enabled\n");
|
||||
- WARN(I915_READ(BLC_PWM_PCH_CTL1) & BLM_PCH_PWM_ENABLE,
|
||||
+ I915_STATE_WARN(I915_READ(BLC_PWM_PCH_CTL1) & BLM_PCH_PWM_ENABLE,
|
||||
"PCH PWM1 enabled\n");
|
||||
- WARN(I915_READ(UTIL_PIN_CTL) & UTIL_PIN_ENABLE,
|
||||
+ I915_STATE_WARN(I915_READ(UTIL_PIN_CTL) & UTIL_PIN_ENABLE,
|
||||
"Utility pin enabled\n");
|
||||
- WARN(I915_READ(PCH_GTC_CTL) & PCH_GTC_ENABLE, "PCH GTC enabled\n");
|
||||
+ I915_STATE_WARN(I915_READ(PCH_GTC_CTL) & PCH_GTC_ENABLE, "PCH GTC enabled\n");
|
||||
|
||||
/*
|
||||
* In theory we can still leave IRQs enabled, as long as only the HPD
|
||||
@@ -7835,7 +7835,7 @@ static void assert_can_disable_lcpll(struct drm_i915_private *dev_priv)
|
||||
* gen-specific and since we only disable LCPLL after we fully disable
|
||||
* the interrupts, the check below should be enough.
|
||||
*/
|
||||
- WARN(intel_irqs_enabled(dev_priv), "IRQs enabled\n");
|
||||
+ I915_STATE_WARN(intel_irqs_enabled(dev_priv), "IRQs enabled\n");
|
||||
}
|
||||
|
||||
static uint32_t hsw_read_dcomp(struct drm_i915_private *dev_priv)
|
||||
@@ -10742,7 +10742,7 @@ check_connector_state(struct drm_device *dev)
|
||||
* ->get_hw_state callbacks. */
|
||||
intel_connector_check_state(connector);
|
||||
|
||||
- WARN(&connector->new_encoder->base != connector->base.encoder,
|
||||
+ I915_STATE_WARN(&connector->new_encoder->base != connector->base.encoder,
|
||||
"connector's staged encoder doesn't match current encoder\n");
|
||||
}
|
||||
}
|
||||
@@ -10762,9 +10762,9 @@ check_encoder_state(struct drm_device *dev)
|
||||
encoder->base.base.id,
|
||||
encoder->base.name);
|
||||
|
||||
- WARN(&encoder->new_crtc->base != encoder->base.crtc,
|
||||
+ I915_STATE_WARN(&encoder->new_crtc->base != encoder->base.crtc,
|
||||
"encoder's stage crtc doesn't match current crtc\n");
|
||||
- WARN(encoder->connectors_active && !encoder->base.crtc,
|
||||
+ I915_STATE_WARN(encoder->connectors_active && !encoder->base.crtc,
|
||||
"encoder's active_connectors set, but no crtc\n");
|
||||
|
||||
list_for_each_entry(connector, &dev->mode_config.connector_list,
|
||||
@@ -10783,19 +10783,19 @@ check_encoder_state(struct drm_device *dev)
|
||||
if (!enabled && encoder->base.encoder_type == DRM_MODE_ENCODER_DPMST)
|
||||
continue;
|
||||
|
||||
- WARN(!!encoder->base.crtc != enabled,
|
||||
+ I915_STATE_WARN(!!encoder->base.crtc != enabled,
|
||||
"encoder's enabled state mismatch "
|
||||
"(expected %i, found %i)\n",
|
||||
!!encoder->base.crtc, enabled);
|
||||
- WARN(active && !encoder->base.crtc,
|
||||
+ I915_STATE_WARN(active && !encoder->base.crtc,
|
||||
"active encoder with no crtc\n");
|
||||
|
||||
- WARN(encoder->connectors_active != active,
|
||||
+ I915_STATE_WARN(encoder->connectors_active != active,
|
||||
"encoder's computed active state doesn't match tracked active state "
|
||||
"(expected %i, found %i)\n", active, encoder->connectors_active);
|
||||
|
||||
active = encoder->get_hw_state(encoder, &pipe);
|
||||
- WARN(active != encoder->connectors_active,
|
||||
+ I915_STATE_WARN(active != encoder->connectors_active,
|
||||
"encoder's hw state doesn't match sw tracking "
|
||||
"(expected %i, found %i)\n",
|
||||
encoder->connectors_active, active);
|
||||
@@ -10804,7 +10804,7 @@ check_encoder_state(struct drm_device *dev)
|
||||
continue;
|
||||
|
||||
tracked_pipe = to_intel_crtc(encoder->base.crtc)->pipe;
|
||||
- WARN(active && pipe != tracked_pipe,
|
||||
+ I915_STATE_WARN(active && pipe != tracked_pipe,
|
||||
"active encoder's pipe doesn't match"
|
||||
"(expected %i, found %i)\n",
|
||||
tracked_pipe, pipe);
|
||||
@@ -10829,7 +10829,7 @@ check_crtc_state(struct drm_device *dev)
|
||||
DRM_DEBUG_KMS("[CRTC:%d]\n",
|
||||
crtc->base.base.id);
|
||||
|
||||
- WARN(crtc->active && !crtc->base.enabled,
|
||||
+ I915_STATE_WARN(crtc->active && !crtc->base.enabled,
|
||||
"active crtc, but not enabled in sw tracking\n");
|
||||
|
||||
for_each_intel_encoder(dev, encoder) {
|
||||
@@ -10840,10 +10840,10 @@ check_crtc_state(struct drm_device *dev)
|
||||
active = true;
|
||||
}
|
||||
|
||||
- WARN(active != crtc->active,
|
||||
+ I915_STATE_WARN(active != crtc->active,
|
||||
"crtc's computed active state doesn't match tracked active state "
|
||||
"(expected %i, found %i)\n", active, crtc->active);
|
||||
- WARN(enabled != crtc->base.enabled,
|
||||
+ I915_STATE_WARN(enabled != crtc->base.enabled,
|
||||
"crtc's computed enabled state doesn't match tracked enabled state "
|
||||
"(expected %i, found %i)\n", enabled, crtc->base.enabled);
|
||||
|
||||
@@ -10863,13 +10863,13 @@ check_crtc_state(struct drm_device *dev)
|
||||
encoder->get_config(encoder, &pipe_config);
|
||||
}
|
||||
|
||||
- WARN(crtc->active != active,
|
||||
+ I915_STATE_WARN(crtc->active != active,
|
||||
"crtc active state doesn't match with hw state "
|
||||
"(expected %i, found %i)\n", crtc->active, active);
|
||||
|
||||
if (active &&
|
||||
!intel_pipe_config_compare(dev, &crtc->config, &pipe_config)) {
|
||||
- WARN(1, "pipe state doesn't match!\n");
|
||||
+ I915_STATE_WARN(1, "pipe state doesn't match!\n");
|
||||
intel_dump_pipe_config(crtc, &pipe_config,
|
||||
"[hw state]");
|
||||
intel_dump_pipe_config(crtc, &crtc->config,
|
||||
@@ -10897,14 +10897,14 @@ check_shared_dpll_state(struct drm_device *dev)
|
||||
|
||||
active = pll->get_hw_state(dev_priv, pll, &dpll_hw_state);
|
||||
|
||||
- WARN(pll->active > hweight32(pll->config.crtc_mask),
|
||||
+ I915_STATE_WARN(pll->active > hweight32(pll->config.crtc_mask),
|
||||
"more active pll users than references: %i vs %i\n",
|
||||
pll->active, hweight32(pll->config.crtc_mask));
|
||||
- WARN(pll->active && !pll->on,
|
||||
+ I915_STATE_WARN(pll->active && !pll->on,
|
||||
"pll in active use but not on in sw tracking\n");
|
||||
- WARN(pll->on && !pll->active,
|
||||
+ I915_STATE_WARN(pll->on && !pll->active,
|
||||
"pll in on but not on in use in sw tracking\n");
|
||||
- WARN(pll->on != active,
|
||||
+ I915_STATE_WARN(pll->on != active,
|
||||
"pll on state mismatch (expected %i, found %i)\n",
|
||||
pll->on, active);
|
||||
|
||||
@@ -10914,14 +10914,14 @@ check_shared_dpll_state(struct drm_device *dev)
|
||||
if (crtc->active && intel_crtc_to_shared_dpll(crtc) == pll)
|
||||
active_crtcs++;
|
||||
}
|
||||
- WARN(pll->active != active_crtcs,
|
||||
+ I915_STATE_WARN(pll->active != active_crtcs,
|
||||
"pll active crtcs mismatch (expected %i, found %i)\n",
|
||||
pll->active, active_crtcs);
|
||||
- WARN(hweight32(pll->config.crtc_mask) != enabled_crtcs,
|
||||
+ I915_STATE_WARN(hweight32(pll->config.crtc_mask) != enabled_crtcs,
|
||||
"pll enabled crtcs mismatch (expected %i, found %i)\n",
|
||||
hweight32(pll->config.crtc_mask), enabled_crtcs);
|
||||
|
||||
- WARN(pll->on && memcmp(&pll->config.hw_state, &dpll_hw_state,
|
||||
+ I915_STATE_WARN(pll->on && memcmp(&pll->config.hw_state, &dpll_hw_state,
|
||||
sizeof(dpll_hw_state)),
|
||||
"pll hw state mismatch\n");
|
||||
}
|
||||
diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
|
||||
index 9f6c8971855c..67adf6437f78 100644
|
||||
--- a/drivers/gpu/drm/i915/intel_dp.c
|
||||
+++ b/drivers/gpu/drm/i915/intel_dp.c
|
||||
@@ -1558,7 +1558,7 @@ void intel_edp_panel_vdd_on(struct intel_dp *intel_dp)
|
||||
vdd = edp_panel_vdd_on(intel_dp);
|
||||
pps_unlock(intel_dp);
|
||||
|
||||
- WARN(!vdd, "eDP port %c VDD already requested on\n",
|
||||
+ I915_STATE_WARN(!vdd, "eDP port %c VDD already requested on\n",
|
||||
port_name(dp_to_dig_port(intel_dp)->port));
|
||||
}
|
||||
|
||||
@@ -1642,7 +1642,7 @@ static void edp_panel_vdd_off(struct intel_dp *intel_dp, bool sync)
|
||||
if (!is_edp(intel_dp))
|
||||
return;
|
||||
|
||||
- WARN(!intel_dp->want_panel_vdd, "eDP port %c VDD not forced on",
|
||||
+ I915_STATE_WARN(!intel_dp->want_panel_vdd, "eDP port %c VDD not forced on",
|
||||
port_name(dp_to_dig_port(intel_dp)->port));
|
||||
|
||||
intel_dp->want_panel_vdd = false;
|
||||
--
|
||||
2.1.0
|
||||
|
|
@ -0,0 +1,780 @@
|
|||
From: Peter Jones <pjones@redhat.com>
|
||||
Date: Tue, 18 Nov 2014 10:18:22 -0500
|
||||
Subject: [PATCH] efi: Add esrt support.
|
||||
|
||||
Add sysfs files for the EFI System Resource Table (ESRT) under
|
||||
/sys/firmware/efi/esrt and for each EFI System Resource Entry under
|
||||
entries/ as a subdir.
|
||||
|
||||
The EFI System Resource Table (ESRT) provides a read-only catalog of
|
||||
system components for which the system accepts firmware upgrades via
|
||||
UEFI's "Capsule Update" feature. This module allows userland utilities
|
||||
to evaluate what firmware updates can be applied to this system, and
|
||||
potentially arrange for those updates to occur.
|
||||
|
||||
The ESRT is described as part of the UEFI specification, in version 2.5
|
||||
which should be available from http://uefi.org/specifications in early
|
||||
2015. If you're a member of the UEFI Forum, information about its
|
||||
addition to the standard is available as UEFI Mantis 1090.
|
||||
|
||||
For some hardware platforms, additional restrictions may be found at
|
||||
http://msdn.microsoft.com/en-us/library/windows/hardware/jj128256.aspx ,
|
||||
and additional documentation may be found at
|
||||
http://download.microsoft.com/download/5/F/5/5F5D16CD-2530-4289-8019-94C6A20BED3C/windows-uefi-firmware-update-platform.docx
|
||||
.
|
||||
|
||||
Signed-off-by: Peter Jones <pjones@redhat.com>
|
||||
---
|
||||
Documentation/ABI/testing/sysfs-firmware-efi-esrt | 81 ++++
|
||||
arch/x86/platform/efi/efi.c | 2 +
|
||||
drivers/firmware/efi/Makefile | 2 +-
|
||||
drivers/firmware/efi/efi.c | 82 +++-
|
||||
drivers/firmware/efi/esrt.c | 464 ++++++++++++++++++++++
|
||||
include/linux/efi.h | 8 +
|
||||
6 files changed, 637 insertions(+), 2 deletions(-)
|
||||
create mode 100644 Documentation/ABI/testing/sysfs-firmware-efi-esrt
|
||||
create mode 100644 drivers/firmware/efi/esrt.c
|
||||
|
||||
diff --git a/Documentation/ABI/testing/sysfs-firmware-efi-esrt b/Documentation/ABI/testing/sysfs-firmware-efi-esrt
|
||||
new file mode 100644
|
||||
index 000000000000..6e431d1a4e79
|
||||
--- /dev/null
|
||||
+++ b/Documentation/ABI/testing/sysfs-firmware-efi-esrt
|
||||
@@ -0,0 +1,81 @@
|
||||
+What: /sys/firmware/efi/esrt/
|
||||
+Date: February 2015
|
||||
+Contact: Peter Jones <pjones@redhat.com>
|
||||
+Description: Provides userland access to read the EFI System Resource Table
|
||||
+ (ESRT), a catalog of firmware for which can be updated with
|
||||
+ the UEFI UpdateCapsule mechanism described in section 7.5 of
|
||||
+ the UEFI Standard.
|
||||
+Users: fwupdate - https://github.com/rhinstaller/fwupdate
|
||||
+
|
||||
+What: /sys/firmware/efi/esrt/fw_resource_count
|
||||
+Date: February 2015
|
||||
+Contact: Peter Jones <pjones@redhat.com>
|
||||
+Description: The number of entries in the ESRT
|
||||
+
|
||||
+What: /sys/firmware/efi/esrt/fw_resource_count_max
|
||||
+Date: February 2015
|
||||
+Contact: Peter Jones <pjones@redhat.com>
|
||||
+Description: The maximum number of entries that /could/ be registered
|
||||
+ in the allocation the table is currently in. This is
|
||||
+ really only useful to the system firmware itself.
|
||||
+
|
||||
+What: /sys/firmware/efi/esrt/fw_resource_version
|
||||
+Date: February 2015
|
||||
+Contact: Peter Jones <pjones@redhat.com>
|
||||
+Description: The version of the ESRT structure provided by the firmware.
|
||||
+
|
||||
+What: /sys/firmware/efi/esrt/entries/entry$N/
|
||||
+Date: February 2015
|
||||
+Contact: Peter Jones <pjones@redhat.com>
|
||||
+Description: Each ESRT entry is identified by a GUID, and each gets a
|
||||
+ subdirectory under entries/ .
|
||||
+ example: /sys/firmware/efi/esrt/entries/entry0/
|
||||
+
|
||||
+What: /sys/firmware/efi/esrt/entries/entry$N/fw_type
|
||||
+Date: February 2015
|
||||
+Contact: Peter Jones <pjones@redhat.com>
|
||||
+Description: What kind of firmware entry this is:
|
||||
+ 0 - Unknown
|
||||
+ 1 - System Firmware
|
||||
+ 2 - Device Firmware
|
||||
+ 3 - UEFI Driver
|
||||
+
|
||||
+What: /sys/firmware/efi/esrt/entries/entry$N/fw_class
|
||||
+Date: February 2015
|
||||
+Contact: Peter Jones <pjones@redhat.com>
|
||||
+Description: This is the entry's guid, and will match the directory name.
|
||||
+
|
||||
+What: /sys/firmware/efi/esrt/entries/entry$N/fw_version
|
||||
+Date: February 2015
|
||||
+Contact: Peter Jones <pjones@redhat.com>
|
||||
+Description: The version of the firmware currently installed. This is a
|
||||
+ 32-bit unsigned integer.
|
||||
+
|
||||
+What: /sys/firmware/efi/esrt/entries/entry$N/lowest_supported_fw_version
|
||||
+Date: February 2015
|
||||
+Contact: Peter Jones <pjones@redhat.com>
|
||||
+Description: The lowest version of the firmware that can be installed.
|
||||
+
|
||||
+What: /sys/firmware/efi/esrt/entries/entry$N/capsule_flags
|
||||
+Date: February 2015
|
||||
+Contact: Peter Jones <pjones@redhat.com>
|
||||
+Description: Flags that must be passed to UpdateCapsule()
|
||||
+
|
||||
+What: /sys/firmware/efi/esrt/entries/entry$N/last_attempt_version
|
||||
+Date: February 2015
|
||||
+Contact: Peter Jones <pjones@redhat.com>
|
||||
+Description: The last firmware version for which an update was attempted.
|
||||
+
|
||||
+What: /sys/firmware/efi/esrt/entries/entry$N/last_attempt_status
|
||||
+Date: February 2015
|
||||
+Contact: Peter Jones <pjones@redhat.com>
|
||||
+Description: The result of the last firmware update attempt for the
|
||||
+ firmware resource entry.
|
||||
+ 0 - Success
|
||||
+ 1 - Insufficient resources
|
||||
+ 2 - Incorrect version
|
||||
+ 3 - Invalid format
|
||||
+ 4 - Authentication error
|
||||
+ 5 - AC power event
|
||||
+ 6 - Battery power event
|
||||
+
|
||||
diff --git a/arch/x86/platform/efi/efi.c b/arch/x86/platform/efi/efi.c
|
||||
index dbc8627a5cdf..b4c9fbbc9270 100644
|
||||
--- a/arch/x86/platform/efi/efi.c
|
||||
+++ b/arch/x86/platform/efi/efi.c
|
||||
@@ -492,6 +492,8 @@ void __init efi_init(void)
|
||||
return;
|
||||
|
||||
print_efi_memmap();
|
||||
+
|
||||
+ efi_esrt_init();
|
||||
}
|
||||
|
||||
void __init efi_late_init(void)
|
||||
diff --git a/drivers/firmware/efi/Makefile b/drivers/firmware/efi/Makefile
|
||||
index d8be608a9f3b..26eabbc55341 100644
|
||||
--- a/drivers/firmware/efi/Makefile
|
||||
+++ b/drivers/firmware/efi/Makefile
|
||||
@@ -1,7 +1,7 @@
|
||||
#
|
||||
# Makefile for linux kernel
|
||||
#
|
||||
-obj-$(CONFIG_EFI) += efi.o vars.o reboot.o
|
||||
+obj-$(CONFIG_EFI) += efi.o esrt.o vars.o reboot.o
|
||||
obj-$(CONFIG_EFI_VARS) += efivars.o
|
||||
obj-$(CONFIG_EFI_VARS_PSTORE) += efi-pstore.o
|
||||
obj-$(CONFIG_UEFI_CPER) += cper.o
|
||||
diff --git a/drivers/firmware/efi/efi.c b/drivers/firmware/efi/efi.c
|
||||
index 3061bb8629dc..48b4c356740f 100644
|
||||
--- a/drivers/firmware/efi/efi.c
|
||||
+++ b/drivers/firmware/efi/efi.c
|
||||
@@ -39,6 +39,7 @@ struct efi __read_mostly efi = {
|
||||
.fw_vendor = EFI_INVALID_TABLE_ADDR,
|
||||
.runtime = EFI_INVALID_TABLE_ADDR,
|
||||
.config_table = EFI_INVALID_TABLE_ADDR,
|
||||
+ .esrt = EFI_INVALID_TABLE_ADDR,
|
||||
};
|
||||
EXPORT_SYMBOL(efi);
|
||||
|
||||
@@ -64,7 +65,7 @@ static int __init parse_efi_cmdline(char *str)
|
||||
}
|
||||
early_param("efi", parse_efi_cmdline);
|
||||
|
||||
-static struct kobject *efi_kobj;
|
||||
+struct kobject *efi_kobj;
|
||||
static struct kobject *efivars_kobj;
|
||||
|
||||
/*
|
||||
@@ -232,6 +233,84 @@ err_put:
|
||||
|
||||
subsys_initcall(efisubsys_init);
|
||||
|
||||
+/*
|
||||
+ * Find the efi memory descriptor for a given physical address. Given a
|
||||
+ * physicall address, determine if it exists within an EFI Memory Map entry,
|
||||
+ * and if so, populate the supplied memory descriptor with the appropriate
|
||||
+ * data.
|
||||
+ */
|
||||
+int __init efi_mem_desc_lookup(u64 phys_addr, efi_memory_desc_t *out_md)
|
||||
+{
|
||||
+ struct efi_memory_map *map = efi.memmap;
|
||||
+ void *p, *e;
|
||||
+
|
||||
+ if (!efi_enabled(EFI_MEMMAP)) {
|
||||
+ pr_err_once("EFI_MEMMAP is not enabled.\n");
|
||||
+ return -EINVAL;
|
||||
+ }
|
||||
+
|
||||
+ if (!map) {
|
||||
+ pr_err_once("efi.memmap is not set.\n");
|
||||
+ return -EINVAL;
|
||||
+ }
|
||||
+ if (!out_md) {
|
||||
+ pr_err_once("out_md is null.\n");
|
||||
+ return -EINVAL;
|
||||
+ }
|
||||
+ if (WARN_ON_ONCE(!map->phys_map))
|
||||
+ return -EINVAL;
|
||||
+ if (WARN_ON_ONCE(map->nr_map == 0) || WARN_ON_ONCE(map->desc_size == 0))
|
||||
+ return -EINVAL;
|
||||
+
|
||||
+ e = map->phys_map + map->nr_map * map->desc_size;
|
||||
+ for (p = map->phys_map; p < e; p += map->desc_size) {
|
||||
+ efi_memory_desc_t *md;
|
||||
+ u64 size;
|
||||
+ u64 end;
|
||||
+
|
||||
+ /*
|
||||
+ * If a driver calls this after efi_free_boot_services,
|
||||
+ * ->map will be NULL, and the target may also not be mapped.
|
||||
+ * So just always get our own virtual map on the CPU.
|
||||
+ *
|
||||
+ */
|
||||
+ md = early_memremap((phys_addr_t)p, sizeof (*md));
|
||||
+ if (!md) {
|
||||
+ pr_err_once("early_memremap(%p, %zu) failed.\n",
|
||||
+ p, sizeof (*md));
|
||||
+ return -ENOMEM;
|
||||
+ }
|
||||
+
|
||||
+ if (!(md->attribute & EFI_MEMORY_RUNTIME) &&
|
||||
+ md->type != EFI_BOOT_SERVICES_DATA &&
|
||||
+ md->type != EFI_RUNTIME_SERVICES_DATA) {
|
||||
+ early_memunmap(md, sizeof (*md));
|
||||
+ continue;
|
||||
+ }
|
||||
+
|
||||
+ size = md->num_pages << EFI_PAGE_SHIFT;
|
||||
+ end = md->phys_addr + size;
|
||||
+ if (phys_addr >= md->phys_addr && phys_addr < end) {
|
||||
+ memcpy(out_md, md, sizeof(*out_md));
|
||||
+ early_memunmap(md, sizeof (*md));
|
||||
+ return 0;
|
||||
+ }
|
||||
+
|
||||
+ early_memunmap(md, sizeof (*md));
|
||||
+ }
|
||||
+ pr_err_once("requested map not found.\n");
|
||||
+ return -ENOENT;
|
||||
+}
|
||||
+
|
||||
+/*
|
||||
+ * Calculate the highest address of an efi memory descriptor.
|
||||
+ */
|
||||
+u64 __init efi_mem_desc_end(efi_memory_desc_t *md)
|
||||
+{
|
||||
+ u64 size = md->num_pages << EFI_PAGE_SHIFT;
|
||||
+ u64 end = md->phys_addr + size;
|
||||
+ return end;
|
||||
+}
|
||||
|
||||
/*
|
||||
* We can't ioremap data in EFI boot services RAM, because we've already mapped
|
||||
@@ -274,6 +353,7 @@ static __initdata efi_config_table_type_t common_tables[] = {
|
||||
{SMBIOS_TABLE_GUID, "SMBIOS", &efi.smbios},
|
||||
{SMBIOS3_TABLE_GUID, "SMBIOS 3.0", &efi.smbios3},
|
||||
{UGA_IO_PROTOCOL_GUID, "UGA", &efi.uga},
|
||||
+ {EFI_SYSTEM_RESOURCE_TABLE_GUID, "ESRT", &efi.esrt},
|
||||
{NULL_GUID, NULL, NULL},
|
||||
};
|
||||
|
||||
diff --git a/drivers/firmware/efi/esrt.c b/drivers/firmware/efi/esrt.c
|
||||
new file mode 100644
|
||||
index 000000000000..20c0cbdb1c60
|
||||
--- /dev/null
|
||||
+++ b/drivers/firmware/efi/esrt.c
|
||||
@@ -0,0 +1,464 @@
|
||||
+/*
|
||||
+ * esrt.c
|
||||
+ *
|
||||
+ * This module exports EFI System Resource Table (ESRT) entries into userspace
|
||||
+ * through the sysfs file system. The ESRT provides a read-only catalog of
|
||||
+ * system components for which the system accepts firmware upgrades via UEFI's
|
||||
+ * "Capsule Update" feature. This module allows userland utilities to evaluate
|
||||
+ * what firmware updates can be applied to this system, and potentially arrange
|
||||
+ * for those updates to occur.
|
||||
+ *
|
||||
+ * Data is currently found below /sys/firmware/efi/esrt/...
|
||||
+ */
|
||||
+#define pr_fmt(fmt) "esrt: " fmt
|
||||
+
|
||||
+#include <linux/capability.h>
|
||||
+#include <linux/device.h>
|
||||
+#include <linux/efi.h>
|
||||
+#include <linux/init.h>
|
||||
+#include <linux/kernel.h>
|
||||
+#include <linux/kobject.h>
|
||||
+#include <linux/list.h>
|
||||
+#include <linux/memblock.h>
|
||||
+#include <linux/module.h>
|
||||
+#include <linux/slab.h>
|
||||
+#include <linux/types.h>
|
||||
+
|
||||
+#include <asm/io.h>
|
||||
+#include <asm/early_ioremap.h>
|
||||
+
|
||||
+struct efi_system_resource_entry_v1 {
|
||||
+ efi_guid_t fw_class;
|
||||
+ u32 fw_type;
|
||||
+ u32 fw_version;
|
||||
+ u32 lowest_supported_fw_version;
|
||||
+ u32 capsule_flags;
|
||||
+ u32 last_attempt_version;
|
||||
+ u32 last_attempt_status;
|
||||
+};
|
||||
+
|
||||
+/*
|
||||
+ * _count and _version are what they seem like. _max is actually just
|
||||
+ * accounting info for the firmware when creating the table; it should never
|
||||
+ * have been exposed to us. To wit, the spec says:
|
||||
+ * The maximum number of resource array entries that can be within the
|
||||
+ * table without reallocating the table, must not be zero.
|
||||
+ * Since there's no guidance about what that means in terms of memory layout,
|
||||
+ * it means nothing to us.
|
||||
+ */
|
||||
+struct efi_system_resource_table {
|
||||
+ u32 fw_resource_count;
|
||||
+ u32 fw_resource_count_max;
|
||||
+ u64 fw_resource_version;
|
||||
+ u8 entries[];
|
||||
+};
|
||||
+
|
||||
+static phys_addr_t esrt_data;
|
||||
+static size_t esrt_data_size;
|
||||
+
|
||||
+static struct efi_system_resource_table *esrt;
|
||||
+
|
||||
+struct esre_entry {
|
||||
+ union {
|
||||
+ struct efi_system_resource_entry_v1 *esre1;
|
||||
+ } esre;
|
||||
+
|
||||
+ struct kobject kobj;
|
||||
+ struct list_head list;
|
||||
+};
|
||||
+
|
||||
+/* global list of esre_entry. */
|
||||
+static LIST_HEAD(entry_list);
|
||||
+
|
||||
+/* entry attribute */
|
||||
+struct esre_attribute {
|
||||
+ struct attribute attr;
|
||||
+ ssize_t (*show)(struct esre_entry *entry, char *buf);
|
||||
+ ssize_t (*store)(struct esre_entry *entry,
|
||||
+ const char *buf, size_t count);
|
||||
+};
|
||||
+
|
||||
+static struct esre_entry *to_entry(struct kobject *kobj)
|
||||
+{
|
||||
+ return container_of(kobj, struct esre_entry, kobj);
|
||||
+}
|
||||
+
|
||||
+static struct esre_attribute *to_attr(struct attribute *attr)
|
||||
+{
|
||||
+ return container_of(attr, struct esre_attribute, attr);
|
||||
+}
|
||||
+
|
||||
+static ssize_t esre_attr_show(struct kobject *kobj,
|
||||
+ struct attribute *_attr, char *buf)
|
||||
+{
|
||||
+ struct esre_entry *entry = to_entry(kobj);
|
||||
+ struct esre_attribute *attr = to_attr(_attr);
|
||||
+
|
||||
+ /* Don't tell normal users what firmware versions we've got... */
|
||||
+ if (!capable(CAP_SYS_ADMIN))
|
||||
+ return -EACCES;
|
||||
+
|
||||
+ return attr->show(entry, buf);
|
||||
+}
|
||||
+
|
||||
+static const struct sysfs_ops esre_attr_ops = {
|
||||
+ .show = esre_attr_show,
|
||||
+};
|
||||
+
|
||||
+/* Generic ESRT Entry ("ESRE") support. */
|
||||
+static ssize_t esre_fw_class_show(struct esre_entry *entry, char *buf)
|
||||
+{
|
||||
+ char *str = buf;
|
||||
+
|
||||
+ efi_guid_to_str(&entry->esre.esre1->fw_class, str);
|
||||
+ str += strlen(str);
|
||||
+ str += sprintf(str, "\n");
|
||||
+
|
||||
+ return str - buf;
|
||||
+}
|
||||
+
|
||||
+static struct esre_attribute esre_fw_class = __ATTR(fw_class, 0400,
|
||||
+ esre_fw_class_show, NULL);
|
||||
+
|
||||
+#define esre_attr_decl(name, size, fmt) \
|
||||
+static ssize_t esre_##name##_show(struct esre_entry *entry, char *buf) \
|
||||
+{ \
|
||||
+ return sprintf(buf, fmt "\n", \
|
||||
+ le##size##_to_cpu(entry->esre.esre1->name)); \
|
||||
+} \
|
||||
+\
|
||||
+static struct esre_attribute esre_##name = __ATTR(name, 0400, \
|
||||
+ esre_##name##_show, NULL)
|
||||
+
|
||||
+esre_attr_decl(fw_type, 32, "%u");
|
||||
+esre_attr_decl(fw_version, 32, "%u");
|
||||
+esre_attr_decl(lowest_supported_fw_version, 32, "%u");
|
||||
+esre_attr_decl(capsule_flags, 32, "0x%x");
|
||||
+esre_attr_decl(last_attempt_version, 32, "%u");
|
||||
+esre_attr_decl(last_attempt_status, 32, "%u");
|
||||
+
|
||||
+static struct attribute *esre1_attrs[] = {
|
||||
+ &esre_fw_class.attr,
|
||||
+ &esre_fw_type.attr,
|
||||
+ &esre_fw_version.attr,
|
||||
+ &esre_lowest_supported_fw_version.attr,
|
||||
+ &esre_capsule_flags.attr,
|
||||
+ &esre_last_attempt_version.attr,
|
||||
+ &esre_last_attempt_status.attr,
|
||||
+ NULL
|
||||
+};
|
||||
+static void esre_release(struct kobject *kobj)
|
||||
+{
|
||||
+ struct esre_entry *entry = to_entry(kobj);
|
||||
+
|
||||
+ list_del(&entry->list);
|
||||
+ kfree(entry);
|
||||
+}
|
||||
+
|
||||
+static struct kobj_type esre1_ktype = {
|
||||
+ .release = esre_release,
|
||||
+ .sysfs_ops = &esre_attr_ops,
|
||||
+ .default_attrs = esre1_attrs,
|
||||
+};
|
||||
+
|
||||
+
|
||||
+static struct kobject *esrt_kobj;
|
||||
+static struct kset *esrt_kset;
|
||||
+
|
||||
+static int esre_create_sysfs_entry(void *esre, int entry_num)
|
||||
+{
|
||||
+ int rc = 0;
|
||||
+ struct esre_entry *entry;
|
||||
+ char name[20];
|
||||
+
|
||||
+ entry = kzalloc(sizeof(*entry), GFP_KERNEL);
|
||||
+ if (!entry)
|
||||
+ return -ENOMEM;
|
||||
+
|
||||
+ sprintf(name, "entry%d", entry_num);
|
||||
+
|
||||
+ entry->kobj.kset = esrt_kset;
|
||||
+
|
||||
+ if (esrt->fw_resource_version == 1) {
|
||||
+ entry->esre.esre1 = esre;
|
||||
+ rc = kobject_init_and_add(&entry->kobj, &esre1_ktype, NULL,
|
||||
+ "%s", name);
|
||||
+ }
|
||||
+ if (rc) {
|
||||
+ kfree(entry);
|
||||
+ return rc;
|
||||
+ }
|
||||
+
|
||||
+ list_add_tail(&entry->list, &entry_list);
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+/* support for displaying ESRT fields at the top level */
|
||||
+#define esrt_attr_decl(name, size, fmt) \
|
||||
+static ssize_t esrt_##name##_show(struct kobject *kobj, \
|
||||
+ struct kobj_attribute *attr, char *buf)\
|
||||
+{ \
|
||||
+ return sprintf(buf, fmt "\n", le##size##_to_cpu(esrt->name)); \
|
||||
+} \
|
||||
+\
|
||||
+static struct kobj_attribute esrt_##name = __ATTR(name, 0400, \
|
||||
+ esrt_##name##_show, NULL)
|
||||
+
|
||||
+esrt_attr_decl(fw_resource_count, 32, "%u");
|
||||
+esrt_attr_decl(fw_resource_count_max, 32, "%u");
|
||||
+esrt_attr_decl(fw_resource_version, 64, "%llu");
|
||||
+
|
||||
+static struct attribute *esrt_attrs[] = {
|
||||
+ &esrt_fw_resource_count.attr,
|
||||
+ &esrt_fw_resource_count_max.attr,
|
||||
+ &esrt_fw_resource_version.attr,
|
||||
+ NULL,
|
||||
+};
|
||||
+
|
||||
+static inline int esrt_table_exists(void)
|
||||
+{
|
||||
+ if (!efi_enabled(EFI_CONFIG_TABLES))
|
||||
+ return 0;
|
||||
+ if (efi.esrt == EFI_INVALID_TABLE_ADDR)
|
||||
+ return 0;
|
||||
+ return 1;
|
||||
+}
|
||||
+
|
||||
+static umode_t esrt_attr_is_visible(struct kobject *kobj,
|
||||
+ struct attribute *attr, int n)
|
||||
+{
|
||||
+ if (!esrt_table_exists())
|
||||
+ return 0;
|
||||
+ return attr->mode;
|
||||
+}
|
||||
+
|
||||
+static struct attribute_group esrt_attr_group = {
|
||||
+ .attrs = esrt_attrs,
|
||||
+ .is_visible = esrt_attr_is_visible,
|
||||
+};
|
||||
+
|
||||
+/*
|
||||
+ * remap the table, copy it to kmalloced pages, and unmap it.
|
||||
+ */
|
||||
+void __init efi_esrt_init(void)
|
||||
+{
|
||||
+ void *va;
|
||||
+ struct efi_system_resource_table tmpesrt;
|
||||
+ struct efi_system_resource_entry_v1 *v1_entries;
|
||||
+ size_t size, max, entry_size, entries_size;
|
||||
+ efi_memory_desc_t md;
|
||||
+ int rc;
|
||||
+
|
||||
+ pr_debug("esrt-init: loading.\n");
|
||||
+ if (!esrt_table_exists())
|
||||
+ return;
|
||||
+
|
||||
+ rc = efi_mem_desc_lookup(efi.esrt, &md);
|
||||
+ if (rc < 0) {
|
||||
+ pr_err("ESRT header is not in the memory map.\n");
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ max = efi_mem_desc_end(&md);
|
||||
+ if (max < efi.esrt) {
|
||||
+ pr_err("EFI memory descriptor is invalid. (esrt: %p max: %p)\n",
|
||||
+ (void *)efi.esrt, (void *)max);
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ size = sizeof(*esrt);
|
||||
+ max -= efi.esrt;
|
||||
+
|
||||
+ if (max < size) {
|
||||
+ pr_err("ESRT header doen't fit on single memory map entry. (size: %zu max: %zu)\n",
|
||||
+ size, max);
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ va = early_memremap(efi.esrt, size);
|
||||
+ if (!va) {
|
||||
+ pr_err("early_memremap(%p, %zu) failed.\n", (void *)efi.esrt,
|
||||
+ size);
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ memcpy(&tmpesrt, va, sizeof(tmpesrt));
|
||||
+
|
||||
+ if (tmpesrt.fw_resource_version == 1) {
|
||||
+ entry_size = sizeof (*v1_entries);
|
||||
+ } else {
|
||||
+ pr_err("Unsupported ESRT version %lld.\n",
|
||||
+ tmpesrt.fw_resource_version);
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ if (tmpesrt.fw_resource_count > 0 && max - size < entry_size) {
|
||||
+ pr_err("ESRT memory map entry can only hold the header. (max: %zu size: %zu)\n",
|
||||
+ max - size, entry_size);
|
||||
+ goto err_memunmap;
|
||||
+ }
|
||||
+
|
||||
+ /*
|
||||
+ * The format doesn't really give us any boundary to test here,
|
||||
+ * so I'm making up 128 as the max number of individually updatable
|
||||
+ * components we support.
|
||||
+ * 128 should be pretty excessive, but there's still some chance
|
||||
+ * somebody will do that someday and we'll need to raise this.
|
||||
+ */
|
||||
+ if (tmpesrt.fw_resource_count > 128) {
|
||||
+ pr_err("ESRT says fw_resource_count has very large value %d.\n",
|
||||
+ tmpesrt.fw_resource_count);
|
||||
+ goto err_memunmap;
|
||||
+ }
|
||||
+
|
||||
+ /*
|
||||
+ * We know it can't be larger than N * sizeof() here, and N is limited
|
||||
+ * by the previous test to a small number, so there's no overflow.
|
||||
+ */
|
||||
+ entries_size = tmpesrt.fw_resource_count * entry_size;
|
||||
+ if (max < size + entries_size) {
|
||||
+ pr_err("ESRT does not fit on single memory map entry (size: %zu max: %zu)\n",
|
||||
+ size, max);
|
||||
+ goto err_memunmap;
|
||||
+ }
|
||||
+
|
||||
+ /* remap it with our (plausible) new pages */
|
||||
+ early_memunmap(va, size);
|
||||
+ size += entries_size;
|
||||
+ va = early_memremap(efi.esrt, size);
|
||||
+ if (!va) {
|
||||
+ pr_err("early_memremap(%p, %zu) failed.\n", (void *)efi.esrt,
|
||||
+ size);
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ esrt_data = (phys_addr_t)efi.esrt;
|
||||
+ esrt_data_size = size;
|
||||
+
|
||||
+ pr_info("Reserving ESRT space from %p to %p.\n", (void *)esrt_data,
|
||||
+ (char *)esrt_data + size);
|
||||
+ memblock_reserve(esrt_data, esrt_data_size);
|
||||
+
|
||||
+ pr_debug("esrt-init: loaded.\n");
|
||||
+err_memunmap:
|
||||
+ early_memunmap(va, size);
|
||||
+}
|
||||
+
|
||||
+static int __init register_entries(void)
|
||||
+{
|
||||
+ struct efi_system_resource_entry_v1 *v1_entries = (void *)esrt->entries;
|
||||
+ int i, rc;
|
||||
+
|
||||
+ if (!esrt_table_exists())
|
||||
+ return 0;
|
||||
+
|
||||
+ for (i = 0; i < le32_to_cpu(esrt->fw_resource_count); i++) {
|
||||
+ void *entry;
|
||||
+ if (esrt->fw_resource_version == 1) {
|
||||
+ entry = &v1_entries[i];
|
||||
+ }
|
||||
+ rc = esre_create_sysfs_entry(entry, i);
|
||||
+ if (rc < 0) {
|
||||
+ pr_err("ESRT entry creation failed with error %d.\n",
|
||||
+ rc);
|
||||
+ return rc;
|
||||
+ }
|
||||
+ }
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+static void cleanup_entry_list(void)
|
||||
+{
|
||||
+ struct esre_entry *entry, *next;
|
||||
+
|
||||
+ list_for_each_entry_safe(entry, next, &entry_list, list) {
|
||||
+ kobject_put(&entry->kobj);
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
+static int __init esrt_sysfs_init(void)
|
||||
+{
|
||||
+ int error;
|
||||
+ struct efi_system_resource_table __iomem *ioesrt;
|
||||
+
|
||||
+ pr_debug("esrt-sysfs: loading.\n");
|
||||
+ if (!esrt_data || !esrt_data_size)
|
||||
+ return -ENOSYS;
|
||||
+
|
||||
+ ioesrt = ioremap(esrt_data, esrt_data_size);
|
||||
+ if (!ioesrt) {
|
||||
+ pr_err("ioremap(%p, %zu) failed.\n", (void *)esrt_data,
|
||||
+ esrt_data_size);
|
||||
+ return -ENOMEM;
|
||||
+ }
|
||||
+
|
||||
+ esrt = kmalloc(esrt_data_size, GFP_KERNEL);
|
||||
+ if (!esrt) {
|
||||
+ pr_err("kmalloc failed. (wanted %zu bytes)\n", esrt_data_size);
|
||||
+ iounmap(ioesrt);
|
||||
+ return -ENOMEM;
|
||||
+ }
|
||||
+
|
||||
+ memcpy_fromio(esrt, ioesrt, esrt_data_size);
|
||||
+
|
||||
+ esrt_kobj = kobject_create_and_add("esrt", efi_kobj);
|
||||
+ if (!esrt_kobj) {
|
||||
+ pr_err("Firmware table registration failed.\n");
|
||||
+ error = -ENOMEM;
|
||||
+ goto err;
|
||||
+ }
|
||||
+
|
||||
+ error = sysfs_create_group(esrt_kobj, &esrt_attr_group);
|
||||
+ if (error) {
|
||||
+ pr_err("Sysfs attribute export failed with error %d.\n",
|
||||
+ error);
|
||||
+ goto err_remove_esrt;
|
||||
+ }
|
||||
+
|
||||
+ esrt_kset = kset_create_and_add("entries", NULL, esrt_kobj);
|
||||
+ if (!esrt_kset) {
|
||||
+ pr_err("kset creation failed.\n");
|
||||
+ error = -ENOMEM;
|
||||
+ goto err_remove_group;
|
||||
+ }
|
||||
+
|
||||
+ error = register_entries();
|
||||
+ if (error)
|
||||
+ goto err_cleanup_list;
|
||||
+
|
||||
+ memblock_remove(esrt_data, esrt_data_size);
|
||||
+
|
||||
+ pr_debug("esrt-sysfs: loaded.\n");
|
||||
+
|
||||
+ return 0;
|
||||
+err_cleanup_list:
|
||||
+ cleanup_entry_list();
|
||||
+ kset_unregister(esrt_kset);
|
||||
+err_remove_group:
|
||||
+ sysfs_remove_group(esrt_kobj, &esrt_attr_group);
|
||||
+err_remove_esrt:
|
||||
+ kobject_put(esrt_kobj);
|
||||
+err:
|
||||
+ kfree(esrt);
|
||||
+ esrt = NULL;
|
||||
+ return error;
|
||||
+}
|
||||
+
|
||||
+static void __exit esrt_sysfs_exit(void)
|
||||
+{
|
||||
+ pr_debug("esrt-sysfs: unloading.\n");
|
||||
+ cleanup_entry_list();
|
||||
+ kset_unregister(esrt_kset);
|
||||
+ sysfs_remove_group(esrt_kobj, &esrt_attr_group);
|
||||
+ kfree(esrt);
|
||||
+ esrt = NULL;
|
||||
+ kobject_del(esrt_kobj);
|
||||
+ kobject_put(esrt_kobj);
|
||||
+}
|
||||
+
|
||||
+module_init(esrt_sysfs_init);
|
||||
+module_exit(esrt_sysfs_exit);
|
||||
+
|
||||
+MODULE_AUTHOR("Peter Jones <pjones@redhat.com>");
|
||||
+MODULE_DESCRIPTION("EFI System Resource Table support");
|
||||
+MODULE_LICENSE("GPL");
|
||||
diff --git a/include/linux/efi.h b/include/linux/efi.h
|
||||
index 470e8dfcb517..c15e1de5273c 100644
|
||||
--- a/include/linux/efi.h
|
||||
+++ b/include/linux/efi.h
|
||||
@@ -583,6 +583,9 @@ void efi_native_runtime_setup(void);
|
||||
#define EFI_FILE_INFO_ID \
|
||||
EFI_GUID( 0x9576e92, 0x6d3f, 0x11d2, 0x8e, 0x39, 0x00, 0xa0, 0xc9, 0x69, 0x72, 0x3b )
|
||||
|
||||
+#define EFI_SYSTEM_RESOURCE_TABLE_GUID \
|
||||
+ EFI_GUID( 0xb122a263, 0x3661, 0x4f68, 0x99, 0x29, 0x78, 0xf8, 0xb0, 0xd6, 0x21, 0x80 )
|
||||
+
|
||||
#define EFI_FILE_SYSTEM_GUID \
|
||||
EFI_GUID( 0x964e5b22, 0x6459, 0x11d2, 0x8e, 0x39, 0x00, 0xa0, 0xc9, 0x69, 0x72, 0x3b )
|
||||
|
||||
@@ -849,6 +852,7 @@ extern struct efi {
|
||||
unsigned long fw_vendor; /* fw_vendor */
|
||||
unsigned long runtime; /* runtime table */
|
||||
unsigned long config_table; /* config tables */
|
||||
+ unsigned long esrt; /* ESRT table */
|
||||
efi_get_time_t *get_time;
|
||||
efi_set_time_t *set_time;
|
||||
efi_get_wakeup_time_t *get_wakeup_time;
|
||||
@@ -901,6 +905,7 @@ static inline efi_status_t efi_query_variable_store(u32 attributes, unsigned lon
|
||||
#endif
|
||||
extern void __iomem *efi_lookup_mapped_addr(u64 phys_addr);
|
||||
extern int efi_config_init(efi_config_table_type_t *arch_tables);
|
||||
+extern void __init efi_esrt_init(void);
|
||||
extern int efi_config_parse_tables(void *config_tables, int count, int sz,
|
||||
efi_config_table_type_t *arch_tables);
|
||||
extern u64 efi_get_iobase (void);
|
||||
@@ -908,12 +913,15 @@ extern u32 efi_mem_type (unsigned long phys_addr);
|
||||
extern u64 efi_mem_attributes (unsigned long phys_addr);
|
||||
extern u64 efi_mem_attribute (unsigned long phys_addr, unsigned long size);
|
||||
extern int __init efi_uart_console_only (void);
|
||||
+extern u64 efi_mem_desc_end(efi_memory_desc_t *md);
|
||||
+extern int efi_mem_desc_lookup(u64 phys_addr, efi_memory_desc_t *out_md);
|
||||
extern void efi_initialize_iomem_resources(struct resource *code_resource,
|
||||
struct resource *data_resource, struct resource *bss_resource);
|
||||
extern void efi_get_time(struct timespec *now);
|
||||
extern void efi_reserve_boot_services(void);
|
||||
extern int efi_get_fdt_params(struct efi_fdt_params *params, int verbose);
|
||||
extern struct efi_memory_map memmap;
|
||||
+extern struct kobject *efi_kobj;
|
||||
|
||||
extern int efi_reboot_quirk_mode;
|
||||
extern bool efi_poweroff_required(void);
|
148
kernel.spec
148
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 19
|
||||
%define base_sublevel 0
|
||||
|
||||
## If this is a released kernel ##
|
||||
%if 0%{?released_kernel}
|
||||
|
||||
# Do we have a -stable update to apply?
|
||||
%define stable_update 8
|
||||
%define stable_update 4
|
||||
# Is it a -stable RC?
|
||||
%define stable_rc 0
|
||||
# Set rpm version accordingly
|
||||
|
@ -86,7 +86,7 @@ Summary: The Linux kernel
|
|||
%define stable_base %(echo $((%{stable_update} - 1)))
|
||||
%endif
|
||||
%endif
|
||||
%define rpmversion 3.%{base_sublevel}.%{stable_update}
|
||||
%define rpmversion 4.%{base_sublevel}.%{stable_update}
|
||||
|
||||
## The not-released-kernel case ##
|
||||
%else
|
||||
|
@ -97,7 +97,7 @@ Summary: The Linux kernel
|
|||
# The git snapshot level
|
||||
%define gitrev 0
|
||||
# Set rpm version accordingly
|
||||
%define rpmversion 3.%{upstream_sublevel}.0
|
||||
%define rpmversion 4.%{upstream_sublevel}.0
|
||||
%endif
|
||||
# Nb: The above rcrev and gitrev values automagically define Patch00 and Patch01 below.
|
||||
|
||||
|
@ -205,7 +205,7 @@ Summary: The Linux kernel
|
|||
%endif
|
||||
|
||||
# The kernel tarball/base version
|
||||
%define kversion 3.%{base_sublevel}
|
||||
%define kversion 4.%{base_sublevel}
|
||||
|
||||
%define make_target bzImage
|
||||
|
||||
|
@ -524,7 +524,7 @@ BuildRequires: binutils-%{_build_arch}-linux-gnu, gcc-%{_build_arch}-linux-gnu
|
|||
%define cross_opts CROSS_COMPILE=%{_build_arch}-linux-gnu-
|
||||
%endif
|
||||
|
||||
Source0: ftp://ftp.kernel.org/pub/linux/kernel/v3.0/linux-%{kversion}.tar.xz
|
||||
Source0: ftp://ftp.kernel.org/pub/linux/kernel/v4.0/linux-%{kversion}.tar.xz
|
||||
|
||||
Source11: x509.genkey
|
||||
|
||||
|
@ -577,11 +577,11 @@ Source2001: cpupower.config
|
|||
# For a stable release kernel
|
||||
%if 0%{?stable_update}
|
||||
%if 0%{?stable_base}
|
||||
%define stable_patch_00 patch-3.%{base_sublevel}.%{stable_base}.xz
|
||||
%define stable_patch_00 patch-4.%{base_sublevel}.%{stable_base}.xz
|
||||
Patch00: %{stable_patch_00}
|
||||
%endif
|
||||
%if 0%{?stable_rc}
|
||||
%define stable_patch_01 patch-3.%{base_sublevel}.%{stable_update}-rc%{stable_rc}.xz
|
||||
%define stable_patch_01 patch-4.%{base_sublevel}.%{stable_update}-rc%{stable_rc}.xz
|
||||
Patch01: %{stable_patch_01}
|
||||
%endif
|
||||
|
||||
|
@ -590,14 +590,14 @@ Patch01: %{stable_patch_01}
|
|||
# near the top of this spec file.
|
||||
%else
|
||||
%if 0%{?rcrev}
|
||||
Patch00: patch-3.%{upstream_sublevel}-rc%{rcrev}.xz
|
||||
Patch00: patch-4.%{upstream_sublevel}-rc%{rcrev}.xz
|
||||
%if 0%{?gitrev}
|
||||
Patch01: patch-3.%{upstream_sublevel}-rc%{rcrev}-git%{gitrev}.xz
|
||||
Patch01: patch-4.%{upstream_sublevel}-rc%{rcrev}-git%{gitrev}.xz
|
||||
%endif
|
||||
%else
|
||||
# pre-{base_sublevel+1}-rc1 case
|
||||
%if 0%{?gitrev}
|
||||
Patch00: patch-3.%{base_sublevel}-git%{gitrev}.xz
|
||||
Patch00: patch-4.%{base_sublevel}-git%{gitrev}.xz
|
||||
%endif
|
||||
%endif
|
||||
%endif
|
||||
|
@ -664,13 +664,15 @@ Patch1018: MODSIGN-Support-not-importing-certs-from-db.patch
|
|||
|
||||
Patch1019: Add-sysrq-option-to-disable-secure-boot-mode.patch
|
||||
|
||||
# esrt
|
||||
Patch1020: efi-Add-esrt-support.patch
|
||||
|
||||
# virt + ksm patches
|
||||
|
||||
# DRM
|
||||
|
||||
# nouveau + drm fixes
|
||||
# intel drm is all merged upstream
|
||||
Patch1825: drm-i915-tame-the-chattermouth-v2.patch
|
||||
Patch1826: drm-i915-hush-check-crtc-state.patch
|
||||
Patch1827: drm-i915-Disable-verbose-state-checks.patch
|
||||
|
||||
|
@ -692,6 +694,10 @@ Patch15000: watchdog-Disable-watchdog-on-virtual-machines.patch
|
|||
# PPC
|
||||
|
||||
# ARM64
|
||||
Patch21000: amd-xgbe-a0-Add-support-for-XGBE-on-A0.patch
|
||||
Patch21001: amd-xgbe-phy-a0-Add-support-for-XGBE-PHY-on-A0.patch
|
||||
Patch21002: arm64-avoid-needing-console-to-enable-serial-console.patch
|
||||
Patch21003: usb-make-xhci-platform-driver-use-64-bit-or-32-bit-D.patch
|
||||
|
||||
# ARMv7
|
||||
Patch21020: ARM-tegra-usb-no-reset.patch
|
||||
|
@ -704,11 +710,6 @@ Patch21026: pinctrl-pinctrl-single-must-be-initialized-early.patch
|
|||
|
||||
Patch21028: arm-i.MX6-Utilite-device-dtb.patch
|
||||
|
||||
# IOMMU crash fixes - https://lists.linuxfoundation.org/pipermail/iommu/2015-February/012329.html
|
||||
Patch21030: iommu-omap-Play-nice-in-multi-platform-builds.patch
|
||||
Patch21031: iommu-exynos-Play-nice-in-multi-platform-builds.patch
|
||||
Patch21032: iommu-rockchip-Play-nice-in-multi-platform-builds.patch
|
||||
|
||||
Patch21100: arm-highbank-l2-reverts.patch
|
||||
|
||||
#rhbz 754518
|
||||
|
@ -728,19 +729,9 @@ Patch26131: acpi-video-Add-disable_native_backlight-quirk-for-Sa.patch
|
|||
#rhbz 1186097
|
||||
Patch26135: acpi-video-add-disable_native_backlight_quirk_for_samsung_510r.patch
|
||||
|
||||
#CVE-XXXX-XXXX rhbz 1189864 1192079
|
||||
Patch26136: vhost-scsi-potential-memory-corruption.patch
|
||||
|
||||
#CVE-2015-0275 rhbz 1193907 1195178
|
||||
Patch26138: ext4-Allocate-entire-range-in-zero-range.patch
|
||||
|
||||
#rhbz 1200777 1200778
|
||||
Patch26159: Input-synaptics-retrieve-the-extended-capabilities-i.patch
|
||||
Patch26160: Input-synaptics-remove-TOPBUTTONPAD-property-for-Len.patch
|
||||
Patch26161: Input-synaptics-re-route-tracksticks-buttons-on-the-.patch
|
||||
Patch26162: Input-synaptics-remove-X1-Carbon-3rd-gen-from-the-to.patch
|
||||
Patch26163: Input-synaptics-remove-X250-from-the-topbuttonpad-li.patch
|
||||
|
||||
#rhbz 1201532
|
||||
Patch26168: HID-multitouch-add-support-of-clickpads.patch
|
||||
|
||||
|
@ -748,30 +739,27 @@ Patch26168: HID-multitouch-add-support-of-clickpads.patch
|
|||
Patch26170: acpi-video-Allow-forcing-native-backlight-on-non-win.patch
|
||||
Patch26171: acpi-video-Add-force-native-backlight-quirk-for-Leno.patch
|
||||
|
||||
#CVE-2015-2666 rhbz 1204724 1204722
|
||||
Patch26172: x86-microcode-intel-Guard-against-stack-overflow-in-.patch
|
||||
|
||||
# git clone ssh://git.fedorahosted.org/git/kernel-arm64.git, git diff master...devel
|
||||
Patch30000: kernel-arm64.patch
|
||||
|
||||
#CVE-2015-2150 rhbz 1196266 1200397
|
||||
Patch26175: xen-pciback-Don-t-disable-PCI_COMMAND-on-PCI-device-.patch
|
||||
|
||||
#rhbz 1212230
|
||||
Patch26176: Input-synaptics-pin-3-touches-when-the-firmware-repo.patch
|
||||
|
||||
#rhbz 1208953
|
||||
Patch26179: pty-Fix-input-race-when-closing.patch
|
||||
|
||||
#rhbz 1210801
|
||||
Patch26180: HID-logitech-hidpp-add-a-module-parameter-to-keep-fi.patch
|
||||
|
||||
#rhbz 1205083
|
||||
Patch26181: 0001-iwlwifi-mvm-remove-WARN_ON-for-invalid-BA-notificati.patch
|
||||
|
||||
#rhbz 1208999
|
||||
Patch26182: SCSI-add-1024-max-sectors-black-list-flag.patch
|
||||
|
||||
#rhbz 1204390
|
||||
Patch26189: 0001-cx18-add-missing-caps-for-the-PCM-video-device.patch
|
||||
|
||||
#rhbz 1210857
|
||||
Patch26192: blk-loop-avoid-too-many-pending-per-work-IO.patch
|
||||
|
||||
#rhbz 1206036 1215989
|
||||
Patch26193: toshiba_acpi-Do-not-register-vendor-backlight-when-a.patch
|
||||
|
||||
|
@ -781,8 +769,16 @@ Patch26199: libata-Blacklist-queued-TRIM-on-all-Samsung-800-seri.patch
|
|||
#rhbz 1219343
|
||||
Patch26200: 0001-HID-usbhid-Add-HID_QUIRK_NOGET-for-Aten-DVI-KVM-swit.patch
|
||||
|
||||
#rhbz 1220915
|
||||
Patch26201: ovl-don-t-remove-non-empty-opaque-directory.patch
|
||||
|
||||
#rhbz 1220118
|
||||
Patch26201: 0001-media-media-Fix-regression-in-some-more-dib0700-base.patch
|
||||
Patch26202: 0001-media-media-Fix-regression-in-some-more-dib0700-base.patch
|
||||
|
||||
Patch26203: v4l-uvcvideo-Fix-incorrect-bandwidth-with-Chicony-de.patch
|
||||
|
||||
#rhbz 1223332
|
||||
Patch26207: md-raid0-fix-restore-to-sector-variable-in-raid0_mak.patch
|
||||
|
||||
# END OF PATCH DEFINITIONS
|
||||
|
||||
|
@ -1117,7 +1113,7 @@ ApplyPatch()
|
|||
fi
|
||||
%if !%{using_upstream_branch}
|
||||
if ! grep -E "^Patch[0-9]+: $patch\$" %{_specdir}/${RPM_PACKAGE_NAME%%%%%{?variant}}.spec ; then
|
||||
if [ "${patch:0:8}" != "patch-3." ] ; then
|
||||
if [ "${patch:0:8}" != "patch-4." ] ; then
|
||||
echo "ERROR: Patch $patch not listed as a source patch in specfile"
|
||||
exit 1
|
||||
fi
|
||||
|
@ -1151,20 +1147,20 @@ ApplyOptionalPatch()
|
|||
|
||||
# Update to latest upstream.
|
||||
%if 0%{?released_kernel}
|
||||
%define vanillaversion 3.%{base_sublevel}
|
||||
%define vanillaversion 4.%{base_sublevel}
|
||||
# non-released_kernel case
|
||||
%else
|
||||
%if 0%{?rcrev}
|
||||
%define vanillaversion 3.%{upstream_sublevel}-rc%{rcrev}
|
||||
%define vanillaversion 4.%{upstream_sublevel}-rc%{rcrev}
|
||||
%if 0%{?gitrev}
|
||||
%define vanillaversion 3.%{upstream_sublevel}-rc%{rcrev}-git%{gitrev}
|
||||
%define vanillaversion 4.%{upstream_sublevel}-rc%{rcrev}-git%{gitrev}
|
||||
%endif
|
||||
%else
|
||||
# pre-{base_sublevel+1}-rc1 case
|
||||
%if 0%{?gitrev}
|
||||
%define vanillaversion 3.%{base_sublevel}-git%{gitrev}
|
||||
%define vanillaversion 4.%{base_sublevel}-git%{gitrev}
|
||||
%else
|
||||
%define vanillaversion 3.%{base_sublevel}
|
||||
%define vanillaversion 4.%{base_sublevel}
|
||||
%endif
|
||||
%endif
|
||||
%endif
|
||||
|
@ -1177,7 +1173,7 @@ ApplyOptionalPatch()
|
|||
|
||||
# Build a list of the other top-level kernel tree directories.
|
||||
# This will be used to hardlink identical vanilla subdirs.
|
||||
sharedirs=$(find "$PWD" -maxdepth 1 -type d -name 'kernel-3.*' \
|
||||
sharedirs=$(find "$PWD" -maxdepth 1 -type d -name 'kernel-4.*' \
|
||||
| grep -x -v "$PWD"/kernel-%{kversion}%{?dist}) ||:
|
||||
|
||||
# Delete all old stale trees.
|
||||
|
@ -1248,14 +1244,14 @@ if [ ! -d kernel-%{kversion}%{?dist}/vanilla-%{vanillaversion} ]; then
|
|||
# Update vanilla to the latest upstream.
|
||||
# (non-released_kernel case only)
|
||||
%if 0%{?rcrev}
|
||||
ApplyPatch patch-3.%{upstream_sublevel}-rc%{rcrev}.xz
|
||||
ApplyPatch patch-4.%{upstream_sublevel}-rc%{rcrev}.xz
|
||||
%if 0%{?gitrev}
|
||||
ApplyPatch patch-3.%{upstream_sublevel}-rc%{rcrev}-git%{gitrev}.xz
|
||||
ApplyPatch patch-4.%{upstream_sublevel}-rc%{rcrev}-git%{gitrev}.xz
|
||||
%endif
|
||||
%else
|
||||
# pre-{base_sublevel+1}-rc1 case
|
||||
%if 0%{?gitrev}
|
||||
ApplyPatch patch-3.%{base_sublevel}-git%{gitrev}.xz
|
||||
ApplyPatch patch-4.%{base_sublevel}-git%{gitrev}.xz
|
||||
%endif
|
||||
%endif
|
||||
|
||||
|
@ -1331,6 +1327,10 @@ ApplyPatch lib-cpumask-Make-CPUMASK_OFFSTACK-usable-without-deb.patch
|
|||
# PPC
|
||||
|
||||
# ARM64
|
||||
ApplyPatch amd-xgbe-a0-Add-support-for-XGBE-on-A0.patch
|
||||
ApplyPatch amd-xgbe-phy-a0-Add-support-for-XGBE-PHY-on-A0.patch
|
||||
ApplyPatch arm64-avoid-needing-console-to-enable-serial-console.patch
|
||||
ApplyPatch usb-make-xhci-platform-driver-use-64-bit-or-32-bit-D.patch
|
||||
|
||||
#
|
||||
# ARM
|
||||
|
@ -1346,10 +1346,6 @@ ApplyPatch pinctrl-pinctrl-single-must-be-initialized-early.patch
|
|||
|
||||
ApplyPatch arm-i.MX6-Utilite-device-dtb.patch
|
||||
|
||||
ApplyPatch iommu-omap-Play-nice-in-multi-platform-builds.patch
|
||||
ApplyPatch iommu-exynos-Play-nice-in-multi-platform-builds.patch
|
||||
ApplyPatch iommu-rockchip-Play-nice-in-multi-platform-builds.patch
|
||||
|
||||
ApplyPatch arm-highbank-l2-reverts.patch
|
||||
|
||||
#
|
||||
|
@ -1436,6 +1432,8 @@ ApplyPatch MODSIGN-Support-not-importing-certs-from-db.patch
|
|||
|
||||
ApplyPatch Add-sysrq-option-to-disable-secure-boot-mode.patch
|
||||
|
||||
ApplyPatch efi-Add-esrt-support.patch
|
||||
|
||||
# Assorted Virt Fixes
|
||||
|
||||
# DRM core
|
||||
|
@ -1443,7 +1441,6 @@ ApplyPatch Add-sysrq-option-to-disable-secure-boot-mode.patch
|
|||
# Nouveau DRM
|
||||
|
||||
# Intel DRM
|
||||
ApplyPatch drm-i915-tame-the-chattermouth-v2.patch
|
||||
ApplyPatch drm-i915-hush-check-crtc-state.patch
|
||||
ApplyPatch drm-i915-Disable-verbose-state-checks.patch
|
||||
|
||||
|
@ -1477,19 +1474,9 @@ ApplyPatch acpi-video-Add-disable_native_backlight-quirk-for-Sa.patch
|
|||
#rhbz 1186097
|
||||
ApplyPatch acpi-video-add-disable_native_backlight_quirk_for_samsung_510r.patch
|
||||
|
||||
#CVE-XXXX-XXXX rhbz 1189864 1192079
|
||||
ApplyPatch vhost-scsi-potential-memory-corruption.patch
|
||||
|
||||
#CVE-2015-0275 rhbz 1193907 1195178
|
||||
ApplyPatch ext4-Allocate-entire-range-in-zero-range.patch
|
||||
|
||||
#rhbz 1200777 1200778
|
||||
ApplyPatch Input-synaptics-retrieve-the-extended-capabilities-i.patch
|
||||
ApplyPatch Input-synaptics-remove-TOPBUTTONPAD-property-for-Len.patch
|
||||
ApplyPatch Input-synaptics-re-route-tracksticks-buttons-on-the-.patch
|
||||
ApplyPatch Input-synaptics-remove-X1-Carbon-3rd-gen-from-the-to.patch
|
||||
ApplyPatch Input-synaptics-remove-X250-from-the-topbuttonpad-li.patch
|
||||
|
||||
#rhbz 1201532
|
||||
ApplyPatch HID-multitouch-add-support-of-clickpads.patch
|
||||
|
||||
|
@ -1497,9 +1484,6 @@ ApplyPatch HID-multitouch-add-support-of-clickpads.patch
|
|||
ApplyPatch acpi-video-Allow-forcing-native-backlight-on-non-win.patch
|
||||
ApplyPatch acpi-video-Add-force-native-backlight-quirk-for-Leno.patch
|
||||
|
||||
#CVE-2015-2666 rhbz 1204724 1204722
|
||||
ApplyPatch x86-microcode-intel-Guard-against-stack-overflow-in-.patch
|
||||
|
||||
%if 0%{?aarch64patches}
|
||||
ApplyPatch kernel-arm64.patch
|
||||
%ifnarch aarch64 # this is stupid, but i want to notice before secondary koji does.
|
||||
|
@ -1510,18 +1494,32 @@ ApplyPatch kernel-arm64.patch -R
|
|||
#CVE-2015-2150 rhbz 1196266 1200397
|
||||
ApplyPatch xen-pciback-Don-t-disable-PCI_COMMAND-on-PCI-device-.patch
|
||||
|
||||
#rhbz 1212230
|
||||
ApplyPatch Input-synaptics-pin-3-touches-when-the-firmware-repo.patch
|
||||
|
||||
#rhbz 1210857
|
||||
ApplyPatch blk-loop-avoid-too-many-pending-per-work-IO.patch
|
||||
|
||||
#rhbz 1219343
|
||||
ApplyPatch 0001-HID-usbhid-Add-HID_QUIRK_NOGET-for-Aten-DVI-KVM-swit.patch
|
||||
|
||||
#rhbz 1220915
|
||||
ApplyPatch ovl-don-t-remove-non-empty-opaque-directory.patch
|
||||
|
||||
#rhbz 1220118
|
||||
ApplyPatch 0001-media-media-Fix-regression-in-some-more-dib0700-base.patch
|
||||
|
||||
ApplyPatch v4l-uvcvideo-Fix-incorrect-bandwidth-with-Chicony-de.patch
|
||||
|
||||
#rhbz 1223332
|
||||
ApplyPatch md-raid0-fix-restore-to-sector-variable-in-raid0_mak.patch
|
||||
|
||||
#rhbz 1208953
|
||||
ApplyPatch pty-Fix-input-race-when-closing.patch
|
||||
|
||||
#rhbz 1210801
|
||||
ApplyPatch HID-logitech-hidpp-add-a-module-parameter-to-keep-fi.patch
|
||||
|
||||
#rhbz 1205083
|
||||
ApplyPatch 0001-iwlwifi-mvm-remove-WARN_ON-for-invalid-BA-notificati.patch
|
||||
|
||||
#rhbz 1208999
|
||||
ApplyPatch SCSI-add-1024-max-sectors-black-list-flag.patch
|
||||
|
||||
#rhbz 1204390
|
||||
ApplyPatch 0001-cx18-add-missing-caps-for-the-PCM-video-device.patch
|
||||
|
||||
|
@ -1531,12 +1529,6 @@ ApplyPatch toshiba_acpi-Do-not-register-vendor-backlight-when-a.patch
|
|||
#rhbz 1218662
|
||||
ApplyPatch libata-Blacklist-queued-TRIM-on-all-Samsung-800-seri.patch
|
||||
|
||||
#rhbz 1219343
|
||||
ApplyPatch 0001-HID-usbhid-Add-HID_QUIRK_NOGET-for-Aten-DVI-KVM-swit.patch
|
||||
|
||||
#rhbz 1220118
|
||||
ApplyPatch 0001-media-media-Fix-regression-in-some-more-dib0700-base.patch
|
||||
|
||||
# END OF PATCH APPLICATIONS
|
||||
|
||||
%endif
|
||||
|
@ -2348,6 +2340,8 @@ fi
|
|||
# ||----w |
|
||||
# || ||
|
||||
%changelog
|
||||
* Thu May 21 2015 Laura Abbott <labbott@fedoraproject.org> - 4.0.4-100
|
||||
- Linux v4.0.4
|
||||
|
||||
* Fri May 15 2015 Laura Abbott <labbott@fedoraproject.org>
|
||||
- Fix DVB oops (rhbz 1220118)
|
||||
|
|
|
@ -0,0 +1,48 @@
|
|||
From: Eric Work <work.eric@gmail.com>
|
||||
Date: Tue, 19 May 2015 06:26:23 -0700
|
||||
Subject: [PATCH] md/raid0: fix restore to sector variable in
|
||||
raid0_make_request
|
||||
|
||||
md/raid0: fix restore to sector variable in raid0_make_request
|
||||
|
||||
The variable "sector" in "raid0_make_request()" was improperly updated
|
||||
by a call to "sector_div()" which modifies its first argument in place.
|
||||
Commit 47d68979cc968535cb87f3e5f2e6a3533ea48fbd restored this variable
|
||||
after the call for later re-use. Unfortunetly the restore was done after
|
||||
the referenced variable "bio" was advanced. This lead to the original
|
||||
value and the restored value being different. Here we move this line to
|
||||
the proper place.
|
||||
|
||||
One observed side effect of this bug was discarding a file though
|
||||
unlinking would cause an unrelated file's contents to be discarded.
|
||||
|
||||
Signed-off-by: NeilBrown <neilb@suse.de>
|
||||
Fixes: 47d68979cc96 ("md/raid0: fix bug with chunksize not a power of 2.")
|
||||
Cc: stable@vger.kernel.org (any that received above backport)
|
||||
URL: https://bugzilla.kernel.org/show_bug.cgi?id=98501
|
||||
---
|
||||
drivers/md/raid0.c | 4 +++-
|
||||
1 file changed, 3 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/drivers/md/raid0.c b/drivers/md/raid0.c
|
||||
index 6a68ef5246d4..efb654eb5399 100644
|
||||
--- a/drivers/md/raid0.c
|
||||
+++ b/drivers/md/raid0.c
|
||||
@@ -524,6 +524,9 @@ static void raid0_make_request(struct mddev *mddev, struct bio *bio)
|
||||
? (sector & (chunk_sects-1))
|
||||
: sector_div(sector, chunk_sects));
|
||||
|
||||
+ /* Restore due to sector_div */
|
||||
+ sector = bio->bi_iter.bi_sector;
|
||||
+
|
||||
if (sectors < bio_sectors(bio)) {
|
||||
split = bio_split(bio, sectors, GFP_NOIO, fs_bio_set);
|
||||
bio_chain(split, bio);
|
||||
@@ -531,7 +534,6 @@ static void raid0_make_request(struct mddev *mddev, struct bio *bio)
|
||||
split = bio;
|
||||
}
|
||||
|
||||
- sector = bio->bi_iter.bi_sector;
|
||||
zone = find_zone(mddev->private, §or);
|
||||
tmp_dev = map_sector(mddev, zone, sector, §or);
|
||||
split->bi_bdev = tmp_dev->bdev;
|
|
@ -0,0 +1,57 @@
|
|||
From: Miklos Szeredi <mszeredi@suse.cz>
|
||||
Date: Thu, 14 May 2015 10:04:44 +0200
|
||||
Subject: [PATCH] ovl: don't remove non-empty opaque directory
|
||||
|
||||
When removing an opaque directory we can't just call rmdir() to check for
|
||||
emptiness, because the directory will need to be replaced with a whiteout.
|
||||
The replacement is done with RENAME_EXCHANGE, which doesn't check
|
||||
emptiness.
|
||||
|
||||
Solution is just to check emptiness by reading the directory. In the
|
||||
future we could add a new rename flag to check for emptiness even for
|
||||
RENAME_EXCHANGE to optimize this case.
|
||||
|
||||
Reported-by: Vincent Batts <vbatts@gmail.com>
|
||||
Signed-off-by: Miklos Szeredi <mszeredi@suse.cz>
|
||||
Tested-by: Jordi Pujol Palomer <jordipujolp@gmail.com>
|
||||
Fixes: 263b4a0fee43 ("ovl: dont replace opaque dir")
|
||||
Cc: <stable@vger.kernel.org> # v4.0+
|
||||
---
|
||||
fs/overlayfs/dir.c | 24 +++++++++++++++++++-----
|
||||
1 file changed, 19 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/fs/overlayfs/dir.c b/fs/overlayfs/dir.c
|
||||
index d139405d2bfa..2578a0c0677d 100644
|
||||
--- a/fs/overlayfs/dir.c
|
||||
+++ b/fs/overlayfs/dir.c
|
||||
@@ -506,11 +506,25 @@ static int ovl_remove_and_whiteout(struct dentry *dentry, bool is_dir)
|
||||
struct dentry *opaquedir = NULL;
|
||||
int err;
|
||||
|
||||
- if (is_dir && OVL_TYPE_MERGE_OR_LOWER(ovl_path_type(dentry))) {
|
||||
- opaquedir = ovl_check_empty_and_clear(dentry);
|
||||
- err = PTR_ERR(opaquedir);
|
||||
- if (IS_ERR(opaquedir))
|
||||
- goto out;
|
||||
+ if (is_dir) {
|
||||
+ if (OVL_TYPE_MERGE_OR_LOWER(ovl_path_type(dentry))) {
|
||||
+ opaquedir = ovl_check_empty_and_clear(dentry);
|
||||
+ err = PTR_ERR(opaquedir);
|
||||
+ if (IS_ERR(opaquedir))
|
||||
+ goto out;
|
||||
+ } else {
|
||||
+ LIST_HEAD(list);
|
||||
+
|
||||
+ /*
|
||||
+ * When removing an empty opaque directory, then it
|
||||
+ * makes no sense to replace it with an exact replica of
|
||||
+ * itself. But emptiness still needs to be checked.
|
||||
+ */
|
||||
+ err = ovl_check_empty_dir(dentry, &list);
|
||||
+ ovl_cache_free(&list);
|
||||
+ if (err)
|
||||
+ goto out;
|
||||
+ }
|
||||
}
|
||||
|
||||
err = ovl_lock_rename_workdir(workdir, upperdir);
|
6
sources
6
sources
|
@ -1,3 +1,3 @@
|
|||
d3fc8316d4d4d04b65cbc2d70799e763 linux-3.19.tar.xz
|
||||
15d8d2f97ce056488451a5bfb2944603 perf-man-3.19.tar.gz
|
||||
a450d6f46c2397dec767ac409111c144 patch-3.19.8.xz
|
||||
a86916bd12798220da9eb4a1eec3616d linux-4.0.tar.xz
|
||||
d125eecce68ab6fb5f1f23523c2c04b8 perf-man-4.0.tar.gz
|
||||
30de8c55237264deee4d4fc60eee78fd patch-4.0.4.xz
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
From: Hans de Goede <hdegoede@redhat.com>
|
||||
Date: Tue, 14 Apr 2015 11:15:24 +0200
|
||||
Date: Tue, 21 Apr 2015 12:01:32 +0200
|
||||
Subject: [PATCH] toshiba_acpi: Do not register vendor backlight when
|
||||
acpi_video bl is available
|
||||
|
||||
|
@ -22,14 +22,18 @@ acpi-video implementation while the toshiba vendor backlight interface does
|
|||
work, this commit adds an empty dmi_id table where such systems can be added,
|
||||
this is identical to how other drivers handle such systems.
|
||||
|
||||
BugLink: https://bugzilla.redhat.com/show_bug.cgi?id=1206036
|
||||
BugLink: https://bugzilla.kernel.org/show_bug.cgi?id=86521
|
||||
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
|
||||
Reviewed-and-tested-by: Azael Avalos <coproscefalo@gmail.com>
|
||||
Signed-off-by: Darren Hart <dvhart@linux.intel.com>
|
||||
---
|
||||
drivers/platform/x86/Kconfig | 1 +
|
||||
drivers/platform/x86/toshiba_acpi.c | 23 +++++++++++++++++++++++
|
||||
2 files changed, 24 insertions(+)
|
||||
|
||||
diff --git a/drivers/platform/x86/Kconfig b/drivers/platform/x86/Kconfig
|
||||
index 638e797037da..c3fd78820d07 100644
|
||||
index 97527614141b..f9f205cb1f11 100644
|
||||
--- a/drivers/platform/x86/Kconfig
|
||||
+++ b/drivers/platform/x86/Kconfig
|
||||
@@ -614,6 +614,7 @@ config ACPI_TOSHIBA
|
||||
|
@ -41,22 +45,21 @@ index 638e797037da..c3fd78820d07 100644
|
|||
select INPUT_SPARSEKMAP
|
||||
---help---
|
||||
diff --git a/drivers/platform/x86/toshiba_acpi.c b/drivers/platform/x86/toshiba_acpi.c
|
||||
index fc34a71866ed..1c5879ae3b53 100644
|
||||
index dbcb7a8915b8..2da716c3b648 100644
|
||||
--- a/drivers/platform/x86/toshiba_acpi.c
|
||||
+++ b/drivers/platform/x86/toshiba_acpi.c
|
||||
@@ -57,6 +57,7 @@
|
||||
#include <linux/i8042.h>
|
||||
@@ -51,6 +51,7 @@
|
||||
#include <linux/acpi.h>
|
||||
#include <linux/dmi.h>
|
||||
#include <linux/uaccess.h>
|
||||
+#include <acpi/video.h>
|
||||
#include <asm/uaccess.h>
|
||||
|
||||
MODULE_AUTHOR("John Belmonte");
|
||||
@@ -264,6 +265,14 @@ static const struct key_entry toshiba_acpi_alt_keymap[] = {
|
||||
{ KE_END, 0 },
|
||||
MODULE_DESCRIPTION("Toshiba Laptop ACPI Extras Driver");
|
||||
@@ -281,6 +282,14 @@ static const struct key_entry toshiba_acpi_alt_keymap[] = {
|
||||
};
|
||||
|
||||
+/*
|
||||
/*
|
||||
+ * List of models which have a broken acpi-video backlight interface and thus
|
||||
+ * need to use the toshiba (vendor) interface instead.
|
||||
+ */
|
||||
|
@ -64,10 +67,11 @@ index fc34a71866ed..1c5879ae3b53 100644
|
|||
+ {}
|
||||
+};
|
||||
+
|
||||
/* utility
|
||||
+/*
|
||||
* Utility
|
||||
*/
|
||||
|
||||
@@ -1798,6 +1807,20 @@ static int toshiba_acpi_setup_backlight(struct toshiba_acpi_dev *dev)
|
||||
@@ -2541,6 +2550,20 @@ static int toshiba_acpi_setup_backlight(struct toshiba_acpi_dev *dev)
|
||||
ret = get_tr_backlight_status(dev, &enabled);
|
||||
dev->tr_backlight_supported = !ret;
|
||||
|
||||
|
@ -88,6 +92,3 @@ index fc34a71866ed..1c5879ae3b53 100644
|
|||
memset(&props, 0, sizeof(props));
|
||||
props.type = BACKLIGHT_PLATFORM;
|
||||
props.max_brightness = HCI_LCD_BRIGHTNESS_LEVELS - 1;
|
||||
--
|
||||
2.1.0
|
||||
|
||||
|
|
|
@ -0,0 +1,40 @@
|
|||
From: Mark Langsdorf <mlangsdo@redhat.com>
|
||||
Date: Wed, 25 Mar 2015 14:12:51 -0400
|
||||
Subject: [PATCH] usb: make xhci platform driver use 64 bit or 32 bit DMA
|
||||
|
||||
The xhci platform driver needs to work on systems that either only
|
||||
support 64-bit DMA or only support 32-bit DMA. Attempt to set a
|
||||
coherent dma mask for 64-bit DMA, and attempt again with 32-bit
|
||||
DMA if that fails.
|
||||
|
||||
Signed-off-by: Mark Langsdorf <mlangsdo@redhat.com>
|
||||
---
|
||||
drivers/usb/host/xhci-plat.c | 15 +++++++--------
|
||||
1 file changed, 7 insertions(+), 8 deletions(-)
|
||||
|
||||
diff --git a/drivers/usb/host/xhci-plat.c b/drivers/usb/host/xhci-plat.c
|
||||
index 783e819139a7..4f93ef6942d8 100644
|
||||
--- a/drivers/usb/host/xhci-plat.c
|
||||
+++ b/drivers/usb/host/xhci-plat.c
|
||||
@@ -84,14 +84,13 @@ static int xhci_plat_probe(struct platform_device *pdev)
|
||||
if (irq < 0)
|
||||
return -ENODEV;
|
||||
|
||||
- /* Initialize dma_mask and coherent_dma_mask to 32-bits */
|
||||
- ret = dma_set_coherent_mask(&pdev->dev, DMA_BIT_MASK(32));
|
||||
- if (ret)
|
||||
- return ret;
|
||||
- if (!pdev->dev.dma_mask)
|
||||
- pdev->dev.dma_mask = &pdev->dev.coherent_dma_mask;
|
||||
- else
|
||||
- dma_set_mask(&pdev->dev, DMA_BIT_MASK(32));
|
||||
+ /* Try setting the coherent_dma_mask to 64 bits, then try 32 bits */
|
||||
+ ret = dma_set_mask_and_coherent(&pdev->dev, DMA_BIT_MASK(64));
|
||||
+ if (ret) {
|
||||
+ ret = dma_set_mask_and_coherent(&pdev->dev, DMA_BIT_MASK(32));
|
||||
+ if (ret)
|
||||
+ return ret;
|
||||
+ }
|
||||
|
||||
hcd = usb_create_hcd(driver, &pdev->dev, dev_name(&pdev->dev));
|
||||
if (!hcd)
|
|
@ -0,0 +1,35 @@
|
|||
From: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
|
||||
Date: Mon, 18 May 2015 10:53:48 +0300
|
||||
Subject: [PATCH] v4l: uvcvideo: Fix incorrect bandwidth with Chicony device
|
||||
04f2:b50b
|
||||
|
||||
The "TOSHIBA Web Camera - 5M" Chicony device (04f2:b50b) seems to
|
||||
compute the bandwidth on 16 bits and erroneously sign-extend it to
|
||||
32 bits, resulting in a huge bandwidth value. Detect and fix that
|
||||
condition by setting the 16 MSBs to 0 when they're all equal to 1.
|
||||
|
||||
Reported-by: Hans de Goede <hdegoede@redhat.com>
|
||||
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
|
||||
---
|
||||
drivers/media/usb/uvc/uvc_video.c | 8 ++++++++
|
||||
1 file changed, 8 insertions(+)
|
||||
|
||||
diff --git a/drivers/media/usb/uvc/uvc_video.c b/drivers/media/usb/uvc/uvc_video.c
|
||||
index 20ccc9d315dc..f839654ea436 100644
|
||||
--- a/drivers/media/usb/uvc/uvc_video.c
|
||||
+++ b/drivers/media/usb/uvc/uvc_video.c
|
||||
@@ -119,6 +119,14 @@ static void uvc_fixup_video_ctrl(struct uvc_streaming *stream,
|
||||
ctrl->dwMaxVideoFrameSize =
|
||||
frame->dwMaxVideoFrameBufferSize;
|
||||
|
||||
+ /* The "TOSHIBA Web Camera - 5M" Chicony device (04f2:b50b) seems to
|
||||
+ * compute the bandwidth on 16 bits and erroneously sign-extend it to
|
||||
+ * 32 bits, resulting in a huge bandwidth value. Detect and fix that
|
||||
+ * condition by setting the 16 MSBs to 0 when they're all equal to 1.
|
||||
+ */
|
||||
+ if ((ctrl->dwMaxPayloadTransferSize & 0xffff0000) == 0xffff0000)
|
||||
+ ctrl->dwMaxPayloadTransferSize &= ~0xffff0000;
|
||||
+
|
||||
if (!(format->flags & UVC_FMT_FLAG_COMPRESSED) &&
|
||||
stream->dev->quirks & UVC_QUIRK_FIX_BANDWIDTH &&
|
||||
stream->intf->num_altsetting > 1) {
|
|
@ -1,53 +0,0 @@
|
|||
From: Dan Carpenter <dan.carpenter@oracle.com>
|
||||
Date: Thu, 5 Feb 2015 10:37:33 +0300
|
||||
Subject: [PATCH] vhost/scsi: potential memory corruption
|
||||
|
||||
This code in vhost_scsi_make_tpg() is confusing because we limit "tpgt"
|
||||
to UINT_MAX but the data type of "tpg->tport_tpgt" and that is a u16.
|
||||
|
||||
I looked at the context and it turns out that in
|
||||
vhost_scsi_set_endpoint(), "tpg->tport_tpgt" is used as an offset into
|
||||
the vs_tpg[] array which has VHOST_SCSI_MAX_TARGET (256) elements so
|
||||
anything higher than 255 then it is invalid. I have made that the limit
|
||||
now.
|
||||
|
||||
In vhost_scsi_send_evt() we mask away values higher than 255, but now
|
||||
that the limit has changed, we don't need the mask.
|
||||
|
||||
Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
|
||||
Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
|
||||
---
|
||||
drivers/vhost/scsi.c | 6 +++---
|
||||
1 file changed, 3 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/drivers/vhost/scsi.c b/drivers/vhost/scsi.c
|
||||
index cb84f69f76ad..28cf2510d33b 100644
|
||||
--- a/drivers/vhost/scsi.c
|
||||
+++ b/drivers/vhost/scsi.c
|
||||
@@ -1251,7 +1251,7 @@ tcm_vhost_send_evt(struct vhost_scsi *vs,
|
||||
* lun[4-7] need to be zero according to virtio-scsi spec.
|
||||
*/
|
||||
evt->event.lun[0] = 0x01;
|
||||
- evt->event.lun[1] = tpg->tport_tpgt & 0xFF;
|
||||
+ evt->event.lun[1] = tpg->tport_tpgt;
|
||||
if (lun->unpacked_lun >= 256)
|
||||
evt->event.lun[2] = lun->unpacked_lun >> 8 | 0x40 ;
|
||||
evt->event.lun[3] = lun->unpacked_lun & 0xFF;
|
||||
@@ -2122,12 +2122,12 @@ tcm_vhost_make_tpg(struct se_wwn *wwn,
|
||||
struct tcm_vhost_tport, tport_wwn);
|
||||
|
||||
struct tcm_vhost_tpg *tpg;
|
||||
- unsigned long tpgt;
|
||||
+ u16 tpgt;
|
||||
int ret;
|
||||
|
||||
if (strstr(name, "tpgt_") != name)
|
||||
return ERR_PTR(-EINVAL);
|
||||
- if (kstrtoul(name + 5, 10, &tpgt) || tpgt > UINT_MAX)
|
||||
+ if (kstrtou16(name + 5, 10, &tpgt) || tpgt > VHOST_SCSI_MAX_TARGET)
|
||||
return ERR_PTR(-EINVAL);
|
||||
|
||||
tpg = kzalloc(sizeof(struct tcm_vhost_tpg), GFP_KERNEL);
|
||||
--
|
||||
2.1.0
|
||||
|
|
@ -44,7 +44,7 @@ index 4ddaf66ea35f..00b440307419 100644
|
|||
}
|
||||
regs->flags = (regs->flags & ~X86_EFLAGS_IOPL) | (level << 12);
|
||||
diff --git a/drivers/char/mem.c b/drivers/char/mem.c
|
||||
index 917403fe10da..cdf839f9defe 100644
|
||||
index 297110c12635..efe38c1bc234 100644
|
||||
--- a/drivers/char/mem.c
|
||||
+++ b/drivers/char/mem.c
|
||||
@@ -27,6 +27,7 @@
|
||||
|
@ -53,9 +53,9 @@ index 917403fe10da..cdf839f9defe 100644
|
|||
#include <linux/aio.h>
|
||||
+#include <linux/module.h>
|
||||
|
||||
#include <asm/uaccess.h>
|
||||
#include <linux/uaccess.h>
|
||||
|
||||
@@ -568,6 +569,9 @@ static ssize_t write_port(struct file *file, const char __user *buf,
|
||||
@@ -577,6 +578,9 @@ static ssize_t write_port(struct file *file, const char __user *buf,
|
||||
unsigned long i = *ppos;
|
||||
const char __user *tmp = buf;
|
||||
|
||||
|
@ -65,6 +65,3 @@ index 917403fe10da..cdf839f9defe 100644
|
|||
if (!access_ok(VERIFY_READ, buf, count))
|
||||
return -EFAULT;
|
||||
while (count-- > 0 && i < 65536) {
|
||||
--
|
||||
1.9.3
|
||||
|
||||
|
|
|
@ -1,36 +0,0 @@
|
|||
From 4423997d1e2f479f98b8f0c7ad733607f361ed76 Mon Sep 17 00:00:00 2001
|
||||
From: Quentin Casasnovas <quentin.casasnovas@oracle.com>
|
||||
Date: Tue, 3 Feb 2015 13:00:22 +0100
|
||||
Subject: [PATCH] x86/microcode/intel: Guard against stack overflow in the
|
||||
loader
|
||||
|
||||
mc_saved_tmp is a static array allocated on the stack, we need to make
|
||||
sure mc_saved_count stays within its bounds, otherwise we're overflowing
|
||||
the stack in _save_mc(). A specially crafted microcode header could lead
|
||||
to a kernel crash or potentially kernel execution.
|
||||
|
||||
Signed-off-by: Quentin Casasnovas <quentin.casasnovas@oracle.com>
|
||||
Cc: "H. Peter Anvin" <hpa@zytor.com>
|
||||
Cc: Fenghua Yu <fenghua.yu@intel.com>
|
||||
Link: http://lkml.kernel.org/r/1422964824-22056-1-git-send-email-quentin.casasnovas@oracle.com
|
||||
Signed-off-by: Borislav Petkov <bp@suse.de>
|
||||
---
|
||||
arch/x86/kernel/cpu/microcode/intel_early.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/arch/x86/kernel/cpu/microcode/intel_early.c b/arch/x86/kernel/cpu/microcode/intel_early.c
|
||||
index ec9df6f9cd47..5e109a31f62b 100644
|
||||
--- a/arch/x86/kernel/cpu/microcode/intel_early.c
|
||||
+++ b/arch/x86/kernel/cpu/microcode/intel_early.c
|
||||
@@ -321,7 +321,7 @@ get_matching_model_microcode(int cpu, unsigned long start,
|
||||
unsigned int mc_saved_count = mc_saved_data->mc_saved_count;
|
||||
int i;
|
||||
|
||||
- while (leftover) {
|
||||
+ while (leftover && mc_saved_count < ARRAY_SIZE(mc_saved_tmp)) {
|
||||
mc_header = (struct microcode_header_intel *)ucode_ptr;
|
||||
|
||||
mc_size = get_totalsize(mc_header);
|
||||
--
|
||||
2.1.0
|
||||
|
Loading…
Reference in New Issue