diff options
author | Alexandre Oliva <lxoliva@fsfla.org> | 2010-12-14 08:21:12 +0000 |
---|---|---|
committer | Alexandre Oliva <lxoliva@fsfla.org> | 2010-12-14 08:21:12 +0000 |
commit | 483a79b7c4fe820288eab8826c1d8b517433bef3 (patch) | |
tree | 8e79295e1eb9700bb6140cc384f71d7358603864 /freed-ora/current/master | |
parent | a3e037cf7d468e8506b78503888723e3f7765a40 (diff) | |
download | linux-libre-raptor-483a79b7c4fe820288eab8826c1d8b517433bef3.tar.gz linux-libre-raptor-483a79b7c4fe820288eab8826c1d8b517433bef3.zip |
2.6.36.2-12.rc1.fc15
Diffstat (limited to 'freed-ora/current/master')
17 files changed, 338 insertions, 851 deletions
diff --git a/freed-ora/current/master/.gitignore b/freed-ora/current/master/.gitignore index 55b909e2c..d4ea89317 100644 --- a/freed-ora/current/master/.gitignore +++ b/freed-ora/current/master/.gitignore @@ -5,3 +5,4 @@ clog *.rpm kernel-2.6.*/ /patch-2.6.36.1.bz2 +/patch-2.6.36.2-rc1.bz2 diff --git a/freed-ora/current/master/acpi-update-battery-information-on-notification-0x81.patch b/freed-ora/current/master/acpi-update-battery-information-on-notification-0x81.patch index 5fe34b9c0..3a8d619ce 100644 --- a/freed-ora/current/master/acpi-update-battery-information-on-notification-0x81.patch +++ b/freed-ora/current/master/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,7 +55,7 @@ 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) +@@ -914,7 +923,8 @@ static void acpi_battery_notify(struct acpi_device *device, u32 event) #ifdef CONFIG_ACPI_SYSFS_POWER old = battery->bat.dev; #endif @@ -67,7 +65,7 @@ index dc58402..69638c4 100644 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/freed-ora/current/master/deblob-check b/freed-ora/current/master/deblob-check index 0b93a342a..2e4820330 100755 --- a/freed-ora/current/master/deblob-check +++ b/freed-ora/current/master/deblob-check @@ -1,6 +1,6 @@ #! /bin/sh -# deblob-check version 2010-10-21 +# deblob-check version 2010-12-13 # Inspired in gNewSense's find-firmware script. # Written by Alexandre Oliva <lxoliva@fsfla.org> @@ -2579,6 +2579,16 @@ set_except () { accept 'P[13]\([\n]#[^\n]*\)*[\n]*\([\n][0-9 ]*\)\+' drivers/video/logo/logo_libre_clut224.ppm ;; + */rtl8180*.patch) + defsnc 'static[ ]u8[ ]sa2400_rf_rssi_map\[\][ ]=' drivers/net/wireless/rtl818x/rtl8180_sa2400.c + ;; + + */patch*-2.6.36.*) + initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]const[ ]u32[ ]ar9300_2p[02]_\(radio\|mac\|baseband\)_postamble\[\]\[5\][ ]=\([ ][{][*][/][;]\)\?' 'drivers/net/wireless/ath/ath9k/ar9003_\(2p[02]_\)\?initvals\.h' + initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]const[ ]u32[ ]ar9300Modes_\(\(low\(est\)\?\|high\)_ob_db\|high_power\)_tx_gain_table_2p[02]\[\]\[5\][ ]=\([ ][{][*][/][;]\)\?' 'drivers/net/wireless/ath/ath9k/ar9003_\(2p[02]_\)\?initvals\.h' + initnc '\([;][/][*]@@[ ]-[0-9]*,[0-9]*[ ][+][0-9]*,[0-9]*[ ]@@[ ]\)\?static[ ]const[ ]u32[ ]ar9\(300\|200_merlin\)_2p[02]_\(radio\|mac\|baseband\)_core\[\]\[2\][ ]=\([ ][{][*][/][;]\)\?' 'drivers/net/wireless/ath/ath9k/ar9003_\(2p[02]_\)\?initvals\.h' + ;; + */patch*-2.6.36-rc*) accept 'FIRMWARE[ ]LOADER[ ][(]request_firmware[)]' MAINTAINERS defsnc 'static[ ]const[ ]unsigned[ ]char[ ]__\(cpu\)\?initdata[ ]mV_vrm85\[32\][ ]=' arch/x86/kernel/cpu/cpufreq/longhaul.h @@ -3168,6 +3178,9 @@ set_except () { */linux-2.6*-at76.patch) blobname 'atmel_at76c50\(3-\(i386[13]\|rfmd\(-acc\)\?\)\|5\(a\(mx\)\?\)\?-rfmd\(2958\)\?\)\.bin' drivers/net/wireless/at76_usb/at76_usb.c ;; + */v4l1*.patch) + accept '[(]at[ ]which[ ]point[ ]it[ ]should[ ]use[ ]request_firmware' + ;; */linux-2.6-v4l-dvb*.patch) # post 2.6.33 fixes start here defsnc 'static[ ]struct[ ]i2c_reg_u8[ ]ov9655_init\[\][ ]=' drivers/media/video/gspca/sn9c20x.c diff --git a/freed-ora/current/master/hda_realtek-handle-unset-external-amp-bits.patch b/freed-ora/current/master/hda_realtek-handle-unset-external-amp-bits.patch deleted file mode 100644 index 8519fd32a..000000000 --- a/freed-ora/current/master/hda_realtek-handle-unset-external-amp-bits.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c -index 0ac6aed..53f503d 100644 ---- a/sound/pci/hda/patch_realtek.c -+++ b/sound/pci/hda/patch_realtek.c -@@ -1614,6 +1614,7 @@ do_sku: - spec->init_amp = ALC_INIT_GPIO3; - break; - case 5: -+ default: - spec->init_amp = ALC_INIT_DEFAULT; - break; - } diff --git a/freed-ora/current/master/ipc-shm-fix-information-leak-to-user.patch b/freed-ora/current/master/ipc-shm-fix-information-leak-to-user.patch deleted file mode 100644 index b23ad439d..000000000 --- a/freed-ora/current/master/ipc-shm-fix-information-leak-to-user.patch +++ /dev/null @@ -1,30 +0,0 @@ -From: Vasiliy Kulikov <segooon@gmail.com> -Date: Sat, 30 Oct 2010 14:22:49 +0000 (+0400) -Subject: ipc: shm: fix information leak to userland -X-Git-Tag: v2.6.37-rc1~24 -X-Git-Url: http://git.kernel.org/?p=linux%2Fkernel%2Fgit%2Ftorvalds%2Flinux-2.6.git;a=commitdiff_plain;h=3af54c9bd9e6f14f896aac1bb0e8405ae0bc7a44 - -ipc: shm: fix information leak to userland - -The shmid_ds structure is copied to userland with shm_unused{,2,3} -fields unitialized. It leads to leaking of contents of kernel stack -memory. - -Signed-off-by: Vasiliy Kulikov <segooon@gmail.com> -Acked-by: Al Viro <viro@ZenIV.linux.org.uk> -Cc: stable@kernel.org -Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> ---- - -diff --git a/ipc/shm.c b/ipc/shm.c -index fd658a1..7d3bb22 100644 ---- a/ipc/shm.c -+++ b/ipc/shm.c -@@ -479,6 +479,7 @@ static inline unsigned long copy_shmid_to_user(void __user *buf, struct shmid64_ - { - struct shmid_ds out; - -+ memset(&out, 0, sizeof(out)); - ipc64_perm_to_ipc_perm(&in->shm_perm, &out.shm_perm); - out.shm_segsz = in->shm_segsz; - out.shm_atime = in->shm_atime; diff --git a/freed-ora/current/master/ipc-zero-struct-memory-for-compat-fns.patch b/freed-ora/current/master/ipc-zero-struct-memory-for-compat-fns.patch deleted file mode 100644 index b682c7df0..000000000 --- a/freed-ora/current/master/ipc-zero-struct-memory-for-compat-fns.patch +++ /dev/null @@ -1,73 +0,0 @@ -From: Dan Rosenberg <drosenberg@vsecurity.com> -Date: Wed, 27 Oct 2010 22:34:17 +0000 (-0700) -Subject: ipc: initialize structure memory to zero for compat functions -X-Git-Tag: v2.6.37-rc1~85^2~50 -X-Git-Url: http://git.kernel.org/?p=linux%2Fkernel%2Fgit%2Ftorvalds%2Flinux-2.6.git;a=commitdiff_plain;h=03145beb455cf5c20a761e8451e30b8a74ba58d9 - -ipc: initialize structure memory to zero for compat functions - -This takes care of leaking uninitialized kernel stack memory to -userspace from non-zeroed fields in structs in compat ipc functions. - -Signed-off-by: Dan Rosenberg <drosenberg@vsecurity.com> -Cc: Manfred Spraul <manfred@colorfullife.com> -Cc: Arnd Bergmann <arnd@arndb.de> -Cc: <stable@kernel.org> -Signed-off-by: Andrew Morton <akpm@linux-foundation.org> -Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> ---- - -diff --git a/ipc/compat.c b/ipc/compat.c -index 9dc2c7d..845a287 100644 ---- a/ipc/compat.c -+++ b/ipc/compat.c -@@ -241,6 +241,8 @@ long compat_sys_semctl(int first, int second, int third, void __user *uptr) - struct semid64_ds __user *up64; - int version = compat_ipc_parse_version(&third); - -+ memset(&s64, 0, sizeof(s64)); -+ - if (!uptr) - return -EINVAL; - if (get_user(pad, (u32 __user *) uptr)) -@@ -421,6 +423,8 @@ long compat_sys_msgctl(int first, int second, void __user *uptr) - int version = compat_ipc_parse_version(&second); - void __user *p; - -+ memset(&m64, 0, sizeof(m64)); -+ - switch (second & (~IPC_64)) { - case IPC_INFO: - case IPC_RMID: -@@ -594,6 +598,8 @@ long compat_sys_shmctl(int first, int second, void __user *uptr) - int err, err2; - int version = compat_ipc_parse_version(&second); - -+ memset(&s64, 0, sizeof(s64)); -+ - switch (second & (~IPC_64)) { - case IPC_RMID: - case SHM_LOCK: -diff --git a/ipc/compat_mq.c b/ipc/compat_mq.c -index d8d1e9f..380ea4f 100644 ---- a/ipc/compat_mq.c -+++ b/ipc/compat_mq.c -@@ -53,6 +53,9 @@ asmlinkage long compat_sys_mq_open(const char __user *u_name, - void __user *p = NULL; - if (u_attr && oflag & O_CREAT) { - struct mq_attr attr; -+ -+ memset(&attr, 0, sizeof(attr)); -+ - p = compat_alloc_user_space(sizeof(attr)); - if (get_compat_mq_attr(&attr, u_attr) || - copy_to_user(p, &attr, sizeof(attr))) -@@ -127,6 +130,8 @@ asmlinkage long compat_sys_mq_getsetattr(mqd_t mqdes, - struct mq_attr __user *p = compat_alloc_user_space(2 * sizeof(*p)); - long ret; - -+ memset(&mqstat, 0, sizeof(mqstat)); -+ - if (u_mqstat) { - if (get_compat_mq_attr(&mqstat, u_mqstat) || - copy_to_user(p, &mqstat, sizeof(mqstat))) diff --git a/freed-ora/current/master/kernel.spec b/freed-ora/current/master/kernel.spec index 7cc9b2b7d..7e6cfe8cc 100644 --- a/freed-ora/current/master/kernel.spec +++ b/freed-ora/current/master/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 11 +%global baserelease 12 %global fedora_build %{baserelease} # base_sublevel is the kernel version we're starting with and patching @@ -77,9 +77,9 @@ 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 +%define stable_rc 1 # Set rpm version accordingly %if 0%{?stable_update} %define stablerev .%{stable_update} @@ -681,8 +681,6 @@ Patch1819: drm-intel-big-hammer.patch Patch1825: drm-intel-make-lvds-work.patch Patch1900: linux-2.6-intel-iommu-igfx.patch -Patch1920: radeon-mc-vram-map-needs-to-be-gt-pci-aperture.patch - # linux1394 git patches Patch2200: linux-2.6-firewire-git-update.patch Patch2201: linux-2.6-firewire-git-pending.patch @@ -703,8 +701,6 @@ Patch2912: linux-2.6-v4l-dvb-ir-core-update.patch #Patch2916: lirc-staging-2.6.36-fixes.patch Patch2917: hdpvr-ir-enable.patch -Patch3000: linux-2.6-rcu-sched-warning.patch - # fs fixes # NFSv4 @@ -747,38 +743,27 @@ Patch12300: btusb-macbookpro-7-1.patch Patch12301: btusb-macbookpro-6-2.patch Patch12304: add-macbookair3-ids.patch -Patch12302: pnpacpi-cope-with-invalid-device-ids.patch - Patch12303: dmar-disable-when-ricoh-multifunction.patch Patch12305: xhci_hcd-suspend-resume.patch -Patch12307: tty-restore-tty_ldisc_wait_idle.patch - Patch12308: fix-i8k-inline-asm.patch -Patch12400: ipc-zero-struct-memory-for-compat-fns.patch -Patch12401: ipc-shm-fix-information-leak-to-user.patch - Patch12405: inet_diag-make-sure-we-run-the-same-bytecode-we-audited.patch Patch12408: netlink-make-nlmsg_find_attr-take-a-const-ptr.patch Patch12406: posix-cpu-timers-workaround-to-suppress-problems-with-mt-exec.patch -Patch12407: hda_realtek-handle-unset-external-amp-bits.patch - Patch12410: tty-make-tiocgicount-a-handler.patch Patch12411: tty-icount-changeover-for-other-main-devices.patch Patch12413: tpm-autodetect-itpm-devices.patch -Patch12415: tty-dont-allow-reopen-when-ldisc-is-changing.patch -Patch12416: tty-ldisc-fix-open-flag-handling.patch -Patch12417: tty-open-hangup-race-fixup.patch - Patch12420: mm-page-allocator-adjust-the-per-cpu-counter-threshold-when-memory-is-low.patch Patch12421: mm-vmstat-use-a-single-setter-function-and-callback-for-adjusting-percpu-thresholds.patch +Patch12430: sched-cure-more-NO_HZ-load-average-woes.patch + %endif BuildRoot: %{_tmppath}/kernel-%{KVERREL}-root @@ -1357,8 +1342,6 @@ ApplyPatch drm-intel-big-hammer.patch ApplyPatch drm-intel-make-lvds-work.patch ApplyPatch linux-2.6-intel-iommu-igfx.patch -ApplyPatch radeon-mc-vram-map-needs-to-be-gt-pci-aperture.patch - # linux1394 git patches #ApplyPatch linux-2.6-firewire-git-update.patch #ApplyOptionalPatch linux-2.6-firewire-git-pending.patch @@ -1381,9 +1364,6 @@ ApplyOptionalPatch linux-2.6-v4l-dvb-experimental.patch # enable IR receiver on Hauppauge HD PVR (v4l-dvb merge pending) ApplyPatch hdpvr-ir-enable.patch -# silence another rcu_reference warning -ApplyPatch linux-2.6-rcu-sched-warning.patch - # Patches headed upstream ApplyPatch disable-i8042-check-on-apple-mac.patch @@ -1422,24 +1402,13 @@ ApplyPatch btusb-macbookpro-7-1.patch ApplyPatch btusb-macbookpro-6-2.patch ApplyPatch add-macbookair3-ids.patch -# rhbz#641468 -ApplyPatch pnpacpi-cope-with-invalid-device-ids.patch - # rhbz#605888 ApplyPatch dmar-disable-when-ricoh-multifunction.patch ApplyPatch xhci_hcd-suspend-resume.patch -ApplyPatch tty-restore-tty_ldisc_wait_idle.patch - ApplyPatch fix-i8k-inline-asm.patch -# rhbz#648658 (CVE-2010-4073) -ApplyPatch ipc-zero-struct-memory-for-compat-fns.patch - -# rhbz#648656 (CVE-2010-4072) -ApplyPatch ipc-shm-fix-information-leak-to-user.patch - # rhbz#651264 (CVE-2010-3880) ApplyPatch inet_diag-make-sure-we-run-the-same-bytecode-we-audited.patch ApplyPatch netlink-make-nlmsg_find_attr-take-a-const-ptr.patch @@ -1447,23 +1416,19 @@ ApplyPatch netlink-make-nlmsg_find_attr-take-a-const-ptr.patch # rhbz#656264 ApplyPatch posix-cpu-timers-workaround-to-suppress-problems-with-mt-exec.patch -# rhbz#657388 -ApplyPatch hda_realtek-handle-unset-external-amp-bits.patch - # CVE-2010-4077, CVE-2010-4075 (rhbz#648660, #648663) ApplyPatch tty-make-tiocgicount-a-handler.patch ApplyPatch tty-icount-changeover-for-other-main-devices.patch ApplyPatch tpm-autodetect-itpm-devices.patch -ApplyPatch tty-dont-allow-reopen-when-ldisc-is-changing.patch -ApplyPatch tty-ldisc-fix-open-flag-handling.patch -ApplyPatch tty-open-hangup-race-fixup.patch - # backport some fixes for kswapd from mmotm, rhbz#649694 ApplyPatch mm-page-allocator-adjust-the-per-cpu-counter-threshold-when-memory-is-low.patch ApplyPatch mm-vmstat-use-a-single-setter-function-and-callback-for-adjusting-percpu-thresholds.patch +# rhbz#650934 +ApplyPatch sched-cure-more-NO_HZ-load-average-woes.patch + # END OF PATCH APPLICATIONS %endif @@ -1737,6 +1702,9 @@ BuildKernel() { mkdir -p $RPM_BUILD_ROOT/usr/src/kernels mv $RPM_BUILD_ROOT/lib/modules/$KernelVer/build $RPM_BUILD_ROOT/$DevelDir ln -sf ../../..$DevelDir $RPM_BUILD_ROOT/lib/modules/$KernelVer/build + + # prune junk from kernel-devel + find $RPM_BUILD_ROOT/usr/src/kernels -name ".*.cmd" -exec rm -f {} \; } ### @@ -1771,7 +1739,7 @@ BuildKernel %make_target %kernel_image smp %endif %global perf_make \ - make %{?_smp_mflags} -C tools/perf -s V=1 NO_DEMANGLE=1 prefix=%{_prefix} + make %{?_smp_mflags} -C tools/perf -s V=1 HAVE_CPLUS_DEMANGLE=1 prefix=%{_prefix} %if %{with_perf} %{perf_make} all %{perf_make} man || %{doc_build_fail} @@ -1856,8 +1824,6 @@ find $RPM_BUILD_ROOT/usr/include \ \( -name .install -o -name .check -o \ -name ..install.cmd -o -name ..check.cmd \) | xargs rm -f -find $RPM_BUILD_ROOT/usr/src/kernels -name ".*.cmd" -exec rm -f {} \; - # glibc provides scsi headers for itself, for now rm -rf $RPM_BUILD_ROOT/usr/include/scsi rm -f $RPM_BUILD_ROOT/usr/include/asm*/atomic.h @@ -2077,6 +2043,28 @@ fi # || || %changelog +* Wed Dec 08 2010 Kyle McMartin <kyle@redhat.com> 2.6.36.2-12.rc1 +- Linux stable 2.6.36.2-rc1 +- Drop patches merged in stable series: + tty-dont-allow-reopen-when-ldisc-is-changing.patch + tty-ldisc-fix-open-flag-handling.patch + tty-open-hangup-race-fixup.patch + tty-restore-tty_ldisc_wait_idle.patch + hda_realtek-handle-unset-external-amp-bits.patch + ipc-shm-fix-information-leak-to-user.patch + ipc-zero-struct-memory-for-compat-fns.patch + linux-2.6-rcu-sched-warning.patch + pnpacpi-cope-with-invalid-device-ids.patch + radeon-mc-vram-map-needs-to-be-gt-pci-aperture.patch + +* Wed Dec 08 2010 Kyle McMartin <kyle@redhat.com> +- sched-cure-more-NO_HZ-load-average-woes.patch: fix some of the complaints + in 2.6.35+ about load average with dynticks. (rhbz#650934) + +* Sat Dec 04 2010 Kyle McMartin <kyle@redhat.com> +- Enable C++ symbol demangling with perf by linking against libiberty.a, + which is LGPL2. + * Fri Dec 03 2010 Kyle McMartin <kyle@redhat.com> 2.6.36.1-11 - Enable HP ILO on x86_64. (#571329) diff --git a/freed-ora/current/master/linux-2.6-rcu-sched-warning.patch b/freed-ora/current/master/linux-2.6-rcu-sched-warning.patch deleted file mode 100644 index ab3ff006b..000000000 --- a/freed-ora/current/master/linux-2.6-rcu-sched-warning.patch +++ /dev/null @@ -1,215 +0,0 @@ -From davej Thu Sep 16 11:55:58 2010 -Return-Path: linux-kernel-owner@vger.kernel.org -X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on gelk -X-Spam-Level: -X-Spam-Status: No, score=-4.2 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_MED, - T_RP_MATCHES_RCVD,UNPARSEABLE_RELAY autolearn=ham version=3.3.1 -Received: from mail.corp.redhat.com [10.5.5.52] - by gelk with IMAP (fetchmail-6.3.17) - for <davej@localhost> (single-drop); Thu, 16 Sep 2010 11:55:58 -0400 (EDT) -Received: from zmta02.collab.prod.int.phx2.redhat.com (LHLO - zmta02.collab.prod.int.phx2.redhat.com) (10.5.5.32) by - mail04.corp.redhat.com with LMTP; Thu, 16 Sep 2010 11:51:27 -0400 (EDT) -Received: from localhost (localhost.localdomain [127.0.0.1]) - by zmta02.collab.prod.int.phx2.redhat.com (Postfix) with ESMTP id 4889C9FC56; - Thu, 16 Sep 2010 11:51:27 -0400 (EDT) -Received: from zmta02.collab.prod.int.phx2.redhat.com ([127.0.0.1]) - by localhost (zmta02.collab.prod.int.phx2.redhat.com [127.0.0.1]) (amavisd-new, port 10024) - with ESMTP id 94mQrmwfCpY4; Thu, 16 Sep 2010 11:51:27 -0400 (EDT) -Received: from int-mx03.intmail.prod.int.phx2.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.16]) - by zmta02.collab.prod.int.phx2.redhat.com (Postfix) with ESMTP id 0DBDB9FC4B; - Thu, 16 Sep 2010 11:51:27 -0400 (EDT) -Received: from mx1.redhat.com (ext-mx05.extmail.prod.ext.phx2.redhat.com [10.5.110.9]) - by int-mx03.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id o8GFpQnO003857; - Thu, 16 Sep 2010 11:51:26 -0400 -Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) - by mx1.redhat.com (8.13.8/8.13.8) with ESMTP id o8GFFCFE031066; - Thu, 16 Sep 2010 11:51:17 -0400 -Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand - id S1755493Ab0IPPvH (ORCPT <rfc822;jasowang@redhat.com> + 41 others); - Thu, 16 Sep 2010 11:51:07 -0400 -Received: from casper.infradead.org ([85.118.1.10]:41834 "EHLO - casper.infradead.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org - with ESMTP id S1754921Ab0IPPvC convert rfc822-to-8bit (ORCPT - <rfc822;linux-kernel@vger.kernel.org>); - Thu, 16 Sep 2010 11:51:02 -0400 -Received: from f199130.upc-f.chello.nl ([80.56.199.130] helo=laptop) - by casper.infradead.org with esmtpsa (Exim 4.72 #1 (Red Hat Linux)) - id 1OwGjI-0003VE-Ux; Thu, 16 Sep 2010 15:50:33 +0000 -Received: by laptop (Postfix, from userid 1000) - id 6DCDB100AEB1D; Thu, 16 Sep 2010 17:50:32 +0200 (CEST) -Subject: Re: 2.6.35-stable/ppc64/p7: suspicious rcu_dereference_check() - usage detected during 2.6.35-stable boot -From: Peter Zijlstra <peterz@infradead.org> -To: paulmck@linux.vnet.ibm.com -Cc: Subrata Modak <subrata@linux.vnet.ibm.com>, - linux-kernel <linux-kernel@vger.kernel.org>, - Li Zefan <lizf@cn.fujitsu.com>, Linuxppc-dev <Linuxppc-dev@ozlabs.org>, - sachinp <sachinp@linux.vnet.ibm.com>, - DIVYA PRAKASH <dipraksh@linux.vnet.ibm.com>, - "Valdis.Kletnieks" <Valdis.Kletnieks@vt.edu> -In-Reply-To: <20100809161200.GC3026@linux.vnet.ibm.com> -References: <1280739132.15317.9.camel@subratamodak.linux.ibm.com> - <20100809161200.GC3026@linux.vnet.ibm.com> -Content-Type: text/plain; charset="UTF-8" -Content-Transfer-Encoding: 8BIT -Date: Thu, 16 Sep 2010 17:50:31 +0200 -Message-ID: <1284652231.2275.569.camel@laptop> -Mime-Version: 1.0 -Sender: linux-kernel-owner@vger.kernel.org -Precedence: bulk -List-ID: <linux-kernel.vger.kernel.org> -X-Mailing-List: linux-kernel@vger.kernel.org -X-RedHat-Spam-Score: -2.31 (RCVD_IN_DNSWL_MED,T_RP_MATCHES_RCVD) -X-Scanned-By: MIMEDefang 2.67 on 10.5.11.16 -X-Scanned-By: MIMEDefang 2.67 on 10.5.110.9 -Status: RO -Content-Length: 6752 -Lines: 145 - -On Mon, 2010-08-09 at 09:12 -0700, Paul E. McKenney wrote: - -> > [ 0.051203] CPU0: AMD QEMU Virtual CPU version 0.12.4 stepping 03 -> > [ 0.052999] lockdep: fixing up alternatives. -> > [ 0.054105] -> > [ 0.054106] =================================================== -> > [ 0.054999] [ INFO: suspicious rcu_dereference_check() usage. ] -> > [ 0.054999] --------------------------------------------------- -> > [ 0.054999] kernel/sched.c:616 invoked rcu_dereference_check() without protection! -> > [ 0.054999] -> > [ 0.054999] other info that might help us debug this: -> > [ 0.054999] -> > [ 0.054999] -> > [ 0.054999] rcu_scheduler_active = 1, debug_locks = 1 -> > [ 0.054999] 3 locks held by swapper/1: -> > [ 0.054999] #0: (cpu_add_remove_lock){+.+.+.}, at: [<ffffffff814be933>] cpu_up+0x42/0x6a -> > [ 0.054999] #1: (cpu_hotplug.lock){+.+.+.}, at: [<ffffffff810400d8>] cpu_hotplug_begin+0x2a/0x51 -> > [ 0.054999] #2: (&rq->lock){-.-...}, at: [<ffffffff814be2f7>] init_idle+0x2f/0x113 -> > [ 0.054999] -> > [ 0.054999] stack backtrace: -> > [ 0.054999] Pid: 1, comm: swapper Not tainted 2.6.35 #1 -> > [ 0.054999] Call Trace: -> > [ 0.054999] [<ffffffff81068054>] lockdep_rcu_dereference+0x9b/0xa3 -> > [ 0.054999] [<ffffffff810325c3>] task_group+0x7b/0x8a -> > [ 0.054999] [<ffffffff810325e5>] set_task_rq+0x13/0x40 -> > [ 0.054999] [<ffffffff814be39a>] init_idle+0xd2/0x113 -> > [ 0.054999] [<ffffffff814be78a>] fork_idle+0xb8/0xc7 -> > [ 0.054999] [<ffffffff81068717>] ? mark_held_locks+0x4d/0x6b -> > [ 0.054999] [<ffffffff814bcebd>] do_fork_idle+0x17/0x2b -> > [ 0.054999] [<ffffffff814bc89b>] native_cpu_up+0x1c1/0x724 -> > [ 0.054999] [<ffffffff814bcea6>] ? do_fork_idle+0x0/0x2b -> > [ 0.054999] [<ffffffff814be876>] _cpu_up+0xac/0x127 -> > [ 0.054999] [<ffffffff814be946>] cpu_up+0x55/0x6a -> > [ 0.054999] [<ffffffff81ab562a>] kernel_init+0xe1/0x1ff -> > [ 0.054999] [<ffffffff81003854>] kernel_thread_helper+0x4/0x10 -> > [ 0.054999] [<ffffffff814c353c>] ? restore_args+0x0/0x30 -> > [ 0.054999] [<ffffffff81ab5549>] ? kernel_init+0x0/0x1ff -> > [ 0.054999] [<ffffffff81003850>] ? kernel_thread_helper+0x0/0x10 -> > [ 0.056074] Booting Node 0, Processors #1lockdep: fixing up alternatives. -> > [ 0.130045] #2lockdep: fixing up alternatives. -> > [ 0.203089] #3 Ok. -> > [ 0.275286] Brought up 4 CPUs -> > [ 0.276005] Total of 4 processors activated (16017.17 BogoMIPS). -> -> This does look like a new one, thank you for reporting it! -> -> Here is my analysis, which should at least provide some humor value to -> those who understand the code better than I do. ;-) -> -> So the corresponding rcu_dereference_check() is in -> task_subsys_state_check(), and is fetching the cpu_cgroup_subsys_id -> element of the newly created task's task->cgroups->subsys[] array. -> The "git grep" command finds only three uses of cpu_cgroup_subsys_id, -> but no definition. -> -> Now, fork_idle() invokes copy_process(), which invokes cgroup_fork(), -> which sets the child process's ->cgroups pointer to that of the parent, -> also invoking get_css_set(), which increments the corresponding reference -> count, doing both operations under task_lock() protection (->alloc_lock). -> Because fork_idle() does not specify any of CLONE_NEWNS, CLONE_NEWUTS, -> CLONE_NEWIPC, CLONE_NEWPID, or CLONE_NEWNET, copy_namespaces() should -> not create a new namespace, and so there should be no ns_cgroup_clone(). -> We should thus retain the parent's ->cgroups pointer. And copy_process() -> installs the new task in the various lists, so that the task is externally -> accessible upon return. -> -> After a non-error return from copy_process(), fork_init() invokes -> init_idle_pid(), which does not appear to affect the task's cgroup -> state. Next fork_init() invokes init_idle(), which in turn invokes -> __set_task_cpu(), which invokes set_task_rq(), which calls task_group() -> several times, which calls task_subsys_state_check(), which calls the -> rcu_dereference_check() that complained above. -> -> However, the result returns by rcu_dereference_check() is stored into -> the task structure: -> -> p->se.cfs_rq = task_group(p)->cfs_rq[cpu]; -> p->se.parent = task_group(p)->se[cpu]; -> -> This means that the corresponding structure must have been tied down with -> a reference count or some such. If such a reference has been taken, then -> this complaint is a false positive, and could be suppressed by putting -> rcu_read_lock() and rcu_read_unlock() around the call to init_idle() -> from fork_idle(). However, although, reference to the enclosing ->cgroups -> struct css_set is held, it is not clear to me that this reference applies -> to the structures pointed to by the ->subsys[] array, especially given -> that the cgroup_subsys_state structures referenced by this array have -> their own reference count, which does not appear to me to be acquired -> by this code path. -> -> Or are the cgroup_subsys_state structures referenced by idle tasks -> never freed or some such? - -I would hope so!, the idle tasks should be part of the root cgroup, -which is not removable. - -The problem is that while we do in-fact hold rq->lock, the newly spawned -idle thread's cpu is not yet set to the correct cpu so the lockdep check -in task_group(): - - lockdep_is_held(&task_rq(p)->lock) - -will fail. - -But of a chicken and egg problem. Setting the cpu needs to have the cpu -set ;-) - -Ingo, why do we have rq->lock there at all? The CPU isn't up and running -yet, nothing should be touching it. - -Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl> ---- - kernel/sched.c | 12 ++++++++++++ - 1 files changed, 12 insertions(+), 0 deletions(-) - -diff --git a/kernel/sched.c b/kernel/sched.c -index bd8b487..6241049 100644 ---- a/kernel/sched.c -+++ b/kernel/sched.c -@@ -5332,7 +5332,19 @@ void __cpuinit init_idle(struct task_struct *idle, int cpu) - idle->se.exec_start = sched_clock(); - - cpumask_copy(&idle->cpus_allowed, cpumask_of(cpu)); -+ /* -+ * We're having a chicken and egg problem, even though we are -+ * holding rq->lock, the cpu isn't yet set to this cpu so the -+ * lockdep check in task_group() will fail. -+ * -+ * Similar case to sched_fork(). / Alternatively we could -+ * use task_rq_lock() here and obtain the other rq->lock. -+ * -+ * Silence PROVE_RCU -+ */ -+ rcu_read_lock(); - __set_task_cpu(idle, cpu); -+ rcu_read_unlock(); - - rq->curr = rq->idle = idle; - #if defined(CONFIG_SMP) && defined(__ARCH_WANT_UNLOCKED_CTXSW) - --- -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/freed-ora/current/master/pnpacpi-cope-with-invalid-device-ids.patch b/freed-ora/current/master/pnpacpi-cope-with-invalid-device-ids.patch deleted file mode 100644 index 70b2ab968..000000000 --- a/freed-ora/current/master/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/freed-ora/current/master/radeon-mc-vram-map-needs-to-be-gt-pci-aperture.patch b/freed-ora/current/master/radeon-mc-vram-map-needs-to-be-gt-pci-aperture.patch deleted file mode 100644 index 88fa35e2f..000000000 --- a/freed-ora/current/master/radeon-mc-vram-map-needs-to-be-gt-pci-aperture.patch +++ /dev/null @@ -1,32 +0,0 @@ -commit b7d8cce5b558e0c0aa6898c9865356481598b46d -Author: Alex Deucher <alexdeucher@gmail.com> -Date: Mon Oct 25 19:44:00 2010 -0400 - - drm/radeon/kms: MC vram map needs to be >= pci aperture size - - The vram map in the radeon memory controller needs to be - >= the pci aperture size. Fixes: - https://bugs.freedesktop.org/show_bug.cgi?id=28402 - - The problematic cards in the above bug have 64 MB of vram, - but the pci aperture is 128 MB and the MC vram map was only - 64 MB. This can lead to hangs. - - Signed-off-by: Alex Deucher <alexdeucher@gmail.com> - Cc: stable@kernel.org - Signed-off-by: Dave Airlie <airlied@redhat.com> - -diff --git a/drivers/gpu/drm/radeon/r100.c b/drivers/gpu/drm/radeon/r100.c -index 6112ac9..6d1540c 100644 ---- a/drivers/gpu/drm/radeon/r100.c -+++ b/drivers/gpu/drm/radeon/r100.c -@@ -2270,6 +2270,9 @@ void r100_vram_init_sizes(struct radeon_device *rdev) - /* Fix for RN50, M6, M7 with 8/16/32(??) MBs of VRAM - - * Novell bug 204882 + along with lots of ubuntu ones - */ -+ if (rdev->mc.aper_size > config_aper_size) -+ config_aper_size = rdev->mc.aper_size; -+ - if (config_aper_size > rdev->mc.real_vram_size) - rdev->mc.mc_vram_size = config_aper_size; - else diff --git a/freed-ora/current/master/sched-cure-more-NO_HZ-load-average-woes.patch b/freed-ora/current/master/sched-cure-more-NO_HZ-load-average-woes.patch new file mode 100644 index 000000000..a4053c3b4 --- /dev/null +++ b/freed-ora/current/master/sched-cure-more-NO_HZ-load-average-woes.patch @@ -0,0 +1,273 @@ +From bounces.tip@hpa.at.zytor.com Wed Dec 8 15:40:48 2010 +From: tip-bot for Peter Zijlstra <a.p.zijlstra@chello.nl> +In-Reply-To: <1291129145.32004.874.camel@laptop> +References: <1291129145.32004.874.camel@laptop> +Subject: [tip:sched/urgent] sched: Cure more NO_HZ load average woes +Message-ID: <tip-0f004f5a696a9434b7214d0d3cbd0525ee77d428@git.kernel.org> +Git-Commit-ID: 0f004f5a696a9434b7214d0d3cbd0525ee77d428 + +Commit-ID: 0f004f5a696a9434b7214d0d3cbd0525ee77d428 +Gitweb: http://git.kernel.org/tip/0f004f5a696a9434b7214d0d3cbd0525ee77d428 +Author: Peter Zijlstra <a.p.zijlstra@chello.nl> +AuthorDate: Tue, 30 Nov 2010 19:48:45 +0100 +Committer: Ingo Molnar <mingo@elte.hu> +CommitDate: Wed, 8 Dec 2010 20:15:04 +0100 + +sched: Cure more NO_HZ load average woes + +There's a long-running regression that proved difficult to fix and +which is hitting certain people and is rather annoying in its effects. + +Damien reported that after 74f5187ac8 (sched: Cure load average vs +NO_HZ woes) his load average is unnaturally high, he also noted that +even with that patch reverted the load avgerage numbers are not +correct. + +The problem is that the previous patch only solved half the NO_HZ +problem, it addressed the part of going into NO_HZ mode, not of +comming out of NO_HZ mode. This patch implements that missing half. + +When comming out of NO_HZ mode there are two important things to take +care of: + + - Folding the pending idle delta into the global active count. + - Correctly aging the averages for the idle-duration. + +So with this patch the NO_HZ interaction should be complete and +behaviour between CONFIG_NO_HZ=[yn] should be equivalent. + +Furthermore, this patch slightly changes the load average computation +by adding a rounding term to the fixed point multiplication. + +Reported-by: Damien Wyart <damien.wyart@free.fr> +Reported-by: Tim McGrath <tmhikaru@gmail.com> +Tested-by: Damien Wyart <damien.wyart@free.fr> +Tested-by: Orion Poplawski <orion@cora.nwra.com> +Tested-by: Kyle McMartin <kyle@mcmartin.ca> +Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl> +Cc: stable@kernel.org +Cc: Chase Douglas <chase.douglas@canonical.com> +LKML-Reference: <1291129145.32004.874.camel@laptop> +Signed-off-by: Ingo Molnar <mingo@elte.hu> +--- + include/linux/sched.h | 2 +- + kernel/sched.c | 150 +++++++++++++++++++++++++++++++++++++++++++++---- + kernel/timer.c | 2 +- + 3 files changed, 141 insertions(+), 13 deletions(-) + +diff --git a/include/linux/sched.h b/include/linux/sched.h +index 2c79e92..2238745 100644 +--- a/include/linux/sched.h ++++ b/include/linux/sched.h +@@ -143,7 +143,7 @@ extern unsigned long nr_iowait_cpu(int cpu); + extern unsigned long this_cpu_load(void); + + +-extern void calc_global_load(void); ++extern void calc_global_load(unsigned long ticks); + + extern unsigned long get_parent_ip(unsigned long addr); + +diff --git a/kernel/sched.c b/kernel/sched.c +index dc91a4d..6b7c26a 100644 +--- a/kernel/sched.c ++++ b/kernel/sched.c +@@ -3119,6 +3119,15 @@ static long calc_load_fold_active(struct rq *this_rq) + return delta; + } + ++static unsigned long ++calc_load(unsigned long load, unsigned long exp, unsigned long active) ++{ ++ load *= exp; ++ load += active * (FIXED_1 - exp); ++ load += 1UL << (FSHIFT - 1); ++ return load >> FSHIFT; ++} ++ + #ifdef CONFIG_NO_HZ + /* + * For NO_HZ we delay the active fold to the next LOAD_FREQ update. +@@ -3148,6 +3157,128 @@ static long calc_load_fold_idle(void) + + return delta; + } ++ ++/** ++ * fixed_power_int - compute: x^n, in O(log n) time ++ * ++ * @x: base of the power ++ * @frac_bits: fractional bits of @x ++ * @n: power to raise @x to. ++ * ++ * By exploiting the relation between the definition of the natural power ++ * function: x^n := x*x*...*x (x multiplied by itself for n times), and ++ * the binary encoding of numbers used by computers: n := \Sum n_i * 2^i, ++ * (where: n_i \elem {0, 1}, the binary vector representing n), ++ * we find: x^n := x^(\Sum n_i * 2^i) := \Prod x^(n_i * 2^i), which is ++ * of course trivially computable in O(log_2 n), the length of our binary ++ * vector. ++ */ ++static unsigned long ++fixed_power_int(unsigned long x, unsigned int frac_bits, unsigned int n) ++{ ++ unsigned long result = 1UL << frac_bits; ++ ++ if (n) for (;;) { ++ if (n & 1) { ++ result *= x; ++ result += 1UL << (frac_bits - 1); ++ result >>= frac_bits; ++ } ++ n >>= 1; ++ if (!n) ++ break; ++ x *= x; ++ x += 1UL << (frac_bits - 1); ++ x >>= frac_bits; ++ } ++ ++ return result; ++} ++ ++/* ++ * a1 = a0 * e + a * (1 - e) ++ * ++ * a2 = a1 * e + a * (1 - e) ++ * = (a0 * e + a * (1 - e)) * e + a * (1 - e) ++ * = a0 * e^2 + a * (1 - e) * (1 + e) ++ * ++ * a3 = a2 * e + a * (1 - e) ++ * = (a0 * e^2 + a * (1 - e) * (1 + e)) * e + a * (1 - e) ++ * = a0 * e^3 + a * (1 - e) * (1 + e + e^2) ++ * ++ * ... ++ * ++ * an = a0 * e^n + a * (1 - e) * (1 + e + ... + e^n-1) [1] ++ * = a0 * e^n + a * (1 - e) * (1 - e^n)/(1 - e) ++ * = a0 * e^n + a * (1 - e^n) ++ * ++ * [1] application of the geometric series: ++ * ++ * n 1 - x^(n+1) ++ * S_n := \Sum x^i = ------------- ++ * i=0 1 - x ++ */ ++static unsigned long ++calc_load_n(unsigned long load, unsigned long exp, ++ unsigned long active, unsigned int n) ++{ ++ ++ return calc_load(load, fixed_power_int(exp, FSHIFT, n), active); ++} ++ ++/* ++ * NO_HZ can leave us missing all per-cpu ticks calling ++ * calc_load_account_active(), but since an idle CPU folds its delta into ++ * calc_load_tasks_idle per calc_load_account_idle(), all we need to do is fold ++ * in the pending idle delta if our idle period crossed a load cycle boundary. ++ * ++ * Once we've updated the global active value, we need to apply the exponential ++ * weights adjusted to the number of cycles missed. ++ */ ++static void calc_global_nohz(unsigned long ticks) ++{ ++ long delta, active, n; ++ ++ if (time_before(jiffies, calc_load_update)) ++ return; ++ ++ /* ++ * If we crossed a calc_load_update boundary, make sure to fold ++ * any pending idle changes, the respective CPUs might have ++ * missed the tick driven calc_load_account_active() update ++ * due to NO_HZ. ++ */ ++ delta = calc_load_fold_idle(); ++ if (delta) ++ atomic_long_add(delta, &calc_load_tasks); ++ ++ /* ++ * If we were idle for multiple load cycles, apply them. ++ */ ++ if (ticks >= LOAD_FREQ) { ++ n = ticks / LOAD_FREQ; ++ ++ active = atomic_long_read(&calc_load_tasks); ++ active = active > 0 ? active * FIXED_1 : 0; ++ ++ avenrun[0] = calc_load_n(avenrun[0], EXP_1, active, n); ++ avenrun[1] = calc_load_n(avenrun[1], EXP_5, active, n); ++ avenrun[2] = calc_load_n(avenrun[2], EXP_15, active, n); ++ ++ calc_load_update += n * LOAD_FREQ; ++ } ++ ++ /* ++ * Its possible the remainder of the above division also crosses ++ * a LOAD_FREQ period, the regular check in calc_global_load() ++ * which comes after this will take care of that. ++ * ++ * Consider us being 11 ticks before a cycle completion, and us ++ * sleeping for 4*LOAD_FREQ + 22 ticks, then the above code will ++ * age us 4 cycles, and the test in calc_global_load() will ++ * pick up the final one. ++ */ ++} + #else + static void calc_load_account_idle(struct rq *this_rq) + { +@@ -3157,6 +3288,10 @@ static inline long calc_load_fold_idle(void) + { + return 0; + } ++ ++static void calc_global_nohz(unsigned long ticks) ++{ ++} + #endif + + /** +@@ -3174,24 +3309,17 @@ void get_avenrun(unsigned long *loads, unsigned long offset, int shift) + loads[2] = (avenrun[2] + offset) << shift; + } + +-static unsigned long +-calc_load(unsigned long load, unsigned long exp, unsigned long active) +-{ +- load *= exp; +- load += active * (FIXED_1 - exp); +- return load >> FSHIFT; +-} +- + /* + * calc_load - update the avenrun load estimates 10 ticks after the + * CPUs have updated calc_load_tasks. + */ +-void calc_global_load(void) ++void calc_global_load(unsigned long ticks) + { +- unsigned long upd = calc_load_update + 10; + long active; + +- if (time_before(jiffies, upd)) ++ calc_global_nohz(ticks); ++ ++ if (time_before(jiffies, calc_load_update + 10)) + return; + + active = atomic_long_read(&calc_load_tasks); +diff --git a/kernel/timer.c b/kernel/timer.c +index 68a9ae7..7bd715f 100644 +--- a/kernel/timer.c ++++ b/kernel/timer.c +@@ -1319,7 +1319,7 @@ void do_timer(unsigned long ticks) + { + jiffies_64 += ticks; + update_wall_time(); +- calc_global_load(); ++ calc_global_load(ticks); + } + + #ifdef __ARCH_WANT_SYS_ALARM + diff --git a/freed-ora/current/master/sources b/freed-ora/current/master/sources index 56b687082..34dfe1ce0 100644 --- a/freed-ora/current/master/sources +++ b/freed-ora/current/master/sources @@ -1,2 +1,3 @@ 1b4c237ed303dea7cf4624dac8230bb7 linux-2.6.36-libre.tar.bz2 384bec2c94e14610f00455356d066583 patch-libre-2.6.36.1.bz2 +33b11b4b8fcd47601a0e1e51586c4b04 patch-2.6.36.2-rc1.bz2 diff --git a/freed-ora/current/master/tty-dont-allow-reopen-when-ldisc-is-changing.patch b/freed-ora/current/master/tty-dont-allow-reopen-when-ldisc-is-changing.patch deleted file mode 100644 index 4b822d5f9..000000000 --- a/freed-ora/current/master/tty-dont-allow-reopen-when-ldisc-is-changing.patch +++ /dev/null @@ -1,84 +0,0 @@ -From jirislaby@gmail.com Thu Nov 25 12:16:42 2010 -From: Jiri Slaby <jslaby@suse.cz> -Subject: [PATCH 1/1] TTY: don't allow reopen when ldisc is changing -Date: Thu, 25 Nov 2010 18:16:23 +0100 - -There are many WARNINGs like the following reported nowadays: -WARNING: at drivers/tty/tty_io.c:1331 tty_open+0x2a2/0x49a() -Hardware name: Latitude E6500 -Modules linked in: -Pid: 1207, comm: plymouthd Not tainted 2.6.37-rc3-mmotm1123 #3 -Call Trace: - [<ffffffff8103b189>] warn_slowpath_common+0x80/0x98 - [<ffffffff8103b1b6>] warn_slowpath_null+0x15/0x17 - [<ffffffff8128a3ab>] tty_open+0x2a2/0x49a - [<ffffffff810fd53f>] chrdev_open+0x11d/0x146 -... - -This means tty_reopen is called without TTY_LDISC set. For further -considerations, note tty_lock is held in tty_open. TTY_LDISC is cleared in: -1) __tty_hangup from tty_ldisc_hangup to tty_ldisc_enable. During this -section tty_lock is held. - -2) tty_release via tty_ldisc_release till the end of tty existence. If -tty->count <= 1, tty_lock is taken, TTY_CLOSING bit set and then -tty_ldisc_release called. tty_reopen checks TTY_CLOSING before checking -TTY_LDISC. - -3) tty_set_ldisc from tty_ldisc_halt to tty_ldisc_enable. We: - * take tty_lock, set TTY_LDISC_CHANGING, put tty_lock - * call tty_ldisc_halt (clear TTY_LDISC), tty_lock is _not_ held - * do some other work - * take tty_lock, call tty_ldisc_enable (set TTY_LDISC), put - tty_lock - -So the only option I see is 3). The solution is to check -TTY_LDISC_CHANGING along with TTY_CLOSING in tty_reopen. - -Nicely reproducible with two processes: -while (1) { - fd = open("/dev/ttyS1", O_RDWR); - if (fd < 0) { - warn("open"); - continue; - } - close(fd); -} --------- -while (1) { - fd = open("/dev/ttyS1", O_RDWR); - ld1 = 0; ld2 = 2; - while (1) { - ioctl(fd, TIOCSETD, &ld1); - ioctl(fd, TIOCSETD, &ld2); - } - close(fd); -} - -Signed-off-by: Jiri Slaby <jslaby@suse.cz> -Reported-by: <Valdis.Kletnieks@vt.edu> -Cc: Kyle McMartin <kyle@mcmartin.ca> -Cc: Alan Cox <alan@lxorguk.ukuu.org.uk> ---- - drivers/tty/tty_io.c | 3 ++- - 1 files changed, 2 insertions(+), 1 deletions(-) - -diff --git a/drivers/tty/tty_io.c b/drivers/tty/tty_io.c -index c05c5af..878f6d6 100644 ---- a/drivers/char/tty_io.c -+++ b/drivers/char/tty_io.c -@@ -1310,7 +1310,8 @@ static int tty_reopen(struct tty_struct *tty) - { - struct tty_driver *driver = tty->driver; - -- if (test_bit(TTY_CLOSING, &tty->flags)) -+ if (test_bit(TTY_CLOSING, &tty->flags) || -+ test_bit(TTY_LDISC_CHANGING, &tty->flags)) - return -EIO; - - if (driver->type == TTY_DRIVER_TYPE_PTY && --- -1.7.3.1 - - - diff --git a/freed-ora/current/master/tty-ldisc-fix-open-flag-handling.patch b/freed-ora/current/master/tty-ldisc-fix-open-flag-handling.patch deleted file mode 100644 index 72c67a976..000000000 --- a/freed-ora/current/master/tty-ldisc-fix-open-flag-handling.patch +++ /dev/null @@ -1,54 +0,0 @@ -From linux-kernel-owner@vger.kernel.org Wed Nov 24 18:28:11 2010 -From: Jiri Slaby <jslaby@suse.cz> -Subject: [PATCH 1/2] TTY: ldisc, fix open flag handling -Date: Thu, 25 Nov 2010 00:27:54 +0100 - -When a concrete ldisc open fails in tty_ldisc_open, we forget to clear -TTY_LDISC_OPEN. This causes a false warning on the next ldisc open: -WARNING: at drivers/char/tty_ldisc.c:445 tty_ldisc_open+0x26/0x38() -Hardware name: System Product Name -Modules linked in: ... -Pid: 5251, comm: a.out Tainted: G W 2.6.32-5-686 #1 -Call Trace: - [<c1030321>] ? warn_slowpath_common+0x5e/0x8a - [<c1030357>] ? warn_slowpath_null+0xa/0xc - [<c119311c>] ? tty_ldisc_open+0x26/0x38 - [<c11936c5>] ? tty_set_ldisc+0x218/0x304 -... - -So clear the bit when failing... - -Introduced in c65c9bc3efa (tty: rewrite the ldisc locking) back in -2.6.31-rc1. - -Signed-off-by: Jiri Slaby <jslaby@suse.cz> -Cc: Alan Cox <alan@linux.intel.com> -Reported-by: Sergey Lapin <slapin@ossfans.org> -Tested-by: Sergey Lapin <slapin@ossfans.org> ---- - drivers/tty/tty_ldisc.c | 2 ++ - 1 files changed, 2 insertions(+), 0 deletions(-) - -diff --git a/drivers/tty/tty_ldisc.c b/drivers/tty/tty_ldisc.c -index d8e96b0..4214d58 100644 ---- a/drivers/char/tty_ldisc.c -+++ b/drivers/char/tty_ldisc.c -@@ -454,6 +454,8 @@ static int tty_ldisc_open(struct tty_struct *tty, struct tty_ldisc *ld) - /* BTM here locks versus a hangup event */ - WARN_ON(!tty_locked()); - ret = ld->ops->open(tty); -+ if (ret) -+ clear_bit(TTY_LDISC_OPEN, &tty->flags); - return ret; - } - return 0; --- -1.7.3.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/freed-ora/current/master/tty-open-hangup-race-fixup.patch b/freed-ora/current/master/tty-open-hangup-race-fixup.patch deleted file mode 100644 index bfd29ecf7..000000000 --- a/freed-ora/current/master/tty-open-hangup-race-fixup.patch +++ /dev/null @@ -1,76 +0,0 @@ -From 9e88e8b9915b5e067507a087437d80e6a133d612 Mon Sep 17 00:00:00 2001 -From: Jiri Slaby <jslaby@suse.cz> -Date: Sat, 27 Nov 2010 16:06:46 +0100 -Subject: [PATCH 1/1] TTY: open/hangup race fixup - - -Signed-off-by: Jiri Slaby <jslaby@suse.cz> ---- - drivers/tty/tty_io.c | 10 +++++++++- - include/linux/tty.h | 1 + - 2 files changed, 10 insertions(+), 1 deletions(-) - -diff --git a/drivers/tty/tty_io.c b/drivers/tty/tty_io.c -index 878f6d6..35480dd 100644 ---- a/drivers/char/tty_io.c -+++ b/drivers/char/tty_io.c -@@ -559,6 +559,9 @@ void __tty_hangup(struct tty_struct *tty) - - tty_lock(); - -+ /* some functions below drop BTM, so we need this bit */ -+ set_bit(TTY_HUPPING, &tty->flags); -+ - /* inuse_filps is protected by the single tty lock, - this really needs to change if we want to flush the - workqueue with the lock held */ -@@ -578,6 +581,10 @@ void __tty_hangup(struct tty_struct *tty) - } - spin_unlock(&tty_files_lock); - -+ /* -+ * it drops BTM and thus races with reopen -+ * we protect the race by TTY_HUPPING -+ */ - tty_ldisc_hangup(tty); - - read_lock(&tasklist_lock); -@@ -615,7 +622,6 @@ void __tty_hangup(struct tty_struct *tty) - tty->session = NULL; - tty->pgrp = NULL; - tty->ctrl_status = 0; -- set_bit(TTY_HUPPED, &tty->flags); - spin_unlock_irqrestore(&tty->ctrl_lock, flags); - - /* Account for the p->signal references we killed */ -@@ -641,6 +647,7 @@ void __tty_hangup(struct tty_struct *tty) - * can't yet guarantee all that. - */ - set_bit(TTY_HUPPED, &tty->flags); -+ clear_bit(TTY_HUPPING, &tty->flags); - tty_ldisc_enable(tty); - - tty_unlock(); -@@ -1311,6 +1318,7 @@ static int tty_reopen(struct tty_struct *tty) - struct tty_driver *driver = tty->driver; - - if (test_bit(TTY_CLOSING, &tty->flags) || -+ test_bit(TTY_HUPPING, &tty->flags) || - test_bit(TTY_LDISC_CHANGING, &tty->flags)) - return -EIO; - -diff --git a/include/linux/tty.h b/include/linux/tty.h -index 032d79f..54e4eaa 100644 ---- a/include/linux/tty.h -+++ b/include/linux/tty.h -@@ -366,6 +366,7 @@ struct tty_file_private { - #define TTY_HUPPED 18 /* Post driver->hangup() */ - #define TTY_FLUSHING 19 /* Flushing to ldisc in progress */ - #define TTY_FLUSHPENDING 20 /* Queued buffer flush pending */ -+#define TTY_HUPPING 21 /* ->hangup() in progress */ - - #define TTY_WRITE_FLUSH(tty) tty_write_flush((tty)) - --- -1.7.3.1 - diff --git a/freed-ora/current/master/tty-restore-tty_ldisc_wait_idle.patch b/freed-ora/current/master/tty-restore-tty_ldisc_wait_idle.patch deleted file mode 100644 index 3e784dd57..000000000 --- a/freed-ora/current/master/tty-restore-tty_ldisc_wait_idle.patch +++ /dev/null @@ -1,117 +0,0 @@ -From 4d458f558d5b904f14080b073b549d18c9503f93 Mon Sep 17 00:00:00 2001 -From: Jiri Slaby <jslaby@suse.cz> -Date: Sun, 31 Oct 2010 23:17:51 +0100 -Subject: TTY: restore tty_ldisc_wait_idle - -It was removed in 65b770468e98 (tty-ldisc: turn ldisc user count into -a proper refcount), but we need to wait for last user to quit the -ldisc before we close it in tty_set_ldisc. - -Otherwise weird things start to happen. There might be processes -waiting in tty_read->n_tty_read on tty->read_wait for input to appear -and at that moment, a change of ldisc is fatal. n_tty_close is called, -it frees read_buf and the waiting process is still in the middle of -reading and goes nuts after it is woken. - -Previously we prevented close to happen when others are in ldisc ops -by tty_ldisc_wait_idle in tty_set_ldisc. But the commit above removed -that. So revoke the change and test whether there is 1 user (=we), and -allow the close then. - -We can do that without ldisc/tty locks, because nobody else can open -the device due to TTY_LDISC_CHANGING bit set, so we in fact wait for -everybody to leave. - -I don't understand why tty_ldisc_lock would be needed either when the -counter is an atomic variable, so this is a lockless -tty_ldisc_wait_idle. - -On the other hand, if we fail to wait (timeout or signal), we have to -reenable the halted ldiscs, so we take ldisc lock and reuse the setup -path at the end of tty_set_ldisc. - -Signed-off-by: Jiri Slaby <jslaby@suse.cz> -Acked-by: Linus Torvalds <torvalds@linux-foundation.org> -Tested-by: Sebastian Andrzej Siewior <bigeasy@breakpoint.cc> -LKML-Reference: <20101031104136.GA511@Chamillionaire.breakpoint.cc> -LKML-Reference: <1287669539-22644-1-git-send-email-jslaby@suse.cz> -Cc: Alan Cox <alan@linux.intel.com> -Cc: stable@kernel.org [32, 33, 36] -Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> ---- - drivers/char/tty_ldisc.c | 29 +++++++++++++++++++++++++++++ - 1 files changed, 29 insertions(+), 0 deletions(-) - -diff --git a/drivers/char/tty_ldisc.c b/drivers/char/tty_ldisc.c -index 412f977..5bbf33a 100644 ---- a/drivers/char/tty_ldisc.c -+++ b/drivers/char/tty_ldisc.c -@@ -47,6 +47,7 @@ - - static DEFINE_SPINLOCK(tty_ldisc_lock); - static DECLARE_WAIT_QUEUE_HEAD(tty_ldisc_wait); -+static DECLARE_WAIT_QUEUE_HEAD(tty_ldisc_idle); - /* Line disc dispatch table */ - static struct tty_ldisc_ops *tty_ldiscs[NR_LDISCS]; - -@@ -83,6 +84,7 @@ static void put_ldisc(struct tty_ldisc *ld) - return; - } - local_irq_restore(flags); -+ wake_up(&tty_ldisc_idle); - } - - /** -@@ -531,6 +533,23 @@ static int tty_ldisc_halt(struct tty_struct *tty) - } - - /** -+ * tty_ldisc_wait_idle - wait for the ldisc to become idle -+ * @tty: tty to wait for -+ * -+ * Wait for the line discipline to become idle. The discipline must -+ * have been halted for this to guarantee it remains idle. -+ */ -+static int tty_ldisc_wait_idle(struct tty_struct *tty) -+{ -+ int ret; -+ ret = wait_event_interruptible_timeout(tty_ldisc_idle, -+ atomic_read(&tty->ldisc->users) == 1, 5 * HZ); -+ if (ret < 0) -+ return ret; -+ return ret > 0 ? 0 : -EBUSY; -+} -+ -+/** - * tty_set_ldisc - set line discipline - * @tty: the terminal to set - * @ldisc: the line discipline -@@ -634,8 +653,17 @@ int tty_set_ldisc(struct tty_struct *tty, int ldisc) - - flush_scheduled_work(); - -+ retval = tty_ldisc_wait_idle(tty); -+ - tty_lock(); - mutex_lock(&tty->ldisc_mutex); -+ -+ /* handle wait idle failure locked */ -+ if (retval) { -+ tty_ldisc_put(new_ldisc); -+ goto enable; -+ } -+ - if (test_bit(TTY_HUPPED, &tty->flags)) { - /* We were raced by the hangup method. It will have stomped - the ldisc data and closed the ldisc down */ -@@ -669,6 +697,7 @@ int tty_set_ldisc(struct tty_struct *tty, int ldisc) - - tty_ldisc_put(o_ldisc); - -+enable: - /* - * Allow ldisc referencing to occur again - */ --- -1.7.3.2 - diff --git a/freed-ora/current/master/xhci_hcd-suspend-resume.patch b/freed-ora/current/master/xhci_hcd-suspend-resume.patch index ffbaeb421..2f8816973 100644 --- a/freed-ora/current/master/xhci_hcd-suspend-resume.patch +++ b/freed-ora/current/master/xhci_hcd-suspend-resume.patch @@ -1240,9 +1240,9 @@ index 34a60d9..b6d8033 100644 * * xHC interrupts have been disabled and a watchdog timer will (or has already) @@ -1199,6 +1228,10 @@ struct xhci_hcd { - #define XHCI_LINK_TRB_QUIRK (1 << 0) - #define XHCI_RESET_EP_QUIRK (1 << 1) - #define XHCI_NEC_HOST (1 << 2) + /* Array of pointers to USB 2.0 PORTSC registers */ + u32 __iomem **usb2_ports; + unsigned int num_usb2_ports; + u32 port_c_suspend[8]; /* port suspend change*/ + u32 suspended_ports[8]; /* which ports are + suspended */ |