Turn off Intel IOMMU by default
This commit is contained in:
parent
3d3849a2e8
commit
b7b0a09ded
|
@ -1,50 +0,0 @@
|
|||
From 690b1ad9d2032d6f2565d44f6564590d47835ae8 Mon Sep 17 00:00:00 2001
|
||||
From: Zhang Rui <rui.zhang@intel.com>
|
||||
Date: Thu, 29 Nov 2012 01:30:43 +0800
|
||||
Subject: [PATCH 1/2] ACPI sony-laptop: do proper memcpy for ACPI_TYPE_INTEGER
|
||||
acpi_object
|
||||
|
||||
the return value of __call_snc_method can either be
|
||||
an ACPI_TYPE_BUFFER object or a ACPI_TYPE_INTEGER object.
|
||||
do proper memcpy for ACPI_TYPE_INTEGER object.
|
||||
|
||||
https://bugzilla.kernel.org/show_bug.cgi?id=50111
|
||||
|
||||
Signed-off-by: Zhang Rui <rui.zhang@intel.com>
|
||||
---
|
||||
drivers/platform/x86/sony-laptop.c | 11 +++++------
|
||||
1 file changed, 5 insertions(+), 6 deletions(-)
|
||||
|
||||
diff --git a/drivers/platform/x86/sony-laptop.c b/drivers/platform/x86/sony-laptop.c
|
||||
index daaddec..92e0da2 100644
|
||||
--- a/drivers/platform/x86/sony-laptop.c
|
||||
+++ b/drivers/platform/x86/sony-laptop.c
|
||||
@@ -792,20 +792,19 @@ static int sony_nc_buffer_call(acpi_handle handle, char *name, u64 *value,
|
||||
if (!object)
|
||||
return -EINVAL;
|
||||
|
||||
- if (object->type == ACPI_TYPE_BUFFER)
|
||||
+ if (object->type == ACPI_TYPE_BUFFER) {
|
||||
len = MIN(buflen, object->buffer.length);
|
||||
-
|
||||
- else if (object->type == ACPI_TYPE_INTEGER)
|
||||
+ memcpy(buffer, object->buffer.pointer, len);
|
||||
+ } else if (object->type == ACPI_TYPE_INTEGER) {
|
||||
len = MIN(buflen, sizeof(object->integer.value));
|
||||
-
|
||||
- else {
|
||||
+ memcpy(buffer, (void *)&object->integer.value, len);
|
||||
+ } else {
|
||||
pr_warn("Invalid acpi_object: expected 0x%x got 0x%x\n",
|
||||
ACPI_TYPE_BUFFER, object->type);
|
||||
kfree(object);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
- memcpy(buffer, object->buffer.pointer, len);
|
||||
kfree(object);
|
||||
return 0;
|
||||
}
|
||||
--
|
||||
1.7.9.5
|
||||
|
File diff suppressed because it is too large
Load Diff
|
@ -1,46 +0,0 @@
|
|||
From b7e383046c2c7c13ad928cd7407eafff758ddd4b Mon Sep 17 00:00:00 2001
|
||||
From: Zhang Rui <rui.zhang@intel.com>
|
||||
Date: Tue, 4 Dec 2012 23:23:16 +0100
|
||||
Subject: [PATCH] ACPI : do not use Lid and Sleep button for S5 wakeup
|
||||
|
||||
When system enters power off, the _PSW of Lid device is enabled.
|
||||
But this may cause the system to reboot instead of power off.
|
||||
|
||||
A proper way to fix this is to always disable lid wakeup capability for S5.
|
||||
|
||||
References: https://bugzilla.kernel.org/show_bug.cgi?id=35262
|
||||
Signed-off-by: Zhang Rui <rui.zhang@intel.com>
|
||||
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
|
||||
---
|
||||
drivers/acpi/scan.c | 7 ++++++-
|
||||
1 file changed, 6 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/drivers/acpi/scan.c b/drivers/acpi/scan.c
|
||||
index d0b38ab..bd523bf 100644
|
||||
--- a/drivers/acpi/scan.c
|
||||
+++ b/drivers/acpi/scan.c
|
||||
@@ -917,8 +917,8 @@ acpi_bus_extract_wakeup_device_power_package(acpi_handle handle,
|
||||
static void acpi_bus_set_run_wake_flags(struct acpi_device *device)
|
||||
{
|
||||
struct acpi_device_id button_device_ids[] = {
|
||||
- {"PNP0C0D", 0},
|
||||
{"PNP0C0C", 0},
|
||||
+ {"PNP0C0D", 0},
|
||||
{"PNP0C0E", 0},
|
||||
{"", 0},
|
||||
};
|
||||
@@ -930,6 +930,11 @@ static void acpi_bus_set_run_wake_flags(struct acpi_device *device)
|
||||
/* Power button, Lid switch always enable wakeup */
|
||||
if (!acpi_match_device_ids(device, button_device_ids)) {
|
||||
device->wakeup.flags.run_wake = 1;
|
||||
+ if (!acpi_match_device_ids(device, &button_device_ids[1])) {
|
||||
+ /* Do not use Lid/sleep button for S5 wakeup */
|
||||
+ if (device->wakeup.sleep_state == ACPI_STATE_S5)
|
||||
+ device->wakeup.sleep_state = ACPI_STATE_S4;
|
||||
+ }
|
||||
device_set_wakeup_capable(&device->dev, true);
|
||||
return;
|
||||
}
|
||||
--
|
||||
1.8.0.1
|
||||
|
|
@ -1,69 +0,0 @@
|
|||
From 0a41409c518083133e79015092585d68915865be Mon Sep 17 00:00:00 2001
|
||||
From: Ed Cashin <ecashin@coraid.com>
|
||||
Date: Mon, 17 Dec 2012 16:03:58 -0800
|
||||
Subject: [PATCH] aoe: remove vestigial request queue allocation
|
||||
|
||||
Before the aoe driver was an I/O request handler, it was a
|
||||
make_request-style block driver. Even so, there was a problem where
|
||||
sysfs expected a request queue to exist, so one was provided in commit
|
||||
7135a71b19be ("aoe: allocate unused request_queue for sysfs").
|
||||
|
||||
During the transition to the request-handler style, a patch was merged
|
||||
that was based on a driver without the noop queue, and the noop queue
|
||||
remained in place after the patch was merged, even though a new
|
||||
functional queue was introduced by the patch, allocated through
|
||||
blk_init_queue.
|
||||
|
||||
The user impact is a memory leak proportional to the number of AoE
|
||||
targets discovered. This patch removes the memory leak and cleans up
|
||||
vestiges of the old do-nothing queue from the aoeblk_gdalloc function.
|
||||
|
||||
Signed-off-by: Ed Cashin <ecashin@coraid.com>
|
||||
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
|
||||
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
|
||||
---
|
||||
drivers/block/aoe/aoeblk.c | 17 ++++-------------
|
||||
1 file changed, 4 insertions(+), 13 deletions(-)
|
||||
|
||||
diff --git a/drivers/block/aoe/aoeblk.c b/drivers/block/aoe/aoeblk.c
|
||||
index 7ba0fcf..57ac72c 100644
|
||||
--- a/drivers/block/aoe/aoeblk.c
|
||||
+++ b/drivers/block/aoe/aoeblk.c
|
||||
@@ -278,18 +278,12 @@ aoeblk_gdalloc(void *vp)
|
||||
if (q == NULL) {
|
||||
pr_err("aoe: cannot allocate block queue for %ld.%d\n",
|
||||
d->aoemajor, d->aoeminor);
|
||||
- mempool_destroy(mp);
|
||||
- goto err_disk;
|
||||
+ goto err_mempool;
|
||||
}
|
||||
|
||||
- d->blkq = blk_alloc_queue(GFP_KERNEL);
|
||||
- if (!d->blkq)
|
||||
- goto err_mempool;
|
||||
- d->blkq->backing_dev_info.name = "aoe";
|
||||
- if (bdi_init(&d->blkq->backing_dev_info))
|
||||
- goto err_blkq;
|
||||
spin_lock_irqsave(&d->lock, flags);
|
||||
- blk_queue_max_hw_sectors(d->blkq, BLK_DEF_MAX_SECTORS);
|
||||
+ blk_queue_max_hw_sectors(q, BLK_DEF_MAX_SECTORS);
|
||||
+ q->backing_dev_info.name = "aoe";
|
||||
q->backing_dev_info.ra_pages = READ_AHEAD / PAGE_CACHE_SIZE;
|
||||
d->bufpool = mp;
|
||||
d->blkq = gd->queue = q;
|
||||
@@ -314,11 +308,8 @@ aoeblk_gdalloc(void *vp)
|
||||
aoedisk_add_sysfs(d);
|
||||
return;
|
||||
|
||||
-err_blkq:
|
||||
- blk_cleanup_queue(d->blkq);
|
||||
- d->blkq = NULL;
|
||||
err_mempool:
|
||||
- mempool_destroy(d->bufpool);
|
||||
+ mempool_destroy(mp);
|
||||
err_disk:
|
||||
put_disk(gd);
|
||||
err:
|
||||
--
|
||||
1.8.0.1
|
||||
|
|
@ -45,7 +45,7 @@ CONFIG_FB_EFI=y
|
|||
CONFIG_INTEL_IOMMU=y
|
||||
CONFIG_DMAR_BROKEN_GFX_WA=y
|
||||
CONFIG_INTEL_IOMMU_FLOPPY_WA=y
|
||||
CONFIG_INTEL_IOMMU_DEFAULT_ON=y
|
||||
# CONFIG_INTEL_IOMMU_DEFAULT_ON is not set
|
||||
CONFIG_SCSI_ADVANSYS=m
|
||||
|
||||
CONFIG_SECCOMP=y
|
||||
|
|
33
kernel.spec
33
kernel.spec
|
@ -62,7 +62,7 @@ Summary: The Linux kernel
|
|||
# For non-released -rc kernels, this will be appended after the rcX and
|
||||
# gitX tags, so a 3 here would become part of release "0.rcX.gitX.3"
|
||||
#
|
||||
%global baserelease 202
|
||||
%global baserelease 203
|
||||
%global fedora_build %{baserelease}
|
||||
|
||||
# base_sublevel is the kernel version we're starting with and patching
|
||||
|
@ -780,17 +780,8 @@ Patch21231: 8139cp-revert-set-ring-address-before-enabling-receiver.patch
|
|||
Patch21232: 8139cp-set-ring-address-after-enabling-C-mode.patch
|
||||
Patch21233: 8139cp-re-enable-interrupts-after-tx-timeout.patch
|
||||
|
||||
#rhbz 883414
|
||||
Patch21234: mac80211-fix-ibss-scanning.patch
|
||||
|
||||
#rhbz 873107
|
||||
Patch21237: 0001-ACPI-sony-laptop-do-proper-memcpy-for-ACPI_TYPE_INTE.patch
|
||||
|
||||
#rhbz 853064
|
||||
Patch21239: aoe-remove-vestigial-request-queue-allocation.patch
|
||||
|
||||
#rhbz 890547
|
||||
Patch21240: ACPI-do-not-use-Lid-and-Sleep-button-for-S5-wakeup.patch
|
||||
#3.7.3 stable queue
|
||||
Patch2150: 3.7.3-stable-queue.patch
|
||||
|
||||
# END OF PATCH DEFINITIONS
|
||||
|
||||
|
@ -1511,18 +1502,8 @@ ApplyPatch 8139cp-revert-set-ring-address-before-enabling-receiver.patch -R
|
|||
ApplyPatch 8139cp-set-ring-address-after-enabling-C-mode.patch
|
||||
ApplyPatch 8139cp-re-enable-interrupts-after-tx-timeout.patch
|
||||
|
||||
#rhbz 883414
|
||||
ApplyPatch mac80211-fix-ibss-scanning.patch
|
||||
|
||||
#rhbz 873107
|
||||
ApplyPatch 0001-ACPI-sony-laptop-do-proper-memcpy-for-ACPI_TYPE_INTE.patch
|
||||
|
||||
#rhbz 853064
|
||||
ApplyPatch aoe-remove-vestigial-request-queue-allocation.patch
|
||||
|
||||
#rhbz 890547
|
||||
ApplyPatch ACPI-do-not-use-Lid-and-Sleep-button-for-S5-wakeup.patch
|
||||
|
||||
#3.7.3 stable qeueu
|
||||
ApplyPatch 3.7.3-stable-queue.patch
|
||||
|
||||
# END OF PATCH APPLICATIONS
|
||||
|
||||
|
@ -2396,6 +2377,10 @@ fi
|
|||
# ||----w |
|
||||
# || ||
|
||||
%changelog
|
||||
* Tue Jan 15 2013 Justin M. Forbes <jforbes@redhat.com> 3.7.2-203
|
||||
- Turn off Intel IOMMU by default
|
||||
- Stable queue from 3.7.3 with many relevant fixes
|
||||
|
||||
* Tue Jan 15 2013 Josh Boyer <jwboyer@redhat.com>
|
||||
- Enable CONFIG_DVB_USB_V2 (rhbz 895460)
|
||||
|
||||
|
|
|
@ -1,132 +0,0 @@
|
|||
Do not scan on no-IBSS and disabled channels in IBSS mode. Doing this
|
||||
can trigger Microcode errors on iwlwifi and iwlegacy drivers.
|
||||
|
||||
Also rename ieee80211_request_internal_scan() function since it is only
|
||||
used in IBSS mode and simplify calling it from ieee80211_sta_find_ibss().
|
||||
|
||||
This patch should address:
|
||||
https://bugzilla.redhat.com/show_bug.cgi?id=883414
|
||||
https://bugzilla.kernel.org/show_bug.cgi?id=49411
|
||||
|
||||
Reported-by: Jesse Kahtava <jesse_kahtava@f-m.fm>
|
||||
Reported-by: Mikko Rapeli <mikko.rapeli@iki.fi>
|
||||
Cc: stable@vger.kernel.org
|
||||
Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
|
||||
---
|
||||
net/mac80211/ibss.c | 9 ++++-----
|
||||
net/mac80211/ieee80211_i.h | 6 +++---
|
||||
net/mac80211/scan.c | 34 ++++++++++++++++++++++++----------
|
||||
3 files changed, 31 insertions(+), 18 deletions(-)
|
||||
|
||||
diff --git a/net/mac80211/ibss.c b/net/mac80211/ibss.c
|
||||
index c21e33d..d9df6b8 100644
|
||||
--- a/net/mac80211/ibss.c
|
||||
+++ b/net/mac80211/ibss.c
|
||||
@@ -678,8 +678,8 @@ static void ieee80211_sta_merge_ibss(struct ieee80211_sub_if_data *sdata)
|
||||
sdata_info(sdata,
|
||||
"No active IBSS STAs - trying to scan for other IBSS networks with same SSID (merge)\n");
|
||||
|
||||
- ieee80211_request_internal_scan(sdata,
|
||||
- ifibss->ssid, ifibss->ssid_len, NULL);
|
||||
+ ieee80211_request_ibss_scan(sdata, ifibss->ssid, ifibss->ssid_len,
|
||||
+ NULL);
|
||||
}
|
||||
|
||||
static void ieee80211_sta_create_ibss(struct ieee80211_sub_if_data *sdata)
|
||||
@@ -777,9 +777,8 @@ static void ieee80211_sta_find_ibss(struct ieee80211_sub_if_data *sdata)
|
||||
IEEE80211_SCAN_INTERVAL)) {
|
||||
sdata_info(sdata, "Trigger new scan to find an IBSS to join\n");
|
||||
|
||||
- ieee80211_request_internal_scan(sdata,
|
||||
- ifibss->ssid, ifibss->ssid_len,
|
||||
- ifibss->fixed_channel ? ifibss->channel : NULL);
|
||||
+ ieee80211_request_ibss_scan(sdata, ifibss->ssid,
|
||||
+ ifibss->ssid_len, chan);
|
||||
} else {
|
||||
int interval = IEEE80211_SCAN_INTERVAL;
|
||||
|
||||
diff --git a/net/mac80211/ieee80211_i.h b/net/mac80211/ieee80211_i.h
|
||||
index 156e583..bc48d4d 100644
|
||||
--- a/net/mac80211/ieee80211_i.h
|
||||
+++ b/net/mac80211/ieee80211_i.h
|
||||
@@ -1247,9 +1247,9 @@ void ieee80211_mesh_rx_queued_mgmt(struct ieee80211_sub_if_data *sdata,
|
||||
|
||||
/* scan/BSS handling */
|
||||
void ieee80211_scan_work(struct work_struct *work);
|
||||
-int ieee80211_request_internal_scan(struct ieee80211_sub_if_data *sdata,
|
||||
- const u8 *ssid, u8 ssid_len,
|
||||
- struct ieee80211_channel *chan);
|
||||
+int ieee80211_request_ibss_scan(struct ieee80211_sub_if_data *sdata,
|
||||
+ const u8 *ssid, u8 ssid_len,
|
||||
+ struct ieee80211_channel *chan);
|
||||
int ieee80211_request_scan(struct ieee80211_sub_if_data *sdata,
|
||||
struct cfg80211_scan_request *req);
|
||||
void ieee80211_scan_cancel(struct ieee80211_local *local);
|
||||
diff --git a/net/mac80211/scan.c b/net/mac80211/scan.c
|
||||
index 43e60b5..fab706f 100644
|
||||
--- a/net/mac80211/scan.c
|
||||
+++ b/net/mac80211/scan.c
|
||||
@@ -819,9 +819,9 @@ int ieee80211_request_scan(struct ieee80211_sub_if_data *sdata,
|
||||
return res;
|
||||
}
|
||||
|
||||
-int ieee80211_request_internal_scan(struct ieee80211_sub_if_data *sdata,
|
||||
- const u8 *ssid, u8 ssid_len,
|
||||
- struct ieee80211_channel *chan)
|
||||
+int ieee80211_request_ibss_scan(struct ieee80211_sub_if_data *sdata,
|
||||
+ const u8 *ssid, u8 ssid_len,
|
||||
+ struct ieee80211_channel *chan)
|
||||
{
|
||||
struct ieee80211_local *local = sdata->local;
|
||||
int ret = -EBUSY;
|
||||
@@ -835,22 +835,36 @@ int ieee80211_request_internal_scan(struct ieee80211_sub_if_data *sdata,
|
||||
|
||||
/* fill internal scan request */
|
||||
if (!chan) {
|
||||
- int i, nchan = 0;
|
||||
+ int i, max_n;
|
||||
+ int n_ch = 0;
|
||||
|
||||
for (band = 0; band < IEEE80211_NUM_BANDS; band++) {
|
||||
if (!local->hw.wiphy->bands[band])
|
||||
continue;
|
||||
- for (i = 0;
|
||||
- i < local->hw.wiphy->bands[band]->n_channels;
|
||||
- i++) {
|
||||
- local->int_scan_req->channels[nchan] =
|
||||
+
|
||||
+ max_n = local->hw.wiphy->bands[band]->n_channels;
|
||||
+ for (i = 0; i < max_n; i++) {
|
||||
+ struct ieee80211_channel *tmp_ch =
|
||||
&local->hw.wiphy->bands[band]->channels[i];
|
||||
- nchan++;
|
||||
+
|
||||
+ if (tmp_ch->flags & (IEEE80211_CHAN_NO_IBSS |
|
||||
+ IEEE80211_CHAN_DISABLED))
|
||||
+ continue;
|
||||
+
|
||||
+ local->int_scan_req->channels[n_ch] = tmp_ch;
|
||||
+ n_ch++;
|
||||
}
|
||||
}
|
||||
|
||||
- local->int_scan_req->n_channels = nchan;
|
||||
+ if (WARN_ON_ONCE(n_ch == 0))
|
||||
+ goto unlock;
|
||||
+
|
||||
+ local->int_scan_req->n_channels = n_ch;
|
||||
} else {
|
||||
+ if (WARN_ON_ONCE(chan->flags & (IEEE80211_CHAN_NO_IBSS |
|
||||
+ IEEE80211_CHAN_DISABLED)))
|
||||
+ goto unlock;
|
||||
+
|
||||
local->int_scan_req->channels[0] = chan;
|
||||
local->int_scan_req->n_channels = 1;
|
||||
}
|
||||
--
|
||||
1.7.1
|
||||
|
||||
--
|
||||
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
|
||||
the body of a message to majordomo@vger.kernel.org
|
||||
More majordomo info at http://vger.kernel.org/majordomo-info.html
|
Loading…
Reference in New Issue