Rebase to 3.2.1

This commit is contained in:
Dave Jones 2012-01-19 21:29:56 -05:00
parent 9f353831c7
commit 1045154ecf
58 changed files with 1748 additions and 7509 deletions

1
.gitignore vendored
View File

@ -1,4 +1,5 @@
clog
*.xz
*.bz2
*.rpm
*.orig

View File

@ -1,54 +0,0 @@
From 6b7025ea927d290a59d2772828435c1893f0267f Mon Sep 17 00:00:00 2001
From: Rik van Riel <riel@redhat.com>
Date: Fri, 7 Oct 2011 16:17:22 +0100
Subject: [PATCH 1/2] mm: vmscan: Limit direct reclaim for higher order
allocations
When suffering from memory fragmentation due to unfreeable pages,
THP page faults will repeatedly try to compact memory. Due to the
unfreeable pages, compaction fails.
Needless to say, at that point page reclaim also fails to create
free contiguous 2MB areas. However, that doesn't stop the current
code from trying, over and over again, and freeing a minimum of 4MB
(2UL << sc->order pages) at every single invocation.
This resulted in my 12GB system having 2-3GB free memory, a
corresponding amount of used swap and very sluggish response times.
This can be avoided by having the direct reclaim code not reclaim from
zones that already have plenty of free memory available for compaction.
If compaction still fails due to unmovable memory, doing additional
reclaim will only hurt the system, not help.
Signed-off-by: Rik van Riel <riel@redhat.com>
Signed-off-by: Mel Gorman <mgorman@suse.de>
---
mm/vmscan.c | 10 ++++++++++
1 files changed, 10 insertions(+), 0 deletions(-)
diff --git a/mm/vmscan.c b/mm/vmscan.c
index 6072d74..8c03534 100644
--- a/mm/vmscan.c
+++ b/mm/vmscan.c
@@ -2022,6 +2022,16 @@ static void shrink_zones(int priority, struct zonelist *zonelist,
continue;
if (zone->all_unreclaimable && priority != DEF_PRIORITY)
continue; /* Let kswapd poll it */
+ if (COMPACTION_BUILD) {
+ /*
+ * If we already have plenty of memory free
+ * for compaction, don't free any more.
+ */
+ if (sc->order > PAGE_ALLOC_COSTLY_ORDER &&
+ (compaction_suitable(zone, sc->order) ||
+ compaction_deferred(zone)))
+ continue;
+ }
/*
* This steals pages from memory cgroups over softlimit
* and returns the number of reclaimed pages and
--
1.7.6.4

View File

@ -1,165 +0,0 @@
From e773daff833c61e0ce22d62b7d1bb7b82f4222d0 Mon Sep 17 00:00:00 2001
From: Paolo Bonzini <pbonzini@redhat.com>
Date: Mon, 16 Jan 2012 17:12:59 +0100
Subject: [PATCH 2/3] block: fail SCSI passthrough ioctls on partition devices
Linux allows executing the SG_IO ioctl on a partition or LVM volume, and
will pass the command to the underlying block device. This is
well-known, but it is also a large security problem when (via Unix
permissions, ACLs, SELinux or a combination thereof) a program or user
needs to be granted access only to part of the disk.
This patch lets partitions forward a small set of harmless ioctls;
others are logged with printk so that we can see which ioctls are
actually sent. In my tests only CDROM_GET_CAPABILITY actually occurred.
Of course it was being sent to a (partition on a) hard disk, so it would
have failed with ENOTTY and the patch isn't changing anything in
practice. Still, I'm treating it specially to avoid spamming the logs.
In principle, this restriction should include programs running with
CAP_SYS_RAWIO. If for example I let a program access /dev/sda2 and
/dev/sdb, it still should not be able to read/write outside the
boundaries of /dev/sda2 independent of the capabilities. However, for
now programs with CAP_SYS_RAWIO will still be allowed to send the
ioctls. Their actions will still be logged.
This patch does not affect the non-libata IDE driver. That driver
however already tests for bd != bd->bd_contains before issuing some
ioctl; it could be restricted further to forbid these ioctls even for
programs running with CAP_SYS_ADMIN/CAP_SYS_RAWIO.
[ Cherry picked from 3ed4e7ba4be8c72051d87dcb2dec279d97a18d41
Changes with respect to 3.3: return -ENOTTY from scsi_verify_blk_ioctl
and -ENOIOCTLCMD from sd_compat_ioctl. ]
Cc: stable@kernel.org
Cc: linux-scsi@vger.kernel.org
Cc: Jens Axboe <axboe@kernel.dk>
Cc: James Bottomley <JBottomley@parallels.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
[ Make it also print the command name when warning - Linus ]
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
---
block/scsi_ioctl.c | 45 +++++++++++++++++++++++++++++++++++++++++++++
drivers/scsi/sd.c | 11 +++++++++--
include/linux/blkdev.h | 1 +
3 files changed, 55 insertions(+), 2 deletions(-)
diff --git a/block/scsi_ioctl.c b/block/scsi_ioctl.c
index 57ac937..5ef1f4c 100644
--- a/block/scsi_ioctl.c
+++ b/block/scsi_ioctl.c
@@ -24,6 +24,7 @@
#include <linux/capability.h>
#include <linux/completion.h>
#include <linux/cdrom.h>
+#include <linux/ratelimit.h>
#include <linux/slab.h>
#include <linux/times.h>
#include <asm/uaccess.h>
@@ -691,9 +692,53 @@ int scsi_cmd_ioctl(struct request_queue *q, struct gendisk *bd_disk, fmode_t mod
}
EXPORT_SYMBOL(scsi_cmd_ioctl);
+int scsi_verify_blk_ioctl(struct block_device *bd, unsigned int cmd)
+{
+ if (bd && bd == bd->bd_contains)
+ return 0;
+
+ /* Actually none of these is particularly useful on a partition,
+ * but they are safe.
+ */
+ switch (cmd) {
+ case SCSI_IOCTL_GET_IDLUN:
+ case SCSI_IOCTL_GET_BUS_NUMBER:
+ case SCSI_IOCTL_GET_PCI:
+ case SCSI_IOCTL_PROBE_HOST:
+ case SG_GET_VERSION_NUM:
+ case SG_SET_TIMEOUT:
+ case SG_GET_TIMEOUT:
+ case SG_GET_RESERVED_SIZE:
+ case SG_SET_RESERVED_SIZE:
+ case SG_EMULATED_HOST:
+ return 0;
+ case CDROM_GET_CAPABILITY:
+ /* Keep this until we remove the printk below. udev sends it
+ * and we do not want to spam dmesg about it. CD-ROMs do
+ * not have partitions, so we get here only for disks.
+ */
+ return -ENOTTY;
+ default:
+ break;
+ }
+
+ /* In particular, rule out all resets and host-specific ioctls. */
+ printk_ratelimited(KERN_WARNING
+ "%s: sending ioctl %x to a partition!\n", current->comm, cmd);
+
+ return capable(CAP_SYS_RAWIO) ? 0 : -ENOTTY;
+}
+EXPORT_SYMBOL(scsi_verify_blk_ioctl);
+
int scsi_cmd_blk_ioctl(struct block_device *bd, fmode_t mode,
unsigned int cmd, void __user *arg)
{
+ int ret;
+
+ ret = scsi_verify_blk_ioctl(bd, cmd);
+ if (ret < 0)
+ return ret;
+
return scsi_cmd_ioctl(bd->bd_disk->queue, bd->bd_disk, mode, cmd, arg);
}
EXPORT_SYMBOL(scsi_cmd_blk_ioctl);
diff --git a/drivers/scsi/sd.c b/drivers/scsi/sd.c
index c88885d..7d8b5d8 100644
--- a/drivers/scsi/sd.c
+++ b/drivers/scsi/sd.c
@@ -1073,6 +1073,10 @@ static int sd_ioctl(struct block_device *bdev, fmode_t mode,
SCSI_LOG_IOCTL(1, printk("sd_ioctl: disk=%s, cmd=0x%x\n",
disk->disk_name, cmd));
+ error = scsi_verify_blk_ioctl(bdev, cmd);
+ if (error < 0)
+ return error;
+
/*
* If we are in the middle of error recovery, don't let anyone
* else try and use this device. Also, if error recovery fails, it
@@ -1265,6 +1269,11 @@ static int sd_compat_ioctl(struct block_device *bdev, fmode_t mode,
unsigned int cmd, unsigned long arg)
{
struct scsi_device *sdev = scsi_disk(bdev->bd_disk)->device;
+ int ret;
+
+ ret = scsi_verify_blk_ioctl(bdev, cmd);
+ if (ret < 0)
+ return -ENOIOCTLCMD;
/*
* If we are in the middle of error recovery, don't let anyone
@@ -1276,8 +1285,6 @@ static int sd_compat_ioctl(struct block_device *bdev, fmode_t mode,
return -ENODEV;
if (sdev->host->hostt->compat_ioctl) {
- int ret;
-
ret = sdev->host->hostt->compat_ioctl(sdev, cmd, (void __user *)arg);
return ret;
diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h
index aa829a4..8b7a19e 100644
--- a/include/linux/blkdev.h
+++ b/include/linux/blkdev.h
@@ -675,6 +675,7 @@ extern int blk_insert_cloned_request(struct request_queue *q,
struct request *rq);
extern void blk_delay_queue(struct request_queue *, unsigned long);
extern void blk_recount_segments(struct request_queue *, struct bio *);
+extern int scsi_verify_blk_ioctl(struct block_device *, unsigned int);
extern int scsi_cmd_blk_ioctl(struct block_device *, fmode_t,
unsigned int, void __user *);
extern int scsi_cmd_ioctl(struct request_queue *, struct gendisk *, fmode_t,
--
1.7.7.5

View File

@ -1,15 +0,0 @@
diff --git a/drivers/bluetooth/btusb.c b/drivers/bluetooth/btusb.c
index f9b7260..28a5876 100644
--- a/drivers/bluetooth/btusb.c
+++ b/drivers/bluetooth/btusb.c
@@ -100,6 +100,10 @@ static struct usb_device_id btusb_table[] = {
/* Canyon CN-BTU1 with HID interfaces */
{ USB_DEVICE(0x0c10, 0x0000) },
+ /* Broadcom BCM20702A0 */
+ { USB_DEVICE(0x0a5c, 0x21e3) },
+ { USB_DEVICE(0x413c, 0x8197) },
+
{ } /* Terminating entry */
};

View File

@ -1,131 +0,0 @@
From b28ae436288861916de0019a81b9817366fe35a9 Mon Sep 17 00:00:00 2001
From: David Herrmann <dh.herrmann@googlemail.com>
Date: Sat, 8 Oct 2011 23:20:17 +0200
Subject: [PATCH] HID: wacom: Set input bits before registration
We shouldn't change the event flags of input devices after they get registered.
Otherwise, udev will not get notified of these flags and cannot setup the
devices properly.
This fixes the probing to set the input event flags on the input_mapped callback
instead of the probe function.
Reported-by: Bastien Nocera <hadess@hadess.net>
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
Tested-by: Bastien Nocera <hadess@hadess.net>
Signed-off-by: Bastien Nocera <hadess@hadess.net>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
---
drivers/hid/hid-wacom.c | 80 +++++++++++++++++++++++++---------------------
1 files changed, 43 insertions(+), 37 deletions(-)
diff --git a/drivers/hid/hid-wacom.c b/drivers/hid/hid-wacom.c
index 72ca689..1492728 100644
--- a/drivers/hid/hid-wacom.c
+++ b/drivers/hid/hid-wacom.c
@@ -304,11 +304,51 @@ static int wacom_raw_event(struct hid_device *hdev, struct hid_report *report,
return 1;
}
+static int wacom_input_mapped(struct hid_device *hdev, struct hid_input *hi,
+ struct hid_field *field, struct hid_usage *usage, unsigned long **bit,
+ int *max)
+{
+ struct input_dev *input = hi->input;
+
+ __set_bit(INPUT_PROP_POINTER, input->propbit);
+
+ /* Basics */
+ input->evbit[0] |= BIT(EV_KEY) | BIT(EV_ABS) | BIT(EV_REL);
+
+ __set_bit(REL_WHEEL, input->relbit);
+
+ __set_bit(BTN_TOOL_PEN, input->keybit);
+ __set_bit(BTN_TOUCH, input->keybit);
+ __set_bit(BTN_STYLUS, input->keybit);
+ __set_bit(BTN_STYLUS2, input->keybit);
+ __set_bit(BTN_LEFT, input->keybit);
+ __set_bit(BTN_RIGHT, input->keybit);
+ __set_bit(BTN_MIDDLE, input->keybit);
+
+ /* Pad */
+ input->evbit[0] |= BIT(EV_MSC);
+
+ __set_bit(MSC_SERIAL, input->mscbit);
+
+ __set_bit(BTN_0, input->keybit);
+ __set_bit(BTN_1, input->keybit);
+ __set_bit(BTN_TOOL_FINGER, input->keybit);
+
+ /* Distance, rubber and mouse */
+ __set_bit(BTN_TOOL_RUBBER, input->keybit);
+ __set_bit(BTN_TOOL_MOUSE, input->keybit);
+
+ input_set_abs_params(input, ABS_X, 0, 16704, 4, 0);
+ input_set_abs_params(input, ABS_Y, 0, 12064, 4, 0);
+ input_set_abs_params(input, ABS_PRESSURE, 0, 511, 0, 0);
+ input_set_abs_params(input, ABS_DISTANCE, 0, 32, 0, 0);
+
+ return 0;
+}
+
static int wacom_probe(struct hid_device *hdev,
const struct hid_device_id *id)
{
- struct hid_input *hidinput;
- struct input_dev *input;
struct wacom_data *wdata;
int ret;
@@ -370,41 +410,6 @@ static int wacom_probe(struct hid_device *hdev,
goto err_ac;
}
#endif
- hidinput = list_entry(hdev->inputs.next, struct hid_input, list);
- input = hidinput->input;
-
- __set_bit(INPUT_PROP_POINTER, input->propbit);
-
- /* Basics */
- input->evbit[0] |= BIT(EV_KEY) | BIT(EV_ABS) | BIT(EV_REL);
-
- __set_bit(REL_WHEEL, input->relbit);
-
- __set_bit(BTN_TOOL_PEN, input->keybit);
- __set_bit(BTN_TOUCH, input->keybit);
- __set_bit(BTN_STYLUS, input->keybit);
- __set_bit(BTN_STYLUS2, input->keybit);
- __set_bit(BTN_LEFT, input->keybit);
- __set_bit(BTN_RIGHT, input->keybit);
- __set_bit(BTN_MIDDLE, input->keybit);
-
- /* Pad */
- input->evbit[0] |= BIT(EV_MSC);
-
- __set_bit(MSC_SERIAL, input->mscbit);
-
- __set_bit(BTN_0, input->keybit);
- __set_bit(BTN_1, input->keybit);
- __set_bit(BTN_TOOL_FINGER, input->keybit);
-
- /* Distance, rubber and mouse */
- __set_bit(BTN_TOOL_RUBBER, input->keybit);
- __set_bit(BTN_TOOL_MOUSE, input->keybit);
-
- input_set_abs_params(input, ABS_X, 0, 16704, 4, 0);
- input_set_abs_params(input, ABS_Y, 0, 12064, 4, 0);
- input_set_abs_params(input, ABS_PRESSURE, 0, 511, 0, 0);
- input_set_abs_params(input, ABS_DISTANCE, 0, 32, 0, 0);
return 0;
@@ -448,6 +453,7 @@ static struct hid_driver wacom_driver = {
.probe = wacom_probe,
.remove = wacom_remove,
.raw_event = wacom_raw_event,
+ .input_mapped = wacom_input_mapped,
};
static int __init wacom_init(void)
--
1.7.7.1

177
Makefile
View File

@ -17,15 +17,16 @@ help:
include Makefile.config
ifndef KVERSION
KVERSION := $(shell awk '$$1 == "%define" && $$2 == "base_sublevel" { \
print "2.6." $$3 \
}' $(SPECFILE))
endif
prep:
fedpkg -v prep --arch=$(PREPARCH)
noarch:
fedpkg -v local --arch=noarch
# 'make local' also needs to build the noarch firmware package
local: noarch
fedpkg -v local
extremedebug:
@perl -pi -e 's/# CONFIG_DEBUG_PAGEALLOC is not set/CONFIG_DEBUG_PAGEALLOC=y/' config-nodebug
@ -46,6 +47,7 @@ debug:
@perl -pi -e 's/# CONFIG_FAIL_PAGE_ALLOC is not set/CONFIG_FAIL_PAGE_ALLOC=y/' config-nodebug
@perl -pi -e 's/# CONFIG_FAIL_IO_TIMEOUT is not set/CONFIG_FAIL_IO_TIMEOUT=y/' config-nodebug
@perl -pi -e 's/# CONFIG_FAIL_MAKE_REQUEST is not set/CONFIG_FAIL_MAKE_REQUEST=y/' config-nodebug
@perl -pi -e 's/# CONFIG_FAIL_MMC_REQUEST is not set/CONFIG_FAIL_MMC_REQUEST=y/' config-nodebug
@perl -pi -e 's/# CONFIG_FAULT_INJECTION_DEBUG_FS is not set/CONFIG_FAULT_INJECTION_DEBUG_FS=y/' config-nodebug
@perl -pi -e 's/# CONFIG_FAULT_INJECTION_STACKTRACE_FILTER is not set/CONFIG_FAULT_INJECTION_STACKTRACE_FILTER=y/' config-nodebug
@perl -pi -e 's/# CONFIG_DEBUG_SG is not set/CONFIG_DEBUG_SG=y/' config-nodebug
@ -79,7 +81,6 @@ debug:
@perl -pi -e 's/# CONFIG_ATH_DEBUG is not set/CONFIG_ATH_DEBUG=y/' config-nodebug
@perl -pi -e 's/# CONFIG_CARL9170_DEBUGFS is not set/CONFIG_CARL9170_DEBUGFS=y/' config-nodebug
@perl -pi -e 's/# CONFIG_IWLWIFI_DEVICE_TRACING is not set/CONFIG_IWLWIFI_DEVICE_TRACING=y/' config-nodebug
@perl -pi -e 's/# CONFIG_DEBUG_STRICT_USER_COPY_CHECKS is not set/CONFIG_DEBUG_STRICT_USER_COPY_CHECKS=y/' config-nodebug
@perl -pi -e 's/# CONFIG_DMADEVICES_DEBUG is not set/CONFIG_DMADEVICES_DEBUG=y/' config-nodebug
@perl -pi -e 's/# CONFIG_DMADEVICES_VDEBUG is not set/CONFIG_DMADEVICES_VDEBUG=y/' config-nodebug
@perl -pi -e 's/# CONFIG_CEPH_LIB_PRETTYDEBUG is not set/CONFIG_CEPH_LIB_PRETTYDEBUG=y/' config-nodebug
@ -91,21 +92,21 @@ debug:
@perl -pi -e 's/# CONFIG_TEST_LIST_SORT is not set/CONFIG_TEST_LIST_SORT=y/' config-nodebug
@perl -pi -e 's/# CONFIG_DEBUG_ATOMIC_SLEEP is not set/CONFIG_DEBUG_ATOMIC_SLEEP=y/' config-nodebug
@perl -pi -e 's/# CONFIG_DETECT_HUNG_TASK is not set/CONFIG_DETECT_HUNG_TASK=y/' config-nodebug
@perl -pi -e 's/# CONFIG_DEBUG_SET_MODULE_RONX is not set/CONFIG_DEBUG_SET_MODULE_RONX=y/' config-nodebug
@perl -pi -e 's/# CONFIG_X86_BOOTPARAM_MEMORY_CORRUPTION_CHECK is not set/CONFIG_X86_BOOTPARAM_MEMORY_CORRUPTION_CHECK=y/' config-nodebug
@perl -pi -e 's/# CONFIG_DEBUG_KMEMLEAK is not set/CONFIG_DEBUG_KMEMLEAK=y/' config-nodebug
@# just in case we're going from extremedebug -> debug
@perl -pi -e 's/CONFIG_DEBUG_PAGEALLOC=y/# CONFIG_DEBUG_PAGEALLOC is not set/' config-nodebug
@perl -pi -e 's/CONFIG_NR_CPUS=256/CONFIG_NR_CPUS=512/' config-x86_64-generic
@perl -pi -e 's/# CONFIG_MAXSMP is not set/CONFIG_MAXSMP=y/' config-x86-generic
# Try out UAS in rawhide builds.
@perl -pi -e 's/# CONFIG_USB_UAS is not set/CONFIG_USB_UAS=m/' config-generic
@perl -pi -e 's/^%define debugbuildsenabled 1/%define debugbuildsenabled 0/' kernel.spec
@perl -pi -e 's/^%define rawhide_skip_docs 0/%define rawhide_skip_docs 1/' kernel.spec
@rpmdev-bumpspec -c "Reenable debugging options." kernel.spec
nodebuginfo:
@perl -pi -e 's/^%define with_debuginfo %\{\?_without_debuginfo: 0\} %\{\?\!_without_debuginfo: 1\}/%define with_debuginfo %\{\?_without_debuginfo: 0\} %\{\?\!_without_debuginfo: 0\}/' kernel.spec
nodebug: release
@perl -pi -e 's/^%define debugbuildsenabled 1/%define debugbuildsenabled 0/' kernel.spec
release:
@perl -pi -e 's/CONFIG_SLUB_DEBUG_ON=y/# CONFIG_SLUB_DEBUG_ON is not set/' config-nodebug
@perl -pi -e 's/CONFIG_LOCK_STAT=y/# CONFIG_LOCK_STAT is not set/' config-nodebug
@ -123,6 +124,7 @@ release:
@perl -pi -e 's/CONFIG_FAIL_PAGE_ALLOC=y/# CONFIG_FAIL_PAGE_ALLOC is not set/' config-nodebug
@perl -pi -e 's/CONFIG_FAIL_IO_TIMEOUT=y/# CONFIG_FAIL_IO_TIMEOUT is not set/' config-nodebug
@perl -pi -e 's/CONFIG_FAIL_MAKE_REQUEST=y/# CONFIG_FAIL_MAKE_REQUEST is not set/' config-nodebug
@perl -pi -e 's/CONFIG_FAIL_MMC_REQUEST=y/# CONFIG_FAIL_MMC_REQUEST is not set/' config-nodebug
@perl -pi -e 's/CONFIG_FAULT_INJECTION_DEBUG_FS=y/# CONFIG_FAULT_INJECTION_DEBUG_FS is not set/' config-nodebug
@perl -pi -e 's/CONFIG_FAULT_INJECTION_STACKTRACE_FILTER=y/# CONFIG_FAULT_INJECTION_STACKTRACE_FILTER is not set/' config-nodebug
@perl -pi -e 's/CONFIG_DEBUG_SG=y/# CONFIG_DEBUG_SG is not set/' config-nodebug
@ -156,7 +158,6 @@ release:
@perl -pi -e 's/CONFIG_ATH_DEBUG=y/# CONFIG_ATH_DEBUG is not set/' config-nodebug
@perl -pi -e 's/CONFIG_CARL9170_DEBUGFS=y/# CONFIG_CARL9170_DEBUGFS is not set/' config-nodebug
@perl -pi -e 's/CONFIG_IWLWIFI_DEVICE_TRACING=y/# CONFIG_IWLWIFI_DEVICE_TRACING is not set/' config-nodebug
@perl -pi -e 's/CONFIG_DEBUG_STRICT_USER_COPY_CHECKS=y/# CONFIG_DEBUG_STRICT_USER_COPY_CHECKS is not set/' config-nodebug
@perl -pi -e 's/CONFIG_DMADEVICES_DEBUG=y/# CONFIG_DMADEVICES_DEBUG is not set/' config-nodebug
@perl -pi -e 's/CONFIG_DMADEVICES_VDEBUG=y/# CONFIG_DMADEVICES_VDEBUG is not set/' config-nodebug
@perl -pi -e 's/CONFIG_CEPH_LIB_PRETTYDEBUG=y/# CONFIG_CEPH_LIB_PRETTYDEBUG is not set/' config-nodebug
@ -168,144 +169,36 @@ release:
@perl -pi -e 's/CONFIG_TEST_LIST_SORT=y/# CONFIG_TEST_LIST_SORT is not set/' config-nodebug
@perl -pi -e 's/CONFIG_DEBUG_ATOMIC_SLEEP=y/# CONFIG_DEBUG_ATOMIC_SLEEP is not set/' config-nodebug
@perl -pi -e 's/CONFIG_DETECT_HUNG_TASK=y/# CONFIG_DETECT_HUNG_TASK is not set/' config-nodebug
@perl -pi -e 's/CONFIG_X86_BOOTPARAM_MEMORY_CORRUPTION_CHECK=y/# CONFIG_X86_BOOTPARAM_MEMORY_CORRUPTION_CHECK is not set/' config-nodebug
@perl -pi -e 's/CONFIG_DEBUG_KMEMLEAK=y/# CONFIG_DEBUG_KMEMLEAK is not set/' config-nodebug
@perl -pi -e 's/CONFIG_DEBUG_SET_MODULE_RONX=y/# CONFIG_DEBUG_SET_MODULE_RONX is not set/' config-nodebug
# Undo anything that make extremedebug might have set
@perl -pi -e 's/CONFIG_DEBUG_PAGEALLOC=y/# CONFIG_DEBUG_PAGEALLOC is not set/' config-debug
@perl -pi -e 's/CONFIG_DEBUG_PAGEALLOC=y/# CONFIG_DEBUG_PAGEALLOC is not set/' config-nodebug
@perl -pi -e 's/CONFIG_NR_CPUS=512/CONFIG_NR_CPUS=256/' config-x86_64-generic
# Change defaults back to sane things.
@perl -pi -e 's/CONFIG_MAXSMP=y/# CONFIG_MAXSMP is not set/' config-x86-generic
# Disable UAS for release until it's ready. (#717633, #744099)
@perl -pi -e 's/CONFIG_USB_UAS=m/# CONFIG_USB_UAS is not set/' config-generic
@perl -pi -e 's/^%define debugbuildsenabled 0/%define debugbuildsenabled 1/' kernel.spec
@perl -pi -e 's/^%define rawhide_skip_docs 1/%define rawhide_skip_docs 0/' kernel.spec
@rpmdev-bumpspec -c "Disable debugging options." kernel.spec
reconfig:
@rm -f kernel-*-config
@VERSION=$(KVERSION) make -f Makefile.config configs
@scripts/reconfig.sh
nodebuginfo:
@perl -pi -e 's/^%define with_debuginfo %\{\?_without_debuginfo: 0\} %\{\?\!_without_debuginfo: 1\}/%define with_debuginfo %\{\?_without_debuginfo: 0\} %\{\?\!_without_debuginfo: 0\}/' kernel.spec
nodebug: release
@perl -pi -e 's/^%define debugbuildsenabled 1/%define debugbuildsenabled 0/' kernel.spec
unused-kernel-patches:
@for f in *.patch; do if [ -e $$f ]; then (egrep -q "^Patch[[:digit:]]+:[[:space:]]+$$f" $(SPECFILE) || echo "Unused: $$f") && egrep -q "^ApplyPatch[[:space:]]+$$f|^ApplyOptionalPatch[[:space:]]+$$f" $(SPECFILE) || echo "Unapplied: $$f"; fi; done
# since i386 isn't a target...
compile compile-short: DIST_DEFINES += --target $(shell uname -m)
ifeq ($(MAKECMDGOALS),me a sandwich)
.PHONY: me a sandwich
me a:
@:
# 'make local' also needs to build the noarch firmware package
local: noarch
#
# Hacks for building vanilla (unpatched) kernel rpms.
# Use "make vanilla-TARGET" like "make TARGET" (make vanilla-scratch-build).
#
vanilla-%: $(SPECFILE:.spec=-vanilla.spec)
@$(MAKE) $* SPECFILE=$<
$(SPECFILE:.spec=-vanilla.spec): $(SPECFILE)
@rm -f $@
(echo %define nopatches 1; cat $<) > $@
#scratch-build: NAME = $(shell rpm $(RPM_DEFINES) $(DIST_DEFINES) -q --qf "%{NAME}\n" --specfile $(SPECFILE)| head -1)
#scratch-build: test-srpm
# $(BUILD_CLIENT) build $(BUILD_FLAGS) --scratch $(TARGET) \
# $(SRCRPMDIR)/$(NAME)-$(VERSION)-$(RELEASE).src.rpm
# Dismal kludge for building via brew from cvs after "make vanilla-tag".
ifdef BEEHIVE_SRPM_BUILD
export CHECKOUT_TAG ?= $(shell sed s/^.// CVS/Tag)
tag-pattern = $(TAG_NAME)-$(TAG_VERSION)-0_%_$(TAG_RELEASE)
ifeq (,$(filter-out $(tag-pattern),$(CHECKOUT_TAG)))
variant := $(patsubst $(tag-pattern),%,$(CHECKOUT_TAG))
srpm: SPECFILE := $(wildcard $(SPECFILE:.spec=-$(variant).spec) \
$(SPECFILE:.spec=.t.$(variant).spec))
srpm beehive-sprm: RELEASE := 0.$(variant).$(RELEASE)
endif
endif
#
# Hacks for building kernel rpms from upstream code plus local GIT branches.
# Use "make git/BRANCH/TARGET" like "make TARGET".
# Use "make git/BRANCH-fedora/TARGET" to include Fedora patches on top.
#
ifndef GIT_SPEC
git/%:
@$(MAKE) GIT_SPEC=$(subst /,-,$(*D)) git-$(*F)
else
git-%: $(SPECFILE:.spec=.t.$(GIT_SPEC).spec)
@$(MAKE) GIT_SPEC= $* SPECFILE=$<
endif
#
# Your git-branches.mk file can define GIT_DIR, e.g.:
# GIT_DIR = ${HOME}/kernel/.git
# Make sure GIT_AUTHOR_NAME and GIT_AUTHOR_EMAIL are also set
# or your rpm changelogs will look like crap.
#
# For each branch it can define a variable branch-BRANCH or tag-BRANCH
# giving the parent of BRANCH to diff against in a separate patch. If
# the parent is unknown, it will use $(branch-upstream) defaulting to
# "refs/remotes/upstream/master".
#
# Defining tag-BRANCH means the tag corresponds to an upstream patch in
# the sources file, so that is used instead of generating a patch with
# git. If there is no tag-upstream defined, it will figure out a vNNN
# tag or vNNN-gitN pseudo-tag from the last patch in the sources file.
# For example:
# tag-some-hacks = v2.6.21-rc5
# branch-more-hacks = some-hacks
# Leads to patches:
# git diff v2.6.21-rc5..more-hacks > linux-2.6.21-rc5-some-hacks.patch
# git diff some-hacks..more-hacks > linux-2.6.21-rc5-more-hacks.patch
# Whereas having no git-branches.mk at all but doing
# "make GIT_DIR=... git/mybranch/test-srpm" does:
# id=`cat patch-2.6.21-rc5-git4.id` # auto-fetched via upstream file
# git diff $id..upstream > linux-2.6.21-rc5-git4-upstream.patch
# git diff upstream..mybranch > linux-2.6.21-rc5-git4-mybranch.patch
# If the upstream patch (or any branch patch) is empty it's left out.
#
git-branches.mk:;
-include git-branches.mk
branch-upstream ?= refs/remotes/upstream/master
ifdef GIT_DIR
export GIT_DIR
export GIT_AUTHOR_NAME
export GIT_AUTHOR_EMAIL
gen-patches ?= gen-patches
ifndef havespec
$(SPECFILE:.spec=.t.%-fedora.spec): $(SPECFILE) $(gen-patches) FORCE
./$(gen-patches) --fedora < $< > $@ $(gen-patches-args)
$(SPECFILE:.spec=.t.%.spec): $(SPECFILE) $(gen-patches) FORCE
./$(gen-patches) < $< > $@ $(gen-patches-args)
.PRECIOUS: $(SPECFILE:.spec=.t.%.spec) $(SPECFILE:.spec=.t.%-fedora.spec)
endif
spec-%: $(SPECFILE:.spec=.t.%.spec) ;
$(SPECFILE):;
FORCE:;
branch-of-* = $(firstword $(head-$*) $*)
gen-patches-args = --name $* v$(KVERSION) $(call heads,$(branch-of-*))
define heads
$(if $(tag-$1),$(filter-out v$(KVERSION),$(tag-$1)),\
$(call heads,$(firstword $(branch-$1) $(branch-upstream)))) $1
endef
files-%-fedora:
@echo $(SPECFILE:.spec=.t.$*-fedora.spec)
@$(call list-patches,$(branch-of-*))
files-%:
@echo $(SPECFILE:.spec=.t.$*.spec)
@$(call list-patches,$(branch-of-*))
define list-patches
$(if $(tag-$1),version=$(patsubst v%,%,$(tag-$1)),\
$(call list-patches,$(firstword $(branch-$1) $(branch-upstream)))); \
echo linux-$${version}-$(patsubst refs/remotes/%/master,%,$1).patch
endef
ifndef tag-$(branch-upstream)
tag-$(branch-upstream) := $(shell \
sed -n 's/^.* *//;s/\.bz2$$//;s/patch-/v/;/^v/h;$${g;p}' sources)
endif
sandwich:
@[ `id -u` -ne 0 ] && echo "What? Make it yourself." || echo Okay.
endif

View File

@ -16,10 +16,9 @@ CONFIGFILES = \
$(CFG)-armv7hl-omap.config $(CFG)-armv7hl-tegra.config \
$(CFG)-ppc.config $(CFG)-ppc-smp.config \
$(CFG)-sparc64.config \
$(CFG)-ppc64.config $(CFG)-ppc64-debug.config \
$(CFG)-ia64.config
$(CFG)-ppc64.config $(CFG)-ppc64-debug.config
PLATFORMS = x86 x86_64 powerpc powerpc32 powerpc64 s390x ia64 sparc64
PLATFORMS = x86 x86_64 powerpc powerpc32 powerpc64 s390x sparc64
TEMPFILES = $(addprefix temp-, $(addsuffix -generic, $(PLATFORMS)))
configs: $(CONFIGFILES)
@ -88,9 +87,6 @@ temp-powerpc32-generic: config-powerpc32-generic temp-powerpc-generic
temp-s390-generic: config-s390x temp-generic
perl merge.pl $^ > $@
temp-ia64-generic: config-ia64-generic temp-generic
perl merge.pl $^ > $@
kernel-$(VERSION)-i686-PAE.config: config-i686-PAE temp-x86-32-generic
perl merge.pl $^ i386 > $@
@ -159,6 +155,3 @@ kernel-$(VERSION)-ppc.config: /dev/null temp-powerpc32-generic
kernel-$(VERSION)-ppc-smp.config: config-powerpc32-smp temp-powerpc32-generic
perl merge.pl $^ powerpc > $@
kernel-$(VERSION)-ia64.config: /dev/null temp-ia64-generic
perl merge.pl $^ ia64 > $@

View File

@ -1,701 +0,0 @@
From e11e9e78799a7641fe0dc5289f35f2604a4b71a3 Mon Sep 17 00:00:00 2001
From: Bastien Nocera <hadess@hadess.net>
Date: Sun, 17 Jan 2010 00:40:15 +0000
Subject: [PATCH] Input: add appleir USB driver
This driver was originally written by James McKenzie, updated by
Greg Kroah-Hartman, further updated by myself, with suspend support
added.
More recent versions of the IR receiver are also supported through
a patch by Alex Karpenko. The patch also adds support for the 2nd
and 5th generation of the controller, and the menu key on newer
brushed metal remotes.
Tested on a MacbookAir1,1
Signed-off-by: Bastien Nocera <hadess@hadess.net>
---
Documentation/input/appleir.txt | 46 ++++
drivers/hid/hid-apple.c | 4 -
drivers/hid/hid-core.c | 7 +-
drivers/hid/hid-ids.h | 5 +-
drivers/input/misc/Kconfig | 13 +
drivers/input/misc/Makefile | 1 +
drivers/input/misc/appleir.c | 519 +++++++++++++++++++++++++++++++++++++++
7 files changed, 588 insertions(+), 7 deletions(-)
create mode 100644 Documentation/input/appleir.txt
create mode 100644 drivers/input/misc/appleir.c
diff --git a/Documentation/input/appleir.txt b/Documentation/input/appleir.txt
new file mode 100644
index 0000000..db637fb
--- /dev/null
+++ b/Documentation/input/appleir.txt
@@ -0,0 +1,46 @@
+Apple IR receiver Driver (appleir)
+----------------------------------
+ Copyright (C) 2009 Bastien Nocera <hadess@hadess.net>
+
+The appleir driver is a kernel input driver to handle Apple's IR
+receivers (and associated remotes) in the kernel.
+
+The driver is an input driver which only handles "official" remotes
+as built and sold by Apple.
+
+Authors
+-------
+
+James McKenzie (original driver)
+Alex Karpenko (05ac:8242 support)
+Greg Kroah-Hartman (cleanups and original submission)
+Bastien Nocera (further cleanups, brushed metal "enter"
+button support and suspend support)
+
+Supported hardware
+------------------
+
+- All Apple laptops and desktops from 2005 onwards, except:
+ - the unibody Macbook (2009)
+ - Mac Pro (all versions)
+- Apple TV (all revisions prior to September 2010)
+
+The remote will only support the 6 (old white) or 7 (brushed metal) buttons
+of the remotes as sold by Apple. See the next section if you want to use
+other remotes or want to use lirc with the device instead of the kernel driver.
+
+Using lirc (native) instead of the kernel driver
+------------------------------------------------
+
+First, you will need to disable the kernel driver for the receiver.
+
+This can be achieved by passing quirks to the usbhid driver.
+The quirk line would be:
+usbhid.quirks=0x05ac:0x8242:0x40000010
+
+With 0x05ac being the vendor ID (Apple, you shouldn't need to change this)
+With 0x8242 being the product ID (check the output of lsusb for your hardware)
+And 0x10 being "HID_QUIRK_HIDDEV_FORCE" and 0x40000000 being "HID_QUIRK_NO_IGNORE"
+
+This should force the creation of a hiddev device for the receiver, and
+make it usable under lirc.
diff --git a/drivers/hid/hid-apple.c b/drivers/hid/hid-apple.c
index bba05d0..0059d5a 100644
--- a/drivers/hid/hid-apple.c
+++ b/drivers/hid/hid-apple.c
@@ -361,10 +361,6 @@ static void apple_remove(struct hid_device *hdev)
}
static const struct hid_device_id apple_devices[] = {
- { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ATV_IRCONTROL),
- .driver_data = APPLE_HIDDEV | APPLE_IGNORE_HIDINPUT },
- { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_IRCONTROL4),
- .driver_data = APPLE_HIDDEV | APPLE_IGNORE_HIDINPUT },
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_MIGHTYMOUSE),
.driver_data = APPLE_MIGHTYMOUSE | APPLE_INVERT_HWHEEL },
diff --git a/drivers/hid/hid-core.c b/drivers/hid/hid-core.c
index baa25ad..abc5bd7 100644
--- a/drivers/hid/hid-core.c
+++ b/drivers/hid/hid-core.c
@@ -1244,8 +1244,6 @@ static const struct hid_device_id hid_blacklist[] = {
{ HID_USB_DEVICE(USB_VENDOR_ID_A4TECH, USB_DEVICE_ID_A4TECH_RP_649) },
{ HID_USB_DEVICE(USB_VENDOR_ID_ACRUX, 0x0802) },
{ HID_USB_DEVICE(USB_VENDOR_ID_ACTIONSTAR, USB_DEVICE_ID_ACTIONSTAR_1011) },
- { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ATV_IRCONTROL) },
- { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_IRCONTROL4) },
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_MIGHTYMOUSE) },
{ HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_MAGICMOUSE) },
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_FOUNTAIN_ANSI) },
@@ -1577,6 +1575,11 @@ static const struct hid_device_id hid_ignore_list[] = {
{ HID_USB_DEVICE(USB_VENDOR_ID_AIPTEK, USB_DEVICE_ID_AIPTEK_24) },
{ HID_USB_DEVICE(USB_VENDOR_ID_AIRCABLE, USB_DEVICE_ID_AIRCABLE1) },
{ HID_USB_DEVICE(USB_VENDOR_ID_ALCOR, USB_DEVICE_ID_ALCOR_USBRS232) },
+ { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_IRCONTROL) },
+ { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_IRCONTROL2) },
+ { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_IRCONTROL3) },
+ { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_IRCONTROL4) },
+ { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_IRCONTROL5) },
{ HID_USB_DEVICE(USB_VENDOR_ID_ASUSTEK, USB_DEVICE_ID_ASUSTEK_LCM)},
{ HID_USB_DEVICE(USB_VENDOR_ID_ASUSTEK, USB_DEVICE_ID_ASUSTEK_LCM2)},
{ HID_USB_DEVICE(USB_VENDOR_ID_AVERMEDIA, USB_DEVICE_ID_AVER_FM_MR800) },
diff --git a/drivers/hid/hid-ids.h b/drivers/hid/hid-ids.h
index 11af537..360a5ca 100644
--- a/drivers/hid/hid-ids.h
+++ b/drivers/hid/hid-ids.h
@@ -100,8 +100,11 @@
#define USB_DEVICE_ID_APPLE_ALU_WIRELESS_2009_JIS 0x023b
#define USB_DEVICE_ID_APPLE_FOUNTAIN_TP_ONLY 0x030a
#define USB_DEVICE_ID_APPLE_GEYSER1_TP_ONLY 0x030b
-#define USB_DEVICE_ID_APPLE_ATV_IRCONTROL 0x8241
+#define USB_DEVICE_ID_APPLE_IRCONTROL 0x8240
+#define USB_DEVICE_ID_APPLE_IRCONTROL2 0x1440
+#define USB_DEVICE_ID_APPLE_IRCONTROL3 0x8241
#define USB_DEVICE_ID_APPLE_IRCONTROL4 0x8242
+#define USB_DEVICE_ID_APPLE_IRCONTROL5 0x8243
#define USB_VENDOR_ID_ASUS 0x0486
#define USB_DEVICE_ID_ASUS_T91MT 0x0185
diff --git a/drivers/input/misc/Kconfig b/drivers/input/misc/Kconfig
index 60de906..2f2f2e7 100644
--- a/drivers/input/misc/Kconfig
+++ b/drivers/input/misc/Kconfig
help
Say Y here if you need accelerometer to work in polling mode.
+config INPUT_APPLEIR
+ tristate "Apple infrared receiver (built in)"
+ depends on USB_ARCH_HAS_HCD
+ select USB
+ help
+ Say Y here if you want to use a Apple infrared remote control. All
+ the Apple computers from 2005 onwards include such a port, except
+ the unibody Macbook (2009), and Mac Pros. This receiver is also
+ used in the Apple TV set-top box prior to the 2010 model.
+
+ To compile this driver as a module, choose M here: the module will
+ be called appleir.
+
config INPUT_POWERMATE
tristate "Griffin PowerMate and Contour Jog support"
depends on USB_ARCH_HAS_HCD
diff --git a/drivers/input/misc/Makefile b/drivers/input/misc/Makefile
index 1fe1f6c..d5ef2b9 100644
--- a/drivers/input/misc/Makefile
+++ b/drivers/input/misc/Makefile
@@ -13,6 +13,7 @@ obj-$(CONFIG_INPUT_ADXL34X) += adxl34x.o
obj-$(CONFIG_INPUT_ADXL34X_I2C) += adxl34x-i2c.o
obj-$(CONFIG_INPUT_ADXL34X_SPI) += adxl34x-spi.o
obj-$(CONFIG_INPUT_APANEL) += apanel.o
+obj-$(CONFIG_INPUT_APPLEIR) += appleir.o
obj-$(CONFIG_INPUT_ATI_REMOTE) += ati_remote.o
obj-$(CONFIG_INPUT_ATI_REMOTE2) += ati_remote2.o
obj-$(CONFIG_INPUT_ATLAS_BTNS) += atlas_btns.o
diff --git a/drivers/input/misc/appleir.c b/drivers/input/misc/appleir.c
new file mode 100644
index 0000000..3817a3c
--- /dev/null
+++ b/drivers/input/misc/appleir.c
@@ -0,0 +1,519 @@
+/*
+ * appleir: USB driver for the apple ir device
+ *
+ * Original driver written by James McKenzie
+ * Ported to recent 2.6 kernel versions by Greg Kroah-Hartman <gregkh@suse.de>
+ *
+ * Copyright (C) 2006 James McKenzie
+ * Copyright (C) 2008 Greg Kroah-Hartman <greg@kroah.com>
+ * Copyright (C) 2008 Novell Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation, version 2.
+ *
+ */
+
+#include <linux/kernel.h>
+#include <linux/slab.h>
+#include <linux/input.h>
+#include <linux/usb/input.h>
+#include <linux/module.h>
+#include <linux/init.h>
+#include <linux/usb.h>
+#include <linux/usb/input.h>
+#include <asm/unaligned.h>
+#include <asm/byteorder.h>
+
+#define DRIVER_VERSION "v1.2"
+#define DRIVER_AUTHOR "James McKenzie"
+#define DRIVER_DESC "Apple infrared receiver driver"
+#define DRIVER_LICENSE "GPL"
+
+MODULE_AUTHOR(DRIVER_AUTHOR);
+MODULE_DESCRIPTION(DRIVER_DESC);
+MODULE_LICENSE(DRIVER_LICENSE);
+
+#define USB_VENDOR_ID_APPLE 0x05ac
+#define USB_DEVICE_ID_APPLE_IRCONTROL 0x8240
+#define USB_DEVICE_ID_APPLE_IRCONTROL2 0x1440
+#define USB_DEVICE_ID_APPLE_IRCONTROL3 0x8241
+#define USB_DEVICE_ID_APPLE_IRCONTROL4 0x8242
+#define USB_DEVICE_ID_APPLE_IRCONTROL5 0x8243
+
+#define URB_SIZE 32
+
+#define MAX_KEYS 9
+#define MAX_KEYS_MASK (MAX_KEYS - 1)
+
+#define dbginfo(dev, format, arg...) do { if (debug) dev_info(dev , format , ## arg); } while (0)
+
+static int debug;
+module_param(debug, int, 0644);
+MODULE_PARM_DESC(debug, "Enable extra debug messages and information");
+
+/* I have two devices both of which report the following */
+/* 25 87 ee 83 0a + */
+/* 25 87 ee 83 0c - */
+/* 25 87 ee 83 09 << */
+/* 25 87 ee 83 06 >> */
+/* 25 87 ee 83 05 >" */
+/* 25 87 ee 83 03 menu */
+/* 26 00 00 00 00 for key repeat*/
+
+/* Thomas Glanzmann reports the following responses */
+/* 25 87 ee ca 0b + */
+/* 25 87 ee ca 0d - */
+/* 25 87 ee ca 08 << */
+/* 25 87 ee ca 07 >> */
+/* 25 87 ee ca 04 >" */
+/* 25 87 ee ca 02 menu */
+/* 26 00 00 00 00 for key repeat*/
+/* He also observes the following event sometimes */
+/* sent after a key is release, which I interpret */
+/* as a flat battery message */
+/* 25 87 e0 ca 06 flat battery */
+
+/* Alexandre Karpenko reports the following responses for Device ID 0x8242 */
+/* 25 87 ee 47 0b + */
+/* 25 87 ee 47 0d - */
+/* 25 87 ee 47 08 << */
+/* 25 87 ee 47 07 >> */
+/* 25 87 ee 47 04 >" */
+/* 25 87 ee 47 02 menu */
+/* 26 87 ee 47 ** for key repeat (** is the code of the key being held) */
+
+/* Bastien Nocera's "new" remote */
+/* 25 87 ee 91 5f followed by
+ * 25 87 ee 91 05 gives you >"
+ *
+ * 25 87 ee 91 5c followed by
+ * 25 87 ee 91 05 gives you the middle button */
+
+static const unsigned short appleir_key_table[] = {
+ KEY_RESERVED,
+ KEY_MENU,
+ KEY_PLAYPAUSE,
+ KEY_FORWARD,
+ KEY_BACK,
+ KEY_VOLUMEUP,
+ KEY_VOLUMEDOWN,
+ KEY_ENTER,
+ KEY_RESERVED,
+};
+
+struct appleir {
+ struct input_dev *input_dev;
+ unsigned short keymap[ARRAY_SIZE(appleir_key_table)];
+ u8 *data;
+ dma_addr_t dma_buf;
+ struct usb_device *usbdev;
+ unsigned int flags;
+ struct urb *urb;
+ struct timer_list key_up_timer;
+ int current_key;
+ int prev_key_idx;
+ char phys[32];
+};
+
+static DEFINE_MUTEX(appleir_mutex);
+
+enum {
+ APPLEIR_OPENED = 0x1,
+ APPLEIR_SUSPENDED = 0x2,
+};
+
+static struct usb_device_id appleir_ids[] = {
+ { USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_IRCONTROL) },
+ { USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_IRCONTROL2) },
+ { USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_IRCONTROL3) },
+ { USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_IRCONTROL4) },
+ { USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_IRCONTROL5) },
+ {}
+};
+MODULE_DEVICE_TABLE(usb, appleir_ids);
+
+static void dump_packet(struct appleir *appleir, char *msg, u8 *data, int len)
+{
+ int i;
+
+ printk(KERN_ERR "appleir: %s (%d bytes)", msg, len);
+
+ for (i = 0; i < len; ++i)
+ printk(" %02x", data[i]);
+ printk(" (should be command %d)\n", (data[4] >> 1) & MAX_KEYS_MASK);
+}
+
+static int get_key(int data)
+{
+ switch (data) {
+ case 0x02:
+ case 0x03:
+ /* menu */
+ return 1;
+ case 0x04:
+ case 0x05:
+ /* >" */
+ return 2;
+ case 0x06:
+ case 0x07:
+ /* >> */
+ return 3;
+ case 0x08:
+ case 0x09:
+ /* << */
+ return 4;
+ case 0x0a:
+ case 0x0b:
+ /* + */
+ return 5;
+ case 0x0c:
+ case 0x0d:
+ /* - */
+ return 6;
+ case 0x5c:
+ /* Middle button, on newer remotes,
+ * part of a 2 packet-command */
+ return -7;
+ default:
+ return -1;
+ }
+}
+
+static void key_up(struct appleir *appleir, int key)
+{
+ dbginfo(&appleir->input_dev->dev, "key %d up\n", key);
+ input_report_key(appleir->input_dev, key, 0);
+ input_sync(appleir->input_dev);
+}
+
+static void key_down(struct appleir *appleir, int key)
+{
+ dbginfo(&appleir->input_dev->dev, "key %d down\n", key);
+ input_report_key(appleir->input_dev, key, 1);
+ input_sync(appleir->input_dev);
+}
+
+static void battery_flat(struct appleir *appleir)
+{
+ dev_err(&appleir->input_dev->dev, "possible flat battery?\n");
+}
+
+static void key_up_tick(unsigned long data)
+{
+ struct appleir *appleir = (struct appleir *)data;
+
+ if (appleir->current_key) {
+ key_up(appleir, appleir->current_key);
+ appleir->current_key = 0;
+ }
+}
+
+static void new_data(struct appleir *appleir, u8 *data, int len)
+{
+ static const u8 keydown[] = { 0x25, 0x87, 0xee };
+ static const u8 keyrepeat[] = { 0x26, };
+ static const u8 flatbattery[] = { 0x25, 0x87, 0xe0 };
+
+ if (debug)
+ dump_packet(appleir, "received", data, len);
+
+ if (len != 5)
+ return;
+
+ if (!memcmp(data, keydown, sizeof(keydown))) {
+ int index;
+
+ /* If we already have a key down, take it up before marking
+ this one down */
+ if (appleir->current_key)
+ key_up(appleir, appleir->current_key);
+
+ /* Handle dual packet commands */
+ if (appleir->prev_key_idx > 0)
+ index = appleir->prev_key_idx;
+ else
+ index = get_key(data[4]);
+
+ if (index > 0) {
+ appleir->current_key = appleir->keymap[index];
+
+ key_down(appleir, appleir->current_key);
+ /* Remote doesn't do key up, either pull them up, in the test
+ above, or here set a timer which pulls them up after 1/8 s */
+ mod_timer(&appleir->key_up_timer, jiffies + HZ / 8);
+ appleir->prev_key_idx = 0;
+ return;
+ } else if (index == -7) {
+ /* Remember key for next packet */
+ appleir->prev_key_idx = 0 - index;
+ return;
+ }
+ }
+
+ appleir->prev_key_idx = 0;
+
+ if (!memcmp(data, keyrepeat, sizeof(keyrepeat))) {
+ key_down(appleir, appleir->current_key);
+ /* Remote doesn't do key up, either pull them up, in the test
+ above, or here set a timer which pulls them up after 1/8 s */
+ mod_timer(&appleir->key_up_timer, jiffies + HZ / 8);
+ return;
+ }
+
+ if (!memcmp(data, flatbattery, sizeof(flatbattery))) {
+ battery_flat(appleir);
+ /* Fall through */
+ }
+
+ dump_packet(appleir, "unknown packet", data, len);
+}
+
+static void appleir_urb(struct urb *urb)
+{
+ struct appleir *appleir = urb->context;
+ int status = urb->status;
+ int retval;
+
+ switch (status) {
+ case 0:
+ new_data(appleir, urb->transfer_buffer, urb->actual_length);
+ break;
+ case -ECONNRESET:
+ case -ENOENT:
+ case -ESHUTDOWN:
+ /* This urb is terminated, clean up */
+ dbginfo(&appleir->input_dev->dev, "%s - urb shutting down with status: %d", __func__,
+ urb->status);
+ return;
+ default:
+ dbginfo(&appleir->input_dev->dev, "%s - nonzero urb status received: %d", __func__,
+ urb->status);
+ }
+
+ retval = usb_submit_urb(urb, GFP_ATOMIC);
+ if (retval)
+ err("%s - usb_submit_urb failed with result %d", __func__,
+ retval);
+}
+
+static int appleir_open(struct input_dev *dev)
+{
+ struct appleir *appleir = input_get_drvdata(dev);
+ struct usb_interface *intf = usb_ifnum_to_if(appleir->usbdev, 0);
+ int r;
+
+ r = usb_autopm_get_interface(intf);
+ if (r) {
+ dev_err(&intf->dev,
+ "%s(): usb_autopm_get_interface() = %d\n", __func__, r);
+ return r;
+ }
+
+ mutex_lock(&appleir_mutex);
+
+ if (usb_submit_urb(appleir->urb, GFP_ATOMIC)) {
+ r = -EIO;
+ goto fail;
+ }
+
+ appleir->flags |= APPLEIR_OPENED;
+
+ mutex_unlock(&appleir_mutex);
+
+ usb_autopm_put_interface(intf);
+
+ return 0;
+fail:
+ mutex_unlock(&appleir_mutex);
+ usb_autopm_put_interface(intf);
+ return r;
+}
+
+static void appleir_close(struct input_dev *dev)
+{
+ struct appleir *appleir = input_get_drvdata(dev);
+
+ mutex_lock(&appleir_mutex);
+
+ if (!(appleir->flags & APPLEIR_SUSPENDED)) {
+ usb_kill_urb(appleir->urb);
+ del_timer_sync(&appleir->key_up_timer);
+ }
+
+ appleir->flags &= ~APPLEIR_OPENED;
+
+ mutex_unlock(&appleir_mutex);
+}
+
+static int appleir_probe(struct usb_interface *intf,
+ const struct usb_device_id *id)
+{
+ struct usb_device *dev = interface_to_usbdev(intf);
+ struct usb_endpoint_descriptor *endpoint;
+ struct appleir *appleir = NULL;
+ struct input_dev *input_dev;
+ int retval = -ENOMEM;
+ int i;
+
+ appleir = kzalloc(sizeof(struct appleir), GFP_KERNEL);
+ if (!appleir)
+ goto allocfail;
+
+ appleir->data = usb_alloc_coherent(dev, URB_SIZE, GFP_KERNEL,
+ &appleir->dma_buf);
+ if (!appleir->data)
+ goto usbfail;
+
+ appleir->urb = usb_alloc_urb(0, GFP_KERNEL);
+ if (!appleir->urb)
+ goto urbfail;
+
+ appleir->usbdev = dev;
+
+ input_dev = input_allocate_device();
+ if (!input_dev)
+ goto inputfail;
+
+ appleir->input_dev = input_dev;
+
+ usb_make_path(dev, appleir->phys, sizeof(appleir->phys));
+ strlcpy(appleir->phys, "/input0", sizeof(appleir->phys));
+
+ input_dev->name = "Apple Infrared Remote Controller";
+ input_dev->phys = appleir->phys;
+ usb_to_input_id(dev, &input_dev->id);
+ input_dev->dev.parent = &intf->dev;
+ input_dev->keycode = appleir->keymap;
+ input_dev->keycodesize = sizeof(unsigned short);
+ input_dev->keycodemax = ARRAY_SIZE(appleir->keymap);
+
+ input_dev->evbit[0] = BIT(EV_KEY) | BIT(EV_REP);
+
+ memcpy(appleir->keymap, appleir_key_table, sizeof(appleir->keymap));
+ for (i = 0; i < ARRAY_SIZE(appleir_key_table); i++)
+ set_bit(appleir->keymap[i], input_dev->keybit);
+ clear_bit(KEY_RESERVED, input_dev->keybit);
+
+ input_set_drvdata(input_dev, appleir);
+ input_dev->open = appleir_open;
+ input_dev->close = appleir_close;
+
+ endpoint = &intf->cur_altsetting->endpoint[0].desc;
+
+ usb_fill_int_urb(appleir->urb, dev,
+ usb_rcvintpipe(dev, endpoint->bEndpointAddress),
+ appleir->data, 8,
+ appleir_urb, appleir, endpoint->bInterval);
+
+ appleir->urb->transfer_dma = appleir->dma_buf;
+ appleir->urb->transfer_flags |= URB_NO_TRANSFER_DMA_MAP;
+
+ setup_timer(&appleir->key_up_timer,
+ key_up_tick, (unsigned long) appleir);
+
+ retval = input_register_device(appleir->input_dev);
+ if (retval)
+ goto inputfail;
+
+ usb_set_intfdata(intf, appleir);
+
+ return 0;
+
+inputfail:
+ input_free_device(appleir->input_dev);
+
+urbfail:
+ usb_free_urb(appleir->urb);
+
+usbfail:
+ usb_free_coherent(dev, URB_SIZE, appleir->data,
+ appleir->dma_buf);
+
+allocfail:
+ kfree(appleir);
+
+ return retval;
+}
+
+static void appleir_disconnect(struct usb_interface *intf)
+{
+ struct appleir *appleir = usb_get_intfdata(intf);
+
+ usb_set_intfdata(intf, NULL);
+ input_unregister_device(appleir->input_dev);
+ usb_free_urb(appleir->urb);
+ usb_free_coherent(interface_to_usbdev(intf), URB_SIZE,
+ appleir->data, appleir->dma_buf);
+ kfree(appleir);
+}
+
+static int appleir_suspend(struct usb_interface *interface,
+ pm_message_t message)
+{
+ struct appleir *appleir = usb_get_intfdata(interface);
+
+ mutex_lock(&appleir_mutex);
+ if (appleir->flags & APPLEIR_OPENED)
+ usb_kill_urb(appleir->urb);
+
+ appleir->flags |= APPLEIR_SUSPENDED;
+
+ mutex_unlock(&appleir_mutex);
+
+ return 0;
+}
+
+static int appleir_resume(struct usb_interface *interface)
+{
+ struct appleir *appleir;
+ int r = 0;
+
+ appleir = usb_get_intfdata(interface);
+
+ mutex_lock(&appleir_mutex);
+ if (appleir->flags & APPLEIR_OPENED) {
+ struct usb_endpoint_descriptor *endpoint;
+
+ endpoint = &interface->cur_altsetting->endpoint[0].desc;
+ usb_fill_int_urb(appleir->urb, appleir->usbdev,
+ usb_rcvintpipe(appleir->usbdev, endpoint->bEndpointAddress),
+ appleir->data, 8,
+ appleir_urb, appleir, endpoint->bInterval);
+ appleir->urb->transfer_dma = appleir->dma_buf;
+ appleir->urb->transfer_flags |= URB_NO_TRANSFER_DMA_MAP;
+
+ /* And reset the USB device */
+ if (usb_submit_urb(appleir->urb, GFP_ATOMIC))
+ r = -EIO;
+ }
+
+ appleir->flags &= ~APPLEIR_SUSPENDED;
+
+ mutex_unlock(&appleir_mutex);
+
+ return r;
+}
+
+static struct usb_driver appleir_driver = {
+ .name = "appleir",
+ .probe = appleir_probe,
+ .disconnect = appleir_disconnect,
+ .suspend = appleir_suspend,
+ .resume = appleir_resume,
+ .reset_resume = appleir_resume,
+ .id_table = appleir_ids,
+};
+
+static int __init appleir_init(void)
+{
+ return usb_register(&appleir_driver);
+}
+
+static void __exit appleir_exit(void)
+{
+ usb_deregister(&appleir_driver);
+}
+
+module_init(appleir_init);
+module_exit(appleir_exit);
--
1.7.2.2

View File

@ -1,7 +1,7 @@
From ed11aa781242216bc72f1cd7d757a4f40be10329 Mon Sep 17 00:00:00 2001
From d4b347b29b4d14647c7394f7167bf6785dc98e50 Mon Sep 17 00:00:00 2001
From: Seth Forshee <seth.forshee@canonical.com>
Date: Mon, 7 Nov 2011 19:53:15 -0800
Subject: [PATCH 1/7] Input: ALPS - move protocol information to Documentation
Subject: [PATCH 1/6] Input: ALPS - move protocol information to Documentation
In preparation for new protocol support, move the protocol
information currently documented in alps.c to
@ -99,10 +99,10 @@ index 0000000..ab5478f
+ byte 7: 0 y6 y5 y4 y3 y2 y1 y0
+ byte 8: 0 z6 z5 z4 z3 z2 z1 z0
diff --git a/drivers/input/mouse/alps.c b/drivers/input/mouse/alps.c
index 99d5876..ad15e7c 100644
index 003587c..19d0943 100644
--- a/drivers/input/mouse/alps.c
+++ b/drivers/input/mouse/alps.c
@@ -74,42 +74,7 @@ static const struct alps_model_info alps_model_data[] = {
@@ -67,42 +67,7 @@ static const struct alps_model_info alps_model_data[] = {
* isn't valid per PS/2 spec.
*/
@ -150,10 +150,10 @@ index 99d5876..ad15e7c 100644
1.7.7.3
From 27b8ed51ee660e9a59cf325d6339f38b216fbb31 Mon Sep 17 00:00:00 2001
From fa629ef5222193214da9a2b3c94369f79353bec9 Mon Sep 17 00:00:00 2001
From: Seth Forshee <seth.forshee@canonical.com>
Date: Mon, 7 Nov 2011 19:53:24 -0800
Subject: [PATCH 2/7] Input: ALPS - add protocol version field in
Subject: [PATCH 2/6] Input: ALPS - add protocol version field in
alps_model_info
In preparation for adding support for more ALPS protocol versions,
@ -164,28 +164,24 @@ version 1 and version 2, repsectively.
Signed-off-by: Seth Forshee <seth.forshee@canonical.com>
Acked-by: Chase Douglas <chase.douglas@canonical.com>
Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
Conflicts:
drivers/input/mouse/alps.c
---
drivers/input/mouse/alps.c | 47 +++++++++++++++++++++----------------------
drivers/input/mouse/alps.h | 4 +++
2 files changed, 27 insertions(+), 24 deletions(-)
diff --git a/drivers/input/mouse/alps.c b/drivers/input/mouse/alps.c
index ad15e7c..572cb21 100644
index 19d0943..77b776d 100644
--- a/drivers/input/mouse/alps.c
+++ b/drivers/input/mouse/alps.c
@@ -30,7 +30,6 @@
#define dbg(format, arg...) do {} while (0)
#endif
@@ -23,7 +23,6 @@
#include "psmouse.h"
#include "alps.h"
-#define ALPS_OLDPROTO 0x01 /* old style input */
#define ALPS_DUALPOINT 0x02 /* touchpad has trackstick */
#define ALPS_PASS 0x04 /* device has a pass-through port */
@@ -42,30 +41,30 @@
@@ -35,30 +34,30 @@
6-byte ALPS packet */
static const struct alps_model_info alps_model_data[] = {
@ -238,7 +234,7 @@ index ad15e7c..572cb21 100644
};
/*
@@ -119,7 +118,7 @@ static void alps_process_packet(struct psmouse *psmouse)
@@ -112,7 +111,7 @@ static void alps_process_packet(struct psmouse *psmouse)
int x, y, z, ges, fin, left, right, middle;
int back = 0, forward = 0;
@ -268,10 +264,10 @@ index 904ed8b..4ce9bba 100644
1.7.7.3
From dfab9d3e073f2a58e4ba3837a726e9a0e33ea5df Mon Sep 17 00:00:00 2001
From b46615fe9215214ac00e26d35fc54dbe1c510803 Mon Sep 17 00:00:00 2001
From: Seth Forshee <seth.forshee@canonical.com>
Date: Mon, 7 Nov 2011 19:53:30 -0800
Subject: [PATCH 3/7] Input: ALPS - remove assumptions about packet size
Subject: [PATCH 3/6] Input: ALPS - remove assumptions about packet size
In preparation for version 4 protocol support, which has 8-byte
data packets, remove all hard-coded assumptions about packet size
@ -285,10 +281,10 @@ Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
1 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/drivers/input/mouse/alps.c b/drivers/input/mouse/alps.c
index 572cb21..f699698 100644
index 77b776d..44a0a71 100644
--- a/drivers/input/mouse/alps.c
+++ b/drivers/input/mouse/alps.c
@@ -315,7 +315,7 @@ static void alps_flush_packet(unsigned long data)
@@ -308,7 +308,7 @@ static void alps_flush_packet(unsigned long data)
serio_pause_rx(psmouse->ps2dev.serio);
@ -297,7 +293,7 @@ index 572cb21..f699698 100644
/*
* We did not any more data in reasonable amount of time.
@@ -365,15 +365,15 @@ static psmouse_ret_t alps_process_byte(struct psmouse *psmouse)
@@ -359,8 +359,8 @@ static psmouse_ret_t alps_process_byte(struct psmouse *psmouse)
return PSMOUSE_BAD_DATA;
}
@ -306,8 +302,9 @@ index 572cb21..f699698 100644
+ /* Bytes 2 - pktsize should have 0 in the highest bit */
+ if (psmouse->pktcnt >= 2 && psmouse->pktcnt <= psmouse->pktsize &&
(psmouse->packet[psmouse->pktcnt - 1] & 0x80)) {
dbg("refusing packet[%i] = %x\n",
psmouse->pktcnt - 1, psmouse->packet[psmouse->pktcnt - 1]);
psmouse_dbg(psmouse, "refusing packet[%i] = %x\n",
psmouse->pktcnt - 1,
@@ -368,7 +368,7 @@ static psmouse_ret_t alps_process_byte(struct psmouse *psmouse)
return PSMOUSE_BAD_DATA;
}
@ -316,7 +313,7 @@ index 572cb21..f699698 100644
alps_process_packet(psmouse);
return PSMOUSE_FULL_PACKET;
}
@@ -531,7 +531,7 @@ static int alps_tap_mode(struct psmouse *psmouse, int enable)
@@ -529,7 +529,7 @@ static int alps_tap_mode(struct psmouse *psmouse, int enable)
static int alps_poll(struct psmouse *psmouse)
{
struct alps_data *priv = psmouse->private;
@ -329,10 +326,10 @@ index 572cb21..f699698 100644
1.7.7.3
From 35f17ba201d7a8b8adc59811effafe62a331fd9e Mon Sep 17 00:00:00 2001
From 25bded7cd60fa460e520e9f819bd06f4c5cb53f0 Mon Sep 17 00:00:00 2001
From: Seth Forshee <seth.forshee@canonical.com>
Date: Mon, 7 Nov 2011 19:53:36 -0800
Subject: [PATCH 4/7] Input: ALPS - add support for protocol versions 3 and 4
Subject: [PATCH 4/6] Input: ALPS - add support for protocol versions 3 and 4
This patch adds support for two ALPS touchpad protocols not
supported currently by the driver, which I am arbitrarily naming
@ -345,23 +342,19 @@ of the v3 protocol.
Signed-off-by: Seth Forshee <seth.forshee@canonical.com>
Acked-by: Chase Douglas <chase.douglas@canonical.com>
Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
Conflicts:
drivers/input/mouse/alps.c
---
drivers/input/mouse/alps.c | 790 +++++++++++++++++++++++++++++++++++++++--
drivers/input/mouse/alps.c | 791 +++++++++++++++++++++++++++++++++++++++--
drivers/input/mouse/alps.h | 14 +
drivers/input/mouse/psmouse.h | 1 +
3 files changed, 767 insertions(+), 38 deletions(-)
3 files changed, 768 insertions(+), 38 deletions(-)
diff --git a/drivers/input/mouse/alps.c b/drivers/input/mouse/alps.c
index f699698..b2bc8ca 100644
index 44a0a71..a0248fd 100644
--- a/drivers/input/mouse/alps.c
+++ b/drivers/input/mouse/alps.c
@@ -30,6 +30,49 @@
#define dbg(format, arg...) do {} while (0)
#endif
@@ -23,6 +23,50 @@
#include "psmouse.h"
#include "alps.h"
+/*
+ * Definitions for ALPS version 3 and 4 command mode protocol
@ -405,11 +398,12 @@ index f699698..b2bc8ca 100644
+ { PSMOUSE_CMD_SETRES, 0x03 }, /* e */
+ { PSMOUSE_CMD_SETSCALE11, 0x00 }, /* f */
+};
+
+
#define ALPS_DUALPOINT 0x02 /* touchpad has trackstick */
#define ALPS_PASS 0x04 /* device has a pass-through port */
@@ -41,30 +84,33 @@
@@ -34,30 +78,33 @@
6-byte ALPS packet */
static const struct alps_model_info alps_model_data[] = {
@ -465,7 +459,7 @@ index f699698..b2bc8ca 100644
};
/*
@@ -108,7 +154,7 @@ static void alps_report_buttons(struct psmouse *psmouse,
@@ -101,7 +148,7 @@ static void alps_report_buttons(struct psmouse *psmouse,
input_sync(dev2);
}
@ -474,7 +468,7 @@ index f699698..b2bc8ca 100644
{
struct alps_data *priv = psmouse->private;
const struct alps_model_info *model = priv->i;
@@ -210,6 +256,224 @@ static void alps_process_packet(struct psmouse *psmouse)
@@ -203,6 +250,224 @@ static void alps_process_packet(struct psmouse *psmouse)
input_sync(dev);
}
@ -699,7 +693,7 @@ index f699698..b2bc8ca 100644
static void alps_report_bare_ps2_packet(struct psmouse *psmouse,
unsigned char packet[],
bool report_buttons)
@@ -381,11 +645,127 @@ static psmouse_ret_t alps_process_byte(struct psmouse *psmouse)
@@ -376,11 +641,127 @@ static psmouse_ret_t alps_process_byte(struct psmouse *psmouse)
return PSMOUSE_GOOD_DATA;
}
@ -827,7 +821,7 @@ index f699698..b2bc8ca 100644
int i;
/*
@@ -431,12 +811,41 @@ static const struct alps_model_info *alps_get_model(struct psmouse *psmouse, int
@@ -428,12 +809,41 @@ static const struct alps_model_info *alps_get_model(struct psmouse *psmouse, int
*version = (param[0] << 8) | (param[1] << 4) | i;
}
@ -873,7 +867,7 @@ index f699698..b2bc8ca 100644
}
/*
@@ -444,7 +853,7 @@ static const struct alps_model_info *alps_get_model(struct psmouse *psmouse, int
@@ -441,7 +851,7 @@ static const struct alps_model_info *alps_get_model(struct psmouse *psmouse, int
* subsequent commands. It looks like glidepad is behind stickpointer,
* I'd thought it would be other way around...
*/
@ -882,7 +876,7 @@ index f699698..b2bc8ca 100644
{
struct ps2dev *ps2dev = &psmouse->ps2dev;
int cmd = enable ? PSMOUSE_CMD_SETSCALE21 : PSMOUSE_CMD_SETSCALE11;
@@ -461,7 +870,7 @@ static int alps_passthrough_mode(struct psmouse *psmouse, bool enable)
@@ -458,7 +868,7 @@ static int alps_passthrough_mode(struct psmouse *psmouse, bool enable)
return 0;
}
@ -891,7 +885,7 @@ index f699698..b2bc8ca 100644
{
struct ps2dev *ps2dev = &psmouse->ps2dev;
@@ -535,13 +944,13 @@ static int alps_poll(struct psmouse *psmouse)
@@ -533,13 +943,13 @@ static int alps_poll(struct psmouse *psmouse)
bool poll_failed;
if (priv->i->flags & ALPS_PASS)
@ -907,7 +901,7 @@ index f699698..b2bc8ca 100644
if (poll_failed || (buf[0] & priv->i->mask0) != priv->i->byte0)
return -1;
@@ -558,13 +967,13 @@ static int alps_poll(struct psmouse *psmouse)
@@ -556,13 +966,13 @@ static int alps_poll(struct psmouse *psmouse)
return 0;
}
@ -923,13 +917,13 @@ index f699698..b2bc8ca 100644
return -1;
}
@@ -573,13 +982,13 @@ static int alps_hw_init(struct psmouse *psmouse)
@@ -571,13 +981,13 @@ static int alps_hw_init(struct psmouse *psmouse)
return -1;
}
- if (alps_absolute_mode(psmouse)) {
+ if (alps_absolute_mode_v1_v2(psmouse)) {
printk(KERN_ERR "alps.c: Failed to enable absolute mode\n");
psmouse_err(psmouse, "Failed to enable absolute mode\n");
return -1;
}
@ -939,7 +933,7 @@ index f699698..b2bc8ca 100644
return -1;
}
@@ -592,6 +1001,297 @@ static int alps_hw_init(struct psmouse *psmouse)
@@ -590,6 +1000,297 @@ static int alps_hw_init(struct psmouse *psmouse)
return 0;
}
@ -1237,7 +1231,7 @@ index f699698..b2bc8ca 100644
static int alps_reconnect(struct psmouse *psmouse)
{
const struct alps_model_info *model;
@@ -632,6 +1332,8 @@ int alps_init(struct psmouse *psmouse)
@@ -630,6 +1331,8 @@ int alps_init(struct psmouse *psmouse)
psmouse->private = priv;
@ -1246,7 +1240,7 @@ index f699698..b2bc8ca 100644
model = alps_get_model(psmouse, &version);
if (!model)
goto init_fail;
@@ -659,8 +1361,20 @@ int alps_init(struct psmouse *psmouse)
@@ -657,8 +1360,20 @@ int alps_init(struct psmouse *psmouse)
BIT_MASK(BTN_LEFT) | BIT_MASK(BTN_RIGHT);
dev1->evbit[BIT_WORD(EV_ABS)] |= BIT_MASK(EV_ABS);
@ -1269,7 +1263,7 @@ index f699698..b2bc8ca 100644
input_set_abs_params(dev1, ABS_PRESSURE, 0, 127, 0, 0);
if (model->flags & ALPS_WHEEL) {
@@ -703,7 +1417,7 @@ int alps_init(struct psmouse *psmouse)
@@ -701,7 +1416,7 @@ int alps_init(struct psmouse *psmouse)
psmouse->poll = alps_poll;
psmouse->disconnect = alps_disconnect;
psmouse->reconnect = alps_reconnect;
@ -1320,7 +1314,7 @@ index 4ce9bba..62db7f4 100644
int alps_detect(struct psmouse *psmouse, bool set_properties);
int alps_init(struct psmouse *psmouse);
diff --git a/drivers/input/mouse/psmouse.h b/drivers/input/mouse/psmouse.h
index 593e910..c2b5aa6 100644
index 9b84b0c..11a9c6c 100644
--- a/drivers/input/mouse/psmouse.h
+++ b/drivers/input/mouse/psmouse.h
@@ -8,6 +8,7 @@
@ -1335,10 +1329,10 @@ index 593e910..c2b5aa6 100644
1.7.7.3
From 8a2d5b12d0a47daf178a842ca009eaf344033cf8 Mon Sep 17 00:00:00 2001
From 01ce661fc83005947dc958a5739c153843af8a73 Mon Sep 17 00:00:00 2001
From: Seth Forshee <seth.forshee@canonical.com>
Date: Mon, 7 Nov 2011 19:54:13 -0800
Subject: [PATCH 5/7] Input: ALPS - add semi-MT support for v3 protocol
Subject: [PATCH 5/6] Input: ALPS - add semi-MT support for v3 protocol
Signed-off-by: Seth Forshee <seth.forshee@canonical.com>
Acked-by: Chase Douglas <chase.douglas@canonical.com>
@ -1349,7 +1343,7 @@ Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
2 files changed, 215 insertions(+), 19 deletions(-)
diff --git a/drivers/input/mouse/alps.c b/drivers/input/mouse/alps.c
index b2bc8ca..15383e1 100644
index a0248fd..bd87380 100644
--- a/drivers/input/mouse/alps.c
+++ b/drivers/input/mouse/alps.c
@@ -17,6 +17,7 @@
@ -1360,7 +1354,7 @@ index b2bc8ca..15383e1 100644
#include <linux/serio.h>
#include <linux/libps2.h>
@@ -33,6 +34,12 @@
@@ -26,6 +27,12 @@
/*
* Definitions for ALPS version 3 and 4 command mode protocol
*/
@ -1373,7 +1367,7 @@ index b2bc8ca..15383e1 100644
#define ALPS_CMD_NIBBLE_10 0x01f2
static const struct alps_nibble_commands alps_v3_nibble_commands[] = {
@@ -256,6 +263,137 @@ static void alps_process_packet_v1_v2(struct psmouse *psmouse)
@@ -250,6 +257,137 @@ static void alps_process_packet_v1_v2(struct psmouse *psmouse)
input_sync(dev);
}
@ -1511,7 +1505,7 @@ index b2bc8ca..15383e1 100644
static void alps_process_trackstick_packet_v3(struct psmouse *psmouse)
{
struct alps_data *priv = psmouse->private;
@@ -324,16 +462,17 @@ static void alps_process_touchpad_packet_v3(struct psmouse *psmouse)
@@ -318,16 +456,17 @@ static void alps_process_touchpad_packet_v3(struct psmouse *psmouse)
struct input_dev *dev2 = priv->dev2;
int x, y, z;
int left, right, middle;
@ -1535,7 +1529,7 @@ index b2bc8ca..15383e1 100644
/*
* Sometimes a position packet will indicate a multi-packet
* sequence, but then what follows is another position
@@ -341,18 +480,49 @@ static void alps_process_touchpad_packet_v3(struct psmouse *psmouse)
@@ -335,18 +474,49 @@ static void alps_process_touchpad_packet_v3(struct psmouse *psmouse)
* position packet as usual.
*/
if (packet[0] & 0x40) {
@ -1591,7 +1585,7 @@ index b2bc8ca..15383e1 100644
left = packet[3] & 0x01;
right = packet[3] & 0x02;
@@ -372,22 +542,38 @@ static void alps_process_touchpad_packet_v3(struct psmouse *psmouse)
@@ -366,22 +536,38 @@ static void alps_process_touchpad_packet_v3(struct psmouse *psmouse)
if (x && y && !z)
return;
@ -1635,7 +1629,7 @@ index b2bc8ca..15383e1 100644
input_sync(dev);
if (!(priv->quirks & ALPS_QUIRK_TRACKSTICK_BUTTONS)) {
@@ -1369,9 +1555,18 @@ int alps_init(struct psmouse *psmouse)
@@ -1368,9 +1554,18 @@ int alps_init(struct psmouse *psmouse)
input_set_abs_params(dev1, ABS_Y, 0, 767, 0, 0);
break;
case ALPS_PROTO_V3:
@ -1672,10 +1666,10 @@ index 62db7f4..a00a4ab 100644
1.7.7.3
From 281688737cb83dd113cfab809b2c78841451ba32 Mon Sep 17 00:00:00 2001
From 7cf801cfc0774b777aa6861cf4a43a90b112b1ed Mon Sep 17 00:00:00 2001
From: Seth Forshee <seth.forshee@canonical.com>
Date: Mon, 7 Nov 2011 19:54:35 -0800
Subject: [PATCH 6/7] Input: ALPS - add documentation for protocol versions 3
Subject: [PATCH 6/6] Input: ALPS - add documentation for protocol versions 3
and 4
Also converts from using "old" and "new" to describe the already-known
@ -1865,126 +1859,3 @@ index ab5478f..f274c28 100644
--
1.7.7.3
From 8114d422321fa6bb724a03faf25b101868d6e03d Mon Sep 17 00:00:00 2001
From: Josh Boyer <jwboyer@redhat.com>
Date: Mon, 12 Dec 2011 15:12:00 -0500
Subject: [PATCH 7/7] Revert psmouse_* print format changes from the
backported patches. Sigh
Signed-off-by: Josh Boyer <jwboyer@redhat.com>
---
drivers/input/mouse/alps.c | 29 ++++++++++++-----------------
1 files changed, 12 insertions(+), 17 deletions(-)
diff --git a/drivers/input/mouse/alps.c b/drivers/input/mouse/alps.c
index 15383e1..4925a63 100644
--- a/drivers/input/mouse/alps.c
+++ b/drivers/input/mouse/alps.c
@@ -403,7 +403,7 @@ static void alps_process_trackstick_packet_v3(struct psmouse *psmouse)
/* Sanity check packet */
if (!(packet[0] & 0x40)) {
- psmouse_dbg(psmouse, "Bad trackstick packet, discarding\n");
+ dbg("Bad trackstick packet, discarding\n");
return;
}
@@ -922,13 +922,12 @@ static int alps_enter_command_mode(struct psmouse *psmouse,
ps2_command(ps2dev, NULL, PSMOUSE_CMD_RESET_WRAP) ||
ps2_command(ps2dev, NULL, PSMOUSE_CMD_RESET_WRAP) ||
ps2_command(ps2dev, param, PSMOUSE_CMD_GETINFO)) {
- psmouse_err(psmouse, "failed to enter command mode\n");
+ printk(KERN_ERR "alps.c: failed to enter command mode\n");
return -1;
}
if (param[0] != 0x88 && param[1] != 0x07) {
- psmouse_dbg(psmouse,
- "unknown response while entering command mode: %2.2x %2.2x %2.2x\n",
+ dbg("unknown response while entering command mode: %2.2x %2.2x %2.2x\n",
param[0], param[1], param[2]);
return -1;
}
@@ -1012,8 +1011,7 @@ static const struct alps_model_info *alps_get_model(struct psmouse *psmouse, int
*/
model = NULL;
if (alps_enter_command_mode(psmouse, param)) {
- psmouse_warn(psmouse,
- "touchpad failed to enter command mode\n");
+ printk(KERN_WARNING "alps.c: touchpad failed to enter command mode\n");
} else {
for (i = 0; i < ARRAY_SIZE(alps_model_data); i++) {
if (alps_model_data[i].proto_version > ALPS_PROTO_V2 &&
@@ -1025,8 +1023,7 @@ static const struct alps_model_info *alps_get_model(struct psmouse *psmouse, int
alps_exit_command_mode(psmouse);
if (!model)
- psmouse_dbg(psmouse,
- "Unknown command mode response %2.2x\n",
+ dbg("Unknown command mode response %2.2x\n",
param[0]);
}
}
@@ -1263,10 +1260,9 @@ static int alps_hw_init_v3(struct psmouse *psmouse)
ps2_command(ps2dev, NULL, PSMOUSE_CMD_SETSCALE21) ||
ps2_command(ps2dev, NULL, PSMOUSE_CMD_SETSCALE21) ||
ps2_command(ps2dev, param, PSMOUSE_CMD_GETINFO)) {
- psmouse_warn(psmouse, "trackstick E7 report failed\n");
+ printk(KERN_WARNING "alps.c: trackstick E7 report failed\n");
} else {
- psmouse_dbg(psmouse,
- "trackstick E7 report: %2.2x %2.2x %2.2x\n",
+ dbg("trackstick E7 report: %2.2x %2.2x %2.2x\n",
param[0], param[1], param[2]);
/*
@@ -1280,8 +1276,7 @@ static int alps_hw_init_v3(struct psmouse *psmouse)
ps2_command(ps2dev, NULL, PSMOUSE_CMD_SETSCALE11) ||
alps_command_mode_send_nibble(psmouse, 0x9) ||
alps_command_mode_send_nibble(psmouse, 0x4)) {
- psmouse_err(psmouse,
- "Error sending magic E6 sequence\n");
+ printk(KERN_ERR "alps.c: Error sending magic E6 sequence\n");
goto error_passthrough;
}
}
@@ -1293,7 +1288,7 @@ static int alps_hw_init_v3(struct psmouse *psmouse)
}
if (alps_absolute_mode_v3(psmouse)) {
- psmouse_err(psmouse, "Failed to enter absolute mode\n");
+ printk(KERN_ERR "alps.c: Failed to enter absolute mode\n");
goto error;
}
@@ -1343,7 +1338,7 @@ static int alps_hw_init_v3(struct psmouse *psmouse)
param[0] = 0x64;
if (ps2_command(ps2dev, param, PSMOUSE_CMD_SETRATE) ||
ps2_command(ps2dev, NULL, PSMOUSE_CMD_ENABLE)) {
- psmouse_err(psmouse, "Failed to enable data reporting\n");
+ printk(KERN_ERR "alps.c: Failed to enable data reporting\n");
return -1;
}
@@ -1392,7 +1387,7 @@ static int alps_hw_init_v4(struct psmouse *psmouse)
goto error;
if (alps_absolute_mode_v4(psmouse)) {
- psmouse_err(psmouse, "Failed to enter absolute mode\n");
+ printk(KERN_ERR "alps.c: Failed to enter absolute mode\n");
goto error;
}
@@ -1440,7 +1435,7 @@ static int alps_hw_init_v4(struct psmouse *psmouse)
param[0] = 0x64;
if (ps2_command(ps2dev, param, PSMOUSE_CMD_SETRATE) ||
ps2_command(ps2dev, NULL, PSMOUSE_CMD_ENABLE)) {
- psmouse_err(psmouse, "Failed to enable data reporting\n");
+ printk(KERN_ERR "alps.c: Failed to enable data reporting\n");
return -1;
}
--
1.7.7.3

View File

@ -1,592 +0,0 @@
Backport from 3.2 (754214)
Andy Ross (4):
asus-laptop: Platform detection for Pegatron Lucid
asus-laptop: Pegatron Lucid ALS sensor
asus-laptop: allow boot time control of Pegatron ALS sensor
asus-laptop: Pegatron Lucid accelerometer
Anisse Astier (2):
asus-laptop: pega_accel - Report accelerometer orientation change through udev
asus-laptop: Add rfkill support for Pegatron Lucid tablet
Axel Lin (1):
platform-drivers-x86: asus-laptop: fix wrong test for successful registered led_classdev
Corentin Chary (2):
asus-laptop: hide leds on Pegatron Lucid
asus-laptop: fix module description
diff --git a/drivers/platform/x86/asus-laptop.c b/drivers/platform/x86/asus-laptop.c
index fa6d7ec..edaccad 100644
--- a/drivers/platform/x86/asus-laptop.c
+++ b/drivers/platform/x86/asus-laptop.c
@@ -4,6 +4,7 @@
*
* Copyright (C) 2002-2005 Julien Lerouge, 2003-2006 Karol Kozimor
* Copyright (C) 2006-2007 Corentin Chary
+ * Copyright (C) 2011 Wind River Systems
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -48,6 +49,7 @@
#include <linux/uaccess.h>
#include <linux/input.h>
#include <linux/input/sparse-keymap.h>
+#include <linux/input-polldev.h>
#include <linux/rfkill.h>
#include <linux/slab.h>
#include <linux/dmi.h>
@@ -83,26 +85,32 @@ static int wlan_status = 1;
static int bluetooth_status = 1;
static int wimax_status = -1;
static int wwan_status = -1;
+static int als_status;
module_param(wlan_status, int, 0444);
MODULE_PARM_DESC(wlan_status, "Set the wireless status on boot "
"(0 = disabled, 1 = enabled, -1 = don't do anything). "
- "default is 1");
+ "default is -1");
module_param(bluetooth_status, int, 0444);
MODULE_PARM_DESC(bluetooth_status, "Set the wireless status on boot "
"(0 = disabled, 1 = enabled, -1 = don't do anything). "
- "default is 1");
+ "default is -1");
module_param(wimax_status, int, 0444);
MODULE_PARM_DESC(wimax_status, "Set the wireless status on boot "
"(0 = disabled, 1 = enabled, -1 = don't do anything). "
- "default is 1");
+ "default is -1");
module_param(wwan_status, int, 0444);
MODULE_PARM_DESC(wwan_status, "Set the wireless status on boot "
"(0 = disabled, 1 = enabled, -1 = don't do anything). "
- "default is 1");
+ "default is -1");
+
+module_param(als_status, int, 0444);
+MODULE_PARM_DESC(als_status, "Set the ALS status on boot "
+ "(0 = disabled, 1 = enabled). "
+ "default is 0");
/*
* Some events we use, same for all Asus
@@ -173,6 +181,29 @@ MODULE_PARM_DESC(wwan_status, "Set the wireless status on boot "
#define METHOD_KBD_LIGHT_SET "SLKB"
#define METHOD_KBD_LIGHT_GET "GLKB"
+/* For Pegatron Lucid tablet */
+#define DEVICE_NAME_PEGA "Lucid"
+
+#define METHOD_PEGA_ENABLE "ENPR"
+#define METHOD_PEGA_DISABLE "DAPR"
+#define PEGA_WLAN 0x00
+#define PEGA_BLUETOOTH 0x01
+#define PEGA_WWAN 0x02
+#define PEGA_ALS 0x04
+#define PEGA_ALS_POWER 0x05
+
+#define METHOD_PEGA_READ "RDLN"
+#define PEGA_READ_ALS_H 0x02
+#define PEGA_READ_ALS_L 0x03
+
+#define PEGA_ACCEL_NAME "pega_accel"
+#define PEGA_ACCEL_DESC "Pegatron Lucid Tablet Accelerometer"
+#define METHOD_XLRX "XLRX"
+#define METHOD_XLRY "XLRY"
+#define METHOD_XLRZ "XLRZ"
+#define PEGA_ACC_CLAMP 512 /* 1G accel is reported as ~256, so clamp to 2G */
+#define PEGA_ACC_RETRIES 3
+
/*
* Define a specific led structure to keep the main structure clean
*/
@@ -185,6 +216,15 @@ struct asus_led {
};
/*
+ * Same thing for rfkill
+ */
+struct asus_pega_rfkill {
+ int control_id; /* type of control. Maps to PEGA_* values */
+ struct rfkill *rfkill;
+ struct asus_laptop *asus;
+};
+
+/*
* This is the main structure, we can use it to store anything interesting
* about the hotk device
*/
@@ -198,6 +238,7 @@ struct asus_laptop {
struct input_dev *inputdev;
struct key_entry *keymap;
+ struct input_polled_dev *pega_accel_poll;
struct asus_led mled;
struct asus_led tled;
@@ -209,9 +250,18 @@ struct asus_laptop {
int wireless_status;
bool have_rsts;
+ bool is_pega_lucid;
+ bool pega_acc_live;
+ int pega_acc_x;
+ int pega_acc_y;
+ int pega_acc_z;
struct rfkill *gps_rfkill;
+ struct asus_pega_rfkill wlanrfk;
+ struct asus_pega_rfkill btrfk;
+ struct asus_pega_rfkill wwanrfk;
+
acpi_handle handle; /* the handle of the hotk device */
u32 ledd_status; /* status of the LED display */
u8 light_level; /* light sensor level */
@@ -323,6 +373,127 @@ static int acpi_check_handle(acpi_handle handle, const char *method,
return 0;
}
+static bool asus_check_pega_lucid(struct asus_laptop *asus)
+{
+ return !strcmp(asus->name, DEVICE_NAME_PEGA) &&
+ !acpi_check_handle(asus->handle, METHOD_PEGA_ENABLE, NULL) &&
+ !acpi_check_handle(asus->handle, METHOD_PEGA_DISABLE, NULL) &&
+ !acpi_check_handle(asus->handle, METHOD_PEGA_READ, NULL);
+}
+
+static int asus_pega_lucid_set(struct asus_laptop *asus, int unit, bool enable)
+{
+ char *method = enable ? METHOD_PEGA_ENABLE : METHOD_PEGA_DISABLE;
+ return write_acpi_int(asus->handle, method, unit);
+}
+
+static int pega_acc_axis(struct asus_laptop *asus, int curr, char *method)
+{
+ int i, delta;
+ unsigned long long val;
+ for (i = 0; i < PEGA_ACC_RETRIES; i++) {
+ acpi_evaluate_integer(asus->handle, method, NULL, &val);
+
+ /* The output is noisy. From reading the ASL
+ * dissassembly, timeout errors are returned with 1's
+ * in the high word, and the lack of locking around
+ * thei hi/lo byte reads means that a transition
+ * between (for example) -1 and 0 could be read as
+ * 0xff00 or 0x00ff. */
+ delta = abs(curr - (short)val);
+ if (delta < 128 && !(val & ~0xffff))
+ break;
+ }
+ return clamp_val((short)val, -PEGA_ACC_CLAMP, PEGA_ACC_CLAMP);
+}
+
+static void pega_accel_poll(struct input_polled_dev *ipd)
+{
+ struct device *parent = ipd->input->dev.parent;
+ struct asus_laptop *asus = dev_get_drvdata(parent);
+
+ /* In some cases, the very first call to poll causes a
+ * recursive fault under the polldev worker. This is
+ * apparently related to very early userspace access to the
+ * device, and perhaps a firmware bug. Fake the first report. */
+ if (!asus->pega_acc_live) {
+ asus->pega_acc_live = true;
+ input_report_abs(ipd->input, ABS_X, 0);
+ input_report_abs(ipd->input, ABS_Y, 0);
+ input_report_abs(ipd->input, ABS_Z, 0);
+ input_sync(ipd->input);
+ return;
+ }
+
+ asus->pega_acc_x = pega_acc_axis(asus, asus->pega_acc_x, METHOD_XLRX);
+ asus->pega_acc_y = pega_acc_axis(asus, asus->pega_acc_y, METHOD_XLRY);
+ asus->pega_acc_z = pega_acc_axis(asus, asus->pega_acc_z, METHOD_XLRZ);
+
+ /* Note transform, convert to "right/up/out" in the native
+ * landscape orientation (i.e. the vector is the direction of
+ * "real up" in the device's cartiesian coordinates). */
+ input_report_abs(ipd->input, ABS_X, -asus->pega_acc_x);
+ input_report_abs(ipd->input, ABS_Y, -asus->pega_acc_y);
+ input_report_abs(ipd->input, ABS_Z, asus->pega_acc_z);
+ input_sync(ipd->input);
+}
+
+static void pega_accel_exit(struct asus_laptop *asus)
+{
+ if (asus->pega_accel_poll) {
+ input_unregister_polled_device(asus->pega_accel_poll);
+ input_free_polled_device(asus->pega_accel_poll);
+ }
+ asus->pega_accel_poll = NULL;
+}
+
+static int pega_accel_init(struct asus_laptop *asus)
+{
+ int err;
+ struct input_polled_dev *ipd;
+
+ if (!asus->is_pega_lucid)
+ return -ENODEV;
+
+ if (acpi_check_handle(asus->handle, METHOD_XLRX, NULL) ||
+ acpi_check_handle(asus->handle, METHOD_XLRY, NULL) ||
+ acpi_check_handle(asus->handle, METHOD_XLRZ, NULL))
+ return -ENODEV;
+
+ ipd = input_allocate_polled_device();
+ if (!ipd)
+ return -ENOMEM;
+
+ ipd->poll = pega_accel_poll;
+ ipd->poll_interval = 125;
+ ipd->poll_interval_min = 50;
+ ipd->poll_interval_max = 2000;
+
+ ipd->input->name = PEGA_ACCEL_DESC;
+ ipd->input->phys = PEGA_ACCEL_NAME "/input0";
+ ipd->input->dev.parent = &asus->platform_device->dev;
+ ipd->input->id.bustype = BUS_HOST;
+
+ set_bit(EV_ABS, ipd->input->evbit);
+ input_set_abs_params(ipd->input, ABS_X,
+ -PEGA_ACC_CLAMP, PEGA_ACC_CLAMP, 0, 0);
+ input_set_abs_params(ipd->input, ABS_Y,
+ -PEGA_ACC_CLAMP, PEGA_ACC_CLAMP, 0, 0);
+ input_set_abs_params(ipd->input, ABS_Z,
+ -PEGA_ACC_CLAMP, PEGA_ACC_CLAMP, 0, 0);
+
+ err = input_register_polled_device(ipd);
+ if (err)
+ goto exit;
+
+ asus->pega_accel_poll = ipd;
+ return 0;
+
+exit:
+ input_free_polled_device(ipd);
+ return err;
+}
+
/* Generic LED function */
static int asus_led_set(struct asus_laptop *asus, const char *method,
int value)
@@ -430,17 +601,17 @@ static enum led_brightness asus_kled_cdev_get(struct led_classdev *led_cdev)
static void asus_led_exit(struct asus_laptop *asus)
{
- if (asus->mled.led.dev)
+ if (!IS_ERR_OR_NULL(asus->mled.led.dev))
led_classdev_unregister(&asus->mled.led);
- if (asus->tled.led.dev)
+ if (!IS_ERR_OR_NULL(asus->tled.led.dev))
led_classdev_unregister(&asus->tled.led);
- if (asus->pled.led.dev)
+ if (!IS_ERR_OR_NULL(asus->pled.led.dev))
led_classdev_unregister(&asus->pled.led);
- if (asus->rled.led.dev)
+ if (!IS_ERR_OR_NULL(asus->rled.led.dev))
led_classdev_unregister(&asus->rled.led);
- if (asus->gled.led.dev)
+ if (!IS_ERR_OR_NULL(asus->gled.led.dev))
led_classdev_unregister(&asus->gled.led);
- if (asus->kled.led.dev)
+ if (!IS_ERR_OR_NULL(asus->kled.led.dev))
led_classdev_unregister(&asus->kled.led);
if (asus->led_workqueue) {
destroy_workqueue(asus->led_workqueue);
@@ -474,6 +645,13 @@ static int asus_led_init(struct asus_laptop *asus)
int r;
/*
+ * The Pegatron Lucid has no physical leds, but all methods are
+ * available in the DSDT...
+ */
+ if (asus->is_pega_lucid)
+ return 0;
+
+ /*
* Functions that actually update the LED's are called from a
* workqueue. By doing this as separate work rather than when the LED
* subsystem asks, we avoid messing with the Asus ACPI stuff during a
@@ -907,8 +1085,18 @@ static ssize_t store_disp(struct device *dev, struct device_attribute *attr,
*/
static void asus_als_switch(struct asus_laptop *asus, int value)
{
- if (write_acpi_int(asus->handle, METHOD_ALS_CONTROL, value))
- pr_warn("Error setting light sensor switch\n");
+ int ret;
+
+ if (asus->is_pega_lucid) {
+ ret = asus_pega_lucid_set(asus, PEGA_ALS, value);
+ if (!ret)
+ ret = asus_pega_lucid_set(asus, PEGA_ALS_POWER, value);
+ } else {
+ ret = write_acpi_int(asus->handle, METHOD_ALS_CONTROL, value);
+ }
+ if (ret)
+ pr_warning("Error setting light sensor switch\n");
+
asus->light_switch = value;
}
@@ -964,6 +1152,35 @@ static ssize_t store_lslvl(struct device *dev, struct device_attribute *attr,
return rv;
}
+static int pega_int_read(struct asus_laptop *asus, int arg, int *result)
+{
+ struct acpi_buffer buffer = { ACPI_ALLOCATE_BUFFER, NULL };
+ int err = write_acpi_int_ret(asus->handle, METHOD_PEGA_READ, arg,
+ &buffer);
+ if (!err) {
+ union acpi_object *obj = buffer.pointer;
+ if (obj && obj->type == ACPI_TYPE_INTEGER)
+ *result = obj->integer.value;
+ else
+ err = -EIO;
+ }
+ return err;
+}
+
+static ssize_t show_lsvalue(struct device *dev,
+ struct device_attribute *attr, char *buf)
+{
+ struct asus_laptop *asus = dev_get_drvdata(dev);
+ int err, hi, lo;
+
+ err = pega_int_read(asus, PEGA_READ_ALS_H, &hi);
+ if (!err)
+ err = pega_int_read(asus, PEGA_READ_ALS_L, &lo);
+ if (!err)
+ return sprintf(buf, "%d\n", 10 * hi + lo);
+ return err;
+}
+
/*
* GPS
*/
@@ -1062,6 +1279,86 @@ static int asus_rfkill_init(struct asus_laptop *asus)
return result;
}
+static int pega_rfkill_set(void *data, bool blocked)
+{
+ struct asus_pega_rfkill *pega_rfk = data;
+
+ int ret = asus_pega_lucid_set(pega_rfk->asus, pega_rfk->control_id, !blocked);
+ pr_warn("Setting rfkill %d, to %d; returned %d\n", pega_rfk->control_id, !blocked, ret);
+
+ return ret;
+}
+
+static const struct rfkill_ops pega_rfkill_ops = {
+ .set_block = pega_rfkill_set,
+};
+
+static void pega_rfkill_terminate(struct asus_pega_rfkill *pega_rfk)
+{
+ pr_warn("Terminating %d\n", pega_rfk->control_id);
+ if (pega_rfk->rfkill) {
+ rfkill_unregister(pega_rfk->rfkill);
+ rfkill_destroy(pega_rfk->rfkill);
+ pega_rfk->rfkill = NULL;
+ }
+}
+
+static void pega_rfkill_exit(struct asus_laptop *asus)
+{
+ pega_rfkill_terminate(&asus->wwanrfk);
+ pega_rfkill_terminate(&asus->btrfk);
+ pega_rfkill_terminate(&asus->wlanrfk);
+}
+
+static int pega_rfkill_setup(struct asus_laptop *asus, struct asus_pega_rfkill *pega_rfk,
+ const char *name, int controlid, int rfkill_type)
+{
+ int result;
+
+ pr_warn("Setting up rfk %s, control %d, type %d\n", name, controlid, rfkill_type);
+ pega_rfk->control_id = controlid;
+ pega_rfk->asus = asus;
+ pega_rfk->rfkill = rfkill_alloc(name, &asus->platform_device->dev,
+ rfkill_type, &pega_rfkill_ops, pega_rfk);
+ if (!pega_rfk->rfkill)
+ return -EINVAL;
+
+ result = rfkill_register(pega_rfk->rfkill);
+ if (result) {
+ rfkill_destroy(pega_rfk->rfkill);
+ pega_rfk->rfkill = NULL;
+ }
+
+ return result;
+}
+
+static int pega_rfkill_init(struct asus_laptop *asus)
+{
+ int ret = 0;
+
+ if(!asus->is_pega_lucid)
+ return -ENODEV;
+
+ ret = pega_rfkill_setup(asus, &asus->wlanrfk, "pega-wlan", PEGA_WLAN, RFKILL_TYPE_WLAN);
+ if(ret)
+ return ret;
+ ret = pega_rfkill_setup(asus, &asus->btrfk, "pega-bt", PEGA_BLUETOOTH, RFKILL_TYPE_BLUETOOTH);
+ if(ret)
+ goto err_btrfk;
+ ret = pega_rfkill_setup(asus, &asus->wwanrfk, "pega-wwan", PEGA_WWAN, RFKILL_TYPE_WWAN);
+ if(ret)
+ goto err_wwanrfk;
+
+ pr_warn("Pega rfkill init succeeded\n");
+ return 0;
+err_wwanrfk:
+ pega_rfkill_terminate(&asus->btrfk);
+err_btrfk:
+ pega_rfkill_terminate(&asus->wlanrfk);
+
+ return ret;
+}
+
/*
* Input device (i.e. hotkeys)
*/
@@ -1141,6 +1438,14 @@ static void asus_acpi_notify(struct acpi_device *device, u32 event)
}
return ;
}
+
+ /* Accelerometer "coarse orientation change" event */
+ if (asus->pega_accel_poll && event == 0xEA) {
+ kobject_uevent(&asus->pega_accel_poll->input->dev.kobj,
+ KOBJ_CHANGE);
+ return ;
+ }
+
asus_input_notify(asus, event);
}
@@ -1152,6 +1457,7 @@ static DEVICE_ATTR(wimax, S_IRUGO | S_IWUSR, show_wimax, store_wimax);
static DEVICE_ATTR(wwan, S_IRUGO | S_IWUSR, show_wwan, store_wwan);
static DEVICE_ATTR(display, S_IWUSR, NULL, store_disp);
static DEVICE_ATTR(ledd, S_IRUGO | S_IWUSR, show_ledd, store_ledd);
+static DEVICE_ATTR(ls_value, S_IRUGO, show_lsvalue, NULL);
static DEVICE_ATTR(ls_level, S_IRUGO | S_IWUSR, show_lslvl, store_lslvl);
static DEVICE_ATTR(ls_switch, S_IRUGO | S_IWUSR, show_lssw, store_lssw);
static DEVICE_ATTR(gps, S_IRUGO | S_IWUSR, show_gps, store_gps);
@@ -1164,6 +1470,7 @@ static struct attribute *asus_attributes[] = {
&dev_attr_wwan.attr,
&dev_attr_display.attr,
&dev_attr_ledd.attr,
+ &dev_attr_ls_value.attr,
&dev_attr_ls_level.attr,
&dev_attr_ls_switch.attr,
&dev_attr_gps.attr,
@@ -1180,6 +1487,19 @@ static mode_t asus_sysfs_is_visible(struct kobject *kobj,
acpi_handle handle = asus->handle;
bool supported;
+ if (asus->is_pega_lucid) {
+ /* no ls_level interface on the Lucid */
+ if (attr == &dev_attr_ls_switch.attr)
+ supported = true;
+ else if (attr == &dev_attr_ls_level.attr)
+ supported = false;
+ else
+ goto normal;
+
+ return supported;
+ }
+
+normal:
if (attr == &dev_attr_wlan.attr) {
supported = !acpi_check_handle(handle, METHOD_WLAN, NULL);
@@ -1202,8 +1522,9 @@ static mode_t asus_sysfs_is_visible(struct kobject *kobj,
} else if (attr == &dev_attr_ls_switch.attr ||
attr == &dev_attr_ls_level.attr) {
supported = !acpi_check_handle(handle, METHOD_ALS_CONTROL, NULL) &&
- !acpi_check_handle(handle, METHOD_ALS_LEVEL, NULL);
-
+ !acpi_check_handle(handle, METHOD_ALS_LEVEL, NULL);
+ } else if (attr == &dev_attr_ls_value.attr) {
+ supported = asus->is_pega_lucid;
} else if (attr == &dev_attr_gps.attr) {
supported = !acpi_check_handle(handle, METHOD_GPS_ON, NULL) &&
!acpi_check_handle(handle, METHOD_GPS_OFF, NULL) &&
@@ -1258,7 +1579,7 @@ static struct platform_driver platform_driver = {
.driver = {
.name = ASUS_LAPTOP_FILE,
.owner = THIS_MODULE,
- }
+ },
};
/*
@@ -1388,11 +1709,13 @@ static int __devinit asus_acpi_init(struct asus_laptop *asus)
asus->ledd_status = 0xFFF;
/* Set initial values of light sensor and level */
- asus->light_switch = 0; /* Default to light sensor disabled */
+ asus->light_switch = !!als_status;
asus->light_level = 5; /* level 5 for sensor sensitivity */
- if (!acpi_check_handle(asus->handle, METHOD_ALS_CONTROL, NULL) &&
- !acpi_check_handle(asus->handle, METHOD_ALS_LEVEL, NULL)) {
+ if (asus->is_pega_lucid) {
+ asus_als_switch(asus, asus->light_switch);
+ } else if (!acpi_check_handle(asus->handle, METHOD_ALS_CONTROL, NULL) &&
+ !acpi_check_handle(asus->handle, METHOD_ALS_LEVEL, NULL)) {
asus_als_switch(asus, asus->light_switch);
asus_als_level(asus, asus->light_level);
}
@@ -1439,9 +1762,10 @@ static int __devinit asus_acpi_add(struct acpi_device *device)
goto fail_platform;
/*
- * Register the platform device first. It is used as a parent for the
- * sub-devices below.
+ * Need platform type detection first, then the platform
+ * device. It is used as a parent for the sub-devices below.
*/
+ asus->is_pega_lucid = asus_check_pega_lucid(asus);
result = asus_platform_init(asus);
if (result)
goto fail_platform;
@@ -1465,9 +1789,21 @@ static int __devinit asus_acpi_add(struct acpi_device *device)
if (result)
goto fail_rfkill;
+ result = pega_accel_init(asus);
+ if (result && result != -ENODEV)
+ goto fail_pega_accel;
+
+ result = pega_rfkill_init(asus);
+ if (result && result != -ENODEV)
+ goto fail_pega_rfkill;
+
asus_device_present = true;
return 0;
+fail_pega_rfkill:
+ pega_accel_exit(asus);
+fail_pega_accel:
+ asus_rfkill_exit(asus);
fail_rfkill:
asus_led_exit(asus);
fail_led:
@@ -1491,6 +1827,8 @@ static int asus_acpi_remove(struct acpi_device *device, int type)
asus_rfkill_exit(asus);
asus_led_exit(asus);
asus_input_exit(asus);
+ pega_accel_exit(asus);
+ pega_rfkill_exit(asus);
asus_platform_exit(asus);
kfree(asus->name);

View File

@ -1,62 +0,0 @@
From 15ac2b08a2fd0f4aacbe8ae39788252fea6fbe63 Mon Sep 17 00:00:00 2001
From: Xander Hover <LKML@hover.be>
Date: Wed, 23 Nov 2011 16:40:31 -0500
Subject: [PATCH] b44: Use dev_kfree_skb_irq() in b44_tx()
Reported issues when using dev_kfree_skb() on UP systems and
systems with low numbers of cores. dev_kfree_skb_irq() will
properly save IRQ state before freeing the skb.
Tested on 3.1.1 and 3.2_rc2
Example of reproducible trace of kernel 3.1.1
------------[ cut here ]------------
WARNING: at kernel/softirq.c:159 local_bh_enable+0x32/0x79()
...
Pid: 0, comm: swapper Not tainted 3.1.1-gentoo #1
Call Trace:
[<c1022970>] warn_slowpath_common+0x65/0x7a
[<c102699e>] ? local_bh_enable+0x32/0x79
[<c1022994>] warn_slowpath_null+0xf/0x13
[<c102699e>] local_bh_enable+0x32/0x79
[<c134bfd8>] destroy_conntrack+0x7c/0x9b
[<c134890b>] nf_conntrack_destroy+0x1f/0x26
[<c132e3a6>] skb_release_head_state+0x74/0x83
[<c132e286>] __kfree_skb+0xb/0x6b
[<c132e30a>] consume_skb+0x24/0x26
[<c127c925>] b44_poll+0xaa/0x449
[<c1333ca1>] net_rx_action+0x3f/0xea
[<c1026a44>] __do_softirq+0x5f/0xd5
[<c10269e5>] ? local_bh_enable+0x79/0x79
<IRQ> [<c1026c32>] ? irq_exit+0x34/0x8d
[<c1003628>] ? do_IRQ+0x74/0x87
[<c13f5329>] ? common_interrupt+0x29/0x30
[<c1006e18>] ? default_idle+0x29/0x3e
[<c10015a7>] ? cpu_idle+0x2f/0x5d
[<c13e91c5>] ? rest_init+0x79/0x7b
[<c15c66a9>] ? start_kernel+0x297/0x29c
[<c15c60b0>] ? i386_start_kernel+0xb0/0xb7
---[ end trace 583f33bb1aa207a9 ]---
Signed-off-by: Xander Hover <LKML@hover.be>
Signed-off-by: David S. Miller <davem@davemloft.net>
---
drivers/net/ethernet/broadcom/b44.c | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/drivers/net/b44.c b/drivers/net/b44.c
index 4cf835d..3fb66d0 100644
--- a/drivers/net/b44.c
+++ b/drivers/net/b44.c
@@ -608,7 +608,7 @@ static void b44_tx(struct b44 *bp)
skb->len,
DMA_TO_DEVICE);
rp->skb = NULL;
- dev_kfree_skb(skb);
+ dev_kfree_skb_irq(skb);
}
bp->tx_cons = cons;
--
1.7.7.4

View File

@ -1,63 +0,0 @@
From c0e64ef4899df4cedc872871e54e2c069d29e519 Mon Sep 17 00:00:00 2001
From: Sathya Perla <sathya.perla@emulex.com>
Date: Tue, 2 Aug 2011 19:57:43 +0000
Subject: [PATCH] be2net: non-member vlan pkts not received in promiscous mode
While configuring promiscous mode, explicitly set the
VLAN_PROMISCOUS bit to make this happen. When switching off
promiscous mode, re-program the vids.
Signed-off-by: Xavier Selvin <xavier.selvin@emulex.com>
Signed-off-by: Sathya Perla <sathya.perla@emulex.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
---
drivers/net/benet/be_cmds.c | 6 ++++--
drivers/net/benet/be_main.c | 7 +++++++
2 files changed, 11 insertions(+), 2 deletions(-)
diff --git a/drivers/net/benet/be_cmds.c b/drivers/net/benet/be_cmds.c
index 1c25dbd..73fd949 100644
--- a/drivers/net/benet/be_cmds.c
+++ b/drivers/net/benet/be_cmds.c
@@ -1586,9 +1586,11 @@ int be_cmd_promiscuous_config(struct be_adapter *adapter, bool en)
OPCODE_COMMON_NTWK_RX_FILTER, sizeof(*req));
req->if_id = cpu_to_le32(adapter->if_handle);
- req->if_flags_mask = cpu_to_le32(BE_IF_FLAGS_PROMISCUOUS);
+ req->if_flags_mask = cpu_to_le32(BE_IF_FLAGS_PROMISCUOUS
+ | BE_IF_FLAGS_VLAN_PROMISCUOUS);
if (en)
- req->if_flags = cpu_to_le32(BE_IF_FLAGS_PROMISCUOUS);
+ req->if_flags = cpu_to_le32(BE_IF_FLAGS_PROMISCUOUS
+ | BE_IF_FLAGS_VLAN_PROMISCUOUS);
sge->pa_hi = cpu_to_le32(upper_32_bits(promiscous_cmd.dma));
sge->pa_lo = cpu_to_le32(promiscous_cmd.dma & 0xFFFFFFFF);
diff --git a/drivers/net/benet/be_main.c b/drivers/net/benet/be_main.c
index 3b2c5e6..32a5b11 100644
--- a/drivers/net/benet/be_main.c
+++ b/drivers/net/benet/be_main.c
@@ -728,6 +728,10 @@ static int be_vid_config(struct be_adapter *adapter, bool vf, u32 vf_num)
status = be_cmd_vlan_config(adapter, if_handle, vtag, 1, 1, 0);
}
+ /* No need to further configure vids if in promiscuous mode */
+ if (adapter->promiscuous)
+ return 0;
+
if (adapter->vlans_added <= adapter->max_vlans) {
/* Construct VLAN Table to give to HW */
for (i = 0; i < VLAN_N_VID; i++) {
@@ -787,6 +791,9 @@ static void be_set_multicast_list(struct net_device *netdev)
if (adapter->promiscuous) {
adapter->promiscuous = false;
be_cmd_promiscuous_config(adapter, false);
+
+ if (adapter->vlans_added)
+ be_vid_config(adapter, false, 0);
}
/* Enable multicast promisc if num configured exceeds what we support */
--
1.7.6.4

View File

@ -1,39 +0,0 @@
cciss: Add IRQF_SHARED back in for the non-MSI(X) interrupt handler
From: Stephen M. Cameron <scameron@beardog.cce.hp.com>
[ 3.1.x backport ]
IRQF_SHARED is required for older controllers that don't support MSI(X)
and which may end up sharing an interrupt.
Also remove deprecated IRQF_DISABLED.
Signed-off-by: Stephen M. Cameron <scameron@beardog.cce.hp.com>
---
drivers/block/cciss.c | 4 ++--
1 files changed, 2 insertions(+), 2 deletions(-)
RHBZ 754907
diff --git a/drivers/block/cciss.c b/drivers/block/cciss.c
index 8004ac3..6f22ed0 100644
--- a/drivers/block/cciss.c
+++ b/drivers/block/cciss.c
@@ -4880,7 +4880,7 @@ static int cciss_request_irq(ctlr_info_t *h,
{
if (h->msix_vector || h->msi_vector) {
if (!request_irq(h->intr[PERF_MODE_INT], msixhandler,
- IRQF_DISABLED, h->devname, h))
+ 0, h->devname, h))
return 0;
dev_err(&h->pdev->dev, "Unable to get msi irq %d"
" for %s\n", h->intr[h->intr_mode],
@@ -4889,7 +4889,7 @@ static int cciss_request_irq(ctlr_info_t *h,
}
if (!request_irq(h->intr[PERF_MODE_INT], intxhandler,
- IRQF_DISABLED, h->devname, h))
+ IRQF_SHARED, h->devname, h))
return 0;
dev_err(&h->pdev->dev, "Unable to get irq %d for %s\n",
h->intr[h->intr_mode], h->devname);

View File

@ -1,6 +1,6 @@
diff -up compat-wireless-3.2-rc6-3/config.mk.orig compat-wireless-3.2-rc6-3/config.mk
--- compat-wireless-3.2-rc6-3/config.mk.orig 2012-01-03 09:41:57.090827042 -0500
+++ compat-wireless-3.2-rc6-3/config.mk 2012-01-03 09:42:19.259549896 -0500
diff -up compat-wireless-2011-12-18/config.mk.orig compat-wireless-2011-12-18/config.mk
--- compat-wireless-2011-12-18/config.mk.orig 2012-01-05 13:54:21.214595837 -0500
+++ compat-wireless-2011-12-18/config.mk 2012-01-05 13:54:35.668415136 -0500
@@ -14,6 +14,9 @@ else
include $(KLIB_BUILD)/.config
endif
@ -10,8 +10,8 @@ diff -up compat-wireless-3.2-rc6-3/config.mk.orig compat-wireless-3.2-rc6-3/conf
+
ifneq ($(wildcard $(KLIB_BUILD)/Makefile),)
COMPAT_LATEST_VERSION = 1
@@ -353,7 +356,7 @@ ifdef CONFIG_CRC_CCITT
COMPAT_LATEST_VERSION = 3
@@ -395,7 +398,7 @@ ifdef CONFIG_CRC_CCITT
CONFIG_RT2800PCI=m
CONFIG_RT2800PCI_RT33XX=y
CONFIG_RT2800PCI_RT35XX=y
@ -20,7 +20,7 @@ diff -up compat-wireless-3.2-rc6-3/config.mk.orig compat-wireless-3.2-rc6-3/conf
endif #CONFIG_CRC_CCITT
NEED_RT2X00=y
@@ -481,7 +484,7 @@ ifdef CONFIG_CRC_CCITT
@@ -525,7 +528,7 @@ ifdef CONFIG_CRC_CCITT
CONFIG_RT2800USB=m
CONFIG_RT2800USB_RT33XX=y
CONFIG_RT2800USB_RT35XX=y
@ -29,17 +29,15 @@ diff -up compat-wireless-3.2-rc6-3/config.mk.orig compat-wireless-3.2-rc6-3/conf
CONFIG_RT2800USB_UNKNOWN=y
endif #CONFIG_CRC_CCITT
CONFIG_RT2X00_LIB_USB=m
diff -up compat-wireless-3.2-rc6-3/drivers/misc/eeprom/Makefile.orig compat-wireless-3.2-rc6-3/drivers/misc/eeprom/Makefile
--- compat-wireless-3.2-rc6-3/drivers/misc/eeprom/Makefile.orig 2012-01-03 09:41:57.104826867 -0500
+++ compat-wireless-3.2-rc6-3/drivers/misc/eeprom/Makefile 2012-01-03 09:42:03.468747311 -0500
@@ -1,3 +1,3 @@
diff -up compat-wireless-2011-12-18/drivers/misc/eeprom/Makefile.orig compat-wireless-2011-12-18/drivers/misc/eeprom/Makefile
--- compat-wireless-2011-12-18/drivers/misc/eeprom/Makefile.orig 2012-01-05 13:54:21.214595837 -0500
+++ compat-wireless-2011-12-18/drivers/misc/eeprom/Makefile 2012-01-05 13:54:27.274520077 -0500
@@ -1 +1 @@
-obj-$(CONFIG_EEPROM_93CX6) += eeprom_93cx6.o
+#obj-$(CONFIG_EEPROM_93CX6) += eeprom_93cx6.o
obj-$(CONFIG_EEPROM_93XX46) += eeprom_93xx46.o
obj-$(CONFIG_EEPROM_DIGSY_MTC_CFG) += digsy_mtc_eeprom.o
diff -up compat-wireless-3.2-rc6-3/drivers/net/ethernet/atheros/Makefile.orig compat-wireless-3.2-rc6-3/drivers/net/ethernet/atheros/Makefile
--- compat-wireless-3.2-rc6-3/drivers/net/ethernet/atheros/Makefile.orig 2012-01-03 09:41:57.107826831 -0500
+++ compat-wireless-3.2-rc6-3/drivers/net/ethernet/atheros/Makefile 2012-01-03 09:42:03.469747299 -0500
diff -up compat-wireless-2011-12-18/drivers/net/ethernet/atheros/Makefile.orig compat-wireless-2011-12-18/drivers/net/ethernet/atheros/Makefile
--- compat-wireless-2011-12-18/drivers/net/ethernet/atheros/Makefile.orig 2012-01-05 13:54:21.215595824 -0500
+++ compat-wireless-2011-12-18/drivers/net/ethernet/atheros/Makefile 2012-01-05 13:54:27.275520064 -0500
@@ -2,7 +2,7 @@
# Makefile for the Atheros network device drivers.
#
@ -52,9 +50,9 @@ diff -up compat-wireless-3.2-rc6-3/drivers/net/ethernet/atheros/Makefile.orig co
+#obj-$(CONFIG_ATL2) += atlx/
+#obj-$(CONFIG_ATL1E) += atl1e/
+#obj-$(CONFIG_ATL1C) += atl1c/
diff -up compat-wireless-3.2-rc6-3/drivers/net/usb/Makefile.orig compat-wireless-3.2-rc6-3/drivers/net/usb/Makefile
--- compat-wireless-3.2-rc6-3/drivers/net/usb/Makefile.orig 2012-01-03 09:41:57.108826819 -0500
+++ compat-wireless-3.2-rc6-3/drivers/net/usb/Makefile 2012-01-03 09:42:03.469747299 -0500
diff -up compat-wireless-2011-12-18/drivers/net/usb/Makefile.orig compat-wireless-2011-12-18/drivers/net/usb/Makefile
--- compat-wireless-2011-12-18/drivers/net/usb/Makefile.orig 2012-01-05 13:54:21.215595824 -0500
+++ compat-wireless-2011-12-18/drivers/net/usb/Makefile 2012-01-05 13:54:27.275520064 -0500
@@ -2,7 +2,7 @@
# Makefile for USB Network drivers
#
@ -66,9 +64,9 @@ diff -up compat-wireless-3.2-rc6-3/drivers/net/usb/Makefile.orig compat-wireless
+#obj-$(CONFIG_USB_NET_COMPAT_RNDIS_HOST) += rndis_host.o
+#obj-$(CONFIG_USB_COMPAT_USBNET) += usbnet.o
diff -up compat-wireless-3.2-rc6-3/Makefile.orig compat-wireless-3.2-rc6-3/Makefile
--- compat-wireless-3.2-rc6-3/Makefile.orig 2012-01-03 09:41:57.109826807 -0500
+++ compat-wireless-3.2-rc6-3/Makefile 2012-01-03 09:42:03.470747287 -0500
diff -up compat-wireless-2011-12-18/Makefile.orig compat-wireless-2011-12-18/Makefile
--- compat-wireless-2011-12-18/Makefile.orig 2012-01-05 13:54:21.216595811 -0500
+++ compat-wireless-2011-12-18/Makefile 2012-01-05 13:54:27.276520051 -0500
@@ -8,8 +8,8 @@ endif
export KLIB_BUILD ?= $(KLIB)/build
# Sometimes not available in the path

View File

@ -1,6 +1,6 @@
diff -up compat-wireless-3.2-rc6-3/compat/crc8.c.orig compat-wireless-3.2-rc6-3/compat/crc8.c
--- compat-wireless-3.2-rc6-3/compat/crc8.c.orig 2011-12-19 22:45:14.000000000 -0500
+++ compat-wireless-3.2-rc6-3/compat/crc8.c 2012-01-05 14:17:19.613363481 -0500
diff -up compat-wireless-2011-12-18/compat/crc8.c.orig compat-wireless-2011-12-18/compat/crc8.c
--- compat-wireless-2011-12-18/compat/crc8.c.orig 2011-12-18 16:10:35.000000000 -0500
+++ compat-wireless-2011-12-18/compat/crc8.c 2012-01-05 13:40:29.271996550 -0500
@@ -14,6 +14,7 @@
* CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
@ -9,9 +9,9 @@ diff -up compat-wireless-3.2-rc6-3/compat/crc8.c.orig compat-wireless-3.2-rc6-3/
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
#include <linux/module.h>
diff -up compat-wireless-3.2-rc6-3/drivers/bcma/bcma_private.h.orig compat-wireless-3.2-rc6-3/drivers/bcma/bcma_private.h
--- compat-wireless-3.2-rc6-3/drivers/bcma/bcma_private.h.orig 2011-12-19 22:45:13.000000000 -0500
+++ compat-wireless-3.2-rc6-3/drivers/bcma/bcma_private.h 2012-01-05 14:17:19.614363468 -0500
diff -up compat-wireless-2011-12-18/drivers/bcma/bcma_private.h.orig compat-wireless-2011-12-18/drivers/bcma/bcma_private.h
--- compat-wireless-2011-12-18/drivers/bcma/bcma_private.h.orig 2011-12-18 16:10:34.000000000 -0500
+++ compat-wireless-2011-12-18/drivers/bcma/bcma_private.h 2012-01-05 13:40:29.271996550 -0500
@@ -1,6 +1,7 @@
#ifndef LINUX_BCMA_PRIVATE_H_
#define LINUX_BCMA_PRIVATE_H_
@ -20,9 +20,9 @@ diff -up compat-wireless-3.2-rc6-3/drivers/bcma/bcma_private.h.orig compat-wirel
#ifndef pr_fmt
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
#endif
diff -up compat-wireless-3.2-rc6-3/drivers/net/ethernet/broadcom/b44.c.orig compat-wireless-3.2-rc6-3/drivers/net/ethernet/broadcom/b44.c
--- compat-wireless-3.2-rc6-3/drivers/net/ethernet/broadcom/b44.c.orig 2011-12-19 22:45:14.000000000 -0500
+++ compat-wireless-3.2-rc6-3/drivers/net/ethernet/broadcom/b44.c 2012-01-05 14:17:19.615363455 -0500
diff -up compat-wireless-2011-12-18/drivers/net/ethernet/broadcom/b44.c.orig compat-wireless-2011-12-18/drivers/net/ethernet/broadcom/b44.c
--- compat-wireless-2011-12-18/drivers/net/ethernet/broadcom/b44.c.orig 2011-12-18 16:10:35.000000000 -0500
+++ compat-wireless-2011-12-18/drivers/net/ethernet/broadcom/b44.c 2012-01-05 13:40:29.273996525 -0500
@@ -10,6 +10,7 @@
* Distribute under GPL.
*/
@ -31,11 +31,31 @@ diff -up compat-wireless-3.2-rc6-3/drivers/net/ethernet/broadcom/b44.c.orig comp
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
#include <linux/kernel.h>
diff -up compat-wireless-3.2-rc6-3/drivers/net/wireless/brcm80211/brcmsmac/aiutils.c.orig compat-wireless-3.2-rc6-3/drivers/net/wireless/brcm80211/brcmsmac/aiutils.c
diff -up compat-wireless-3.2-rc6-3/drivers/net/wireless/brcm80211/brcmsmac/dma.c.orig compat-wireless-3.2-rc6-3/drivers/net/wireless/brcm80211/brcmsmac/dma.c
diff -up compat-wireless-3.2-rc6-3/drivers/net/wireless/iwlegacy/iwl3945-base.c.orig compat-wireless-3.2-rc6-3/drivers/net/wireless/iwlegacy/iwl3945-base.c
--- compat-wireless-3.2-rc6-3/drivers/net/wireless/iwlegacy/iwl3945-base.c.orig 2012-01-05 14:19:37.561638888 -0500
+++ compat-wireless-3.2-rc6-3/drivers/net/wireless/iwlegacy/iwl3945-base.c 2012-01-05 14:19:45.500539640 -0500
diff -up compat-wireless-2011-12-18/drivers/net/wireless/brcm80211/brcmsmac/aiutils.c.orig compat-wireless-2011-12-18/drivers/net/wireless/brcm80211/brcmsmac/aiutils.c
--- compat-wireless-2011-12-18/drivers/net/wireless/brcm80211/brcmsmac/aiutils.c.orig 2012-01-05 13:44:54.137685272 -0500
+++ compat-wireless-2011-12-18/drivers/net/wireless/brcm80211/brcmsmac/aiutils.c 2012-01-05 13:44:56.589654617 -0500
@@ -16,6 +16,7 @@
* File contents: support functions for PCI/PCIe
*/
+#undef pr_fmt
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
#include <linux/delay.h>
diff -up compat-wireless-2011-12-18/drivers/net/wireless/brcm80211/brcmsmac/dma.c.orig compat-wireless-2011-12-18/drivers/net/wireless/brcm80211/brcmsmac/dma.c
--- compat-wireless-2011-12-18/drivers/net/wireless/brcm80211/brcmsmac/dma.c.orig 2012-01-05 13:44:23.579067307 -0500
+++ compat-wireless-2011-12-18/drivers/net/wireless/brcm80211/brcmsmac/dma.c 2012-01-05 13:44:43.324820451 -0500
@@ -14,6 +14,7 @@
* CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
+#undef pr_fmt
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
#include <linux/slab.h>
diff -up compat-wireless-2011-12-18/drivers/net/wireless/iwlegacy/3945-mac.c.orig compat-wireless-2011-12-18/drivers/net/wireless/iwlegacy/3945-mac.c
--- compat-wireless-2011-12-18/drivers/net/wireless/iwlegacy/3945-mac.c.orig 2012-01-05 13:41:22.852326703 -0500
+++ compat-wireless-2011-12-18/drivers/net/wireless/iwlegacy/3945-mac.c 2012-01-05 13:41:31.209222227 -0500
@@ -27,6 +27,7 @@
*
*****************************************************************************/
@ -44,9 +64,9 @@ diff -up compat-wireless-3.2-rc6-3/drivers/net/wireless/iwlegacy/iwl3945-base.c.
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
#include <linux/kernel.h>
diff -up compat-wireless-3.2-rc6-3/drivers/net/wireless/iwlegacy/iwl4965-base.c.orig compat-wireless-3.2-rc6-3/drivers/net/wireless/iwlegacy/iwl4965-base.c
--- compat-wireless-3.2-rc6-3/drivers/net/wireless/iwlegacy/iwl4965-base.c.orig 2012-01-05 14:19:25.875784981 -0500
+++ compat-wireless-3.2-rc6-3/drivers/net/wireless/iwlegacy/iwl4965-base.c 2012-01-05 14:19:31.017720699 -0500
diff -up compat-wireless-2011-12-18/drivers/net/wireless/iwlegacy/4965-mac.c.orig compat-wireless-2011-12-18/drivers/net/wireless/iwlegacy/4965-mac.c
--- compat-wireless-2011-12-18/drivers/net/wireless/iwlegacy/4965-mac.c.orig 2012-01-05 13:41:47.962012787 -0500
+++ compat-wireless-2011-12-18/drivers/net/wireless/iwlegacy/4965-mac.c 2012-01-05 13:41:41.547092984 -0500
@@ -27,6 +27,7 @@
*
*****************************************************************************/
@ -55,9 +75,9 @@ diff -up compat-wireless-3.2-rc6-3/drivers/net/wireless/iwlegacy/iwl4965-base.c.
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
#include <linux/kernel.h>
diff -up compat-wireless-3.2-rc6-3/drivers/net/wireless/libertas/cfg.c.orig compat-wireless-3.2-rc6-3/drivers/net/wireless/libertas/cfg.c
--- compat-wireless-3.2-rc6-3/drivers/net/wireless/libertas/cfg.c.orig 2011-12-19 22:45:14.000000000 -0500
+++ compat-wireless-3.2-rc6-3/drivers/net/wireless/libertas/cfg.c 2012-01-05 14:17:22.706324811 -0500
diff -up compat-wireless-2011-12-18/drivers/net/wireless/libertas/cfg.c.orig compat-wireless-2011-12-18/drivers/net/wireless/libertas/cfg.c
--- compat-wireless-2011-12-18/drivers/net/wireless/libertas/cfg.c.orig 2011-12-18 16:10:35.000000000 -0500
+++ compat-wireless-2011-12-18/drivers/net/wireless/libertas/cfg.c 2012-01-05 13:40:44.681803897 -0500
@@ -6,6 +6,7 @@
*
*/
@ -66,9 +86,9 @@ diff -up compat-wireless-3.2-rc6-3/drivers/net/wireless/libertas/cfg.c.orig comp
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
#include <linux/hardirq.h>
diff -up compat-wireless-3.2-rc6-3/drivers/net/wireless/libertas/if_cs.c.orig compat-wireless-3.2-rc6-3/drivers/net/wireless/libertas/if_cs.c
--- compat-wireless-3.2-rc6-3/drivers/net/wireless/libertas/if_cs.c.orig 2011-12-19 22:45:14.000000000 -0500
+++ compat-wireless-3.2-rc6-3/drivers/net/wireless/libertas/if_cs.c 2012-01-05 14:17:22.707324799 -0500
diff -up compat-wireless-2011-12-18/drivers/net/wireless/libertas/if_cs.c.orig compat-wireless-2011-12-18/drivers/net/wireless/libertas/if_cs.c
--- compat-wireless-2011-12-18/drivers/net/wireless/libertas/if_cs.c.orig 2011-12-18 16:10:35.000000000 -0500
+++ compat-wireless-2011-12-18/drivers/net/wireless/libertas/if_cs.c 2012-01-05 13:40:44.682803885 -0500
@@ -21,6 +21,7 @@
*/
@ -77,9 +97,9 @@ diff -up compat-wireless-3.2-rc6-3/drivers/net/wireless/libertas/if_cs.c.orig co
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
#include <linux/module.h>
diff -up compat-wireless-3.2-rc6-3/drivers/net/wireless/libertas/if_sdio.c.orig compat-wireless-3.2-rc6-3/drivers/net/wireless/libertas/if_sdio.c
--- compat-wireless-3.2-rc6-3/drivers/net/wireless/libertas/if_sdio.c.orig 2011-12-19 22:45:14.000000000 -0500
+++ compat-wireless-3.2-rc6-3/drivers/net/wireless/libertas/if_sdio.c 2012-01-05 14:17:22.709324775 -0500
diff -up compat-wireless-2011-12-18/drivers/net/wireless/libertas/if_sdio.c.orig compat-wireless-2011-12-18/drivers/net/wireless/libertas/if_sdio.c
--- compat-wireless-2011-12-18/drivers/net/wireless/libertas/if_sdio.c.orig 2011-12-18 16:10:36.000000000 -0500
+++ compat-wireless-2011-12-18/drivers/net/wireless/libertas/if_sdio.c 2012-01-05 13:40:44.683803873 -0500
@@ -26,6 +26,7 @@
* if_sdio_card_to_host() to pad the data.
*/
@ -88,9 +108,9 @@ diff -up compat-wireless-3.2-rc6-3/drivers/net/wireless/libertas/if_sdio.c.orig
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
#include <linux/kernel.h>
diff -up compat-wireless-3.2-rc6-3/drivers/net/wireless/libertas/if_spi.c.orig compat-wireless-3.2-rc6-3/drivers/net/wireless/libertas/if_spi.c
--- compat-wireless-3.2-rc6-3/drivers/net/wireless/libertas/if_spi.c.orig 2011-12-19 22:45:14.000000000 -0500
+++ compat-wireless-3.2-rc6-3/drivers/net/wireless/libertas/if_spi.c 2012-01-05 14:17:22.710324763 -0500
diff -up compat-wireless-2011-12-18/drivers/net/wireless/libertas/if_spi.c.orig compat-wireless-2011-12-18/drivers/net/wireless/libertas/if_spi.c
--- compat-wireless-2011-12-18/drivers/net/wireless/libertas/if_spi.c.orig 2011-12-18 16:10:35.000000000 -0500
+++ compat-wireless-2011-12-18/drivers/net/wireless/libertas/if_spi.c 2012-01-05 13:40:44.685803849 -0500
@@ -17,6 +17,7 @@
* (at your option) any later version.
*/
@ -99,9 +119,9 @@ diff -up compat-wireless-3.2-rc6-3/drivers/net/wireless/libertas/if_spi.c.orig c
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
#include <linux/hardirq.h>
diff -up compat-wireless-3.2-rc6-3/drivers/net/wireless/libertas/if_usb.c.orig compat-wireless-3.2-rc6-3/drivers/net/wireless/libertas/if_usb.c
--- compat-wireless-3.2-rc6-3/drivers/net/wireless/libertas/if_usb.c.orig 2011-12-19 22:45:14.000000000 -0500
+++ compat-wireless-3.2-rc6-3/drivers/net/wireless/libertas/if_usb.c 2012-01-05 14:17:22.711324751 -0500
diff -up compat-wireless-2011-12-18/drivers/net/wireless/libertas/if_usb.c.orig compat-wireless-2011-12-18/drivers/net/wireless/libertas/if_usb.c
--- compat-wireless-2011-12-18/drivers/net/wireless/libertas/if_usb.c.orig 2011-12-18 16:10:35.000000000 -0500
+++ compat-wireless-2011-12-18/drivers/net/wireless/libertas/if_usb.c 2012-01-05 13:40:44.686803837 -0500
@@ -2,6 +2,7 @@
* This file contains functions used in USB interface module.
*/
@ -110,9 +130,9 @@ diff -up compat-wireless-3.2-rc6-3/drivers/net/wireless/libertas/if_usb.c.orig c
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
#include <linux/delay.h>
diff -up compat-wireless-3.2-rc6-3/drivers/net/wireless/libertas/main.c.orig compat-wireless-3.2-rc6-3/drivers/net/wireless/libertas/main.c
--- compat-wireless-3.2-rc6-3/drivers/net/wireless/libertas/main.c.orig 2011-12-19 22:45:14.000000000 -0500
+++ compat-wireless-3.2-rc6-3/drivers/net/wireless/libertas/main.c 2012-01-05 14:17:22.712324738 -0500
diff -up compat-wireless-2011-12-18/drivers/net/wireless/libertas/main.c.orig compat-wireless-2011-12-18/drivers/net/wireless/libertas/main.c
--- compat-wireless-2011-12-18/drivers/net/wireless/libertas/main.c.orig 2011-12-18 16:10:35.000000000 -0500
+++ compat-wireless-2011-12-18/drivers/net/wireless/libertas/main.c 2012-01-05 13:40:44.687803825 -0500
@@ -4,6 +4,7 @@
* thread etc..
*/
@ -121,17 +141,17 @@ diff -up compat-wireless-3.2-rc6-3/drivers/net/wireless/libertas/main.c.orig com
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
#include <linux/module.h>
diff -up compat-wireless-3.2-rc6-3/drivers/net/wireless/libertas/mesh.c.orig compat-wireless-3.2-rc6-3/drivers/net/wireless/libertas/mesh.c
--- compat-wireless-3.2-rc6-3/drivers/net/wireless/libertas/mesh.c.orig 2011-12-19 22:45:14.000000000 -0500
+++ compat-wireless-3.2-rc6-3/drivers/net/wireless/libertas/mesh.c 2012-01-05 14:17:22.713324725 -0500
diff -up compat-wireless-2011-12-18/drivers/net/wireless/libertas/mesh.c.orig compat-wireless-2011-12-18/drivers/net/wireless/libertas/mesh.c
--- compat-wireless-2011-12-18/drivers/net/wireless/libertas/mesh.c.orig 2011-12-18 16:10:35.000000000 -0500
+++ compat-wireless-2011-12-18/drivers/net/wireless/libertas/mesh.c 2012-01-05 13:40:44.688803813 -0500
@@ -1,3 +1,4 @@
+#undef pr_fmt
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
#include <linux/delay.h>
diff -up compat-wireless-3.2-rc6-3/drivers/net/wireless/libertas/rx.c.orig compat-wireless-3.2-rc6-3/drivers/net/wireless/libertas/rx.c
--- compat-wireless-3.2-rc6-3/drivers/net/wireless/libertas/rx.c.orig 2011-12-19 22:45:14.000000000 -0500
+++ compat-wireless-3.2-rc6-3/drivers/net/wireless/libertas/rx.c 2012-01-05 14:17:22.714324712 -0500
diff -up compat-wireless-2011-12-18/drivers/net/wireless/libertas/rx.c.orig compat-wireless-2011-12-18/drivers/net/wireless/libertas/rx.c
--- compat-wireless-2011-12-18/drivers/net/wireless/libertas/rx.c.orig 2011-12-18 16:10:35.000000000 -0500
+++ compat-wireless-2011-12-18/drivers/net/wireless/libertas/rx.c 2012-01-05 13:40:44.689803801 -0500
@@ -2,6 +2,7 @@
* This file contains the handling of RX in wlan driver.
*/
@ -140,9 +160,9 @@ diff -up compat-wireless-3.2-rc6-3/drivers/net/wireless/libertas/rx.c.orig compa
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
#include <linux/etherdevice.h>
diff -up compat-wireless-3.2-rc6-3/drivers/net/wireless/libertas_tf/cmd.c.orig compat-wireless-3.2-rc6-3/drivers/net/wireless/libertas_tf/cmd.c
--- compat-wireless-3.2-rc6-3/drivers/net/wireless/libertas_tf/cmd.c.orig 2011-12-19 22:45:14.000000000 -0500
+++ compat-wireless-3.2-rc6-3/drivers/net/wireless/libertas_tf/cmd.c 2012-01-05 14:17:22.715324699 -0500
diff -up compat-wireless-2011-12-18/drivers/net/wireless/libertas_tf/cmd.c.orig compat-wireless-2011-12-18/drivers/net/wireless/libertas_tf/cmd.c
--- compat-wireless-2011-12-18/drivers/net/wireless/libertas_tf/cmd.c.orig 2011-12-18 16:10:35.000000000 -0500
+++ compat-wireless-2011-12-18/drivers/net/wireless/libertas_tf/cmd.c 2012-01-05 13:40:44.690803789 -0500
@@ -7,6 +7,7 @@
* the Free Software Foundation; either version 2 of the License, or (at
* your option) any later version.
@ -151,9 +171,9 @@ diff -up compat-wireless-3.2-rc6-3/drivers/net/wireless/libertas_tf/cmd.c.orig c
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
#include <linux/hardirq.h>
diff -up compat-wireless-3.2-rc6-3/drivers/net/wireless/libertas_tf/if_usb.c.orig compat-wireless-3.2-rc6-3/drivers/net/wireless/libertas_tf/if_usb.c
--- compat-wireless-3.2-rc6-3/drivers/net/wireless/libertas_tf/if_usb.c.orig 2011-12-19 22:45:14.000000000 -0500
+++ compat-wireless-3.2-rc6-3/drivers/net/wireless/libertas_tf/if_usb.c 2012-01-05 14:17:22.716324687 -0500
diff -up compat-wireless-2011-12-18/drivers/net/wireless/libertas_tf/if_usb.c.orig compat-wireless-2011-12-18/drivers/net/wireless/libertas_tf/if_usb.c
--- compat-wireless-2011-12-18/drivers/net/wireless/libertas_tf/if_usb.c.orig 2011-12-18 16:10:35.000000000 -0500
+++ compat-wireless-2011-12-18/drivers/net/wireless/libertas_tf/if_usb.c 2012-01-05 13:40:44.691803776 -0500
@@ -9,6 +9,7 @@
*/
#define DRV_NAME "lbtf_usb"
@ -162,9 +182,9 @@ diff -up compat-wireless-3.2-rc6-3/drivers/net/wireless/libertas_tf/if_usb.c.ori
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
#include "libertas_tf.h"
diff -up compat-wireless-3.2-rc6-3/drivers/net/wireless/libertas_tf/main.c.orig compat-wireless-3.2-rc6-3/drivers/net/wireless/libertas_tf/main.c
--- compat-wireless-3.2-rc6-3/drivers/net/wireless/libertas_tf/main.c.orig 2011-12-19 22:45:14.000000000 -0500
+++ compat-wireless-3.2-rc6-3/drivers/net/wireless/libertas_tf/main.c 2012-01-05 14:17:22.717324675 -0500
diff -up compat-wireless-2011-12-18/drivers/net/wireless/libertas_tf/main.c.orig compat-wireless-2011-12-18/drivers/net/wireless/libertas_tf/main.c
--- compat-wireless-2011-12-18/drivers/net/wireless/libertas_tf/main.c.orig 2011-12-18 16:10:35.000000000 -0500
+++ compat-wireless-2011-12-18/drivers/net/wireless/libertas_tf/main.c 2012-01-05 13:40:44.692803763 -0500
@@ -7,6 +7,7 @@
* the Free Software Foundation; either version 2 of the License, or (at
* your option) any later version.
@ -173,9 +193,9 @@ diff -up compat-wireless-3.2-rc6-3/drivers/net/wireless/libertas_tf/main.c.orig
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
#include <linux/hardirq.h>
diff -up compat-wireless-3.2-rc6-3/drivers/net/wireless/rtlwifi/base.c.orig compat-wireless-3.2-rc6-3/drivers/net/wireless/rtlwifi/base.c
--- compat-wireless-3.2-rc6-3/drivers/net/wireless/rtlwifi/base.c.orig 2011-12-19 22:45:14.000000000 -0500
+++ compat-wireless-3.2-rc6-3/drivers/net/wireless/rtlwifi/base.c 2012-01-05 14:17:22.719324651 -0500
diff -up compat-wireless-2011-12-18/drivers/net/wireless/rtlwifi/base.c.orig compat-wireless-2011-12-18/drivers/net/wireless/rtlwifi/base.c
--- compat-wireless-2011-12-18/drivers/net/wireless/rtlwifi/base.c.orig 2011-12-18 16:10:35.000000000 -0500
+++ compat-wireless-2011-12-18/drivers/net/wireless/rtlwifi/base.c 2012-01-05 13:40:44.693803750 -0500
@@ -27,6 +27,7 @@
*
*****************************************************************************/
@ -184,9 +204,9 @@ diff -up compat-wireless-3.2-rc6-3/drivers/net/wireless/rtlwifi/base.c.orig comp
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
#include <linux/ip.h>
diff -up compat-wireless-3.2-rc6-3/drivers/net/wireless/rtlwifi/cam.c.orig compat-wireless-3.2-rc6-3/drivers/net/wireless/rtlwifi/cam.c
--- compat-wireless-3.2-rc6-3/drivers/net/wireless/rtlwifi/cam.c.orig 2011-12-19 22:45:14.000000000 -0500
+++ compat-wireless-3.2-rc6-3/drivers/net/wireless/rtlwifi/cam.c 2012-01-05 14:17:22.719324651 -0500
diff -up compat-wireless-2011-12-18/drivers/net/wireless/rtlwifi/cam.c.orig compat-wireless-2011-12-18/drivers/net/wireless/rtlwifi/cam.c
--- compat-wireless-2011-12-18/drivers/net/wireless/rtlwifi/cam.c.orig 2011-12-18 16:10:35.000000000 -0500
+++ compat-wireless-2011-12-18/drivers/net/wireless/rtlwifi/cam.c 2012-01-05 13:40:44.694803737 -0500
@@ -27,6 +27,7 @@
*
*****************************************************************************/
@ -195,9 +215,9 @@ diff -up compat-wireless-3.2-rc6-3/drivers/net/wireless/rtlwifi/cam.c.orig compa
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
#include <linux/export.h>
diff -up compat-wireless-3.2-rc6-3/drivers/net/wireless/rtlwifi/rtl8192c/fw_common.c.orig compat-wireless-3.2-rc6-3/drivers/net/wireless/rtlwifi/rtl8192c/fw_common.c
--- compat-wireless-3.2-rc6-3/drivers/net/wireless/rtlwifi/rtl8192c/fw_common.c.orig 2011-12-19 22:45:14.000000000 -0500
+++ compat-wireless-3.2-rc6-3/drivers/net/wireless/rtlwifi/rtl8192c/fw_common.c 2012-01-05 14:17:22.720324638 -0500
diff -up compat-wireless-2011-12-18/drivers/net/wireless/rtlwifi/rtl8192c/fw_common.c.orig compat-wireless-2011-12-18/drivers/net/wireless/rtlwifi/rtl8192c/fw_common.c
--- compat-wireless-2011-12-18/drivers/net/wireless/rtlwifi/rtl8192c/fw_common.c.orig 2011-12-18 16:10:35.000000000 -0500
+++ compat-wireless-2011-12-18/drivers/net/wireless/rtlwifi/rtl8192c/fw_common.c 2012-01-05 13:40:44.694803737 -0500
@@ -27,6 +27,7 @@
*
*****************************************************************************/
@ -206,9 +226,9 @@ diff -up compat-wireless-3.2-rc6-3/drivers/net/wireless/rtlwifi/rtl8192c/fw_comm
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
#include <linux/firmware.h>
diff -up compat-wireless-3.2-rc6-3/drivers/net/wireless/rtlwifi/rtl8192cu/hw.c.orig compat-wireless-3.2-rc6-3/drivers/net/wireless/rtlwifi/rtl8192cu/hw.c
--- compat-wireless-3.2-rc6-3/drivers/net/wireless/rtlwifi/rtl8192cu/hw.c.orig 2011-12-19 22:45:14.000000000 -0500
+++ compat-wireless-3.2-rc6-3/drivers/net/wireless/rtlwifi/rtl8192cu/hw.c 2012-01-05 14:17:22.722324612 -0500
diff -up compat-wireless-2011-12-18/drivers/net/wireless/rtlwifi/rtl8192cu/hw.c.orig compat-wireless-2011-12-18/drivers/net/wireless/rtlwifi/rtl8192cu/hw.c
--- compat-wireless-2011-12-18/drivers/net/wireless/rtlwifi/rtl8192cu/hw.c.orig 2011-12-18 16:10:35.000000000 -0500
+++ compat-wireless-2011-12-18/drivers/net/wireless/rtlwifi/rtl8192cu/hw.c 2012-01-05 13:40:44.695803725 -0500
@@ -27,6 +27,7 @@
*
*****************************************************************************/
@ -217,9 +237,9 @@ diff -up compat-wireless-3.2-rc6-3/drivers/net/wireless/rtlwifi/rtl8192cu/hw.c.o
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
#include "../wifi.h"
diff -up compat-wireless-3.2-rc6-3/drivers/net/wireless/rtlwifi/rtl8192cu/mac.c.orig compat-wireless-3.2-rc6-3/drivers/net/wireless/rtlwifi/rtl8192cu/mac.c
--- compat-wireless-3.2-rc6-3/drivers/net/wireless/rtlwifi/rtl8192cu/mac.c.orig 2011-12-19 22:45:14.000000000 -0500
+++ compat-wireless-3.2-rc6-3/drivers/net/wireless/rtlwifi/rtl8192cu/mac.c 2012-01-05 14:17:22.724324587 -0500
diff -up compat-wireless-2011-12-18/drivers/net/wireless/rtlwifi/rtl8192cu/mac.c.orig compat-wireless-2011-12-18/drivers/net/wireless/rtlwifi/rtl8192cu/mac.c
--- compat-wireless-2011-12-18/drivers/net/wireless/rtlwifi/rtl8192cu/mac.c.orig 2011-12-18 16:10:35.000000000 -0500
+++ compat-wireless-2011-12-18/drivers/net/wireless/rtlwifi/rtl8192cu/mac.c 2012-01-05 13:40:44.695803725 -0500
@@ -27,6 +27,7 @@
*
****************************************************************************/
@ -228,9 +248,9 @@ diff -up compat-wireless-3.2-rc6-3/drivers/net/wireless/rtlwifi/rtl8192cu/mac.c.
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
#include <linux/module.h>
diff -up compat-wireless-3.2-rc6-3/drivers/net/wireless/rtlwifi/rtl8192de/sw.c.orig compat-wireless-3.2-rc6-3/drivers/net/wireless/rtlwifi/rtl8192de/sw.c
--- compat-wireless-3.2-rc6-3/drivers/net/wireless/rtlwifi/rtl8192de/sw.c.orig 2011-12-19 22:45:14.000000000 -0500
+++ compat-wireless-3.2-rc6-3/drivers/net/wireless/rtlwifi/rtl8192de/sw.c 2012-01-05 14:17:22.724324587 -0500
diff -up compat-wireless-2011-12-18/drivers/net/wireless/rtlwifi/rtl8192de/sw.c.orig compat-wireless-2011-12-18/drivers/net/wireless/rtlwifi/rtl8192de/sw.c
--- compat-wireless-2011-12-18/drivers/net/wireless/rtlwifi/rtl8192de/sw.c.orig 2011-12-18 16:10:35.000000000 -0500
+++ compat-wireless-2011-12-18/drivers/net/wireless/rtlwifi/rtl8192de/sw.c 2012-01-05 13:40:44.695803725 -0500
@@ -27,6 +27,7 @@
*
*****************************************************************************/
@ -239,9 +259,9 @@ diff -up compat-wireless-3.2-rc6-3/drivers/net/wireless/rtlwifi/rtl8192de/sw.c.o
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
#include <linux/vmalloc.h>
diff -up compat-wireless-3.2-rc6-3/drivers/net/wireless/rtlwifi/rtl8192se/hw.c.orig compat-wireless-3.2-rc6-3/drivers/net/wireless/rtlwifi/rtl8192se/hw.c
--- compat-wireless-3.2-rc6-3/drivers/net/wireless/rtlwifi/rtl8192se/hw.c.orig 2011-12-19 22:45:14.000000000 -0500
+++ compat-wireless-3.2-rc6-3/drivers/net/wireless/rtlwifi/rtl8192se/hw.c 2012-01-05 14:17:22.725324575 -0500
diff -up compat-wireless-2011-12-18/drivers/net/wireless/rtlwifi/rtl8192se/hw.c.orig compat-wireless-2011-12-18/drivers/net/wireless/rtlwifi/rtl8192se/hw.c
--- compat-wireless-2011-12-18/drivers/net/wireless/rtlwifi/rtl8192se/hw.c.orig 2011-12-18 16:10:35.000000000 -0500
+++ compat-wireless-2011-12-18/drivers/net/wireless/rtlwifi/rtl8192se/hw.c 2012-01-05 13:40:44.696803713 -0500
@@ -27,6 +27,7 @@
*
*****************************************************************************/
@ -250,9 +270,9 @@ diff -up compat-wireless-3.2-rc6-3/drivers/net/wireless/rtlwifi/rtl8192se/hw.c.o
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
#include "../wifi.h"
diff -up compat-wireless-3.2-rc6-3/drivers/net/wireless/rtlwifi/rtl8192se/phy.c.orig compat-wireless-3.2-rc6-3/drivers/net/wireless/rtlwifi/rtl8192se/phy.c
--- compat-wireless-3.2-rc6-3/drivers/net/wireless/rtlwifi/rtl8192se/phy.c.orig 2011-12-19 22:45:14.000000000 -0500
+++ compat-wireless-3.2-rc6-3/drivers/net/wireless/rtlwifi/rtl8192se/phy.c 2012-01-05 14:17:22.726324563 -0500
diff -up compat-wireless-2011-12-18/drivers/net/wireless/rtlwifi/rtl8192se/phy.c.orig compat-wireless-2011-12-18/drivers/net/wireless/rtlwifi/rtl8192se/phy.c
--- compat-wireless-2011-12-18/drivers/net/wireless/rtlwifi/rtl8192se/phy.c.orig 2011-12-18 16:10:35.000000000 -0500
+++ compat-wireless-2011-12-18/drivers/net/wireless/rtlwifi/rtl8192se/phy.c 2012-01-05 13:40:44.696803713 -0500
@@ -27,6 +27,7 @@
*
*****************************************************************************/
@ -261,9 +281,9 @@ diff -up compat-wireless-3.2-rc6-3/drivers/net/wireless/rtlwifi/rtl8192se/phy.c.
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
#include "../wifi.h"
diff -up compat-wireless-3.2-rc6-3/drivers/net/wireless/rtlwifi/rtl8192se/rf.c.orig compat-wireless-3.2-rc6-3/drivers/net/wireless/rtlwifi/rtl8192se/rf.c
--- compat-wireless-3.2-rc6-3/drivers/net/wireless/rtlwifi/rtl8192se/rf.c.orig 2011-12-19 22:45:14.000000000 -0500
+++ compat-wireless-3.2-rc6-3/drivers/net/wireless/rtlwifi/rtl8192se/rf.c 2012-01-05 14:17:22.726324563 -0500
diff -up compat-wireless-2011-12-18/drivers/net/wireless/rtlwifi/rtl8192se/rf.c.orig compat-wireless-2011-12-18/drivers/net/wireless/rtlwifi/rtl8192se/rf.c
--- compat-wireless-2011-12-18/drivers/net/wireless/rtlwifi/rtl8192se/rf.c.orig 2011-12-18 16:10:35.000000000 -0500
+++ compat-wireless-2011-12-18/drivers/net/wireless/rtlwifi/rtl8192se/rf.c 2012-01-05 13:40:44.697803701 -0500
@@ -27,6 +27,7 @@
*
*****************************************************************************/
@ -272,9 +292,9 @@ diff -up compat-wireless-3.2-rc6-3/drivers/net/wireless/rtlwifi/rtl8192se/rf.c.o
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
#include "../wifi.h"
diff -up compat-wireless-3.2-rc6-3/drivers/net/wireless/rtlwifi/rtl8192se/sw.c.orig compat-wireless-3.2-rc6-3/drivers/net/wireless/rtlwifi/rtl8192se/sw.c
--- compat-wireless-3.2-rc6-3/drivers/net/wireless/rtlwifi/rtl8192se/sw.c.orig 2011-12-19 22:45:14.000000000 -0500
+++ compat-wireless-3.2-rc6-3/drivers/net/wireless/rtlwifi/rtl8192se/sw.c 2012-01-05 14:17:22.726324563 -0500
diff -up compat-wireless-2011-12-18/drivers/net/wireless/rtlwifi/rtl8192se/sw.c.orig compat-wireless-2011-12-18/drivers/net/wireless/rtlwifi/rtl8192se/sw.c
--- compat-wireless-2011-12-18/drivers/net/wireless/rtlwifi/rtl8192se/sw.c.orig 2011-12-18 16:10:35.000000000 -0500
+++ compat-wireless-2011-12-18/drivers/net/wireless/rtlwifi/rtl8192se/sw.c 2012-01-05 13:40:44.697803701 -0500
@@ -27,6 +27,7 @@
*
*****************************************************************************/
@ -283,9 +303,9 @@ diff -up compat-wireless-3.2-rc6-3/drivers/net/wireless/rtlwifi/rtl8192se/sw.c.o
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
#include <linux/vmalloc.h>
diff -up compat-wireless-3.2-rc6-3/drivers/net/wireless/rtlwifi/usb.c.orig compat-wireless-3.2-rc6-3/drivers/net/wireless/rtlwifi/usb.c
--- compat-wireless-3.2-rc6-3/drivers/net/wireless/rtlwifi/usb.c.orig 2011-12-19 22:45:14.000000000 -0500
+++ compat-wireless-3.2-rc6-3/drivers/net/wireless/rtlwifi/usb.c 2012-01-05 14:17:22.727324551 -0500
diff -up compat-wireless-2011-12-18/drivers/net/wireless/rtlwifi/usb.c.orig compat-wireless-2011-12-18/drivers/net/wireless/rtlwifi/usb.c
--- compat-wireless-2011-12-18/drivers/net/wireless/rtlwifi/usb.c.orig 2011-12-18 16:10:35.000000000 -0500
+++ compat-wireless-2011-12-18/drivers/net/wireless/rtlwifi/usb.c 2012-01-05 13:40:44.697803701 -0500
@@ -25,6 +25,7 @@
*
*****************************************************************************/
@ -294,9 +314,9 @@ diff -up compat-wireless-3.2-rc6-3/drivers/net/wireless/rtlwifi/usb.c.orig compa
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
#include <linux/usb.h>
diff -up compat-wireless-3.2-rc6-3/net/wireless/core.c.orig compat-wireless-3.2-rc6-3/net/wireless/core.c
--- compat-wireless-3.2-rc6-3/net/wireless/core.c.orig 2011-12-19 22:45:14.000000000 -0500
+++ compat-wireless-3.2-rc6-3/net/wireless/core.c 2012-01-05 14:17:22.727324551 -0500
diff -up compat-wireless-2011-12-18/net/wireless/core.c.orig compat-wireless-2011-12-18/net/wireless/core.c
--- compat-wireless-2011-12-18/net/wireless/core.c.orig 2011-12-18 16:10:35.000000000 -0500
+++ compat-wireless-2011-12-18/net/wireless/core.c 2012-01-05 13:40:44.698803689 -0500
@@ -4,6 +4,7 @@
* Copyright 2006-2010 Johannes Berg <johannes@sipsolutions.net>
*/
@ -305,9 +325,9 @@ diff -up compat-wireless-3.2-rc6-3/net/wireless/core.c.orig compat-wireless-3.2-
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
#include <linux/if.h>
diff -up compat-wireless-3.2-rc6-3/net/wireless/lib80211.c.orig compat-wireless-3.2-rc6-3/net/wireless/lib80211.c
--- compat-wireless-3.2-rc6-3/net/wireless/lib80211.c.orig 2011-12-19 22:45:13.000000000 -0500
+++ compat-wireless-3.2-rc6-3/net/wireless/lib80211.c 2012-01-05 14:17:22.727324551 -0500
diff -up compat-wireless-2011-12-18/net/wireless/lib80211.c.orig compat-wireless-2011-12-18/net/wireless/lib80211.c
--- compat-wireless-2011-12-18/net/wireless/lib80211.c.orig 2011-12-18 16:10:34.000000000 -0500
+++ compat-wireless-2011-12-18/net/wireless/lib80211.c 2012-01-05 13:40:44.698803689 -0500
@@ -13,6 +13,7 @@
*
*/
@ -316,9 +336,9 @@ diff -up compat-wireless-3.2-rc6-3/net/wireless/lib80211.c.orig compat-wireless-
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
#include <linux/module.h>
diff -up compat-wireless-3.2-rc6-3/net/wireless/lib80211_crypt_tkip.c.orig compat-wireless-3.2-rc6-3/net/wireless/lib80211_crypt_tkip.c
--- compat-wireless-3.2-rc6-3/net/wireless/lib80211_crypt_tkip.c.orig 2011-12-19 22:45:13.000000000 -0500
+++ compat-wireless-3.2-rc6-3/net/wireless/lib80211_crypt_tkip.c 2012-01-05 14:17:22.727324551 -0500
diff -up compat-wireless-2011-12-18/net/wireless/lib80211_crypt_tkip.c.orig compat-wireless-2011-12-18/net/wireless/lib80211_crypt_tkip.c
--- compat-wireless-2011-12-18/net/wireless/lib80211_crypt_tkip.c.orig 2011-12-18 16:10:34.000000000 -0500
+++ compat-wireless-2011-12-18/net/wireless/lib80211_crypt_tkip.c 2012-01-05 13:40:44.698803689 -0500
@@ -10,6 +10,7 @@
* more details.
*/
@ -327,9 +347,9 @@ diff -up compat-wireless-3.2-rc6-3/net/wireless/lib80211_crypt_tkip.c.orig compa
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
#include <linux/err.h>
diff -up compat-wireless-3.2-rc6-3/net/wireless/reg.c.orig compat-wireless-3.2-rc6-3/net/wireless/reg.c
--- compat-wireless-3.2-rc6-3/net/wireless/reg.c.orig 2011-12-19 22:45:13.000000000 -0500
+++ compat-wireless-3.2-rc6-3/net/wireless/reg.c 2012-01-05 14:17:22.728324538 -0500
diff -up compat-wireless-2011-12-18/net/wireless/reg.c.orig compat-wireless-2011-12-18/net/wireless/reg.c
--- compat-wireless-2011-12-18/net/wireless/reg.c.orig 2011-12-18 16:10:34.000000000 -0500
+++ compat-wireless-2011-12-18/net/wireless/reg.c 2012-01-05 13:40:44.699803676 -0500
@@ -33,6 +33,7 @@
*
*/
@ -338,9 +358,9 @@ diff -up compat-wireless-3.2-rc6-3/net/wireless/reg.c.orig compat-wireless-3.2-r
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
#include <linux/kernel.h>
diff -up compat-wireless-3.2-rc6-3/patches/98-pr_fmt.patch.orig compat-wireless-3.2-rc6-3/patches/98-pr_fmt.patch
--- compat-wireless-3.2-rc6-3/patches/98-pr_fmt.patch.orig 2012-01-05 14:17:22.728324538 -0500
+++ compat-wireless-3.2-rc6-3/patches/98-pr_fmt.patch 2012-01-05 14:17:22.728324538 -0500
diff -up compat-wireless-2011-12-18/patches/98-pr_fmt.patch.orig compat-wireless-2011-12-18/patches/98-pr_fmt.patch
--- compat-wireless-2011-12-18/patches/98-pr_fmt.patch.orig 2012-01-05 13:39:36.552655633 -0500
+++ compat-wireless-2011-12-18/patches/98-pr_fmt.patch 2012-01-05 13:39:36.553655620 -0500
@@ -0,0 +1,346 @@
+The way the compat-* header files are included causes the default
+pr_fmt definition from <linux/kernel.h> to be evaluated for every file.

View File

@ -1,45 +1,13 @@
A recent LKML thread (http://lkml.indiana.edu/hypermail/linux/kernel/1112.3/00965.html)
discusses warnings that occur during a suspend/resume cycle. The driver
attempts to read the firmware file before userspace is ready, leading to the
following warning:
WARNING: at drivers/base/firmware_class.c:537 _request_firmware+0x3f6/0x420()
For rtl8192cu, the problem is fixed by storing the firmware in a global buffer
rather than one allocated per device. The usage count is increased when
suspending and decreased when resuming. This way, the firmware is retained
through a suspend/resume cycle, and does not have to be reread.
This patch should fix the bug reported in
https://bugzilla.redhat.com/show_bug.cgi?id=771002.
Note: This patch also touches rtl8192ce as the "firmware" loaded message
is now printed in the wrong place.
Note: This patch also touches rtl8192ce as the "firmware" loaded message
is now printed in the wrong place.
Reported-by: Mohammed Arafa <bugzilla@xxxxxxxxxxxx>
Reported-by: Dave Jones <davej@xxxxxxxxxx>
Signed-off-by: Larry Finger <Larry.Finger@xxxxxxxxxxxx>
Cc: Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx>
Cc: Stable <stable@xxxxxxxxxxxxxxx>
---
drivers/net/wireless/rtlwifi/rtl8192c/fw_common.c | 1 -
drivers/net/wireless/rtlwifi/rtl8192ce/sw.c | 1 +
drivers/net/wireless/rtlwifi/rtl8192cu/sw.c | 58 +++++++++++++++++----
3 files changed, 49 insertions(+), 11 deletions(-)
--- linux-2.6/drivers/net/wireless/rtlwifi/rtl8192c/fw_common.c 2012-01-13 13:07:58.830625006 -0500
+++ linux-2.6/drivers/net/wireless/rtlwifi/rtl8192c/fw_common.c 2012-01-13 13:08:06.825439927 -0500
@@ -227,7 +227,6 @@ int rtl92c_download_fw(struct ieee80211_
u32 fwsize;
enum version_8192c version = rtlhal->version;
- pr_info("Loading firmware file %s\n", rtlpriv->cfg->fw_name);
--- linux-2.6/drivers/net/wireless/rtlwifi/rtl8192c/fw_common.c
+++ linux-2.6/drivers/net/wireless/rtlwifi/rtl8192c/fw_common.c
@@ -265,7 +265,6 @@ int rtl92c_download_fw(struct ieee80211_
if (!rtlhal->pfirmware)
return 1;
- pr_info("Loading firmware file %s\n", rtlpriv->cfg->fw_name);
pfwheader = (struct rtl92c_firmware_header *)rtlhal->pfirmware;
pfwdata = (u8 *) rtlhal->pfirmware;
fwsize = rtlhal->fwsize;
--- linux-2.6/drivers/net/wireless/rtlwifi/rtl8192ce/sw.c
+++ linux-2.6/drivers/net/wireless/rtlwifi/rtl8192ce/sw.c
@@ -186,6 +186,7 @@ int rtl92c_init_sw_vars(struct ieee80211

View File

@ -142,8 +142,6 @@ CONFIG_SPARSE_IRQ=y
# CONFIG_ARM_PATCH_PHYS_VIRT is not set
CONFIG_FTMAC100=m
CONFIG_HWSPINLOCK_OMAP=m
CONFIG_USE_OF=y
@ -154,7 +152,17 @@ CONFIG_MMC_SDHCI_OF=m
CONFIG_MMC_SDHCI_PXAV3=m
CONFIG_MMC_SDHCI_PXAV2=m
CONFIG_FTGMAC100=m
CONFIG_ARM_APPENDED_DTB=y
CONFIG_MTD_OF_PARTS=y
CONFIG_PL330_DMA=y
# CONFIG_ARM_KPROBES_TEST is not set
# CONFIG_ARM_ATAG_DTB_COMPAT is not set
# CONFIG_FTGMAC100 is not set
# CONFIG_FTMAC100 is not set
#
CONFIG_DEFAULT_MMAP_MIN_ADDR=32768
CONFIG_LSM_MMAP_MIN_ADDR=32768
# disable TPM on arm at least on the trimslices it causes havoc
# CONFIG_TCG_TPM is not set
@ -171,3 +179,18 @@ CONFIG_FTGMAC100=m
# CONFIG_DRM_RADEON is not set
# CONFIG_ATM_HE is not set
# CONFIG_SCSI_ACARD is not set
# these all currently fail due to missing symbols __bad_udelay or
# error: implicit declaration of function iowrite32be
# CONFIG_SND_ALI5451 is not set
# CONFIG_DRM_NOUVEAU is not set
# CONFIG_MLX4_EN is not set
# FIXME: Guesses, need checking
# CONFIG_MACH_EUKREA_CPUIMX35SD is not set
CONFIG_ARM_ERRATA_720789=y
CONFIG_ARM_ERRATA_751472=y
# CONFIG_FB_MX3 is not set
# CONFIG_MX3_IPU is not set
# CONFIG_MX3_IPU_IRQS is not set

View File

@ -1,3 +1,16 @@
ONFIG_ARCH_HIGHBANK=y
CONFIG_VFP=y
CONFIG_NEON=y
CONFIG_CPU_FREQ=y
CONFIG_CPU_FREQ_DEBUG=y
# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set
CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE=y
CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
CONFIG_CPU_FREQ_GOV_POWERSAVE=m
CONFIG_CPU_FREQ_GOV_USERSPACE=m
CONFIG_CPU_FREQ_GOV_ONDEMAND=m
CONFIG_CPU_FREQ_GOV_CONSERVATIVE=m
CONFIG_CPU_FREQ_TABLE=y
CONFIG_CPU_FREQ_STAT=y
CONFIG_CPU_FREQ_STAT_DETAILS=y

View File

@ -93,3 +93,6 @@ CONFIG_CPU_FREQ_GOV_CONSERVATIVE=m
CONFIG_CPU_FREQ_TABLE=y
CONFIG_CPU_FREQ_STAT=y
CONFIG_CPU_FREQ_STAT_DETAILS=y
CONFIG_PL310_ERRATA_769419=y
CONFIG_LEDS_RENESAS_TPU=y

View File

@ -40,4 +40,4 @@ CONFIG_RTC_DRV_MV=m
CONFIG_MV_XOR=y
CONFIG_CRYPTO_DEV_MV_CESA=m
# CONFIG_TOUCHSCREEN_EETI is not set

View File

@ -148,7 +148,6 @@ CONFIG_ARCH_HAS_HOLES_MEMORYMODEL=y
CONFIG_HW_PERF_EVENTS=y
CONFIG_SPLIT_PTLOCK_CPUS=4
# CONFIG_KSM is not set
CONFIG_DEFAULT_MMAP_MIN_ADDR=32768
# CONFIG_CC_STACKPROTECTOR is not set
CONFIG_ZBOOT_ROM_TEXT=0x0
CONFIG_ZBOOT_ROM_BSS=0x0
@ -183,10 +182,6 @@ CONFIG_PM_SLEEP_SMP=y
# CONFIG_APM_EMULATION is not set
CONFIG_ARCH_HAS_OPP=y
CONFIG_PM_OPP=y
CONFIG_IP_PNP=y
CONFIG_IP_PNP_DHCP=y
CONFIG_IP_PNP_BOOTP=y
# CONFIG_IP_PNP_RARP is not set
# CONFIG_NET_IPGRE_DEMUX is not set
# CONFIG_IP_MROUTE_MULTIPLE_TABLES is not set
# CONFIG_ARPD is not set
@ -412,7 +407,6 @@ CONFIG_SERIAL_8250_DETECT_IRQ=y
CONFIG_SERIAL_OMAP=y
CONFIG_SERIAL_OMAP_CONSOLE=y
# CONFIG_SERIAL_IFX6X60 is not set
# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
# CONFIG_IPMI_HANDLER is not set
# CONFIG_HW_RANDOM_TIMERIOMEM is not set
# CONFIG_R3964 is not set
@ -448,7 +442,6 @@ CONFIG_ARCH_REQUIRE_GPIOLIB=y
CONFIG_GPIOLIB=y
# CONFIG_DEBUG_GPIO is not set
CONFIG_GPIO_SYSFS=y
# CONFIG_GPIO_GENERIC_PLATFORM is not set
#
# Memory mapped GPIO expanders:
@ -624,12 +617,6 @@ CONFIG_REGULATOR_TWL4030=y
# CONFIG_REGULATOR_ISL6271A is not set
# CONFIG_REGULATOR_AD5398 is not set
# CONFIG_REGULATOR_TPS6524X is not set
CONFIG_MEDIA_SUPPORT=y
CONFIG_RC_CORE=y
CONFIG_LIRC=y
CONFIG_IR_RC5_SZ_DECODER=y
CONFIG_IR_LIRC_CODEC=y
# CONFIG_RC_LOOPBACK is not set
CONFIG_VIDEOBUF_DMA_CONTIG=m
CONFIG_V4L2_MEM2MEM_DEV=m
# CONFIG_VIDEO_HELPER_CHIPS_AUTO is not set
@ -806,25 +793,6 @@ CONFIG_SND_SOC_TLV320AIC3X=y
CONFIG_SND_SOC_TWL4030=y
CONFIG_SND_SOC_TWL6040=y
# CONFIG_SOUND_PRIME is not set
CONFIG_HID=y
CONFIG_HID_3M_PCT=m
CONFIG_HID_A4TECH=m
# CONFIG_HID_ACRUX is not set
CONFIG_HID_APPLE=m
CONFIG_HID_BELKIN=m
CONFIG_HID_CHERRY=m
CONFIG_HID_CHICONY=m
CONFIG_HID_CYPRESS=m
CONFIG_HID_EZKEY=m
CONFIG_HID_KYE=m
CONFIG_HID_KENSINGTON=m
CONFIG_HID_LOGITECH=m
CONFIG_HID_MICROSOFT=m
CONFIG_HID_MOSART=m
CONFIG_HID_MONTEREY=m
CONFIG_HID_NTRIG=m
CONFIG_HID_QUANTA=m
CONFIG_HID_STANTUM=m
# CONFIG_HID_TIVO_SLIDE is not set
# CONFIG_USB_ANNOUNCE_NEW_DEVICES is not set
# CONFIG_USB_DEVICEFS is not set
@ -991,11 +959,6 @@ CONFIG_QUOTA_TREE=m
CONFIG_QFMT_V1=m
CONFIG_QFMT_V2=m
CONFIG_AUTOFS4_FS=m
CONFIG_ISO9660_FS=m
CONFIG_FAT_FS=y
CONFIG_MSDOS_FS=y
CONFIG_VFAT_FS=y
CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
# CONFIG_NTFS_DEBUG is not set
# CONFIG_NTFS_RW is not set
# CONFIG_JFFS2_SUMMARY is not set
@ -1063,9 +1026,6 @@ CONFIG_EARLY_PRINTK=y
# CONFIG_DEBUG_ICEDCC is not set
CONFIG_OC_ETM=y
# CONFIG_KEYS_DEBUG_PROC_KEYS is not set
# CONFIG_SECURITY_NETWORK_XFRM is not set
CONFIG_LSM_MMAP_MIN_ADDR=0
CONFIG_SECURITY_SELINUX_BOOTPARAM_VALUE=0
# CONFIG_IMA is not set
CONFIG_CRYPTO_AEAD=m
CONFIG_CRYPTO_RNG=m
@ -1099,3 +1059,27 @@ CONFIG_LIBCRC32C=y
# CONFIG_USB_HSO is not set
CONFIG_CRYSTALHD=m
CONFIG_GPIO_GENERIC_PLATFORM=y
CONFIG_MACH_OMAP_GENERIC=y
CONFIG_PL310_ERRATA_753970=y
CONFIG_ARM_CPU_TOPOLOGY=y
CONFIG_SCHED_MC=y
CONFIG_SCHED_SMT=y
CONFIG_ETHERNET=y
CONFIG_NET_VENDOR_BROADCOM=y
CONFIG_NET_VENDOR_MICROCHIP=y
CONFIG_SENSORS_AD7314=m
CONFIG_REGULATOR_GPIO=y
CONFIG_VIDEO_MT9P031=m
CONFIG_VIDEO_MT9T001=m
CONFIG_VIDEO_S5K6AA=m
CONFIG_PANEL_DVI=m
CONFIG_PANEL_PICODLP=m
CONFIG_USB_RENESAS_USBHS=m
CONFIG_USB_GADGET_STORAGE_NUM_BUFFERS=2
CONFIG_LEDS_RENESAS_TPU=y
# CONFIG_OMAP_IOMMU is not set
CONFIG_USB_RENESAS_USBHS_HCD=m

View File

@ -83,3 +83,10 @@ CONFIG_CPU_FREQ_STAT=y
CONFIG_CPU_FREQ_STAT_DETAILS=y
CONFIG_CRYSTALHD=m
CONFIG_MACH_VENTANA=y
CONFIG_PL310_ERRATA_753970=y
CONFIG_ARM_CPU_TOPOLOGY=y
CONFIG_SCHED_MC=y
CONFIG_SCHED_SMT=y
CONFIG_LEDS_RENESAS_TPU=y

View File

@ -11,6 +11,11 @@
# CONFIG_SSB is not set
# CONFIG_B44 is not set
#
# Prevent b43 and brcmsmac from competing
#
# CONFIG_B43_BCMA is not set
#
# These have to be turned-on again since compat-wireless does not
# provide them...

View File

@ -24,6 +24,7 @@ CONFIG_FAIL_MAKE_REQUEST=y
CONFIG_FAULT_INJECTION_DEBUG_FS=y
CONFIG_FAULT_INJECTION_STACKTRACE_FILTER=y
CONFIG_FAIL_IO_TIMEOUT=y
CONFIG_FAIL_MMC_REQUEST=y
CONFIG_SLUB_DEBUG_ON=y
@ -81,7 +82,6 @@ CONFIG_CARL9170_DEBUGFS=y
CONFIG_IWLWIFI_DEVICE_TRACING=y
CONFIG_DEBUG_OBJECTS_WORK=y
# CONFIG_DEBUG_STRICT_USER_COPY_CHECKS is not set
CONFIG_DMADEVICES_DEBUG=y
CONFIG_DMADEVICES_VDEBUG=y
@ -99,9 +99,8 @@ CONFIG_KDB_KEYBOARD=y
CONFIG_DEBUG_OBJECTS_PERCPU_COUNTER=y
CONFIG_TEST_LIST_SORT=y
CONFIG_DEBUG_SET_MODULE_RONX=y
CONFIG_DETECT_HUNG_TASK=y
CONFIG_DEFAULT_HUNG_TASK_TIMEOUT=120
# CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not set
CONFIG_X86_BOOTPARAM_MEMORY_CORRUPTION_CHECK=y

File diff suppressed because it is too large Load Diff

View File

@ -1,204 +0,0 @@
#
# Automatically generated make config: don't edit
#
#
# Processor type and features
#
CONFIG_IA64=y
CONFIG_64BIT=y
# CONFIG_XEN is not set
CONFIG_MMU=y
CONFIG_EFI=y
# CONFIG_ITANIUM is not set
CONFIG_MCKINLEY=y
CONFIG_IA64_GENERIC=y
CONFIG_DMAR=y
# CONFIG_IA64_DIG is not set
# CONFIG_IA64_HP_ZX1 is not set
# CONFIG_IA64_SGI_SN2 is not set
CONFIG_IA64_ESI=y
CONFIG_IA64_HP_AML_NFW=y
CONFIG_MSPEC=y
# CONFIG_IA64_HP_SIM is not set
# CONFIG_IA64_PAGE_SIZE_4KB is not set
# CONFIG_IA64_PAGE_SIZE_8KB is not set
CONFIG_IA64_PAGE_SIZE_16KB=y
# CONFIG_IA64_PAGE_SIZE_64KB is not set
CONFIG_IA64_L1_CACHE_SHIFT=7
CONFIG_NUMA=y
# CONFIG_VIRTUAL_MEM_MAP is not set
CONFIG_SPARSEMEM_MANUAL=y
CONFIG_SPARSEMEM=y
CONFIG_MEMORY_HOTPLUG=y
CONFIG_MEMORY_HOTREMOVE=y
CONFIG_IA64_MCA_RECOVERY=m
CONFIG_IA64_CYCLONE=y
CONFIG_MMTIMER=y
CONFIG_IOSAPIC=y
CONFIG_FORCE_MAX_ZONEORDER=18
CONFIG_NR_CPUS=1024
# CONFIG_IA32_SUPPORT is not set
# CONFIG_COMPAT is not set
CONFIG_PERFMON=y
CONFIG_IA64_PALINFO=y
CONFIG_EFI_VARS=y
CONFIG_SERIAL_8250_RUNTIME_UARTS=16
CONFIG_EFI_PCDP=y
#
# Block devices
#
# CONFIG_BLK_DEV_FD is not set
#
# IDE chipset support/bugfixes
#
CONFIG_BLK_DEV_SGIIOC4=y
#
# Character devices
#
CONFIG_TCG_INFINEON=m
#
# Watchdog Cards
#
# CONFIG_HW_RANDOM is not set
# CONFIG_GEN_RTC is not set
CONFIG_EFI_RTC=y
CONFIG_RTC_DRV_EFI=y
#
# AGP
#
CONFIG_AGP_I460=y
CONFIG_AGP_HP_ZX1=y
CONFIG_AGP_SGI_TIOCA=y
#
# HP Simulator drivers
#
# CONFIG_HP_SIMETH is not set
# CONFIG_HP_SIMSERIAL is not set
# CONFIG_HP_SIMSCSI is not set
#
# Kernel hacking
#
# CONFIG_IA64_PRINT_HAZARDS is not set
# CONFIG_DISABLE_VHPT is not set
# CONFIG_IA64_DEBUG_CMPXCHG is not set
# CONFIG_IA64_DEBUG_IRQ is not set
#
# Memory Technology Devices (MTD)
#
# CONFIG_MTD is not set
#
# SGI
#
CONFIG_SGI_SNSC=y
CONFIG_SGI_TIOCX=y
CONFIG_SGI_MBCS=m
CONFIG_SGI_IOC3=m
CONFIG_SGI_IOC4=y
CONFIG_SGI_XP=m
CONFIG_SGI_GRU=m
# CONFIG_SGI_GRU_DEBUG is not set
CONFIG_SERIAL_SGI_L1_CONSOLE=y
CONFIG_SERIAL_SGI_IOC3=m
CONFIG_SERIAL_SGI_IOC4=m
#
# SCSI low-level drivers
#
# CONFIG_SCSI_BUSLOGIC is not set
#
CONFIG_ACPI=y
CONFIG_ACPI_AC=y
# CONFIG_ACPI_ASUS is not set
CONFIG_ACPI_PROCFS_POWER=y
CONFIG_ACPI_SYSFS_POWER=y
# CONFIG_ACPI_BATTERY is not set
CONFIG_ACPI_BLACKLIST_YEAR=0
CONFIG_ACPI_BUTTON=y
# CONFIG_ACPI_DOCK is not set
CONFIG_ACPI_FAN=y
CONFIG_ACPI_HOTPLUG_MEMORY=y
CONFIG_ACPI_NUMA=y
CONFIG_ACPI_POWER=y
CONFIG_ACPI_PROCESSOR=y
CONFIG_ACPI_PROCFS=y
CONFIG_ACPI_SLEEP=y
CONFIG_ACPI_THERMAL=y
# CONFIG_ACPI_TOSHIBA is not set
CONFIG_ACPI_VIDEO=m
# CONFIG_ACPI_PROC_EVENT is not set
CONFIG_ACPI_HED=m
CONFIG_ACPI_EC_DEBUGFS=m
CONFIG_ACPI_IPMI=m
CONFIG_ACPI_CUSTOM_METHOD=m
CONFIG_SENSORS_ACPI_POWER=m
CONFIG_PM=y
CONFIG_HOTPLUG_PCI=y
# CONFIG_HPET is not set
# CONFIG_HOTPLUG_PCI_CPCI is not set
CONFIG_HOTPLUG_PCI_SHPC=m
CONFIG_HOTPLUG_PCI_SGI=m
CONFIG_PNPACPI=y
CONFIG_SCHED_SMT=y
CONFIG_ARCH_DISCONTIGMEM_ENABLE=y
CONFIG_IA64_ACPI_CPUFREQ=m
# CONFIG_PERMIT_BSP_REMOVE is not set
# CONFIG_FORCE_CPEI_RETARGET is not set
CONFIG_NODES_SHIFT=10
CONFIG_HW_RANDOM_INTEL=m
CONFIG_CRASH_DUMP=y
CONFIG_PROC_VMCORE=y
# drivers/media/video/usbvision/usbvision-i2c.c:64:39: error: macro "outb" passed 4 arguments, but takes just 2
# CONFIG_VIDEO_USBVISION is not set
# CONFIG_IA64_MC_ERR_INJECT is not set
CONFIG_DMIID=y
CONFIG_DMI_SYSFS=y
CONFIG_SENSORS_I5K_AMB=m
CONFIG_SPARSEMEM_VMEMMAP=y
CONFIG_FRAME_WARN=2048
CONFIG_VIRT_CPU_ACCOUNTING=y
CONFIG_VIRTUALIZATION=y
CONFIG_KVM=m
CONFIG_KVM_INTEL=m
CONFIG_HP_ILO=m
CONFIG_PARAVIRT_GUEST=y
CONFIG_PARAVIRT=y
CONFIG_PARAVIRT_TIME_ACCOUNTING=y
CONFIG_DMAR_DEFAULT_ON=y
CONFIG_RCU_FANOUT=64
CONFIG_ACPI_POWER_METER=m
CONFIG_I2C_SCMI=m
# CONFIG_HP_ACCEL is not set

View File

@ -24,6 +24,7 @@ CONFIG_CPUMASK_OFFSTACK=y
# CONFIG_FAULT_INJECTION_DEBUG_FS is not set
# CONFIG_FAULT_INJECTION_STACKTRACE_FILTER is not set
# CONFIG_FAIL_IO_TIMEOUT is not set
# CONFIG_FAIL_MMC_REQUEST is not set
# CONFIG_SLUB_DEBUG_ON is not set
@ -81,7 +82,6 @@ CONFIG_DEBUG_OBJECTS_ENABLE_DEFAULT=1
# CONFIG_IWLWIFI_DEVICE_TRACING is not set
# CONFIG_DEBUG_OBJECTS_WORK is not set
# CONFIG_DEBUG_STRICT_USER_COPY_CHECKS is not set
# CONFIG_DMADEVICES_DEBUG is not set
# CONFIG_DMADEVICES_VDEBUG is not set
@ -99,9 +99,8 @@ CONFIG_KDB_KEYBOARD=y
# CONFIG_DEBUG_OBJECTS_PERCPU_COUNTER is not set
# CONFIG_TEST_LIST_SORT is not set
# CONFIG_DEBUG_SET_MODULE_RONX is not set
# CONFIG_DETECT_HUNG_TASK is not set
CONFIG_DEFAULT_HUNG_TASK_TIMEOUT=120
# CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not set
# CONFIG_X86_BOOTPARAM_MEMORY_CORRUPTION_CHECK is not set

View File

@ -43,11 +43,11 @@ CONFIG_FB_MATROX=y
CONFIG_FB_ATY128_BACKLIGHT=y
CONFIG_FB_ATY_BACKLIGHT=y
CONFIG_FB_RIVA_BACKLIGHT=y
# FIXME: Do we care about this hardware ?
CONFIG_FB_MB862XX=m
CONFIG_FB_MB862XX_PCI_GDC=y
CONFIG_FB_MB862XX_LIME=y
CONFIG_FB_MB862XX_I2C=y
# CONFIG_FB_MB862XX is not set
# CONFIG_FB_MB862XX_PCI_GDC is not set
# CONFIG_FB_MB862XX_LIME is not set
# CONFIG_FB_MB862XX_I2C is not set
CONFIG_SND_POWERMAC=m
CONFIG_SND_POWERMAC_AUTO_DRC=y
@ -182,8 +182,8 @@ CONFIG_EDAC_PASEMI=m
CONFIG_EDAC_AMD8131=m
CONFIG_EDAC_AMD8111=m
CONFIG_AXON_RAM=m
CONFIG_OPROFILE_CELL=y
# CONFIG_AXON_RAM is not set
# CONFIG_OPROFILE_CELL is not set
CONFIG_SUSPEND_FREEZER=y
# CONFIG_IDEPCI_PCIBUS_ORDER is not set
@ -204,9 +204,9 @@ CONFIG_DMADEVICES=y
CONFIG_SND_PPC=y
CONFIG_PPC_82xx=y
CONFIG_PPC_83xx=y
CONFIG_PPC_86xx=y
# CONFIG_PPC_82xx is not set
# CONFIG_PPC_83xx is not set
# CONFIG_PPC_86xx is not set
CONFIG_EXTRA_TARGETS=""
# CONFIG_CODE_PATCHING_SELFTEST is not set
# CONFIG_FTR_FIXUP_SELFTEST is not set
@ -220,27 +220,28 @@ CONFIG_EXTRA_TARGETS=""
# CONFIG_SERIAL_QE is not set
# CONFIG_I2C_CPM is not set
CONFIG_NET_VENDOR_IBM=y
CONFIG_SERIO_XILINX_XPS_PS2=m
# CONFIG_SERIO_XILINX_XPS_PS2 is not set
# CONFIG_PPC_SMLPAR is not set
CONFIG_MGCOGE=y
CONFIG_GEF_SBC610=y
CONFIG_GEF_PPC9A=y
CONFIG_GEF_SBC310=y
# CONFIG_MGCOGE is not set
# CONFIG_GEF_SBC610 is not set
# CONFIG_GEF_PPC9A is not set
# CONFIG_GEF_SBC310 is not set
CONFIG_QUICC_ENGINE=y
CONFIG_QE_GPIO=y
CONFIG_MPC8xxx_GPIO=y
# CONFIG_QUICC_ENGINE is not set
# CONFIG_QE_GPIO is not set
# CONFIG_MPC8xxx_GPIO is not set
CONFIG_IDE_GD=y
CONFIG_IDE_GD_ATA=y
CONFIG_IDE_GD_ATAPI=y
CONFIG_MCU_MPC8349EMITX=m
# CONFIG_MCU_MPC8349EMITX is not set
CONFIG_GPIO_XILINX=y
# CONFIG_GPIO_XILINX is not set
CONFIG_PMIC_DA903X=y
CONFIG_BACKLIGHT_DA903X=m
@ -261,11 +262,11 @@ CONFIG_TOUCHSCREEN_DA9034=m
CONFIG_SIMPLE_GPIO=y
CONFIG_FSL_PQ_MDIO=m
# CONFIG_FSL_PQ_MDIO is not set
CONFIG_PS3_VRAM=m
# CONFIG_PS3_VRAM is not set
CONFIG_MDIO_GPIO=m
CONFIG_SERIAL_OF_PLATFORM_NWPSERIAL=m
# CONFIG_SERIAL_OF_PLATFORM_NWPSERIAL is not set
# CONFIG_DEBUG_GPIO is not set
CONFIG_GPIO_PCA953X=m
CONFIG_GPIO_PCF857X=m
@ -293,20 +294,20 @@ CONFIG_SWIOTLB=y
CONFIG_PPC_DISABLE_WERROR=y
CONFIG_XILINX_LL_TEMAC=m
CONFIG_XILINX_EMACLITE=m
# CONFIG_XILINX_LL_TEMAC is not set
# CONFIG_XILINX_EMACLITE is not set
CONFIG_GPIO_WM831X=m
# CONFIG_GPIO_LANGWELL is not set
# CONFIG_GPIO_UCB1400 is not set
CONFIG_EDAC_MPC85XX=m
# CONFIG_EDAC_MPC85XX is not set
CONFIG_NR_IRQS=512
CONFIG_SPARSE_IRQ=y
CONFIG_PPC_MPC5200_LPBFIFO=m
CONFIG_CAN_MSCAN=m
CONFIG_CAN_MPC5XXX=m
# CONFIG_PPC_MPC5200_LPBFIFO is not set
# CONFIG_CAN_MSCAN is not set
# CONFIG_CAN_MPC5XXX is not set
CONFIG_PATA_MACIO=m
CONFIG_SERIAL_GRLIB_GAISLER_APBUART=m
# CONFIG_PMIC_ADP5520 is not set
@ -327,7 +328,7 @@ CONFIG_SERIAL_GRLIB_GAISLER_APBUART=m
# CONFIG_PPC_MPC512x is not set
# CONFIG_RTC_DRV_MPC5121 is not set
CONFIG_MPC512X_DMA=m
# CONFIG_MPC512X_DMA is not set
CONFIG_KVM_GUEST=y
@ -338,15 +339,17 @@ CONFIG_I2C_MPC=m
CONFIG_RFKILL_GPIO=m
CONFIG_CRYPTO_DEV_FSL_CAAM=m
CONFIG_CRYPTO_DEV_FSL_CAAM_RINGSIZE=9
CONFIG_CRYPTO_DEV_FSL_CAAM_INTC=y
CONFIG_CRYPTO_DEV_FSL_CAAM_INTC_COUNT_THLD=255
CONFIG_CRYPTO_DEV_FSL_CAAM_INTC_TIME_THLD=2048
CONFIG_CRYPTO_DEV_FSL_CAAM_CRYPTO_API=m
# CONFIG_CRYPTO_DEV_FSL_CAAM is not set
# CONFIG_GPIO_GENERIC_PLATFORM is not set
# CONFIG_GPIO_MCP23S08 is not set
# CONFIG_CAN_FLEXCAN is not set
# CONFIG_NET_VENDOR_XILINX is not set
# CONFIG_PPC_EPAPR_HV_BYTECHAN is not set
# CONFIG_IBM_EMAC is not set
# CONFIG_NET_VENDOR_PASEMI is not set
# CONFIG_NET_VENDOR_TOSHIBA is not set
# Disable btrfs until it is shown to work with 64k pages (rhbz 747079)
# CONFIG_BTRFS_FS is not set

View File

@ -7,17 +7,17 @@ CONFIG_PPC32=y
CONFIG_CPU_FREQ_PMAC=y
CONFIG_PPC_CHRP=y
CONFIG_PPC_PMAC=y
CONFIG_PPC_MPC52xx=y
# CONFIG_PPC_MPC52xx is not set
CONFIG_PPC_PREP=y
# CONFIG_PPC_MPC5200_SIMPLE is not set
CONFIG_SATA_FSL=m
# CONFIG_SATA_FSL is not set
# CONFIG_SATA_NV is not set
# busted in .28git1
# ERROR: "cacheable_memzero" [drivers/net/gianfar_driver.ko] undefined!
# CONFIG_GIANFAR is not set
CONFIG_USB_EHCI_FSL=y
# CONFIG_USB_EHCI_FSL is not set
CONFIG_PMAC_APM_EMU=y
CONFIG_PMAC_BACKLIGHT=y
@ -41,6 +41,7 @@ CONFIG_ADB_PMU_LED=y
CONFIG_ADB_PMU_LED_IDE=y
CONFIG_PMAC_MEDIABAY=y
CONFIG_NET_VENDOR_APPLE=y
CONFIG_BMAC=m
CONFIG_MACE=m
# CONFIG_MACE_AAUI_PORT is not set
@ -72,24 +73,20 @@ CONFIG_BRIQ_PANEL=m
# CONFIG_ATA_PIIX is not set
# CONFIG_PATA_AMD is not set
# CONFIG_PATA_ATIIXP is not set
CONFIG_PATA_MPC52xx=m
# CONFIG_PATA_MPC52xx is not set
# CONFIG_PATA_MPIIX is not set
# CONFIG_PATA_OLDPIIX is not set
# CONFIG_PATA_OPTI is not set
# CONFIG_PATA_SERVERWORKS is not set
CONFIG_SERIAL_MPC52xx=y
CONFIG_SERIAL_MPC52xx_CONSOLE=y
CONFIG_SERIAL_MPC52xx_CONSOLE_BAUD=115200
# CONFIG_SERIAL_MPC52xx is not set
# CONFIG_MPC5200_WDT is not set
CONFIG_8xxx_WDT=m
CONFIG_GEF_WDT=m
CONFIG_PPC_MPC5200_BUGFIX=y
CONFIG_FEC_MPC52xx=m
# CONFIG_PPC_MPC5200_BUGFIX is not set
# CONFIG_NET_VENDOR_FREESCALE is not set
#CHECK: This may later become a tristate.
CONFIG_FEC_MPC52xx_MDIO=y
CONFIG_PPC_MPC5200_GPIO=y
CONFIG_MDIO_GPIO=m
CONFIG_SERIAL_OF_PLATFORM=y
@ -144,26 +141,28 @@ CONFIG_VIRTUALIZATION=y
CONFIG_SND_ISA=y
CONFIG_CRYPTO_DEV_TALITOS=m
CONFIG_FSL_EMB_PERFMON=y
CONFIG_MPC8272_ADS=y
CONFIG_PQ2FADS=y
CONFIG_EP8248E=y
CONFIG_MPC830x_RDB=y
CONFIG_MPC831x_RDB=y
CONFIG_MPC832x_MDS=y
CONFIG_MPC832x_RDB=y
CONFIG_MPC834x_MDS=y
CONFIG_MPC834x_ITX=y
CONFIG_MPC836x_MDS=y
CONFIG_MPC836x_RDK=y
CONFIG_MPC837x_MDS=y
CONFIG_MPC837x_RDB=y
CONFIG_SBC834x=y
CONFIG_ASP834x=y
CONFIG_KMETER1=y
CONFIG_MPC8641_HPCN=y
CONFIG_SBC8641D=y
CONFIG_MPC8610_HPCD=y
# CONFIG_FSL_EMB_PERFMON is not set
# CONFIG_MPC8272_ADS is not set
# CONFIG_PQ2FADS is not set
# CONFIG_EP8248E is not set
# CONFIG_MPC830x_RDB is not set
# CONFIG_MPC831x_RDB is not set
# CONFIG_MPC832x_MDS is not set
# CONFIG_MPC832x_RDB is not set
# CONFIG_MPC834x_MDS is not set
# CONFIG_MPC834x_ITX is not set
# CONFIG_MPC836x_MDS is not set
# CONFIG_MPC836x_RDK is not set
# CONFIG_MPC837x_MDS is not set
# CONFIG_MPC837x_RDB is not set
# CONFIG_SBC834x is not set
# CONFIG_ASP834x is not set
# CONFIG_KMETER1 is not set
# CONFIG_MPC8641_HPCN is not set
# CONFIG_SBC8641D is not set
# CONFIG_MPC8610_HPCD is not set
# CONFIG_FSL_LBC is not set
# CONFIG_MTD_NAND_FSL_UPM is not set
# CONFIG_USB_MUSB_HDRC is not set
@ -172,8 +171,6 @@ CONFIG_MPC8610_HPCD=y
# drivers/mtd/maps/sbc8240.c:172: warning: passing argument 1 of 'simple_map_init' from incompatible pointer type
# drivers/mtd/maps/sbc8240.c:177: error: 'struct mtd_info' has no member named 'module'
CONFIG_MTD_NAND_FSL_UPM=m
CONFIG_RCU_FANOUT=32
CONFIG_PERF_COUNTERS=y
@ -185,3 +182,4 @@ CONFIG_KVM_BOOK3S_32=m
# CONFIG_SCSI_QLA_ISCSI is not set
CONFIG_BATTERY_PMU=m

View File

@ -2,42 +2,23 @@ CONFIG_WINDFARM_PM81=y
CONFIG_WINDFARM_PM91=y
CONFIG_WINDFARM_PM121=y
CONFIG_PPC_PMAC64=y
CONFIG_PPC_MAPLE=y
CONFIG_PPC_CELL=y
CONFIG_PPC_IBM_CELL_BLADE=y
# CONFIG_PPC_MAPLE is not set
# CONFIG_PPC_CELL is not set
# CONFIG_PPC_IBM_CELL_BLADE is not set
CONFIG_PPC_ISERIES=y
CONFIG_PPC_PSERIES=y
CONFIG_PPC_PMAC=y
CONFIG_PPC_PASEMI=y
CONFIG_PPC_POWERNV=y
CONFIG_PPC_POWERNV_RTAS=y
# CONFIG_PPC_PASEMI is not set
# CONFIG_PPC_PASEMI_IOMMU_DMA_FORCE is not set
CONFIG_PPC_PS3=y
CONFIG_PPC_CELLEB=y
CONFIG_PPC_CELL_QPACE=y
CONFIG_PS3_HTAB_SIZE=20
# CONFIG_PS3_DYNAMIC_DMA is not set
CONFIG_PS3_ADVANCED=y
CONFIG_PS3_HTAB_SIZE=20
# CONFIG_PS3_DYNAMIC_DMA is not set
CONFIG_PS3_VUART=y
CONFIG_PS3_PS3AV=y
CONFIG_PS3_STORAGE=m
CONFIG_PS3_DISK=m
CONFIG_PS3_ROM=m
CONFIG_PS3_FLASH=m
CONFIG_PS3_LPM=y
CONFIG_SND_PS3=m
CONFIG_SND_PS3_DEFAULT_START_DELAY=1000
CONFIG_GELIC_NET=m
CONFIG_GELIC_WIRELESS=y
CONFIG_GELIC_WIRELESS_OLD_PSK_INTERFACE=y
CONFIG_CBE_THERM=m
CONFIG_CBE_CPUFREQ=m
CONFIG_CBE_CPUFREQ_PMI=m
CONFIG_CBE_CPUFREQ_PMI_ENABLE=y
# CONFIG_PPC_PS3 is not set
# CONFIG_PPC_CELLEB is not set
# CONFIG_PPC_CELL_QPACE is not set
CONFIG_PMAC_RACKMETER=m
CONFIG_IBMEBUS=y
CONFIG_SPU_FS=m
CONFIG_RTAS_FLASH=y
# CONFIG_UDBG_RTAS_CONSOLE is not set
CONFIG_PPC_SPLPAR=y
CONFIG_SCANLOG=y
CONFIG_LPARCFG=y
@ -60,10 +41,9 @@ CONFIG_CPU_FREQ_PMAC64=y
CONFIG_SCSI_IPR=m
CONFIG_SCSI_IPR_TRACE=y
CONFIG_SCSI_IPR_DUMP=y
CONFIG_SPIDER_NET=m
CONFIG_HVC_RTAS=y
CONFIG_HVC_ISERIES=y
CONFIG_CBE_RAS=y
CONFIG_HVC_OPAL=y
# iSeries device drivers
#
@ -75,19 +55,13 @@ CONFIG_VIOTAPE=m
CONFIG_PASEMI_MAC=m
CONFIG_SERIAL_OF_PLATFORM=m
CONFIG_PPC_PASEMI_IOMMU=y
CONFIG_SERIAL_TXX9=y
CONFIG_SERIAL_TXX9_NR_UARTS=6
CONFIG_SERIAL_TXX9_CONSOLE=y
CONFIG_HVC_BEAT=y
CONFIG_FB_PS3=y
CONFIG_FB_PS3_DEFAULT_SIZE_M=18
CONFIG_PPC_PMI=m
CONFIG_PS3_SYS_MANAGER=y
# CONFIG_BLK_DEV_CELLEB is not set
CONFIG_PATA_SCC=m
@ -138,19 +112,9 @@ CONFIG_SECCOMP=y
CONFIG_NO_HZ=y
CONFIG_HIGH_RES_TIMERS=y
# CONFIG_BLK_DEV_PLATFORM is not set
CONFIG_IBM_NEW_EMAC=m
CONFIG_IBM_NEW_EMAC_RXB=128
CONFIG_IBM_NEW_EMAC_TXB=64
CONFIG_IBM_NEW_EMAC_POLL_WEIGHT=32
CONFIG_IBM_NEW_EMAC_RX_COPY_THRESHOLD=256
CONFIG_IBM_NEW_EMAC_RX_SKB_HEADROOM=0
# CONFIG_IBM_NEW_EMAC_DEBUG is not set
# CONFIG_VIRQ_DEBUG is not set
CONFIG_ELECTRA_CF=m
CONFIG_MTD_NAND_PASEMI=m
CONFIG_EDAC_CELL=m
CONFIG_EDAC_CPC925=m
CONFIG_FRAME_WARN=2048
@ -164,14 +128,6 @@ CONFIG_SCSI_IBMVFC=m
# CONFIG_SCSI_IBMVFC_TRACE is not set
CONFIG_IBM_BSR=m
CONFIG_SERIO_XILINX_XPS_PS2=m
CONFIG_PPC_IBM_CELL_RESETBUTTON=y
CONFIG_PPC_IBM_CELL_POWERBUTTON=m
CONFIG_CBE_CPUFREQ_SPU_GOVERNOR=m
CONFIG_RTC_DRV_PS3=y
CONFIG_CRASH_DUMP=y
CONFIG_RELOCATABLE=y
@ -202,4 +158,3 @@ CONFIG_IO_EVENT_IRQ=y
CONFIG_HW_RANDOM_AMD=m
CONFIG_BPF_JIT=y
CONFIG_CPU_FREQ_MAPLE=y

View File

@ -237,3 +237,5 @@ CONFIG_STRICT_DEVMEM=y
# CONFIG_WARN_DYNAMIC_STACK is not set
CONFIG_CRYPTO_GHASH_S390=m
CONFIG_NET_CORE=y
CONFIG_ETHERNET=y

View File

@ -43,6 +43,7 @@ CONFIG_I2C_ALI1535=m
# CONFIG_VGASTATE is not set
# CONFIG_FB_DDC is not set
# CONFIG_FB_BW2 is not set
# CONFIG_FB_GRVGA is not set
CONFIG_FB_CG3=y
CONFIG_FB_CG6=y
# CONFIG_FB_RIVA is not set

View File

@ -57,9 +57,6 @@ CONFIG_FB_GEODE_GX=y
# CONFIG_PCI_GOMMCONFIG is not set
CONFIG_PCI_GOANY=y
# FIXME: wtf? "x86 specific drivers"
CONFIG_PCMCIA_FDOMAIN=m
CONFIG_SCSI_FUTURE_DOMAIN=m
CONFIG_IBM_ASM=m
#
@ -138,8 +135,6 @@ CONFIG_CRYPTO_TWOFISH_586=m
CONFIG_VIDEO_CAFE_CCIC=m
CONFIG_VMI=y
CONFIG_XEN_MAX_DOMAIN_MEMORY=8
CONFIG_MTD_NAND_CAFE=m
@ -155,6 +150,7 @@ CONFIG_OLPC_XO1_PM=y
CONFIG_OLPC_XO15_SCI=y
CONFIG_OLPC_XO1_RTC=y
CONFIG_OLPC_XO1_SCI=y
# CONFIG_ALIX is not set
# staging
# CONFIG_FB_OLPC_DCON is not set
@ -204,3 +200,6 @@ CONFIG_I2O_EXT_ADAPTEC=y
CONFIG_I2O_CONFIG_OLD_IOCTL=y
CONFIG_I2O_BUS=m
# CONFIG_EDAC_SBRIDGE is not set
# CONFIG_X86_WANT_INTEL_MID is not set

View File

@ -36,10 +36,10 @@ CONFIG_FB_EFI=y
# FIXME: 32bit only?
# CONFIG_FB_N411 is not set
CONFIG_DMAR=y
CONFIG_INTEL_IOMMU=y
CONFIG_DMAR_BROKEN_GFX_WA=y
CONFIG_DMAR_FLOPPY_WA=y
# CONFIG_DMAR_DEFAULT_ON is not set
CONFIG_INTEL_IOMMU_FLOPPY_WA=y
# CONFIG_INTEL_IOMMU_DEFAULT_ON is not set
CONFIG_SCSI_ADVANSYS=m
CONFIG_SECCOMP=y
@ -59,7 +59,6 @@ CONFIG_DEBUG_STACKOVERFLOW=y
CONFIG_ACPI=y
CONFIG_ACPI_AC=y
# CONFIG_ACPI_ASUS is not set
CONFIG_ACPI_PROCFS_POWER=y
CONFIG_ACPI_BATTERY=y
CONFIG_ACPI_BUTTON=y
CONFIG_ACPI_CONTAINER=m
@ -73,6 +72,8 @@ CONFIG_ACPI_SLEEP=y
CONFIG_ACPI_THERMAL=y
CONFIG_ACPI_TOSHIBA=m
CONFIG_ACPI_VIDEO=m
# FIXME: Next two are deprecated. Remove them when they disappear upstream
# CONFIG_ACPI_PROCFS_POWER is not set
# CONFIG_ACPI_PROC_EVENT is not set
CONFIG_PNPACPI=y
CONFIG_ACPI_PROCESSOR_AGGREGATOR=m
@ -227,8 +228,7 @@ CONFIG_PARAVIRT=y
CONFIG_PARAVIRT_TIME_ACCOUNTING=y
# CONFIG_PARAVIRT_DEBUG is not set
# PARAVIRT_SPINLOCKS has a 5% perf hit
# FIXME: Still true ? References?
# PARAVIRT_SPINLOCKS has a 5% perf hit on native hw (see kconfig)
# CONFIG_PARAVIRT_SPINLOCKS is not set
CONFIG_KVM_CLOCK=y
@ -310,7 +310,7 @@ CONFIG_HP_ILO=m
CONFIG_BACKLIGHT_APPLE=m
# CONFIG_X86_CHECK_BIOS_CORRUPTION is not set
CONFIG_X86_CHECK_BIOS_CORRUPTION=y
# CONFIG_CMDLINE_BOOL is not set
@ -381,3 +381,6 @@ CONFIG_HP_ACCEL=m
CONFIG_SCHED_SMT=y
CONFIG_CC_STACKPROTECTOR=y
CONFIG_RELOCATABLE=y
# CONFIG_HYPERV is not set

View File

@ -22,8 +22,7 @@ CONFIG_AMD_IOMMU=y
CONFIG_AMD_IOMMU_STATS=y
# CONFIG_IOMMU_DEBUG is not set
CONFIG_SWIOTLB=y
CONFIG_CALGARY_IOMMU=y
CONFIG_CALGARY_IOMMU_ENABLED_BY_DEFAULT=y
# CONFIG_CALGARY_IOMMU is not set
CONFIG_KEXEC_JUMP=y
@ -44,6 +43,9 @@ CONFIG_CRYPTO_AES_X86_64=y
CONFIG_CRYPTO_TWOFISH_X86_64=m
CONFIG_CRYPTO_SALSA20_X86_64=m
CONFIG_CRYPTO_GHASH_CLMUL_NI_INTEL=m
CONFIG_CRYPTO_SHA1_SSSE3=m
CONFIG_CRYPTO_BLOWFISH_X86_64=m
CONFIG_CRYPTO_TWOFISH_X86_64_3WAY=m
# CONFIG_I2C_ALI1535 is not set
# CONFIG_I2C_ALI1563 is not set
@ -53,6 +55,7 @@ CONFIG_CRYPTO_GHASH_CLMUL_NI_INTEL=m
CONFIG_EDAC_AMD64=m
# CONFIG_EDAC_AMD64_ERROR_INJECTION is not set
CONFIG_EDAC_SBRIDGE=m
# CONFIG_PC8736x_GPIO is not set
@ -62,8 +65,8 @@ CONFIG_SPARSEMEM=y
CONFIG_HAVE_MEMORY_PRESENT=y
CONFIG_SPARSEMEM_EXTREME=y
CONFIG_SPARSEMEM_VMEMMAP=y
CONFIG_MEMORY_HOTPLUG=y
CONFIG_MEMORY_HOTREMOVE=y
# CONFIG_MEMORY_HOTPLUG is not set
# CONFIG_MEMORY_HOTREMOVE is not set
# CONFIG_BLK_DEV_CMD640 is not set
# CONFIG_BLK_DEV_RZ1000 is not set
@ -79,7 +82,7 @@ CONFIG_SGI_GRU=m
# CONFIG_VIDEO_CAFE_CCIC is not set
CONFIG_XEN_MAX_DOMAIN_MEMORY=32
CONFIG_XEN_MAX_DOMAIN_MEMORY=128
# CONFIG_XEN_BALLOON_MEMORY_HOTPLUG is not set
CONFIG_XEN_DEV_EVTCHN=m
CONFIG_XEN_SYS_HYPERVISOR=y
@ -95,7 +98,7 @@ CONFIG_DIRECT_GBPAGES=y
CONFIG_X86_MPPARSE=y
CONFIG_I7300_IDLE=m
CONFIG_INTR_REMAP=y
CONFIG_IRQ_REMAP=y
CONFIG_X86_X2APIC=y
CONFIG_SPARSE_IRQ=y

View File

@ -1,83 +0,0 @@
From 64015d6d16d7ed5b6ffcec95dc13e8694bd2a4d6 Mon Sep 17 00:00:00 2001
From: Chris Wilson <chris@chris-wilson.co.uk>
Date: Mon, 20 Jun 2011 22:35:24 +0100
Subject: [PATCH] drm/i915/sdvo: Include LVDS panels for the IS_DIGITAL check
We were checking whether the supplied edid matched the connector it was
read from. We do this in case a DDC read returns an EDID for another
device on a multifunction or otherwise interesting card. However, we
failed to include LVDS as a digital device and so rejecting an otherwise
valid EDID.
Fixes the detection of the secondary SDVO LVDS panel on the Libretto
W105.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
---
drivers/gpu/drm/i915/intel_sdvo.c | 28 ++++++++++++++++++++--------
1 files changed, 20 insertions(+), 8 deletions(-)
diff --git a/drivers/gpu/drm/i915/intel_sdvo.c b/drivers/gpu/drm/i915/intel_sdvo.c
index f96975c..26eff9f 100644
--- a/drivers/gpu/drm/i915/intel_sdvo.c
+++ b/drivers/gpu/drm/i915/intel_sdvo.c
@@ -49,6 +49,7 @@
#define IS_TMDS(c) (c->output_flag & SDVO_TMDS_MASK)
#define IS_LVDS(c) (c->output_flag & SDVO_LVDS_MASK)
#define IS_TV_OR_LVDS(c) (c->output_flag & (SDVO_TV_MASK | SDVO_LVDS_MASK))
+#define IS_DIGITAL(c) (c->output_flag & (SDVO_TMDS_MASK | SDVO_LVDS_MASK))
static const char *tv_format_names[] = {
@@ -1363,6 +1364,18 @@ intel_sdvo_hdmi_sink_detect(struct drm_connector *connector)
return status;
}
+static bool
+intel_sdvo_connector_matches_edid(struct intel_sdvo_connector *sdvo,
+ struct edid *edid)
+{
+ bool monitor_is_digital = !!(edid->input & DRM_EDID_INPUT_DIGITAL);
+ bool connector_is_digital = !!IS_DIGITAL(sdvo);
+
+ DRM_DEBUG_KMS("connector_is_digital? %d, monitor_is_digital? %d\n",
+ connector_is_digital, monitor_is_digital);
+ return connector_is_digital == monitor_is_digital;
+}
+
static enum drm_connector_status
intel_sdvo_detect(struct drm_connector *connector, bool force)
{
@@ -1407,10 +1420,12 @@ intel_sdvo_detect(struct drm_connector *connector, bool force)
if (edid == NULL)
edid = intel_sdvo_get_analog_edid(connector);
if (edid != NULL) {
- if (edid->input & DRM_EDID_INPUT_DIGITAL)
- ret = connector_status_disconnected;
- else
+ if (intel_sdvo_connector_matches_edid(intel_sdvo_connector,
+ edid))
ret = connector_status_connected;
+ else
+ ret = connector_status_disconnected;
+
connector->display_info.raw_edid = NULL;
kfree(edid);
} else
@@ -1451,11 +1466,8 @@ static void intel_sdvo_get_ddc_modes(struct drm_connector *connector)
edid = intel_sdvo_get_analog_edid(connector);
if (edid != NULL) {
- struct intel_sdvo_connector *intel_sdvo_connector = to_intel_sdvo_connector(connector);
- bool monitor_is_digital = !!(edid->input & DRM_EDID_INPUT_DIGITAL);
- bool connector_is_digital = !!IS_TMDS(intel_sdvo_connector);
-
- if (connector_is_digital == monitor_is_digital) {
+ if (intel_sdvo_connector_matches_edid(to_intel_sdvo_connector(connector),
+ edid)) {
drm_mode_connector_update_edid_property(connector, edid);
drm_add_edid_modes(connector, edid);
}
--
1.7.5.4

View File

@ -1,13 +0,0 @@
diff --git a/drivers/gpu/drm/radeon/radeon_fence.c b/drivers/gpu/drm/radeon/radeon_fence.c
index 7fd4e3e..a488b50 100644
--- a/drivers/gpu/drm/radeon/radeon_fence.c
+++ b/drivers/gpu/drm/radeon/radeon_fence.c
@@ -263,7 +263,7 @@ retry:
*/
if (seq == rdev->fence_drv.last_seq && radeon_gpu_is_lockup(rdev)) {
/* good news we believe it's a lockup */
- WARN(1, "GPU lockup (waiting for 0x%08X last fence id 0x%08X)\n",
+ printk(KERN_WARNING "GPU lockup (waiting for 0x%08X last fence id 0x%08X)\n",
fence->seq, seq);
/* FIXME: what should we do ? marking everyone
* as signaled for now

File diff suppressed because it is too large Load Diff

View File

@ -1,4 +1,4 @@
From 6a4ca79652219cf22da800d990e5b46feaea1ad9 Mon Sep 17 00:00:00 2001
From 0a6cc45426fe3baaf231efd7efe4300fd879efc8 Mon Sep 17 00:00:00 2001
From: Jason Baron <jbaron@redhat.com>
Date: Mon, 24 Oct 2011 14:59:02 +1100
Subject: [PATCH] epoll: limit paths
@ -91,7 +91,7 @@ Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
3 files changed, 203 insertions(+), 25 deletions(-)
diff --git a/fs/eventpoll.c b/fs/eventpoll.c
index 4a53743..414ac74 100644
index b84fad9..414ac74 100644
--- a/fs/eventpoll.c
+++ b/fs/eventpoll.c
@@ -197,6 +197,12 @@ struct eventpoll {
@ -137,7 +137,7 @@ index 4a53743..414ac74 100644
.llseek = noop_llseek,
};
-/* Fast test to see if the file is an evenpoll file */
-/* Fast test to see if the file is an eventpoll file */
-static inline int is_file_epoll(struct file *f)
-{
- return f->f_op == &eventpoll_fops;
@ -449,7 +449,7 @@ index f362733..657ab55 100644
diff --git a/include/linux/fs.h b/include/linux/fs.h
index 277f497..93778e0 100644
index ba98668..d393a68 100644
--- a/include/linux/fs.h
+++ b/include/linux/fs.h
@@ -985,6 +985,7 @@ struct file {

View File

@ -1,43 +0,0 @@
The Power platform requires the partner info buffer to be page aligned
otherwise it will fail the partner info hcall with H_PARAMETER. Switch
from using kmalloc to allocate this buffer to __get_free_page to ensure
page alignment.
Signed-off-by: Brian King <brking@linux.vnet.ibm.com>
---
drivers/tty/hvc/hvcs.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff -puN drivers/tty/hvc/hvcs.c~hvcs_pi_buf_alloc drivers/tty/hvc/hvcs.c
--- linux-2.6/drivers/tty/hvc/hvcs.c~hvcs_pi_buf_alloc 2011-09-09 16:00:25.000000000 -0500
+++ linux-2.6-bjking1/drivers/tty/hvc/hvcs.c 2011-09-09 16:07:08.000000000 -0500
@@ -1532,7 +1532,7 @@ static int __devinit hvcs_initialize(voi
goto register_fail;
}
- hvcs_pi_buff = kmalloc(PAGE_SIZE, GFP_KERNEL);
+ hvcs_pi_buff = (unsigned long *) __get_free_page(GFP_KERNEL);
if (!hvcs_pi_buff) {
rc = -ENOMEM;
goto buff_alloc_fail;
@@ -1548,7 +1548,7 @@ static int __devinit hvcs_initialize(voi
return 0;
kthread_fail:
- kfree(hvcs_pi_buff);
+ free_page((unsigned long)hvcs_pi_buff);
buff_alloc_fail:
tty_unregister_driver(hvcs_tty_driver);
register_fail:
@@ -1597,7 +1597,7 @@ static void __exit hvcs_module_exit(void
kthread_stop(hvcs_task);
spin_lock(&hvcs_pi_lock);
- kfree(hvcs_pi_buff);
+ free_page((unsigned long)hvcs_pi_buff);
hvcs_pi_buff = NULL;
spin_unlock(&hvcs_pi_lock);
_

View File

@ -54,19 +54,19 @@ 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 2
%global baserelease 1
%global fedora_build %{baserelease}
# base_sublevel is the kernel version we're starting with and patching
# on top of -- for example, 2.6.22-rc7-git1 starts with a 2.6.21 base,
# which yields a base_sublevel of 21.
%define base_sublevel 1
%define base_sublevel 2
## If this is a released kernel ##
%if 0%{?released_kernel}
# Do we have a -stable update to apply?
%define stable_update 10
%define stable_update 1
# Is it a -stable RC?
%define stable_rc 0
# Set rpm version accordingly
@ -215,7 +215,7 @@ Summary: The Linux kernel
#
# (Uncomment the '#' and both spaces below to disable with_backports.)
#
# % define with_backports 0
%define with_backports 0
#######################################################################
%define make_target bzImage
@ -410,13 +410,6 @@ Summary: The Linux kernel
%define kernel_image_elf 1
%endif
%ifarch ia64
%define all_arch_configs kernel-%{version}-ia64*.config
%define image_install_path boot/efi/EFI/redhat
%define make_target compressed
%define kernel_image vmlinux.gz
%endif
%ifarch alpha alphaev56
%define all_arch_configs kernel-%{version}-alpha*.config
%define image_install_path boot
@ -555,7 +548,7 @@ Version: %{rpmversion}
Release: %{pkg_release}
# DO NOT CHANGE THE 'ExclusiveArch' LINE TO TEMPORARILY EXCLUDE AN ARCHITECTURE BUILD.
# SET %%nobuildarches (ABOVE) INSTEAD
ExclusiveArch: noarch %{all_x86} x86_64 ppc ppc64 ia64 %{sparc} s390 s390x alpha alphaev56 %{arm}
ExclusiveArch: noarch %{all_x86} x86_64 ppc ppc64 %{sparc} s390 s390x alpha alphaev56 %{arm}
ExclusiveOS: Linux
%kernel_reqprovconf
@ -564,7 +557,7 @@ ExclusiveOS: Linux
# List the packages used during the kernel build
#
BuildRequires: module-init-tools, patch >= 2.5.4, bash >= 2.03, sh-utils, tar
BuildRequires: bzip2, findutils, gzip, m4, perl, make >= 3.78, diffutils, gawk
BuildRequires: bzip2, xz, findutils, gzip, m4, perl, make >= 3.78, diffutils, gawk
BuildRequires: gcc >= 3.4.2, binutils >= 2.12, redhat-rpm-config
BuildRequires: net-tools
BuildRequires: xmlto, asciidoc
@ -589,7 +582,7 @@ BuildRequires: rpm-build >= 4.4.2.1-4
%define debuginfo_args --strict-build-id
%endif
Source0: ftp://ftp.kernel.org/pub/linux/kernel/v3.0/linux-%{kversion}.tar.bz2
Source0: ftp://ftp.kernel.org/pub/linux/kernel/v3.0/linux-%{kversion}.tar.xz
Source1: compat-wireless-%{cwversion}.tar.bz2
Source11: genkey
@ -613,8 +606,6 @@ Source51: config-powerpc32-generic
Source52: config-powerpc32-smp
Source53: config-powerpc64
Source60: config-ia64-generic
Source70: config-s390x
Source90: config-sparc64-generic
@ -641,11 +632,11 @@ Source2001: cpupower.config
# For a stable release kernel
%if 0%{?stable_update}
%if 0%{?stable_base}
%define stable_patch_00 patch-3.%{base_sublevel}.%{stable_base}.bz2
%define stable_patch_00 patch-3.%{base_sublevel}.%{stable_base}.xz
Patch00: %{stable_patch_00}
%endif
%if 0%{?stable_rc}
%define stable_patch_01 patch-3.%{base_sublevel}.%{stable_update}-rc%{stable_rc}.bz2
%define stable_patch_01 patch-3.%{base_sublevel}.%{stable_update}-rc%{stable_rc}.xz
Patch01: %{stable_patch_01}
%endif
@ -654,9 +645,9 @@ Patch01: %{stable_patch_01}
# near the top of this spec file.
%else
%if 0%{?rcrev}
Patch00: patch-3.%{upstream_sublevel}-rc%{rcrev}.bz2
Patch00: patch-3.%{upstream_sublevel}-rc%{rcrev}.xz
%if 0%{?gitrev}
Patch01: patch-3.%{upstream_sublevel}-rc%{rcrev}-git%{gitrev}.bz2
Patch01: patch-3.%{upstream_sublevel}-rc%{rcrev}-git%{gitrev}.xz
%endif
%else
# pre-{base_sublevel+1}-rc1 case
@ -691,8 +682,6 @@ Patch100: taint-vbox.patch
Patch160: linux-2.6-32bit-mmap-exec-randomization.patch
Patch161: linux-2.6-i386-nx-emulation.patch
Patch202: linux-2.6-debug-taint-vm.patch
Patch383: linux-2.6-defaults-aspm.patch
Patch390: linux-2.6-defaults-acpi-video.patch
@ -717,10 +706,6 @@ Patch700: linux-2.6-e1000-ich9-montevina.patch
Patch800: linux-2.6-crash-driver.patch
# Platform
Patch900: samsung-laptop-brightness-fixes-3.2.patch
Patch901: asus-laptop-3.2-backport.patch
# crypto/
# virt + ksm patches
@ -729,17 +714,10 @@ Patch1500: fix_xen_guest_on_old_EC2.patch
# DRM
#atch1700: drm-edid-try-harder-to-fix-up-broken-headers.patch
# nouveau + drm fixes
Patch1810: drm-nouveau-updates.patch
Patch1811: drm-nouveau-gf108.patch
# intel drm is all merged upstream
Patch1824: drm-intel-next.patch
# hush the i915 fbc noise
Patch1826: drm-i915-fbc-stfu.patch
# rhbz#729882, https://bugs.freedesktop.org/attachment.cgi?id=49069
Patch1827: drm-i915-sdvo-lvds-is-digital.patch
Patch1850: drm-lower-severity-radeon-lockup.diff
Patch1900: linux-2.6-intel-iommu-igfx.patch
@ -753,10 +731,6 @@ Patch2900: linux-2.6-v4l-dvb-update.patch
Patch2901: linux-2.6-v4l-dvb-experimental.patch
Patch2902: linux-2.6-v4l-dvb-uvcvideo-update.patch
Patch2905: media-dib0700-correct-error-message.patch
Patch3000: rcutree-avoid-false-quiescent-states.patch
# fs fixes
#rhbz 753346
@ -765,53 +739,31 @@ Patch3500: jbd-jbd2-validate-sb-s_first-in-journal_get_superblo.patch
# NFSv4
# patches headed upstream
Patch12010: add-appleir-usb-driver.patch
Patch12016: disable-i8042-check-on-apple-mac.patch
Patch12021: udlfb-bind-framebuffer-to-interface.patch
Patch12025: rcu-avoid-just-onlined-cpu-resched.patch
Patch12026: block-stray-block-put-after-teardown.patch
Patch12030: epoll-limit-paths.patch
Patch12031: HID-wacom-Set-input-bits-before-registration.patch
Patch12303: dmar-disable-when-ricoh-multifunction.patch
Patch13002: revert-efi-rtclock.patch
Patch13003: efi-dont-map-boot-services-on-32bit.patch
Patch13009: hvcs_pi_buf_alloc.patch
Patch20000: utrace.patch
# Flattened devicetree support
Patch21000: arm-omap-dt-compat.patch
Patch21001: arm-smsc-support-reading-mac-address-from-device-tree.patch
#rhbz #735946
Patch21020: 0001-mm-vmscan-Limit-direct-reclaim-for-higher-order-allo.patch
Patch21021: 0002-mm-Abort-reclaim-compaction-if-compaction-can-procee.patch
Patch21022: mm-do-not-stall-in-synchronous-compaction-for-THP-allocations.patch
#rhbz 748691
Patch21030: be2net-non-member-vlan-pkts-not-received-in-promisco.patch
Patch21031: benet-remove-bogus-unlikely-on-vlan-check.patch
Patch21040: x86-code-dump-fix-truncation.patch
#rhbz 728607
Patch21060: elantech.patch
#rhbz752176
Patch21080: sysfs-msi-irq-per-device.patch
#backport brcm80211 from 3.2-rc1
Patch21090: brcm80211.patch
Patch21091: bcma-brcmsmac-compat.patch
# rhbz 754907
Patch21100: cciss-fix-irqf-shared.patch
Patch21101: hpsa-add-irqf-shared.patch
#rhbz 731365
@ -821,27 +773,15 @@ Patch21225: pci-Rework-ASPM-disable-code.patch
Patch21226: pci-crs-blacklist.patch
#rhbz #757839
Patch21230: net-sky2-88e8059-fix-link-speed.patch
#rhbz 717735
Patch21045: nfs-client-freezer.patch
#rhbz 590880
Patch21046: alps.patch
#rhbz 741117
Patch21048: b44-Use-dev_kfree_skb_irq-in-b44_tx.patch
#rhbz 746097
Patch21049: tpm_tis-delay-after-aborting-cmd.patch
#rhbz 771006
Patch21050: thp-reduce-khugepaged-freezing-latency.patch
#rhbz 770233
Patch21065: Bluetooth-Add-support-for-BCM20702A0.patch
Patch21070: ext4-Support-check-none-nocheck-mount-options.patch
Patch21071: ext4-Fix-error-handling-on-inode-bitmap-corruption.patch
@ -865,10 +805,6 @@ Patch22100: msi-irq-sysfs-warning.patch
#rhbz 728740
Patch21076: rtl8192cu-Fix-WARNING-on-suspend-resume.patch
Patch21077: 01-block-add-and-use-scsi_blk_cmd_ioctl.patch
Patch21078: 02-block-fail-SCSI-passthrough-ioctls-on-partition-devs.patch
Patch21079: 03-dm-dont-fwd-ioctls-from-LVs-to-underlying-dev.patch
#rhbz 782686
Patch21082: procfs-parse-mount-options.patch
Patch21083: procfs-add-hidepid-and-gid-mount-options.patch
@ -877,9 +813,6 @@ Patch21084: proc-fix-null-pointer-deref-in-proc_pid_permission.patch
#rhbz 782681
Patch21085: proc-clean-up-and-fix-proc-pid-mem-handling.patch
#rhbz 782687
Patch21086: loop-prevent-information-leak-after-failed-read.patch
%endif
BuildRoot: %{_tmppath}/kernel-%{KVERREL}-root
@ -1172,7 +1105,8 @@ ApplyPatch()
%endif
case "$patch" in
*.bz2) bunzip2 < "$RPM_SOURCE_DIR/$patch" | $patch_command ${1+"$@"} ;;
*.gz) gunzip < "$RPM_SOURCE_DIR/$patch" | $patch_command ${1+"$@"} ;;
*.gz) gunzip < "$RPM_SOURCE_DIR/$patch" | $patch_command ${1+"$@"} ;;
*.xz) unxz < "$RPM_SOURCE_DIR/$patch" | $patch_command ${1+"$@"} ;;
*) $patch_command ${1+"$@"} < "$RPM_SOURCE_DIR/$patch" ;;
esac
}
@ -1428,9 +1362,6 @@ ApplyPatch linux-2.6-acpi-debug-infinite-loop.patch
ApplyPatch acpi-ensure-thermal-limits-match-cpu-freq.patch
ApplyPatch acpi-sony-nonvs-blacklist.patch
# Various low-impact patches to aid debugging.
ApplyPatch linux-2.6-debug-taint-vm.patch
#
# PCI
#
@ -1484,16 +1415,9 @@ ApplyPatch fix_xen_guest_on_old_EC2.patch
# DRM core
#ApplyPatch drm-edid-try-harder-to-fix-up-broken-headers.patch
# Nouveau DRM
ApplyOptionalPatch drm-nouveau-updates.patch
ApplyPatch drm-nouveau-gf108.patch
# Intel DRM
ApplyOptionalPatch drm-intel-next.patch
ApplyPatch drm-i915-fbc-stfu.patch
ApplyPatch drm-i915-sdvo-lvds-is-digital.patch
ApplyPatch drm-lower-severity-radeon-lockup.diff
ApplyPatch linux-2.6-intel-iommu-igfx.patch
@ -1507,22 +1431,12 @@ ApplyOptionalPatch linux-2.6-v4l-dvb-fixes.patch
ApplyOptionalPatch linux-2.6-v4l-dvb-update.patch
ApplyOptionalPatch linux-2.6-v4l-dvb-experimental.patch
# Platform fixes not sent for -stable
ApplyPatch samsung-laptop-brightness-fixes-3.2.patch
ApplyPatch asus-laptop-3.2-backport.patch
# Patches headed upstream
ApplyPatch rcutree-avoid-false-quiescent-states.patch
ApplyPatch disable-i8042-check-on-apple-mac.patch
ApplyPatch add-appleir-usb-driver.patch
ApplyPatch udlfb-bind-framebuffer-to-interface.patch
ApplyPatch epoll-limit-paths.patch
ApplyPatch rcu-avoid-just-onlined-cpu-resched.patch
ApplyPatch block-stray-block-put-after-teardown.patch
ApplyPatch HID-wacom-Set-input-bits-before-registration.patch
# rhbz#605888
ApplyPatch dmar-disable-when-ricoh-multifunction.patch
@ -1530,40 +1444,13 @@ ApplyPatch dmar-disable-when-ricoh-multifunction.patch
ApplyPatch revert-efi-rtclock.patch
ApplyPatch efi-dont-map-boot-services-on-32bit.patch
ApplyPatch hvcs_pi_buf_alloc.patch
ApplyPatch media-dib0700-correct-error-message.patch
# utrace.
ApplyPatch utrace.patch
#rhbz #735946
ApplyPatch 0001-mm-vmscan-Limit-direct-reclaim-for-higher-order-allo.patch
ApplyPatch 0002-mm-Abort-reclaim-compaction-if-compaction-can-procee.patch
ApplyPatch mm-do-not-stall-in-synchronous-compaction-for-THP-allocations.patch
#rhbz 748691
ApplyPatch be2net-non-member-vlan-pkts-not-received-in-promisco.patch
ApplyPatch benet-remove-bogus-unlikely-on-vlan-check.patch
#rhbz 736815
ApplyPatch x86-code-dump-fix-truncation.patch
#rhbz 728607
ApplyPatch elantech.patch
#rhbz 752176
ApplyPatch sysfs-msi-irq-per-device.patch
%if !%{with_backports}
#backport brcm80211 from 3.2-rc1
ApplyPatch brcm80211.patch
# Remove overlap between bcma/b43 and brcmsmac and reenable bcm4331
ApplyPatch bcma-brcmsmac-compat.patch
%endif
# rhbz 754907
ApplyPatch cciss-fix-irqf-shared.patch
ApplyPatch hpsa-add-irqf-shared.patch
#rhbz 731365
@ -1573,27 +1460,15 @@ ApplyPatch pci-Rework-ASPM-disable-code.patch
#ApplyPatch pci-crs-blacklist.patch
#rhbz #757839
ApplyPatch net-sky2-88e8059-fix-link-speed.patch
#rhbz 717735
ApplyPatch nfs-client-freezer.patch
#rhbz 590880
ApplyPatch alps.patch
#rhbz 741117
ApplyPatch b44-Use-dev_kfree_skb_irq-in-b44_tx.patch
#rhbz 746097
ApplyPatch tpm_tis-delay-after-aborting-cmd.patch
#rhbz 771006
ApplyPatch thp-reduce-khugepaged-freezing-latency.patch
#rhbz 770233
ApplyPatch Bluetooth-Add-support-for-BCM20702A0.patch
#rhbz 771058
ApplyPatch msi-irq-sysfs-warning.patch
@ -1608,11 +1483,6 @@ ApplyPatch KVM-x86-fix-missing-checks-in-syscall-emulation.patch
#rhbz 728740
ApplyPatch rtl8192cu-Fix-WARNING-on-suspend-resume.patch
#rhbz 769911
ApplyPatch 01-block-add-and-use-scsi_blk_cmd_ioctl.patch
ApplyPatch 02-block-fail-SCSI-passthrough-ioctls-on-partition-devs.patch
ApplyPatch 03-dm-dont-fwd-ioctls-from-LVs-to-underlying-dev.patch
#rhbz 782686
ApplyPatch procfs-parse-mount-options.patch
ApplyPatch procfs-add-hidepid-and-gid-mount-options.patch
@ -1621,9 +1491,6 @@ ApplyPatch proc-fix-null-pointer-deref-in-proc_pid_permission.patch
#rhbz 782681
ApplyPatch proc-clean-up-and-fix-proc-pid-mem-handling.patch
#rhbz 782687
ApplyPatch loop-prevent-information-leak-after-failed-read.patch
# END OF PATCH APPLICATIONS
%endif
@ -2399,6 +2266,9 @@ fi
# and build.
%changelog
* Thu Jan 19 2012 Dave Jones <davej@redhat.com> 3.2.1-1
- Rebase to Linux 3.2.1
* Thu Jan 19 2012 John W. Linville <linville@redhat.com>
- Pass the same make options to compat-wireless as to the base kernel

View File

@ -152,7 +152,7 @@ Main executable randomisation (PIE) : 12 bits (guessed)
struct vm_area_struct *find_vma(struct mm_struct *mm, unsigned long addr)
--- a/arch/x86/mm/mmap.c
+++ b/arch/x86/mm/mmap.c
@@ -124,13 +124,16 @@ static unsigned long mmap_legacy_base(void)
@@ -124,13 +124,19 @@ static unsigned long mmap_legacy_base(void)
*/
void arch_pick_mmap_layout(struct mm_struct *mm)
{
@ -163,9 +163,12 @@ Main executable randomisation (PIE) : 12 bits (guessed)
} else {
mm->mmap_base = mmap_base();
mm->get_unmapped_area = arch_get_unmapped_area_topdown;
+#ifdef CONFIG_X86_32
+ if (!(current->personality & READ_IMPLIES_EXEC)
+ && !(__supported_pte_mask & _PAGE_NX)
+ && mmap_is_ia32())
+ mm->get_unmapped_exec_area = arch_get_unmapped_exec_area;
+#endif
mm->unmap_area = arch_unmap_area_topdown;
}
}
@ -224,3 +227,25 @@ Main executable randomisation (PIE) : 12 bits (guessed)
if (new_addr & ~PAGE_MASK) {
ret = new_addr;
goto out;
diff --git a/arch/x86/kernel/process.c b/arch/x86/kernel/process.c
index 57d1868..29c0c35 100644
--- a/arch/x86/kernel/process.c
+++ b/arch/x86/kernel/process.c
@@ -669,6 +669,16 @@ unsigned long arch_align_stack(unsigned long sp)
unsigned long arch_randomize_brk(struct mm_struct *mm)
{
unsigned long range_end = mm->brk + 0x02000000;
- return randomize_range(mm->brk, range_end, 0) ? : mm->brk;
+ unsigned long bump = 0;
+#ifdef CONFIG_X86_32
+ /* in the case of NX emulation, shove the brk segment way out of the
+ way of the exec randomization area, since it can collide with
+ future allocations if not. */
+ if ( (mm->get_unmapped_exec_area == arch_get_unmapped_exec_area) &&
+ (mm->brk < 0x08000000) ) {
+ bump = (TASK_SIZE/6);
+ }
+#endif
+ return bump + (randomize_range(mm->brk, range_end, 0) ? : mm->brk);
}

View File

@ -1,51 +0,0 @@
diff --git a/mm/page_alloc.c b/mm/page_alloc.c
index 4e8985a..70d0853 100644
--- a/mm/page_alloc.c
+++ b/mm/page_alloc.c
@@ -318,6 +318,7 @@ static void bad_page(struct page *page)
current->comm, page_to_pfn(page));
dump_page(page);
+ print_modules();
dump_stack();
out:
/* Leave bad fields for debug, except PageBuddy could make trouble */
diff --git a/mm/slab.c b/mm/slab.c
index d96e223..6f8905b 100644
--- a/mm/slab.c
+++ b/mm/slab.c
@@ -1886,8 +1886,8 @@ static void check_poison_obj(struct kmem_cache *cachep, void *objp)
/* Print header */
if (lines == 0) {
printk(KERN_ERR
- "Slab corruption: %s start=%p, len=%d\n",
- cachep->name, realobj, size);
+ "Slab corruption (%s): %s start=%p, len=%d\n",
+ print_tainted(), cachep->name, realobj, size);
print_objinfo(cachep, objp, 0);
}
/* Hexdump the affected line */
@@ -2985,8 +2985,8 @@ static void check_slabp(struct kmem_cache *cachep, struct slab *slabp)
if (entries != cachep->num - slabp->inuse) {
bad:
printk(KERN_ERR "slab: Internal list corruption detected in "
- "cache '%s'(%d), slabp %p(%d). Hexdump:\n",
- cachep->name, cachep->num, slabp, slabp->inuse);
+ "cache '%s'(%d), slabp %p(%d). Tainted(%s). Hexdump:\n",
+ cachep->name, cachep->num, slabp, slabp->inuse, print_tainted());
for (i = 0;
i < sizeof(*slabp) + cachep->num * sizeof(kmem_bufctl_t);
i++) {
diff --git a/mm/slub.c b/mm/slub.c
index 35f351f..e7ccb39 100644
--- a/mm/slub.c
+++ b/mm/slub.c
@@ -472,7 +472,7 @@ static void slab_bug(struct kmem_cache *s, char *fmt, ...)
va_end(args);
printk(KERN_ERR "========================================"
"=====================================\n");
- printk(KERN_ERR "BUG %s: %s\n", s->name, buf);
+ printk(KERN_ERR "BUG %s (%s): %s\n", s->name, print_tainted(), buf);
printk(KERN_ERR "----------------------------------------"
"-------------------------------------\n\n");
}

View File

@ -1,11 +1,22 @@
From 802e6d8c8477a553a677b23a247d6d2638e01958 Mon Sep 17 00:00:00 2001
From: Dave Jones <davej@redhat.com>
Date: Wed, 26 Oct 2011 13:31:47 -0400
Subject: [PATCH] e1000e: ich9 montevina
This only showed up in one SDV (Montevina).
The PCIE slots don't seem to like network cards, so this is the only hope
to get networking working. It's never going upstream, but it's low impact
enough to carry just to keep those SDVs working.
---
drivers/net/ethernet/intel/e1000e/ich8lan.c | 6 ++++++
drivers/net/ethernet/intel/e1000e/netdev.c | 1 +
2 files changed, 7 insertions(+), 0 deletions(-)
--- linux-2.6.35.noarch/drivers/net/e1000e/ich8lan.c~ 2010-09-29 17:53:13.000000000 -0400
+++ linux-2.6.35.noarch/drivers/net/e1000e/ich8lan.c 2010-09-29 17:54:00.000000000 -0400
@@ -424,6 +424,12 @@ static s32 e1000_init_phy_params_ich8lan
diff --git a/drivers/net/ethernet/intel/e1000e/ich8lan.c b/drivers/net/ethernet/intel/e1000e/ich8lan.c
index 6a17c62..0e40975 100644
--- a/drivers/net/ethernet/intel/e1000e/ich8lan.c
+++ b/drivers/net/ethernet/intel/e1000e/ich8lan.c
@@ -452,6 +452,12 @@ static s32 e1000_init_phy_params_ich8lan(struct e1000_hw *hw)
/* Verify phy id */
switch (phy->id) {
@ -18,9 +29,11 @@ enough to carry just to keep those SDVs working.
case IGP03E1000_E_PHY_ID:
phy->type = e1000_phy_igp_3;
phy->autoneg_mask = AUTONEG_ADVERTISE_SPEED_DEFAULT;
--- linux-2.6.35.noarch/drivers/net/e1000e/netdev.c~ 2010-09-29 17:54:07.000000000 -0400
+++ linux-2.6.35.noarch/drivers/net/e1000e/netdev.c 2010-09-29 17:54:29.000000000 -0400
@@ -5994,6 +5994,7 @@ static DEFINE_PCI_DEVICE_TABLE(e1000_pci
diff --git a/drivers/net/ethernet/intel/e1000e/netdev.c b/drivers/net/ethernet/intel/e1000e/netdev.c
index a855db1..edac30b 100644
--- a/drivers/net/ethernet/intel/e1000e/netdev.c
+++ b/drivers/net/ethernet/intel/e1000e/netdev.c
@@ -6359,6 +6359,7 @@ static DEFINE_PCI_DEVICE_TABLE(e1000_pci_tbl) = {
{ PCI_VDEVICE(INTEL, E1000_DEV_ID_ICH9_IGP_M), board_ich9lan },
{ PCI_VDEVICE(INTEL, E1000_DEV_ID_ICH9_IGP_M_AMT), board_ich9lan },
{ PCI_VDEVICE(INTEL, E1000_DEV_ID_ICH9_IGP_M_V), board_ich9lan },
@ -28,3 +41,6 @@ enough to carry just to keep those SDVs working.
{ PCI_VDEVICE(INTEL, E1000_DEV_ID_ICH10_R_BM_LM), board_ich9lan },
{ PCI_VDEVICE(INTEL, E1000_DEV_ID_ICH10_R_BM_LF), board_ich9lan },
--
1.7.6.4

View File

@ -592,25 +592,3 @@
mmu_notifier_invalidate_range_start(mm, start, end);
if (is_vm_hugetlb_page(vma))
hugetlb_change_protection(vma, start, end, vma->vm_page_prot);
diff --git a/arch/x86/kernel/process.c b/arch/x86/kernel/process.c
index 57d1868..29c0c35 100644
--- a/arch/x86/kernel/process.c
+++ b/arch/x86/kernel/process.c
@@ -669,6 +669,16 @@ unsigned long arch_align_stack(unsigned long sp)
unsigned long arch_randomize_brk(struct mm_struct *mm)
{
unsigned long range_end = mm->brk + 0x02000000;
- return randomize_range(mm->brk, range_end, 0) ? : mm->brk;
+ unsigned long bump = 0;
+#ifdef CONFIG_X86_32
+ /* in the case of NX emulation, shove the brk segment way out of the
+ way of the exec randomization area, since it can collide with
+ future allocations if not. */
+ if ( (mm->get_unmapped_exec_area == arch_get_unmapped_exec_area) &&
+ (mm->brk < 0x08000000) ) {
+ bump = (TASK_SIZE/6);
+ }
+#endif
+ return bump + (randomize_range(mm->brk, range_end, 0) ? : mm->brk);
}

View File

@ -1,6 +1,7 @@
Subject: [PATCH] [intel_iommu] Default to igfx_off
From 602e1f209dd983e40d989e871cd253e8187899b8 Mon Sep 17 00:00:00 2001
From: drago01 <drago01@gmail.com>
To: fedora-kernel-list <fedora-kernel-list@redhat.com>
Date: Wed, 26 Oct 2011 13:37:27 -0400
Subject: [PATCH] Default to igfx_off
This option seems to causes way to many issues, it is
being investigated by Intel's chipset team for months now and
@ -16,14 +17,14 @@ Signed-off-by: Adel Gadllah <adel.gadllah@gmail.com>
Reviewed-by: Adam Jackson <ajax@redhat.com>
---
Documentation/kernel-parameters.txt | 11 +++++------
drivers/pci/intel-iommu.c | 9 +++++----
drivers/iommu/intel-iommu.c | 9 +++++----
2 files changed, 10 insertions(+), 10 deletions(-)
diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt
index e7848a0..9914485 100644
index 81c287f..ee5693b 100644
--- a/Documentation/kernel-parameters.txt
+++ b/Documentation/kernel-parameters.txt
@@ -992,12 +992,11 @@ and is between 256 and 4096 characters. It is defined in the file
@@ -1014,12 +1014,11 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
Enable intel iommu driver.
off
Disable intel iommu driver.
@ -40,22 +41,22 @@ index e7848a0..9914485 100644
+ mapped as normal device.
forcedac [x86_64]
With this option iommu will not optimize to look
for io virtual address below 32 bit forcing dual
diff --git a/drivers/pci/intel-iommu.c b/drivers/pci/intel-iommu.c
index 4173125..8f36786 100644
for io virtual address below 32-bit forcing dual
diff --git a/drivers/iommu/intel-iommu.c b/drivers/iommu/intel-iommu.c
index bdc447f..240db6b 100644
--- a/drivers/iommu/intel-iommu.c
+++ b/drivers/iommu/intel-iommu.c
@@ -340,7 +340,8 @@ int dmar_disabled = 0;
int dmar_disabled = 1;
#endif /*CONFIG_DMAR_DEFAULT_ON*/
@@ -408,7 +408,8 @@ int dmar_disabled = 1;
int intel_iommu_enabled = 0;
EXPORT_SYMBOL_GPL(intel_iommu_enabled);
-static int dmar_map_gfx = 1;
+/* disabled by default; causes way too many issues */
+static int dmar_map_gfx = 0;
static int dmar_forcedac;
static int intel_iommu_strict;
@@ -361,10 +362,10 @@ static int __init intel_iommu_setup(char *str)
static int intel_iommu_superpage = 1;
@@ -433,10 +434,10 @@ static int __init intel_iommu_setup(char *str)
} else if (!strncmp(str, "off", 3)) {
dmar_disabled = 1;
printk(KERN_INFO "Intel-IOMMU: disabled\n");
@ -70,9 +71,5 @@ index 4173125..8f36786 100644
printk(KERN_INFO
"Intel-IOMMU: Forcing DAC for PCI devices\n");
--
1.6.6.1
_______________________________________________
kernel mailing list
kernel@lists.fedoraproject.org
https://admin.fedoraproject.org/mailman/listinfo/kernel
1.7.7.4

View File

@ -1,41 +0,0 @@
From 3bb9068278ea524581237abadd41377a14717e7d Mon Sep 17 00:00:00 2001
From: Dmitry Monakhov <dmonakhov@openvz.org>
Date: Wed, 16 Nov 2011 09:21:48 +0100
Subject: [PATCH] loop: prevent information leak after failed read
If read was not fully successful we have to fail whole bio to prevent
information leak of old pages
##Testcase_begin
dd if=/dev/zero of=./file bs=1M count=1
losetup /dev/loop0 ./file -o 4096
truncate -s 0 ./file
# OOps loop offset is now beyond i_size, so read will silently fail.
# So bio's pages would not be cleared, may which result in information leak.
hexdump -C /dev/loop0
##testcase_end
Signed-off-by: Dmitry Monakhov <dmonakhov@openvz.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
---
drivers/block/loop.c | 3 ++-
1 files changed, 2 insertions(+), 1 deletions(-)
diff --git a/drivers/block/loop.c b/drivers/block/loop.c
index 3d80682..0d56739 100644
--- a/drivers/block/loop.c
+++ b/drivers/block/loop.c
@@ -372,7 +372,8 @@ do_lo_receive(struct loop_device *lo,
if (retval < 0)
return retval;
-
+ if (retval != bvec->bv_len)
+ return -EIO;
return 0;
}
--
1.7.7.5

View File

@ -1,103 +0,0 @@
From: Olivier Grenie <olivier.grenie@dibcom.fr>
Date: Thu, 4 Aug 2011 16:10:03 +0000 (-0300)
Subject: [media] dib0700: correct error message
X-Git-Tag: next-20110927~67^2~4^2~223
X-Git-Url: http://git.kernel.org/?p=linux%2Fkernel%2Fgit%2Fnext%2Flinux-next.git;a=commitdiff_plain;h=680417bb318adc5f1f8f392730776176fbcdedd8
[media] dib0700: correct error message
The goal of this patch is to correct a previous patch. In case of error,
the err() function should be used instead of dprintk() function.
[mchehab@redhat.com: as I've replaced dprintk by deb_info, on the the
previous patch, to avoid breaking bisect, I had to fix a merge conflict
on this one]
Signed-off-by: Olivier Grenie <olivier.grenie@dibcom.fr>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
---
diff --git a/drivers/media/dvb/dvb-usb/dib0700_core.c b/drivers/media/dvb/dvb-usb/dib0700_core.c
index a224e94..b693ed1 100644
--- a/drivers/media/dvb/dvb-usb/dib0700_core.c
+++ b/drivers/media/dvb/dvb-usb/dib0700_core.c
@@ -31,7 +31,7 @@ int dib0700_get_version(struct dvb_usb_device *d, u32 *hwversion,
int ret;
if (mutex_lock_interruptible(&d->usb_mutex) < 0) {
- deb_info("could not acquire lock");
+ err("could not acquire lock");
return 0;
}
@@ -117,7 +117,7 @@ int dib0700_set_gpio(struct dvb_usb_device *d, enum dib07x0_gpios gpio, u8 gpio_
int ret;
if (mutex_lock_interruptible(&d->usb_mutex) < 0) {
- deb_info("could not acquire lock");
+ err("could not acquire lock");
return 0;
}
@@ -138,7 +138,7 @@ static int dib0700_set_usb_xfer_len(struct dvb_usb_device *d, u16 nb_ts_packets)
if (st->fw_version >= 0x10201) {
if (mutex_lock_interruptible(&d->usb_mutex) < 0) {
- deb_info("could not acquire lock");
+ err("could not acquire lock");
return 0;
}
@@ -227,7 +227,7 @@ static int dib0700_i2c_xfer_new(struct i2c_adapter *adap, struct i2c_msg *msg,
} else {
/* Write request */
if (mutex_lock_interruptible(&d->usb_mutex) < 0) {
- deb_info("could not acquire lock");
+ err("could not acquire lock");
return 0;
}
st->buf[0] = REQUEST_NEW_I2C_WRITE;
@@ -273,7 +273,7 @@ static int dib0700_i2c_xfer_legacy(struct i2c_adapter *adap,
if (mutex_lock_interruptible(&d->i2c_mutex) < 0)
return -EAGAIN;
if (mutex_lock_interruptible(&d->usb_mutex) < 0) {
- deb_info("could not acquire lock");
+ err("could not acquire lock");
return 0;
}
@@ -368,7 +368,7 @@ static int dib0700_set_clock(struct dvb_usb_device *d, u8 en_pll,
int ret;
if (mutex_lock_interruptible(&d->usb_mutex) < 0) {
- deb_info("could not acquire lock");
+ err("could not acquire lock");
return 0;
}
@@ -400,7 +400,7 @@ int dib0700_set_i2c_speed(struct dvb_usb_device *d, u16 scl_kHz)
return -EINVAL;
if (mutex_lock_interruptible(&d->usb_mutex) < 0) {
- deb_info("could not acquire lock");
+ err("could not acquire lock");
return 0;
}
@@ -560,7 +560,7 @@ int dib0700_streaming_ctrl(struct dvb_usb_adapter *adap, int onoff)
}
if (mutex_lock_interruptible(&adap->dev->usb_mutex) < 0) {
- deb_info("could not acquire lock");
+ err("could not acquire lock");
return 0;
}
@@ -610,7 +610,7 @@ int dib0700_change_protocol(struct rc_dev *rc, u64 rc_type)
int new_proto, ret;
if (mutex_lock_interruptible(&d->usb_mutex) < 0) {
- deb_info("could not acquire lock");
+ err("could not acquire lock");
return 0;
}

View File

@ -1,42 +0,0 @@
commit 27d240fdae2808d727ad9ce48ec029731a457524
Author: stephen hemminger <shemminger@vyatta.com>
Date: Fri Nov 4 12:17:17 2011 +0000
sky2: fix regression on Yukon Optima
[ backport to 3.1 ]
Changes to support other Optima types, introduced an accidental
regression that caused 88E8059 to come up in 10Mbit/sec.
The Yukon Optima supports a reverse auto-negotiation feature that
was incorrectly setup, and not needed. The feature could be used to
allow wake-on-lan at higher speeds. But doing it correctly would require
other changes to initialization.
Reported-by: Pavel Mateja <pavel@netsafe.cz>
Signed-off-by: Stephen Hemminger <shemminger@vyatta.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
diff --git a/drivers/net/ethernet/marvell/sky2.c b/drivers/net/ethernet/marvell/sky2.c
index cbd026f..fdc6c39 100644
--- a/drivers/net/sky2.c
+++ b/drivers/net/sky2.c
@@ -366,17 +366,6 @@ static void sky2_phy_init(struct sky2_hw *hw, unsigned port)
gm_phy_write(hw, port, PHY_MARV_FE_SPEC_2, spec);
}
} else {
- if (hw->chip_id >= CHIP_ID_YUKON_OPT) {
- u16 ctrl2 = gm_phy_read(hw, port, PHY_MARV_EXT_CTRL_2);
-
- /* enable PHY Reverse Auto-Negotiation */
- ctrl2 |= 1u << 13;
-
- /* Write PHY changes (SW-reset must follow) */
- gm_phy_write(hw, port, PHY_MARV_EXT_CTRL_2, ctrl2);
- }
-
-
/* disable energy detect */
ctrl &= ~PHY_M_PC_EN_DET_MSK;

View File

@ -1,106 +1,4 @@
@@ -, +, @@
fs/cifs/transport.c | 3 ++-
include/linux/freezer.h | 19 +++++++++++++++++--
2 files changed, 19 insertions(+), 3 deletions(-)
--- a/fs/cifs/transport.c
+++ a/fs/cifs/transport.c
@@ -26,6 +26,7 @@
#include <linux/wait.h>
#include <linux/net.h>
#include <linux/delay.h>
+#include <linux/freezer.h>
#include <asm/uaccess.h>
#include <asm/processor.h>
#include <linux/mempool.h>
@@ -324,7 +325,7 @@ wait_for_response(struct TCP_Server_Info *server, struct mid_q_entry *midQ)
{
int error;
- error = wait_event_killable(server->response_q,
+ error = wait_event_freezekillable(server->response_q,
midQ->midState != MID_REQUEST_SUBMITTED);
if (error < 0)
return -ERESTARTSYS;
--- a/include/linux/freezer.h
+++ a/include/linux/freezer.h
@@ -134,10 +134,25 @@ static inline void set_freezable_with_signal(void)
}
/*
- * Freezer-friendly wrappers around wait_event_interruptible() and
- * wait_event_interruptible_timeout(), originally defined in <linux/wait.h>
+ * Freezer-friendly wrappers around wait_event_interruptible(),
+ * wait_event_killable() and wait_event_interruptible_timeout(), originally
+ * defined in <linux/wait.h>
*/
+#define wait_event_freezekillable(wq, condition) \
+({ \
+ int __retval; \
+ do { \
+ __retval = wait_event_killable(wq, \
+ (condition) || freezing(current)); \
+ if (__retval && !freezing(current)) \
+ break; \
+ else if (!(condition)) \
+ __retval = -ERESTARTSYS; \
+ } while (try_to_freeze()); \
+ __retval; \
+})
+
#define wait_event_freezable(wq, condition) \
({ \
int __retval; \
include/linux/freezer.h | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
--- a/include/linux/freezer.h
+++ a/include/linux/freezer.h
@@ -143,7 +143,7 @@ static inline void set_freezable_with_signal(void)
({ \
int __retval; \
do { \
- __retval = wait_event_killable(wq, \
+ __retval = wait_event_killable(wq, \
(condition) || freezing(current)); \
if (__retval && !freezing(current)) \
break; \
include/linux/freezer.h | 3 +++
1 files changed, 3 insertions(+), 0 deletions(-)
--- a/include/linux/freezer.h
+++ a/include/linux/freezer.h
@@ -203,6 +203,9 @@ static inline void set_freezable_with_signal(void) {}
#define wait_event_freezable_timeout(wq, condition, timeout) \
wait_event_interruptible_timeout(wq, condition, timeout)
+#define wait_event_freezekillable(wq, condition) \
+ wait_event_killable(wq, condition)
+
#endif /* !CONFIG_FREEZER */
#endif /* FREEZER_H_INCLUDED */
description on Rafael's request.]
include/linux/freezer.h | 11 +++--------
1 files changed, 3 insertions(+), 8 deletions(-)
--- a/include/linux/freezer.h
+++ a/include/linux/freezer.h
@@ -142,14 +142,9 @@ static inline void set_freezable_with_signal(void)
#define wait_event_freezekillable(wq, condition) \
({ \
int __retval; \
- do { \
- __retval = wait_event_killable(wq, \
- (condition) || freezing(current)); \
- if (__retval && !freezing(current)) \
- break; \
- else if (!(condition)) \
- __retval = -ERESTARTSYS; \
- } while (try_to_freeze()); \
+ freezer_do_not_count(); \
+ __retval = wait_event_killable(wq, (condition)); \
+ freezer_count(); \
__retval; \
})
fs/nfs/inode.c | 3 ++-
fs/nfs/nfs3proc.c | 3 ++-
fs/nfs/nfs4proc.c | 5 +++--
@ -156,7 +54,7 @@
#include "nfs4_fs.h"
#include "delegation.h"
@@ -244,7 +245,7 @@ static int nfs4_delay(struct rpc_clnt *clnt, long *timeout)
@@ -241,7 +242,7 @@ static int nfs4_delay(struct rpc_clnt *clnt, long *timeout)
*timeout = NFS4_POLL_RETRY_MIN;
if (*timeout > NFS4_POLL_RETRY_MAX)
*timeout = NFS4_POLL_RETRY_MAX;
@ -165,7 +63,7 @@
if (fatal_signal_pending(current))
res = -ERESTARTSYS;
*timeout <<= 1;
@@ -3970,7 +3971,7 @@ int nfs4_proc_delegreturn(struct inode *inode, struct rpc_cred *cred, const nfs4
@@ -3950,7 +3951,7 @@ int nfs4_proc_delegreturn(struct inode *inode, struct rpc_cred *cred, const nfs4
static unsigned long
nfs4_set_lock_task_retry(unsigned long timeout)
{
@ -195,7 +93,7 @@
return res;
--- a/include/linux/freezer.h
+++ a/include/linux/freezer.h
@@ -134,6 +134,29 @@ static inline void set_freezable_with_signal(void)
@@ -135,6 +135,29 @@ static inline void set_freezable_with_signal(void)
}
/*
@ -225,7 +123,7 @@
* Freezer-friendly wrappers around wait_event_interruptible(),
* wait_event_killable() and wait_event_interruptible_timeout(), originally
* defined in <linux/wait.h>
@@ -192,6 +215,11 @@ static inline int freezer_should_skip(struct task_struct *p) { return 0; }
@@ -194,6 +217,11 @@ static inline int freezer_should_skip(struct task_struct *p) { return 0; }
static inline void set_freezable(void) {}
static inline void set_freezable_with_signal(void) {}
@ -260,7 +158,7 @@
1 files changed, 18 insertions(+), 3 deletions(-)
--- a/include/linux/freezer.h
+++ a/include/linux/freezer.h
@@ -140,18 +140,33 @@ static inline void set_freezable_with_signal(void)
@@ -141,18 +141,33 @@ static inline void set_freezable_with_signal(void)
* while in this function.
*/

View File

@ -1,47 +0,0 @@
rcu: Avoid having just-onlined CPU resched itself when RCU is idle
CPUs set rdp->qs_pending when coming online to resolve races with
grace-period start. However, this means that if RCU is idle, the
just-onlined CPU might needlessly send itself resched IPIs. Adjust
the online-CPU initialization to avoid this, and also to correctly
cause the CPU to respond to the current grace period if needed.
Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
---
kernel/rcutree.c | 13 +++++++++----
1 files changed, 9 insertions(+), 4 deletions(-)
diff --git a/kernel/rcutree.c b/kernel/rcutree.c
index ba06207..472d6b2 100644
--- a/kernel/rcutree.c
+++ b/kernel/rcutree.c
@@ -1865,8 +1865,6 @@ rcu_init_percpu_data(int cpu, struct rcu_state *rsp, int preemptible)
/* Set up local state, ensuring consistent view of global state. */
raw_spin_lock_irqsave(&rnp->lock, flags);
- rdp->passed_quiesc = 0; /* We could be racing with new GP, */
- rdp->qs_pending = 1; /* so set up to respond to current GP. */
rdp->beenonline = 1; /* We have now been online. */
rdp->preemptible = preemptible;
rdp->qlen_last_fqs_check = 0;
@@ -1891,8 +1889,15 @@ rcu_init_percpu_data(int cpu, struct rcu_state *rsp, int preemptible)
rnp->qsmaskinit |= mask;
mask = rnp->grpmask;
if (rnp == rdp->mynode) {
- rdp->gpnum = rnp->completed; /* if GP in progress... */
- rdp->completed = rnp->completed;
+ /*
+ * If there is a grace period in progress, we will
+ * set up to wait for it next time we run the
+ * RCU core code.
+ */
+ rdp->gpnum = rnp->completed;
+ rdp->completed = rnp->completed;
+ rdp->passed_quiesc = 0;
+ rdp->qs_pending = 0;
rdp->passed_quiesc_completed = rnp->completed - 1;
}
raw_spin_unlock(&rnp->lock); /* irqs already disabled. */
--
1.7.6

View File

@ -1,67 +0,0 @@
diff --git a/kernel/rcutree.c b/kernel/rcutree.c
index ba06207..c38a882 100644
--- a/kernel/rcutree.c
+++ b/kernel/rcutree.c
@@ -1476,9 +1476,6 @@ static void rcu_process_callbacks(struct softirq_action *unused)
&__get_cpu_var(rcu_sched_data));
__rcu_process_callbacks(&rcu_bh_state, &__get_cpu_var(rcu_bh_data));
rcu_preempt_process_callbacks();
-
- /* If we are last CPU on way to dyntick-idle mode, accelerate it. */
- rcu_needs_cpu_flush();
}
/*
diff --git a/kernel/rcutree.h b/kernel/rcutree.h
index 01b2ccd..795f7fc 100644
--- a/kernel/rcutree.h
+++ b/kernel/rcutree.h
@@ -450,7 +450,6 @@ static int rcu_preempt_needs_cpu(int cpu);
static void __cpuinit rcu_preempt_init_percpu_data(int cpu);
static void rcu_preempt_send_cbs_to_online(void);
static void __init __rcu_init_preempt(void);
-static void rcu_needs_cpu_flush(void);
static void rcu_initiate_boost(struct rcu_node *rnp, unsigned long flags);
static void rcu_preempt_boost_start_gp(struct rcu_node *rnp);
static void invoke_rcu_callbacks_kthread(void);
diff --git a/kernel/rcutree_plugin.h b/kernel/rcutree_plugin.h
index 8aafbb8..b0254de 100644
--- a/kernel/rcutree_plugin.h
+++ b/kernel/rcutree_plugin.h
@@ -1907,15 +1907,6 @@ int rcu_needs_cpu(int cpu)
return rcu_needs_cpu_quick_check(cpu);
}
-/*
- * Check to see if we need to continue a callback-flush operations to
- * allow the last CPU to enter dyntick-idle mode. But fast dyntick-idle
- * entry is not configured, so we never do need to.
- */
-static void rcu_needs_cpu_flush(void)
-{
-}
-
#else /* #if !defined(CONFIG_RCU_FAST_NO_HZ) */
#define RCU_NEEDS_CPU_FLUSHES 5
@@ -1991,20 +1982,4 @@ int rcu_needs_cpu(int cpu)
return c;
}
-/*
- * Check to see if we need to continue a callback-flush operations to
- * allow the last CPU to enter dyntick-idle mode.
- */
-static void rcu_needs_cpu_flush(void)
-{
- int cpu = smp_processor_id();
- unsigned long flags;
-
- if (per_cpu(rcu_dyntick_drain, cpu) <= 0)
- return;
- local_irq_save(flags);
- (void)rcu_needs_cpu(cpu);
- local_irq_restore(flags);
-}
-
#endif /* #else #if !defined(CONFIG_RCU_FAST_NO_HZ) */

View File

@ -1,8 +1,3 @@
From e234ca17f2d5ce23606fceef2df6c02f8555547e Mon Sep 17 00:00:00 2001
From: Josh Boyer <jwboyer@redhat.com>
Date: Wed, 11 Jan 2012 13:35:33 -0500
Subject: [PATCH] rtl8192cu: Fix WARNING on suspend/resume
A recent LKML thread (http://lkml.indiana.edu/hypermail/linux/kernel/1112.3/00965.html)
discusses warnings that occur during a suspend/resume cycle. The driver
attempts to read the firmware file before userspace is ready, leading to the
@ -18,6 +13,8 @@ through a suspend/resume cycle, and does not have to be reread.
This patch should fix the bug reported in
https://bugzilla.redhat.com/show_bug.cgi?id=771002.
Note: This patch also touches rtl8192ce as the "firmware" loaded message
is now printed in the wrong place.
Note: This patch also touches rtl8192ce as the "firmware" loaded message
is now printed in the wrong place.
@ -27,18 +24,15 @@ Signed-off-by: Larry Finger <Larry.Finger@xxxxxxxxxxxx>
Cc: Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx>
Cc: Stable <stable@xxxxxxxxxxxxxxx>
Backported to Fedora 3.1.x.
---
drivers/net/wireless/rtlwifi/rtl8192c/fw_common.c | 1 -
drivers/net/wireless/rtlwifi/rtl8192ce/sw.c | 1 +
drivers/net/wireless/rtlwifi/rtl8192cu/sw.c | 58 +++++++++++++++++----
3 files changed, 49 insertions(+), 11 deletions(-)
diff --git a/drivers/net/wireless/rtlwifi/rtl8192c/fw_common.c b/drivers/net/wireless/rtlwifi/rtl8192c/fw_common.c
index 49a064b..e3c4ac7 100644
--- a/drivers/net/wireless/rtlwifi/rtl8192c/fw_common.c
+++ b/drivers/net/wireless/rtlwifi/rtl8192c/fw_common.c
@@ -226,7 +226,6 @@ int rtl92c_download_fw(struct ieee80211_hw *hw)
--- linux-2.6/drivers/net/wireless/rtlwifi/rtl8192c/fw_common.c 2012-01-13 13:07:58.830625006 -0500
+++ linux-2.6/drivers/net/wireless/rtlwifi/rtl8192c/fw_common.c 2012-01-13 13:08:06.825439927 -0500
@@ -227,7 +227,6 @@ int rtl92c_download_fw(struct ieee80211_
u32 fwsize;
enum version_8192c version = rtlhal->version;
@ -46,11 +40,9 @@ index 49a064b..e3c4ac7 100644
if (!rtlhal->pfirmware)
return 1;
diff --git a/drivers/net/wireless/rtlwifi/rtl8192ce/sw.c b/drivers/net/wireless/rtlwifi/rtl8192ce/sw.c
index 373dc78..9c3a8f1 100644
--- a/drivers/net/wireless/rtlwifi/rtl8192ce/sw.c
+++ b/drivers/net/wireless/rtlwifi/rtl8192ce/sw.c
@@ -171,6 +171,7 @@ int rtl92c_init_sw_vars(struct ieee80211_hw *hw)
--- linux-2.6/drivers/net/wireless/rtlwifi/rtl8192ce/sw.c
+++ linux-2.6/drivers/net/wireless/rtlwifi/rtl8192ce/sw.c
@@ -186,6 +186,7 @@ int rtl92c_init_sw_vars(struct ieee80211
memcpy(rtlpriv->rtlhal.pfirmware, firmware->data, firmware->size);
rtlpriv->rtlhal.fwsize = firmware->size;
release_firmware(firmware);
@ -58,21 +50,18 @@ index 373dc78..9c3a8f1 100644
return 0;
}
diff --git a/drivers/net/wireless/rtlwifi/rtl8192cu/sw.c b/drivers/net/wireless/rtlwifi/rtl8192cu/sw.c
index ef63c0d..f4230dd 100644
--- a/drivers/net/wireless/rtlwifi/rtl8192cu/sw.c
+++ b/drivers/net/wireless/rtlwifi/rtl8192cu/sw.c
@@ -42,6 +42,9 @@
#include "led.h"
--- linux-2.6/drivers/net/wireless/rtlwifi/rtl8192cu/sw.c
+++ linux-2.6/drivers/net/wireless/rtlwifi/rtl8192cu/sw.c
@@ -43,6 +43,8 @@
#include "hw.h"
#include <linux/vmalloc.h>
#include <linux/module.h>
+#include <linux/atomic.h>
+#include <linux/types.h>
+
MODULE_AUTHOR("Georgia <georgia@realtek.com>");
MODULE_AUTHOR("Ziv Huang <ziv_huang@realtek.com>");
@@ -50,6 +53,10 @@ MODULE_LICENSE("GPL");
@@ -51,6 +53,10 @@ MODULE_LICENSE("GPL");
MODULE_DESCRIPTION("Realtek 8192C/8188C 802.11n USB wireless");
MODULE_FIRMWARE("rtlwifi/rtl8192cufw.bin");
@ -83,10 +72,10 @@ index ef63c0d..f4230dd 100644
static int rtl92cu_init_sw_vars(struct ieee80211_hw *hw)
{
struct rtl_priv *rtlpriv = rtl_priv(hw);
@@ -60,12 +67,21 @@ static int rtl92cu_init_sw_vars(struct ieee80211_hw *hw)
rtlpriv->dm.dm_flag = 0;
rtlpriv->dm.disable_framebursting = 0;
@@ -62,12 +68,21 @@ static int rtl92cu_init_sw_vars(struct i
rtlpriv->dm.disable_framebursting = false;
rtlpriv->dm.thermalvalue = 0;
rtlpriv->dbg.global_debuglevel = rtlpriv->cfg->mod_params->debug;
- rtlpriv->rtlhal.pfirmware = vmalloc(0x4000);
- if (!rtlpriv->rtlhal.pfirmware) {
+
@ -107,7 +96,7 @@ index ef63c0d..f4230dd 100644
/* request fw */
err = request_firmware(&firmware, rtlpriv->cfg->fw_name,
rtlpriv->io.dev);
@@ -80,9 +96,14 @@ static int rtl92cu_init_sw_vars(struct ieee80211_hw *hw)
@@ -82,9 +97,14 @@ static int rtl92cu_init_sw_vars(struct i
release_firmware(firmware);
return 1;
}
@ -123,7 +112,7 @@ index ef63c0d..f4230dd 100644
return 0;
}
@@ -91,12 +112,30 @@ static void rtl92cu_deinit_sw_vars(struct ieee80211_hw *hw)
@@ -93,12 +113,30 @@ static void rtl92cu_deinit_sw_vars(struc
{
struct rtl_priv *rtlpriv = rtl_priv(hw);
@ -156,7 +145,7 @@ index ef63c0d..f4230dd 100644
static struct rtl_hal_ops rtl8192cu_hal_ops = {
.init_sw_vars = rtl92cu_init_sw_vars,
.deinit_sw_vars = rtl92cu_deinit_sw_vars,
@@ -338,11 +377,10 @@ static struct usb_driver rtl8192cu_driver = {
@@ -374,11 +412,10 @@ static struct usb_driver rtl8192cu_drive
.disconnect = rtl_usb_disconnect,
.id_table = rtl8192c_usb_ids,
@ -172,6 +161,3 @@ index ef63c0d..f4230dd 100644
#ifdef CONFIG_AUTOSUSPEND
.supports_autosuspend = 1,
#endif
--
1.7.7.5

View File

@ -1,238 +0,0 @@
From: Jason Stubbs <jasonbstubbs@gmail.com>
Date: Tue, 20 Sep 2011 16:16:13 +0000 (-0700)
Subject: Platform: Brightness quirk for samsung laptop driver
X-Git-Tag: v3.2-rc1~111^2~41
X-Git-Url: http://git.kernel.org/?p=linux%2Fkernel%2Fgit%2Ftorvalds%2Flinux-2.6.git;a=commitdiff_plain;h=ac080523141d5bfa5f60ef2436480f645f915e9c
Platform: Brightness quirk for samsung laptop driver
On some Samsung laptops the brightness regulation works slightly different.
All SABI commands except for set_brightness work as expected. The behaviour
of set_brightness is as follows:
- Setting a new brightness will only step one level toward the new brightness
level. For example, setting a level of 5 when the current level is 2 will
result in a brightness level of 3.
- A spurious KEY_BRIGHTNESS_UP or KEY_BRIGHTNESS_DOWN event is also generated
along with the change in brightness.
- Neither of the above two issues occur when changing from/to brightness
level 0.
This patch adds detection and a non-intrusive workaround for the above issues.
Signed-off-by: Jason Stubbs <jasonbstubbs@gmail.com>
Tested-by: David Herrmann <dh.herrmann@googlemail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Signed-off-by: Matthew Garrett <mjg@redhat.com>
---
diff --git a/drivers/platform/x86/samsung-laptop.c b/drivers/platform/x86/samsung-laptop.c
index 4d3bed4..6474e42 100644
--- a/drivers/platform/x86/samsung-laptop.c
+++ b/drivers/platform/x86/samsung-laptop.c
@@ -226,6 +226,7 @@ static struct backlight_device *backlight_device;
static struct mutex sabi_mutex;
static struct platform_device *sdev;
static struct rfkill *rfk;
+static bool has_stepping_quirk;
static int force;
module_param(force, bool, 0);
@@ -382,6 +383,17 @@ static void set_brightness(u8 user_brightness)
{
u8 user_level = user_brightness + sabi_config->min_brightness;
+ if (has_stepping_quirk && user_level != 0) {
+ /*
+ * short circuit if the specified level is what's already set
+ * to prevent the screen from flickering needlessly
+ */
+ if (user_brightness == read_brightness())
+ return;
+
+ sabi_set_command(sabi_config->commands.set_brightness, 0);
+ }
+
sabi_set_command(sabi_config->commands.set_brightness, user_level);
}
@@ -390,6 +402,34 @@ static int get_brightness(struct backlight_device *bd)
return (int)read_brightness();
}
+static void check_for_stepping_quirk(void)
+{
+ u8 initial_level = read_brightness();
+ u8 check_level;
+
+ /*
+ * Some laptops exhibit the strange behaviour of stepping toward
+ * (rather than setting) the brightness except when changing to/from
+ * brightness level 0. This behaviour is checked for here and worked
+ * around in set_brightness.
+ */
+
+ if (initial_level <= 2)
+ check_level = initial_level + 2;
+ else
+ check_level = initial_level - 2;
+
+ has_stepping_quirk = false;
+ set_brightness(check_level);
+
+ if (read_brightness() != check_level) {
+ has_stepping_quirk = true;
+ pr_info("enabled workaround for brightness stepping quirk\n");
+ }
+
+ set_brightness(initial_level);
+}
+
static int update_status(struct backlight_device *bd)
{
set_brightness(bd->props.brightness);
@@ -805,6 +845,9 @@ static int __init samsung_init(void)
}
}
+ /* Check for stepping quirk */
+ check_for_stepping_quirk();
+
/* knock up a platform device to hang stuff off of */
sdev = platform_device_register_simple("samsung", -1, NULL, 0);
if (IS_ERR(sdev))
From: Jason Stubbs <jasonbstubbs@gmail.com>
Date: Tue, 20 Sep 2011 16:16:14 +0000 (-0700)
Subject: Platform: Samsung laptop DMI info for NC210/NC110
X-Git-Tag: v3.2-rc1~111^2~40
X-Git-Url: http://git.kernel.org/?p=linux%2Fkernel%2Fgit%2Ftorvalds%2Flinux-2.6.git;a=commitdiff_plain;h=7b3c257ce4267e004a7c7e68c05d1eb70da8c972
Platform: Samsung laptop DMI info for NC210/NC110
This patch just adds the DMI info for the samsung laptop driver to work with
the NC210/NC110. It needs the brightness quirk patch for proper support.
Signed-off-by: Jason Stubbs <jasonbstubbs@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Signed-off-by: Matthew Garrett <mjg@redhat.com>
---
diff --git a/drivers/platform/x86/samsung-laptop.c b/drivers/platform/x86/samsung-laptop.c
index 6474e42..8ffab50 100644
--- a/drivers/platform/x86/samsung-laptop.c
+++ b/drivers/platform/x86/samsung-laptop.c
@@ -737,6 +737,15 @@ static struct dmi_system_id __initdata samsung_dmi_table[] = {
},
.callback = dmi_check_cb,
},
+ {
+ .ident = "NC210/NC110",
+ .matches = {
+ DMI_MATCH(DMI_SYS_VENDOR, "SAMSUNG ELECTRONICS CO., LTD."),
+ DMI_MATCH(DMI_PRODUCT_NAME, "NC210/NC110"),
+ DMI_MATCH(DMI_BOARD_NAME, "NC210/NC110"),
+ },
+ .callback = dmi_check_cb,
+ },
{ },
};
MODULE_DEVICE_TABLE(dmi, samsung_dmi_table);
From: Raul Gutierrez Segales <rgs@collabora.co.uk>
Date: Tue, 20 Sep 2011 16:16:15 +0000 (-0700)
Subject: Platform: fix samsung-laptop DMI identification for N220 model
X-Git-Tag: v3.2-rc1~111^2~39
X-Git-Url: http://git.kernel.org/?p=linux%2Fkernel%2Fgit%2Ftorvalds%2Flinux-2.6.git;a=commitdiff_plain;h=f689c875c13c9d62b3c4de09cd5dad66549f700d
Platform: fix samsung-laptop DMI identification for N220 model
This is a follow-up for commit 78a7539b, which didn't cover the
Samsung N220 laptop. With this backlight brightness works nicely
on the N220 netbook.
Signed-off-by: Raul Gutierrez Segales <rgs@collabora.co.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Signed-off-by: Matthew Garrett <mjg@redhat.com>
---
diff --git a/drivers/platform/x86/samsung-laptop.c b/drivers/platform/x86/samsung-laptop.c
index 8ffab50..1e436eb 100644
--- a/drivers/platform/x86/samsung-laptop.c
+++ b/drivers/platform/x86/samsung-laptop.c
@@ -663,6 +663,16 @@ static struct dmi_system_id __initdata samsung_dmi_table[] = {
.callback = dmi_check_cb,
},
{
+ .ident = "N220",
+ .matches = {
+ DMI_MATCH(DMI_SYS_VENDOR,
+ "SAMSUNG ELECTRONICS CO., LTD."),
+ DMI_MATCH(DMI_PRODUCT_NAME, "N220"),
+ DMI_MATCH(DMI_BOARD_NAME, "N220"),
+ },
+ .callback = dmi_check_cb,
+ },
+ {
.ident = "N150/N210/N220/N230",
.matches = {
DMI_MATCH(DMI_SYS_VENDOR,
From: John Serock <john.serock@gmail.com>
Date: Thu, 13 Oct 2011 10:42:01 +0000 (-0400)
Subject: Platform: Detect samsung laptop quirk when initial level is zero
X-Git-Tag: v3.2-rc1~111^2~29
X-Git-Url: http://git.kernel.org/?p=linux%2Fkernel%2Fgit%2Ftorvalds%2Flinux-2.6.git;a=commitdiff_plain;h=ba05b237372bad82533d1f717569d1d817ff3c27
Platform: Detect samsung laptop quirk when initial level is zero
This patch depends on the "Platform: Brightness quirk for samsung
laptop driver" patch from Jason Stubbs. This patch adds a check for an
initial brightness level of 0; if the level is 0, this patch changes
the brightness level to 1 before the driver attempts to detect the
brightness quirk.
The Samsung N150 netbook experiences the brightness quirk. Without
Jason's patch, the only brightness levels available on the N150 are 0,
1, and 8. This patch ensures that, when the initial brightness level
is 0, the samsang-laptop driver detects the brightness quirk on the
N150, thereby making brightness levels 0 through 8 available.
Signed-off-by: John Serock <john.serock@gmail.com>
Acked-by: Jason Stubbs <jasonbstubbs@gmail.com>
Signed-off-by: Matthew Garrett <mjg@redhat.com>
---
diff --git a/drivers/platform/x86/samsung-laptop.c b/drivers/platform/x86/samsung-laptop.c
index 1e436eb..31ddd57 100644
--- a/drivers/platform/x86/samsung-laptop.c
+++ b/drivers/platform/x86/samsung-laptop.c
@@ -404,8 +404,9 @@ static int get_brightness(struct backlight_device *bd)
static void check_for_stepping_quirk(void)
{
- u8 initial_level = read_brightness();
+ u8 initial_level;
u8 check_level;
+ u8 orig_level = read_brightness();
/*
* Some laptops exhibit the strange behaviour of stepping toward
@@ -414,6 +415,11 @@ static void check_for_stepping_quirk(void)
* around in set_brightness.
*/
+ if (orig_level == 0)
+ set_brightness(1);
+
+ initial_level = read_brightness();
+
if (initial_level <= 2)
check_level = initial_level + 2;
else
@@ -427,7 +433,7 @@ static void check_for_stepping_quirk(void)
pr_info("enabled workaround for brightness stepping quirk\n");
}
- set_brightness(initial_level);
+ set_brightness(orig_level);
}
static int update_status(struct backlight_device *bd)

View File

@ -1,3 +1,3 @@
8d43453f8159b2332ad410b19d86a931 linux-3.1.tar.bz2
364066fa18767ec0ae5f4e4abcf9dc51 linux-3.2.tar.xz
204381bc537b689edcb15df0efed6467 compat-wireless-3.2-1.tar.bz2
a8e1c25a93a685ec2a1c3a808715fe9d patch-3.1.10.bz2
62ac6ac9b870162f693ecf5e8606423a patch-3.2.1.xz

View File

@ -1,33 +0,0 @@
From c91a793f66d5b06292aa431ae3a36c8aca991fa3 Mon Sep 17 00:00:00 2001
From: Kay Sievers <kay.sievers@vrfy.org>
Date: Tue, 5 Jul 2011 17:04:11 -0700
Subject: [PATCH] drivers/video/udlfb bind framebuffer to interface.
Udlfb has been binding the framebuffer device to its parent, which
isn't correct and causes confusion with operations like udev remove.
Coming plug and play multiseat support is dependent on this fix.
Signed-off-by: Kay Sievers <kay.sievers@vrfy.org>
Signed-off-by: Bernie Thompson <bernie@plugable.com>
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
---
drivers/video/udlfb.c | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/drivers/video/udlfb.c b/drivers/video/udlfb.c
index 816a4fd..c6584c9 100644
--- a/drivers/video/udlfb.c
+++ b/drivers/video/udlfb.c
@@ -1549,7 +1549,7 @@ static int dlfb_usb_probe(struct usb_interface *interface,
/* We don't register a new USB class. Our client interface is fbdev */
/* allocates framebuffer driver structure, not framebuffer memory */
- info = framebuffer_alloc(0, &usbdev->dev);
+ info = framebuffer_alloc(0, &interface->dev);
if (!info) {
retval = -ENOMEM;
pr_err("framebuffer_alloc failed\n");
--
1.7.4.4

File diff suppressed because it is too large Load Diff

View File

@ -1,73 +0,0 @@
From: Clemens Ladisch <clemens@ladisch.de>
Date: Mon, 19 Dec 2011 21:07:58 +0000 (+0100)
Subject: x86, dumpstack: Fix code bytes breakage due to missing KERN_CONT
X-Git-Url: https://git.kernel.org/?p=linux%2Fkernel%2Fgit%2Ftip%2Ftip.git;a=commitdiff_plain;h=13f541c10b30fc6529200d7f9a0073217709622f
x86, dumpstack: Fix code bytes breakage due to missing KERN_CONT
When printing the code bytes in show_registers(), the markers around the
byte at the fault address could make the printk() format string look
like a valid log level and facility code. This would prevent this byte
from being printed and result in a spurious newline:
[ 7555.765589] Code: 8b 32 e9 94 00 00 00 81 7d 00 ff 00 00 00 0f 87 96 00 00 00 48 8b 83 c0 00 00 00 44 89 e2 44 89 e6 48 89 df 48 8b 80 d8 02 00 00
[ 7555.765683] 8b 48 28 48 89 d0 81 e2 ff 0f 00 00 48 c1 e8 0c 48 c1 e0 04
Add KERN_CONT where needed, and elsewhere in show_registers() for
consistency.
Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
Link: http://lkml.kernel.org/r/4EEFA7AE.9020407@ladisch.de
Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
---
diff --git a/arch/x86/kernel/dumpstack_32.c b/arch/x86/kernel/dumpstack_32.c
index 3b97a80..c99f9ed 100644
--- a/arch/x86/kernel/dumpstack_32.c
+++ b/arch/x86/kernel/dumpstack_32.c
@@ -116,16 +116,16 @@ void show_registers(struct pt_regs *regs)
for (i = 0; i < code_len; i++, ip++) {
if (ip < (u8 *)PAGE_OFFSET ||
probe_kernel_address(ip, c)) {
- printk(" Bad EIP value.");
+ printk(KERN_CONT " Bad EIP value.");
break;
}
if (ip == (u8 *)regs->ip)
- printk("<%02x> ", c);
+ printk(KERN_CONT "<%02x> ", c);
else
- printk("%02x ", c);
+ printk(KERN_CONT "%02x ", c);
}
}
- printk("\n");
+ printk(KERN_CONT "\n");
}
int is_valid_bugaddr(unsigned long ip)
diff --git a/arch/x86/kernel/dumpstack_64.c b/arch/x86/kernel/dumpstack_64.c
index 19853ad..6d728d9 100644
--- a/arch/x86/kernel/dumpstack_64.c
+++ b/arch/x86/kernel/dumpstack_64.c
@@ -284,16 +284,16 @@ void show_registers(struct pt_regs *regs)
for (i = 0; i < code_len; i++, ip++) {
if (ip < (u8 *)PAGE_OFFSET ||
probe_kernel_address(ip, c)) {
- printk(" Bad RIP value.");
+ printk(KERN_CONT " Bad RIP value.");
break;
}
if (ip == (u8 *)regs->ip)
- printk("<%02x> ", c);
+ printk(KERN_CONT "<%02x> ", c);
else
- printk("%02x ", c);
+ printk(KERN_CONT "%02x ", c);
}
}
- printk("\n");
+ printk(KERN_CONT "\n");
}
int is_valid_bugaddr(unsigned long ip)