diff options
author | Alexandre Oliva <lxoliva@fsfla.org> | 2011-03-29 05:27:42 +0000 |
---|---|---|
committer | Alexandre Oliva <lxoliva@fsfla.org> | 2011-03-29 05:27:42 +0000 |
commit | 0a4cca5e0678e0ce29e2685c679aab2d97991ffb (patch) | |
tree | 99800bb0f9514b6554b5177586593abee47c363a /freed-ora/current/f15 | |
parent | 56912550053d8e2f8cad6441f41e94669efb4387 (diff) | |
download | linux-libre-raptor-0a4cca5e0678e0ce29e2685c679aab2d97991ffb.tar.gz linux-libre-raptor-0a4cca5e0678e0ce29e2685c679aab2d97991ffb.zip |
2.6.38.2-8.fc15
Diffstat (limited to 'freed-ora/current/f15')
10 files changed, 231 insertions, 472 deletions
diff --git a/freed-ora/current/f15/acpi_battery-fribble-sysfs-files-from-a-resume-notifier.patch b/freed-ora/current/f15/acpi_battery-fribble-sysfs-files-from-a-resume-notifier.patch index b3256a2d3..ace336b47 100644 --- a/freed-ora/current/f15/acpi_battery-fribble-sysfs-files-from-a-resume-notifier.patch +++ b/freed-ora/current/f15/acpi_battery-fribble-sysfs-files-from-a-resume-notifier.patch @@ -7,6 +7,8 @@ Date: Wed, 23 Mar 2011 02:42:48 -0400 From: Kyle McMartin <kyle@redhat.com> +Upstream commit 25be5821521640eb00b7eb219ffe59664510d073 + Commit da8aeb92 re-poked the battery on resume, but Linus reports that it broke his eee and partially reverted it in b23fffd7. Unfortunately this also results in my x201s giving crack values until the sysfs files diff --git a/freed-ora/current/f15/dcdbas-force-smi-to-happen-when-expected.patch b/freed-ora/current/f15/dcdbas-force-smi-to-happen-when-expected.patch deleted file mode 100644 index a7a2c8a36..000000000 --- a/freed-ora/current/f15/dcdbas-force-smi-to-happen-when-expected.patch +++ /dev/null @@ -1,34 +0,0 @@ -From: Stuart Hayes <stuart_hayes@yahoo.com> -Date: Wed, 2 Mar 2011 12:42:05 +0000 (+0100) -Subject: dcdbas: force SMI to happen when expected -X-Git-Url: http://git.kernel.org/?p=linux%2Fkernel%2Fgit%2Ftorvalds%2Flinux-2.6.git;a=commitdiff_plain;h=dd65c736d1b5312c80c88a64bf521db4959eded5 - -dcdbas: force SMI to happen when expected - -The dcdbas driver can do an I/O write to cause a SMI to occur. The SMI handler -looks at certain registers and memory locations, so the SMI needs to happen -immediately. On some systems I/O writes are posted, though, causing the SMI to -happen well after the "outb" occurred, which causes random failures. Following -the "outb" with an "inb" forces the write to go through even if it is posted. - -Signed-off-by: Stuart Hayes <stuart_hayes@yahoo.com> -Acked-by: Doug Warzecha <douglas_warzecha@dell.com> -Signed-off-by: Jiri Kosina <jkosina@suse.cz> ---- - -diff --git a/drivers/firmware/dcdbas.c b/drivers/firmware/dcdbas.c -index 69ad529..ea5ac2d 100644 ---- a/drivers/firmware/dcdbas.c -+++ b/drivers/firmware/dcdbas.c -@@ -268,8 +268,10 @@ int dcdbas_smi_request(struct smi_cmd *smi_cmd) - } - - /* generate SMI */ -+ /* inb to force posted write through and make SMI happen now */ - asm volatile ( -- "outb %b0,%w1" -+ "outb %b0,%w1\n" -+ "inb %w1" - : /* no output args */ - : "a" (smi_cmd->command_code), - "d" (smi_cmd->command_address), diff --git a/freed-ora/current/f15/fs-call-security_d_instantiate-in-d_obtain_alias.patch b/freed-ora/current/f15/fs-call-security_d_instantiate-in-d_obtain_alias.patch deleted file mode 100644 index 3bce47f5e..000000000 --- a/freed-ora/current/f15/fs-call-security_d_instantiate-in-d_obtain_alias.patch +++ /dev/null @@ -1,64 +0,0 @@ -From linux-fsdevel-owner@vger.kernel.org Thu Nov 18 21:03:11 2010 -From: Josef Bacik <josef@redhat.com> -To: linux-fsdevel@vger.kernel.org, eparis@redhat.com, - linux-kernel@vger.kernel.org, sds@tycho.nsa.gov, - selinux@tycho.nsa.gov, bfields@fieldses.org -Subject: [PATCH] fs: call security_d_instantiate in d_obtain_alias V2 -Date: Thu, 18 Nov 2010 20:52:55 -0500 -Message-Id: <1290131575-2489-1-git-send-email-josef@redhat.com> -X-Mailing-List: linux-fsdevel@vger.kernel.org - -While trying to track down some NFS problems with BTRFS, I kept noticing I was -getting -EACCESS for no apparent reason. Eric Paris and printk() helped me -figure out that it was SELinux that was giving me grief, with the following -denial - -type=AVC msg=audit(1290013638.413:95): avc: denied { 0x800000 } for pid=1772 -comm="nfsd" name="" dev=sda1 ino=256 scontext=system_u:system_r:kernel_t:s0 -tcontext=system_u:object_r:unlabeled_t:s0 tclass=file - -Turns out this is because in d_obtain_alias if we can't find an alias we create -one and do all the normal instantiation stuff, but we don't do the -security_d_instantiate. - -Usually we are protected from getting a hashed dentry that hasn't yet run -security_d_instantiate() by the parent's i_mutex, but obviously this isn't an -option there, so in order to deal with the case that a second thread comes in -and finds our new dentry before we get to run security_d_instantiate(), we go -ahead and call it if we find a dentry already. Eric assures me that this is ok -as the code checks to see if the dentry has been initialized already so calling -security_d_instantiate() against the same dentry multiple times is ok. With -this patch I'm no longer getting errant -EACCESS values. - -Signed-off-by: Josef Bacik <josef@redhat.com> ---- -V1->V2: --added second security_d_instantiate() call - - fs/dcache.c | 3 +++ - 1 files changed, 3 insertions(+), 0 deletions(-) - -diff --git a/fs/dcache.c b/fs/dcache.c -index 5699d4c..85388fc 100644 ---- a/fs/dcache.c -+++ b/fs/dcache.c -@@ -1577,9 +1577,13 @@ struct dentry *d_obtain_alias(struct inode *inode) - spin_unlock(&tmp->d_lock); - spin_unlock(&inode->i_lock); - -+ security_d_instantiate(tmp, inode); -+ - return tmp; - - out_iput: -+ if (res && !IS_ERR(res)) -+ security_d_instantiate(res, inode); - iput(inode); - return res; - } - --- -To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in -the body of a message to majordomo@vger.kernel.org -More majordomo info at http://vger.kernel.org/majordomo-info.html - diff --git a/freed-ora/current/f15/hdpvr-ir-enable.patch b/freed-ora/current/f15/hdpvr-ir-enable.patch deleted file mode 100644 index e73c42122..000000000 --- a/freed-ora/current/f15/hdpvr-ir-enable.patch +++ /dev/null @@ -1,229 +0,0 @@ -diff --git a/drivers/media/video/hdpvr/Makefile b/drivers/media/video/hdpvr/Makefile -index e0230fc..3baa9f6 100644 ---- a/drivers/media/video/hdpvr/Makefile -+++ b/drivers/media/video/hdpvr/Makefile -@@ -1,6 +1,4 @@ --hdpvr-objs := hdpvr-control.o hdpvr-core.o hdpvr-video.o -- --hdpvr-$(CONFIG_I2C) += hdpvr-i2c.o -+hdpvr-objs := hdpvr-control.o hdpvr-core.o hdpvr-video.o hdpvr-i2c.o - - obj-$(CONFIG_VIDEO_HDPVR) += hdpvr.o - -diff --git a/drivers/media/video/hdpvr/hdpvr-core.c b/drivers/media/video/hdpvr/hdpvr-core.c -index 830d47b..70cfdc8 100644 ---- a/drivers/media/video/hdpvr/hdpvr-core.c -+++ b/drivers/media/video/hdpvr/hdpvr-core.c -@@ -364,14 +364,13 @@ static int hdpvr_probe(struct usb_interface *interface, - goto error; - } - --#ifdef CONFIG_I2C -- /* until i2c is working properly */ -- retval = 0; /* hdpvr_register_i2c_adapter(dev); */ -+#if defined(CONFIG_I2C) || defined(CONFIG_I2C_MODULE) -+ retval = hdpvr_register_i2c_adapter(dev); - if (retval < 0) { - v4l2_err(&dev->v4l2_dev, "registering i2c adapter failed\n"); - goto error; - } --#endif /* CONFIG_I2C */ -+#endif - - /* let the user know what node this device is now attached to */ - v4l2_info(&dev->v4l2_dev, "device now attached to %s\n", -diff --git a/drivers/media/video/hdpvr/hdpvr-i2c.c b/drivers/media/video/hdpvr/hdpvr-i2c.c -index 463b81b..60cdc06 100644 ---- a/drivers/media/video/hdpvr/hdpvr-i2c.c -+++ b/drivers/media/video/hdpvr/hdpvr-i2c.c -@@ -10,6 +10,8 @@ - * - */ - -+#if defined(CONFIG_I2C) || defined(CONFIG_I2C_MODULE) -+ - #include <linux/i2c.h> - #include <linux/slab.h> - -@@ -22,8 +24,11 @@ - #define REQTYPE_I2C_WRITE 0xb0 - #define REQTYPE_I2C_WRITE_STATT 0xd0 - --static int hdpvr_i2c_read(struct hdpvr_device *dev, unsigned char addr, -- char *data, int len) -+#define HDPVR_HW_Z8F0811_IR_TX_I2C_ADDR 0x70 -+#define HDPVR_HW_Z8F0811_IR_RX_I2C_ADDR 0x71 -+ -+static int hdpvr_i2c_read(struct hdpvr_device *dev, int bus, -+ unsigned char addr, char *data, int len) - { - int ret; - char *buf = kmalloc(len, GFP_KERNEL); -@@ -33,7 +38,7 @@ static int hdpvr_i2c_read(struct hdpvr_device *dev, unsigned char addr, - ret = usb_control_msg(dev->udev, - usb_rcvctrlpipe(dev->udev, 0), - REQTYPE_I2C_READ, CTRL_READ_REQUEST, -- 0x100|addr, 0, buf, len, 1000); -+ (bus << 8) | addr, 0, buf, len, 1000); - - if (ret == len) { - memcpy(data, buf, len); -@@ -46,8 +51,8 @@ static int hdpvr_i2c_read(struct hdpvr_device *dev, unsigned char addr, - return ret; - } - --static int hdpvr_i2c_write(struct hdpvr_device *dev, unsigned char addr, -- char *data, int len) -+static int hdpvr_i2c_write(struct hdpvr_device *dev, int bus, -+ unsigned char addr, char *data, int len) - { - int ret; - char *buf = kmalloc(len, GFP_KERNEL); -@@ -58,7 +63,7 @@ static int hdpvr_i2c_write(struct hdpvr_device *dev, unsigned char addr, - ret = usb_control_msg(dev->udev, - usb_sndctrlpipe(dev->udev, 0), - REQTYPE_I2C_WRITE, CTRL_WRITE_REQUEST, -- 0x100|addr, 0, buf, len, 1000); -+ (bus << 8) | addr, 0, buf, len, 1000); - - if (ret < 0) - goto error; -@@ -68,7 +73,7 @@ static int hdpvr_i2c_write(struct hdpvr_device *dev, unsigned char addr, - REQTYPE_I2C_WRITE_STATT, CTRL_READ_REQUEST, - 0, 0, buf, 2, 1000); - -- if (ret == 2) -+ if ((ret == 2) && (buf[1] == (len - 1))) - ret = 0; - else if (ret >= 0) - ret = -EIO; -@@ -93,10 +98,10 @@ static int hdpvr_transfer(struct i2c_adapter *i2c_adapter, struct i2c_msg *msgs, - addr = msgs[i].addr << 1; - - if (msgs[i].flags & I2C_M_RD) -- retval = hdpvr_i2c_read(dev, addr, msgs[i].buf, -+ retval = hdpvr_i2c_read(dev, 1, addr, msgs[i].buf, - msgs[i].len); - else -- retval = hdpvr_i2c_write(dev, addr, msgs[i].buf, -+ retval = hdpvr_i2c_write(dev, 1, addr, msgs[i].buf, - msgs[i].len); - } - -@@ -115,30 +120,58 @@ static struct i2c_algorithm hdpvr_algo = { - .functionality = hdpvr_functionality, - }; - -+static struct i2c_adapter hdpvr_i2c_adapter_template = { -+ .name = "Hauppage HD PVR I2C", -+ .owner = THIS_MODULE, -+ .id = I2C_HW_B_HDPVR, -+ .algo = &hdpvr_algo, -+}; -+ -+static struct i2c_board_info hdpvr_i2c_board_info = { -+ I2C_BOARD_INFO("ir_tx_z8f0811_haup", HDPVR_HW_Z8F0811_IR_TX_I2C_ADDR), -+ I2C_BOARD_INFO("ir_rx_z8f0811_haup", HDPVR_HW_Z8F0811_IR_RX_I2C_ADDR), -+}; -+ -+static int hdpvr_activate_ir(struct hdpvr_device *dev) -+{ -+ char buffer[8]; -+ -+ mutex_lock(&dev->i2c_mutex); -+ -+ hdpvr_i2c_read(dev, 0, 0x54, buffer, 1); -+ -+ buffer[0] = 0; -+ buffer[1] = 0x8; -+ hdpvr_i2c_write(dev, 1, 0x54, buffer, 2); -+ -+ buffer[1] = 0x18; -+ hdpvr_i2c_write(dev, 1, 0x54, buffer, 2); -+ -+ mutex_unlock(&dev->i2c_mutex); -+ -+ return 0; -+} -+ - int hdpvr_register_i2c_adapter(struct hdpvr_device *dev) - { -- struct i2c_adapter *i2c_adap; - int retval = -ENOMEM; - -- i2c_adap = kzalloc(sizeof(struct i2c_adapter), GFP_KERNEL); -- if (i2c_adap == NULL) -- goto error; -+ hdpvr_activate_ir(dev); - -- strlcpy(i2c_adap->name, "Hauppauge HD PVR I2C", -- sizeof(i2c_adap->name)); -- i2c_adap->algo = &hdpvr_algo; -- i2c_adap->owner = THIS_MODULE; -- i2c_adap->dev.parent = &dev->udev->dev; -+ memcpy(&dev->i2c_adapter, &hdpvr_i2c_adapter_template, -+ sizeof(struct i2c_adapter)); -+ dev->i2c_adapter.dev.parent = &dev->udev->dev; - -- i2c_set_adapdata(i2c_adap, dev); -+ i2c_set_adapdata(&dev->i2c_adapter, dev); - -- retval = i2c_add_adapter(i2c_adap); -+ retval = i2c_add_adapter(&dev->i2c_adapter); -+ if (retval) -+ goto error; - -- if (!retval) -- dev->i2c_adapter = i2c_adap; -- else -- kfree(i2c_adap); -+ i2c_new_device(&dev->i2c_adapter, &hdpvr_i2c_board_info); - - error: - return retval; - } -+ -+#endif -diff --git a/drivers/media/video/hdpvr/hdpvr-video.c b/drivers/media/video/hdpvr/hdpvr-video.c -index c338f3f..26fd9bf 100644 ---- a/drivers/media/video/hdpvr/hdpvr-video.c -+++ b/drivers/media/video/hdpvr/hdpvr-video.c -@@ -1221,12 +1221,9 @@ static void hdpvr_device_release(struct video_device *vdev) - v4l2_device_unregister(&dev->v4l2_dev); - - /* deregister I2C adapter */ --#ifdef CONFIG_I2C -+#if defined(CONFIG_I2C) || (CONFIG_I2C_MODULE) - mutex_lock(&dev->i2c_mutex); -- if (dev->i2c_adapter) -- i2c_del_adapter(dev->i2c_adapter); -- kfree(dev->i2c_adapter); -- dev->i2c_adapter = NULL; -+ i2c_del_adapter(&dev->i2c_adapter); - mutex_unlock(&dev->i2c_mutex); - #endif /* CONFIG_I2C */ - -diff --git a/drivers/media/video/hdpvr/hdpvr.h b/drivers/media/video/hdpvr/hdpvr.h -index b0f046d..2107055 100644 ---- a/drivers/media/video/hdpvr/hdpvr.h -+++ b/drivers/media/video/hdpvr/hdpvr.h -@@ -102,7 +102,7 @@ struct hdpvr_device { - struct work_struct worker; - - /* I2C adapter */ -- struct i2c_adapter *i2c_adapter; -+ struct i2c_adapter i2c_adapter; - /* I2C lock */ - struct mutex i2c_mutex; - -diff --git a/include/linux/i2c-id.h b/include/linux/i2c-id.h -index 4bef5c5..4385341 100644 ---- a/include/linux/i2c-id.h -+++ b/include/linux/i2c-id.h -@@ -33,5 +33,6 @@ - - /* --- Bit algorithm adapters */ - #define I2C_HW_B_CX2388x 0x01001b /* connexant 2388x based tv cards */ -+#define I2C_HW_B_HDPVR 0x010025 /* Hauppauge HD PVR */ - - #endif /* LINUX_I2C_ID_H */ diff --git a/freed-ora/current/f15/kernel.spec b/freed-ora/current/f15/kernel.spec index 7a0f3dd1f..99e41f8b9 100644 --- a/freed-ora/current/f15/kernel.spec +++ b/freed-ora/current/f15/kernel.spec @@ -51,7 +51,7 @@ Summary: The Linux kernel # For non-released -rc kernels, this will be prepended with "0.", so # for example a 3 here will become 0.3 # -%global baserelease 6 +%global baserelease 8 %global fedora_build %{baserelease} # base_sublevel is the kernel version we're starting with and patching @@ -77,7 +77,7 @@ Summary: The Linux kernel %if 0%{?released_kernel} # Do we have a -stable update to apply? -%define stable_update 1 +%define stable_update 2 # Is it a -stable RC? %define stable_rc 0 # Set rpm version accordingly @@ -656,7 +656,6 @@ Patch204: linux-2.6-debug-always-inline-kzalloc.patch Patch380: linux-2.6-defaults-pci_no_msi.patch Patch381: linux-2.6-defaults-pci_use_crs.patch Patch383: linux-2.6-defaults-aspm.patch -Patch386: pci-_osc-supported-field-should-contain-supported-features-not-enabled-ones.patch Patch385: ima-allow-it-to-be-completely-disabled-and-default-off.patch @@ -669,7 +668,6 @@ Patch399: acpi_battery-fribble-sysfs-files-from-a-resume-notifier.patch Patch450: linux-2.6-input-kill-stupid-messages.patch Patch452: linux-2.6.30-no-pcspkr-modalias.patch -Patch454: thinkpad-acpi-fix-backlight.patch Patch460: linux-2.6-serial-460800.patch @@ -725,7 +723,6 @@ Patch2910: linux-2.6-v4l-dvb-add-lgdt3304-support.patch Patch2912: linux-2.6-v4l-dvb-ir-core-update.patch #Patch2916: lirc-staging-2.6.36-fixes.patch -#Patch2917: hdpvr-ir-enable.patch Patch2918: flexcop-fix-xlate_proc_name-warning.patch @@ -753,14 +750,11 @@ Patch12200: acpi_reboot.patch Patch12203: linux-2.6-usb-pci-autosuspend.patch Patch12204: linux-2.6-enable-more-pci-autosuspend.patch Patch12205: runtime_pm_fixups.patch +Patch12206: pci-acpi-report-aspm-support-to-bios-if-not-disabled-from-command-line.patch +Patch12207: pci-pcie-links-may-not-get-configured-for-aspm-under-powersave-mode.patch Patch12303: dmar-disable-when-ricoh-multifunction.patch -Patch12421: fs-call-security_d_instantiate-in-d_obtain_alias.patch - -# Fix possible memory corruption on Dell HW -Patch12430: dcdbas-force-smi-to-happen-when-expected.patch - %endif BuildRoot: %{_tmppath}/kernel-%{KVERREL}-root @@ -1300,8 +1294,10 @@ ApplyPatch linux-2.6-defaults-pci_no_msi.patch 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 -# rhbz#638912 -#ApplyPatch pci-_osc-supported-field-should-contain-supported-features-not-enabled-ones.patch +# rhbz #683156 +ApplyPatch pci-acpi-report-aspm-support-to-bios-if-not-disabled-from-command-line.patch +# +ApplyPatch pci-pcie-links-may-not-get-configured-for-aspm-under-powersave-mode.patch #ApplyPatch ima-allow-it-to-be-completely-disabled-and-default-off.patch @@ -1325,8 +1321,6 @@ ApplyPatch die-floppy-die.patch ApplyPatch linux-2.6.30-no-pcspkr-modalias.patch -#ApplyPatch thinkpad-acpi-fix-backlight.patch - # Allow to use 480600 baud on 16C950 UARTs ApplyPatch linux-2.6-serial-460800.patch @@ -1391,8 +1385,6 @@ ApplyOptionalPatch linux-2.6-v4l-dvb-experimental.patch # http://www.lirc.org/ #ApplyOptionalPatch lirc-staging-2.6.36-fixes.patch -# enable IR receiver on Hauppauge HD PVR (v4l-dvb merge pending) -#ApplyPatch hdpvr-ir-enable.patch # rhbz#664852 ApplyPatch flexcop-fix-xlate_proc_name-warning.patch @@ -1420,12 +1412,6 @@ ApplyPatch acpi_reboot.patch # rhbz#605888 ApplyPatch dmar-disable-when-ricoh-multifunction.patch -# rhbz#662344,600690 -ApplyPatch fs-call-security_d_instantiate-in-d_obtain_alias.patch - -# Fix possible memory corruption on Dell HW -ApplyPatch dcdbas-force-smi-to-happen-when-expected.patch - # END OF PATCH APPLICATIONS %endif @@ -2034,6 +2020,25 @@ fi # and build. %changelog +* Sun Mar 27 2011 Chuck Ebbert <cebbert@redhat.com> 2.6.38.2-8 +- Linux 2.6.38.2 +- Drop patches merged in 2.6.38.2: + dcdbas-force-smi-to-happen-when-expected.patch + fs-call-security_d_instantiate-in-d_obtain_alias.patch + prevent-rt_sigqueueinfo-and-rt_tgsigqueueinfo-from-spoofing-the-signal-code.patch +- Fix more PCIe ASPM bugs: + kworker task over 65% after resume (#683156) + ASPM powersave mode does not get enabled + +* Sat Mar 26 2011 Chuck Ebbert <cebbert@redhat.com> 2.6.38.2-7.rc1 +- Linux 2.6.38.2-rc1 + +* Fri Mar 25 2011 Chuck Ebbert <cebbert@redhat.com> +- CVE-2011-1182: kernel signal spoofing issue +- Drop unused patches already applied upstream: + hdpvr-ir-enable.patch + thinkpad-acpi-fix-backlight.patch + * Wed Mar 23 2011 Chuck Ebbert <cebbert@redhat.com> 2.6.38.1-6 - Linux 2.6.38.1 - Drop linux-2.6-ehci-check-port-status.patch, merged in .38.1 diff --git a/freed-ora/current/f15/pci-_osc-supported-field-should-contain-supported-features-not-enabled-ones.patch b/freed-ora/current/f15/pci-_osc-supported-field-should-contain-supported-features-not-enabled-ones.patch deleted file mode 100644 index 0baffd639..000000000 --- a/freed-ora/current/f15/pci-_osc-supported-field-should-contain-supported-features-not-enabled-ones.patch +++ /dev/null @@ -1,66 +0,0 @@ -commit 885c252ffb059dc493200bdb981bdd21cabe4442 -Author: Matthew Garrett <mjg@redhat.com> -Date: Thu Dec 9 18:31:59 2010 -0500 - - PCI: _OSC "supported" field should contain supported features, not enabled ones - - From testing with Windows, the call to the PCI root _OSC method includes - the full set of features supported by the operating system even if the - hardware has already indicated that it doesn't support ASPM or MSI. - https://bugzilla.redhat.com/show_bug.cgi?id=638912 is a case where making - the _OSC call will incorrectly configure the chipset unless the supported - field has bits 1, 2 and 4 set. Rework the functionality to ensure that - we match this behaviour. - - Signed-off-by: Matthew Garrett <mjg@redhat.com> - -diff --git a/drivers/acpi/pci_root.c b/drivers/acpi/pci_root.c -index 96668ad..afb5d08 100644 ---- a/drivers/acpi/pci_root.c -+++ b/drivers/acpi/pci_root.c -@@ -450,7 +450,7 @@ static int __devinit acpi_pci_root_add(struct acpi_device *device) - struct acpi_pci_root *root; - acpi_handle handle; - struct acpi_device *child; -- u32 flags, base_flags; -+ u32 flags; - - root = kzalloc(sizeof(struct acpi_pci_root), GFP_KERNEL); - if (!root) -@@ -498,10 +498,15 @@ static int __devinit acpi_pci_root_add(struct acpi_device *device) - device->driver_data = root; - - /* -- * All supported architectures that use ACPI have support for -- * PCI domains, so we indicate this in _OSC support capabilities. -+ * Indicate support for various _OSC capabilities. These match -+ * what the operating system supports, not what the hardware supports, -+ * so they shouldn't be conditional on functionality that's been -+ * blacklisted - */ -- flags = base_flags = OSC_PCI_SEGMENT_GROUPS_SUPPORT; -+ flags = OSC_EXT_PCI_CONFIG_SUPPORT | OSC_ACTIVE_STATE_PWR_SUPPORT | -+ OSC_CLOCK_PWR_CAPABILITY_SUPPORT | -+ OSC_PCI_SEGMENT_GROUPS_SUPPORT | OSC_MSI_SUPPORT; -+ - acpi_pci_osc_support(root, flags); - - /* -@@ -555,17 +560,6 @@ static int __devinit acpi_pci_root_add(struct acpi_device *device) - list_for_each_entry(child, &device->children, node) - acpi_pci_bridge_scan(child); - -- /* Indicate support for various _OSC capabilities. */ -- if (pci_ext_cfg_avail(root->bus->self)) -- flags |= OSC_EXT_PCI_CONFIG_SUPPORT; -- if (pcie_aspm_enabled()) -- flags |= OSC_ACTIVE_STATE_PWR_SUPPORT | -- OSC_CLOCK_PWR_CAPABILITY_SUPPORT; -- if (pci_msi_enabled()) -- flags |= OSC_MSI_SUPPORT; -- if (flags != base_flags) -- acpi_pci_osc_support(root, flags); -- - pci_acpi_add_bus_pm_notifier(device, root->bus); - if (device->wakeup.flags.run_wake) - device_set_run_wake(root->bus->bridge, true); diff --git a/freed-ora/current/f15/pci-acpi-report-aspm-support-to-bios-if-not-disabled-from-command-line.patch b/freed-ora/current/f15/pci-acpi-report-aspm-support-to-bios-if-not-disabled-from-command-line.patch new file mode 100644 index 000000000..8dccd1a09 --- /dev/null +++ b/freed-ora/current/f15/pci-acpi-report-aspm-support-to-bios-if-not-disabled-from-command-line.patch @@ -0,0 +1,89 @@ +From: Rafael J. Wysocki <rjw@sisk.pl> +Date: Sat, 5 Mar 2011 12:21:51 +0000 (+0100) +Subject: PCI/ACPI: Report ASPM support to BIOS if not disabled from command line +X-Git-Url: http://git.kernel.org/?p=linux%2Fkernel%2Fgit%2Ftorvalds%2Flinux-2.6.git;a=commitdiff_plain;h=8b8bae901ce23addbdcdb54fa1696fb2d049feb5 + +PCI/ACPI: Report ASPM support to BIOS if not disabled from command line + +We need to distinguish the situation in which ASPM support is +disabled from the command line or through .config from the situation +in which it is disabled, because the hardware or BIOS can't handle +it. In the former case we should not report ASPM support to the BIOS +through ACPI _OSC, but in the latter case we should do that. + +Introduce pcie_aspm_support_enabled() that can be used by +acpi_pci_root_add() to determine whether or not it should report ASPM +support to the BIOS through _OSC. + +Cc: stable@kernel.org +References: https://bugzilla.kernel.org/show_bug.cgi?id=29722 +References: https://bugzilla.kernel.org/show_bug.cgi?id=20232 +Reported-and-tested-by: Ortwin Glück <odi@odi.ch> +Reviewed-by: Kenji Kaneshige <kaneshige.kenji@jp.fujitsu.com> +Tested-by: Kenji Kaneshige <kaneshige.kenji@jp.fujitsu.com> +Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl> +Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org> +--- + +diff --git a/drivers/acpi/pci_root.c b/drivers/acpi/pci_root.c +index 8524939..c7358dd 100644 +--- a/drivers/acpi/pci_root.c ++++ b/drivers/acpi/pci_root.c +@@ -564,7 +564,7 @@ static int __devinit acpi_pci_root_add(struct acpi_device *device) + /* Indicate support for various _OSC capabilities. */ + if (pci_ext_cfg_avail(root->bus->self)) + flags |= OSC_EXT_PCI_CONFIG_SUPPORT; +- if (pcie_aspm_enabled()) ++ if (pcie_aspm_support_enabled()) + flags |= OSC_ACTIVE_STATE_PWR_SUPPORT | + OSC_CLOCK_PWR_CAPABILITY_SUPPORT; + if (pci_msi_enabled()) +diff --git a/drivers/pci/pcie/aspm.c b/drivers/pci/pcie/aspm.c +index 3188cd9..bbdb4fd 100644 +--- a/drivers/pci/pcie/aspm.c ++++ b/drivers/pci/pcie/aspm.c +@@ -69,6 +69,7 @@ struct pcie_link_state { + }; + + static int aspm_disabled, aspm_force, aspm_clear_state; ++static bool aspm_support_enabled = true; + static DEFINE_MUTEX(aspm_lock); + static LIST_HEAD(link_list); + +@@ -896,6 +897,7 @@ static int __init pcie_aspm_disable(char *str) + { + if (!strcmp(str, "off")) { + aspm_disabled = 1; ++ aspm_support_enabled = false; + printk(KERN_INFO "PCIe ASPM is disabled\n"); + } else if (!strcmp(str, "force")) { + aspm_force = 1; +@@ -930,3 +932,8 @@ int pcie_aspm_enabled(void) + } + EXPORT_SYMBOL(pcie_aspm_enabled); + ++bool pcie_aspm_support_enabled(void) ++{ ++ return aspm_support_enabled; ++} ++EXPORT_SYMBOL(pcie_aspm_support_enabled); +diff --git a/include/linux/pci.h b/include/linux/pci.h +index 16c9f2e..96f70d7 100644 +--- a/include/linux/pci.h ++++ b/include/linux/pci.h +@@ -1002,12 +1002,11 @@ extern bool pcie_ports_auto; + #endif + + #ifndef CONFIG_PCIEASPM +-static inline int pcie_aspm_enabled(void) +-{ +- return 0; +-} ++static inline int pcie_aspm_enabled(void) { return 0; } ++static inline bool pcie_aspm_support_enabled(void) { return false; } + #else + extern int pcie_aspm_enabled(void); ++extern bool pcie_aspm_support_enabled(void); + #endif + + #ifdef CONFIG_PCIEAER diff --git a/freed-ora/current/f15/pci-pcie-links-may-not-get-configured-for-aspm-under-powersave-mode.patch b/freed-ora/current/f15/pci-pcie-links-may-not-get-configured-for-aspm-under-powersave-mode.patch new file mode 100644 index 000000000..0c7f592ac --- /dev/null +++ b/freed-ora/current/f15/pci-pcie-links-may-not-get-configured-for-aspm-under-powersave-mode.patch @@ -0,0 +1,112 @@ +From: Naga Chumbalkar <nagananda.chumbalkar@hp.com> +Date: Mon, 21 Mar 2011 03:29:08 +0000 (+0000) +Subject: PCI: PCIe links may not get configured for ASPM under POWERSAVE mode +X-Git-Url: http://git.kernel.org/?p=linux%2Fkernel%2Fgit%2Ftorvalds%2Flinux-2.6.git;a=commitdiff_plain;h=1a680b7c325882188865f05b9a88d32f75f26495 + +PCI: PCIe links may not get configured for ASPM under POWERSAVE mode + +v3 -> v2: Moved ASPM enabling logic to pci_set_power_state() +v2 -> v1: Preserved the logic in pci_raw_set_power_state() + : Added ASPM enabling logic after scanning Root Bridge + : http://marc.info/?l=linux-pci&m=130046996216391&w=2 +v1 : http://marc.info/?l=linux-pci&m=130013164703283&w=2 + +The assumption made in commit 41cd766b065970ff6f6c89dd1cf55fa706c84a3d +(PCI: Don't enable aspm before drivers have had a chance to veto it) that +pci_enable_device() will result in re-configuring ASPM when aspm_policy is +POWERSAVE is no longer valid. This is due to commit +97c145f7c87453cec90e91238fba5fe2c1561b32 (PCI: read current power state +at enable time) which resets dev->current_state to D0. Due to this the +call to pcie_aspm_pm_state_change() is never made. Note the equality check +(below) that returns early: +./drivers/pci/pci.c: pci_raw_set_pci_power_state() +546 /* Check if we're already there */ +547 if (dev->current_state == state) +548 return 0; + +Therefore OSPM never configures the PCIe links for ASPM to turn them "on". + +Fix it by configuring ASPM from the pci_enable_device() code path. This +also allows a driver such as the e1000e networking driver a chance to +disable ASPM (L0s, L1), if need be, prior to enabling the device. A +driver may perform this action if the device is known to mis-behave +wrt ASPM. + +Signed-off-by: Naga Chumbalkar <nagananda.chumbalkar@hp.com> +Acked-by: Rafael J. Wysocki <rjw@sisk.pl> +Cc: Matthew Garrett <mjg59@srcf.ucam.org> +Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org> +--- + +diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c +index b714d78..2472e71 100644 +--- a/drivers/pci/pci.c ++++ b/drivers/pci/pci.c +@@ -740,6 +740,12 @@ int pci_set_power_state(struct pci_dev *dev, pci_power_t state) + + if (!__pci_complete_power_transition(dev, state)) + error = 0; ++ /* ++ * When aspm_policy is "powersave" this call ensures ++ * that ASPM is configured. ++ */ ++ if (!error && dev->bus->self) ++ pcie_aspm_powersave_config_link(dev->bus->self); + + return error; + } +diff --git a/drivers/pci/pcie/aspm.c b/drivers/pci/pcie/aspm.c +index bbdb4fd..e61b82e 100644 +--- a/drivers/pci/pcie/aspm.c ++++ b/drivers/pci/pcie/aspm.c +@@ -708,6 +708,28 @@ void pcie_aspm_pm_state_change(struct pci_dev *pdev) + up_read(&pci_bus_sem); + } + ++void pcie_aspm_powersave_config_link(struct pci_dev *pdev) ++{ ++ struct pcie_link_state *link = pdev->link_state; ++ ++ if (aspm_disabled || !pci_is_pcie(pdev) || !link) ++ return; ++ ++ if (aspm_policy != POLICY_POWERSAVE) ++ return; ++ ++ if ((pdev->pcie_type != PCI_EXP_TYPE_ROOT_PORT) && ++ (pdev->pcie_type != PCI_EXP_TYPE_DOWNSTREAM)) ++ return; ++ ++ down_read(&pci_bus_sem); ++ mutex_lock(&aspm_lock); ++ pcie_config_aspm_path(link); ++ pcie_set_clkpm(link, policy_to_clkpm_state(link)); ++ mutex_unlock(&aspm_lock); ++ up_read(&pci_bus_sem); ++} ++ + /* + * pci_disable_link_state - disable pci device's link state, so the link will + * never enter specific states +diff --git a/include/linux/pci-aspm.h b/include/linux/pci-aspm.h +index ce68105..67cb3ae 100644 +--- a/include/linux/pci-aspm.h ++++ b/include/linux/pci-aspm.h +@@ -26,6 +26,7 @@ + extern void pcie_aspm_init_link_state(struct pci_dev *pdev); + extern void pcie_aspm_exit_link_state(struct pci_dev *pdev); + extern void pcie_aspm_pm_state_change(struct pci_dev *pdev); ++extern void pcie_aspm_powersave_config_link(struct pci_dev *pdev); + extern void pci_disable_link_state(struct pci_dev *pdev, int state); + extern void pcie_clear_aspm(void); + extern void pcie_no_aspm(void); +@@ -39,6 +40,9 @@ static inline void pcie_aspm_exit_link_state(struct pci_dev *pdev) + static inline void pcie_aspm_pm_state_change(struct pci_dev *pdev) + { + } ++static inline void pcie_aspm_powersave_config_link(struct pci_dev *pdev) ++{ ++} + static inline void pci_disable_link_state(struct pci_dev *pdev, int state) + { + } diff --git a/freed-ora/current/f15/sources b/freed-ora/current/f15/sources index c84974583..d014d54f1 100644 --- a/freed-ora/current/f15/sources +++ b/freed-ora/current/f15/sources @@ -1,2 +1,2 @@ 21911d61ac22d66e71697a3d5ae092ba linux-2.6.38-libre.tar.bz2 -bd2be4d0465345e4e9355d6773f5f6fe patch-2.6.38.1.bz2 +599badab31c4920d4122133208c810d7 patch-2.6.38.2.bz2 diff --git a/freed-ora/current/f15/thinkpad-acpi-fix-backlight.patch b/freed-ora/current/f15/thinkpad-acpi-fix-backlight.patch deleted file mode 100644 index 5ed2544fe..000000000 --- a/freed-ora/current/f15/thinkpad-acpi-fix-backlight.patch +++ /dev/null @@ -1,56 +0,0 @@ -diff -up linux-2.6.34.noarch/drivers/platform/x86/thinkpad_acpi.c.orig linux-2.6.34.noarch/drivers/platform/x86/thinkpad_acpi.c ---- linux-2.6.34.noarch/drivers/platform/x86/thinkpad_acpi.c.orig 2010-05-17 16:28:13.254200070 -0400 -+++ linux-2.6.34.noarch/drivers/platform/x86/thinkpad_acpi.c 2010-05-17 16:29:56.471200083 -0400 -@@ -3397,7 +3397,7 @@ static int __init hotkey_init(struct ibm - /* update bright_acpimode... */ - tpacpi_check_std_acpi_brightness_support(); - -- if (tp_features.bright_acpimode && acpi_video_backlight_support()) { -+ if (acpi_video_backlight_support()) { - printk(TPACPI_INFO - "This ThinkPad has standard ACPI backlight " - "brightness control, supported by the ACPI " -@@ -6189,26 +6189,24 @@ static int __init brightness_init(struct - * going to publish a backlight interface - */ - b = tpacpi_check_std_acpi_brightness_support(); -- if (b > 0) { - -- if (acpi_video_backlight_support()) { -- if (brightness_enable > 1) { -- printk(TPACPI_NOTICE -- "Standard ACPI backlight interface " -- "available, not loading native one.\n"); -- return 1; -- } else if (brightness_enable == 1) { -- printk(TPACPI_NOTICE -- "Backlight control force enabled, even if standard " -- "ACPI backlight interface is available\n"); -- } -- } else { -- if (brightness_enable > 1) { -- printk(TPACPI_NOTICE -- "Standard ACPI backlight interface not " -- "available, thinkpad_acpi native " -- "brightness control enabled\n"); -- } -+ if (acpi_video_backlight_support()) { -+ if (brightness_enable > 1) { -+ printk(TPACPI_NOTICE -+ "Standard ACPI backlight interface " -+ "available, not loading native one.\n"); -+ return 1; -+ } else if (brightness_enable == 1) { -+ printk(TPACPI_NOTICE -+ "Backlight control force enabled, even if standard " -+ "ACPI backlight interface is available\n"); -+ } -+ } else { -+ if (brightness_enable > 1) { -+ printk(TPACPI_NOTICE -+ "Standard ACPI backlight interface not " -+ "available, thinkpad_acpi native " -+ "brightness control enabled\n"); - } - } - |