kernel/3.18: update to version 3.18.25
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de> SVN-Revision: 48225
This commit is contained in:
parent
cdb83aaf5f
commit
de18003b6e
18 changed files with 50 additions and 162 deletions
|
@ -2,12 +2,12 @@
|
||||||
|
|
||||||
LINUX_RELEASE?=1
|
LINUX_RELEASE?=1
|
||||||
|
|
||||||
LINUX_VERSION-3.18 = .23
|
LINUX_VERSION-3.18 = .25
|
||||||
LINUX_VERSION-4.1 = .15
|
LINUX_VERSION-4.1 = .15
|
||||||
LINUX_VERSION-4.3 = .3
|
LINUX_VERSION-4.3 = .3
|
||||||
LINUX_VERSION-4.4 =
|
LINUX_VERSION-4.4 =
|
||||||
|
|
||||||
LINUX_KERNEL_MD5SUM-3.18.23 = dc6d265ab38716be3676ac294b481ad8
|
LINUX_KERNEL_MD5SUM-3.18.25 = 929e74f2e29e1b41d69e45c04d712c9e
|
||||||
LINUX_KERNEL_MD5SUM-4.1.15 = b227333912b161c96ff3e30f5041e1c0
|
LINUX_KERNEL_MD5SUM-4.1.15 = b227333912b161c96ff3e30f5041e1c0
|
||||||
LINUX_KERNEL_MD5SUM-4.3.3 = f3068333fa524ff98914cf751d0b5710
|
LINUX_KERNEL_MD5SUM-4.3.3 = f3068333fa524ff98914cf751d0b5710
|
||||||
LINUX_KERNEL_MD5SUM-4.4 = 9a78fa2eb6c68ca5a40ed5af08142599
|
LINUX_KERNEL_MD5SUM-4.4 = 9a78fa2eb6c68ca5a40ed5af08142599
|
||||||
|
|
|
@ -24,7 +24,7 @@
|
||||||
static int __init laguna_model_setup(void)
|
static int __init laguna_model_setup(void)
|
||||||
{
|
{
|
||||||
u32 __iomem *mem;
|
u32 __iomem *mem;
|
||||||
@@ -1075,5 +1065,6 @@ MACHINE_START(GW2388, "Gateworks Corpora
|
@@ -1077,5 +1067,6 @@ MACHINE_START(GW2388, "Gateworks Corpora
|
||||||
.init_irq = cns3xxx_init_irq,
|
.init_irq = cns3xxx_init_irq,
|
||||||
.init_time = cns3xxx_timer_init,
|
.init_time = cns3xxx_timer_init,
|
||||||
.init_machine = laguna_init,
|
.init_machine = laguna_init,
|
||||||
|
|
|
@ -31,7 +31,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||||
|
|
||||||
--- a/drivers/net/ppp/pppoe.c
|
--- a/drivers/net/ppp/pppoe.c
|
||||||
+++ b/drivers/net/ppp/pppoe.c
|
+++ b/drivers/net/ppp/pppoe.c
|
||||||
@@ -455,6 +455,18 @@ out:
|
@@ -454,6 +454,18 @@ out:
|
||||||
return NET_RX_DROP;
|
return NET_RX_DROP;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -50,7 +50,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||||
/************************************************************************
|
/************************************************************************
|
||||||
*
|
*
|
||||||
* Receive a PPPoE Discovery frame.
|
* Receive a PPPoE Discovery frame.
|
||||||
@@ -500,7 +512,8 @@ static int pppoe_disc_rcv(struct sk_buff
|
@@ -499,7 +511,8 @@ static int pppoe_disc_rcv(struct sk_buff
|
||||||
}
|
}
|
||||||
|
|
||||||
bh_unlock_sock(sk);
|
bh_unlock_sock(sk);
|
||||||
|
@ -60,7 +60,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||||
}
|
}
|
||||||
|
|
||||||
abort:
|
abort:
|
||||||
@@ -613,6 +626,8 @@ static int pppoe_connect(struct socket *
|
@@ -612,6 +625,8 @@ static int pppoe_connect(struct socket *
|
||||||
|
|
||||||
lock_sock(sk);
|
lock_sock(sk);
|
||||||
|
|
||||||
|
|
|
@ -13,7 +13,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||||
|
|
||||||
--- a/drivers/net/ppp/pppoe.c
|
--- a/drivers/net/ppp/pppoe.c
|
||||||
+++ b/drivers/net/ppp/pppoe.c
|
+++ b/drivers/net/ppp/pppoe.c
|
||||||
@@ -380,6 +380,9 @@ static int pppoe_rcv_core(struct sock *s
|
@@ -379,6 +379,9 @@ static int pppoe_rcv_core(struct sock *s
|
||||||
* can't change.
|
* can't change.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
|
@ -15,7 +15,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||||
|
|
||||||
--- a/drivers/net/ppp/pppoe.c
|
--- a/drivers/net/ppp/pppoe.c
|
||||||
+++ b/drivers/net/ppp/pppoe.c
|
+++ b/drivers/net/ppp/pppoe.c
|
||||||
@@ -465,6 +465,10 @@ static void pppoe_unbind_sock_work(struc
|
@@ -464,6 +464,10 @@ static void pppoe_unbind_sock_work(struc
|
||||||
struct sock *sk = sk_pppox(po);
|
struct sock *sk = sk_pppox(po);
|
||||||
|
|
||||||
lock_sock(sk);
|
lock_sock(sk);
|
||||||
|
|
|
@ -1,68 +0,0 @@
|
||||||
From: Guillaume Nault <g.nault@alphalink.fr>
|
|
||||||
Date: Wed, 30 Sep 2015 11:45:33 +0200
|
|
||||||
Subject: [PATCH] ppp: don't override sk->sk_state in pppoe_flush_dev()
|
|
||||||
|
|
||||||
Since commit 2b018d57ff18 ("pppoe: drop PPPOX_ZOMBIEs in pppoe_release"),
|
|
||||||
pppoe_release() calls dev_put(po->pppoe_dev) if sk is in the
|
|
||||||
PPPOX_ZOMBIE state. But pppoe_flush_dev() can set sk->sk_state to
|
|
||||||
PPPOX_ZOMBIE _and_ reset po->pppoe_dev to NULL. This leads to the
|
|
||||||
following oops:
|
|
||||||
|
|
||||||
[ 570.140800] BUG: unable to handle kernel NULL pointer dereference at 00000000000004e0
|
|
||||||
[ 570.142931] IP: [<ffffffffa018c701>] pppoe_release+0x50/0x101 [pppoe]
|
|
||||||
[ 570.144601] PGD 3d119067 PUD 3dbc1067 PMD 0
|
|
||||||
[ 570.144601] Oops: 0000 [#1] SMP
|
|
||||||
[ 570.144601] Modules linked in: l2tp_ppp l2tp_netlink l2tp_core ip6_udp_tunnel udp_tunnel pppoe pppox ppp_generic slhc loop crc32c_intel ghash_clmulni_intel jitterentropy_rng sha256_generic hmac drbg ansi_cprng aesni_intel aes_x86_64 ablk_helper cryptd lrw gf128mul glue_helper acpi_cpufreq evdev serio_raw processor button ext4 crc16 mbcache jbd2 virtio_net virtio_blk virtio_pci virtio_ring virtio
|
|
||||||
[ 570.144601] CPU: 1 PID: 15738 Comm: ppp-apitest Not tainted 4.2.0 #1
|
|
||||||
[ 570.144601] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS Debian-1.8.2-1 04/01/2014
|
|
||||||
[ 570.144601] task: ffff88003d30d600 ti: ffff880036b60000 task.ti: ffff880036b60000
|
|
||||||
[ 570.144601] RIP: 0010:[<ffffffffa018c701>] [<ffffffffa018c701>] pppoe_release+0x50/0x101 [pppoe]
|
|
||||||
[ 570.144601] RSP: 0018:ffff880036b63e08 EFLAGS: 00010202
|
|
||||||
[ 570.144601] RAX: 0000000000000000 RBX: ffff880034340000 RCX: 0000000000000206
|
|
||||||
[ 570.144601] RDX: 0000000000000006 RSI: ffff88003d30dd20 RDI: ffff88003d30dd20
|
|
||||||
[ 570.144601] RBP: ffff880036b63e28 R08: 0000000000000001 R09: 0000000000000000
|
|
||||||
[ 570.144601] R10: 00007ffee9b50420 R11: ffff880034340078 R12: ffff8800387ec780
|
|
||||||
[ 570.144601] R13: ffff8800387ec7b0 R14: ffff88003e222aa0 R15: ffff8800387ec7b0
|
|
||||||
[ 570.144601] FS: 00007f5672f48700(0000) GS:ffff88003fc80000(0000) knlGS:0000000000000000
|
|
||||||
[ 570.144601] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
|
|
||||||
[ 570.144601] CR2: 00000000000004e0 CR3: 0000000037f7e000 CR4: 00000000000406a0
|
|
||||||
[ 570.144601] Stack:
|
|
||||||
[ 570.144601] ffffffffa018f240 ffff8800387ec780 ffffffffa018f240 ffff8800387ec7b0
|
|
||||||
[ 570.144601] ffff880036b63e48 ffffffff812caabe ffff880039e4e000 0000000000000008
|
|
||||||
[ 570.144601] ffff880036b63e58 ffffffff812cabad ffff880036b63ea8 ffffffff811347f5
|
|
||||||
[ 570.144601] Call Trace:
|
|
||||||
[ 570.144601] [<ffffffff812caabe>] sock_release+0x1a/0x75
|
|
||||||
[ 570.144601] [<ffffffff812cabad>] sock_close+0xd/0x11
|
|
||||||
[ 570.144601] [<ffffffff811347f5>] __fput+0xff/0x1a5
|
|
||||||
[ 570.144601] [<ffffffff811348cb>] ____fput+0x9/0xb
|
|
||||||
[ 570.144601] [<ffffffff81056682>] task_work_run+0x66/0x90
|
|
||||||
[ 570.144601] [<ffffffff8100189e>] prepare_exit_to_usermode+0x8c/0xa7
|
|
||||||
[ 570.144601] [<ffffffff81001a26>] syscall_return_slowpath+0x16d/0x19b
|
|
||||||
[ 570.144601] [<ffffffff813babb1>] int_ret_from_sys_call+0x25/0x9f
|
|
||||||
[ 570.144601] Code: 48 8b 83 c8 01 00 00 a8 01 74 12 48 89 df e8 8b 27 14 e1 b8 f7 ff ff ff e9 b7 00 00 00 8a 43 12 a8 0b 74 1c 48 8b 83 a8 04 00 00 <48> 8b 80 e0 04 00 00 65 ff 08 48 c7 83 a8 04 00 00 00 00 00 00
|
|
||||||
[ 570.144601] RIP [<ffffffffa018c701>] pppoe_release+0x50/0x101 [pppoe]
|
|
||||||
[ 570.144601] RSP <ffff880036b63e08>
|
|
||||||
[ 570.144601] CR2: 00000000000004e0
|
|
||||||
[ 570.200518] ---[ end trace 46956baf17349563 ]---
|
|
||||||
|
|
||||||
pppoe_flush_dev() has no reason to override sk->sk_state with
|
|
||||||
PPPOX_ZOMBIE. pppox_unbind_sock() already sets sk->sk_state to
|
|
||||||
PPPOX_DEAD, which is the correct state given that sk is unbound and
|
|
||||||
po->pppoe_dev is NULL.
|
|
||||||
|
|
||||||
Fixes: 2b018d57ff18 ("pppoe: drop PPPOX_ZOMBIEs in pppoe_release")
|
|
||||||
Tested-by: Oleksii Berezhniak <core@irc.lg.ua>
|
|
||||||
Signed-off-by: Guillaume Nault <g.nault@alphalink.fr>
|
|
||||||
Signed-off-by: David S. Miller <davem@davemloft.net>
|
|
||||||
---
|
|
||||||
|
|
||||||
--- a/drivers/net/ppp/pppoe.c
|
|
||||||
+++ b/drivers/net/ppp/pppoe.c
|
|
||||||
@@ -313,7 +313,6 @@ static void pppoe_flush_dev(struct net_d
|
|
||||||
if (po->pppoe_dev == dev &&
|
|
||||||
sk->sk_state & (PPPOX_CONNECTED | PPPOX_BOUND | PPPOX_ZOMBIE)) {
|
|
||||||
pppox_unbind_sock(sk);
|
|
||||||
- sk->sk_state = PPPOX_ZOMBIE;
|
|
||||||
sk->sk_state_change(sk);
|
|
||||||
po->pppoe_dev = NULL;
|
|
||||||
dev_put(dev);
|
|
|
@ -1,29 +0,0 @@
|
||||||
From: Guillaume Nault <g.nault@alphalink.fr>
|
|
||||||
Date: Thu, 22 Oct 2015 16:57:10 +0200
|
|
||||||
Subject: [PATCH] ppp: fix pppoe_dev deletion condition in pppoe_release()
|
|
||||||
|
|
||||||
We can't rely on PPPOX_ZOMBIE to decide whether to clear po->pppoe_dev.
|
|
||||||
PPPOX_ZOMBIE can be set by pppoe_disc_rcv() even when po->pppoe_dev is
|
|
||||||
NULL. So we have no guarantee that (sk->sk_state & PPPOX_ZOMBIE) implies
|
|
||||||
(po->pppoe_dev != NULL).
|
|
||||||
Since we're releasing a PPPoE socket, we want to release the pppoe_dev
|
|
||||||
if it exists and reset sk_state to PPPOX_DEAD, no matter the previous
|
|
||||||
value of sk_state. So we can just check for po->pppoe_dev and avoid any
|
|
||||||
assumption on sk->sk_state.
|
|
||||||
|
|
||||||
Fixes: 2b018d57ff18 ("pppoe: drop PPPOX_ZOMBIEs in pppoe_release")
|
|
||||||
Signed-off-by: Guillaume Nault <g.nault@alphalink.fr>
|
|
||||||
Signed-off-by: David S. Miller <davem@davemloft.net>
|
|
||||||
---
|
|
||||||
|
|
||||||
--- a/drivers/net/ppp/pppoe.c
|
|
||||||
+++ b/drivers/net/ppp/pppoe.c
|
|
||||||
@@ -589,7 +589,7 @@ static int pppoe_release(struct socket *
|
|
||||||
|
|
||||||
po = pppox_sk(sk);
|
|
||||||
|
|
||||||
- if (sk->sk_state & (PPPOX_CONNECTED | PPPOX_BOUND | PPPOX_ZOMBIE)) {
|
|
||||||
+ if (po->pppoe_dev) {
|
|
||||||
dev_put(po->pppoe_dev);
|
|
||||||
po->pppoe_dev = NULL;
|
|
||||||
}
|
|
|
@ -145,7 +145,7 @@ Origin: backport, https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.gi
|
||||||
#endif
|
#endif
|
||||||
--- a/kernel/module.c
|
--- a/kernel/module.c
|
||||||
+++ b/kernel/module.c
|
+++ b/kernel/module.c
|
||||||
@@ -1833,6 +1833,10 @@ void __weak module_arch_cleanup(struct m
|
@@ -1837,6 +1837,10 @@ void __weak module_arch_cleanup(struct m
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -156,7 +156,7 @@ Origin: backport, https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.gi
|
||||||
/* Free a module, remove from lists, etc. */
|
/* Free a module, remove from lists, etc. */
|
||||||
static void free_module(struct module *mod)
|
static void free_module(struct module *mod)
|
||||||
{
|
{
|
||||||
@@ -1865,6 +1869,7 @@ static void free_module(struct module *m
|
@@ -1869,6 +1873,7 @@ static void free_module(struct module *m
|
||||||
|
|
||||||
/* This may be NULL, but that's OK */
|
/* This may be NULL, but that's OK */
|
||||||
unset_module_init_ro_nx(mod);
|
unset_module_init_ro_nx(mod);
|
||||||
|
@ -164,7 +164,7 @@ Origin: backport, https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.gi
|
||||||
module_free(mod, mod->module_init);
|
module_free(mod, mod->module_init);
|
||||||
kfree(mod->args);
|
kfree(mod->args);
|
||||||
percpu_modfree(mod);
|
percpu_modfree(mod);
|
||||||
@@ -2954,6 +2959,7 @@ static struct module *layout_and_allocat
|
@@ -2958,6 +2963,7 @@ static struct module *layout_and_allocat
|
||||||
static void module_deallocate(struct module *mod, struct load_info *info)
|
static void module_deallocate(struct module *mod, struct load_info *info)
|
||||||
{
|
{
|
||||||
percpu_modfree(mod);
|
percpu_modfree(mod);
|
||||||
|
@ -172,7 +172,7 @@ Origin: backport, https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.gi
|
||||||
module_free(mod, mod->module_init);
|
module_free(mod, mod->module_init);
|
||||||
module_free(mod, mod->module_core);
|
module_free(mod, mod->module_core);
|
||||||
}
|
}
|
||||||
@@ -3077,6 +3083,7 @@ static int do_init_module(struct module
|
@@ -3081,6 +3087,7 @@ static int do_init_module(struct module
|
||||||
mod->strtab = mod->core_strtab;
|
mod->strtab = mod->core_strtab;
|
||||||
#endif
|
#endif
|
||||||
unset_module_init_ro_nx(mod);
|
unset_module_init_ro_nx(mod);
|
||||||
|
|
|
@ -20,7 +20,7 @@ Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
|
||||||
|
|
||||||
--- a/drivers/mtd/bcm47xxpart.c
|
--- a/drivers/mtd/bcm47xxpart.c
|
||||||
+++ b/drivers/mtd/bcm47xxpart.c
|
+++ b/drivers/mtd/bcm47xxpart.c
|
||||||
@@ -118,8 +118,8 @@ static int bcm47xxpart_parse(struct mtd_info *master,
|
@@ -118,8 +118,8 @@ static int bcm47xxpart_parse(struct mtd_
|
||||||
/* Parse block by block looking for magics */
|
/* Parse block by block looking for magics */
|
||||||
for (offset = 0; offset <= master->size - blocksize;
|
for (offset = 0; offset <= master->size - blocksize;
|
||||||
offset += blocksize) {
|
offset += blocksize) {
|
||||||
|
|
|
@ -14,11 +14,9 @@ Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
|
||||||
drivers/mtd/bcm47xxpart.c | 38 ++++++++++++++++++++++----------------
|
drivers/mtd/bcm47xxpart.c | 38 ++++++++++++++++++++++----------------
|
||||||
1 file changed, 22 insertions(+), 16 deletions(-)
|
1 file changed, 22 insertions(+), 16 deletions(-)
|
||||||
|
|
||||||
diff --git a/drivers/mtd/bcm47xxpart.c b/drivers/mtd/bcm47xxpart.c
|
|
||||||
index 4450e74..1ab3451 100644
|
|
||||||
--- a/drivers/mtd/bcm47xxpart.c
|
--- a/drivers/mtd/bcm47xxpart.c
|
||||||
+++ b/drivers/mtd/bcm47xxpart.c
|
+++ b/drivers/mtd/bcm47xxpart.c
|
||||||
@@ -66,11 +66,13 @@ static const char *bcm47xxpart_trx_data_part_name(struct mtd_info *master,
|
@@ -66,11 +66,13 @@ static const char *bcm47xxpart_trx_data_
|
||||||
{
|
{
|
||||||
uint32_t buf;
|
uint32_t buf;
|
||||||
size_t bytes_read;
|
size_t bytes_read;
|
||||||
|
@ -36,7 +34,7 @@ index 4450e74..1ab3451 100644
|
||||||
goto out_default;
|
goto out_default;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -95,6 +97,7 @@ static int bcm47xxpart_parse(struct mtd_info *master,
|
@@ -95,6 +97,7 @@ static int bcm47xxpart_parse(struct mtd_
|
||||||
int trx_part = -1;
|
int trx_part = -1;
|
||||||
int last_trx_part = -1;
|
int last_trx_part = -1;
|
||||||
int possible_nvram_sizes[] = { 0x8000, 0xF000, 0x10000, };
|
int possible_nvram_sizes[] = { 0x8000, 0xF000, 0x10000, };
|
||||||
|
@ -44,7 +42,7 @@ index 4450e74..1ab3451 100644
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Some really old flashes (like AT45DB*) had smaller erasesize-s, but
|
* Some really old flashes (like AT45DB*) had smaller erasesize-s, but
|
||||||
@@ -128,10 +131,11 @@ static int bcm47xxpart_parse(struct mtd_info *master,
|
@@ -128,10 +131,11 @@ static int bcm47xxpart_parse(struct mtd_
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Read beginning of the block */
|
/* Read beginning of the block */
|
||||||
|
@ -60,7 +58,7 @@ index 4450e74..1ab3451 100644
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -254,10 +258,11 @@ static int bcm47xxpart_parse(struct mtd_info *master,
|
@@ -254,10 +258,11 @@ static int bcm47xxpart_parse(struct mtd_
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Read middle of the block */
|
/* Read middle of the block */
|
||||||
|
@ -76,7 +74,7 @@ index 4450e74..1ab3451 100644
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -277,10 +282,11 @@ static int bcm47xxpart_parse(struct mtd_info *master,
|
@@ -277,10 +282,11 @@ static int bcm47xxpart_parse(struct mtd_
|
||||||
}
|
}
|
||||||
|
|
||||||
offset = master->size - possible_nvram_sizes[i];
|
offset = master->size - possible_nvram_sizes[i];
|
||||||
|
@ -92,6 +90,3 @@ index 4450e74..1ab3451 100644
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
--
|
|
||||||
1.8.4.5
|
|
||||||
|
|
||||||
|
|
|
@ -50,8 +50,6 @@ Signed-off-by: Petr Štetiar <ynezz@true.cz>
|
||||||
drivers/usb/serial/qcserial.c | 39 +++++++++++++++++++++++++++++++++++++++
|
drivers/usb/serial/qcserial.c | 39 +++++++++++++++++++++++++++++++++++++++
|
||||||
1 file changed, 39 insertions(+)
|
1 file changed, 39 insertions(+)
|
||||||
|
|
||||||
diff --git a/drivers/usb/serial/qcserial.c b/drivers/usb/serial/qcserial.c
|
|
||||||
index ebcec8c..d462132 100644
|
|
||||||
--- a/drivers/usb/serial/qcserial.c
|
--- a/drivers/usb/serial/qcserial.c
|
||||||
+++ b/drivers/usb/serial/qcserial.c
|
+++ b/drivers/usb/serial/qcserial.c
|
||||||
@@ -22,6 +22,8 @@
|
@@ -22,6 +22,8 @@
|
||||||
|
@ -63,7 +61,7 @@ index ebcec8c..d462132 100644
|
||||||
/* standard device layouts supported by this driver */
|
/* standard device layouts supported by this driver */
|
||||||
enum qcserial_layouts {
|
enum qcserial_layouts {
|
||||||
QCSERIAL_G2K = 0, /* Gobi 2000 */
|
QCSERIAL_G2K = 0, /* Gobi 2000 */
|
||||||
@@ -167,6 +169,38 @@ static const struct usb_device_id id_table[] = {
|
@@ -166,6 +168,38 @@ static const struct usb_device_id id_tab
|
||||||
};
|
};
|
||||||
MODULE_DEVICE_TABLE(usb, id_table);
|
MODULE_DEVICE_TABLE(usb, id_table);
|
||||||
|
|
||||||
|
@ -102,7 +100,7 @@ index ebcec8c..d462132 100644
|
||||||
static int qcprobe(struct usb_serial *serial, const struct usb_device_id *id)
|
static int qcprobe(struct usb_serial *serial, const struct usb_device_id *id)
|
||||||
{
|
{
|
||||||
struct usb_host_interface *intf = serial->interface->cur_altsetting;
|
struct usb_host_interface *intf = serial->interface->cur_altsetting;
|
||||||
@@ -235,6 +269,11 @@ static int qcprobe(struct usb_serial *serial, const struct usb_device_id *id)
|
@@ -234,6 +268,11 @@ static int qcprobe(struct usb_serial *se
|
||||||
altsetting = -1;
|
altsetting = -1;
|
||||||
break;
|
break;
|
||||||
case QCSERIAL_G2K:
|
case QCSERIAL_G2K:
|
||||||
|
@ -114,6 +112,3 @@ index ebcec8c..d462132 100644
|
||||||
/*
|
/*
|
||||||
* Gobi 2K+ USB layout:
|
* Gobi 2K+ USB layout:
|
||||||
* 0: QMI/net
|
* 0: QMI/net
|
||||||
--
|
|
||||||
1.7.9.5
|
|
||||||
|
|
||||||
|
|
|
@ -46,11 +46,9 @@ Signed-off-by: Petr Štetiar <ynezz@true.cz>
|
||||||
drivers/net/usb/qmi_wwan.c | 21 +++++++++++++++++++++
|
drivers/net/usb/qmi_wwan.c | 21 +++++++++++++++++++++
|
||||||
1 file changed, 21 insertions(+)
|
1 file changed, 21 insertions(+)
|
||||||
|
|
||||||
diff --git a/drivers/net/usb/qmi_wwan.c b/drivers/net/usb/qmi_wwan.c
|
|
||||||
index 2a7c1be..b81a32c 100644
|
|
||||||
--- a/drivers/net/usb/qmi_wwan.c
|
--- a/drivers/net/usb/qmi_wwan.c
|
||||||
+++ b/drivers/net/usb/qmi_wwan.c
|
+++ b/drivers/net/usb/qmi_wwan.c
|
||||||
@@ -822,6 +822,7 @@ static const struct usb_device_id products[] = {
|
@@ -819,6 +819,7 @@ static const struct usb_device_id produc
|
||||||
{QMI_GOBI_DEVICE(0x05c6, 0x9245)}, /* Samsung Gobi 2000 Modem device (VL176) */
|
{QMI_GOBI_DEVICE(0x05c6, 0x9245)}, /* Samsung Gobi 2000 Modem device (VL176) */
|
||||||
{QMI_GOBI_DEVICE(0x03f0, 0x251d)}, /* HP Gobi 2000 Modem device (VP412) */
|
{QMI_GOBI_DEVICE(0x03f0, 0x251d)}, /* HP Gobi 2000 Modem device (VP412) */
|
||||||
{QMI_GOBI_DEVICE(0x05c6, 0x9215)}, /* Acer Gobi 2000 Modem device (VP413) */
|
{QMI_GOBI_DEVICE(0x05c6, 0x9215)}, /* Acer Gobi 2000 Modem device (VP413) */
|
||||||
|
@ -58,7 +56,7 @@ index 2a7c1be..b81a32c 100644
|
||||||
{QMI_GOBI_DEVICE(0x05c6, 0x9265)}, /* Asus Gobi 2000 Modem device (VR305) */
|
{QMI_GOBI_DEVICE(0x05c6, 0x9265)}, /* Asus Gobi 2000 Modem device (VR305) */
|
||||||
{QMI_GOBI_DEVICE(0x05c6, 0x9235)}, /* Top Global Gobi 2000 Modem device (VR306) */
|
{QMI_GOBI_DEVICE(0x05c6, 0x9235)}, /* Top Global Gobi 2000 Modem device (VR306) */
|
||||||
{QMI_GOBI_DEVICE(0x05c6, 0x9275)}, /* iRex Technologies Gobi 2000 Modem device (VR307) */
|
{QMI_GOBI_DEVICE(0x05c6, 0x9275)}, /* iRex Technologies Gobi 2000 Modem device (VR307) */
|
||||||
@@ -853,10 +854,24 @@ static const struct usb_device_id products[] = {
|
@@ -850,10 +851,24 @@ static const struct usb_device_id produc
|
||||||
};
|
};
|
||||||
MODULE_DEVICE_TABLE(usb, products);
|
MODULE_DEVICE_TABLE(usb, products);
|
||||||
|
|
||||||
|
@ -83,7 +81,7 @@ index 2a7c1be..b81a32c 100644
|
||||||
|
|
||||||
/* Workaround to enable dynamic IDs. This disables usbnet
|
/* Workaround to enable dynamic IDs. This disables usbnet
|
||||||
* blacklisting functionality. Which, if required, can be
|
* blacklisting functionality. Which, if required, can be
|
||||||
@@ -868,6 +883,12 @@ static int qmi_wwan_probe(struct usb_interface *intf,
|
@@ -865,6 +880,12 @@ static int qmi_wwan_probe(struct usb_int
|
||||||
id->driver_info = (unsigned long)&qmi_wwan_info;
|
id->driver_info = (unsigned long)&qmi_wwan_info;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -96,6 +94,3 @@ index 2a7c1be..b81a32c 100644
|
||||||
return usbnet_probe(intf, id);
|
return usbnet_probe(intf, id);
|
||||||
}
|
}
|
||||||
|
|
||||||
--
|
|
||||||
1.7.9.5
|
|
||||||
|
|
||||||
|
|
|
@ -109,7 +109,7 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org>
|
||||||
config INIT_ALL_POSSIBLE
|
config INIT_ALL_POSSIBLE
|
||||||
--- a/kernel/module.c
|
--- a/kernel/module.c
|
||||||
+++ b/kernel/module.c
|
+++ b/kernel/module.c
|
||||||
@@ -2670,6 +2670,7 @@ static struct module *setup_load_info(st
|
@@ -2674,6 +2674,7 @@ static struct module *setup_load_info(st
|
||||||
|
|
||||||
static int check_modinfo(struct module *mod, struct load_info *info, int flags)
|
static int check_modinfo(struct module *mod, struct load_info *info, int flags)
|
||||||
{
|
{
|
||||||
|
@ -117,7 +117,7 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org>
|
||||||
const char *modmagic = get_modinfo(info, "vermagic");
|
const char *modmagic = get_modinfo(info, "vermagic");
|
||||||
int err;
|
int err;
|
||||||
|
|
||||||
@@ -2695,6 +2696,7 @@ static int check_modinfo(struct module *
|
@@ -2699,6 +2700,7 @@ static int check_modinfo(struct module *
|
||||||
pr_warn("%s: module is from the staging directory, the quality "
|
pr_warn("%s: module is from the staging directory, the quality "
|
||||||
"is unknown, you have been warned.\n", mod->name);
|
"is unknown, you have been warned.\n", mod->name);
|
||||||
}
|
}
|
||||||
|
|
|
@ -13,7 +13,7 @@ Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
|
||||||
|
|
||||||
--- a/drivers/mtd/bcm47xxpart.c
|
--- a/drivers/mtd/bcm47xxpart.c
|
||||||
+++ b/drivers/mtd/bcm47xxpart.c
|
+++ b/drivers/mtd/bcm47xxpart.c
|
||||||
@@ -61,6 +61,34 @@ static void bcm47xxpart_add_part(struct mtd_partition *part, const char *name,
|
@@ -61,6 +61,34 @@ static void bcm47xxpart_add_part(struct
|
||||||
part->mask_flags = mask_flags;
|
part->mask_flags = mask_flags;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -48,7 +48,7 @@ Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
|
||||||
static const char *bcm47xxpart_trx_data_part_name(struct mtd_info *master,
|
static const char *bcm47xxpart_trx_data_part_name(struct mtd_info *master,
|
||||||
size_t offset)
|
size_t offset)
|
||||||
{
|
{
|
||||||
@@ -182,6 +210,8 @@ static int bcm47xxpart_parse(struct mtd_info *master,
|
@@ -182,6 +210,8 @@ static int bcm47xxpart_parse(struct mtd_
|
||||||
|
|
||||||
/* TRX */
|
/* TRX */
|
||||||
if (buf[0x000 / 4] == TRX_MAGIC) {
|
if (buf[0x000 / 4] == TRX_MAGIC) {
|
||||||
|
@ -57,7 +57,7 @@ Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
|
||||||
if (BCM47XXPART_MAX_PARTS - curr_part < 4) {
|
if (BCM47XXPART_MAX_PARTS - curr_part < 4) {
|
||||||
pr_warn("Not enough partitions left to register trx, scanning stopped!\n");
|
pr_warn("Not enough partitions left to register trx, scanning stopped!\n");
|
||||||
break;
|
break;
|
||||||
@@ -196,18 +226,18 @@ static int bcm47xxpart_parse(struct mtd_info *master,
|
@@ -196,18 +226,18 @@ static int bcm47xxpart_parse(struct mtd_
|
||||||
i = 0;
|
i = 0;
|
||||||
/* We have LZMA loader if offset[2] points to sth */
|
/* We have LZMA loader if offset[2] points to sth */
|
||||||
if (trx->offset[2]) {
|
if (trx->offset[2]) {
|
||||||
|
@ -82,7 +82,7 @@ Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
|
||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -219,11 +249,11 @@ static int bcm47xxpart_parse(struct mtd_info *master,
|
@@ -219,11 +249,11 @@ static int bcm47xxpart_parse(struct mtd_
|
||||||
if (trx->offset[i]) {
|
if (trx->offset[i]) {
|
||||||
const char *name;
|
const char *name;
|
||||||
|
|
||||||
|
|
|
@ -26,7 +26,7 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org>
|
||||||
#define PACKET_FANOUT_LB 1
|
#define PACKET_FANOUT_LB 1
|
||||||
--- a/net/packet/af_packet.c
|
--- a/net/packet/af_packet.c
|
||||||
+++ b/net/packet/af_packet.c
|
+++ b/net/packet/af_packet.c
|
||||||
@@ -1516,6 +1516,7 @@ static int packet_rcv_spkt(struct sk_buf
|
@@ -1530,6 +1530,7 @@ static int packet_rcv_spkt(struct sk_buf
|
||||||
{
|
{
|
||||||
struct sock *sk;
|
struct sock *sk;
|
||||||
struct sockaddr_pkt *spkt;
|
struct sockaddr_pkt *spkt;
|
||||||
|
@ -34,7 +34,7 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org>
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* When we registered the protocol we saved the socket in the data
|
* When we registered the protocol we saved the socket in the data
|
||||||
@@ -1523,6 +1524,7 @@ static int packet_rcv_spkt(struct sk_buf
|
@@ -1537,6 +1538,7 @@ static int packet_rcv_spkt(struct sk_buf
|
||||||
*/
|
*/
|
||||||
|
|
||||||
sk = pt->af_packet_priv;
|
sk = pt->af_packet_priv;
|
||||||
|
@ -42,7 +42,7 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org>
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Yank back the headers [hope the device set this
|
* Yank back the headers [hope the device set this
|
||||||
@@ -1535,7 +1537,7 @@ static int packet_rcv_spkt(struct sk_buf
|
@@ -1549,7 +1551,7 @@ static int packet_rcv_spkt(struct sk_buf
|
||||||
* so that this procedure is noop.
|
* so that this procedure is noop.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
@ -51,7 +51,7 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org>
|
||||||
goto out;
|
goto out;
|
||||||
|
|
||||||
if (!net_eq(dev_net(dev), sock_net(sk)))
|
if (!net_eq(dev_net(dev), sock_net(sk)))
|
||||||
@@ -1742,12 +1744,12 @@ static int packet_rcv(struct sk_buff *sk
|
@@ -1748,12 +1750,12 @@ static int packet_rcv(struct sk_buff *sk
|
||||||
int skb_len = skb->len;
|
int skb_len = skb->len;
|
||||||
unsigned int snaplen, res;
|
unsigned int snaplen, res;
|
||||||
|
|
||||||
|
@ -67,7 +67,7 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org>
|
||||||
if (!net_eq(dev_net(dev), sock_net(sk)))
|
if (!net_eq(dev_net(dev), sock_net(sk)))
|
||||||
goto drop;
|
goto drop;
|
||||||
|
|
||||||
@@ -1867,12 +1869,12 @@ static int tpacket_rcv(struct sk_buff *s
|
@@ -1873,12 +1875,12 @@ static int tpacket_rcv(struct sk_buff *s
|
||||||
BUILD_BUG_ON(TPACKET_ALIGN(sizeof(*h.h2)) != 32);
|
BUILD_BUG_ON(TPACKET_ALIGN(sizeof(*h.h2)) != 32);
|
||||||
BUILD_BUG_ON(TPACKET_ALIGN(sizeof(*h.h3)) != 48);
|
BUILD_BUG_ON(TPACKET_ALIGN(sizeof(*h.h3)) != 48);
|
||||||
|
|
||||||
|
@ -83,7 +83,7 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org>
|
||||||
if (!net_eq(dev_net(dev), sock_net(sk)))
|
if (!net_eq(dev_net(dev), sock_net(sk)))
|
||||||
goto drop;
|
goto drop;
|
||||||
|
|
||||||
@@ -2807,6 +2809,7 @@ static int packet_create(struct net *net
|
@@ -2828,6 +2830,7 @@ static int packet_create(struct net *net
|
||||||
spin_lock_init(&po->bind_lock);
|
spin_lock_init(&po->bind_lock);
|
||||||
mutex_init(&po->pg_vec_lock);
|
mutex_init(&po->pg_vec_lock);
|
||||||
po->prot_hook.func = packet_rcv;
|
po->prot_hook.func = packet_rcv;
|
||||||
|
@ -91,7 +91,7 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org>
|
||||||
|
|
||||||
if (sock->type == SOCK_PACKET)
|
if (sock->type == SOCK_PACKET)
|
||||||
po->prot_hook.func = packet_rcv_spkt;
|
po->prot_hook.func = packet_rcv_spkt;
|
||||||
@@ -3387,6 +3390,16 @@ packet_setsockopt(struct socket *sock, i
|
@@ -3408,6 +3411,16 @@ packet_setsockopt(struct socket *sock, i
|
||||||
po->xmit = val ? packet_direct_xmit : dev_queue_xmit;
|
po->xmit = val ? packet_direct_xmit : dev_queue_xmit;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -108,7 +108,7 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org>
|
||||||
default:
|
default:
|
||||||
return -ENOPROTOOPT;
|
return -ENOPROTOOPT;
|
||||||
}
|
}
|
||||||
@@ -3438,6 +3451,13 @@ static int packet_getsockopt(struct sock
|
@@ -3459,6 +3472,13 @@ static int packet_getsockopt(struct sock
|
||||||
case PACKET_VNET_HDR:
|
case PACKET_VNET_HDR:
|
||||||
val = po->has_vnet_hdr;
|
val = po->has_vnet_hdr;
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -84,7 +84,7 @@
|
||||||
/* save relevant PHY registers to private copy */
|
/* save relevant PHY registers to private copy */
|
||||||
static void at803x_context_save(struct phy_device *phydev,
|
static void at803x_context_save(struct phy_device *phydev,
|
||||||
struct at803x_context *context)
|
struct at803x_context *context)
|
||||||
@@ -209,8 +257,16 @@ static int at803x_probe(struct phy_devic
|
@@ -208,8 +256,16 @@ static int at803x_probe(struct phy_devic
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -101,7 +101,7 @@
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
ret = genphy_config_init(phydev);
|
ret = genphy_config_init(phydev);
|
||||||
@@ -228,6 +284,26 @@ static int at803x_config_init(struct phy
|
@@ -227,6 +283,26 @@ static int at803x_config_init(struct phy
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -128,7 +128,7 @@
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -259,6 +335,8 @@ static int at803x_config_intr(struct phy
|
@@ -258,6 +334,8 @@ static int at803x_config_intr(struct phy
|
||||||
static void at803x_link_change_notify(struct phy_device *phydev)
|
static void at803x_link_change_notify(struct phy_device *phydev)
|
||||||
{
|
{
|
||||||
struct at803x_priv *priv = phydev->priv;
|
struct at803x_priv *priv = phydev->priv;
|
||||||
|
@ -137,7 +137,7 @@
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Conduct a hardware reset for AT8030 every time a link loss is
|
* Conduct a hardware reset for AT8030 every time a link loss is
|
||||||
@@ -289,6 +367,26 @@ static void at803x_link_change_notify(st
|
@@ -288,6 +366,26 @@ static void at803x_link_change_notify(st
|
||||||
priv->phy_reset = false;
|
priv->phy_reset = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -24,7 +24,7 @@
|
||||||
|
|
||||||
MODULE_DESCRIPTION("Atheros 803x PHY driver");
|
MODULE_DESCRIPTION("Atheros 803x PHY driver");
|
||||||
MODULE_AUTHOR("Matus Ujhelyi");
|
MODULE_AUTHOR("Matus Ujhelyi");
|
||||||
@@ -268,6 +272,27 @@ static int at803x_config_init(struct phy
|
@@ -267,6 +271,27 @@ static int at803x_config_init(struct phy
|
||||||
{
|
{
|
||||||
struct at803x_platform_data *pdata;
|
struct at803x_platform_data *pdata;
|
||||||
int ret;
|
int ret;
|
||||||
|
@ -52,7 +52,7 @@
|
||||||
|
|
||||||
ret = genphy_config_init(phydev);
|
ret = genphy_config_init(phydev);
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
@@ -394,7 +419,7 @@ static struct phy_driver at803x_driver[]
|
@@ -393,7 +418,7 @@ static struct phy_driver at803x_driver[]
|
||||||
/* ATHEROS 8035 */
|
/* ATHEROS 8035 */
|
||||||
.phy_id = ATH8035_PHY_ID,
|
.phy_id = ATH8035_PHY_ID,
|
||||||
.name = "Atheros 8035 ethernet",
|
.name = "Atheros 8035 ethernet",
|
||||||
|
@ -61,7 +61,7 @@
|
||||||
.probe = at803x_probe,
|
.probe = at803x_probe,
|
||||||
.config_init = at803x_config_init,
|
.config_init = at803x_config_init,
|
||||||
.link_change_notify = at803x_link_change_notify,
|
.link_change_notify = at803x_link_change_notify,
|
||||||
@@ -413,7 +438,7 @@ static struct phy_driver at803x_driver[]
|
@@ -412,7 +437,7 @@ static struct phy_driver at803x_driver[]
|
||||||
/* ATHEROS 8030 */
|
/* ATHEROS 8030 */
|
||||||
.phy_id = ATH8030_PHY_ID,
|
.phy_id = ATH8030_PHY_ID,
|
||||||
.name = "Atheros 8030 ethernet",
|
.name = "Atheros 8030 ethernet",
|
||||||
|
@ -70,7 +70,7 @@
|
||||||
.probe = at803x_probe,
|
.probe = at803x_probe,
|
||||||
.config_init = at803x_config_init,
|
.config_init = at803x_config_init,
|
||||||
.link_change_notify = at803x_link_change_notify,
|
.link_change_notify = at803x_link_change_notify,
|
||||||
@@ -431,8 +456,8 @@ static struct phy_driver at803x_driver[]
|
@@ -430,8 +455,8 @@ static struct phy_driver at803x_driver[]
|
||||||
}, {
|
}, {
|
||||||
/* ATHEROS 8031 */
|
/* ATHEROS 8031 */
|
||||||
.phy_id = ATH8031_PHY_ID,
|
.phy_id = ATH8031_PHY_ID,
|
||||||
|
@ -81,8 +81,8 @@
|
||||||
.probe = at803x_probe,
|
.probe = at803x_probe,
|
||||||
.config_init = at803x_config_init,
|
.config_init = at803x_config_init,
|
||||||
.link_change_notify = at803x_link_change_notify,
|
.link_change_notify = at803x_link_change_notify,
|
||||||
@@ -454,9 +479,9 @@ static struct phy_driver at803x_driver[]
|
@@ -465,9 +490,9 @@ module_init(atheros_init);
|
||||||
module_phy_driver(at803x_driver);
|
module_exit(atheros_exit);
|
||||||
|
|
||||||
static struct mdio_device_id __maybe_unused atheros_tbl[] = {
|
static struct mdio_device_id __maybe_unused atheros_tbl[] = {
|
||||||
- { ATH8030_PHY_ID, 0xffffffef },
|
- { ATH8030_PHY_ID, 0xffffffef },
|
||||||
|
|
|
@ -23,7 +23,7 @@
|
||||||
/* The Mellanox Tavor device gives false positive parity errors
|
/* The Mellanox Tavor device gives false positive parity errors
|
||||||
* Mark this device with a broken_parity_status, to allow
|
* Mark this device with a broken_parity_status, to allow
|
||||||
* PCI scanning code to "skip" this now blacklisted device.
|
* PCI scanning code to "skip" this now blacklisted device.
|
||||||
@@ -2908,6 +2909,7 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_I
|
@@ -2917,6 +2918,7 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_I
|
||||||
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x65f9, quirk_intel_mc_errata);
|
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x65f9, quirk_intel_mc_errata);
|
||||||
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x65fa, quirk_intel_mc_errata);
|
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x65fa, quirk_intel_mc_errata);
|
||||||
|
|
||||||
|
@ -31,7 +31,7 @@
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Ivytown NTB BAR sizes are misreported by the hardware due to an erratum. To
|
* Ivytown NTB BAR sizes are misreported by the hardware due to an erratum. To
|
||||||
@@ -2964,6 +2966,8 @@ static void fixup_debug_report(struct pc
|
@@ -2973,6 +2975,8 @@ static void fixup_debug_report(struct pc
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -40,7 +40,7 @@
|
||||||
/*
|
/*
|
||||||
* Some BIOS implementations leave the Intel GPU interrupts enabled,
|
* Some BIOS implementations leave the Intel GPU interrupts enabled,
|
||||||
* even though no one is handling them (f.e. i915 driver is never loaded).
|
* even though no one is handling them (f.e. i915 driver is never loaded).
|
||||||
@@ -2998,6 +3002,8 @@ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_IN
|
@@ -3007,6 +3011,8 @@ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_IN
|
||||||
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x010a, disable_igfx_irq);
|
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x010a, disable_igfx_irq);
|
||||||
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x0152, disable_igfx_irq);
|
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x0152, disable_igfx_irq);
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue