summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.gitignore2
-rw-r--r--Makefile4
-rw-r--r--acpi-ec-add-delay-before-write.patch5
-rw-r--r--acpi-update-battery-information-on-notification-0x81.patch39
-rw-r--r--config-arm2
-rw-r--r--config-debug3
-rw-r--r--config-generic50
-rw-r--r--config-nodebug3
-rw-r--r--config-s390x1
-rw-r--r--config-sparc64-generic2
-rw-r--r--config-x86-generic6
-rw-r--r--config-x86_64-generic5
-rw-r--r--drm-intel-big-hammer.patch21
-rw-r--r--drm-intel-make-lvds-work.patch22
-rw-r--r--hdpvr-ir-enable.patch4
-rw-r--r--kernel.spec24
-rw-r--r--linux-2.6-32bit-mmap-exec-randomization.patch2
-rw-r--r--linux-2.6-enable-more-pci-autosuspend.patch276
-rw-r--r--linux-2.6-uvc-autosuspend.patch22
-rw-r--r--pci-crs-fixes.patch593
-rw-r--r--pnpacpi-cope-with-invalid-device-ids.patch85
-rw-r--r--runtime_pm_fixups.patch2
-rw-r--r--sources2
23 files changed, 209 insertions, 966 deletions
diff --git a/.gitignore b/.gitignore
index a955be81a..d89af37a9 100644
--- a/.gitignore
+++ b/.gitignore
@@ -3,4 +3,4 @@ patch-*.bz2
clog
*.rpm
kernel-2.6.*/
-/patch-2.6.36-git8.bz2
+/patch-2.6.37-rc1.bz2
diff --git a/Makefile b/Makefile
index 8e3e84130..c6142c153 100644
--- a/Makefile
+++ b/Makefile
@@ -91,6 +91,8 @@ debug:
@perl -pi -e 's/# CONFIG_DEBUG_PER_CPU_MAPS is not set/CONFIG_DEBUG_PER_CPU_MAPS=y/' config-nodebug
@perl -pi -e 's/CONFIG_CRYPTO_MANAGER_DISABLE_TESTS=y/# CONFIG_CRYPTO_MANAGER_DISABLE_TESTS is not set/' config-nodebug
#@perl -pi -e 's/# CONFIG_PCI_DEFAULT_USE_CRS is not set/CONFIG_PCI_DEFAULT_USE_CRS=y/' config-nodebug
+ @perl -pi -e 's/# CONFIG_DEBUG_OBJECTS_PERCPU_COUNTER is not set/CONFIG_DEBUG_OBJECTS_PERCPU_COUNTER=y/' config-nodebug
+ @perl -pi -e 's/# CONFIG_TEST_LIST_SORT is not set/CONFIG_TEST_LIST_SORT=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
@@ -164,6 +166,8 @@ release:
@perl -pi -e 's/CONFIG_DEBUG_PER_CPU_MAPS=y/# CONFIG_DEBUG_PER_CPU_MAPS is not set/' config-nodebug
@perl -pi -e 's/# CONFIG_CRYPTO_MANAGER_DISABLE_TESTS is not set/CONFIG_CRYPTO_MANAGER_DISABLE_TESTS=y/' config-nodebug
#@perl -pi -e 's/CONFIG_PCI_DEFAULT_USE_CRS=y/# CONFIG_PCI_DEFAULT_USE_CRS is not set/' config-nodebug
+ @perl -pi -e 's/CONFIG_DEBUG_OBJECTS_PERCPU_COUNTER=y/# CONFIG_DEBUG_OBJECTS_PERCPU_COUNTER is not set/' config-nodebug
+ @perl -pi -e 's/CONFIG_TEST_LIST_SORT=y/# CONFIG_TEST_LIST_SORT is not set/' config-nodebug
@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
diff --git a/acpi-ec-add-delay-before-write.patch b/acpi-ec-add-delay-before-write.patch
index af49cccbd..f1cb50817 100644
--- a/acpi-ec-add-delay-before-write.patch
+++ b/acpi-ec-add-delay-before-write.patch
@@ -23,7 +23,7 @@ index 27e0b92..09fbb69 100644
pr_debug(PREFIX "controller reset, restart transaction\n");
spin_lock_irqsave(&ec->curr_lock, flags);
start_transaction(ec);
-@@ -271,15 +272,25 @@ static int ec_check_ibf0(struct acpi_ec *ec)
+@@ -271,15 +272,24 @@ static int ec_check_ibf0(struct acpi_ec *ec)
return (status & ACPI_EC_FLAG_IBF) == 0;
}
@@ -38,8 +38,7 @@ index 27e0b92..09fbb69 100644
+
static int ec_wait_ibf0(struct acpi_ec *ec)
{
-+
- unsigned long delay = jiffies + msecs_to_jiffies(ACPI_EC_DELAY);
+ unsigned long delay = jiffies + msecs_to_jiffies(ec_delay);
/* interrupt wait manually if GPE mode is not active */
while (time_before(jiffies, delay))
if (wait_event_timeout(ec->wait, ec_check_ibf0(ec),
diff --git a/acpi-update-battery-information-on-notification-0x81.patch b/acpi-update-battery-information-on-notification-0x81.patch
index 5fe34b9c0..3704b054d 100644
--- a/acpi-update-battery-information-on-notification-0x81.patch
+++ b/acpi-update-battery-information-on-notification-0x81.patch
@@ -12,14 +12,14 @@ and recreate the battery in order to populate the fields correctly.
Signed-off-by: Matthew Garrett <mjg@redhat.com>
---
- drivers/acpi/battery.c | 22 +++++++++++++++++-----
- 1 files changed, 17 insertions(+), 5 deletions(-)
+ drivers/acpi/battery.c | 20 +++++++++++++++-----
+ 1 files changed, 15 insertions(+), 5 deletions(-)
diff --git a/drivers/acpi/battery.c b/drivers/acpi/battery.c
-index dc58402..69638c4 100644
+index 95649d3..2a774a8 100644
--- a/drivers/acpi/battery.c
+++ b/drivers/acpi/battery.c
-@@ -562,9 +562,10 @@ static void acpi_battery_quirks(struct acpi_battery *battery)
+@@ -605,9 +605,10 @@ static void acpi_battery_quirks2(struct acpi_battery *battery)
}
}
@@ -31,24 +31,22 @@ index dc58402..69638c4 100644
result = acpi_battery_get_status(battery);
if (result)
return result;
-@@ -587,6 +588,16 @@ static int acpi_battery_update(struct acpi_battery *battery)
- if (!battery->bat.dev)
+@@ -628,6 +629,14 @@ static int acpi_battery_update(struct acpi_battery *battery)
sysfs_add_battery(battery);
- #endif
+ result = acpi_battery_get_state(battery);
+ acpi_battery_quirks2(battery);
+ if (get_info) {
+ acpi_battery_get_info(battery);
-+#ifdef CONFIG_ACPI_SYSFS_POWER
+ if (old_power_unit != battery->power_unit) {
+ /* The battery has changed its reporting units */
+ sysfs_remove_battery(battery);
+ sysfs_add_battery(battery);
+ }
-+#endif
+ }
- return acpi_battery_get_state(battery);
+ return result;
}
-@@ -762,7 +773,7 @@ static print_func acpi_print_funcs[ACPI_BATTERY_NUMFILES] = {
+@@ -803,7 +812,7 @@ static print_func acpi_print_funcs[ACPI_BATTERY_NUMFILES] = {
static int acpi_battery_read(int fid, struct seq_file *seq)
{
struct acpi_battery *battery = seq->private;
@@ -57,17 +55,17 @@ index dc58402..69638c4 100644
return acpi_print_funcs[fid](seq, result);
}
-@@ -877,7 +888,8 @@ static void acpi_battery_notify(struct acpi_device *device, u32 event)
- #ifdef CONFIG_ACPI_SYSFS_POWER
+@@ -914,7 +923,8 @@ static void acpi_battery_notify(struct acpi_device *device, u32 event)
+ if (!battery)
+ return;
old = battery->bat.dev;
- #endif
- acpi_battery_update(battery);
+ acpi_battery_update(battery, (event == ACPI_BATTERY_NOTIFY_INFO ? true
+ : false));
acpi_bus_generate_proc_event(device, event,
acpi_battery_present(battery));
acpi_bus_generate_netlink_event(device->pnp.device_class,
-@@ -908,7 +920,7 @@ static int acpi_battery_add(struct acpi_device *device)
+@@ -943,7 +953,7 @@ static int acpi_battery_add(struct acpi_device *device)
if (ACPI_SUCCESS(acpi_get_handle(battery->device->handle,
"_BIX", &handle)))
set_bit(ACPI_BATTERY_XINFO_PRESENT, &battery->flags);
@@ -76,7 +74,7 @@ index dc58402..69638c4 100644
#ifdef CONFIG_ACPI_PROCFS_POWER
result = acpi_battery_add_fs(device);
#endif
-@@ -951,7 +963,7 @@ static int acpi_battery_resume(struct acpi_device *device)
+@@ -984,7 +994,7 @@ static int acpi_battery_resume(struct acpi_device *device)
return -EINVAL;
battery = acpi_driver_data(device);
battery->update_time = 0;
@@ -85,12 +83,3 @@ index dc58402..69638c4 100644
return 0;
}
---
-1.7.2.1
-
---
-To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
-the body of a message to majordomo@vger.kernel.org
-More majordomo info at http://vger.kernel.org/majordomo-info.html
-Please read the FAQ at http://www.tux.org/lkml/
-
diff --git a/config-arm b/config-arm
index b10eaf469..22335ef40 100644
--- a/config-arm
+++ b/config-arm
@@ -127,3 +127,5 @@ CONFIG_PM_OPP=y
CONFIG_SECCOMP=y
CONFIG_STRICT_DEVMEM=y
+
+# CONFIG_AMBA_PL08X is not set
diff --git a/config-debug b/config-debug
index 1675f5c0c..5366a8461 100644
--- a/config-debug
+++ b/config-debug
@@ -94,3 +94,6 @@ CONFIG_PCI_DEFAULT_USE_CRS=y
CONFIG_KGDB_KDB=y
CONFIG_KDB_KEYBOARD=y
+
+CONFIG_DEBUG_OBJECTS_PERCPU_COUNTER=y
+CONFIG_TEST_LIST_SORT=y
diff --git a/config-generic b/config-generic
index 3c3e26060..a4ff8cfeb 100644
--- a/config-generic
+++ b/config-generic
@@ -119,12 +119,13 @@ CONFIG_PCMCIA_IOCTL=y
CONFIG_PCCARD=y
CONFIG_MMC=m
-CONFIG_MMC_BLOCK_BOUNCE=y
CONFIG_SDIO_UART=m
# CONFIG_MMC_TEST is not set
# CONFIG_MMC_DEBUG is not set
# CONFIG_MMC_UNSAFE_RESUME is not set
CONFIG_MMC_BLOCK=m
+CONFIG_MMC_BLOCK_MINORS=8
+CONFIG_MMC_BLOCK_BOUNCE=y
CONFIG_MMC_SDHCI=m
CONFIG_MMC_SDHCI_PCI=m
CONFIG_MMC_SDRICOH_CS=m
@@ -134,6 +135,7 @@ CONFIG_MMC_VIA_SDMMC=m
CONFIG_MMC_SDHCI_PLTFM=m
CONFIG_MMC_CB710=m
CONFIG_MMC_RICOH_MMC=y
+CONFIG_MMC_USHC=m
CONFIG_CB710_CORE=m
# CONFIG_CB710_DEBUG is not set
@@ -1580,6 +1582,8 @@ CONFIG_CAN_EMS_USB=m
CONFIG_CAN_ESD_USB2=m
CONFIG_CAN_KVASER_PCI=m
CONFIG_CAN_PLX_PCI=m
+CONFIG_CAN_TSCAN1=m
+CONFIG_PCH_CAN=m
CONFIG_NETROM=m
CONFIG_ROSE=m
CONFIG_MKISS=m
@@ -2062,6 +2066,7 @@ CONFIG_I2C_ALGOPCA=m
# CONFIG_I2C_I801 is not set
# CONFIG_I2C_ISCH is not set
# CONFIG_I2C_NFORCE2_S4985 is not set
+# CONFIG_I2C_INTEL_MID is not set
CONFIG_EEPROM_AT24=m
CONFIG_EEPROM_LEGACY=m
@@ -2156,6 +2161,11 @@ CONFIG_SENSORS_SMSC47M192=m
CONFIG_SENSORS_SMSC47B397=m
CONFIG_SENSORS_THMC50=m
CONFIG_SENSORS_TMP401=m
+CONFIG_APDS9802ALS=m
+CONFIG_ISL29020=m
+CONFIG_ISL29003=m
+CONFIG_SENSORS_BH1770=m
+CONFIG_SENSORS_APDS990X=m
CONFIG_SENSORS_TSL2550=m
CONFIG_SENSORS_VIA686A=m
CONFIG_SENSORS_VIA_CPUTEMP=m
@@ -2186,6 +2196,8 @@ CONFIG_SENSORS_LTC4261=m
# CONFIG_SENSORS_SMM665 is not set
# CONFIG_SENSORS_EMC2103 is not set
# CONFIG_SENSORS_GPIO_FAN is not set
+CONFIG_SENSORS_W83795=m
+# CONFIG_SENSORS_W83795_FANCTRL is not set
# CONFIG_HMC6352 is not set
# CONFIG_BMP085 is not set
@@ -2328,6 +2340,7 @@ CONFIG_AGP_VIA=y
CONFIG_AGP_EFFICEON=y
CONFIG_VGA_ARB=y
CONFIG_VGA_ARB_MAX_GPUS=16
+CONFIG_STUB_POULSBO=m
CONFIG_DRM=m
CONFIG_DRM_TDFX=m
CONFIG_DRM_R128=m
@@ -2386,7 +2399,8 @@ CONFIG_VIDEO_AU0828=m
CONFIG_VIDEO_BT848=m
CONFIG_VIDEO_BT848_DVB=y
CONFIG_VIDEO_BWQCAM=m
-# CONFIG_VIDEO_CAFE_CCIC is not set
+CONFIG_VIDEO_SR030PC30=m
+CONFIG_VIDEO_CAFE_CCIC=m
# CONFIG_VIDEO_CPIA is not set
CONFIG_VIDEO_CPIA2=m
CONFIG_VIDEO_CQCAM=m
@@ -2418,6 +2432,7 @@ CONFIG_VIDEO_SAA6588=m
CONFIG_VIDEO_SAA7134=m
CONFIG_VIDEO_SAA7134_ALSA=m
CONFIG_VIDEO_SAA7134_DVB=m
+CONFIG_VIDEO_SAA7134_RC=y
CONFIG_VIDEO_STRADIS=m
CONFIG_VIDEO_USBVISION=m
CONFIG_VIDEO_W9966=m
@@ -2460,6 +2475,7 @@ CONFIG_MEDIA_TUNER_MXL5005S=m
CONFIG_MEDIA_TUNER_MXL5007T=m
CONFIG_MEDIA_TUNER_MC44S803=m
CONFIG_MEDIA_TUNER_MAX2165=m
+CONFIG_MEDIA_TUNER_TDA18218=m
#
# Digital Video Broadcasting Devices
@@ -2499,6 +2515,8 @@ CONFIG_DVB_SP8870=m
CONFIG_DVB_SP887X=m
CONFIG_DVB_CX22700=m
CONFIG_DVB_CX22702=m
+CONFIG_DVB_S5H1432=m
+CONFIG_DVB_IX2505V=m
CONFIG_DVB_L64781=m
CONFIG_DVB_NXT6000=m
CONFIG_DVB_MT352=m
@@ -2603,6 +2621,7 @@ CONFIG_DVB_USB_UMT_010=m
CONFIG_DVB_USB_VP702X=m
CONFIG_DVB_USB_VP7045=m
CONFIG_DVB_USB_AZ6027=m
+CONFIG_DVB_USB_LME2510=m
CONFIG_DVB_PT1=m
@@ -2624,9 +2643,11 @@ CONFIG_IR_RC5_DECODER=m
CONFIG_IR_RC6_DECODER=m
CONFIG_IR_JVC_DECODER=m
CONFIG_IR_SONY_DECODER=m
+CONFIG_IR_RC5_SZ_DECODER=m
CONFIG_IR_LIRC_CODEC=m
CONFIG_IR_IMON=m
CONFIG_IR_MCEUSB=m
+CONFIG_IR_NUVOTON=m
CONFIG_V4L_MEM2MEM_DRIVERS=y
# CONFIG_VIDEO_MEM2MEM_TESTDEV is not set
@@ -3078,6 +3099,8 @@ CONFIG_USB_GSPCA_PAC7302=m
CONFIG_USB_GSPCA_STV0680=m
CONFIG_USB_GL860=m
CONFIG_USB_GSPCA_JEILINJ=m
+CONFIG_USB_GSPCA_KONICA=m
+CONFIG_USB_GSPCA_XIRLINK_CIT=m
CONFIG_USB_GSPCA_SPCA1528=m
CONFIG_USB_GSPCA_SQ930X=m
@@ -3093,6 +3116,7 @@ CONFIG_USB_SE401=m
CONFIG_USB_ZR364XX=m
CONFIG_SOC_CAMERA=m
CONFIG_SOC_CAMERA_MT9M001=m
+CONFIG_SOC_CAMERA_MT9M001=m
CONFIG_SOC_CAMERA_MT9V022=m
CONFIG_SOC_CAMERA_PLATFORM=m
CONFIG_SOC_CAMERA_MT9M111=m
@@ -3102,6 +3126,8 @@ CONFIG_SOC_CAMERA_OV772X=m
CONFIG_SOC_CAMERA_MT9T112=m
CONFIG_SOC_CAMERA_RJ54N1=m
CONFIG_SOC_CAMERA_OV9640=m
+CONFIG_SOC_CAMERA_OV6650=m
+CONFIG_SOC_CAMERA_IMX074=m
#
# USB Network adaptors
@@ -3306,6 +3332,7 @@ CONFIG_RTC_DRV_DS3232=m
CONFIG_RTC_DRV_ISL12022=m
CONFIG_MFD_SUPPORT=y
+CONFIG_MFD_VX855=m
CONFIG_MFD_SM501=m
CONFIG_MFD_SM501_GPIO=y
# CONFIG_MFD_TC6393XB is not set
@@ -3326,6 +3353,7 @@ CONFIG_MFD_WM8400=m
# CONFIG_ABX500_CORE is not set
# CONFIG_MFD_RDC321X is not set
# CONFIG_MFD_JANZ_CMODIO is not set
+# CONFIG_MFD_WM831X_I2C is not set
#
# File systems
@@ -3462,6 +3490,7 @@ CONFIG_UFS_FS=m
# CONFIG_UFS_DEBUG is not set
CONFIG_9P_FS=m
CONFIG_9P_FSCACHE=y
+CONFIG_9P_FS_POSIX_ACL=y
CONFIG_FUSE_FS=m
CONFIG_OMFS_FS=m
CONFIG_CUSE=m
@@ -3482,6 +3511,7 @@ CONFIG_NFSD_V4=y
CONFIG_NFS_FSCACHE=y
# CONFIG_NFS_USE_LEGACY_DNS is not set
# CONFIG_NFS_USE_NEW_IDMAPPER is not set
+# CONFIG_NFSD_DEPRECATED is not set
CONFIG_LOCKD=m
CONFIG_LOCKD_V4=y
CONFIG_EXPORTFS=m
@@ -4043,6 +4073,8 @@ CONFIG_APM_POWER=m
CONFIG_WM831X_POWER=m
# CONFIG_BATTERY_DS2760 is not set
# CONFIG_BATTERY_DS2782 is not set
+# CONFIG_BATTERY_BQ20Z75 is not set
+# CONFIG_CHARGER_ISP1704 is not set
CONFIG_BATTERY_PMU=m
CONFIG_BATTERY_BQ27x00=m
CONFIG_BATTERY_MAX17040=m
@@ -4107,7 +4139,6 @@ CONFIG_INPUT_APANEL=m
# CONFIG_INTEL_MENLOW is not set
CONFIG_ENCLOSURE_SERVICES=m
-CONFIG_ISL29003=m
CONFIG_IPWIRELESS=m
CONFIG_RTC_DRV_DS1511=m
@@ -4236,6 +4267,13 @@ CONFIG_USB_ATMEL=m
# CONFIG_EASYCAP is not set
# CONFIG_SOLO6X10 is not set
# CONFIG_ACPI_QUICKSTART is not set
+# CONFIG_BRCM80211 is not set
+# CONFIG_R8712U is not set
+# CONFIG_ATH6K_LEGACY is not set
+# CONFIG_USB_ENESTORAGE is not set
+# CONFIG_BCM_WIMAX is not set
+# CONFIG_FT1000 is not set
+# CONFIG_SPEAKUP is not set
#
# Android
@@ -4357,7 +4395,9 @@ CONFIG_GPIO_SYSFS=y
# CONFIG_GPIO_SCH is not set
# CONFIG_GPIO_LANGWELL is not set
# CONFIG_GPIO_RDC321X is not set
-
+# CONFIG_GPIO_BASIC_MMIO is not set
+# CONFIG_GPIO_VX855 is not set
+# CONFIG_GPIO_PCH is not set
CONFIG_KSYM_TRACER=y
CONFIG_PROFILE_KSYM_TRACER=y
@@ -4377,3 +4417,5 @@ CONFIG_IR_STREAMZAP=m
CONFIG_SPARSE_RCU_POINTER=y
# CONFIG_PM_OPP is not set
+
+CONFIG_BKL=y
diff --git a/config-nodebug b/config-nodebug
index 4e5e220f9..ab9c209af 100644
--- a/config-nodebug
+++ b/config-nodebug
@@ -94,3 +94,6 @@ CONFIG_PCI_DEFAULT_USE_CRS=y
CONFIG_KGDB_KDB=y
CONFIG_KDB_KEYBOARD=y
+
+CONFIG_DEBUG_OBJECTS_PERCPU_COUNTER=y
+CONFIG_TEST_LIST_SORT=y
diff --git a/config-s390x b/config-s390x
index 729131a4f..148ee5506 100644
--- a/config-s390x
+++ b/config-s390x
@@ -229,4 +229,5 @@ CONFIG_VMCP=y
CONFIG_ZFCP_DIF=y
+CONFIG_SCHED_MC=y
CONFIG_SCHED_BOOK=y
diff --git a/config-sparc64-generic b/config-sparc64-generic
index 1d21fa781..61612cb71 100644
--- a/config-sparc64-generic
+++ b/config-sparc64-generic
@@ -201,3 +201,5 @@ CONFIG_GRETH=m
CONFIG_FB_XVR1000=y
CONFIG_CRYPTO_DEV_NIAGARA2=y
+
+CONFIG_JUMP_LABEL=y
diff --git a/config-x86-generic b/config-x86-generic
index 8f19cd311..68bd39b2d 100644
--- a/config-x86-generic
+++ b/config-x86-generic
@@ -370,6 +370,7 @@ CONFIG_XEN_FBDEV_FRONTEND=y
CONFIG_XEN_KBDDEV_FRONTEND=y
CONFIG_XEN_BLKDEV_FRONTEND=m
CONFIG_XEN_NETDEV_FRONTEND=m
+CONFIG_XEN_PCIDEV_FRONTEND=m
CONFIG_XENFS=m
CONFIG_XEN_COMPAT_XENFS=y
@@ -475,7 +476,7 @@ CONFIG_SBC_FITPC2_WATCHDOG=m
CONFIG_EDAC_I3200=m
CONFIG_EDAC_DECODE_MCE=m
-CONFIG_GPIO_LANGWELL=y
+# CONFIG_GPIO_LANGWELL is not set
# CONFIG_INTEL_TXT is not set
@@ -515,6 +516,7 @@ CONFIG_INTEL_IPS=m
CONFIG_OLPC_XO1=m
CONFIG_XO1_RFKILL=m
+CONFIG_VIDEO_VIA_CAMERA=m
CONFIG_EDAC_MCE_INJ=m
CONFIG_IRQ_TIME_ACCOUNTING=y
@@ -522,3 +524,5 @@ CONFIG_X86_RESERVE_LOW=64
CONFIG_PCH_GBE=m
CONFIG_PCH_PHUB=m
+
+CONFIG_JUMP_LABEL=y
diff --git a/config-x86_64-generic b/config-x86_64-generic
index caad92abf..a521b72b6 100644
--- a/config-x86_64-generic
+++ b/config-x86_64-generic
@@ -299,6 +299,7 @@ CONFIG_XEN_FBDEV_FRONTEND=y
CONFIG_XEN_KBDDEV_FRONTEND=y
CONFIG_XEN_BLKDEV_FRONTEND=m
CONFIG_XEN_NETDEV_FRONTEND=m
+CONFIG_XEN_PCIDEV_FRONTEND=m
CONFIG_XENFS=m
CONFIG_XEN_COMPAT_XENFS=y
CONFIG_XEN_DEV_EVTCHN=m
@@ -432,3 +433,7 @@ CONFIG_X86_RESERVE_LOW=64
CONFIG_PCH_GBE=m
CONFIG_PCH_PHUB=m
+
+CONFIG_VIDEO_VIA_CAMERA=m
+
+CONFIG_JUMP_LABEL=y
diff --git a/drm-intel-big-hammer.patch b/drm-intel-big-hammer.patch
index 63dc016b1..97bb2e8cd 100644
--- a/drm-intel-big-hammer.patch
+++ b/drm-intel-big-hammer.patch
@@ -1,16 +1,21 @@
+omgwtfbbqchainsaw?
+---
+ drivers/gpu/drm/i915/i915_gem.c | 5 +++++
+ 1 files changed, 5 insertions(+), 0 deletions(-)
+
diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c
-index 37427e4..08af9db 100644
+index 8eb8453..36fa9d7 100644
--- a/drivers/gpu/drm/i915/i915_gem.c
+++ b/drivers/gpu/drm/i915/i915_gem.c
-@@ -2553,6 +2553,11 @@ i915_gem_execbuffer(struct drm_device *dev, void *data,
-
- mutex_lock(&dev->struct_mutex);
+@@ -3692,6 +3692,11 @@ i915_gem_do_execbuffer(struct drm_device *dev, void *data,
+ if (ret)
+ goto pre_mutex_err;
+ /* We don't get the flushing right for these chipsets, use the
-+ * big hamer for now to avoid random crashiness. */
++ * big hammer for now to avoid random crashiness. */
+ if (IS_I85X(dev) || IS_I865G(dev))
+ wbinvd();
+
- i915_verify_inactive(dev, __FILE__, __LINE__);
-
- if (dev_priv->mm.wedged) {
+ if (dev_priv->mm.suspended) {
+ mutex_unlock(&dev->struct_mutex);
+ ret = -EBUSY;
diff --git a/drm-intel-make-lvds-work.patch b/drm-intel-make-lvds-work.patch
index 5ca0152da..209deb295 100644
--- a/drm-intel-make-lvds-work.patch
+++ b/drm-intel-make-lvds-work.patch
@@ -1,19 +1,23 @@
-diff -up linux-2.6.33.noarch/drivers/gpu/drm/i915/intel_display.c.orig linux-2.6.33.noarch/drivers/gpu/drm/i915/intel_display.c
---- linux-2.6.33.noarch/drivers/gpu/drm/i915/intel_display.c.orig 2010-03-31 16:59:39.901995671 -0400
-+++ linux-2.6.33.noarch/drivers/gpu/drm/i915/intel_display.c 2010-03-31 17:01:05.416996744 -0400
-@@ -3757,7 +3757,6 @@ struct drm_crtc *intel_get_load_detect_p
- void intel_release_load_detect_pipe(struct intel_encoder *intel_encoder, int dpms_mode)
+ drivers/gpu/drm/i915/intel_display.c | 2 --
+ 1 files changed, 0 insertions(+), 2 deletions(-)
+
+diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
+index 990f065..171a797 100644
+--- a/drivers/gpu/drm/i915/intel_display.c
++++ b/drivers/gpu/drm/i915/intel_display.c
+@@ -4568,7 +4568,6 @@ void intel_release_load_detect_pipe(struct intel_encoder *intel_encoder,
+ struct drm_connector *connector, int dpms_mode)
{
- struct drm_encoder *encoder = &intel_encoder->enc;
+ struct drm_encoder *encoder = &intel_encoder->base;
- struct drm_device *dev = encoder->dev;
struct drm_crtc *crtc = encoder->crtc;
struct drm_encoder_helper_funcs *encoder_funcs = encoder->helper_private;
struct drm_crtc_helper_funcs *crtc_funcs = crtc->helper_private;
-@@ -3767,7 +3766,6 @@ void intel_release_load_detect_pipe(stru
- intel_encoder->base.encoder = NULL;
+@@ -4578,7 +4577,6 @@ void intel_release_load_detect_pipe(struct intel_encoder *intel_encoder,
+ connector->encoder = NULL;
intel_encoder->load_detect_temp = false;
crtc->enabled = drm_helper_crtc_in_use(crtc);
- drm_helper_disable_unused_functions(dev);
}
- /* Switch crtc and output back off if necessary */
+ /* Switch crtc and encoder back off if necessary */
diff --git a/hdpvr-ir-enable.patch b/hdpvr-ir-enable.patch
index 787c8f84c..f377d6b4a 100644
--- a/hdpvr-ir-enable.patch
+++ b/hdpvr-ir-enable.patch
@@ -110,7 +110,7 @@ index 463b81b..60cdc06 100644
msgs[i].len);
}
-@@ -115,31 +120,59 @@ static struct i2c_algorithm hdpvr_algo = {
+@@ -115,30 +120,58 @@ static struct i2c_algorithm hdpvr_algo = {
.functionality = hdpvr_functionality,
};
@@ -119,7 +119,6 @@ index 463b81b..60cdc06 100644
+ .owner = THIS_MODULE,
+ .id = I2C_HW_B_HDPVR,
+ .algo = &hdpvr_algo,
-+ .class = I2C_CLASS_TV_ANALOG,
+};
+
+static struct i2c_board_info hdpvr_i2c_board_info = {
@@ -160,7 +159,6 @@ index 463b81b..60cdc06 100644
- strlcpy(i2c_adap->name, "Hauppauge HD PVR I2C",
- sizeof(i2c_adap->name));
- i2c_adap->algo = &hdpvr_algo;
-- i2c_adap->class = I2C_CLASS_TV_ANALOG;
- i2c_adap->owner = THIS_MODULE;
- i2c_adap->dev.parent = &dev->udev->dev;
+ memcpy(&dev->i2c_adapter, &hdpvr_i2c_adapter_template,
diff --git a/kernel.spec b/kernel.spec
index e8a00a281..f8c30f610 100644
--- a/kernel.spec
+++ b/kernel.spec
@@ -82,9 +82,9 @@ Summary: The Linux kernel
# The next upstream release sublevel (base_sublevel+1)
%define upstream_sublevel %(echo $((%{base_sublevel} + 1)))
# The rc snapshot level
-%define rcrev 0
+%define rcrev 1
# The git snapshot level
-%define gitrev 8
+%define gitrev 0
# Set rpm version accordingly
%define rpmversion 2.6.%{upstream_sublevel}
%endif
@@ -698,15 +698,10 @@ Patch12030: tpm-fix-stall-on-boot.patch
# Runtime power management
Patch12200: linux-2.6-bluetooth-autosuspend.patch
-Patch12201: linux-2.6-uvc-autosuspend.patch
Patch12203: linux-2.6-usb-pci-autosuspend.patch
Patch12204: linux-2.6-enable-more-pci-autosuspend.patch
Patch12205: runtime_pm_fixups.patch
-Patch12225: pci-crs-fixes.patch
-
-Patch12302: pnpacpi-cope-with-invalid-device-ids.patch
-
Patch12303: dmar-disable-when-ricoh-multifunction.patch
%endif
@@ -1127,7 +1122,7 @@ ApplyPatch linux-2.6-hotfixes.patch
# Roland's utrace ptrace replacement.
ApplyPatch linux-2.6-tracehook.patch
ApplyPatch linux-2.6-utrace.patch
-ApplyPatch linux-2.6-utrace-ptrace.patch
+#ApplyPatch linux-2.6-utrace-ptrace.patch
# Architecture patches
# x86(-64)
@@ -1193,7 +1188,7 @@ ApplyPatch linux-2.6-defaults-pci_use_crs.patch
# enable ASPM by default on hardware we expect to work
ApplyPatch linux-2.6-defaults-aspm.patch
-ApplyPatch ima-allow-it-to-be-completely-disabled-and-default-off.patch
+#ApplyPatch ima-allow-it-to-be-completely-disabled-and-default-off.patch
#
# SCSI Bits.
@@ -1291,18 +1286,10 @@ ApplyPatch tpm-fix-stall-on-boot.patch
# Runtime PM
ApplyPatch linux-2.6-bluetooth-autosuspend.patch
-ApplyPatch linux-2.6-uvc-autosuspend.patch
ApplyPatch linux-2.6-usb-pci-autosuspend.patch
ApplyPatch linux-2.6-enable-more-pci-autosuspend.patch
ApplyPatch runtime_pm_fixups.patch
-# PCI patches to fix problems with _CRS
-# ( from linux-pci list )
-ApplyPatch pci-crs-fixes.patch
-
-# rhbz#641468
-ApplyPatch pnpacpi-cope-with-invalid-device-ids.patch
-
# rhbz#605888
ApplyPatch dmar-disable-when-ricoh-multifunction.patch
@@ -1913,6 +1900,9 @@ fi
# || ||
%changelog
+* Tue Nov 02 2010 Kyle McMartin <kyle@redhat.com> 2.6.37-0.1.rc1.git0
+- Linux 2.6.37-rc1
+
* Tue Oct 26 2010 Kyle McMartin <kyle@redhat.com> 2.6.37-0.1.rc0.git8
- Linux 2.6.36-git8
diff --git a/linux-2.6-32bit-mmap-exec-randomization.patch b/linux-2.6-32bit-mmap-exec-randomization.patch
index fe91e0abf..d42638c27 100644
--- a/linux-2.6-32bit-mmap-exec-randomization.patch
+++ b/linux-2.6-32bit-mmap-exec-randomization.patch
@@ -14,9 +14,9 @@
--- b/mm/mmap.c
+++ b/mm/mmap.c
@@ -28,6 +28,7 @@
- #include <linux/rmap.h>
#include <linux/mmu_notifier.h>
#include <linux/perf_event.h>
+ #include <linux/audit.h>
+#include <linux/random.h>
#include <asm/uaccess.h>
diff --git a/linux-2.6-enable-more-pci-autosuspend.patch b/linux-2.6-enable-more-pci-autosuspend.patch
index b1f92b134..666ded640 100644
--- a/linux-2.6-enable-more-pci-autosuspend.patch
+++ b/linux-2.6-enable-more-pci-autosuspend.patch
@@ -1,7 +1,20 @@
-diff -up linux-2.6.35.x86_64/drivers/acpi/acpica/aclocal.h.mjg linux-2.6.35.x86_64/drivers/acpi/acpica/aclocal.h
---- linux-2.6.35.x86_64/drivers/acpi/acpica/aclocal.h.mjg 2010-10-04 13:52:05.086789354 -0400
-+++ linux-2.6.35.x86_64/drivers/acpi/acpica/aclocal.h 2010-10-04 13:52:50.948801001 -0400
-@@ -406,16 +406,15 @@ struct acpi_predefined_data {
+ drivers/acpi/acpica/aclocal.h | 7 +--
+ drivers/acpi/acpica/evgpe.c | 75 +++++++++++++++-----------------
+ drivers/acpi/acpica/evgpeinit.c | 11 +----
+ drivers/acpi/acpica/evgpeutil.c | 5 +-
+ drivers/acpi/acpica/evxface.c | 23 +++++-----
+ drivers/acpi/ec.c | 2 +-
+ drivers/acpi/pci_bind.c | 86 ++++++++++++++++++++++++++++++++++++++
+ drivers/acpi/sleep.c | 2 +-
+ drivers/char/ipmi/ipmi_si_intf.c | 2 +-
+ include/acpi/acpixf.h | 3 +-
+ 10 files changed, 143 insertions(+), 73 deletions(-)
+
+diff --git a/drivers/acpi/acpica/aclocal.h b/drivers/acpi/acpica/aclocal.h
+index 2ceb0c0..3663362 100644
+--- a/drivers/acpi/acpica/aclocal.h
++++ b/drivers/acpi/acpica/aclocal.h
+@@ -406,17 +406,16 @@ struct acpi_predefined_data {
*
****************************************************************************/
@@ -13,6 +26,7 @@ diff -up linux-2.6.35.x86_64/drivers/acpi/acpica/aclocal.h.mjg linux-2.6.35.x86_
void *context; /* Context to be passed to handler */
- struct acpi_namespace_node *method_node; /* Method node for this GPE level (saved) */
u8 orig_flags; /* Original misc info about this GPE */
+ u8 orig_enabled; /* Set if the GPE was originally enabled */
};
-union acpi_gpe_dispatch_info {
@@ -20,7 +34,7 @@ diff -up linux-2.6.35.x86_64/drivers/acpi/acpica/aclocal.h.mjg linux-2.6.35.x86_
struct acpi_namespace_node *method_node; /* Method node for this GPE level */
struct acpi_handler_info *handler;
};
-@@ -425,7 +424,7 @@ union acpi_gpe_dispatch_info {
+@@ -426,7 +425,7 @@ union acpi_gpe_dispatch_info {
* NOTE: Important to keep this struct as small as possible.
*/
struct acpi_gpe_event_info {
@@ -29,10 +43,11 @@ diff -up linux-2.6.35.x86_64/drivers/acpi/acpica/aclocal.h.mjg linux-2.6.35.x86_
struct acpi_gpe_register_info *register_info; /* Backpointer to register info */
u8 flags; /* Misc info about this GPE */
u8 gpe_number; /* This GPE */
-diff -up linux-2.6.35.x86_64/drivers/acpi/acpica/evgpe.c.mjg linux-2.6.35.x86_64/drivers/acpi/acpica/evgpe.c
---- linux-2.6.35.x86_64/drivers/acpi/acpica/evgpe.c.mjg 2010-10-04 13:52:05.088789399 -0400
-+++ linux-2.6.35.x86_64/drivers/acpi/acpica/evgpe.c 2010-10-04 13:52:50.950801045 -0400
-@@ -474,9 +474,7 @@ static void ACPI_SYSTEM_XFACE acpi_ev_as
+diff --git a/drivers/acpi/acpica/evgpe.c b/drivers/acpi/acpica/evgpe.c
+index f226eac..c4b1c4c 100644
+--- a/drivers/acpi/acpica/evgpe.c
++++ b/drivers/acpi/acpica/evgpe.c
+@@ -474,9 +474,7 @@ static void ACPI_SYSTEM_XFACE acpi_ev_asynch_execute_gpe_method(void *context)
* Must check for control method type dispatch one more time to avoid a
* race with ev_gpe_install_handler
*/
@@ -43,7 +58,7 @@ diff -up linux-2.6.35.x86_64/drivers/acpi/acpica/evgpe.c.mjg linux-2.6.35.x86_64
/* Allocate the evaluation information block */
info = ACPI_ALLOCATE_ZEROED(sizeof(struct acpi_evaluate_info));
-@@ -575,41 +573,15 @@ acpi_ev_gpe_dispatch(struct acpi_gpe_eve
+@@ -575,41 +573,15 @@ acpi_ev_gpe_dispatch(struct acpi_gpe_event_info *gpe_event_info, u32 gpe_number)
}
/*
@@ -93,7 +108,7 @@ diff -up linux-2.6.35.x86_64/drivers/acpi/acpica/evgpe.c.mjg linux-2.6.35.x86_64
/*
* Disable the GPE, so it doesn't keep firing before the method has a
* chance to run (it runs asynchronously with interrupts enabled).
-@@ -634,10 +606,34 @@ acpi_ev_gpe_dispatch(struct acpi_gpe_eve
+@@ -634,10 +606,34 @@ acpi_ev_gpe_dispatch(struct acpi_gpe_event_info *gpe_event_info, u32 gpe_number)
"Unable to queue handler for GPE[0x%2X] - event disabled",
gpe_number));
}
@@ -111,7 +126,7 @@ diff -up linux-2.6.35.x86_64/drivers/acpi/acpica/evgpe.c.mjg linux-2.6.35.x86_64
+ dispatch.
+ handler->
+ context);
-+
+
+ /* It is now safe to clear level-triggered events. */
+
+ if ((gpe_event_info->flags & ACPI_GPE_XRUPT_TYPE_MASK) ==
@@ -125,12 +140,12 @@ diff -up linux-2.6.35.x86_64/drivers/acpi/acpica/evgpe.c.mjg linux-2.6.35.x86_64
+ }
+ }
+ }
-
++
+ if (!(gpe_event_info->flags & ACPI_GPE_DISPATCH_MASK)) {
/*
* No handler or method to run!
* 03/2010: This case should no longer be possible. We will not allow
-@@ -658,7 +654,6 @@ acpi_ev_gpe_dispatch(struct acpi_gpe_eve
+@@ -658,7 +654,6 @@ acpi_ev_gpe_dispatch(struct acpi_gpe_event_info *gpe_event_info, u32 gpe_number)
gpe_number));
return_UINT32(ACPI_INTERRUPT_NOT_HANDLED);
}
@@ -138,10 +153,11 @@ diff -up linux-2.6.35.x86_64/drivers/acpi/acpica/evgpe.c.mjg linux-2.6.35.x86_64
}
return_UINT32(ACPI_INTERRUPT_HANDLED);
-diff -up linux-2.6.35.x86_64/drivers/acpi/acpica/evgpeinit.c.mjg linux-2.6.35.x86_64/drivers/acpi/acpica/evgpeinit.c
---- linux-2.6.35.x86_64/drivers/acpi/acpica/evgpeinit.c.mjg 2010-10-04 13:52:05.089789421 -0400
-+++ linux-2.6.35.x86_64/drivers/acpi/acpica/evgpeinit.c 2010-10-04 13:52:50.951801067 -0400
-@@ -392,16 +392,7 @@ acpi_ev_match_gpe_method(acpi_handle obj
+diff --git a/drivers/acpi/acpica/evgpeinit.c b/drivers/acpi/acpica/evgpeinit.c
+index 2c7def9..9915b52 100644
+--- a/drivers/acpi/acpica/evgpeinit.c
++++ b/drivers/acpi/acpica/evgpeinit.c
+@@ -386,16 +386,7 @@ acpi_ev_match_gpe_method(acpi_handle obj_handle,
return_ACPI_STATUS(AE_OK);
}
@@ -159,10 +175,11 @@ diff -up linux-2.6.35.x86_64/drivers/acpi/acpica/evgpeinit.c.mjg linux-2.6.35.x8
/*
* If there is already a method, ignore this method. But check
* for a type mismatch (if both the _Lxx AND _Exx exist)
-diff -up linux-2.6.35.x86_64/drivers/acpi/acpica/evgpeutil.c.mjg linux-2.6.35.x86_64/drivers/acpi/acpica/evgpeutil.c
---- linux-2.6.35.x86_64/drivers/acpi/acpica/evgpeutil.c.mjg 2010-10-04 13:52:05.090789443 -0400
-+++ linux-2.6.35.x86_64/drivers/acpi/acpica/evgpeutil.c 2010-10-04 13:52:50.952801089 -0400
-@@ -323,12 +323,11 @@ acpi_ev_delete_gpe_handlers(struct acpi_
+diff --git a/drivers/acpi/acpica/evgpeutil.c b/drivers/acpi/acpica/evgpeutil.c
+index 19a0e51..434ad1b 100644
+--- a/drivers/acpi/acpica/evgpeutil.c
++++ b/drivers/acpi/acpica/evgpeutil.c
+@@ -323,12 +323,11 @@ acpi_ev_delete_gpe_handlers(struct acpi_gpe_xrupt_info *gpe_xrupt_info,
ACPI_GPE_REGISTER_WIDTH)
+ j];
@@ -177,10 +194,11 @@ diff -up linux-2.6.35.x86_64/drivers/acpi/acpica/evgpeutil.c.mjg linux-2.6.35.x8
}
}
}
-diff -up linux-2.6.35.x86_64/drivers/acpi/acpica/evxface.c.mjg linux-2.6.35.x86_64/drivers/acpi/acpica/evxface.c
---- linux-2.6.35.x86_64/drivers/acpi/acpica/evxface.c.mjg 2010-10-04 13:52:05.092789487 -0400
-+++ linux-2.6.35.x86_64/drivers/acpi/acpica/evxface.c 2010-10-04 13:52:50.954801133 -0400
-@@ -662,6 +662,8 @@ ACPI_EXPORT_SYMBOL(acpi_remove_notify_ha
+diff --git a/drivers/acpi/acpica/evxface.c b/drivers/acpi/acpica/evxface.c
+index 36af222..b097136 100644
+--- a/drivers/acpi/acpica/evxface.c
++++ b/drivers/acpi/acpica/evxface.c
+@@ -662,6 +662,8 @@ ACPI_EXPORT_SYMBOL(acpi_remove_notify_handler)
* edge- or level-triggered interrupt.
* Address - Address of the handler
* Context - Value passed to the handler on each GPE
@@ -189,7 +207,7 @@ diff -up linux-2.6.35.x86_64/drivers/acpi/acpica/evxface.c.mjg linux-2.6.35.x86_
*
* RETURN: Status
*
-@@ -671,7 +673,8 @@ ACPI_EXPORT_SYMBOL(acpi_remove_notify_ha
+@@ -671,7 +673,8 @@ ACPI_EXPORT_SYMBOL(acpi_remove_notify_handler)
acpi_status
acpi_install_gpe_handler(acpi_handle gpe_device,
u32 gpe_number,
@@ -199,7 +217,7 @@ diff -up linux-2.6.35.x86_64/drivers/acpi/acpica/evxface.c.mjg linux-2.6.35.x86_
{
struct acpi_gpe_event_info *gpe_event_info;
struct acpi_handler_info *handler;
-@@ -711,8 +714,7 @@ acpi_install_gpe_handler(acpi_handle gpe
+@@ -711,8 +714,7 @@ acpi_install_gpe_handler(acpi_handle gpe_device,
/* Make sure that there isn't a handler there already */
@@ -209,7 +227,7 @@ diff -up linux-2.6.35.x86_64/drivers/acpi/acpica/evxface.c.mjg linux-2.6.35.x86_
status = AE_ALREADY_EXISTS;
goto free_and_exit;
}
-@@ -721,7 +723,6 @@ acpi_install_gpe_handler(acpi_handle gpe
+@@ -721,7 +723,6 @@ acpi_install_gpe_handler(acpi_handle gpe_device,
handler->address = address;
handler->context = context;
@@ -217,15 +235,16 @@ diff -up linux-2.6.35.x86_64/drivers/acpi/acpica/evxface.c.mjg linux-2.6.35.x86_
handler->orig_flags = gpe_event_info->flags &
(ACPI_GPE_XRUPT_TYPE_MASK | ACPI_GPE_DISPATCH_MASK);
-@@ -733,17 +734,17 @@ acpi_install_gpe_handler(acpi_handle gpe
+@@ -732,7 +733,7 @@ acpi_install_gpe_handler(acpi_handle gpe_device,
*/
if ((handler->orig_flags & ACPI_GPE_DISPATCH_METHOD)
-- && !(gpe_event_info->flags & ACPI_GPE_CAN_WAKE))
-+ && !(gpe_event_info->flags & ACPI_GPE_CAN_WAKE) && !keep_method)
+- && gpe_event_info->runtime_count) {
++ && gpe_event_info->runtime_count && !keep_method) {
+ handler->orig_enabled = 1;
(void)acpi_raw_disable_gpe(gpe_event_info);
-
- /* Install the handler */
+ }
+@@ -741,10 +742,10 @@ acpi_install_gpe_handler(acpi_handle gpe_device,
gpe_event_info->dispatch.handler = handler;
@@ -239,7 +258,7 @@ diff -up linux-2.6.35.x86_64/drivers/acpi/acpica/evxface.c.mjg linux-2.6.35.x86_
gpe_event_info->flags |= (u8) (type | ACPI_GPE_DISPATCH_HANDLER);
acpi_os_release_lock(acpi_gbl_gpe_lock, flags);
-@@ -812,8 +813,7 @@ acpi_remove_gpe_handler(acpi_handle gpe_
+@@ -813,8 +814,7 @@ acpi_remove_gpe_handler(acpi_handle gpe_device,
/* Make sure that a handler is indeed installed */
@@ -249,7 +268,7 @@ diff -up linux-2.6.35.x86_64/drivers/acpi/acpica/evxface.c.mjg linux-2.6.35.x86_
status = AE_NOT_EXIST;
goto unlock_and_exit;
}
-@@ -829,9 +829,8 @@ acpi_remove_gpe_handler(acpi_handle gpe_
+@@ -830,9 +830,8 @@ acpi_remove_gpe_handler(acpi_handle gpe_device,
handler = gpe_event_info->dispatch.handler;
@@ -260,10 +279,11 @@ diff -up linux-2.6.35.x86_64/drivers/acpi/acpica/evxface.c.mjg linux-2.6.35.x86_
gpe_event_info->flags &=
~(ACPI_GPE_XRUPT_TYPE_MASK | ACPI_GPE_DISPATCH_MASK);
gpe_event_info->flags |= handler->orig_flags;
-diff -up linux-2.6.35.x86_64/drivers/acpi/ec.c.mjg linux-2.6.35.x86_64/drivers/acpi/ec.c
---- linux-2.6.35.x86_64/drivers/acpi/ec.c.mjg 2010-10-04 13:52:05.094789531 -0400
-+++ linux-2.6.35.x86_64/drivers/acpi/ec.c 2010-10-04 13:52:50.955801156 -0400
-@@ -746,7 +746,7 @@ static int ec_install_handlers(struct ac
+diff --git a/drivers/acpi/ec.c b/drivers/acpi/ec.c
+index 372ff80..9a39f82 100644
+--- a/drivers/acpi/ec.c
++++ b/drivers/acpi/ec.c
+@@ -740,7 +740,7 @@ static int ec_install_handlers(struct acpi_ec *ec)
return 0;
status = acpi_install_gpe_handler(NULL, ec->gpe,
ACPI_GPE_EDGE_TRIGGERED,
@@ -272,9 +292,10 @@ diff -up linux-2.6.35.x86_64/drivers/acpi/ec.c.mjg linux-2.6.35.x86_64/drivers/a
if (ACPI_FAILURE(status))
return -ENODEV;
-diff -up linux-2.6.35.x86_64/drivers/acpi/pci_bind.c.mjg linux-2.6.35.x86_64/drivers/acpi/pci_bind.c
---- linux-2.6.35.x86_64/drivers/acpi/pci_bind.c.mjg 2010-10-04 13:52:05.102789707 -0400
-+++ linux-2.6.35.x86_64/drivers/acpi/pci_bind.c 2010-10-04 13:52:50.962801311 -0400
+diff --git a/drivers/acpi/pci_bind.c b/drivers/acpi/pci_bind.c
+index 2ef0409..8b3cc6a 100644
+--- a/drivers/acpi/pci_bind.c
++++ b/drivers/acpi/pci_bind.c
@@ -28,6 +28,7 @@
#include <linux/pci.h>
#include <linux/pci-acpi.h>
@@ -327,7 +348,7 @@ diff -up linux-2.6.35.x86_64/drivers/acpi/pci_bind.c.mjg linux-2.6.35.x86_64/dri
static int acpi_pci_unbind(struct acpi_device *device)
{
struct pci_dev *dev;
-@@ -43,6 +81,30 @@ static int acpi_pci_unbind(struct acpi_d
+@@ -43,6 +81,30 @@ static int acpi_pci_unbind(struct acpi_device *device)
if (!dev)
goto out;
@@ -358,7 +379,7 @@ diff -up linux-2.6.35.x86_64/drivers/acpi/pci_bind.c.mjg linux-2.6.35.x86_64/dri
device_set_run_wake(&dev->dev, false);
pci_acpi_remove_pm_notifier(device);
-@@ -71,6 +133,30 @@ static int acpi_pci_bind(struct acpi_dev
+@@ -71,6 +133,30 @@ static int acpi_pci_bind(struct acpi_device *device)
return 0;
pci_acpi_add_pm_notifier(device, dev);
@@ -389,25 +410,24 @@ diff -up linux-2.6.35.x86_64/drivers/acpi/pci_bind.c.mjg linux-2.6.35.x86_64/dri
if (device->wakeup.flags.run_wake)
device_set_run_wake(&dev->dev, true);
-diff -up linux-2.6.35.x86_64/drivers/acpi/sleep.c.mjg linux-2.6.35.x86_64/drivers/acpi/sleep.c
---- linux-2.6.35.x86_64/drivers/acpi/sleep.c.mjg 2010-10-04 13:52:05.103789729 -0400
-+++ linux-2.6.35.x86_64/drivers/acpi/sleep.c 2010-10-04 13:52:50.963801333 -0400
-@@ -631,9 +631,9 @@ int acpi_pm_device_sleep_state(struct de
- acpi_method[3] = 'W';
- status = acpi_evaluate_integer(handle, acpi_method, NULL,
- &d_max);
-- if (ACPI_FAILURE(status)) {
-+ if (ACPI_FAILURE(status) && status != AE_NOT_FOUND) {
- d_max = d_min;
+diff --git a/drivers/acpi/sleep.c b/drivers/acpi/sleep.c
+index 721d93b..b0ddef6 100644
+--- a/drivers/acpi/sleep.c
++++ b/drivers/acpi/sleep.c
+@@ -643,7 +643,7 @@ int acpi_pm_device_sleep_state(struct device *dev, int *d_min_p)
+ if (acpi_target_sleep_state != ACPI_STATE_S0 ||
+ status != AE_NOT_FOUND)
+ d_max = d_min;
- } else if (d_max < d_min) {
+ } else if (ACPI_SUCCESS(status) && d_max < d_min) {
/* Warn the user of the broken DSDT */
printk(KERN_WARNING "ACPI: Wrong value from %s\n",
acpi_method);
-diff -up linux-2.6.35.x86_64/drivers/char/ipmi/ipmi_si_intf.c.mjg linux-2.6.35.x86_64/drivers/char/ipmi/ipmi_si_intf.c
---- linux-2.6.35.x86_64/drivers/char/ipmi/ipmi_si_intf.c.mjg 2010-10-04 13:52:05.097789597 -0400
-+++ linux-2.6.35.x86_64/drivers/char/ipmi/ipmi_si_intf.c 2010-10-04 13:52:50.958801223 -0400
-@@ -1959,7 +1959,7 @@ static int acpi_gpe_irq_setup(struct smi
+diff --git a/drivers/char/ipmi/ipmi_si_intf.c b/drivers/char/ipmi/ipmi_si_intf.c
+index 035da9e..62a48b2 100644
+--- a/drivers/char/ipmi/ipmi_si_intf.c
++++ b/drivers/char/ipmi/ipmi_si_intf.c
+@@ -1970,7 +1970,7 @@ static int acpi_gpe_irq_setup(struct smi_info *info)
info->irq,
ACPI_GPE_LEVEL_TRIGGERED,
&ipmi_acpi_gpe,
@@ -416,126 +436,11 @@ diff -up linux-2.6.35.x86_64/drivers/char/ipmi/ipmi_si_intf.c.mjg linux-2.6.35.x
if (status != AE_OK) {
dev_warn(info->dev, "%s unable to claim ACPI GPE %d,"
" running polled\n", DEVICE_NAME, info->irq);
-diff -up linux-2.6.35.x86_64/drivers/pci/pci.c.mjg linux-2.6.35.x86_64/drivers/pci/pci.c
---- linux-2.6.35.x86_64/drivers/pci/pci.c.mjg 2010-10-04 13:52:05.105789773 -0400
-+++ linux-2.6.35.x86_64/drivers/pci/pci.c 2010-10-04 13:52:50.965801377 -0400
-@@ -38,6 +38,19 @@ EXPORT_SYMBOL(pci_pci_problems);
-
- unsigned int pci_pm_d3_delay;
-
-+static void pci_pme_list_scan(struct work_struct *work);
-+
-+static LIST_HEAD(pci_pme_list);
-+static DEFINE_MUTEX(pci_pme_list_mutex);
-+static DECLARE_DELAYED_WORK(pci_pme_work, pci_pme_list_scan);
-+
-+struct pci_pme_device {
-+ struct list_head list;
-+ struct pci_dev *dev;
-+};
-+
-+#define PME_TIMEOUT 1000 /* How long between PME checks */
-+
- static void pci_dev_d3_sleep(struct pci_dev *dev)
- {
- unsigned int delay = dev->d3_delay;
-@@ -1331,6 +1344,32 @@ bool pci_pme_capable(struct pci_dev *dev
- return !!(dev->pme_support & (1 << state));
- }
-
-+static void pci_pme_list_scan(struct work_struct *work)
-+{
-+ struct pci_pme_device *pme_dev;
-+
-+ mutex_lock(&pci_pme_list_mutex);
-+ if (!list_empty(&pci_pme_list)) {
-+ list_for_each_entry(pme_dev, &pci_pme_list, list)
-+ pci_pme_wakeup(pme_dev->dev, NULL);
-+ schedule_delayed_work(&pci_pme_work, msecs_to_jiffies(PME_TIMEOUT));
-+ }
-+ mutex_unlock(&pci_pme_list_mutex);
-+}
-+
-+/**
-+ * pci_external_pme - is a device an external PCI PME source?
-+ * @dev: PCI device to check
-+ *
-+ */
-+
-+static bool pci_external_pme(struct pci_dev *dev)
-+{
-+ if (pci_is_pcie(dev) || dev->bus->number == 0)
-+ return false;
-+ return true;
-+}
-+
- /**
- * pci_pme_active - enable or disable PCI device's PME# function
- * @dev: PCI device to handle.
-@@ -1354,6 +1393,44 @@ void pci_pme_active(struct pci_dev *dev,
-
- pci_write_config_word(dev, dev->pm_cap + PCI_PM_CTRL, pmcsr);
-
-+ /* PCI (as opposed to PCIe) PME requires that the device have
-+ its PME# line hooked up correctly. Not all hardware vendors
-+ do this, so the PME never gets delivered and the device
-+ remains asleep. The easiest way around this is to
-+ periodically walk the list of suspended devices and check
-+ whether any have their PME flag set. The assumption is that
-+ we'll wake up often enough anyway that this won't be a huge
-+ hit, and the power savings from the devices will still be a
-+ win. */
-+
-+ if (pci_external_pme(dev)) {
-+ struct pci_pme_device *pme_dev;
-+ if (enable) {
-+ pme_dev = kmalloc(sizeof(struct pci_pme_device),
-+ GFP_KERNEL);
-+ if (!pme_dev)
-+ goto out;
-+ pme_dev->dev = dev;
-+ mutex_lock(&pci_pme_list_mutex);
-+ list_add(&pme_dev->list, &pci_pme_list);
-+ if (list_is_singular(&pci_pme_list))
-+ schedule_delayed_work(&pci_pme_work,
-+ msecs_to_jiffies(PME_TIMEOUT));
-+ mutex_unlock(&pci_pme_list_mutex);
-+ } else {
-+ mutex_lock(&pci_pme_list_mutex);
-+ list_for_each_entry(pme_dev, &pci_pme_list, list) {
-+ if (pme_dev->dev == dev) {
-+ list_del(&pme_dev->list);
-+ kfree(pme_dev);
-+ break;
-+ }
-+ }
-+ mutex_unlock(&pci_pme_list_mutex);
-+ }
-+ }
-+
-+out:
- dev_printk(KERN_DEBUG, &dev->dev, "PME# %s\n",
- enable ? "enabled" : "disabled");
- }
-diff -up linux-2.6.35.x86_64/drivers/pci/pci.h.mjg linux-2.6.35.x86_64/drivers/pci/pci.h
---- linux-2.6.35.x86_64/drivers/pci/pci.h.mjg 2010-10-04 13:52:05.100789663 -0400
-+++ linux-2.6.35.x86_64/drivers/pci/pci.h 2010-10-04 13:52:50.960801267 -0400
-@@ -63,11 +63,8 @@ struct pci_platform_pm_ops {
- extern int pci_set_platform_pm(struct pci_platform_pm_ops *ops);
- extern void pci_update_current_state(struct pci_dev *dev, pci_power_t state);
- extern void pci_disable_enabled_device(struct pci_dev *dev);
--extern bool pci_check_pme_status(struct pci_dev *dev);
- extern int pci_finish_runtime_suspend(struct pci_dev *dev);
--extern void pci_wakeup_event(struct pci_dev *dev);
- extern int __pci_pme_wakeup(struct pci_dev *dev, void *ign);
--extern void pci_pme_wakeup_bus(struct pci_bus *bus);
- extern void pci_pm_init(struct pci_dev *dev);
- extern void platform_pci_wakeup_init(struct pci_dev *dev);
- extern void pci_allocate_cap_save_buffers(struct pci_dev *dev);
-diff -up linux-2.6.35.x86_64/include/acpi/acpixf.h.mjg linux-2.6.35.x86_64/include/acpi/acpixf.h
---- linux-2.6.35.x86_64/include/acpi/acpixf.h.mjg 2010-10-04 13:52:05.099789641 -0400
-+++ linux-2.6.35.x86_64/include/acpi/acpixf.h 2010-10-04 13:52:50.959801245 -0400
-@@ -253,7 +253,8 @@ acpi_remove_address_space_handler(acpi_h
+diff --git a/include/acpi/acpixf.h b/include/acpi/acpixf.h
+index 53b7cfd..740eb7e 100644
+--- a/include/acpi/acpixf.h
++++ b/include/acpi/acpixf.h
+@@ -258,7 +258,8 @@ acpi_remove_address_space_handler(acpi_handle device,
acpi_status
acpi_install_gpe_handler(acpi_handle gpe_device,
u32 gpe_number,
@@ -545,16 +450,3 @@ diff -up linux-2.6.35.x86_64/include/acpi/acpixf.h.mjg linux-2.6.35.x86_64/inclu
acpi_status
acpi_remove_gpe_handler(acpi_handle gpe_device,
-diff -up linux-2.6.35.x86_64/include/linux/pci.h.mjg linux-2.6.35.x86_64/include/linux/pci.h
---- linux-2.6.35.x86_64/include/linux/pci.h.mjg 2010-10-04 13:52:05.101789685 -0400
-+++ linux-2.6.35.x86_64/include/linux/pci.h 2010-10-04 13:52:50.962801311 -0400
-@@ -819,6 +819,9 @@ pci_power_t pci_target_state(struct pci_
- int pci_prepare_to_sleep(struct pci_dev *dev);
- int pci_back_from_sleep(struct pci_dev *dev);
- bool pci_dev_run_wake(struct pci_dev *dev);
-+bool pci_check_pme_status(struct pci_dev *dev);
-+void pci_wakeup_event(struct pci_dev *dev);
-+void pci_pme_wakeup_bus(struct pci_bus *bus);
-
- static inline int pci_enable_wake(struct pci_dev *dev, pci_power_t state,
- bool enable)
diff --git a/linux-2.6-uvc-autosuspend.patch b/linux-2.6-uvc-autosuspend.patch
deleted file mode 100644
index 6c965c62f..000000000
--- a/linux-2.6-uvc-autosuspend.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-commit 4a3757e0ae269f710292dd75013532c5a57ccb00
-Author: Matthew Garrett <mjg@redhat.com>
-Date: Thu Sep 16 13:38:38 2010 -0400
-
- uvc: Enable USB autosuspend by default on uvcvideo
-
- We've been doing this for a while in Fedora without any complaints.
-
- Signed-off-by: Matthew Garrett <mjg@redhat.com>
-
-diff --git a/drivers/media/video/uvc/uvc_driver.c b/drivers/media/video/uvc/uvc_driver.c
-index 8bdd940..28ed5b4 100644
---- a/drivers/media/video/uvc/uvc_driver.c
-+++ b/drivers/media/video/uvc/uvc_driver.c
-@@ -1814,6 +1814,7 @@ static int uvc_probe(struct usb_interface *intf,
- }
-
- uvc_trace(UVC_TRACE_PROBE, "UVC device initialized.\n");
-+ usb_enable_autosuspend(udev);
- return 0;
-
- error:
diff --git a/pci-crs-fixes.patch b/pci-crs-fixes.patch
deleted file mode 100644
index b4fd01502..000000000
--- a/pci-crs-fixes.patch
+++ /dev/null
@@ -1,593 +0,0 @@
- This revision is to address two problems found by Horst H. von Brand while
- testing the v2 patches in Fedora:
- https://bugzilla.redhat.com/show_bug.cgi?id=637647
- On his machine, we don't use _CRS by default, and the BIOS left some bridge
- windows disabled.
-
- Problem 1: When we assigned space for the windows, we started at the top
- and allocated [mem 0xffffffffffe00000-0xffffffffffffffff], which is
- obviously useless because the CPU doesn't support physical addresses that
- large.
-
- Problem 2: Subsequent allocations failed because I made an error in
- find_resource(). We look for available space from [child->end + 1 to
- root->end], and if the last child ends exactly at 0xffffffffffffffff, we
- wrap around and start from zero.
-
- I made the top-down allocation conditional: an arch can select it at
- boot-time, and there's a kernel command line option to change it for
- debugging.
-
-
-When we move PCI devices, we currently allocate space bottom-up, i.e., we look
-at PCI bus resources in the order we found them, we look at gaps between child
-resources bottom-up, and we align the new space at the bottom of an available
-region.
-
-On x86, we move PCI devices more than we used to because we now pay attention
-to the PCI host bridge windows from ACPI. For example, when we find a device
-that's outside all the known host bridge windows, we try to move it into a
-window, and we look for space starting at the bottom.
-
-Windows does similar device moves, but it looks for space top-down rather than
-bottom-up. Since most machines are better-tested with Windows than Linux, this
-difference means that Linux is more likely to trip over BIOS bugs in the PCI
-host bridge window descriptions than Windows is.
-
-We've had several reports of Dell machines where the BIOS leaves the AHCI
-controller outside the host bridge windows (BIOS bug #1), *and* the lowest
-host bridge window includes an area that doesn't actually reach PCI (BIOS
-bug #2). The result is that Windows (which moves AHCI to the top of a window)
-works fine, while Linux (which moves AHCI to the bottom, buggy, area) doesn't
-work.
-
-These patches change Linux to allocate space more like Windows does:
-
- 1) The x86 pcibios_align_resource() will choose space from the
- end of an available area, not the beginning.
-
- 2) In the generic allocate_resource() path, we'll look for space
- between existing children from the top, not from the bottom.
-
- 3) When pci_bus_alloc_resource() looks for available space, it
- will start from the highest window, not the first one we found.
-
-This series fixes a 2.6.34 regression that prevents many Dell Precision
-workstations from booting:
-
- https://bugzilla.kernel.org/show_bug.cgi?id=16228
-
-Changes from v3 to v4:
- - Use round_down() rather than adding ALIGN_DOWN().
- - Replace ARCH_HAS_TOP_DOWN_ALLOC #define with a boot-time architecture
- choice and add a "resource_alloc_from_bottom" command line option to
- revert to the old behavior (NOTE: this only affects allocate_resource(),
- not pcibios_align_resource() or pci_bus_alloc_resource()).
- - Fixed find_resource_from_top() again; it still didn't handle a child
- that ended at the parent's end correctly.
-
-Changes from v2 to v3:
- - Updated iomem_resource.end to reflect the end of usable physical address
- space. Otherwise, we might allocate right up to 0xffffffff_ffffffff,
- which isn't usable.
- - Make allocate_resource() change conditional on ARCH_HAS_TOP_DOWN_ALLOC.
- Without arch-specific changes like the above, it's too dangerous to
- make this change for everybody at once.
- - Fix 64-bit wraparound in find_resource(). If the last child happened
- to end at ~0, we computed the highest available space as [child->end + 1,
- root->end], which makes us think the available space started at 0,
- which makes us return space that may already be allocated.
-
-Changes from v1 to v2:
- - Moved check for allocating before the available area from
- pcibios_align_resource() to find_resource(). Better to do it
- after the alignment callback is done, and make it generic.
- - Fixed pcibios_align_resource() alignment. If we start from the
- end of the available area, we must align *downward*, not upward.
- - Fixed pcibios_align_resource() ISA alias avoidance. Again, since
- the starting point is the end of the area, we must align downward
- when we avoid aliased areas.
----
-
-Bjorn Helgaas (6):
- resources: ensure alignment callback doesn't allocate below available start
- resources: support allocating space within a region from the top down
- PCI: allocate bus resources from the top down
- x86/PCI: allocate space from the end of a region, not the beginning
- x86: update iomem_resource end based on CPU physical address capabilities
- x86: allocate space within a region top-down
-
-
- Documentation/kernel-parameters.txt | 5 ++
- arch/x86/kernel/setup.c | 2 +
- arch/x86/pci/i386.c | 17 ++++--
- drivers/pci/bus.c | 53 +++++++++++++++++--
- include/linux/ioport.h | 1
- kernel/resource.c | 99 ++++++++++++++++++++++++++++++++++-
- 6 files changed, 163 insertions(+), 14 deletions(-)
---
-To unsubscribe from this list: send the line "unsubscribe linux-pci" in
-the body of a message to majordomo@vger.kernel.org
-More majordomo info at http://vger.kernel.org/majordomo-info.html
-The alignment callback returns a proposed location, which may have been
-adjusted to avoid ISA aliases or for other architecture-specific reasons.
-We already had a check ("tmp.start < tmp.end") to make sure the callback
-doesn't return a location above the available area.
-
-This patch adds a check to make sure the callback doesn't return something
-*below* the available area, as may happen if the callback tries to allocate
-top-down.
-
-Signed-off-by: Bjorn Helgaas <bjorn.helgaas@hp.com>
----
-
- kernel/resource.c | 10 ++++++++--
- 1 files changed, 8 insertions(+), 2 deletions(-)
-
-
-diff --git a/kernel/resource.c b/kernel/resource.c
-index 7b36976..ace2269 100644
---- a/kernel/resource.c
-+++ b/kernel/resource.c
-@@ -371,6 +371,7 @@ static int find_resource(struct resource *root, struct resource *new,
- {
- struct resource *this = root->child;
- struct resource tmp = *new;
-+ resource_size_t start;
-
- tmp.start = root->start;
- /*
-@@ -391,8 +392,13 @@ static int find_resource(struct resource *root, struct resource *new,
- if (tmp.end > max)
- tmp.end = max;
- tmp.start = ALIGN(tmp.start, align);
-- if (alignf)
-- tmp.start = alignf(alignf_data, &tmp, size, align);
-+ if (alignf) {
-+ start = alignf(alignf_data, &tmp, size, align);
-+ if (tmp.start <= start && start <= tmp.end)
-+ tmp.start = start;
-+ else
-+ tmp.start = tmp.end;
-+ }
- if (tmp.start < tmp.end && tmp.end - tmp.start >= size - 1) {
- new->start = tmp.start;
- new->end = tmp.start + size - 1;
-
---
-To unsubscribe from this list: send the line "unsubscribe linux-pci" in
-the body of a message to majordomo@vger.kernel.org
-More majordomo info at http://vger.kernel.org/majordomo-info.html
-Allocate space from the top of a region first, then work downward,
-if an architecture desires this.
-
-When we allocate space from a resource, we look for gaps between children
-of the resource. Previously, we always looked at gaps from the bottom up.
-For example, given this:
-
- [mem 0xbff00000-0xf7ffffff] PCI Bus 0000:00
- [mem 0xbff00000-0xbfffffff] gap -- available
- [mem 0xc0000000-0xdfffffff] PCI Bus 0000:02
- [mem 0xe0000000-0xf7ffffff] gap -- available
-
-we attempted to allocate from the [mem 0xbff00000-0xbfffffff] gap first,
-then the [mem 0xe0000000-0xf7ffffff] gap.
-
-With this patch an architecture can choose to allocate from the top gap
-[mem 0xe0000000-0xf7ffffff] first.
-
-We can't do this across the board because iomem_resource.end is initialized
-to 0xffffffff_ffffffff on 64-bit architectures, and most machines can't
-address the entire 64-bit physical address space. Therefore, we only
-allocate top-down if the arch requests it by clearing
-"resource_alloc_from_bottom".
-
-Signed-off-by: Bjorn Helgaas <bjorn.helgaas@hp.com>
----
-
- Documentation/kernel-parameters.txt | 5 ++
- include/linux/ioport.h | 1
- kernel/resource.c | 89 +++++++++++++++++++++++++++++++++++
- 3 files changed, 94 insertions(+), 1 deletions(-)
-
-
-diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt
-index 8dd7248..fe50cbd 100644
---- a/Documentation/kernel-parameters.txt
-+++ b/Documentation/kernel-parameters.txt
-@@ -2156,6 +2156,11 @@ and is between 256 and 4096 characters. It is defined in the file
- reset_devices [KNL] Force drivers to reset the underlying device
- during initialization.
-
-+ resource_alloc_from_bottom
-+ Allocate new resources from the beginning of available
-+ space, not the end. If you need to use this, please
-+ report a bug.
-+
- resume= [SWSUSP]
- Specify the partition device for software suspend
-
-diff --git a/include/linux/ioport.h b/include/linux/ioport.h
-index b227902..d377ea8 100644
---- a/include/linux/ioport.h
-+++ b/include/linux/ioport.h
-@@ -112,6 +112,7 @@ struct resource_list {
- /* PC/ISA/whatever - the normal PC address spaces: IO and memory */
- extern struct resource ioport_resource;
- extern struct resource iomem_resource;
-+extern int resource_alloc_from_bottom;
-
- extern struct resource *request_resource_conflict(struct resource *root, struct resource *new);
- extern int request_resource(struct resource *root, struct resource *new);
-diff --git a/kernel/resource.c b/kernel/resource.c
-index ace2269..8d337a9 100644
---- a/kernel/resource.c
-+++ b/kernel/resource.c
-@@ -40,6 +40,23 @@ EXPORT_SYMBOL(iomem_resource);
-
- static DEFINE_RWLOCK(resource_lock);
-
-+/*
-+ * By default, we allocate free space bottom-up. The architecture can request
-+ * top-down by clearing this flag. The user can override the architecture's
-+ * choice with the "resource_alloc_from_bottom" kernel boot option, but that
-+ * should only be a debugging tool.
-+ */
-+int resource_alloc_from_bottom = 1;
-+
-+static __init int setup_alloc_from_bottom(char *s)
-+{
-+ printk(KERN_INFO
-+ "resource: allocating from bottom-up; please report a bug\n");
-+ resource_alloc_from_bottom = 1;
-+ return 0;
-+}
-+early_param("resource_alloc_from_bottom", setup_alloc_from_bottom);
-+
- static void *r_next(struct seq_file *m, void *v, loff_t *pos)
- {
- struct resource *p = v;
-@@ -358,7 +375,74 @@ int __weak page_is_ram(unsigned long pfn)
- }
-
- /*
-+ * Find the resource before "child" in the sibling list of "root" children.
-+ */
-+static struct resource *find_sibling_prev(struct resource *root, struct resource *child)
-+{
-+ struct resource *this;
-+
-+ for (this = root->child; this; this = this->sibling)
-+ if (this->sibling == child)
-+ return this;
-+
-+ return NULL;
-+}
-+
-+/*
-+ * Find empty slot in the resource tree given range and alignment.
-+ * This version allocates from the end of the root resource first.
-+ */
-+static int find_resource_from_top(struct resource *root, struct resource *new,
-+ resource_size_t size, resource_size_t min,
-+ resource_size_t max, resource_size_t align,
-+ resource_size_t (*alignf)(void *,
-+ const struct resource *,
-+ resource_size_t,
-+ resource_size_t),
-+ void *alignf_data)
-+{
-+ struct resource *this;
-+ struct resource tmp = *new;
-+ resource_size_t start;
-+
-+ tmp.start = root->end;
-+ tmp.end = root->end;
-+
-+ this = find_sibling_prev(root, NULL);
-+ for (;;) {
-+ if (this) {
-+ if (this->end < root->end)
-+ tmp.start = this->end + 1;
-+ } else
-+ tmp.start = root->start;
-+ if (tmp.start < min)
-+ tmp.start = min;
-+ if (tmp.end > max)
-+ tmp.end = max;
-+ tmp.start = ALIGN(tmp.start, align);
-+ if (alignf) {
-+ start = alignf(alignf_data, &tmp, size, align);
-+ if (tmp.start <= start && start <= tmp.end)
-+ tmp.start = start;
-+ else
-+ tmp.start = tmp.end;
-+ }
-+ if (tmp.start < tmp.end && tmp.end - tmp.start >= size - 1) {
-+ new->start = tmp.start;
-+ new->end = tmp.start + size - 1;
-+ return 0;
-+ }
-+ if (!this || this->start == root->start)
-+ break;
-+ tmp.end = this->start - 1;
-+ this = find_sibling_prev(root, this);
-+ }
-+ return -EBUSY;
-+}
-+
-+/*
- * Find empty slot in the resource tree given range and alignment.
-+ * This version allocates from the beginning of the root resource first.
- */
- static int find_resource(struct resource *root, struct resource *new,
- resource_size_t size, resource_size_t min,
-@@ -435,7 +519,10 @@ int allocate_resource(struct resource *root, struct resource *new,
- int err;
-
- write_lock(&resource_lock);
-- err = find_resource(root, new, size, min, max, align, alignf, alignf_data);
-+ if (resource_alloc_from_bottom)
-+ err = find_resource(root, new, size, min, max, align, alignf, alignf_data);
-+ else
-+ err = find_resource_from_top(root, new, size, min, max, align, alignf, alignf_data);
- if (err >= 0 && __request_resource(root, new))
- err = -EBUSY;
- write_unlock(&resource_lock);
-
---
-To unsubscribe from this list: send the line "unsubscribe linux-pci" in
-the body of a message to majordomo@vger.kernel.org
-More majordomo info at http://vger.kernel.org/majordomo-info.html
-Allocate space from the highest-address PCI bus resource first, then work
-downward.
-
-Previously, we looked for space in PCI host bridge windows in the order
-we discovered the windows. For example, given the following windows
-(discovered via an ACPI _CRS method):
-
- pci_root PNP0A03:00: host bridge window [mem 0x000a0000-0x000bffff]
- pci_root PNP0A03:00: host bridge window [mem 0x000c0000-0x000effff]
- pci_root PNP0A03:00: host bridge window [mem 0x000f0000-0x000fffff]
- pci_root PNP0A03:00: host bridge window [mem 0xbff00000-0xf7ffffff]
- pci_root PNP0A03:00: host bridge window [mem 0xff980000-0xff980fff]
- pci_root PNP0A03:00: host bridge window [mem 0xff97c000-0xff97ffff]
- pci_root PNP0A03:00: host bridge window [mem 0xfed20000-0xfed9ffff]
-
-we attempted to allocate from [mem 0x000a0000-0x000bffff] first, then
-[mem 0x000c0000-0x000effff], and so on.
-
-With this patch, we allocate from [mem 0xff980000-0xff980fff] first, then
-[mem 0xff97c000-0xff97ffff], [mem 0xfed20000-0xfed9ffff], etc.
-
-Allocating top-down follows Windows practice, so we're less likely to
-trip over BIOS defects in the _CRS description.
-
-On the machine above (a Dell T3500), the [mem 0xbff00000-0xbfffffff] region
-doesn't actually work and is likely a BIOS defect. The symptom is that we
-move the AHCI controller to 0xbff00000, which leads to "Boot has failed,
-sleeping forever," a BUG in ahci_stop_engine(), or some other boot failure.
-
-Reference: https://bugzilla.kernel.org/show_bug.cgi?id=16228#c43
-Reference: https://bugzilla.redhat.com/show_bug.cgi?id=620313
-Reference: https://bugzilla.redhat.com/show_bug.cgi?id=629933
-Reported-by: Brian Bloniarz <phunge0@hotmail.com>
-Reported-and-tested-by: Stefan Becker <chemobejk@gmail.com>
-Reported-by: Denys Vlasenko <dvlasenk@redhat.com>
-Signed-off-by: Bjorn Helgaas <bjorn.helgaas@hp.com>
----
-
- drivers/pci/bus.c | 53 ++++++++++++++++++++++++++++++++++++++++++++++++-----
- 1 files changed, 48 insertions(+), 5 deletions(-)
-
-
-diff --git a/drivers/pci/bus.c b/drivers/pci/bus.c
-index 7f0af0e..172bf26 100644
---- a/drivers/pci/bus.c
-+++ b/drivers/pci/bus.c
-@@ -64,6 +64,49 @@ void pci_bus_remove_resources(struct pci_bus *bus)
- }
- }
-
-+/*
-+ * Find the highest-address bus resource below the cursor "res". If the
-+ * cursor is NULL, return the highest resource.
-+ */
-+static struct resource *pci_bus_find_resource_prev(struct pci_bus *bus,
-+ unsigned int type,
-+ struct resource *res)
-+{
-+ struct resource *r, *prev = NULL;
-+ int i;
-+
-+ pci_bus_for_each_resource(bus, r, i) {
-+ if (!r)
-+ continue;
-+
-+ if ((r->flags & IORESOURCE_TYPE_BITS) != type)
-+ continue;
-+
-+ /* If this resource is at or past the cursor, skip it */
-+ if (res) {
-+ if (r == res)
-+ continue;
-+ if (r->end > res->end)
-+ continue;
-+ if (r->end == res->end && r->start > res->start)
-+ continue;
-+ }
-+
-+ if (!prev)
-+ prev = r;
-+
-+ /*
-+ * A small resource is higher than a large one that ends at
-+ * the same address.
-+ */
-+ if (r->end > prev->end ||
-+ (r->end == prev->end && r->start > prev->start))
-+ prev = r;
-+ }
-+
-+ return prev;
-+}
-+
- /**
- * pci_bus_alloc_resource - allocate a resource from a parent bus
- * @bus: PCI bus
-@@ -89,9 +132,10 @@ pci_bus_alloc_resource(struct pci_bus *bus, struct resource *res,
- resource_size_t),
- void *alignf_data)
- {
-- int i, ret = -ENOMEM;
-+ int ret = -ENOMEM;
- struct resource *r;
- resource_size_t max = -1;
-+ unsigned int type = res->flags & IORESOURCE_TYPE_BITS;
-
- type_mask |= IORESOURCE_IO | IORESOURCE_MEM;
-
-@@ -99,10 +143,9 @@ pci_bus_alloc_resource(struct pci_bus *bus, struct resource *res,
- if (!(res->flags & IORESOURCE_MEM_64))
- max = PCIBIOS_MAX_MEM_32;
-
-- pci_bus_for_each_resource(bus, r, i) {
-- if (!r)
-- continue;
--
-+ /* Look for space at highest addresses first */
-+ r = pci_bus_find_resource_prev(bus, type, NULL);
-+ for ( ; r; r = pci_bus_find_resource_prev(bus, type, r)) {
- /* type_mask must match */
- if ((res->flags ^ r->flags) & type_mask)
- continue;
-
---
-To unsubscribe from this list: send the line "unsubscribe linux-pci" in
-the body of a message to majordomo@vger.kernel.org
-More majordomo info at http://vger.kernel.org/majordomo-info.html
-Allocate from the end of a region, not the beginning.
-
-For example, if we need to allocate 0x800 bytes for a device on bus
-0000:00 given these resources:
-
- [mem 0xbff00000-0xdfffffff] PCI Bus 0000:00
- [mem 0xc0000000-0xdfffffff] PCI Bus 0000:02
-
-the available space at [mem 0xbff00000-0xbfffffff] is passed to the
-alignment callback (pcibios_align_resource()). Prior to this patch, we
-would put the new 0x800 byte resource at the beginning of that available
-space, i.e., at [mem 0xbff00000-0xbff007ff].
-
-With this patch, we put it at the end, at [mem 0xbffff800-0xbfffffff].
-
-Reference: https://bugzilla.kernel.org/show_bug.cgi?id=16228#c41
-Signed-off-by: Bjorn Helgaas <bjorn.helgaas@hp.com>
----
-
- arch/x86/pci/i386.c | 17 +++++++++++------
- 1 files changed, 11 insertions(+), 6 deletions(-)
-
-
-diff --git a/arch/x86/pci/i386.c b/arch/x86/pci/i386.c
-index 5525309..826140a 100644
---- a/arch/x86/pci/i386.c
-+++ b/arch/x86/pci/i386.c
-@@ -65,16 +65,21 @@ pcibios_align_resource(void *data, const struct resource *res,
- resource_size_t size, resource_size_t align)
- {
- struct pci_dev *dev = data;
-- resource_size_t start = res->start;
-+ resource_size_t start = round_down(res->end - size + 1, align);
-
- if (res->flags & IORESOURCE_IO) {
-- if (skip_isa_ioresource_align(dev))
-- return start;
-- if (start & 0x300)
-- start = (start + 0x3ff) & ~0x3ff;
-+
-+ /*
-+ * If we're avoiding ISA aliases, the largest contiguous I/O
-+ * port space is 256 bytes. Clearing bits 9 and 10 preserves
-+ * all 256-byte and smaller alignments, so the result will
-+ * still be correctly aligned.
-+ */
-+ if (!skip_isa_ioresource_align(dev))
-+ start &= ~0x300;
- } else if (res->flags & IORESOURCE_MEM) {
- if (start < BIOS_END)
-- start = BIOS_END;
-+ start = res->end; /* fail; no space */
- }
- return start;
- }
-
---
-To unsubscribe from this list: send the line "unsubscribe linux-pci" in
-the body of a message to majordomo@vger.kernel.org
-More majordomo info at http://vger.kernel.org/majordomo-info.html
-The iomem_resource map reflects the available physical address space.
-We statically initialize the end to -1, i.e., 0xffffffff_ffffffff, but
-of course we can only use as much as the CPU can address.
-
-This patch updates the end based on the CPU capabilities, so we don't
-mistakenly allocate space that isn't usable, as we're likely to do when
-allocating from the top-down.
-
-Signed-off-by: Bjorn Helgaas <bjorn.helgaas@hp.com>
----
-
- arch/x86/kernel/setup.c | 1 +
- 1 files changed, 1 insertions(+), 0 deletions(-)
-
-
-diff --git a/arch/x86/kernel/setup.c b/arch/x86/kernel/setup.c
-index c3a4fbb..922b5a1 100644
---- a/arch/x86/kernel/setup.c
-+++ b/arch/x86/kernel/setup.c
-@@ -788,6 +788,7 @@ void __init setup_arch(char **cmdline_p)
-
- x86_init.oem.arch_setup();
-
-+ iomem_resource.end = (1ULL << boot_cpu_data.x86_phys_bits) - 1;
- setup_memory_map();
- parse_setup_data();
- /* update the e820_saved too */
-
---
-To unsubscribe from this list: send the line "unsubscribe linux-pci" in
-the body of a message to majordomo@vger.kernel.org
-More majordomo info at http://vger.kernel.org/majordomo-info.html
-Request that allocate_resource() use available space from high addresses
-first, rather than the default of using low addresses first.
-
-The most common place this makes a difference is when we move or assign
-new PCI device resources. Low addresses are generally scarce, so it's
-better to use high addresses when possible. This follows Windows practice
-for PCI allocation.
-
-Reference: https://bugzilla.kernel.org/show_bug.cgi?id=16228#c42
-Signed-off-by: Bjorn Helgaas <bjorn.helgaas@hp.com>
----
-
- arch/x86/kernel/setup.c | 1 +
- 1 files changed, 1 insertions(+), 0 deletions(-)
-
-
-diff --git a/arch/x86/kernel/setup.c b/arch/x86/kernel/setup.c
-index 922b5a1..0fe76df 100644
---- a/arch/x86/kernel/setup.c
-+++ b/arch/x86/kernel/setup.c
-@@ -788,6 +788,7 @@ void __init setup_arch(char **cmdline_p)
-
- x86_init.oem.arch_setup();
-
-+ resource_alloc_from_bottom = 0;
- iomem_resource.end = (1ULL << boot_cpu_data.x86_phys_bits) - 1;
- setup_memory_map();
- parse_setup_data();
-
---
-To unsubscribe from this list: send the line "unsubscribe linux-pci" in
-the body of a message to majordomo@vger.kernel.org
-More majordomo info at http://vger.kernel.org/majordomo-info.html \ No newline at end of file
diff --git a/pnpacpi-cope-with-invalid-device-ids.patch b/pnpacpi-cope-with-invalid-device-ids.patch
deleted file mode 100644
index 70b2ab968..000000000
--- a/pnpacpi-cope-with-invalid-device-ids.patch
+++ /dev/null
@@ -1,85 +0,0 @@
-commit 420a0f66378c84b00b0e603e4d38210102dbe367
-Author: Dmitry Torokhov <dmitry.torokhov@gmail.com>
-Date: Sat Sep 18 10:11:09 2010 -0700
-
- PNPACPI: cope with invalid device IDs
-
- If primary ID (HID) is invalid try locating first valid ID on compatible
- ID list before giving up.
-
- This helps, for example, to recognize i8042 AUX port on Sony Vaio VPCZ1
- which uses SNYSYN0003 as HID. Without the patch users are forced to
- boot with i8042.nopnp to make use of their touchpads.
-
- Tested-by: Jan-Hendrik Zab <jan@jhz.name>
- Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
- Signed-off-by: Len Brown <len.brown@intel.com>
-
-diff --git a/drivers/pnp/pnpacpi/core.c b/drivers/pnp/pnpacpi/core.c
-index dc4e32e..0d943ee 100644
---- a/drivers/pnp/pnpacpi/core.c
-+++ b/drivers/pnp/pnpacpi/core.c
-@@ -28,7 +28,7 @@
- #include "../base.h"
- #include "pnpacpi.h"
-
--static int num = 0;
-+static int num;
-
- /* We need only to blacklist devices that have already an acpi driver that
- * can't use pnp layer. We don't need to blacklist device that are directly
-@@ -180,11 +180,24 @@ struct pnp_protocol pnpacpi_protocol = {
- };
- EXPORT_SYMBOL(pnpacpi_protocol);
-
-+static char *pnpacpi_get_id(struct acpi_device *device)
-+{
-+ struct acpi_hardware_id *id;
-+
-+ list_for_each_entry(id, &device->pnp.ids, list) {
-+ if (ispnpidacpi(id->id))
-+ return id->id;
-+ }
-+
-+ return NULL;
-+}
-+
- static int __init pnpacpi_add_device(struct acpi_device *device)
- {
- acpi_handle temp = NULL;
- acpi_status status;
- struct pnp_dev *dev;
-+ char *pnpid;
- struct acpi_hardware_id *id;
-
- /*
-@@ -192,11 +205,17 @@ static int __init pnpacpi_add_device(struct acpi_device *device)
- * driver should not be loaded.
- */
- status = acpi_get_handle(device->handle, "_CRS", &temp);
-- if (ACPI_FAILURE(status) || !ispnpidacpi(acpi_device_hid(device)) ||
-- is_exclusive_device(device) || (!device->status.present))
-+ if (ACPI_FAILURE(status))
-+ return 0;
-+
-+ pnpid = pnpacpi_get_id(device);
-+ if (!pnpid)
-+ return 0;
-+
-+ if (is_exclusive_device(device) || !device->status.present)
- return 0;
-
-- dev = pnp_alloc_dev(&pnpacpi_protocol, num, acpi_device_hid(device));
-+ dev = pnp_alloc_dev(&pnpacpi_protocol, num, pnpid);
- if (!dev)
- return -ENOMEM;
-
-@@ -227,7 +246,7 @@ static int __init pnpacpi_add_device(struct acpi_device *device)
- pnpacpi_parse_resource_option_data(dev);
-
- list_for_each_entry(id, &device->pnp.ids, list) {
-- if (!strcmp(id->id, acpi_device_hid(device)))
-+ if (!strcmp(id->id, pnpid))
- continue;
- if (!ispnpidacpi(id->id))
- continue;
diff --git a/runtime_pm_fixups.patch b/runtime_pm_fixups.patch
index 6315dc176..789115810 100644
--- a/runtime_pm_fixups.patch
+++ b/runtime_pm_fixups.patch
@@ -110,5 +110,5 @@ index 4de84ce..284f43c 100644
-int acpi_disable_wakeup_device_power(struct acpi_device *dev);
+int acpi_disable_wakeup_device_power(struct acpi_device *dev, int state);
- #ifdef CONFIG_PM_SLEEP
+ #ifdef CONFIG_PM_OPS
int acpi_pm_device_sleep_state(struct device *, int *);
diff --git a/sources b/sources
index de3496585..a666d4de8 100644
--- a/sources
+++ b/sources
@@ -1,2 +1,2 @@
61f3739a73afb6914cb007f37fb09b62 linux-2.6.36.tar.bz2
-1ae3ad96ed31fb8d40384add909bf994 patch-2.6.36-git8.bz2
+7364d9629734c34d09ec9ebd351d40b9 patch-2.6.37-rc1.bz2