patches for 4.7.0
This commit is contained in:
@@ -47,10 +47,10 @@ diff -Nurp linux-4.2.2/arch/mips/Kconfig linux-4.2.2-3rd/arch/mips/Kconfig
|
|||||||
diff -Nurp linux-4.2.2/arch/powerpc/Kconfig linux-4.2.2-3rd/arch/powerpc/Kconfig
|
diff -Nurp linux-4.2.2/arch/powerpc/Kconfig linux-4.2.2-3rd/arch/powerpc/Kconfig
|
||||||
--- linux-4.2.2/arch/powerpc/Kconfig 2015-08-30 21:34:09.000000000 +0300
|
--- linux-4.2.2/arch/powerpc/Kconfig 2015-08-30 21:34:09.000000000 +0300
|
||||||
+++ linux-4.2.2-3rd/arch/powerpc/Kconfig 2015-09-29 23:02:44.025347276 +0300
|
+++ linux-4.2.2-3rd/arch/powerpc/Kconfig 2015-09-29 23:02:44.025347276 +0300
|
||||||
@@ -1092,3 +1092,5 @@ config PPC_LIB_RHEAP
|
@@ -1112,3 +1112,5 @@ config PPC_LIB_RHEAP
|
||||||
bool
|
|
||||||
|
|
||||||
source "arch/powerpc/kvm/Kconfig"
|
source "arch/powerpc/kvm/Kconfig"
|
||||||
|
|
||||||
|
source "kernel/livepatch/Kconfig"
|
||||||
+
|
+
|
||||||
+source "3rdparty/Kconfig"
|
+source "3rdparty/Kconfig"
|
||||||
diff -Nurp linux-4.2.2/arch/sparc/Kconfig linux-4.2.2-3rd/arch/sparc/Kconfig
|
diff -Nurp linux-4.2.2/arch/sparc/Kconfig linux-4.2.2-3rd/arch/sparc/Kconfig
|
||||||
|
|||||||
@@ -0,0 +1,20 @@
|
|||||||
|
|
||||||
|
Add supprto for 4.7 series kernels.
|
||||||
|
|
||||||
|
Signed-off-by: Thomas Backlund <tmb@mageia.org>
|
||||||
|
|
||||||
|
diff -urp linux/3rdparty/ndiswrapper.orig/wrapndis.c linux/3rdparty/ndiswrapper/wrapndis.c
|
||||||
|
--- linux/3rdparty/ndiswrapper.orig/wrapndis.c 2016-07-04 20:00:13.000000000 +0300
|
||||||
|
+++ linux/3rdparty/ndiswrapper/wrapndis.c 2016-07-04 20:23:29.454819702 +0300
|
||||||
|
@@ -704,7 +704,11 @@ static void tx_worker(struct work_struct
|
||||||
|
n = wnd->max_tx_packets;
|
||||||
|
n = mp_tx_packets(wnd, wnd->tx_ring_start, n);
|
||||||
|
if (n) {
|
||||||
|
+#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 7, 0)
|
||||||
|
wnd->net_dev->trans_start = jiffies;
|
||||||
|
+#else
|
||||||
|
+ netif_trans_update(wnd->net_dev);
|
||||||
|
+#endif
|
||||||
|
wnd->tx_ring_start =
|
||||||
|
(wnd->tx_ring_start + n) % TX_RING_SIZE;
|
||||||
|
wnd->is_tx_ring_full = 0;
|
||||||
@@ -0,0 +1,178 @@
|
|||||||
|
|
||||||
|
Fix building with kernel-4.7 series.
|
||||||
|
|
||||||
|
Signed-off-by: Thomas Backlund <tmb@mageia.org>
|
||||||
|
|
||||||
|
3rdparty/rtl8723bs/os_dep/ioctl_cfg80211.c | 32 ++++++++++++++---------------
|
||||||
|
3rdparty/rtl8723bs/os_dep/wifi_regd.c | 6 ++---
|
||||||
|
2 files changed, 19 insertions(+), 19 deletions(-)
|
||||||
|
|
||||||
|
diff -urp linux/3rdparty/rtl8723bs.orig/os_dep/ioctl_cfg80211.c linux/3rdparty/rtl8723bs/os_dep/ioctl_cfg80211.c
|
||||||
|
--- linux/3rdparty/rtl8723bs.orig/os_dep/ioctl_cfg80211.c 2016-07-04 20:00:13.000000000 +0300
|
||||||
|
+++ linux/3rdparty/rtl8723bs/os_dep/ioctl_cfg80211.c 2016-07-04 20:37:45.054379270 +0300
|
||||||
|
@@ -44,7 +44,7 @@ static const u32 rtw_cipher_suites[] = {
|
||||||
|
}
|
||||||
|
|
||||||
|
#define CHAN2G(_channel, _freq, _flags) { \
|
||||||
|
- .band = IEEE80211_BAND_2GHZ, \
|
||||||
|
+ .band = NL80211_BAND_2GHZ, \
|
||||||
|
.center_freq = (_freq), \
|
||||||
|
.hw_value = (_channel), \
|
||||||
|
.flags = (_flags), \
|
||||||
|
@@ -120,13 +120,13 @@ static void rtw_2g_rates_init(struct iee
|
||||||
|
}
|
||||||
|
|
||||||
|
static struct ieee80211_supported_band *rtw_spt_band_alloc(
|
||||||
|
- enum ieee80211_band band
|
||||||
|
+ enum nl80211_band band
|
||||||
|
)
|
||||||
|
{
|
||||||
|
struct ieee80211_supported_band *spt_band = NULL;
|
||||||
|
int n_channels, n_bitrates;
|
||||||
|
|
||||||
|
- if (band == IEEE80211_BAND_2GHZ)
|
||||||
|
+ if (band == NL80211_BAND_2GHZ)
|
||||||
|
{
|
||||||
|
n_channels = RTW_2G_CHANNELS_NUM;
|
||||||
|
n_bitrates = RTW_G_RATES_NUM;
|
||||||
|
@@ -150,7 +150,7 @@ static struct ieee80211_supported_band *
|
||||||
|
spt_band->n_channels = n_channels;
|
||||||
|
spt_band->n_bitrates = n_bitrates;
|
||||||
|
|
||||||
|
- if (band == IEEE80211_BAND_2GHZ)
|
||||||
|
+ if (band == NL80211_BAND_2GHZ)
|
||||||
|
{
|
||||||
|
rtw_2g_channels_init(spt_band->channels);
|
||||||
|
rtw_2g_rates_init(spt_band->bitrates);
|
||||||
|
@@ -170,7 +170,7 @@ static void rtw_spt_band_free(struct iee
|
||||||
|
if (!spt_band)
|
||||||
|
return;
|
||||||
|
|
||||||
|
- if (spt_band->band == IEEE80211_BAND_2GHZ)
|
||||||
|
+ if (spt_band->band == NL80211_BAND_2GHZ)
|
||||||
|
{
|
||||||
|
size = sizeof(struct ieee80211_supported_band)
|
||||||
|
+ sizeof(struct ieee80211_channel)*RTW_2G_CHANNELS_NUM
|
||||||
|
@@ -232,7 +232,7 @@ static int rtw_ieee80211_channel_to_freq
|
||||||
|
{
|
||||||
|
/* see 802.11 17.3.8.3.2 and Annex J
|
||||||
|
* there are overlapping channel numbers in 5GHz and 2GHz bands */
|
||||||
|
- if (band == IEEE80211_BAND_2GHZ) {
|
||||||
|
+ if (band == NL80211_BAND_2GHZ) {
|
||||||
|
if (chan == 14)
|
||||||
|
return 2484;
|
||||||
|
else if (chan < 14)
|
||||||
|
@@ -336,7 +336,7 @@ struct cfg80211_bss *rtw_cfg80211_inform
|
||||||
|
|
||||||
|
|
||||||
|
channel = pnetwork->network.Configuration.DSConfig;
|
||||||
|
- freq = rtw_ieee80211_channel_to_frequency(channel, IEEE80211_BAND_2GHZ);
|
||||||
|
+ freq = rtw_ieee80211_channel_to_frequency(channel, NL80211_BAND_2GHZ);
|
||||||
|
|
||||||
|
notify_channel = ieee80211_get_channel(wiphy, freq);
|
||||||
|
|
||||||
|
@@ -420,7 +420,7 @@ int rtw_cfg80211_check_bss(struct adapte
|
||||||
|
if (!(pnetwork) || !(padapter->rtw_wdev))
|
||||||
|
return false;
|
||||||
|
|
||||||
|
- freq = rtw_ieee80211_channel_to_frequency(pnetwork->Configuration.DSConfig, IEEE80211_BAND_2GHZ);
|
||||||
|
+ freq = rtw_ieee80211_channel_to_frequency(pnetwork->Configuration.DSConfig, NL80211_BAND_2GHZ);
|
||||||
|
|
||||||
|
notify_channel = ieee80211_get_channel(padapter->rtw_wdev->wiphy, freq);
|
||||||
|
bss = cfg80211_get_bss(padapter->rtw_wdev->wiphy, notify_channel,
|
||||||
|
@@ -542,7 +542,7 @@ check_bss:
|
||||||
|
u32 freq;
|
||||||
|
u16 channel = cur_network->network.Configuration.DSConfig;
|
||||||
|
|
||||||
|
- freq = rtw_ieee80211_channel_to_frequency(channel, IEEE80211_BAND_2GHZ);
|
||||||
|
+ freq = rtw_ieee80211_channel_to_frequency(channel, NL80211_BAND_2GHZ);
|
||||||
|
|
||||||
|
notify_channel = ieee80211_get_channel(wiphy, freq);
|
||||||
|
|
||||||
|
@@ -3064,7 +3064,7 @@ void rtw_cfg80211_rx_action(struct adapt
|
||||||
|
else
|
||||||
|
DBG_871X("RTW_Rx:category(%u), action(%u)\n", category, action);
|
||||||
|
|
||||||
|
- freq = rtw_ieee80211_channel_to_frequency(channel, IEEE80211_BAND_2GHZ);
|
||||||
|
+ freq = rtw_ieee80211_channel_to_frequency(channel, NL80211_BAND_2GHZ);
|
||||||
|
|
||||||
|
rtw_cfg80211_rx_mgmt(adapter, freq, 0, frame, frame_len, GFP_ATOMIC);
|
||||||
|
}
|
||||||
|
@@ -3311,7 +3311,7 @@ static int cfg80211_rtw_sched_scan_stop(
|
||||||
|
}
|
||||||
|
#endif /* CONFIG_PNO_SUPPORT */
|
||||||
|
|
||||||
|
-static void rtw_cfg80211_init_ht_capab(struct ieee80211_sta_ht_cap *ht_cap, enum ieee80211_band band, u8 rf_type)
|
||||||
|
+static void rtw_cfg80211_init_ht_capab(struct ieee80211_sta_ht_cap *ht_cap, enum nl80211_band band, u8 rf_type)
|
||||||
|
{
|
||||||
|
|
||||||
|
#define MAX_BIT_RATE_40MHZ_MCS15 300 /* Mbps */
|
||||||
|
@@ -3335,7 +3335,7 @@ static void rtw_cfg80211_init_ht_capab(s
|
||||||
|
ht_cap->mcs.tx_params = IEEE80211_HT_MCS_TX_DEFINED;
|
||||||
|
|
||||||
|
/*
|
||||||
|
- *hw->wiphy->bands[IEEE80211_BAND_2GHZ]
|
||||||
|
+ *hw->wiphy->bands[NL80211_BAND_2GHZ]
|
||||||
|
*base on ant_num
|
||||||
|
*rx_mask: RX mask
|
||||||
|
*if rx_ant = 1 rx_mask[0]= 0xff;==>MCS0-MCS7
|
||||||
|
@@ -3379,9 +3379,9 @@ void rtw_cfg80211_init_wiphy(struct adap
|
||||||
|
DBG_8192C("%s:rf_type =%d\n", __func__, rf_type);
|
||||||
|
|
||||||
|
{
|
||||||
|
- bands = wiphy->bands[IEEE80211_BAND_2GHZ];
|
||||||
|
+ bands = wiphy->bands[NL80211_BAND_2GHZ];
|
||||||
|
if (bands)
|
||||||
|
- rtw_cfg80211_init_ht_capab(&bands->ht_cap, IEEE80211_BAND_2GHZ, rf_type);
|
||||||
|
+ rtw_cfg80211_init_ht_capab(&bands->ht_cap, NL80211_BAND_2GHZ, rf_type);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* init regulary domain */
|
||||||
|
@@ -3417,7 +3417,7 @@ static void rtw_cfg80211_preinit_wiphy(s
|
||||||
|
wiphy->n_cipher_suites = ARRAY_SIZE(rtw_cipher_suites);
|
||||||
|
|
||||||
|
/* if (padapter->registrypriv.wireless_mode & WIRELESS_11G) */
|
||||||
|
- wiphy->bands[IEEE80211_BAND_2GHZ] = rtw_spt_band_alloc(IEEE80211_BAND_2GHZ);
|
||||||
|
+ wiphy->bands[NL80211_BAND_2GHZ] = rtw_spt_band_alloc(NL80211_BAND_2GHZ);
|
||||||
|
|
||||||
|
wiphy->flags |= WIPHY_FLAG_HAS_REMAIN_ON_CHANNEL;
|
||||||
|
wiphy->flags |= WIPHY_FLAG_OFFCHAN_TX | WIPHY_FLAG_HAVE_AP_SME;
|
||||||
|
@@ -3564,7 +3564,7 @@ void rtw_wdev_free(struct wireless_dev *
|
||||||
|
if (!wdev)
|
||||||
|
return;
|
||||||
|
|
||||||
|
- rtw_spt_band_free(wdev->wiphy->bands[IEEE80211_BAND_2GHZ]);
|
||||||
|
+ rtw_spt_band_free(wdev->wiphy->bands[NL80211_BAND_2GHZ]);
|
||||||
|
|
||||||
|
wiphy_free(wdev->wiphy);
|
||||||
|
|
||||||
|
diff -urp linux/3rdparty/rtl8723bs.orig/os_dep/wifi_regd.c linux/3rdparty/rtl8723bs/os_dep/wifi_regd.c
|
||||||
|
--- linux/3rdparty/rtl8723bs.orig/os_dep/wifi_regd.c 2016-07-04 20:00:13.000000000 +0300
|
||||||
|
+++ linux/3rdparty/rtl8723bs/os_dep/wifi_regd.c 2016-07-04 20:35:31.427278665 +0300
|
||||||
|
@@ -105,7 +105,7 @@ static int rtw_ieee80211_channel_to_freq
|
||||||
|
/* see 802.11 17.3.8.3.2 and Annex J
|
||||||
|
* there are overlapping channel numbers in 5GHz and 2GHz bands */
|
||||||
|
|
||||||
|
- /* IEEE80211_BAND_2GHZ */
|
||||||
|
+ /* NL80211_BAND_2GHZ */
|
||||||
|
if (chan == 14)
|
||||||
|
return 2484;
|
||||||
|
else if (chan < 14)
|
||||||
|
@@ -128,7 +128,7 @@ static void _rtw_reg_apply_flags(struct
|
||||||
|
u32 freq;
|
||||||
|
|
||||||
|
/* all channels disable */
|
||||||
|
- for (i = 0; i < IEEE80211_NUM_BANDS; i++) {
|
||||||
|
+ for (i = 0; i < NUM_NL80211_BANDS; i++) {
|
||||||
|
sband = wiphy->bands[i];
|
||||||
|
|
||||||
|
if (sband) {
|
||||||
|
@@ -146,7 +146,7 @@ static void _rtw_reg_apply_flags(struct
|
||||||
|
channel = channel_set[i].ChannelNum;
|
||||||
|
freq =
|
||||||
|
rtw_ieee80211_channel_to_frequency(channel,
|
||||||
|
- IEEE80211_BAND_2GHZ);
|
||||||
|
+ NL80211_BAND_2GHZ);
|
||||||
|
|
||||||
|
ch = ieee80211_get_channel(wiphy, freq);
|
||||||
|
if (ch) {
|
||||||
-98
@@ -1,98 +0,0 @@
|
|||||||
From 2f38b1b16d9280689e5cfa47a4c50956bf437f0d Mon Sep 17 00:00:00 2001
|
|
||||||
From: Lv Zheng <lv.zheng@intel.com>
|
|
||||||
Date: Tue, 21 Jun 2016 12:34:15 +0800
|
|
||||||
Subject: [PATCH] ACPICA: Namespace: Fix deadlock triggered by MLC support in
|
|
||||||
dynamic table loading
|
|
||||||
|
|
||||||
The new module-level code (MLC) approach invokes MLC on the per-table
|
|
||||||
basis, but the dynamic loading support of this is incorrect because
|
|
||||||
of the lock order:
|
|
||||||
|
|
||||||
acpi_ns_evaluate
|
|
||||||
acpi_ex_enter_intperter
|
|
||||||
acpi_ns_load_table (triggered by Load opcode)
|
|
||||||
acpi_ns_exec_module_code_list
|
|
||||||
acpi_ex_enter_intperter
|
|
||||||
|
|
||||||
The regression is introduced by the following commit:
|
|
||||||
|
|
||||||
Commit: 2785ce8d0da1cac9d8f78615e116cf929e9a9123
|
|
||||||
ACPICA Commit: 071eff738c59eda1792ac24b3b688b61691d7e7c
|
|
||||||
Subject: ACPICA: Add per-table execution of module-level code
|
|
||||||
|
|
||||||
This patch fixes this regression by unlocking the interpreter lock
|
|
||||||
before invoking MLC. However, the unlocking is done to the
|
|
||||||
acpi_ns_load_table(), in which the interpreter lock should be locked
|
|
||||||
by acpi_ns_parse_table() but it wasn't.
|
|
||||||
|
|
||||||
Fixes: 2785ce8d0da1 (ACPICA: Add per-table execution of module-level code)
|
|
||||||
Reported-by: Mika Westerberg <mika.westerberg@linux.intel.com>
|
|
||||||
Tested-by: Mika Westerberg <mika.westerberg@linux.intel.com>
|
|
||||||
Signed-off-by: Lv Zheng <lv.zheng@intel.com>
|
|
||||||
Cc: 4.5+ <stable@vger.kernel.org> # 4.5+
|
|
||||||
[ rjw : Subject ]
|
|
||||||
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
|
|
||||||
---
|
|
||||||
drivers/acpi/acpica/exconfig.c | 2 ++
|
|
||||||
drivers/acpi/acpica/nsparse.c | 9 +++++++--
|
|
||||||
2 files changed, 9 insertions(+), 2 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/drivers/acpi/acpica/exconfig.c b/drivers/acpi/acpica/exconfig.c
|
|
||||||
index a1d177d..21932d6 100644
|
|
||||||
--- a/drivers/acpi/acpica/exconfig.c
|
|
||||||
+++ b/drivers/acpi/acpica/exconfig.c
|
|
||||||
@@ -108,7 +108,9 @@ acpi_ex_add_table(u32 table_index,
|
|
||||||
|
|
||||||
/* Add the table to the namespace */
|
|
||||||
|
|
||||||
+ acpi_ex_exit_interpreter();
|
|
||||||
status = acpi_ns_load_table(table_index, parent_node);
|
|
||||||
+ acpi_ex_enter_interpreter();
|
|
||||||
if (ACPI_FAILURE(status)) {
|
|
||||||
acpi_ut_remove_reference(obj_desc);
|
|
||||||
*ddb_handle = NULL;
|
|
||||||
diff --git a/drivers/acpi/acpica/nsparse.c b/drivers/acpi/acpica/nsparse.c
|
|
||||||
index f631a47..1783cd7 100644
|
|
||||||
--- a/drivers/acpi/acpica/nsparse.c
|
|
||||||
+++ b/drivers/acpi/acpica/nsparse.c
|
|
||||||
@@ -47,6 +47,7 @@
|
|
||||||
#include "acparser.h"
|
|
||||||
#include "acdispat.h"
|
|
||||||
#include "actables.h"
|
|
||||||
+#include "acinterp.h"
|
|
||||||
|
|
||||||
#define _COMPONENT ACPI_NAMESPACE
|
|
||||||
ACPI_MODULE_NAME("nsparse")
|
|
||||||
@@ -170,6 +171,8 @@ acpi_ns_parse_table(u32 table_index, struct acpi_namespace_node *start_node)
|
|
||||||
|
|
||||||
ACPI_FUNCTION_TRACE(ns_parse_table);
|
|
||||||
|
|
||||||
+ acpi_ex_enter_interpreter();
|
|
||||||
+
|
|
||||||
/*
|
|
||||||
* AML Parse, pass 1
|
|
||||||
*
|
|
||||||
@@ -185,7 +188,7 @@ acpi_ns_parse_table(u32 table_index, struct acpi_namespace_node *start_node)
|
|
||||||
status = acpi_ns_one_complete_parse(ACPI_IMODE_LOAD_PASS1,
|
|
||||||
table_index, start_node);
|
|
||||||
if (ACPI_FAILURE(status)) {
|
|
||||||
- return_ACPI_STATUS(status);
|
|
||||||
+ goto error_exit;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
@@ -201,8 +204,10 @@ acpi_ns_parse_table(u32 table_index, struct acpi_namespace_node *start_node)
|
|
||||||
status = acpi_ns_one_complete_parse(ACPI_IMODE_LOAD_PASS2,
|
|
||||||
table_index, start_node);
|
|
||||||
if (ACPI_FAILURE(status)) {
|
|
||||||
- return_ACPI_STATUS(status);
|
|
||||||
+ goto error_exit;
|
|
||||||
}
|
|
||||||
|
|
||||||
+error_exit:
|
|
||||||
+ acpi_ex_exit_interpreter();
|
|
||||||
return_ACPI_STATUS(status);
|
|
||||||
}
|
|
||||||
--
|
|
||||||
2.9.0
|
|
||||||
|
|
||||||
+2
-5
@@ -134,15 +134,12 @@ diff --git a/arch/arm/boot/dts/bcm283x.dtsi b/arch/arm/boot/dts/bcm283x.dtsi
|
|||||||
index 8aaf193..04504b7 100644
|
index 8aaf193..04504b7 100644
|
||||||
--- a/arch/arm/boot/dts/bcm283x.dtsi
|
--- a/arch/arm/boot/dts/bcm283x.dtsi
|
||||||
+++ b/arch/arm/boot/dts/bcm283x.dtsi
|
+++ b/arch/arm/boot/dts/bcm283x.dtsi
|
||||||
@@ -230,6 +230,8 @@
|
@@ -287,6 +287,8 @@
|
||||||
compatible = "brcm,bcm2835-usb";
|
compatible = "brcm,bcm2835-usb";
|
||||||
reg = <0x7e980000 0x10000>;
|
reg = <0x7e980000 0x10000>;
|
||||||
interrupts = <1 9>;
|
interrupts = <1 9>;
|
||||||
+ #address-cells = <1>;
|
+ #address-cells = <1>;
|
||||||
+ #size-cells = <0>;
|
+ #size-cells = <0>;
|
||||||
};
|
};
|
||||||
};
|
|
||||||
|
|
||||||
--
|
v3d: v3d@7ec00000 {
|
||||||
2.8.1
|
|
||||||
|
|
||||||
|
|||||||
-60
@@ -1,60 +0,0 @@
|
|||||||
From 6b7e9cde49691e04314342b7dce90c67ad567fcc Mon Sep 17 00:00:00 2001
|
|
||||||
From: "Martin K. Petersen" <martin.petersen@oracle.com>
|
|
||||||
Date: Thu, 12 May 2016 22:17:34 -0400
|
|
||||||
Subject: [PATCH] sd: Fix rw_max for devices that report an optimal xfer size
|
|
||||||
|
|
||||||
For historic reasons, io_opt is in bytes and max_sectors in block layer
|
|
||||||
sectors. This interface inconsistency is error prone and should be
|
|
||||||
fixed. But for 4.4--4.7 let's make the unit difference explicit via a
|
|
||||||
wrapper function.
|
|
||||||
|
|
||||||
Fixes: d0eb20a863ba ("sd: Optimal I/O size is in bytes, not sectors")
|
|
||||||
Cc: stable@vger.kernel.org # 4.4+
|
|
||||||
Reported-by: Fam Zheng <famz@redhat.com>
|
|
||||||
Reviewed-by: Bart Van Assche <bart.vanassche@sandisk.com>
|
|
||||||
Reviewed-by: Christoph Hellwig <hch@lst.de>
|
|
||||||
Tested-by: Andrew Patterson <andrew.patterson@hpe.com>
|
|
||||||
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
|
|
||||||
---
|
|
||||||
drivers/scsi/sd.c | 8 ++++----
|
|
||||||
drivers/scsi/sd.h | 5 +++++
|
|
||||||
2 files changed, 9 insertions(+), 4 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/drivers/scsi/sd.c b/drivers/scsi/sd.c
|
|
||||||
index f459dff..60bff78 100644
|
|
||||||
--- a/drivers/scsi/sd.c
|
|
||||||
+++ b/drivers/scsi/sd.c
|
|
||||||
@@ -2867,10 +2867,10 @@ static int sd_revalidate_disk(struct gendisk *disk)
|
|
||||||
if (sdkp->opt_xfer_blocks &&
|
|
||||||
sdkp->opt_xfer_blocks <= dev_max &&
|
|
||||||
sdkp->opt_xfer_blocks <= SD_DEF_XFER_BLOCKS &&
|
|
||||||
- sdkp->opt_xfer_blocks * sdp->sector_size >= PAGE_SIZE)
|
|
||||||
- rw_max = q->limits.io_opt =
|
|
||||||
- sdkp->opt_xfer_blocks * sdp->sector_size;
|
|
||||||
- else
|
|
||||||
+ logical_to_bytes(sdp, sdkp->opt_xfer_blocks) >= PAGE_SIZE) {
|
|
||||||
+ q->limits.io_opt = logical_to_bytes(sdp, sdkp->opt_xfer_blocks);
|
|
||||||
+ rw_max = logical_to_sectors(sdp, sdkp->opt_xfer_blocks);
|
|
||||||
+ } else
|
|
||||||
rw_max = BLK_DEF_MAX_SECTORS;
|
|
||||||
|
|
||||||
/* Combine with controller limits */
|
|
||||||
diff --git a/drivers/scsi/sd.h b/drivers/scsi/sd.h
|
|
||||||
index 654630b..765a6f1 100644
|
|
||||||
--- a/drivers/scsi/sd.h
|
|
||||||
+++ b/drivers/scsi/sd.h
|
|
||||||
@@ -151,6 +151,11 @@ static inline sector_t logical_to_sectors(struct scsi_device *sdev, sector_t blo
|
|
||||||
return blocks << (ilog2(sdev->sector_size) - 9);
|
|
||||||
}
|
|
||||||
|
|
||||||
+static inline unsigned int logical_to_bytes(struct scsi_device *sdev, sector_t blocks)
|
|
||||||
+{
|
|
||||||
+ return blocks * sdev->sector_size;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
/*
|
|
||||||
* A DIF-capable target device can be formatted with different
|
|
||||||
* protection schemes. Currently 0 through 3 are defined:
|
|
||||||
--
|
|
||||||
2.9.0
|
|
||||||
|
|
||||||
+93
-81
@@ -4,6 +4,7 @@
|
|||||||
fs/exec.c | 1 +
|
fs/exec.c | 1 +
|
||||||
fs/fcntl.c | 1 +
|
fs/fcntl.c | 1 +
|
||||||
fs/file_table.c | 4 ++++
|
fs/file_table.c | 4 ++++
|
||||||
|
fs/inode.c | 1 +
|
||||||
fs/namespace.c | 2 ++
|
fs/namespace.c | 2 ++
|
||||||
fs/notify/group.c | 4 ++++
|
fs/notify/group.c | 4 ++++
|
||||||
fs/notify/mark.c | 4 ++++
|
fs/notify/mark.c | 4 ++++
|
||||||
@@ -15,11 +16,11 @@
|
|||||||
security/commoncap.c | 2 ++
|
security/commoncap.c | 2 ++
|
||||||
security/device_cgroup.c | 2 ++
|
security/device_cgroup.c | 2 ++
|
||||||
security/security.c | 10 ++++++++++
|
security/security.c | 10 ++++++++++
|
||||||
16 files changed, 40 insertions(+), 1 deletion(-)
|
17 files changed, 41 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
diff -Nurp linux-4.6-aufs/fs/aufs/Kconfig linux-4.6-aufs-mod/fs/aufs/Kconfig
|
diff -Nurp linux-4.7-rc6-aufs/fs/aufs/Kconfig linux-4.7-rc6-aufs-mod/fs/aufs/Kconfig
|
||||||
--- linux-4.6-aufs/fs/aufs/Kconfig 2016-06-01 22:44:04.029679796 +0300
|
--- linux-4.7-rc6-aufs/fs/aufs/Kconfig 2016-07-04 19:02:29.246286120 +0300
|
||||||
+++ linux-4.6-aufs-mod/fs/aufs/Kconfig 2016-06-01 22:44:52.623752681 +0300
|
+++ linux-4.7-rc6-aufs-mod/fs/aufs/Kconfig 2016-07-04 19:03:53.653714965 +0300
|
||||||
@@ -1,5 +1,5 @@
|
@@ -1,5 +1,5 @@
|
||||||
config AUFS_FS
|
config AUFS_FS
|
||||||
- bool "Aufs (Advanced multi layered unification filesystem) support"
|
- bool "Aufs (Advanced multi layered unification filesystem) support"
|
||||||
@@ -27,10 +28,10 @@ diff -Nurp linux-4.6-aufs/fs/aufs/Kconfig linux-4.6-aufs-mod/fs/aufs/Kconfig
|
|||||||
help
|
help
|
||||||
Aufs is a stackable unification filesystem such as Unionfs,
|
Aufs is a stackable unification filesystem such as Unionfs,
|
||||||
which unifies several directories and provides a merged single
|
which unifies several directories and provides a merged single
|
||||||
diff -Nurp linux-4.6-aufs/fs/dcache.c linux-4.6-aufs-mod/fs/dcache.c
|
diff -Nurp linux-4.7-rc6-aufs/fs/dcache.c linux-4.7-rc6-aufs-mod/fs/dcache.c
|
||||||
--- linux-4.6-aufs/fs/dcache.c 2016-06-01 22:44:04.041679813 +0300
|
--- linux-4.7-rc6-aufs/fs/dcache.c 2016-07-04 19:02:29.260286196 +0300
|
||||||
+++ linux-4.6-aufs-mod/fs/dcache.c 2016-06-01 22:44:52.623752681 +0300
|
+++ linux-4.7-rc6-aufs-mod/fs/dcache.c 2016-07-04 19:03:53.653714965 +0300
|
||||||
@@ -1261,6 +1261,7 @@ rename_retry:
|
@@ -1310,6 +1310,7 @@ rename_retry:
|
||||||
seq = 1;
|
seq = 1;
|
||||||
goto again;
|
goto again;
|
||||||
}
|
}
|
||||||
@@ -38,9 +39,9 @@ diff -Nurp linux-4.6-aufs/fs/dcache.c linux-4.6-aufs-mod/fs/dcache.c
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
* Search for at least 1 mount point in the dentry's subdirs.
|
* Search for at least 1 mount point in the dentry's subdirs.
|
||||||
diff -Nurp linux-4.6-aufs/fs/exec.c linux-4.6-aufs-mod/fs/exec.c
|
diff -Nurp linux-4.7-rc6-aufs/fs/exec.c linux-4.7-rc6-aufs-mod/fs/exec.c
|
||||||
--- linux-4.6-aufs/fs/exec.c 2016-05-16 01:43:13.000000000 +0300
|
--- linux-4.7-rc6-aufs/fs/exec.c 2016-07-04 17:58:15.707773651 +0300
|
||||||
+++ linux-4.6-aufs-mod/fs/exec.c 2016-06-01 22:44:52.624752682 +0300
|
+++ linux-4.7-rc6-aufs-mod/fs/exec.c 2016-07-04 19:03:53.654714970 +0300
|
||||||
@@ -104,6 +104,7 @@ bool path_noexec(const struct path *path
|
@@ -104,6 +104,7 @@ bool path_noexec(const struct path *path
|
||||||
return (path->mnt->mnt_flags & MNT_NOEXEC) ||
|
return (path->mnt->mnt_flags & MNT_NOEXEC) ||
|
||||||
(path->mnt->mnt_sb->s_iflags & SB_I_NOEXEC);
|
(path->mnt->mnt_sb->s_iflags & SB_I_NOEXEC);
|
||||||
@@ -49,9 +50,9 @@ diff -Nurp linux-4.6-aufs/fs/exec.c linux-4.6-aufs-mod/fs/exec.c
|
|||||||
|
|
||||||
#ifdef CONFIG_USELIB
|
#ifdef CONFIG_USELIB
|
||||||
/*
|
/*
|
||||||
diff -Nurp linux-4.6-aufs/fs/fcntl.c linux-4.6-aufs-mod/fs/fcntl.c
|
diff -Nurp linux-4.7-rc6-aufs/fs/fcntl.c linux-4.7-rc6-aufs-mod/fs/fcntl.c
|
||||||
--- linux-4.6-aufs/fs/fcntl.c 2016-06-01 22:44:04.041679813 +0300
|
--- linux-4.7-rc6-aufs/fs/fcntl.c 2016-07-04 19:02:29.260286196 +0300
|
||||||
+++ linux-4.6-aufs-mod/fs/fcntl.c 2016-06-01 22:44:52.624752682 +0300
|
+++ linux-4.7-rc6-aufs-mod/fs/fcntl.c 2016-07-04 19:03:53.654714970 +0300
|
||||||
@@ -82,6 +82,7 @@ int setfl(int fd, struct file * filp, un
|
@@ -82,6 +82,7 @@ int setfl(int fd, struct file * filp, un
|
||||||
out:
|
out:
|
||||||
return error;
|
return error;
|
||||||
@@ -60,9 +61,9 @@ diff -Nurp linux-4.6-aufs/fs/fcntl.c linux-4.6-aufs-mod/fs/fcntl.c
|
|||||||
|
|
||||||
static void f_modown(struct file *filp, struct pid *pid, enum pid_type type,
|
static void f_modown(struct file *filp, struct pid *pid, enum pid_type type,
|
||||||
int force)
|
int force)
|
||||||
diff -Nurp linux-4.6-aufs/fs/file_table.c linux-4.6-aufs-mod/fs/file_table.c
|
diff -Nurp linux-4.7-rc6-aufs/fs/file_table.c linux-4.7-rc6-aufs-mod/fs/file_table.c
|
||||||
--- linux-4.6-aufs/fs/file_table.c 2016-05-16 01:43:13.000000000 +0300
|
--- linux-4.7-rc6-aufs/fs/file_table.c 2016-05-16 01:43:13.000000000 +0300
|
||||||
+++ linux-4.6-aufs-mod/fs/file_table.c 2016-06-01 22:44:52.624752682 +0300
|
+++ linux-4.7-rc6-aufs-mod/fs/file_table.c 2016-07-04 19:03:53.654714970 +0300
|
||||||
@@ -147,6 +147,7 @@ over:
|
@@ -147,6 +147,7 @@ over:
|
||||||
}
|
}
|
||||||
return ERR_PTR(-ENFILE);
|
return ERR_PTR(-ENFILE);
|
||||||
@@ -95,9 +96,20 @@ diff -Nurp linux-4.6-aufs/fs/file_table.c linux-4.6-aufs-mod/fs/file_table.c
|
|||||||
|
|
||||||
void __init files_init(void)
|
void __init files_init(void)
|
||||||
{
|
{
|
||||||
diff -Nurp linux-4.6-aufs/fs/namespace.c linux-4.6-aufs-mod/fs/namespace.c
|
diff -Nurp linux-4.7-rc6-aufs/fs/inode.c linux-4.7-rc6-aufs-mod/fs/inode.c
|
||||||
--- linux-4.6-aufs/fs/namespace.c 2016-05-16 01:43:13.000000000 +0300
|
--- linux-4.7-rc6-aufs/fs/inode.c 2016-07-04 19:02:29.261286202 +0300
|
||||||
+++ linux-4.6-aufs-mod/fs/namespace.c 2016-06-01 22:44:52.625752684 +0300
|
+++ linux-4.7-rc6-aufs-mod/fs/inode.c 2016-07-04 20:51:39.805168596 +0300
|
||||||
|
@@ -1600,6 +1600,7 @@ int update_time(struct inode *inode, str
|
||||||
|
|
||||||
|
return update_time(inode, time, flags);
|
||||||
|
}
|
||||||
|
+EXPORT_SYMBOL_GPL(update_time);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* touch_atime - update the access time
|
||||||
|
diff -Nurp linux-4.7-rc6-aufs/fs/namespace.c linux-4.7-rc6-aufs-mod/fs/namespace.c
|
||||||
|
--- linux-4.7-rc6-aufs/fs/namespace.c 2016-07-04 17:58:15.729773645 +0300
|
||||||
|
+++ linux-4.7-rc6-aufs-mod/fs/namespace.c 2016-07-04 19:03:53.654714970 +0300
|
||||||
@@ -463,6 +463,7 @@ void __mnt_drop_write(struct vfsmount *m
|
@@ -463,6 +463,7 @@ void __mnt_drop_write(struct vfsmount *m
|
||||||
mnt_dec_writers(real_mount(mnt));
|
mnt_dec_writers(real_mount(mnt));
|
||||||
preempt_enable();
|
preempt_enable();
|
||||||
@@ -106,7 +118,7 @@ diff -Nurp linux-4.6-aufs/fs/namespace.c linux-4.6-aufs-mod/fs/namespace.c
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* mnt_drop_write - give up write access to a mount
|
* mnt_drop_write - give up write access to a mount
|
||||||
@@ -1811,6 +1812,7 @@ int iterate_mounts(int (*f)(struct vfsmo
|
@@ -1812,6 +1813,7 @@ int iterate_mounts(int (*f)(struct vfsmo
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@@ -114,9 +126,9 @@ diff -Nurp linux-4.6-aufs/fs/namespace.c linux-4.6-aufs-mod/fs/namespace.c
|
|||||||
|
|
||||||
static void cleanup_group_ids(struct mount *mnt, struct mount *end)
|
static void cleanup_group_ids(struct mount *mnt, struct mount *end)
|
||||||
{
|
{
|
||||||
diff -Nurp linux-4.6-aufs/fs/notify/group.c linux-4.6-aufs-mod/fs/notify/group.c
|
diff -Nurp linux-4.7-rc6-aufs/fs/notify/group.c linux-4.7-rc6-aufs-mod/fs/notify/group.c
|
||||||
--- linux-4.6-aufs/fs/notify/group.c 2016-05-16 01:43:13.000000000 +0300
|
--- linux-4.7-rc6-aufs/fs/notify/group.c 2016-07-04 17:58:15.742773641 +0300
|
||||||
+++ linux-4.6-aufs-mod/fs/notify/group.c 2016-06-01 22:44:52.625752684 +0300
|
+++ linux-4.7-rc6-aufs-mod/fs/notify/group.c 2016-07-04 19:03:53.655714975 +0300
|
||||||
@@ -22,6 +22,7 @@
|
@@ -22,6 +22,7 @@
|
||||||
#include <linux/srcu.h>
|
#include <linux/srcu.h>
|
||||||
#include <linux/rculist.h>
|
#include <linux/rculist.h>
|
||||||
@@ -125,7 +137,7 @@ diff -Nurp linux-4.6-aufs/fs/notify/group.c linux-4.6-aufs-mod/fs/notify/group.c
|
|||||||
|
|
||||||
#include <linux/fsnotify_backend.h>
|
#include <linux/fsnotify_backend.h>
|
||||||
#include "fsnotify.h"
|
#include "fsnotify.h"
|
||||||
@@ -72,6 +73,7 @@ void fsnotify_get_group(struct fsnotify_
|
@@ -81,6 +82,7 @@ void fsnotify_get_group(struct fsnotify_
|
||||||
{
|
{
|
||||||
atomic_inc(&group->refcnt);
|
atomic_inc(&group->refcnt);
|
||||||
}
|
}
|
||||||
@@ -133,7 +145,7 @@ diff -Nurp linux-4.6-aufs/fs/notify/group.c linux-4.6-aufs-mod/fs/notify/group.c
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
* Drop a reference to a group. Free it if it's through.
|
* Drop a reference to a group. Free it if it's through.
|
||||||
@@ -81,6 +83,7 @@ void fsnotify_put_group(struct fsnotify_
|
@@ -90,6 +92,7 @@ void fsnotify_put_group(struct fsnotify_
|
||||||
if (atomic_dec_and_test(&group->refcnt))
|
if (atomic_dec_and_test(&group->refcnt))
|
||||||
fsnotify_final_destroy_group(group);
|
fsnotify_final_destroy_group(group);
|
||||||
}
|
}
|
||||||
@@ -141,7 +153,7 @@ diff -Nurp linux-4.6-aufs/fs/notify/group.c linux-4.6-aufs-mod/fs/notify/group.c
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
* Create a new fsnotify_group and hold a reference for the group returned.
|
* Create a new fsnotify_group and hold a reference for the group returned.
|
||||||
@@ -109,6 +112,7 @@ struct fsnotify_group *fsnotify_alloc_gr
|
@@ -118,6 +121,7 @@ struct fsnotify_group *fsnotify_alloc_gr
|
||||||
|
|
||||||
return group;
|
return group;
|
||||||
}
|
}
|
||||||
@@ -149,9 +161,9 @@ diff -Nurp linux-4.6-aufs/fs/notify/group.c linux-4.6-aufs-mod/fs/notify/group.c
|
|||||||
|
|
||||||
int fsnotify_fasync(int fd, struct file *file, int on)
|
int fsnotify_fasync(int fd, struct file *file, int on)
|
||||||
{
|
{
|
||||||
diff -Nurp linux-4.6-aufs/fs/notify/mark.c linux-4.6-aufs-mod/fs/notify/mark.c
|
diff -Nurp linux-4.7-rc6-aufs/fs/notify/mark.c linux-4.7-rc6-aufs-mod/fs/notify/mark.c
|
||||||
--- linux-4.6-aufs/fs/notify/mark.c 2016-05-16 01:43:13.000000000 +0300
|
--- linux-4.7-rc6-aufs/fs/notify/mark.c 2016-07-04 17:58:15.742773641 +0300
|
||||||
+++ linux-4.6-aufs-mod/fs/notify/mark.c 2016-06-01 22:44:52.625752684 +0300
|
+++ linux-4.7-rc6-aufs-mod/fs/notify/mark.c 2016-07-04 19:03:53.655714975 +0300
|
||||||
@@ -113,6 +113,7 @@ void fsnotify_put_mark(struct fsnotify_m
|
@@ -113,6 +113,7 @@ void fsnotify_put_mark(struct fsnotify_m
|
||||||
mark->free_mark(mark);
|
mark->free_mark(mark);
|
||||||
}
|
}
|
||||||
@@ -160,7 +172,7 @@ diff -Nurp linux-4.6-aufs/fs/notify/mark.c linux-4.6-aufs-mod/fs/notify/mark.c
|
|||||||
|
|
||||||
/* Calculate mask of events for a list of marks */
|
/* Calculate mask of events for a list of marks */
|
||||||
u32 fsnotify_recalc_mask(struct hlist_head *head)
|
u32 fsnotify_recalc_mask(struct hlist_head *head)
|
||||||
@@ -213,6 +214,7 @@ void fsnotify_destroy_mark(struct fsnoti
|
@@ -230,6 +231,7 @@ void fsnotify_destroy_mark(struct fsnoti
|
||||||
mutex_unlock(&group->mark_mutex);
|
mutex_unlock(&group->mark_mutex);
|
||||||
fsnotify_free_mark(mark);
|
fsnotify_free_mark(mark);
|
||||||
}
|
}
|
||||||
@@ -168,7 +180,7 @@ diff -Nurp linux-4.6-aufs/fs/notify/mark.c linux-4.6-aufs-mod/fs/notify/mark.c
|
|||||||
|
|
||||||
void fsnotify_destroy_marks(struct hlist_head *head, spinlock_t *lock)
|
void fsnotify_destroy_marks(struct hlist_head *head, spinlock_t *lock)
|
||||||
{
|
{
|
||||||
@@ -398,6 +400,7 @@ err:
|
@@ -415,6 +417,7 @@ err:
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
@@ -176,24 +188,24 @@ diff -Nurp linux-4.6-aufs/fs/notify/mark.c linux-4.6-aufs-mod/fs/notify/mark.c
|
|||||||
|
|
||||||
int fsnotify_add_mark(struct fsnotify_mark *mark, struct fsnotify_group *group,
|
int fsnotify_add_mark(struct fsnotify_mark *mark, struct fsnotify_group *group,
|
||||||
struct inode *inode, struct vfsmount *mnt, int allow_dups)
|
struct inode *inode, struct vfsmount *mnt, int allow_dups)
|
||||||
@@ -498,6 +501,7 @@ void fsnotify_init_mark(struct fsnotify_
|
@@ -521,6 +524,7 @@ void fsnotify_duplicate_mark(struct fsno
|
||||||
atomic_set(&mark->refcnt, 1);
|
new->mask = old->mask;
|
||||||
mark->free_mark = free_mark;
|
new->free_mark = old->free_mark;
|
||||||
}
|
}
|
||||||
+EXPORT_SYMBOL_GPL(fsnotify_init_mark);
|
+EXPORT_SYMBOL_GPL(fsnotify_init_mark);
|
||||||
|
|
||||||
static void fsnotify_mark_destroy(struct work_struct *work)
|
/*
|
||||||
{
|
* Nothing fancy, just initialize lists and locks and counters.
|
||||||
diff -Nurp linux-4.6-aufs/fs/open.c linux-4.6-aufs-mod/fs/open.c
|
diff -Nurp linux-4.7-rc6-aufs/fs/open.c linux-4.7-rc6-aufs-mod/fs/open.c
|
||||||
--- linux-4.6-aufs/fs/open.c 2016-05-16 01:43:13.000000000 +0300
|
--- linux-4.7-rc6-aufs/fs/open.c 2016-07-04 17:58:15.746773640 +0300
|
||||||
+++ linux-4.6-aufs-mod/fs/open.c 2016-06-01 22:44:52.625752684 +0300
|
+++ linux-4.7-rc6-aufs-mod/fs/open.c 2016-07-04 19:03:53.655714975 +0300
|
||||||
@@ -64,6 +64,7 @@ int do_truncate(struct dentry *dentry, l
|
@@ -64,6 +64,7 @@ int do_truncate(struct dentry *dentry, l
|
||||||
inode_unlock(dentry->d_inode);
|
inode_unlock(dentry->d_inode);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
+EXPORT_SYMBOL_GPL(do_truncate);
|
+EXPORT_SYMBOL_GPL(do_truncate);
|
||||||
|
|
||||||
long vfs_truncate(struct path *path, loff_t length)
|
long vfs_truncate(const struct path *path, loff_t length)
|
||||||
{
|
{
|
||||||
@@ -678,6 +679,7 @@ int open_check_o_direct(struct file *f)
|
@@ -678,6 +679,7 @@ int open_check_o_direct(struct file *f)
|
||||||
}
|
}
|
||||||
@@ -203,10 +215,10 @@ diff -Nurp linux-4.6-aufs/fs/open.c linux-4.6-aufs-mod/fs/open.c
|
|||||||
|
|
||||||
static int do_dentry_open(struct file *f,
|
static int do_dentry_open(struct file *f,
|
||||||
struct inode *inode,
|
struct inode *inode,
|
||||||
diff -Nurp linux-4.6-aufs/fs/read_write.c linux-4.6-aufs-mod/fs/read_write.c
|
diff -Nurp linux-4.7-rc6-aufs/fs/read_write.c linux-4.7-rc6-aufs-mod/fs/read_write.c
|
||||||
--- linux-4.6-aufs/fs/read_write.c 2016-06-01 22:44:04.042679815 +0300
|
--- linux-4.7-rc6-aufs/fs/read_write.c 2016-07-04 19:02:29.262286207 +0300
|
||||||
+++ linux-4.6-aufs-mod/fs/read_write.c 2016-06-01 22:44:52.626752685 +0300
|
+++ linux-4.7-rc6-aufs-mod/fs/read_write.c 2016-07-04 19:03:53.655714975 +0300
|
||||||
@@ -544,6 +544,7 @@ vfs_readf_t vfs_readf(struct file *file)
|
@@ -525,6 +525,7 @@ vfs_readf_t vfs_readf(struct file *file)
|
||||||
return new_sync_read;
|
return new_sync_read;
|
||||||
return ERR_PTR(-ENOSYS);
|
return ERR_PTR(-ENOSYS);
|
||||||
}
|
}
|
||||||
@@ -214,7 +226,7 @@ diff -Nurp linux-4.6-aufs/fs/read_write.c linux-4.6-aufs-mod/fs/read_write.c
|
|||||||
|
|
||||||
vfs_writef_t vfs_writef(struct file *file)
|
vfs_writef_t vfs_writef(struct file *file)
|
||||||
{
|
{
|
||||||
@@ -555,6 +556,7 @@ vfs_writef_t vfs_writef(struct file *fil
|
@@ -536,6 +537,7 @@ vfs_writef_t vfs_writef(struct file *fil
|
||||||
return new_sync_write;
|
return new_sync_write;
|
||||||
return ERR_PTR(-ENOSYS);
|
return ERR_PTR(-ENOSYS);
|
||||||
}
|
}
|
||||||
@@ -222,9 +234,9 @@ diff -Nurp linux-4.6-aufs/fs/read_write.c linux-4.6-aufs-mod/fs/read_write.c
|
|||||||
|
|
||||||
ssize_t __kernel_write(struct file *file, const char *buf, size_t count, loff_t *pos)
|
ssize_t __kernel_write(struct file *file, const char *buf, size_t count, loff_t *pos)
|
||||||
{
|
{
|
||||||
diff -Nurp linux-4.6-aufs/fs/splice.c linux-4.6-aufs-mod/fs/splice.c
|
diff -Nurp linux-4.7-rc6-aufs/fs/splice.c linux-4.7-rc6-aufs-mod/fs/splice.c
|
||||||
--- linux-4.6-aufs/fs/splice.c 2016-06-01 22:44:04.042679815 +0300
|
--- linux-4.7-rc6-aufs/fs/splice.c 2016-07-04 19:02:29.262286207 +0300
|
||||||
+++ linux-4.6-aufs-mod/fs/splice.c 2016-06-01 22:44:52.626752685 +0300
|
+++ linux-4.7-rc6-aufs-mod/fs/splice.c 2016-07-04 19:03:53.656714979 +0300
|
||||||
@@ -1124,6 +1124,7 @@ long do_splice_from(struct pipe_inode_in
|
@@ -1124,6 +1124,7 @@ long do_splice_from(struct pipe_inode_in
|
||||||
|
|
||||||
return splice_write(pipe, out, ppos, len, flags);
|
return splice_write(pipe, out, ppos, len, flags);
|
||||||
@@ -241,9 +253,9 @@ diff -Nurp linux-4.6-aufs/fs/splice.c linux-4.6-aufs-mod/fs/splice.c
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* splice_direct_to_actor - splices data directly between two non-pipes
|
* splice_direct_to_actor - splices data directly between two non-pipes
|
||||||
diff -Nurp linux-4.6-aufs/fs/xattr.c linux-4.6-aufs-mod/fs/xattr.c
|
diff -Nurp linux-4.7-rc6-aufs/fs/xattr.c linux-4.7-rc6-aufs-mod/fs/xattr.c
|
||||||
--- linux-4.6-aufs/fs/xattr.c 2016-05-16 01:43:13.000000000 +0300
|
--- linux-4.7-rc6-aufs/fs/xattr.c 2016-07-04 17:58:15.754773638 +0300
|
||||||
+++ linux-4.6-aufs-mod/fs/xattr.c 2016-06-01 22:44:52.626752685 +0300
|
+++ linux-4.7-rc6-aufs-mod/fs/xattr.c 2016-07-04 19:03:53.656714979 +0300
|
||||||
@@ -207,6 +207,7 @@ vfs_getxattr_alloc(struct dentry *dentry
|
@@ -207,6 +207,7 @@ vfs_getxattr_alloc(struct dentry *dentry
|
||||||
*xattr_value = value;
|
*xattr_value = value;
|
||||||
return error;
|
return error;
|
||||||
@@ -252,17 +264,17 @@ diff -Nurp linux-4.6-aufs/fs/xattr.c linux-4.6-aufs-mod/fs/xattr.c
|
|||||||
|
|
||||||
ssize_t
|
ssize_t
|
||||||
vfs_getxattr(struct dentry *dentry, const char *name, void *value, size_t size)
|
vfs_getxattr(struct dentry *dentry, const char *name, void *value, size_t size)
|
||||||
diff -Nurp linux-4.6-aufs/kernel/task_work.c linux-4.6-aufs-mod/kernel/task_work.c
|
diff -Nurp linux-4.7-rc6-aufs/kernel/task_work.c linux-4.7-rc6-aufs-mod/kernel/task_work.c
|
||||||
--- linux-4.6-aufs/kernel/task_work.c 2016-05-16 01:43:13.000000000 +0300
|
--- linux-4.7-rc6-aufs/kernel/task_work.c 2016-05-16 01:43:13.000000000 +0300
|
||||||
+++ linux-4.6-aufs-mod/kernel/task_work.c 2016-06-01 22:44:52.626752685 +0300
|
+++ linux-4.7-rc6-aufs-mod/kernel/task_work.c 2016-07-04 19:03:53.656714979 +0300
|
||||||
@@ -118,3 +118,4 @@ void task_work_run(void)
|
@@ -118,3 +118,4 @@ void task_work_run(void)
|
||||||
} while (work);
|
} while (work);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
+EXPORT_SYMBOL_GPL(task_work_run);
|
+EXPORT_SYMBOL_GPL(task_work_run);
|
||||||
diff -Nurp linux-4.6-aufs/security/commoncap.c linux-4.6-aufs-mod/security/commoncap.c
|
diff -Nurp linux-4.7-rc6-aufs/security/commoncap.c linux-4.7-rc6-aufs-mod/security/commoncap.c
|
||||||
--- linux-4.6-aufs/security/commoncap.c 2016-05-16 01:43:13.000000000 +0300
|
--- linux-4.7-rc6-aufs/security/commoncap.c 2016-07-04 17:58:15.945773585 +0300
|
||||||
+++ linux-4.6-aufs-mod/security/commoncap.c 2016-06-01 22:44:52.627752687 +0300
|
+++ linux-4.7-rc6-aufs-mod/security/commoncap.c 2016-07-04 19:03:53.656714979 +0300
|
||||||
@@ -1058,12 +1058,14 @@ int cap_mmap_addr(unsigned long addr)
|
@@ -1058,12 +1058,14 @@ int cap_mmap_addr(unsigned long addr)
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
@@ -278,9 +290,9 @@ diff -Nurp linux-4.6-aufs/security/commoncap.c linux-4.6-aufs-mod/security/commo
|
|||||||
|
|
||||||
#ifdef CONFIG_SECURITY
|
#ifdef CONFIG_SECURITY
|
||||||
|
|
||||||
diff -Nurp linux-4.6-aufs/security/device_cgroup.c linux-4.6-aufs-mod/security/device_cgroup.c
|
diff -Nurp linux-4.7-rc6-aufs/security/device_cgroup.c linux-4.7-rc6-aufs-mod/security/device_cgroup.c
|
||||||
--- linux-4.6-aufs/security/device_cgroup.c 2016-05-16 01:43:13.000000000 +0300
|
--- linux-4.7-rc6-aufs/security/device_cgroup.c 2016-05-16 01:43:13.000000000 +0300
|
||||||
+++ linux-4.6-aufs-mod/security/device_cgroup.c 2016-06-01 22:44:52.627752687 +0300
|
+++ linux-4.7-rc6-aufs-mod/security/device_cgroup.c 2016-07-04 19:03:53.656714979 +0300
|
||||||
@@ -7,6 +7,7 @@
|
@@ -7,6 +7,7 @@
|
||||||
#include <linux/device_cgroup.h>
|
#include <linux/device_cgroup.h>
|
||||||
#include <linux/cgroup.h>
|
#include <linux/cgroup.h>
|
||||||
@@ -297,58 +309,58 @@ diff -Nurp linux-4.6-aufs/security/device_cgroup.c linux-4.6-aufs-mod/security/d
|
|||||||
|
|
||||||
int devcgroup_inode_mknod(int mode, dev_t dev)
|
int devcgroup_inode_mknod(int mode, dev_t dev)
|
||||||
{
|
{
|
||||||
diff -Nurp linux-4.6-aufs/security/security.c linux-4.6-aufs-mod/security/security.c
|
diff -Nurp linux-4.7-rc6-aufs/security/security.c linux-4.7-rc6-aufs-mod/security/security.c
|
||||||
--- linux-4.6-aufs/security/security.c 2016-05-16 01:43:13.000000000 +0300
|
--- linux-4.7-rc6-aufs/security/security.c 2016-07-04 17:58:15.948773584 +0300
|
||||||
+++ linux-4.6-aufs-mod/security/security.c 2016-06-01 22:44:52.627752687 +0300
|
+++ linux-4.7-rc6-aufs-mod/security/security.c 2016-07-04 19:03:53.657714984 +0300
|
||||||
@@ -433,6 +433,7 @@ int security_path_rmdir(struct path *dir
|
@@ -434,6 +434,7 @@ int security_path_rmdir(const struct pat
|
||||||
return 0;
|
return 0;
|
||||||
return call_int_hook(path_rmdir, 0, dir, dentry);
|
return call_int_hook(path_rmdir, 0, dir, dentry);
|
||||||
}
|
}
|
||||||
+EXPORT_SYMBOL_GPL(security_path_rmdir);
|
+EXPORT_SYMBOL_GPL(security_path_rmdir);
|
||||||
|
|
||||||
int security_path_unlink(struct path *dir, struct dentry *dentry)
|
int security_path_unlink(const struct path *dir, struct dentry *dentry)
|
||||||
{
|
{
|
||||||
@@ -449,6 +450,7 @@ int security_path_symlink(struct path *d
|
@@ -450,6 +451,7 @@ int security_path_symlink(const struct p
|
||||||
return 0;
|
return 0;
|
||||||
return call_int_hook(path_symlink, 0, dir, dentry, old_name);
|
return call_int_hook(path_symlink, 0, dir, dentry, old_name);
|
||||||
}
|
}
|
||||||
+EXPORT_SYMBOL_GPL(security_path_symlink);
|
+EXPORT_SYMBOL_GPL(security_path_symlink);
|
||||||
|
|
||||||
int security_path_link(struct dentry *old_dentry, struct path *new_dir,
|
int security_path_link(struct dentry *old_dentry, const struct path *new_dir,
|
||||||
struct dentry *new_dentry)
|
struct dentry *new_dentry)
|
||||||
@@ -457,6 +459,7 @@ int security_path_link(struct dentry *ol
|
@@ -458,6 +460,7 @@ int security_path_link(struct dentry *ol
|
||||||
return 0;
|
return 0;
|
||||||
return call_int_hook(path_link, 0, old_dentry, new_dir, new_dentry);
|
return call_int_hook(path_link, 0, old_dentry, new_dir, new_dentry);
|
||||||
}
|
}
|
||||||
+EXPORT_SYMBOL_GPL(security_path_link);
|
+EXPORT_SYMBOL_GPL(security_path_link);
|
||||||
|
|
||||||
int security_path_rename(struct path *old_dir, struct dentry *old_dentry,
|
int security_path_rename(const struct path *old_dir, struct dentry *old_dentry,
|
||||||
struct path *new_dir, struct dentry *new_dentry,
|
const struct path *new_dir, struct dentry *new_dentry,
|
||||||
@@ -484,6 +487,7 @@ int security_path_truncate(struct path *
|
@@ -485,6 +488,7 @@ int security_path_truncate(const struct
|
||||||
return 0;
|
return 0;
|
||||||
return call_int_hook(path_truncate, 0, path);
|
return call_int_hook(path_truncate, 0, path);
|
||||||
}
|
}
|
||||||
+EXPORT_SYMBOL_GPL(security_path_truncate);
|
+EXPORT_SYMBOL_GPL(security_path_truncate);
|
||||||
|
|
||||||
int security_path_chmod(struct path *path, umode_t mode)
|
int security_path_chmod(const struct path *path, umode_t mode)
|
||||||
{
|
{
|
||||||
@@ -491,6 +495,7 @@ int security_path_chmod(struct path *pat
|
@@ -492,6 +496,7 @@ int security_path_chmod(const struct pat
|
||||||
return 0;
|
return 0;
|
||||||
return call_int_hook(path_chmod, 0, path, mode);
|
return call_int_hook(path_chmod, 0, path, mode);
|
||||||
}
|
}
|
||||||
+EXPORT_SYMBOL_GPL(security_path_chmod);
|
+EXPORT_SYMBOL_GPL(security_path_chmod);
|
||||||
|
|
||||||
int security_path_chown(struct path *path, kuid_t uid, kgid_t gid)
|
int security_path_chown(const struct path *path, kuid_t uid, kgid_t gid)
|
||||||
{
|
{
|
||||||
@@ -498,6 +503,7 @@ int security_path_chown(struct path *pat
|
@@ -499,6 +504,7 @@ int security_path_chown(const struct pat
|
||||||
return 0;
|
return 0;
|
||||||
return call_int_hook(path_chown, 0, path, uid, gid);
|
return call_int_hook(path_chown, 0, path, uid, gid);
|
||||||
}
|
}
|
||||||
+EXPORT_SYMBOL_GPL(security_path_chown);
|
+EXPORT_SYMBOL_GPL(security_path_chown);
|
||||||
|
|
||||||
int security_path_chroot(struct path *path)
|
int security_path_chroot(const struct path *path)
|
||||||
{
|
{
|
||||||
@@ -583,6 +589,7 @@ int security_inode_readlink(struct dentr
|
@@ -584,6 +590,7 @@ int security_inode_readlink(struct dentr
|
||||||
return 0;
|
return 0;
|
||||||
return call_int_hook(inode_readlink, 0, dentry);
|
return call_int_hook(inode_readlink, 0, dentry);
|
||||||
}
|
}
|
||||||
@@ -356,7 +368,7 @@ diff -Nurp linux-4.6-aufs/security/security.c linux-4.6-aufs-mod/security/securi
|
|||||||
|
|
||||||
int security_inode_follow_link(struct dentry *dentry, struct inode *inode,
|
int security_inode_follow_link(struct dentry *dentry, struct inode *inode,
|
||||||
bool rcu)
|
bool rcu)
|
||||||
@@ -598,6 +605,7 @@ int security_inode_permission(struct ino
|
@@ -599,6 +606,7 @@ int security_inode_permission(struct ino
|
||||||
return 0;
|
return 0;
|
||||||
return call_int_hook(inode_permission, 0, inode, mask);
|
return call_int_hook(inode_permission, 0, inode, mask);
|
||||||
}
|
}
|
||||||
@@ -364,7 +376,7 @@ diff -Nurp linux-4.6-aufs/security/security.c linux-4.6-aufs-mod/security/securi
|
|||||||
|
|
||||||
int security_inode_setattr(struct dentry *dentry, struct iattr *attr)
|
int security_inode_setattr(struct dentry *dentry, struct iattr *attr)
|
||||||
{
|
{
|
||||||
@@ -736,6 +744,7 @@ int security_file_permission(struct file
|
@@ -737,6 +745,7 @@ int security_file_permission(struct file
|
||||||
|
|
||||||
return fsnotify_perm(file, mask);
|
return fsnotify_perm(file, mask);
|
||||||
}
|
}
|
||||||
@@ -372,7 +384,7 @@ diff -Nurp linux-4.6-aufs/security/security.c linux-4.6-aufs-mod/security/securi
|
|||||||
|
|
||||||
int security_file_alloc(struct file *file)
|
int security_file_alloc(struct file *file)
|
||||||
{
|
{
|
||||||
@@ -795,6 +804,7 @@ int security_mmap_file(struct file *file
|
@@ -796,6 +805,7 @@ int security_mmap_file(struct file *file
|
||||||
return ret;
|
return ret;
|
||||||
return ima_file_mmap(file, prot);
|
return ima_file_mmap(file, prot);
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
|
||||||
|
Mark as 4.7 so we can rebuild aufs tools with matching 4.7 check
|
||||||
|
|
||||||
|
Signed-off-by: Thomas Backlund <tmb@mageia.org>
|
||||||
|
|
||||||
|
--- linux/include/uapi/linux/aufs_type.h.orig
|
||||||
|
+++ linux/include/uapi/linux/aufs_type.h
|
||||||
|
@@ -26,7 +26,7 @@
|
||||||
|
|
||||||
|
#include <linux/limits.h>
|
||||||
|
|
||||||
|
-#define AUFS_VERSION "4.x-rcN"
|
||||||
|
+#define AUFS_VERSION "4.7"
|
||||||
|
|
||||||
|
/* todo? move this to linux-2.6.19/include/magic.h */
|
||||||
|
#define AUFS_SUPER_MAGIC ('a' << 24 | 'u' << 16 | 'f' << 8 | 's')
|
||||||
+334
-282
File diff suppressed because it is too large
Load Diff
-63
@@ -1,63 +0,0 @@
|
|||||||
From 1e3fa0acfec677e915d7de5ac6e1f18cfa4f805b Mon Sep 17 00:00:00 2001
|
|
||||||
From: Lyude <cpaul@redhat.com>
|
|
||||||
Date: Thu, 9 Jun 2016 11:58:15 -0400
|
|
||||||
Subject: [PATCH] drm/i915/fbc: Disable on HSW by default for now
|
|
||||||
|
|
||||||
>From https://bugs.freedesktop.org/show_bug.cgi?id=96461 :
|
|
||||||
|
|
||||||
This was kind of a difficult bug to track down. If you're using a
|
|
||||||
Haswell system running GNOME and you have fbc completely enabled and
|
|
||||||
working, playing videos can result in video artifacts. Steps to
|
|
||||||
reproduce:
|
|
||||||
|
|
||||||
- Run GNOME
|
|
||||||
- Ensure FBC is enabled and active
|
|
||||||
- Download a movie, I used the ogg version of Big Buck Bunny for this
|
|
||||||
- Run `gst-launch-1.0 filesrc location='some_movie.ogg' ! decodebin !
|
|
||||||
glimagesink` in a terminal
|
|
||||||
- Watch for about over a minute, you'll see small horizontal lines go
|
|
||||||
down the screen.
|
|
||||||
|
|
||||||
For the time being, disable FBC for Haswell by default.
|
|
||||||
|
|
||||||
Stefan Richter reported kernel freezes (no video artifacts) when fbc
|
|
||||||
is on. (E3-1245 v3 with HD P4600; openbox and some KDE and LXDE
|
|
||||||
applications, thread begins at https://lkml.org/lkml/2016/4/26/813).
|
|
||||||
We also got reports from Steven Honeyman on openbox+roxterm.
|
|
||||||
|
|
||||||
v2 (From Paulo):
|
|
||||||
- Add extra information to the commit message
|
|
||||||
- Add Fixes tag
|
|
||||||
- Rebase
|
|
||||||
|
|
||||||
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=96461
|
|
||||||
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=96464
|
|
||||||
Fixes: a98ee79317b4 ("drm/i915/fbc: enable FBC by default on HSW and BDW")
|
|
||||||
Cc: stable@vger.kernel.org
|
|
||||||
Reviewed-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
|
|
||||||
Signed-off-by: Lyude <cpaul@redhat.com>
|
|
||||||
Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
|
|
||||||
Link: http://patchwork.freedesktop.org/patch/msgid/1465487895-7401-1-git-send-email-cpaul@redhat.com
|
|
||||||
(cherry picked from commit c7f7e2feffb0294302041507dfd5fc15f01afccc)
|
|
||||||
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
|
|
||||||
---
|
|
||||||
drivers/gpu/drm/i915/intel_fbc.c | 3 +--
|
|
||||||
1 file changed, 1 insertion(+), 2 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/drivers/gpu/drm/i915/intel_fbc.c b/drivers/gpu/drm/i915/intel_fbc.c
|
|
||||||
index d5a7cfe..647127f 100644
|
|
||||||
--- a/drivers/gpu/drm/i915/intel_fbc.c
|
|
||||||
+++ b/drivers/gpu/drm/i915/intel_fbc.c
|
|
||||||
@@ -824,8 +824,7 @@ static bool intel_fbc_can_choose(struct intel_crtc *crtc)
|
|
||||||
{
|
|
||||||
struct drm_i915_private *dev_priv = crtc->base.dev->dev_private;
|
|
||||||
struct intel_fbc *fbc = &dev_priv->fbc;
|
|
||||||
- bool enable_by_default = IS_HASWELL(dev_priv) ||
|
|
||||||
- IS_BROADWELL(dev_priv);
|
|
||||||
+ bool enable_by_default = IS_BROADWELL(dev_priv);
|
|
||||||
|
|
||||||
if (intel_vgpu_active(dev_priv->dev)) {
|
|
||||||
fbc->no_fbc_reason = "VGPU is active";
|
|
||||||
--
|
|
||||||
2.9.0
|
|
||||||
|
|
||||||
-49
@@ -1,49 +0,0 @@
|
|||||||
From e838a45f9392a5bd2be1cd3ab0b16ae85857461c Mon Sep 17 00:00:00 2001
|
|
||||||
From: Mel Gorman <mgorman@techsingularity.net>
|
|
||||||
Date: Fri, 24 Jun 2016 14:49:37 -0700
|
|
||||||
Subject: [PATCH] mm, sl[au]b: add __GFP_ATOMIC to the GFP reclaim mask
|
|
||||||
|
|
||||||
Commit d0164adc89f6 ("mm, page_alloc: distinguish between being unable
|
|
||||||
to sleep, unwilling to sleep and avoiding waking kswapd") modified
|
|
||||||
__GFP_WAIT to explicitly identify the difference between atomic callers
|
|
||||||
and those that were unwilling to sleep. Later the definition was
|
|
||||||
removed entirely.
|
|
||||||
|
|
||||||
The GFP_RECLAIM_MASK is the set of flags that affect watermark checking
|
|
||||||
and reclaim behaviour but __GFP_ATOMIC was never added. Without it,
|
|
||||||
atomic users of the slab allocator strip the __GFP_ATOMIC flag and
|
|
||||||
cannot access the page allocator atomic reserves. This patch addresses
|
|
||||||
the problem.
|
|
||||||
|
|
||||||
The user-visible impact depends on the workload but potentially atomic
|
|
||||||
allocations unnecessarily fail without this path.
|
|
||||||
|
|
||||||
Link: http://lkml.kernel.org/r/20160610093832.GK2527@techsingularity.net
|
|
||||||
Signed-off-by: Mel Gorman <mgorman@techsingularity.net>
|
|
||||||
Reported-by: Marcin Wojtas <mw@semihalf.com>
|
|
||||||
Acked-by: Vlastimil Babka <vbabka@suse.cz>
|
|
||||||
Acked-by: Michal Hocko <mhocko@suse.com>
|
|
||||||
Cc: <stable@vger.kernel.org> [4.4+]
|
|
||||||
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
|
|
||||||
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
|
|
||||||
---
|
|
||||||
mm/internal.h | 3 ++-
|
|
||||||
1 file changed, 2 insertions(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/mm/internal.h b/mm/internal.h
|
|
||||||
index a37e5b6..2524ec8 100644
|
|
||||||
--- a/mm/internal.h
|
|
||||||
+++ b/mm/internal.h
|
|
||||||
@@ -24,7 +24,8 @@
|
|
||||||
*/
|
|
||||||
#define GFP_RECLAIM_MASK (__GFP_RECLAIM|__GFP_HIGH|__GFP_IO|__GFP_FS|\
|
|
||||||
__GFP_NOWARN|__GFP_REPEAT|__GFP_NOFAIL|\
|
|
||||||
- __GFP_NORETRY|__GFP_MEMALLOC|__GFP_NOMEMALLOC)
|
|
||||||
+ __GFP_NORETRY|__GFP_MEMALLOC|__GFP_NOMEMALLOC|\
|
|
||||||
+ __GFP_ATOMIC)
|
|
||||||
|
|
||||||
/* The GFP flags allowed during early boot */
|
|
||||||
#define GFP_BOOT_MASK (__GFP_BITS_MASK & ~(__GFP_RECLAIM|__GFP_IO|__GFP_FS))
|
|
||||||
--
|
|
||||||
2.9.0
|
|
||||||
|
|
||||||
-39
@@ -1,39 +0,0 @@
|
|||||||
From b9b4bb26af017dbe930cd4df7f9b2fc3a0497bfe Mon Sep 17 00:00:00 2001
|
|
||||||
From: Anthony Romano <anthony.romano@coreos.com>
|
|
||||||
Date: Fri, 24 Jun 2016 14:48:43 -0700
|
|
||||||
Subject: [PATCH] tmpfs: don't undo fallocate past its last page
|
|
||||||
|
|
||||||
When fallocate is interrupted it will undo a range that extends one byte
|
|
||||||
past its range of allocated pages. This can corrupt an in-use page by
|
|
||||||
zeroing out its first byte. Instead, undo using the inclusive byte
|
|
||||||
range.
|
|
||||||
|
|
||||||
Fixes: 1635f6a74152f1d ("tmpfs: undo fallocation on failure")
|
|
||||||
Link: http://lkml.kernel.org/r/1462713387-16724-1-git-send-email-anthony.romano@coreos.com
|
|
||||||
Signed-off-by: Anthony Romano <anthony.romano@coreos.com>
|
|
||||||
Cc: Vlastimil Babka <vbabka@suse.cz>
|
|
||||||
Cc: Hugh Dickins <hughd@google.com>
|
|
||||||
Cc: Brandon Philips <brandon@ifup.co>
|
|
||||||
Cc: <stable@vger.kernel.org>
|
|
||||||
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
|
|
||||||
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
|
|
||||||
---
|
|
||||||
mm/shmem.c | 2 +-
|
|
||||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/mm/shmem.c b/mm/shmem.c
|
|
||||||
index a361449..24463b6 100644
|
|
||||||
--- a/mm/shmem.c
|
|
||||||
+++ b/mm/shmem.c
|
|
||||||
@@ -2227,7 +2227,7 @@ static long shmem_fallocate(struct file *file, int mode, loff_t offset,
|
|
||||||
/* Remove the !PageUptodate pages we added */
|
|
||||||
shmem_undo_range(inode,
|
|
||||||
(loff_t)start << PAGE_SHIFT,
|
|
||||||
- (loff_t)index << PAGE_SHIFT, true);
|
|
||||||
+ ((loff_t)index << PAGE_SHIFT) - 1, true);
|
|
||||||
goto undone;
|
|
||||||
}
|
|
||||||
|
|
||||||
--
|
|
||||||
2.9.0
|
|
||||||
|
|
||||||
@@ -0,0 +1,42 @@
|
|||||||
|
From: Luca Coelho <luca-XPOmlcxoEMv1KXRcyAk9cg@public.gmane.org>
|
||||||
|
Subject: [PATCH 13/56] iwlwifi: add new 8260 PCI IDs
|
||||||
|
Date: Wed, 6 Jul 2016 13:40:08 +0300
|
||||||
|
|
||||||
|
From: Oren Givon <oren.givon-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
|
||||||
|
|
||||||
|
Add 3 new 8260 series PCI IDs:
|
||||||
|
- (0x24F3, 0x10B0)
|
||||||
|
- (0x24F3, 0xD0B0)
|
||||||
|
- (0x24F3, 0xB0B0)
|
||||||
|
|
||||||
|
CC: <stable-u79uwXL29TY76Z2rM5mHXA@public.gmane.org> [4.1+]
|
||||||
|
Signed-off-by: Oren Givon <oren.givon-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
|
||||||
|
Signed-off-by: David Spinadel <david.spinadel-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
|
||||||
|
Signed-off-by: Luca Coelho <luciano.coelho-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
|
||||||
|
---
|
||||||
|
drivers/net/wireless/intel/iwlwifi/pcie/drv.c | 3 +++
|
||||||
|
1 file changed, 3 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/drivers/net/wireless/intel/iwlwifi/pcie/drv.c b/drivers/net/wireless/intel/iwlwifi/pcie/drv.c
|
||||||
|
index a588b05..1cae19d 100644
|
||||||
|
--- a/drivers/net/wireless/intel/iwlwifi/pcie/drv.c
|
||||||
|
+++ b/drivers/net/wireless/intel/iwlwifi/pcie/drv.c
|
||||||
|
@@ -433,6 +433,7 @@ static const struct pci_device_id iwl_hw_card_ids[] = {
|
||||||
|
/* 8000 Series */
|
||||||
|
{IWL_PCI_DEVICE(0x24F3, 0x0010, iwl8260_2ac_cfg)},
|
||||||
|
{IWL_PCI_DEVICE(0x24F3, 0x1010, iwl8260_2ac_cfg)},
|
||||||
|
+ {IWL_PCI_DEVICE(0x24F3, 0x10B0, iwl8260_2ac_cfg)},
|
||||||
|
{IWL_PCI_DEVICE(0x24F3, 0x0130, iwl8260_2ac_cfg)},
|
||||||
|
{IWL_PCI_DEVICE(0x24F3, 0x1130, iwl8260_2ac_cfg)},
|
||||||
|
{IWL_PCI_DEVICE(0x24F3, 0x0132, iwl8260_2ac_cfg)},
|
||||||
|
@@ -454,6 +455,8 @@ static const struct pci_device_id iwl_hw_card_ids[] = {
|
||||||
|
{IWL_PCI_DEVICE(0x24F3, 0xD010, iwl8260_2ac_cfg)},
|
||||||
|
{IWL_PCI_DEVICE(0x24F3, 0xC050, iwl8260_2ac_cfg)},
|
||||||
|
{IWL_PCI_DEVICE(0x24F3, 0xD050, iwl8260_2ac_cfg)},
|
||||||
|
+ {IWL_PCI_DEVICE(0x24F3, 0xD0B0, iwl8260_2ac_cfg)},
|
||||||
|
+ {IWL_PCI_DEVICE(0x24F3, 0xB0B0, iwl8260_2ac_cfg)},
|
||||||
|
{IWL_PCI_DEVICE(0x24F3, 0x8010, iwl8260_2ac_cfg)},
|
||||||
|
{IWL_PCI_DEVICE(0x24F3, 0x8110, iwl8260_2ac_cfg)},
|
||||||
|
{IWL_PCI_DEVICE(0x24F3, 0x9010, iwl8260_2ac_cfg)},
|
||||||
|
--
|
||||||
|
2.8.1
|
||||||
@@ -0,0 +1,48 @@
|
|||||||
|
From: Luca Coelho <luca@coelho.fi>
|
||||||
|
Subject: [PATCH 14/56] iwlwifi: add new 8265
|
||||||
|
Date: Wed, 6 Jul 2016 13:40:09 +0300
|
||||||
|
|
||||||
|
From: Oren Givon <oren.givon@intel.com>
|
||||||
|
|
||||||
|
Add 6 new 8265 series PCI IDs:
|
||||||
|
- (0x24FD, 0x1130)
|
||||||
|
- (0x24FD, 0x0130)
|
||||||
|
- (0x24FD, 0x0910)
|
||||||
|
- (0x24FD, 0x0930)
|
||||||
|
- (0x24FD, 0x0950)
|
||||||
|
- (0x24FD, 0x0850)
|
||||||
|
|
||||||
|
CC: <stable@vger.kernel.org> [4.6+]
|
||||||
|
Signed-off-by: Oren Givon <oren.givon@intel.com>
|
||||||
|
Signed-off-by: David Spinadel <david.spinadel@intel.com>
|
||||||
|
Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
|
||||||
|
---
|
||||||
|
drivers/net/wireless/intel/iwlwifi/pcie/drv.c | 6 ++++++
|
||||||
|
1 file changed, 6 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/drivers/net/wireless/intel/iwlwifi/pcie/drv.c b/drivers/net/wireless/intel/iwlwifi/pcie/drv.c
|
||||||
|
index 1cae19d..6f020e4 100644
|
||||||
|
--- a/drivers/net/wireless/intel/iwlwifi/pcie/drv.c
|
||||||
|
+++ b/drivers/net/wireless/intel/iwlwifi/pcie/drv.c
|
||||||
|
@@ -484,6 +484,8 @@ static const struct pci_device_id iwl_hw_card_ids[] = {
|
||||||
|
{IWL_PCI_DEVICE(0x24FD, 0x0010, iwl8265_2ac_cfg)},
|
||||||
|
{IWL_PCI_DEVICE(0x24FD, 0x0110, iwl8265_2ac_cfg)},
|
||||||
|
{IWL_PCI_DEVICE(0x24FD, 0x1110, iwl8265_2ac_cfg)},
|
||||||
|
+ {IWL_PCI_DEVICE(0x24FD, 0x1130, iwl8265_2ac_cfg)},
|
||||||
|
+ {IWL_PCI_DEVICE(0x24FD, 0x0130, iwl8265_2ac_cfg)},
|
||||||
|
{IWL_PCI_DEVICE(0x24FD, 0x1010, iwl8265_2ac_cfg)},
|
||||||
|
{IWL_PCI_DEVICE(0x24FD, 0x0050, iwl8265_2ac_cfg)},
|
||||||
|
{IWL_PCI_DEVICE(0x24FD, 0x0150, iwl8265_2ac_cfg)},
|
||||||
|
@@ -494,6 +496,10 @@ static const struct pci_device_id iwl_hw_card_ids[] = {
|
||||||
|
{IWL_PCI_DEVICE(0x24FD, 0x0810, iwl8265_2ac_cfg)},
|
||||||
|
{IWL_PCI_DEVICE(0x24FD, 0x9110, iwl8265_2ac_cfg)},
|
||||||
|
{IWL_PCI_DEVICE(0x24FD, 0x8130, iwl8265_2ac_cfg)},
|
||||||
|
+ {IWL_PCI_DEVICE(0x24FD, 0x0910, iwl8265_2ac_cfg)},
|
||||||
|
+ {IWL_PCI_DEVICE(0x24FD, 0x0930, iwl8265_2ac_cfg)},
|
||||||
|
+ {IWL_PCI_DEVICE(0x24FD, 0x0950, iwl8265_2ac_cfg)},
|
||||||
|
+ {IWL_PCI_DEVICE(0x24FD, 0x0850, iwl8265_2ac_cfg)},
|
||||||
|
|
||||||
|
/* 9000 Series */
|
||||||
|
{IWL_PCI_DEVICE(0x2526, 0x0000, iwl9260_2ac_cfg)},
|
||||||
|
--
|
||||||
|
2.8.1
|
||||||
+58
@@ -0,0 +1,58 @@
|
|||||||
|
From: Luca Coelho <luca-XPOmlcxoEMv1KXRcyAk9cg@public.gmane.org>
|
||||||
|
Subject: [PATCH 28/56] iwlwifi: pcie: enable interrupts before releasing the NIC's CPU
|
||||||
|
Date: Wed, 6 Jul 2016 13:40:23 +0300
|
||||||
|
|
||||||
|
From: Emmanuel Grumbach <emmanuel.grumbach-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
|
||||||
|
|
||||||
|
The NIC's CPU gets started after the firmware has been
|
||||||
|
written to its memory. The first thing it does is to
|
||||||
|
send an interrupt to let the driver know that it is
|
||||||
|
running. In order to get that interrupt, the driver needs
|
||||||
|
to make sure it is not masked. Of course, the interrupt
|
||||||
|
needs to be enabled in the driver before the CPU starts to
|
||||||
|
run.
|
||||||
|
I mistakenly inversed those two steps leading to races
|
||||||
|
which prevented the driver from getting the alive interrupt
|
||||||
|
from the firmware.
|
||||||
|
Fix that.
|
||||||
|
|
||||||
|
Cc: <stable-u79uwXL29TY76Z2rM5mHXA@public.gmane.org> [4.5+]
|
||||||
|
Fixes: a6bd005fe92 ("iwlwifi: pcie: fix RF-Kill vs. firmware load race")
|
||||||
|
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
|
||||||
|
Signed-off-by: Luca Coelho <luciano.coelho-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
|
||||||
|
---
|
||||||
|
drivers/net/wireless/intel/iwlwifi/pcie/trans.c | 5 ++++-
|
||||||
|
1 file changed, 4 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/drivers/net/wireless/intel/iwlwifi/pcie/trans.c b/drivers/net/wireless/intel/iwlwifi/pcie/trans.c
|
||||||
|
index 3badebb..ac623c3 100644
|
||||||
|
--- a/drivers/net/wireless/intel/iwlwifi/pcie/trans.c
|
||||||
|
+++ b/drivers/net/wireless/intel/iwlwifi/pcie/trans.c
|
||||||
|
@@ -801,6 +801,8 @@ static int iwl_pcie_load_cpu_sections_8000(struct iwl_trans *trans,
|
||||||
|
|
||||||
|
*first_ucode_section = last_read_idx;
|
||||||
|
|
||||||
|
+ iwl_enable_interrupts(trans);
|
||||||
|
+
|
||||||
|
if (cpu == 1)
|
||||||
|
iwl_write_direct32(trans, FH_UCODE_LOAD_STATUS, 0xFFFF);
|
||||||
|
else
|
||||||
|
@@ -980,6 +982,8 @@ static int iwl_pcie_load_given_ucode(struct iwl_trans *trans,
|
||||||
|
iwl_pcie_apply_destination(trans);
|
||||||
|
}
|
||||||
|
|
||||||
|
+ iwl_enable_interrupts(trans);
|
||||||
|
+
|
||||||
|
/* release CPU reset */
|
||||||
|
iwl_write32(trans, CSR_RESET, 0);
|
||||||
|
|
||||||
|
@@ -1215,7 +1219,6 @@ static int iwl_trans_pcie_start_fw(struct iwl_trans *trans,
|
||||||
|
ret = iwl_pcie_load_given_ucode_8000(trans, fw);
|
||||||
|
else
|
||||||
|
ret = iwl_pcie_load_given_ucode(trans, fw);
|
||||||
|
- iwl_enable_interrupts(trans);
|
||||||
|
|
||||||
|
/* re-check RF-Kill state since we may have missed the interrupt */
|
||||||
|
hw_rfkill = iwl_is_rfkill_set(trans);
|
||||||
|
--
|
||||||
|
2.8.1
|
||||||
+195
@@ -0,0 +1,195 @@
|
|||||||
|
From: Luca Coelho <luca@coelho.fi>
|
||||||
|
Subject: [PATCH 48/56] iwlwifi: pcie: fix a race in firmware loading flow
|
||||||
|
Date: Wed, 6 Jul 2016 13:40:43 +0300
|
||||||
|
|
||||||
|
From: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
|
||||||
|
|
||||||
|
Upon firmware load interrupt (FH_TX), the ISR re-enables the
|
||||||
|
firmware load interrupt only to avoid races with other
|
||||||
|
flows as described in the commit below. When the firmware
|
||||||
|
is completely loaded, the thread that is loading the
|
||||||
|
firmware will enable all the interrupts to make sure that
|
||||||
|
the driver gets the ALIVE interrupt.
|
||||||
|
The problem with that is that the thread that is loading
|
||||||
|
the firmware is actually racing against the ISR and we can
|
||||||
|
get to the following situation:
|
||||||
|
|
||||||
|
CPU0 CPU1
|
||||||
|
iwl_pcie_load_given_ucode
|
||||||
|
...
|
||||||
|
iwl_pcie_load_firmware_chunk
|
||||||
|
wait_for_interrupt
|
||||||
|
<interrupt>
|
||||||
|
ISR handles CSR_INT_BIT_FH_TX
|
||||||
|
ISR wakes up the thread on CPU0
|
||||||
|
/* enable all the interrupts
|
||||||
|
* to get the ALIVE interrupt
|
||||||
|
*/
|
||||||
|
iwl_enable_interrupts
|
||||||
|
ISR re-enables CSR_INT_BIT_FH_TX only
|
||||||
|
/* start the firmware */
|
||||||
|
iwl_write32(trans, CSR_RESET, 0);
|
||||||
|
|
||||||
|
BUG! ALIVE interrupt will never arrive since it has been
|
||||||
|
masked by CPU1.
|
||||||
|
|
||||||
|
In order to fix that, change the ISR to first check if
|
||||||
|
STATUS_INT_ENABLED is set. If so, re-enable all the
|
||||||
|
interrupts. If STATUS_INT_ENABLED is clear, then we can
|
||||||
|
check what specific interrupt happened and re-enable only
|
||||||
|
that specific interrupt (RFKILL or FH_TX).
|
||||||
|
|
||||||
|
All the credit for the analysis goes to Kirtika who did the
|
||||||
|
actual debugging work.
|
||||||
|
|
||||||
|
Cc: <stable@vger.kernel.org> [4.5+]
|
||||||
|
Fixes: a6bd005fe92 ("iwlwifi: pcie: fix RF-Kill vs. firmware load race")
|
||||||
|
Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
|
||||||
|
---
|
||||||
|
drivers/net/wireless/intel/iwlwifi/pcie/internal.h | 21 +++++++++++++++++++--
|
||||||
|
drivers/net/wireless/intel/iwlwifi/pcie/rx.c | 16 +++++++++-------
|
||||||
|
drivers/net/wireless/intel/iwlwifi/pcie/trans.c | 8 --------
|
||||||
|
3 files changed, 28 insertions(+), 17 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/drivers/net/wireless/intel/iwlwifi/pcie/internal.h b/drivers/net/wireless/intel/iwlwifi/pcie/internal.h
|
||||||
|
index f684b9d..54af3da 100644
|
||||||
|
--- a/drivers/net/wireless/intel/iwlwifi/pcie/internal.h
|
||||||
|
+++ b/drivers/net/wireless/intel/iwlwifi/pcie/internal.h
|
||||||
|
@@ -500,7 +500,7 @@ void iwl_pcie_dump_csr(struct iwl_trans *trans);
|
||||||
|
/*****************************************************
|
||||||
|
* Helpers
|
||||||
|
******************************************************/
|
||||||
|
-static inline void iwl_disable_interrupts(struct iwl_trans *trans)
|
||||||
|
+static inline void _iwl_disable_interrupts(struct iwl_trans *trans)
|
||||||
|
{
|
||||||
|
struct iwl_trans_pcie *trans_pcie = IWL_TRANS_GET_PCIE_TRANS(trans);
|
||||||
|
|
||||||
|
@@ -523,7 +523,16 @@ static inline void iwl_disable_interrupts(struct iwl_trans *trans)
|
||||||
|
IWL_DEBUG_ISR(trans, "Disabled interrupts\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
-static inline void iwl_enable_interrupts(struct iwl_trans *trans)
|
||||||
|
+static inline void iwl_disable_interrupts(struct iwl_trans *trans)
|
||||||
|
+{
|
||||||
|
+ struct iwl_trans_pcie *trans_pcie = IWL_TRANS_GET_PCIE_TRANS(trans);
|
||||||
|
+
|
||||||
|
+ spin_lock(&trans_pcie->irq_lock);
|
||||||
|
+ _iwl_disable_interrupts(trans);
|
||||||
|
+ spin_unlock(&trans_pcie->irq_lock);
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static inline void _iwl_enable_interrupts(struct iwl_trans *trans)
|
||||||
|
{
|
||||||
|
struct iwl_trans_pcie *trans_pcie = IWL_TRANS_GET_PCIE_TRANS(trans);
|
||||||
|
|
||||||
|
@@ -546,6 +555,14 @@ static inline void iwl_enable_interrupts(struct iwl_trans *trans)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
+static inline void iwl_enable_interrupts(struct iwl_trans *trans)
|
||||||
|
+{
|
||||||
|
+ struct iwl_trans_pcie *trans_pcie = IWL_TRANS_GET_PCIE_TRANS(trans);
|
||||||
|
+
|
||||||
|
+ spin_lock(&trans_pcie->irq_lock);
|
||||||
|
+ _iwl_enable_interrupts(trans);
|
||||||
|
+ spin_unlock(&trans_pcie->irq_lock);
|
||||||
|
+}
|
||||||
|
static inline void iwl_enable_hw_int_msk_msix(struct iwl_trans *trans, u32 msk)
|
||||||
|
{
|
||||||
|
struct iwl_trans_pcie *trans_pcie = IWL_TRANS_GET_PCIE_TRANS(trans);
|
||||||
|
diff --git a/drivers/net/wireless/intel/iwlwifi/pcie/rx.c b/drivers/net/wireless/intel/iwlwifi/pcie/rx.c
|
||||||
|
index 0296c29..45f1b7e 100644
|
||||||
|
--- a/drivers/net/wireless/intel/iwlwifi/pcie/rx.c
|
||||||
|
+++ b/drivers/net/wireless/intel/iwlwifi/pcie/rx.c
|
||||||
|
@@ -1535,7 +1535,7 @@ irqreturn_t iwl_pcie_irq_handler(int irq, void *dev_id)
|
||||||
|
* have anything to service
|
||||||
|
*/
|
||||||
|
if (test_bit(STATUS_INT_ENABLED, &trans->status))
|
||||||
|
- iwl_enable_interrupts(trans);
|
||||||
|
+ _iwl_enable_interrupts(trans);
|
||||||
|
spin_unlock(&trans_pcie->irq_lock);
|
||||||
|
lock_map_release(&trans->sync_cmd_lockdep_map);
|
||||||
|
return IRQ_NONE;
|
||||||
|
@@ -1727,15 +1727,17 @@ irqreturn_t iwl_pcie_irq_handler(int irq, void *dev_id)
|
||||||
|
inta & ~trans_pcie->inta_mask);
|
||||||
|
}
|
||||||
|
|
||||||
|
+ spin_lock(&trans_pcie->irq_lock);
|
||||||
|
+ /* only Re-enable all interrupt if disabled by irq */
|
||||||
|
+ if (test_bit(STATUS_INT_ENABLED, &trans->status))
|
||||||
|
+ _iwl_enable_interrupts(trans);
|
||||||
|
/* we are loading the firmware, enable FH_TX interrupt only */
|
||||||
|
- if (handled & CSR_INT_BIT_FH_TX)
|
||||||
|
+ else if (handled & CSR_INT_BIT_FH_TX)
|
||||||
|
iwl_enable_fw_load_int(trans);
|
||||||
|
- /* only Re-enable all interrupt if disabled by irq */
|
||||||
|
- else if (test_bit(STATUS_INT_ENABLED, &trans->status))
|
||||||
|
- iwl_enable_interrupts(trans);
|
||||||
|
/* Re-enable RF_KILL if it occurred */
|
||||||
|
else if (handled & CSR_INT_BIT_RF_KILL)
|
||||||
|
iwl_enable_rfkill_int(trans);
|
||||||
|
+ spin_unlock(&trans_pcie->irq_lock);
|
||||||
|
|
||||||
|
out:
|
||||||
|
lock_map_release(&trans->sync_cmd_lockdep_map);
|
||||||
|
@@ -1799,7 +1801,7 @@ void iwl_pcie_reset_ict(struct iwl_trans *trans)
|
||||||
|
return;
|
||||||
|
|
||||||
|
spin_lock(&trans_pcie->irq_lock);
|
||||||
|
- iwl_disable_interrupts(trans);
|
||||||
|
+ _iwl_disable_interrupts(trans);
|
||||||
|
|
||||||
|
memset(trans_pcie->ict_tbl, 0, ICT_SIZE);
|
||||||
|
|
||||||
|
@@ -1815,7 +1817,7 @@ void iwl_pcie_reset_ict(struct iwl_trans *trans)
|
||||||
|
trans_pcie->use_ict = true;
|
||||||
|
trans_pcie->ict_index = 0;
|
||||||
|
iwl_write32(trans, CSR_INT, trans_pcie->inta_mask);
|
||||||
|
- iwl_enable_interrupts(trans);
|
||||||
|
+ _iwl_enable_interrupts(trans);
|
||||||
|
spin_unlock(&trans_pcie->irq_lock);
|
||||||
|
}
|
||||||
|
|
||||||
|
diff --git a/drivers/net/wireless/intel/iwlwifi/pcie/trans.c b/drivers/net/wireless/intel/iwlwifi/pcie/trans.c
|
||||||
|
index 3b7a414..9e953a4 100644
|
||||||
|
--- a/drivers/net/wireless/intel/iwlwifi/pcie/trans.c
|
||||||
|
+++ b/drivers/net/wireless/intel/iwlwifi/pcie/trans.c
|
||||||
|
@@ -1037,9 +1037,7 @@ static void _iwl_trans_pcie_stop_device(struct iwl_trans *trans, bool low_power)
|
||||||
|
was_hw_rfkill = iwl_is_rfkill_set(trans);
|
||||||
|
|
||||||
|
/* tell the device to stop sending interrupts */
|
||||||
|
- spin_lock(&trans_pcie->irq_lock);
|
||||||
|
iwl_disable_interrupts(trans);
|
||||||
|
- spin_unlock(&trans_pcie->irq_lock);
|
||||||
|
|
||||||
|
/* device going down, Stop using ICT table */
|
||||||
|
iwl_pcie_disable_ict(trans);
|
||||||
|
@@ -1083,9 +1081,7 @@ static void _iwl_trans_pcie_stop_device(struct iwl_trans *trans, bool low_power)
|
||||||
|
* the time, unless the interrupt is ACKed even if the interrupt
|
||||||
|
* should be masked. Re-ACK all the interrupts here.
|
||||||
|
*/
|
||||||
|
- spin_lock(&trans_pcie->irq_lock);
|
||||||
|
iwl_disable_interrupts(trans);
|
||||||
|
- spin_unlock(&trans_pcie->irq_lock);
|
||||||
|
|
||||||
|
/* clear all status bits */
|
||||||
|
clear_bit(STATUS_SYNC_HCMD_ACTIVE, &trans->status);
|
||||||
|
@@ -1578,15 +1574,11 @@ static void iwl_trans_pcie_op_mode_leave(struct iwl_trans *trans)
|
||||||
|
mutex_lock(&trans_pcie->mutex);
|
||||||
|
|
||||||
|
/* disable interrupts - don't enable HW RF kill interrupt */
|
||||||
|
- spin_lock(&trans_pcie->irq_lock);
|
||||||
|
iwl_disable_interrupts(trans);
|
||||||
|
- spin_unlock(&trans_pcie->irq_lock);
|
||||||
|
|
||||||
|
iwl_pcie_apm_stop(trans, true);
|
||||||
|
|
||||||
|
- spin_lock(&trans_pcie->irq_lock);
|
||||||
|
iwl_disable_interrupts(trans);
|
||||||
|
- spin_unlock(&trans_pcie->irq_lock);
|
||||||
|
|
||||||
|
iwl_pcie_disable_ict(trans);
|
||||||
|
|
||||||
|
--
|
||||||
|
2.8.1
|
||||||
|
|
||||||
@@ -77,9 +77,6 @@ acpi-processor-M720SR-limit-to-C2.patch
|
|||||||
# backlight fixes
|
# backlight fixes
|
||||||
ACPI-video-Add-a-quirk-to-force-acpi-video-backlight.patch
|
ACPI-video-Add-a-quirk-to-force-acpi-video-backlight.patch
|
||||||
|
|
||||||
#
|
|
||||||
acpi-ACPICA-Namespace-Fix-deadlock-triggered-by-MLC-suppo.patch
|
|
||||||
|
|
||||||
###
|
###
|
||||||
### Block
|
### Block
|
||||||
###
|
###
|
||||||
@@ -125,9 +122,6 @@ block-Make-CFQ-default-to-IOPS-mode-on-SSDs.patch
|
|||||||
# ahci ids
|
# ahci ids
|
||||||
ahci-add-new-Intel-device-IDs.patch
|
ahci-add-new-Intel-device-IDs.patch
|
||||||
|
|
||||||
#
|
|
||||||
block-sd-Fix-rw_max-for-devices-that-report-an-optimal-xfe.patch
|
|
||||||
|
|
||||||
###
|
###
|
||||||
### Char
|
### Char
|
||||||
###
|
###
|
||||||
@@ -140,8 +134,9 @@ Revert-ipmi-Start-the-timer-and-thread-on-internal-m.patch
|
|||||||
###
|
###
|
||||||
|
|
||||||
# aufs from: http://aufs.sourceforge.net/ (mga#8314)
|
# aufs from: http://aufs.sourceforge.net/ (mga#8314)
|
||||||
fs-aufs-4.6.patch
|
fs-aufs-4.7.patch
|
||||||
fs-aufs-4.6-modular.patch
|
fs-aufs-4.7-modular.patch
|
||||||
|
fs-aufs-4.7-ver-fix.patch
|
||||||
|
|
||||||
###
|
###
|
||||||
### FireWire
|
### FireWire
|
||||||
@@ -176,9 +171,6 @@ gpu-drm-mach64-linux-3.14-buildfix.patch
|
|||||||
gpu-drm-mach64-3.17-buildfix.patch
|
gpu-drm-mach64-3.17-buildfix.patch
|
||||||
gpu-drm-mach64-3.18-buildfix.patch
|
gpu-drm-mach64-3.18-buildfix.patch
|
||||||
|
|
||||||
# hsw screen glitches
|
|
||||||
gpu-drm-i915-fbc-Disable-on-HSW-by-default-for-now.patch
|
|
||||||
|
|
||||||
###
|
###
|
||||||
### Hardware Monitoring
|
### Hardware Monitoring
|
||||||
###
|
###
|
||||||
@@ -209,12 +201,6 @@ input-i8042-quirks-for-Fujitsu-Lifebook-A544-and-Lif.patch
|
|||||||
### MM
|
### MM
|
||||||
###
|
###
|
||||||
|
|
||||||
# fixes some failing atomic allocations
|
|
||||||
mm-sl-au-b-add-__GFP_ATOMIC-to-the-GFP-reclaim-mask.patch
|
|
||||||
|
|
||||||
# tmpfs fix
|
|
||||||
mm-tmpfs-don-t-undo-fallocate-past-its-last-page.patch
|
|
||||||
|
|
||||||
###
|
###
|
||||||
### Network
|
### Network
|
||||||
###
|
###
|
||||||
@@ -236,6 +222,12 @@ net-netfilter-psd.patch
|
|||||||
net-netfilter-psd-mdv.patch
|
net-netfilter-psd-mdv.patch
|
||||||
net-netfilter-psd-2.6.35-buildfix.patch
|
net-netfilter-psd-2.6.35-buildfix.patch
|
||||||
|
|
||||||
|
# iwlwifi fixes
|
||||||
|
net-wireless-iwlwifi-add-new-8260-PCI-IDs.patch
|
||||||
|
net-wireless-iwlwifi-add-new-8265.patch
|
||||||
|
net-wireless-iwlwifi-pcie-enable-interrupts-before-releasing-the-NICs-CPU.patch
|
||||||
|
net-wireless-iwlwifi-pcie-fix-a-race-in-firmware-loading-flow.patch
|
||||||
|
|
||||||
###
|
###
|
||||||
### Platform drivers
|
### Platform drivers
|
||||||
###
|
###
|
||||||
@@ -324,6 +316,7 @@ video-mageia-logo.patch
|
|||||||
3rd-ndiswrapper-1.60.patch
|
3rd-ndiswrapper-1.60.patch
|
||||||
3rd-ndiswrapper-Kconfig.patch
|
3rd-ndiswrapper-Kconfig.patch
|
||||||
3rd-ndiswrapper-Makefile-build-fix.patch
|
3rd-ndiswrapper-Makefile-build-fix.patch
|
||||||
|
3rd-ndiswrapper-4.7-buildfix.patch
|
||||||
|
|
||||||
# rfswitch
|
# rfswitch
|
||||||
3rd-rfswitch-1.3.patch
|
3rd-rfswitch-1.3.patch
|
||||||
@@ -339,6 +332,7 @@ video-mageia-logo.patch
|
|||||||
|
|
||||||
# add rtl8723bs support (mga#15874)
|
# add rtl8723bs support (mga#15874)
|
||||||
3rd-rtl8723bs.patch
|
3rd-rtl8723bs.patch
|
||||||
|
3rd-rtl8723bs-4.7-buildfix.patch
|
||||||
|
|
||||||
###
|
###
|
||||||
### Security
|
### Security
|
||||||
|
|||||||
Reference in New Issue
Block a user