rpms/kernel/FC-4 ide-floppy-eject.patch, NONE, 1.1 linux-2.6-agp-sworks-hang.patch, NONE, 1.1 linux-2.6-build-nonintconfig.patch, NONE, 1.1 linux-2.6-build-qconfig-qt-lib64.patch, NONE, 1.1 linux-2.6-build-reference-discarded-debug_loc.patch, NONE, 1.1 linux-2.6-build-reference-discarded-opd.patch, NONE, 1.1 linux-2.6-build-userspace-headers-warning.patch, NONE, 1.1 linux-2.6-bzimage.patch, NONE, 1.1 linux-2.6-debug-Wundef.patch, NONE, 1.1 linux-2.6-debug-detect-softlockups.patch, NONE, 1.1 linux-2.6-debug-disable-builtins.patch, NONE, 1.1 linux-2.6-debug-list_head.patch, NONE, 1.1 linux-2.6-debug-periodic-slab-check.patch, NONE, 1.1 linux-2.6-debug-reference-discarded-return-result.patch, NONE, 1.1 linux-2.6-debug-singlebiterror.patch, NONE, 1.1 linux-2.6-debug-slab-backtrace.patch, NONE, 1.1 linux-2.6-debug-sleep-in-irq-warning.patch, NONE, 1.1 linux-2.6-debug-spinlock-panic.patch, NONE, 1.1 linux-2.6-debug-spinlock-taint.patch, NONE, 1.1 linux-2.6-debug-taint-check.patch, NONE, 1.1 linux-2.6-debug-tain! t-vm.patch, NONE, 1.1 linux-2.6-futex-wake_op.patch, NONE, 1.1 linux-2.6-ide-netcell.patch, NONE, 1.1 linux-2.6-input-usblegacy.patch, NONE, 1.1 linux-2.6-max-symlinks.patch, NONE, 1.1 linux-2.6-modules-ignore-whitespace.patch, NONE, 1.1 linux-2.6-net-acenic-use-after-free.patch, NONE, 1.1 linux-2.6-net-sk98lin-vpd.patch, NONE, 1.1 linux-2.6-obsolete-idescsi-warning.patch, NONE, 1.1 linux-2.6-obsolete-oss-warning.patch, NONE, 1.1 linux-2.6-optimise-for-size.patch, NONE, 1.1 linux-2.6-pcmcia-single-port-off-by-one.patch, NONE, 1.1 linux-2.6-pwc-powerup-by-default.patch, NONE, 1.1 linux-2.6-radeon-backlight.patch, NONE, 1.1 linux-2.6-sound-emu10k1-ac97.patch, NONE, 1.1 linux-2.6-tux.patch, NONE, 1.1 linux-2.6-unexport-symbols.patch, NONE, 1.1 linux-2.6-usb-ehci-intsoff-on-reset.patch, NONE, 1.1 linux-2.6-vm-silence-atomic-alloc-failures.patch, NONE, 1.1 linux-2.6-w1-hush-debug.patch, NONE, 1.1 linux-2.6.12-ext3-always-nobh.patch, 1.2, 1.3 linux-2.6.12-pmac-sound-oops.patch, NONE, 1.1 linux-2.6.12-scsi-advansys-pcitable! .patch,NONE,1.1 linux-2.6.13-audit-git.patch,NONE,1.1 linux-2.! 6.13.tar
fedora-cvs-commits at redhat.com
fedora-cvs-commits at redhat.com
Thu Sep 29 23:05:07 UTC 2005
- Previous message (by thread): rpms/gdb/devel gdb-6.3-attach-dso-20050929.patch, NONE, 1.1 gdb.spec, 1.159, 1.160
- Next message (by thread): rpms/kernel/FC-4/configs config-generic, 1.33, 1.34 config-ia64-generic, 1.3, 1.4 config-ppc-generic, 1.21, 1.22 config-ppc64, 1.4, 1.5 config-ppc64-generic, 1.10, 1.11 config-rhel-generic, 1.1, 1.2 config-s390-generic, 1.2, 1.3 config-x86-generic, 1.10, 1.11 config-x86_64-generic, 1.10, 1.11 config-xen-generic, 1.9, 1.10 config-xen-x86_64, 1.2, 1.3 config-xen-xen0, 1.4, 1.5
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
Author: davej
Update of /cvs/dist/rpms/kernel/FC-4
In directory cvs.devel.redhat.com:/tmp/cvs-serv20432
Modified Files:
.cvsignore Makefile Makefile.config kernel-2.6.spec
linux-2.6-compile-fixes.patch linux-2.6-crashdump-common.patch
linux-2.6-crashdump-reboot-exports.patch
linux-2.6-diskdump.patch
linux-2.6-dump_smp_call_function.patch linux-2.6-netdump.patch
linux-2.6-usb-transcend-nosense.patch
linux-2.6-usbhid-wireless-security-lock.patch
linux-2.6-usbmon-deficiency-workaround.patch
linux-2.6.0-sleepon.patch
linux-2.6.11-acpi-thinkpad-c2c3.patch
linux-2.6.11-devmem.patch linux-2.6.11-execshield-vdso.patch
linux-2.6.11-execshield.patch linux-2.6.12-serial-of.patch
linux-2.6.12-xen-additional.patch linux-2.6.12-xen.patch
linux-2.6.12rc3-xen-vdso-note.patch
linux-2.6.7-modsign-crypto.patch
linux-2.6.8-execshield-xen.patch linux-2.6.9-ieee80211.patch
linux-2.6.9-module_version.patch
linux-2.6.9-scsi-megaraid-legacy.patch
linux-2.6.9-vm-oomkiller-debugging.patch
linux-2.6.9-xen-compile.patch sources upstream
Added Files:
ide-floppy-eject.patch linux-2.6-agp-sworks-hang.patch
linux-2.6-build-nonintconfig.patch
linux-2.6-build-qconfig-qt-lib64.patch
linux-2.6-build-reference-discarded-debug_loc.patch
linux-2.6-build-reference-discarded-opd.patch
linux-2.6-build-userspace-headers-warning.patch
linux-2.6-bzimage.patch linux-2.6-debug-Wundef.patch
linux-2.6-debug-detect-softlockups.patch
linux-2.6-debug-disable-builtins.patch
linux-2.6-debug-list_head.patch
linux-2.6-debug-periodic-slab-check.patch
linux-2.6-debug-reference-discarded-return-result.patch
linux-2.6-debug-singlebiterror.patch
linux-2.6-debug-slab-backtrace.patch
linux-2.6-debug-sleep-in-irq-warning.patch
linux-2.6-debug-spinlock-panic.patch
linux-2.6-debug-spinlock-taint.patch
linux-2.6-debug-taint-check.patch
linux-2.6-debug-taint-vm.patch linux-2.6-futex-wake_op.patch
linux-2.6-ide-netcell.patch linux-2.6-input-usblegacy.patch
linux-2.6-max-symlinks.patch
linux-2.6-modules-ignore-whitespace.patch
linux-2.6-net-acenic-use-after-free.patch
linux-2.6-net-sk98lin-vpd.patch
linux-2.6-obsolete-idescsi-warning.patch
linux-2.6-obsolete-oss-warning.patch
linux-2.6-optimise-for-size.patch
linux-2.6-pcmcia-single-port-off-by-one.patch
linux-2.6-pwc-powerup-by-default.patch
linux-2.6-radeon-backlight.patch
linux-2.6-sound-emu10k1-ac97.patch linux-2.6-tux.patch
linux-2.6-unexport-symbols.patch
linux-2.6-usb-ehci-intsoff-on-reset.patch
linux-2.6-vm-silence-atomic-alloc-failures.patch
linux-2.6-w1-hush-debug.patch
linux-2.6.12-ext3-always-nobh.patch
linux-2.6.12-pmac-sound-oops.patch
linux-2.6.12-scsi-advansys-pcitable.patch
linux-2.6.13-audit-git.patch linux-2.6.13.tar.bz2.sign
patch-2.6.13.2.bz2.sign
Removed Files:
linux-2.4.0-nonintconfig.patch linux-2.6-CAN-2005-2490.patch
linux-2.6-CAN-2005-2492.patch
linux-2.6-acpi-rollup-20050902.patch
linux-2.6-alsa-snd-intel8x0m-semaphore.patch
linux-2.6-appletouch-update.patch
linux-2.6-input-alps-typo.patch linux-2.6-nfs-enoent.patch
linux-2.6-powernow-k8-update.patch
linux-2.6-scsi-sym2-alloc_lcb_tags-atomic.patch
linux-2.6-selinux-addrlen-checks.patch
linux-2.6-windtunnel-printk.patch linux-2.6.0-compile.patch
linux-2.6.0-must_check.patch linux-2.6.1-s390-compile.patch
linux-2.6.10-periodic-slab-debug.patch
linux-2.6.11-cpufreq-add-suspend.patch
linux-2.6.11-i2c-config.patch
linux-2.6.11-isdn-icn-nodev.patch
linux-2.6.11-kallsyms-extra-text.patch
linux-2.6.11-mac-mini-sound.patch
linux-2.6.11-pmac-ide-sleep.patch
linux-2.6.11-pmac-volume-save.patch
linux-2.6.11-ppc32-750-erratum-fix.patch
linux-2.6.11-ppc32-pbook-clock-spreading.patch
linux-2.6.11-ppc32-pmac-sleep-fix.patch
linux-2.6.11-radeon-backlight.patch
linux-2.6.11-random-ehci-patch.patch
linux-2.6.11-slab-backtrace.patch linux-2.6.11-tux.patch
linux-2.6.11-vm-taint.patch linux-2.6.11.tar.bz2.sign
linux-2.6.12-audit-merge.patch
linux-2.6.12-detect-softlockups.patch
linux-2.6.12-net-conntrack-bridge-fix.patch
linux-2.6.12-net-make-orinoco-suck-less.patch
linux-2.6.12-nfsd-ctlbits.patch
linux-2.6.12-ns558-nodev-rmmod.patch
linux-2.6.12-pwc-warning.patch
linux-2.6.12-rc3-ehci-misc-updates.patch
linux-2.6.12-scsicam-geom-fix.patch
linux-2.6.12-usb-old_scheme_first.patch
linux-2.6.12-vm-singlebiterror.patch linux-2.6.12.tar.bz2.sign
linux-2.6.12rc-ac-ide-fixes.patch
linux-2.6.12rc-ppc32-clockspreading-fix.patch
linux-2.6.13-rc3-audit-git.patch linux-2.6.3-ia64-build.patch
linux-2.6.3-printopen.patch linux-2.6.3-sparc-addbzimage.patch
linux-2.6.4-stackusage.patch linux-2.6.8-lockd-racewarn2.patch
linux-2.6.8-ppc64-netboot.patch
linux-2.6.9-lockd-block-nosleep.patch
linux-2.6.9-lockd-reclaims.patch
linux-2.6.9-s390-autoraid.patch
linux-2.6.9-s390-zfcp_port-fix.patch
linux-2.6.9-spinlock-debug-panic.patch patch-2.6.12.5.bz2.sign
patch-2.6.12.6pre.patch
Log Message:
2.6.13
ide-floppy-eject.patch:
ide-floppy.c | 6 ++----
1 files changed, 2 insertions(+), 4 deletions(-)
--- NEW FILE ide-floppy-eject.patch ---
https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=158548
http://www.gossamer-threads.com/lists/linux/kernel/568526
--- linux-2.6.13-orig/drivers/ide/ide-floppy.c 2005-08-29 01:41:01.000000000 +0200
+++ linux-2.6.13-pentium/drivers/ide/ide-floppy.c 2005-09-04 14:07:53.000000000 +0200
@@ -2038,11 +2038,9 @@
struct ide_floppy_obj *floppy = ide_floppy_g(bdev->bd_disk);
ide_drive_t *drive = floppy->drive;
void __user *argp = (void __user *)arg;
- int err = generic_ide_ioctl(drive, file, bdev, cmd, arg);
+ int err;
int prevent = (arg) ? 1 : 0;
idefloppy_pc_t pc;
- if (err != -EINVAL)
- return err;
switch (cmd) {
case CDROMEJECT:
@@ -2094,7 +2092,7 @@
case IDEFLOPPY_IOCTL_FORMAT_GET_PROGRESS:
return idefloppy_get_format_progress(drive, argp);
}
- return -EINVAL;
+ return generic_ide_ioctl(drive, file, bdev, cmd, arg);
}
static int idefloppy_media_changed(struct gendisk *disk)
linux-2.6-agp-sworks-hang.patch:
sworks-agp.c | 18 ++++++++++++++++--
1 files changed, 16 insertions(+), 2 deletions(-)
--- NEW FILE linux-2.6-agp-sworks-hang.patch ---
https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=154673
--- linux-2.6.13/drivers/char/agp/sworks-agp.c~ 2005-09-28 06:03:32.000000000 -0400
+++ linux-2.6.13/drivers/char/agp/sworks-agp.c 2005-09-28 06:04:53.000000000 -0400
@@ -242,13 +242,27 @@ static int serverworks_fetch_size(void)
*/
static void serverworks_tlbflush(struct agp_memory *temp)
{
+ unsigned long timeout;
+
writeb(1, serverworks_private.registers+SVWRKS_POSTFLUSH);
- while (readb(serverworks_private.registers+SVWRKS_POSTFLUSH) == 1)
+ timeout = jiffies + 3*HZ;
+ while (readb(serverworks_private.registers+SVWRKS_POSTFLUSH) == 1) {
cpu_relax();
+ if (time_after(jiffies, timeout)) {
+ printk(KERN_ERR PFX "TLB post flush took more than 3 seconds\n");
+ break;
+ }
+ }
writel(1, serverworks_private.registers+SVWRKS_DIRFLUSH);
- while(readl(serverworks_private.registers+SVWRKS_DIRFLUSH) == 1)
+ timeout = jiffies + 3*HZ;
+ while (readl(serverworks_private.registers+SVWRKS_DIRFLUSH) == 1) {
cpu_relax();
+ if (time_after(jiffies, timeout)) {
+ printk(KERN_ERR PFX "TLB Dir flush took more than 3 seconds\n");
+ break;
+ }
+ }
}
static int serverworks_configure(void)
linux-2.6-build-nonintconfig.patch:
linux-2.6.12/scripts/kconfig/confdata.c | 4 ++--
linux-800/scripts/kconfig/Makefile | 4 ++++
linux-800/scripts/kconfig/conf.c | 26 +++++++++++++++++++++++---
3 files changed, 29 insertions(+), 5 deletions(-)
--- NEW FILE linux-2.6-build-nonintconfig.patch ---
diff -urNp --exclude-from=/home/davej/.exclude linux-600/scripts/kconfig/conf.c linux-800/scripts/kconfig/conf.c
--- linux-600/scripts/kconfig/conf.c
+++ linux-800/scripts/kconfig/conf.c
@@ -20,6 +20,7 @@ enum {
ask_all,
ask_new,
ask_silent,
+ dont_ask,
set_default,
set_yes,
set_mod,
@@ -37,6 +37,8 @@ static struct menu *rootEntry;
static char nohelp_text[] = N_("Sorry, no help available for this option yet.\n");
+static int return_value = 0;
+
static void strip(char *str)
{
char *p = str;
@@ -93,6 +96,12 @@ static void conf_askvalue(struct symbol
fflush(stdout);
fgets(line, 128, stdin);
return;
+ case dont_ask:
+ if (!sym_has_value(sym)) {
+ fprintf(stderr,"CONFIG_%s\n",sym->name);
+ return_value++;
+ }
+ return;
case set_default:
printf("%s\n", def);
return;
@@ -337,6 +346,10 @@ static int conf_choice(struct menu *menu
printf("?");
printf("]: ");
switch (input_mode) {
+ case dont_ask:
+ cnt = def;
+ printf("%d\n", cnt);
+ break;
case ask_new:
case ask_silent:
if (!is_new) {
@@ -472,7 +485,10 @@ static void check_conf(struct menu *menu
if (!conf_cnt++)
printf("*\n* Restart config...\n*\n");
rootEntry = menu_get_parent_menu(menu);
- conf(rootEntry);
+ if (input_mode == dont_ask)
+ fprintf(stderr,"CONFIG_%s\n",sym->name);
+ else
+ conf(rootEntry);
}
if (sym_is_choice(sym) && sym_get_tristate_value(sym) != mod)
return;
@@ -493,6 +509,9 @@ int main(int ac, char **av)
case 'o':
input_mode = ask_new;
break;
+ case 'b':
+ input_mode = dont_ask;
+ break;
case 's':
input_mode = ask_silent;
valid_stdin = isatty(0) && isatty(1) && isatty(2);
@@ -557,6 +576,7 @@ int main(int ac, char **av)
}
case ask_all:
case ask_new:
+ case dont_ask:
conf_read(NULL);
break;
default:
@@ -594,10 +594,10 @@ int main(int ac, char **av)
do {
conf_cnt = 0;
check_conf(&rootmenu);
- } while (conf_cnt);
+ } while ((conf_cnt) && (input_mode != dont_ask));
if (conf_write(NULL)) {
fprintf(stderr, _("\n*** Error during writing of the kernel configuration.\n\n"));
return 1;
}
- return 0;
+ return return_value;
}
diff -urNp --exclude-from=/home/davej/.exclude linux-600/scripts/kconfig/Makefile linux-800/scripts/kconfig/Makefile
--- linux-600/scripts/kconfig/Makefile
+++ linux-800/scripts/kconfig/Makefile
@@ -23,6 +23,10 @@ oldconfig: $(obj)/conf
silentoldconfig: $(obj)/conf
$< -s arch/$(ARCH)/Kconfig
+nonint_oldconfig: scripts/kconfig/conf
+ ./scripts/kconfig/conf -b arch/$(ARCH)/Kconfig
+
+
.PHONY: randconfig allyesconfig allnoconfig allmodconfig defconfig
randconfig: $(obj)/conf
--- linux-2.6.12/scripts/kconfig/confdata.c~ 2005-06-22 13:17:13.000000000 -0400
+++ linux-2.6.12/scripts/kconfig/confdata.c 2005-06-22 13:17:23.000000000 -0400
@@ -129,7 +129,7 @@ int conf_read(const char *name)
continue;
sym = sym_find(line + 9);
if (!sym) {
- fprintf(stderr, "%s:%d: trying to assign nonexistent symbol %s\n", name, lineno, line + 9);
+ //fprintf(stderr, "%s:%d: trying to assign nonexistent symbol %s\n", name, lineno, line + 9);
break;
}
switch (sym->type) {
@@ -154,7 +154,7 @@ int conf_read(const char *name)
*p2 = 0;
sym = sym_find(line + 7);
if (!sym) {
- fprintf(stderr, "%s:%d: trying to assign nonexistent symbol %s\n", name, lineno, line + 7);
+ //fprintf(stderr, "%s:%d: trying to assign nonexistent symbol %s\n", name, lineno, line + 7);
break;
}
switch (sym->type) {
linux-2.6-build-qconfig-qt-lib64.patch:
Makefile | 2 +-
1 files changed, 1 insertion(+), 1 deletion(-)
--- NEW FILE linux-2.6-build-qconfig-qt-lib64.patch ---
diff -urNp --exclude-from=/home/davej/.exclude linux-10000/scripts/kconfig/Makefile linux-10001/scripts/kconfig/Makefile
--- linux-10000/scripts/kconfig/Makefile
+++ linux-10001/scripts/kconfig/Makefile
@@ -126,7 +126,7 @@ QTLIBPATH = $(QTDIR)/lib
# QT needs some extra effort...
$(obj)/.tmp_qtcheck:
- @set -e; for d in $$QTDIR /usr/share/qt* /usr/lib/qt*; do \
+ @set -e; for d in $$QTDIR /usr/share/qt* /usr/lib/qt* /usr/lib64/qt* ; do \
if [ -f $$d/include/qconfig.h ]; then DIR=$$d; break; fi; \
done; \
if [ -z "$$DIR" ]; then \
linux-2.6-build-reference-discarded-debug_loc.patch:
reference_discarded.pl | 1 +
1 files changed, 1 insertion(+)
--- NEW FILE linux-2.6-build-reference-discarded-debug_loc.patch ---
Error: ./drivers/md/md.o .debug_loc refers to 0000000000007ca7 R_390_64 .exit.text
--- linux-2.6.12/scripts/reference_discarded.pl~ 2005-08-18 15:42:06.000000000 -0400
+++ linux-2.6.12/scripts/reference_discarded.pl 2005-08-18 15:42:14.000000000 -0400
@@ -95,6 +95,7 @@ foreach $object (keys(%object)) {
$from !~ /\.debug_aranges$/ &&
$from !~ /\.debug_ranges$/ &&
$from !~ /\.debug_line$/ &&
+ $from !~ /\.debug_loc$/ &&
$from !~ /\.debug_frame$/ &&
$from !~ /\.exitcall\.exit$/ &&
$from !~ /\.eh_frame$/ &&
linux-2.6-build-reference-discarded-opd.patch:
reference_discarded.pl | 1 +
1 files changed, 1 insertion(+)
--- NEW FILE linux-2.6-build-reference-discarded-opd.patch ---
Error: ./fs/quota_v2.o .opd refers to 0000000000000020 R_PPC64_ADDR64 .exit.text
diff -urNp --exclude-from=/home/davej/.exclude linux-3022/scripts/reference_discarded.pl linux-10000/scripts/reference_discarded.pl
--- linux-3022/scripts/reference_discarded.pl
+++ linux-10000/scripts/reference_discarded.pl
@@ -88,6 +88,7 @@ foreach $object (keys(%object)) {
($from !~ /\.text\.exit$/ &&
$from !~ /\.exit\.text$/ &&
$from !~ /\.data\.exit$/ &&
+ $from !~ /\.opd$/ &&
$from !~ /\.exit\.data$/ &&
$from !~ /\.altinstructions$/ &&
$from !~ /\.pdr$/ &&
linux-2.6-build-userspace-headers-warning.patch:
linux-10000/include/linux/config.h | 4 +++-
linux-10001/arch/ppc64/boot/main.c | 1 +
linux-10001/include/linux/config.h | 2 +-
3 files changed, 5 insertions(+), 2 deletions(-)
--- NEW FILE linux-2.6-build-userspace-headers-warning.patch ---
It's a bad idea to use kernel headers directly.
We have glibc-kernheaders for this purpose.
diff -urNp --exclude-from=/home/davej/.exclude linux-3022/include/linux/config.h linux-10000/include/linux/config.h
--- linux-3022/include/linux/config.h
+++ linux-10000/include/linux/config.h
@@ -2,5 +2,7 @@
#define _LINUX_CONFIG_H
#include <linux/autoconf.h>
-
+#ifndef __KERNEL__
+#error including kernel header in userspace; use the glibc headers instead!
+#endif
#endif
In file included from include/asm/cputable.h:18,
from include/asm/elf.h:6,
from include/linux/elf.h:5,
from arch/ppc64/boot/main.c:13:
include/linux/config.h:6:2: error: #error including kernel header in userspace; use the glibc headers instead!
make[1]: *** [arch/ppc64/boot/main.o] Error 1
make[1]: *** Waiting for unfinished jobs....
diff -urNp --exclude-from=/home/davej/.exclude linux-10000/arch/ppc64/boot/main.c linux-10001/arch/ppc64/boot/main.c
--- linux-10000/arch/ppc64/boot/main.c
+++ linux-10001/arch/ppc64/boot/main.c
@@ -8,6 +8,7 @@
* as published by the Free Software Foundation; either version
* 2 of the License, or (at your option) any later version.
*/
+#define __KERNGLUE__
#include "ppc32-types.h"
#include "zlib.h"
#include <linux/elf.h>
diff -urNp --exclude-from=/home/davej/.exclude linux-10000/include/linux/config.h linux-10001/include/linux/config.h
--- linux-10000/include/linux/config.h
+++ linux-10001/include/linux/config.h
@@ -2,7 +2,7 @@
#define _LINUX_CONFIG_H
#include <linux/autoconf.h>
-#ifndef __KERNEL__
+#if !defined (__KERNEL__) && !defined(__KERNGLUE__)
#error including kernel header in userspace; use the glibc headers instead!
#endif
#endif
linux-2.6-bzimage.patch:
linux-10000/arch/ppc64/Makefile | 2 +-
linux-10000/arch/ppc64/boot/Makefile | 3 +++
linux-10001/arch/ppc/Makefile | 1 +
linux-400/arch/ia64/Makefile | 4 ++++
linux-500/arch/s390/Makefile | 5 +++++
linux-600/arch/sparc/Makefile | 3 +++
linux-600/arch/sparc64/Makefile | 3 +++
7 files changed, 20 insertions(+), 1 deletion(-)
--- NEW FILE linux-2.6-bzimage.patch ---
In order to make the specfile simpler, we adjust some build targets
so that every arch understands bzImage
diff -urNp --exclude-from=/home/davej/.exclude linux-3022/arch/ppc64/boot/Makefile linux-10000/arch/ppc64/boot/Makefile
--- linux-3022/arch/ppc64/boot/Makefile
+++ linux-10000/arch/ppc64/boot/Makefile
@@ -98,6 +98,9 @@ $(obj)/zImage: obj-boot += $(call obj-se
$(obj)/zImage: $(call obj-sec, $(required)) $(obj-boot) $(obj)/addnote FORCE
$(call if_changed,addnote)
+$(obj)/zImage.stub: $(obj-boot) FORCE
+ $(BOOTLD) -r $(BOOTLFLAGS) -o $@ $(obj-boot)
+
$(obj)/zImage.initrd: obj-boot += $(call obj-sec, $(required) $(initrd))
$(obj)/zImage.initrd: $(call obj-sec, $(required) $(initrd)) $(obj-boot) $(obj)/addnote FORCE
$(call if_changed,addnote)
diff -urNp --exclude-from=/home/davej/.exclude linux-3022/arch/ppc64/Makefile linux-10000/arch/ppc64/Makefile
--- linux-3022/arch/ppc64/Makefile
+++ linux-10000/arch/ppc64/Makefile
@@ -82,7 +82,7 @@ boot := arch/ppc64/boot
bzImage: vmlinux
cp vmlinux arch/ppc64/boot/bzImage
-boottarget-$(CONFIG_PPC_PSERIES) := zImage zImage.initrd
+boottarget-$(CONFIG_PPC_PSERIES) := zImage zImage.initrd zImage.stub
boottarget-$(CONFIG_PPC_MAPLE) := zImage zImage.initrd
boottarget-$(CONFIG_PPC_ISERIES) := vmlinux.sminitrd vmlinux.initrd vmlinux.sm
$(boottarget-y): vmlinux
diff -urNp --exclude-from=/home/davej/.exclude linux-10000/arch/ppc/Makefile linux-10001/arch/ppc/Makefile
--- linux-10000/arch/ppc/Makefile
+++ linux-10001/arch/ppc/Makefile
@@ -78,6 +78,7 @@ CPPFLAGS_vmlinux.lds := -Upowerpc
# All the instructions talk about "make bzImage".
bzImage: zImage
+ cp vmlinux arch/ppc/boot/bzImage
boot := arch/$(ARCH)/boot
diff -urNp --exclude-from=/home/davej/.exclude linux-400/arch/s390/Makefile linux-500/arch/s390/Makefile
--- linux-400/arch/s390/Makefile
+++ linux-500/arch/s390/Makefile
@@ -91,6 +91,11 @@ boot := arch/$(ARCH)/boot
all: image
+# This is a white lie which helps to keep our spec simpler.
+# No $(Q) or other trickery because nobody should use it outside of RPM builds.
+bzImage: image
+ ln -s image arch/$(ARCH)/boot/bzImage
+
install: vmlinux
$(Q)$(MAKE) $(build)=$(boot) $@
diff -urNp --exclude-from=/home/davej/.exclude linux-503/arch/sparc/Makefile linux-600/arch/sparc/Makefile
--- linux-503/arch/sparc/Makefile
+++ linux-600/arch/sparc/Makefile
@@ -53,6 +53,9 @@ all: image
boot := arch/sparc/boot
+bzImage: image
+ cp $(boot)/image $(boot)/bzImage
+
image tftpboot.img: vmlinux
$(Q)$(MAKE) $(build)=$(boot) $(boot)/$@
diff -urNp --exclude-from=/home/davej/.exclude linux-503/arch/sparc64/Makefile linux-600/arch/sparc64/Makefile
--- linux-503/arch/sparc64/Makefile
+++ linux-600/arch/sparc64/Makefile
@@ -69,6 +69,9 @@ drivers-$(CONFIG_OPROFILE) += arch/sparc
boot := arch/sparc64/boot
+bzImage: image
+ cp $(boot)/image $(boot)/bzImage
+
image tftpboot.img vmlinux.aout: vmlinux
$(Q)$(MAKE) $(build)=$(boot) $(boot)/$@
diff -urNp --exclude-from=/home/davej/.exclude linux-302/arch/ia64/Makefile linux-400/arch/ia64/Makefile
--- linux-302/arch/ia64/Makefile
+++ linux-400/arch/ia64/Makefile
@@ -71,6 +71,10 @@ boot := arch/ia64/hp/sim/boot
all: compressed unwcheck
+bzImage: compressed
+ mkdir -p arch/ia64/boot
+ cp vmlinux.gz arch/ia64/boot/bzImage
+
compressed: vmlinux.gz
vmlinux.gz: vmlinux
linux-2.6-debug-Wundef.patch:
Makefile | 2 +-
1 files changed, 1 insertion(+), 1 deletion(-)
--- NEW FILE linux-2.6-debug-Wundef.patch ---
-Wundef
--- linux-2.6.11/Makefile~ 2005-05-28 18:48:02.000000000 -0400
+++ linux-2.6.11/Makefile 2005-05-28 18:48:27.000000000 -0400
@@ -203,7 +203,7 @@ CONFIG_SHELL := $(shell if [ -x "$$BASH"
HOSTCC = gcc
HOSTCXX = g++
-HOSTCFLAGS = -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer
+HOSTCFLAGS = -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer -Wundef
HOSTCXXFLAGS = -O2
# Decide whether to build built-in, modular, or both.
linux-2.6-debug-detect-softlockups.patch:
linux-2.6.11/kernel/softirq.c | 2
linux/include/linux/sched.h | 13 ++++
linux/init/main.c | 1
linux/kernel/Makefile | 1
linux/kernel/softlockup.c | 130 ++++++++++++++++++++++++++++++++++++++++++
linux/kernel/timer.c | 1
linux/lib/Kconfig.debug | 19 ++++++
7 files changed, 166 insertions(+), 1 deletion(-)
--- NEW FILE linux-2.6-debug-detect-softlockups.patch ---
--- linux/kernel/softlockup.c.orig
+++ linux/kernel/softlockup.c
@@ -0,0 +1,130 @@
+/*
+ * Detect Soft Lockups
+ *
+ * started by Ingo Molnar, (C) 2005, Red Hat
+ *
+ * this code detects soft lockups: incidents in where on a CPU
+ * the kernel does not reschedule for 10 seconds or more.
+ */
+
+#include <linux/mm.h>
+#include <linux/cpu.h>
+#include <linux/init.h>
+#include <linux/delay.h>
+#include <linux/kthread.h>
+#include <linux/notifier.h>
+
+static DEFINE_SPINLOCK(print_lock);
+
+static DEFINE_PER_CPU(unsigned long, timestamp) = 0;
+static DEFINE_PER_CPU(unsigned long, print_timestamp) = 0;
+static DEFINE_PER_CPU(struct task_struct *, watchdog_task);
+
+extern void takeover_tasklets(unsigned int cpu);
+
+/*
+ * This callback runs from the timer interrupt, and checks
+ * whether the watchdog thread has hung or not:
+ */
+void softlockup_tick(struct pt_regs *regs)
+{
+ int this_cpu = smp_processor_id();
+ unsigned long timestamp = per_cpu(timestamp, this_cpu);
+
+ if (per_cpu(print_timestamp, this_cpu) == timestamp)
+ return;
+
+ if (time_after(jiffies, timestamp + 10*HZ)) {
+ per_cpu(print_timestamp, this_cpu) = timestamp;
+
+ spin_lock(&print_lock);
+ printk(KERN_ERR "BUG: soft lockup detected on CPU#%d!\n",
+ this_cpu);
+ show_regs(regs);
+ dump_stack();
+ spin_unlock(&print_lock);
+ }
+}
+
+/*
+ * The watchdog thread - runs every second and touches the timestamp.
+ */
+static int watchdog(void * __bind_cpu)
+{
+ struct sched_param param = { .sched_priority = 99 };
+ int this_cpu = (long) __bind_cpu;
+
+ printk("softlockup thread %d started up.\n", this_cpu);
+
+ sched_setscheduler(current, SCHED_FIFO, ¶m);
+ current->flags |= PF_NOFREEZE;
+
+ set_current_state(TASK_INTERRUPTIBLE);
+
+ /*
+ * Run briefly once per second - if this gets delayed for
+ * more than 10 seconds then the debug-printout triggers
+ * in softlockup_tick():
+ */
+ while (!kthread_should_stop()) {
+ set_current_state(TASK_INTERRUPTIBLE);
+ msleep_interruptible(HZ);
+ per_cpu(timestamp, this_cpu) = jiffies;
+ }
+ __set_current_state(TASK_RUNNING);
+
+ return 0;
+}
+
+/*
+ * Create/destroy watchdog threads as CPUs come and go:
+ */
+static int __devinit
+cpu_callback(struct notifier_block *nfb, unsigned long action, void *hcpu)
+{
+ int hotcpu = (unsigned long)hcpu;
+ struct task_struct *p;
+
+ switch (action) {
+ case CPU_UP_PREPARE:
+ BUG_ON(per_cpu(watchdog_task, hotcpu));
+ p = kthread_create(watchdog, hcpu, "watchdog/%d", hotcpu);
+ if (IS_ERR(p)) {
+ printk("watchdog for %i failed\n", hotcpu);
+ return NOTIFY_BAD;
+ }
+ per_cpu(watchdog_task, hotcpu) = p;
+ kthread_bind(p, hotcpu);
+ break;
+ case CPU_ONLINE:
+
+ wake_up_process(per_cpu(watchdog_task, hotcpu));
+ break;
+#ifdef CONFIG_HOTPLUG_CPU
+ case CPU_UP_CANCELED:
+ /* Unbind so it can run. Fall thru. */
+ kthread_bind(per_cpu(watchdog_task, hotcpu), smp_processor_id());
+ case CPU_DEAD:
+ p = per_cpu(watchdog_task, hotcpu);
+ per_cpu(watchdog_task, hotcpu) = NULL;
+ kthread_stop(p);
+ takeover_tasklets(hotcpu);
+ break;
+#endif /* CONFIG_HOTPLUG_CPU */
+ }
+ return NOTIFY_OK;
+}
+
+static struct notifier_block __devinitdata cpu_nfb = {
+ .notifier_call = cpu_callback
+};
+
+__init void spawn_softlockup_task(void)
+{
+ void *cpu = (void *)(long)smp_processor_id();
+
+ cpu_callback(&cpu_nfb, CPU_UP_PREPARE, cpu);
+ cpu_callback(&cpu_nfb, CPU_ONLINE, cpu);
+ register_cpu_notifier(&cpu_nfb);
+}
+
--- linux/kernel/Makefile.orig
+++ linux/kernel/Makefile
@@ -25,6 +25,7 @@ obj-$(CONFIG_AUDIT) += audit.o
obj-$(CONFIG_AUDITSYSCALL) += auditsc.o
obj-$(CONFIG_KPROBES) += kprobes.o
obj-$(CONFIG_SYSFS) += ksysfs.o
+obj-$(CONFIG_DETECT_SOFTLOCKUP) += softlockup.o
obj-$(CONFIG_GENERIC_HARDIRQS) += irq/
ifneq ($(CONFIG_IA64),y)
--- linux/kernel/timer.c.orig
+++ linux/kernel/timer.c
@@ -921,6 +921,7 @@ void do_timer(struct pt_regs *regs)
{
jiffies_64++;
update_times();
+ softlockup_tick(regs);
}
#ifdef __ARCH_WANT_SYS_ALARM
--- linux/init/main.c.orig
+++ linux/init/main.c
@@ -596,6 +596,7 @@ static void do_pre_smp_initcalls(void)
migration_init();
#endif
spawn_ksoftirqd();
+ spawn_softlockup_task();
}
static void run_init_process(char *init_filename)
--- linux/include/linux/sched.h.orig
+++ linux/include/linux/sched.h
@@ -176,6 +176,19 @@ extern void update_process_times(int use
extern void scheduler_tick(void);
extern unsigned long cache_decay_ticks;
+#ifdef CONFIG_DETECT_SOFTLOCKUP
+extern void softlockup_tick(struct pt_regs *regs);
+extern void spawn_softlockup_task(void);
+#else
+static inline void softlockup_tick(struct pt_regs *regs)
+{
+}
+static inline void spawn_softlockup_task(void)
+{
+}
+#endif
+
+
/* Attach to any functions which should be ignored in wchan output. */
#define __sched __attribute__((__section__(".sched.text")))
/* Is this address in the __sched functions? */
--- linux/lib/Kconfig.debug.orig
+++ linux/lib/Kconfig.debug
@@ -27,6 +27,25 @@ config MAGIC_SYSRQ
Enables console device to interpret special characters as
commands to dump state information.
+config DETECT_SOFTLOCKUP
+ bool "Detect Soft Lockups"
+ depends on DEBUG_KERNEL
+ default y
+ help
+ Say Y here to enable the kernel to detect "soft lockups",
+ which are bugs that cause the kernel to loop in kernel
+ mode for more than 10 seconds, without giving other tasks a
+ chance to run.
+
+ When a soft-lockup is detected, the kernel will print the
+ current stack trace (which you should report), but the
+ system will stay locked up. This feature has negligible
+ overhead.
+
+ (Note that "hard lockups" are separate type of bugs that
+ can be detected via the NMI-watchdog, on platforms that
+ support it.)
+
config SCHEDSTATS
bool "Collect scheduler statistics"
depends on DEBUG_KERNEL && PROC_FS
--- linux-2.6.11/kernel/softirq.c~ 2005-05-11 21:47:38.000000000 -0400
+++ linux-2.6.11/kernel/softirq.c 2005-05-11 21:47:53.000000000 -0400
@@ -455,7 +455,7 @@ void tasklet_kill_immediate(struct taskl
BUG();
}
-static void takeover_tasklets(unsigned int cpu)
+void takeover_tasklets(unsigned int cpu)
{
struct tasklet_struct **i;
linux-2.6-debug-disable-builtins.patch:
Makefile | 2 +-
1 files changed, 1 insertion(+), 1 deletion(-)
--- NEW FILE linux-2.6-debug-disable-builtins.patch ---
Disable built-ins and also more m32 work
diff -urNp --exclude-from=/home/davej/.exclude linux-3022/arch/i386/Makefile linux-10000/arch/i386/Makefile
--- linux-3022/arch/i386/Makefile
+++ linux-10000/arch/i386/Makefile
@@ -22,7 +22,7 @@ OBJCOPYFLAGS := -O binary -R .note -R .c
LDFLAGS_vmlinux :=
CHECKFLAGS += -D__i386__
-CFLAGS += -pipe -msoft-float
+CFLAGS += -pipe -msoft-float -fno-builtin-sprintf -fno-builtin-log2 -fno-builtin-puts
# prevent gcc from keeping the stack 16 byte aligned
CFLAGS += $(call cc-option,-mpreferred-stack-boundary=2)
linux-2.6-debug-list_head.patch:
list.h | 4 ++++
1 files changed, 4 insertions(+)
--- NEW FILE linux-2.6-debug-list_head.patch ---
list_head debugging from -mm
--- linux-2.6.12/include/linux/list.h~ 2005-08-08 15:34:50.000000000 -0400
+++ linux-2.6.12/include/linux/list.h 2005-08-08 15:35:22.000000000 -0400
@@ -5,7 +5,9 @@
#include <linux/stddef.h>
#include <linux/prefetch.h>
+#include <linux/kernel.h>
#include <asm/system.h>
+#include <asm/bug.h>
/*
* These are non-NULL pointers that will result in page faults
@@ -160,6 +162,8 @@ static inline void __list_del(struct lis
*/
static inline void list_del(struct list_head *entry)
{
+ BUG_ON(entry->prev->next != entry);
+ BUG_ON(entry->next->prev != entry);
__list_del(entry->prev, entry->next);
entry->next = LIST_POISON1;
entry->prev = LIST_POISON2;
linux-2.6-debug-periodic-slab-check.patch:
slab.c | 110 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++---
1 files changed, 105 insertions(+), 5 deletions(-)
--- NEW FILE linux-2.6-debug-periodic-slab-check.patch ---
diff -urNp --exclude-from=/home/davej/.exclude linux-1000/mm/slab.c linux-1010/mm/slab.c
--- linux-1000/mm/slab.c
+++ linux-1010/mm/slab.c
@@ -189,7 +189,7 @@
*/
#define BUFCTL_END (((kmem_bufctl_t)(~0U))-0)
-#define BUFCTL_FREE (((kmem_bufctl_t)(~0U))-1)
+#define BUFCTL_ALLOC (((kmem_bufctl_t)(~0U))-1)
#define SLAB_LIMIT (((kmem_bufctl_t)(~0U))-2)
/* Max number of objs-per-slab for caches which use off-slab slabs.
@@ -355,6 +355,7 @@ struct kmem_cache_s {
#if DEBUG
int dbghead;
int reallen;
+ unsigned long redzonetest;
#endif
};
@@ -370,6 +371,7 @@ struct kmem_cache_s {
*/
#define REAPTIMEOUT_CPUC (2*HZ)
#define REAPTIMEOUT_LIST3 (4*HZ)
+#define REDZONETIMEOUT (300*HZ)
#if STATS
#define STATS_INC_ACTIVE(x) ((x)->num_active++)
@@ -1446,7 +1448,11 @@ next:
}
cachep->lists.next_reap = jiffies + REAPTIMEOUT_LIST3 +
- ((unsigned long)cachep)%REAPTIMEOUT_LIST3;
+ ((unsigned long)cachep/L1_CACHE_BYTES)%REAPTIMEOUT_LIST3;
+#if DEBUG
+ cachep->redzonetest = jiffies + REDZONETIMEOUT +
+ ((unsigned long)cachep/L1_CACHE_BYTES)%REDZONETIMEOUT;
+#endif
/* Need the semaphore to access the chain. */
down(&cache_chain_sem);
@@ -2043,7 +2049,7 @@ retry:
slabp->inuse++;
next = slab_bufctl(slabp)[slabp->free];
#if DEBUG
- slab_bufctl(slabp)[slabp->free] = BUFCTL_FREE;
+ slab_bufctl(slabp)[slabp->free] = BUFCTL_ALLOC;
#endif
slabp->free = next;
}
@@ -2181,7 +2187,7 @@ static void free_block(kmem_cache_t *cac
objnr = (objp - slabp->s_mem) / cachep->objsize;
check_slabp(cachep, slabp);
#if DEBUG
- if (slab_bufctl(slabp)[objnr] != BUFCTL_FREE) {
+ if (slab_bufctl(slabp)[objnr] != BUFCTL_ALLOC) {
printk(KERN_ERR "slab: double free detected in cache '%s', objp %p.\n",
cachep->name, objp);
BUG();
@@ -2409,7 +2415,7 @@ got_slabp:
slabp->inuse++;
next = slab_bufctl(slabp)[slabp->free];
#if DEBUG
- slab_bufctl(slabp)[slabp->free] = BUFCTL_FREE;
+ slab_bufctl(slabp)[slabp->free] = BUFCTL_ALLOC;
#endif
slabp->free = next;
check_slabp(cachep, slabp);
@@ -2615,6 +2621,94 @@ unsigned int kmem_cache_size(kmem_cache_
EXPORT_SYMBOL(kmem_cache_size);
+#if DEBUG
+static void check_slabuse(kmem_cache_t *cachep, struct slab *slabp)
+{
+ int i;
+
+ if (!(cachep->flags & SLAB_RED_ZONE))
+ return; /* no redzone data to check */
+
+#if CONFIG_DEBUG_PAGEALLOC
+ /* Page alloc debugging on for this cache. Mapping & Unmapping happens
+ * without any locking, thus parallel checks are impossible.
+ */
+ if ((cachep->objsize%PAGE_SIZE)==0 && OFF_SLAB(cachep))
+ return;
+#endif
+
+ for (i=0;i<cachep->num;i++) {
+ void *objp = slabp->s_mem + cachep->objsize * i;
+ unsigned long red1, red2;
+
+ red1 = *dbg_redzone1(cachep, objp);
+ red2 = *dbg_redzone2(cachep, objp);
+
+ /* simplest case: marked as inactive */
+ if (red1 == RED_INACTIVE && red2 == RED_INACTIVE)
+ continue;
+
+ /* tricky case: if the bufctl value is BUFCTL_ALLOC, then
+ * the object is either allocated or somewhere in a cpu
+ * cache. The cpu caches are lockless and there might be
+ * a concurrent alloc/free call, thus we must accept random
+ * combinations of RED_ACTIVE and _INACTIVE
+ */
+ if (slab_bufctl(slabp)[i] == BUFCTL_ALLOC &&
+ (red1 == RED_INACTIVE || red1 == RED_ACTIVE) &&
+ (red2 == RED_INACTIVE || red2 == RED_ACTIVE))
+ continue;
+
+ printk(KERN_ERR "slab %s: redzone mismatch in slabp %p, objp %p, bufctl 0x%x\n",
+ cachep->name, slabp, objp, slab_bufctl(slabp)[i]);
+ print_objinfo(cachep, objp, 2);
+ }
+}
+
+/*
+ * Perform a self test on all slabs from a cache
+ */
+static void check_redzone(kmem_cache_t *cachep)
+{
+ struct list_head *q;
+ struct slab *slabp;
+
+ check_spinlock_acquired(cachep);
+
+ list_for_each(q,&cachep->lists.slabs_full) {
+ slabp = list_entry(q, struct slab, list);
+
+ if (slabp->inuse != cachep->num) {
+ printk(KERN_INFO "slab %s: wrong slabp found in full slab chain at %p (%d/%d).\n",
+ cachep->name, slabp, slabp->inuse, cachep->num);
+ }
+ check_slabp(cachep, slabp);
+ check_slabuse(cachep, slabp);
+ }
+ list_for_each(q,&cachep->lists.slabs_partial) {
+ slabp = list_entry(q, struct slab, list);
+
+ if (slabp->inuse == cachep->num || slabp->inuse == 0) {
+ printk(KERN_INFO "slab %s: wrong slab found in partial chain at %p (%d/%d).\n",
+ cachep->name, slabp, slabp->inuse, cachep->num);
+ }
+ check_slabp(cachep, slabp);
+ check_slabuse(cachep, slabp);
+ }
+ list_for_each(q,&cachep->lists.slabs_free) {
+ slabp = list_entry(q, struct slab, list);
+
+ if (slabp->inuse != 0) {
+ printk(KERN_INFO "slab %s: wrong slab found in free chain at %p (%d/%d).\n",
+ cachep->name, slabp, slabp->inuse, cachep->num);
+ }
+ check_slabp(cachep, slabp);
+ check_slabuse(cachep, slabp);
+ }
+}
+
+#endif
+
struct ccupdate_struct {
kmem_cache_t *cachep;
struct array_cache *new[NR_CPUS];
@@ -2798,6 +2892,12 @@ static void cache_reap(void *unused)
drain_array_locked(searchp, ac_data(searchp), 0);
+#if DEBUG
+ if(time_before(searchp->redzonetest, jiffies)) {
+ searchp->redzonetest = jiffies + REDZONETIMEOUT;
+ check_redzone(searchp);
+ }
+#endif
if(time_after(searchp->lists.next_reap, jiffies))
goto next_unlock;
linux-2.6-debug-reference-discarded-return-result.patch:
reference_discarded.pl | 2 +-
1 files changed, 1 insertion(+), 1 deletion(-)
--- NEW FILE linux-2.6-debug-reference-discarded-return-result.patch ---
?
diff -urNp --exclude-from=/home/davej/.exclude linux-3022/scripts/reference_discarded.pl linux-10000/scripts/reference_discarded.pl
--- linux-3022/scripts/reference_discarded.pl
+++ linux-10000/scripts/reference_discarded.pl
@@ -107,4 +108,4 @@ foreach $object (keys(%object)) {
}
# printf("Done\n");
-exit(0);
+exit($errorcount);
linux-2.6-debug-singlebiterror.patch:
slab.c | 16 ++++++++++++++++
1 files changed, 16 insertions(+)
--- NEW FILE linux-2.6-debug-singlebiterror.patch ---
--- linux-2.6.11/mm/slab.c~ 2005-05-01 00:51:59.000000000 -0400
+++ linux-2.6.11/mm/slab.c 2005-05-01 01:19:38.000000000 -0400
@@ -1004,8 +1004,12 @@ static void poison_obj(kmem_cache_t *cac
static void dump_line(char *data, int offset, int limit)
{
int i;
+ unsigned char total=0;
+
printk(KERN_ERR "%03x:", offset);
for (i=0;i<limit;i++) {
+ if (data[offset+i] != POISON_FREE)
+ total += data[offset+i];
if (check_tainted() == 0)
printk(" %02x", (unsigned char)data[offset+i]);
else {
@@ -1019,6 +1023,18 @@ static void dump_line(char *data, int of
}
}
printk("\n");
+ switch (total) {
+ case 0x36:
+ case 0x6a:
+ case 0x6f:
+ case 0x81:
+ case 0xac:
+ case 0xd3:
+ case 0xd5:
+ case 0xea:
+ printk (KERN_ERR "Single bit error detected. Possibly bad RAM. Run memtest86.\n");
+ return;
+ }
}
#endif
linux-2.6-debug-slab-backtrace.patch:
slab.c | 1 +
1 files changed, 1 insertion(+)
--- NEW FILE linux-2.6-debug-slab-backtrace.patch ---
Sometimes it's possible that the debug info gets disabled
due to alignment issues. If we then get a corruption we
have very few clues wtf happened.
--- linux-2.6.11/mm/slab.c~ 2005-04-20 03:07:42.000000000 -0400
+++ linux-2.6.11/mm/slab.c 2005-04-20 03:07:48.000000000 -0400
@@ -1064,6 +1064,7 @@ static void check_poison_obj(kmem_cache_
printk(KERN_ERR "Slab corruption: (%s) start=%p, len=%d\n",
print_tainted(), realobj, size);
print_objinfo(cachep, objp, 0);
+ dump_stack();
}
/* Hexdump the affected line */
i = (i/16)*16;
linux-2.6-debug-sleep-in-irq-warning.patch:
delay.h | 17 ++++++++---------
1 files changed, 8 insertions(+), 9 deletions(-)
--- NEW FILE linux-2.6-debug-sleep-in-irq-warning.patch ---
warn if we sleep in an irq for a long time.
diff -urNp --exclude-from=/home/davej/.exclude linux-3022/include/linux/delay.h linux-10000/include/linux/delay.h
--- linux-3022/include/linux/delay.h
+++ linux-10000/include/linux/delay.h
@@ -10,7 +10,7 @@
extern unsigned long loops_per_jiffy;
#include <asm/delay.h>
-
+#include <linux/hardirq.h>
/*
* Using udelay() for intervals greater than a few milliseconds can
* risk overflow for high loops_per_jiffy (high bogomips) machines. The
@@ -25,14 +25,13 @@ extern unsigned long loops_per_jiffy;
#define MAX_UDELAY_MS 5
#endif
-#ifdef notdef
-#define mdelay(n) (\
- {unsigned long __ms=(n); while (__ms--) udelay(1000);})
-#else
-#define mdelay(n) (\
- (__builtin_constant_p(n) && (n)<=MAX_UDELAY_MS) ? udelay((n)*1000) : \
- ({unsigned long __ms=(n); while (__ms--) udelay(1000);}))
-#endif
+#define mdelay(n) ( \
+ { \
+ static int warned=0; \
+ unsigned long __ms=(n); \
+ WARN_ON(in_irq() && !(warned++)); \
+ while (__ms--) udelay(1000); \
+ })
#ifndef ndelay
#define ndelay(x) udelay(((x)+999)/1000)
linux-2.6-debug-spinlock-panic.patch:
include/linux/spinlock.h | 37 +++++++++++++++++++++++++++++++------
kernel/panic.c | 10 ++++++++++
2 files changed, 41 insertions(+), 6 deletions(-)
--- NEW FILE linux-2.6-debug-spinlock-panic.patch ---
By default, change the spinlock debugging to panic instead of printk.
This catches a lot of problems that previously would go unreported.
The only problem with this is that if we hit this in the installer kernel,
the user can't install the release. As a worse-case scenario, we have
a 'dontpanic' boot argument. Douglas Adams would be proud.
--- linux-2.6.12/include/linux/spinlock.h~ 2005-08-09 01:34:16.000000000 -0400
+++ linux-2.6.12/include/linux/spinlock.h 2005-08-09 01:39:44.000000000 -0400
@@ -114,17 +114,26 @@ typedef struct {
#define CHECK_LOCK(x) \
do { \
if ((x)->magic != SPINLOCK_MAGIC) { \
- printk(KERN_ERR "%s:%d: spin_is_locked on uninitialized spinlock %p. (%s)\n", \
+ if (nopanic) \
+ printk(KERN_ERR "%s:%d: spin_is_locked on uninitialized spinlock %p. (%s)\n", \
+ __FILE__, __LINE__, (x), print_tainted()); \
+ else \
+ panic("%s:%d: spin_is_locked on uninitialized spinlock %p. (%s)\n", \
__FILE__, __LINE__, (x), print_tainted()); \
} \
} while(0)
#define _raw_spin_lock(x) \
do { \
- CHECK_LOCK(x); \
+ CHECK_LOCK(x); \
if ((x)->lock&&(x)->babble) { \
(x)->babble--; \
- printk("%s:%d: spin_lock(%s:%p) already locked by %s/%d. (%s)\n", \
+ if (nopanic) \
+ printk("%s:%d: spin_lock(%s:%p) already locked by %s/%d. (%s)\n", \
+ __FILE__,__LINE__, (x)->module, \
+ (x), (x)->owner, (x)->oline, print_tainted()); \
+ else \
+ panic("%s:%d: spin_lock(%s:%p) already locked by %s/%d. (%s)\n", \
__FILE__,__LINE__, (x)->module, \
(x), (x)->owner, (x)->oline, print_tainted()); \
} \
@@ -162,7 +171,12 @@ typedef struct {
CHECK_LOCK(x); \
if ((x)->lock&&(x)->babble) { \
(x)->babble--; \
- printk("%s:%d: spin_trylock(%s:%p) already locked by %s/%d.(%s)\n", \
+ if (nopanic) \
+ printk("%s:%d: spin_trylock(%s:%p) already locked by %s/%d.(%s)\n", \
+ __FILE__,__LINE__, (x)->module, \
+ (x), (x)->owner, (x)->oline, print_tainted()); \
+ else \
+ panic("%s:%d: spin_trylock(%s:%p) already locked by %s/%d.(%s)\n", \
__FILE__,__LINE__, (x)->module, \
(x), (x)->owner, (x)->oline, print_tainted()); \
} \
@@ -177,7 +191,12 @@ typedef struct {
CHECK_LOCK(x); \
if ((x)->lock&&(x)->babble) { \
(x)->babble--; \
- printk("%s:%d: spin_unlock_wait(%s:%p) owned by %s/%d. (%s)\n", \
+ if (nopanic) \
+ printk("%s:%d: spin_unlock_wait(%s:%p) owned by %s/%d. (%s)\n", \
+ __FILE__,__LINE__, (x)->module, (x), \
+ (x)->owner, (x)->oline, print_tainted()); \
+ else \
+ panic("%s:%d: spin_unlock_wait(%s:%p) owned by %s/%d. (%s)\n", \
__FILE__,__LINE__, (x)->module, (x), \
(x)->owner, (x)->oline, print_tainted()); \
}\
@@ -188,7 +207,11 @@ typedef struct {
CHECK_LOCK(x); \
if (!(x)->lock&&(x)->babble) { \
(x)->babble--; \
- printk("%s:%d: spin_unlock(%s:%p) not locked. (%s)\n", \
+ if (nopanic) \
+ printk("%s:%d: spin_unlock(%s:%p) not locked. (%s)\n", \
+ __FILE__,__LINE__, (x)->module, (x), print_tainted());\
+ else \
+ panic("%s:%d: spin_unlock(%s:%p) not locked. (%s)\n", \
__FILE__,__LINE__, (x)->module, (x), print_tainted());\
} \
(x)->lock = 0; \
--- linux-2.6.12/kernel/panic.c~ 2005-08-09 01:47:46.000000000 -0400
+++ linux-2.6.12/kernel/panic.c 2005-08-09 01:47:50.000000000 -0400
@@ -22,6 +22,7 @@
int panic_timeout;
int panic_on_oops;
+int nopanic;
int tainted;
EXPORT_SYMBOL(panic_timeout);
@@ -36,6 +38,15 @@ static int __init panic_setup(char *str)
}
__setup("panic=", panic_setup);
+static int __init nopanic_setup(char *str)
+{
+ nopanic = 1;
+ return 1;
+}
+
+EXPORT_SYMBOL(nopanic);
+__setup("dontpanic", nopanic_setup);
+
static long no_blink(long time)
{
return 0;
--- linux-2.6.12/include/linux/spinlock.h~ 2005-08-09 01:43:12.000000000 -0400
+++ linux-2.6.12/include/linux/spinlock.h 2005-08-09 01:43:31.000000000 -0400
@@ -34,6 +34,8 @@
#define __lockfunc fastcall __attribute__((section(".spinlock.text")))
+extern int nopanic;
+
/*
* If CONFIG_SMP is set, pull in the _raw_* definitions
*/
linux-2.6-debug-spinlock-taint.patch:
spinlock.h | 24 ++++++++++++------------
1 files changed, 12 insertions(+), 12 deletions(-)
--- NEW FILE linux-2.6-debug-spinlock-taint.patch ---
Print info about tainting in the spinlock debug printks.
diff -urNp --exclude-from=/home/davej/.exclude linux-1720/include/linux/spinlock.h linux-1730/include/linux/spinlock.h
--- linux-1720/include/linux/spinlock.h
+++ linux-1730/include/linux/spinlock.h
@@ -114,8 +114,8 @@ typedef struct {
#define CHECK_LOCK(x) \
do { \
if ((x)->magic != SPINLOCK_MAGIC) { \
- printk(KERN_ERR "%s:%d: spin_is_locked on uninitialized spinlock %p.\n", \
- __FILE__, __LINE__, (x)); \
+ printk(KERN_ERR "%s:%d: spin_is_locked on uninitialized spinlock %p. (%s)\n", \
+ __FILE__, __LINE__, (x), print_tainted()); \
} \
} while(0)
@@ -124,9 +124,9 @@ typedef struct {
CHECK_LOCK(x); \
if ((x)->lock&&(x)->babble) { \
(x)->babble--; \
- printk("%s:%d: spin_lock(%s:%p) already locked by %s/%d\n", \
+ printk("%s:%d: spin_lock(%s:%p) already locked by %s/%d. (%s)\n", \
__FILE__,__LINE__, (x)->module, \
- (x), (x)->owner, (x)->oline); \
+ (x), (x)->owner, (x)->oline, print_tainted()); \
} \
(x)->lock = 1; \
(x)->owner = __FILE__; \
@@ -140,9 +140,9 @@ typedef struct {
CHECK_LOCK(x); \
if ((x)->lock&&(x)->babble) { \
(x)->babble--; \
- printk("%s:%d: spin_is_locked(%s:%p) already locked by %s/%d\n", \
+ printk("%s:%d: spin_is_locked(%s:%p) already locked by %s/%d.(%s)\n", \
__FILE__,__LINE__, (x)->module, \
- (x), (x)->owner, (x)->oline); \
+ (x), (x)->owner, (x)->oline, print_tainted()); \
} \
0; \
})
@@ -162,9 +162,9 @@ typedef struct {
CHECK_LOCK(x); \
if ((x)->lock&&(x)->babble) { \
(x)->babble--; \
- printk("%s:%d: spin_trylock(%s:%p) already locked by %s/%d\n", \
+ printk("%s:%d: spin_trylock(%s:%p) already locked by %s/%d.(%s)\n", \
__FILE__,__LINE__, (x)->module, \
- (x), (x)->owner, (x)->oline); \
+ (x), (x)->owner, (x)->oline, print_tainted()); \
} \
(x)->lock = 1; \
(x)->owner = __FILE__; \
@@ -177,9 +177,9 @@ typedef struct {
CHECK_LOCK(x); \
if ((x)->lock&&(x)->babble) { \
(x)->babble--; \
- printk("%s:%d: spin_unlock_wait(%s:%p) owned by %s/%d\n", \
+ printk("%s:%d: spin_unlock_wait(%s:%p) owned by %s/%d. (%s)\n", \
__FILE__,__LINE__, (x)->module, (x), \
- (x)->owner, (x)->oline); \
+ (x)->owner, (x)->oline, print_tainted()); \
}\
} while (0)
@@ -188,8 +188,8 @@ typedef struct {
CHECK_LOCK(x); \
if (!(x)->lock&&(x)->babble) { \
(x)->babble--; \
- printk("%s:%d: spin_unlock(%s:%p) not locked\n", \
- __FILE__,__LINE__, (x)->module, (x));\
+ printk("%s:%d: spin_unlock(%s:%p) not locked. (%s)\n", \
+ __FILE__,__LINE__, (x)->module, (x), print_tainted());\
} \
(x)->lock = 0; \
} while (0)
linux-2.6-debug-taint-check.patch:
arch/i386/kernel/traps.c | 5 ++++-
include/linux/kernel.h | 1 +
kernel/panic.c | 7 +++++++
mm/slab.c | 12 +++++++++++-
4 files changed, 23 insertions(+), 2 deletions(-)
--- NEW FILE linux-2.6-debug-taint-check.patch ---
--- linux-2.6.11/kernel/panic.c~ 2005-04-20 03:48:57.000000000 -0400
+++ linux-2.6.11/kernel/panic.c 2005-04-20 03:49:28.000000000 -0400
@@ -159,3 +159,10 @@ void add_taint(unsigned flag)
tainted |= flag;
}
EXPORT_SYMBOL(add_taint);
+
+int check_tainted(void)
+{
+ return tainted;
+}
+EXPORT_SYMBOL_GPL(check_tainted);
+
--- linux-2.6.11/include/linux/kernel.h~ 2005-04-20 03:49:49.000000000 -0400
+++ linux-2.6.11/include/linux/kernel.h 2005-04-20 03:49:56.000000000 -0400
@@ -156,6 +156,7 @@ extern int panic_on_oops;
extern int tainted;
extern const char *print_tainted(void);
extern void add_taint(unsigned);
+extern int check_tainted(void);
#define crashdump_mode() unlikely(netdump_mode || diskdump_mode)
--- linux-2.6.11/arch/i386/kernel/traps.c~ 2005-04-20 03:57:00.000000000 -0400
+++ linux-2.6.11/arch/i386/kernel/traps.c 2005-04-20 03:58:23.000000000 -0400
@@ -182,7 +182,10 @@ void show_stack(struct task_struct *task
break;
if (i && ((i % 8) == 0))
printk("\n ");
- printk("%08lx ", *stack++);
+ if ((check_tainted() != 0) && (i==0))
+ printk("badc0ded ");
+ else
+ printk("%08lx ", *stack++);
}
printk("\nCall Trace:\n");
show_trace(task, esp);
--- linux-2.6.11/mm/slab.c~ 2005-04-21 00:48:06.000000000 -0400
+++ linux-2.6.11/mm/slab.c 2005-04-21 00:57:00.000000000 -0400
@@ -1006,7 +1006,17 @@ static void dump_line(char *data, int of
int i;
printk(KERN_ERR "%03x:", offset);
for (i=0;i<limit;i++) {
- printk(" %02x", (unsigned char)data[offset+i]);
+ if (check_tainted() == 0)
+ printk(" %02x", (unsigned char)data[offset+i]);
+ else {
+ switch (i) {
+ case 0: printk(" f3 3d");
+ break;
+ case 1: break;
+ default:
+ printk(" %02x", (unsigned char)data[offset+i]);
+ }
+ }
}
printk("\n");
}
linux-2.6-debug-taint-vm.patch:
linux-2.6.11/include/asm-generic/bug.h | 8 ++++++--
linux-2000/kernel/panic.c | 1 +
linux-2000/mm/page_alloc.c | 4 ++--
linux-2000/mm/slab.c | 4 ++--
4 files changed, 11 insertions(+), 6 deletions(-)
--- NEW FILE linux-2.6-debug-taint-vm.patch ---
--- linux-2.6.11/include/asm-generic/bug.h~ 2005-05-09 18:00:44.000000000 -0400
+++ linux-2.6.11/include/asm-generic/bug.h 2005-05-09 18:01:23.000000000 -0400
@@ -4,10 +4,14 @@
#include <linux/compiler.h>
#include <linux/config.h>
+#ifndef __ASSEMBLY__
+extern const char *print_tainted(void);
+#endif
+
#ifdef CONFIG_BUG
#ifndef HAVE_ARCH_BUG
#define BUG() do { \
- printk("kernel BUG at %s:%d!\n", __FILE__, __LINE__); \
+ printk("kernel BUG at %s:%d! (%s)\n", __FILE__, __LINE__, print_tainted()); \
panic("BUG!"); \
} while (0)
#endif
@@ -25,7 +29,7 @@
#ifndef HAVE_ARCH_WARN_ON
#define WARN_ON(condition) do { \
if (unlikely((condition)!=0)) { \
- printk("Badness in %s at %s:%d\n", __FUNCTION__, __FILE__, __LINE__); \
+ printk("Badness in %s at %s:%d (%s)\n", __FUNCTION__, __FILE__, __LINE__, print_tainted()); \
dump_stack(); \
} \
} while (0)
diff -urNp --exclude-from=/home/davej/.exclude linux-1740/kernel/panic.c linux-2000/kernel/panic.c
--- linux-1740/kernel/panic.c
+++ linux-2000/kernel/panic.c
@@ -151,6 +151,7 @@ const char *print_tainted(void)
snprintf(buf, sizeof(buf), "Not tainted");
return(buf);
}
+EXPORT_SYMBOL(print_tainted);
void add_taint(unsigned flag)
{
diff -urNp --exclude-from=/home/davej/.exclude linux-1740/mm/page_alloc.c linux-2000/mm/page_alloc.c
--- linux-1740/mm/page_alloc.c
+++ linux-2000/mm/page_alloc.c
@@ -97,9 +97,9 @@ static void bad_page(const char *functio
{
printk(KERN_EMERG "Bad page state at %s (in process '%s', page %p)\n",
function, current->comm, page);
- printk(KERN_EMERG "flags:0x%0*lx mapping:%p mapcount:%d count:%d\n",
+ printk(KERN_EMERG "flags:0x%0*lx mapping:%p mapcount:%d count:%d (%s)\n",
(int)(2*sizeof(page_flags_t)), (unsigned long)page->flags,
- page->mapping, page_mapcount(page), page_count(page));
+ page->mapping, page_mapcount(page), page_count(page), print_tainted());
printk(KERN_EMERG "Backtrace:\n");
dump_stack();
printk(KERN_EMERG "Trying to fix it up, but a reboot is needed\n");
diff -urNp --exclude-from=/home/davej/.exclude linux-1740/mm/slab.c linux-2000/mm/slab.c
--- linux-1740/mm/slab.c
+++ linux-2000/mm/slab.c
@@ -1053,8 +1053,8 @@ static void check_poison_obj(kmem_cache_
/* Mismatch ! */
/* Print header */
if (lines == 0) {
- printk(KERN_ERR "Slab corruption: start=%p, len=%d\n",
- realobj, size);
+ printk(KERN_ERR "Slab corruption: (%s) start=%p, len=%d\n",
+ print_tainted(), realobj, size);
print_objinfo(cachep, objp, 0);
}
/* Hexdump the affected line */
linux-2.6-futex-wake_op.patch:
include/asm-alpha/futex.h | 53 +++++++++++++++++++
include/asm-arm/futex.h | 53 +++++++++++++++++++
include/asm-arm26/futex.h | 53 +++++++++++++++++++
include/asm-cris/futex.h | 53 +++++++++++++++++++
include/asm-frv/futex.h | 53 +++++++++++++++++++
include/asm-h8300/futex.h | 53 +++++++++++++++++++
include/asm-i386/futex.h | 108 +++++++++++++++++++++++++++++++++++++++
include/asm-ia64/futex.h | 53 +++++++++++++++++++
include/asm-m32r/futex.h | 53 +++++++++++++++++++
include/asm-m68k/futex.h | 53 +++++++++++++++++++
include/asm-m68knommu/futex.h | 53 +++++++++++++++++++
include/asm-mips/futex.h | 53 +++++++++++++++++++
include/asm-parisc/futex.h | 53 +++++++++++++++++++
include/asm-ppc/futex.h | 53 +++++++++++++++++++
include/asm-ppc64/futex.h | 83 ++++++++++++++++++++++++++++++
include/asm-ppc64/memory.h | 2
include/asm-s390/futex.h | 53 +++++++++++++++++++
include/asm-sh/futex.h | 53 +++++++++++++++++++
include/asm-sh64/futex.h | 53 +++++++++++++++++++
include/asm-sparc/futex.h | 53 +++++++++++++++++++
include/asm-sparc64/futex.h | 53 +++++++++++++++++++
include/asm-um/futex.h | 53 +++++++++++++++++++
include/asm-v850/futex.h | 53 +++++++++++++++++++
include/asm-x86_64/futex.h | 98 +++++++++++++++++++++++++++++++++++
include/linux/futex.h | 36 +++++++++++--
kernel/futex.c | 116 ++++++++++++++++++++++++++++++++++++++++++
26 files changed, 1498 insertions(+), 5 deletions(-)
--- NEW FILE linux-2.6-futex-wake_op.patch ---
--- linux-2.6.12/include/linux/futex.h.jj 2005-06-17 21:48:29.000000000 +0200
+++ linux-2.6.12/include/linux/futex.h 2005-08-23 11:11:41.000000000 +0200
@@ -4,14 +4,40 @@
/* Second argument to futex syscall */
-#define FUTEX_WAIT (0)
-#define FUTEX_WAKE (1)
-#define FUTEX_FD (2)
-#define FUTEX_REQUEUE (3)
-#define FUTEX_CMP_REQUEUE (4)
+#define FUTEX_WAIT 0
+#define FUTEX_WAKE 1
+#define FUTEX_FD 2
+#define FUTEX_REQUEUE 3
+#define FUTEX_CMP_REQUEUE 4
+#define FUTEX_WAKE_OP 5
long do_futex(unsigned long uaddr, int op, int val,
unsigned long timeout, unsigned long uaddr2, int val2,
int val3);
+#define FUTEX_OP_SET 0 /* *(int *)UADDR2 = OPARG; */
+#define FUTEX_OP_ADD 1 /* *(int *)UADDR2 += OPARG; */
+#define FUTEX_OP_OR 2 /* *(int *)UADDR2 |= OPARG; */
+#define FUTEX_OP_ANDN 3 /* *(int *)UADDR2 &= ~OPARG; */
+#define FUTEX_OP_XOR 4 /* *(int *)UADDR2 ^= OPARG; */
+
+#define FUTEX_OP_OPARG_SHIFT 8 /* Use (1 << OPARG) instead of OPARG. */
+
+#define FUTEX_OP_CMP_EQ 0 /* if (oldval == CMPARG) wake */
+#define FUTEX_OP_CMP_NE 1 /* if (oldval != CMPARG) wake */
+#define FUTEX_OP_CMP_LT 2 /* if (oldval < CMPARG) wake */
+#define FUTEX_OP_CMP_LE 3 /* if (oldval <= CMPARG) wake */
+#define FUTEX_OP_CMP_GT 4 /* if (oldval > CMPARG) wake */
+#define FUTEX_OP_CMP_GE 5 /* if (oldval >= CMPARG) wake */
+
+/* FUTEX_WAKE_OP will perform atomically
+ int oldval = *(int *)UADDR2;
+ *(int *)UADDR2 = oldval OP OPARG;
+ if (oldval CMP CMPARG)
+ wake UADDR2; */
+
+#define FUTEX_OP(op, oparg, cmp, cmparg) \
+ (((op & 0xf) << 28) | ((cmp & 0xf) << 24) \
+ | ((oparg & 0xfff) << 12) | (cmparg & 0xfff))
+
#endif
--- linux-2.6.12/kernel/futex.c.jj 2005-06-17 21:48:29.000000000 +0200
+++ linux-2.6.12/kernel/futex.c 2005-08-23 11:11:59.000000000 +0200
@@ -40,6 +40,7 @@
#include <linux/pagemap.h>
#include <linux/syscalls.h>
#include <linux/signal.h>
+#include <asm/futex.h>
#define FUTEX_HASHBITS (CONFIG_BASE_SMALL ? 4 : 8)
@@ -327,6 +328,118 @@ out:
}
/*
+ * Wake up all waiters hashed on the physical page that is mapped
+ * to this virtual address:
+ */
+static int futex_wake_op(unsigned long uaddr1, unsigned long uaddr2, int nr_wake, int nr_wake2, int op)
+{
+ union futex_key key1, key2;
+ struct futex_hash_bucket *bh1, *bh2;
+ struct list_head *head;
+ struct futex_q *this, *next;
+ int ret, op_ret, attempt = 0;
+
+retryfull:
+ down_read(¤t->mm->mmap_sem);
+
+ ret = get_futex_key(uaddr1, &key1);
+ if (unlikely(ret != 0))
+ goto out;
+ ret = get_futex_key(uaddr2, &key2);
+ if (unlikely(ret != 0))
+ goto out;
+
+ bh1 = hash_futex(&key1);
+ bh2 = hash_futex(&key2);
+
+retry:
+ if (bh1 < bh2)
+ spin_lock(&bh1->lock);
+ spin_lock(&bh2->lock);
+ if (bh1 > bh2)
+ spin_lock(&bh1->lock);
+
+ op_ret = futex_atomic_op_inuser(op, (int __user *)uaddr2);
+ if (unlikely(op_ret < 0)) {
+ int dummy;
+
+ spin_unlock(&bh1->lock);
+ if (bh1 != bh2)
+ spin_unlock(&bh2->lock);
+
+ /* futex_atomic_op_inuser needs to both read and write
+ * *(int __user *)uaddr2, but we can't modify it
+ * non-atomically. Therefore, if get_user below is not
+ * enough, we need to handle the fault ourselves, while
+ * still holding the mmap_sem. */
+ if (attempt++) {
+ struct vm_area_struct * vma;
+ struct mm_struct *mm = current->mm;
+
+ ret = -EFAULT;
+ if (attempt >= 2 ||
+ !(vma = find_vma(mm, uaddr2)) ||
+ vma->vm_start > uaddr2 ||
+ !(vma->vm_flags & VM_WRITE))
+ goto out;
+
+ switch (handle_mm_fault(mm, vma, uaddr2, 1)) {
+ case VM_FAULT_MINOR:
+ current->min_flt++;
+ break;
+ case VM_FAULT_MAJOR:
+ current->maj_flt++;
+ break;
+ default:
+ goto out;
+ }
+ goto retry;
+ }
+
+ /* If we would have faulted, release mmap_sem,
+ * fault it in and start all over again. */
+ up_read(¤t->mm->mmap_sem);
+
+ ret = get_user(dummy, (int __user *)uaddr2);
+ if (ret)
+ return ret;
+
+ goto retryfull;
+ }
+
+ head = &bh1->chain;
+
+ list_for_each_entry_safe(this, next, head, list) {
+ if (match_futex (&this->key, &key1)) {
+ wake_futex(this);
+ if (++ret >= nr_wake)
+ break;
+ }
+ }
+
+ if (op_ret > 0) {
+ head = &bh2->chain;
+
+ op_ret = 0;
+ list_for_each_entry_safe(this, next, head, list) {
+ if (match_futex (&this->key, &key2)) {
+ wake_futex(this);
+ if (++op_ret >= nr_wake2)
+ break;
+ }
+ }
+ ret += op_ret;
+ }
+
+ spin_unlock(&bh1->lock);
+ if (bh1 != bh2)
+ spin_unlock(&bh2->lock);
+out:
+ up_read(¤t->mm->mmap_sem);
+ return ret;
+}
+
+/*
* Requeue all waiters hashed on one physical page to another
* physical page.
*/
@@ -740,6 +853,9 @@ long do_futex(unsigned long uaddr, int o
case FUTEX_CMP_REQUEUE:
ret = futex_requeue(uaddr, uaddr2, val, val2, &val3);
break;
+ case FUTEX_WAKE_OP:
+ ret = futex_wake_op(uaddr, uaddr2, val, val2, val3);
+ break;
default:
ret = -ENOSYS;
}
--- linux-2.6.12/include/asm-ppc64/futex.h.jj 2005-08-23 11:11:41.000000000 +0200
+++ linux-2.6.12/include/asm-ppc64/futex.h 2005-08-23 11:11:41.000000000 +0200
@@ -0,0 +1,83 @@
+#ifndef _ASM_FUTEX_H
+#define _ASM_FUTEX_H
+
+#ifdef __KERNEL__
+
+#include <linux/futex.h>
+#include <asm/errno.h>
+#include <asm/memory.h>
+#include <asm/uaccess.h>
+
+#define __futex_atomic_op(insn, ret, oldval, uaddr, oparg) \
+ __asm__ __volatile (SYNC_ON_SMP \
+"1: lwarx %0,0,%2\n" \
+ insn \
+"2: stwcx. %1,0,%2\n\
+ bne- 1b\n\
+ li %1,0\n\
+3: .section .fixup,\"ax\"\n\
+4: li %1,%3\n\
+ b 3b\n\
+ .previous\n\
+ .section __ex_table,\"a\"\n\
+ .align 3\n\
+ .llong 1b,4b,2b,4b\n\
+ .previous" \
+ : "=&r" (oldval), "=&r" (ret) \
+ : "b" (uaddr), "i" (-EFAULT), "1" (oparg) \
+ : "cr0", "memory")
+
+static inline int
+futex_atomic_op_inuser (int encoded_op, int __user *uaddr)
+{
+ int op = (encoded_op >> 28) & 7;
+ int cmp = (encoded_op >> 24) & 15;
+ int oparg = (encoded_op << 8) >> 20;
+ int cmparg = (encoded_op << 20) >> 20;
+ int oldval = 0, ret;
+ if (encoded_op & (FUTEX_OP_OPARG_SHIFT << 28))
+ oparg = 1 << oparg;
+
+ if (! access_ok (VERIFY_WRITE, uaddr, sizeof(int)))
+ return -EFAULT;
+
+ inc_preempt_count();
+
+ switch (op) {
+ case FUTEX_OP_SET:
+ __futex_atomic_op("", ret, oldval, uaddr, oparg);
+ break;
+ case FUTEX_OP_ADD:
+ __futex_atomic_op("add %1,%0,%1\n", ret, oldval, uaddr, oparg);
+ break;
+ case FUTEX_OP_OR:
+ __futex_atomic_op("or %1,%0,%1\n", ret, oldval, uaddr, oparg);
+ break;
+ case FUTEX_OP_ANDN:
+ __futex_atomic_op("andc %1,%0,%1\n", ret, oldval, uaddr, oparg);
+ break;
+ case FUTEX_OP_XOR:
+ __futex_atomic_op("xor %1,%0,%1\n", ret, oldval, uaddr, oparg);
+ break;
+ default:
+ ret = -ENOSYS;
+ }
+
+ dec_preempt_count();
+
+ if (!ret) {
+ switch (cmp) {
+ case FUTEX_OP_CMP_EQ: ret = (oldval == cmparg); break;
+ case FUTEX_OP_CMP_NE: ret = (oldval != cmparg); break;
+ case FUTEX_OP_CMP_LT: ret = (oldval < cmparg); break;
+ case FUTEX_OP_CMP_GE: ret = (oldval >= cmparg); break;
+ case FUTEX_OP_CMP_LE: ret = (oldval <= cmparg); break;
+ case FUTEX_OP_CMP_GT: ret = (oldval > cmparg); break;
+ default: ret = -ENOSYS;
+ }
+ }
+ return ret;
+}
+
+#endif
+#endif
--- linux-2.6.12/include/asm-ppc64/memory.h.jj 2005-06-17 21:48:29.000000000 +0200
+++ linux-2.6.12/include/asm-ppc64/memory.h 2005-08-23 11:11:41.000000000 +0200
@@ -18,9 +18,11 @@
#ifdef CONFIG_SMP
#define EIEIO_ON_SMP "eieio\n"
#define ISYNC_ON_SMP "\n\tisync"
+#define SYNC_ON_SMP "lwsync\n\t"
#else
#define EIEIO_ON_SMP
#define ISYNC_ON_SMP
+#define SYNC_ON_SMP
#endif
static inline void eieio(void)
--- linux-2.6.12/include/asm-x86_64/futex.h.jj 2005-08-23 11:11:41.000000000 +0200
+++ linux-2.6.12/include/asm-x86_64/futex.h 2005-08-23 11:11:41.000000000 +0200
@@ -0,0 +1,98 @@
+#ifndef _ASM_FUTEX_H
+#define _ASM_FUTEX_H
+
+#ifdef __KERNEL__
+
+#include <linux/futex.h>
+#include <asm/errno.h>
+#include <asm/system.h>
+#include <asm/uaccess.h>
+
+#define __futex_atomic_op1(insn, ret, oldval, uaddr, oparg) \
+ __asm__ __volatile ( \
+"1: " insn "\n" \
+"2: .section .fixup,\"ax\"\n\
+3: mov %3, %1\n\
+ jmp 2b\n\
+ .previous\n\
+ .section __ex_table,\"a\"\n\
+ .align 8\n\
+ .quad 1b,3b\n\
+ .previous" \
+ : "=r" (oldval), "=r" (ret), "=m" (*uaddr) \
+ : "i" (-EFAULT), "m" (*uaddr), "0" (oparg), "1" (0))
+
+#define __futex_atomic_op2(insn, ret, oldval, uaddr, oparg) \
+ __asm__ __volatile ( \
+"1: movl %2, %0\n\
+ movl %0, %3\n" \
+ insn "\n" \
+"2: " LOCK_PREFIX "cmpxchgl %3, %2\n\
+ jnz 1b\n\
+3: .section .fixup,\"ax\"\n\
+4: mov %5, %1\n\
+ jmp 3b\n\
+ .previous\n\
+ .section __ex_table,\"a\"\n\
+ .align 8\n\
+ .quad 1b,4b,2b,4b\n\
+ .previous" \
+ : "=&a" (oldval), "=&r" (ret), "=m" (*uaddr), \
+ "=&r" (tem) \
+ : "r" (oparg), "i" (-EFAULT), "m" (*uaddr), "1" (0))
+
+static inline int
+futex_atomic_op_inuser (int encoded_op, int __user *uaddr)
+{
+ int op = (encoded_op >> 28) & 7;
+ int cmp = (encoded_op >> 24) & 15;
+ int oparg = (encoded_op << 8) >> 20;
+ int cmparg = (encoded_op << 20) >> 20;
+ int oldval = 0, ret, tem;
+ if (encoded_op & (FUTEX_OP_OPARG_SHIFT << 28))
+ oparg = 1 << oparg;
+
+ if (! access_ok (VERIFY_WRITE, uaddr, sizeof(int)))
+ return -EFAULT;
+
+ inc_preempt_count();
+
+ switch (op) {
+ case FUTEX_OP_SET:
+ __futex_atomic_op1("xchgl %0, %2", ret, oldval, uaddr, oparg);
+ break;
+ case FUTEX_OP_ADD:
+ __futex_atomic_op1(LOCK_PREFIX "xaddl %0, %2", ret, oldval,
+ uaddr, oparg);
+ break;
+ case FUTEX_OP_OR:
+ __futex_atomic_op2("orl %4, %3", ret, oldval, uaddr, oparg);
+ break;
+ case FUTEX_OP_ANDN:
+ __futex_atomic_op2("andl %4, %3", ret, oldval, uaddr, ~oparg);
+ break;
+ case FUTEX_OP_XOR:
+ __futex_atomic_op2("xorl %4, %3", ret, oldval, uaddr, oparg);
+ break;
+ default:
+ ret = -ENOSYS;
+ }
+
+ dec_preempt_count();
+
+ if (!ret) {
+ switch (cmp) {
+ case FUTEX_OP_CMP_EQ: ret = (oldval == cmparg); break;
+ case FUTEX_OP_CMP_NE: ret = (oldval != cmparg); break;
+ case FUTEX_OP_CMP_LT: ret = (oldval < cmparg); break;
+ case FUTEX_OP_CMP_GE: ret = (oldval >= cmparg); break;
+ case FUTEX_OP_CMP_LE: ret = (oldval <= cmparg); break;
+ case FUTEX_OP_CMP_GT: ret = (oldval > cmparg); break;
+ default: ret = -ENOSYS;
+ }
+ }
+ return ret;
+}
+
+#endif
+#endif
--- linux-2.6.12/include/asm-i386/futex.h.jj 2005-08-23 11:11:41.000000000 +0200
+++ linux-2.6.12/include/asm-i386/futex.h 2005-08-23 11:11:41.000000000 +0200
@@ -0,0 +1,108 @@
+#ifndef _ASM_FUTEX_H
+#define _ASM_FUTEX_H
+
+#ifdef __KERNEL__
+
+#include <linux/futex.h>
+#include <asm/errno.h>
+#include <asm/system.h>
+#include <asm/processor.h>
+#include <asm/uaccess.h>
+
+#define __futex_atomic_op1(insn, ret, oldval, uaddr, oparg) \
+ __asm__ __volatile ( \
+"1: " insn "\n" \
+"2: .section .fixup,\"ax\"\n\
+3: mov %3, %1\n\
+ jmp 2b\n\
+ .previous\n\
+ .section __ex_table,\"a\"\n\
+ .align 8\n\
+ .long 1b,3b\n\
+ .previous" \
+ : "=r" (oldval), "=r" (ret), "=m" (*uaddr) \
+ : "i" (-EFAULT), "m" (*uaddr), "0" (oparg), "1" (0))
+
+#define __futex_atomic_op2(insn, ret, oldval, uaddr, oparg) \
+ __asm__ __volatile ( \
+"1: movl %2, %0\n\
+ movl %0, %3\n" \
+ insn "\n" \
+"2: " LOCK "cmpxchgl %3, %2\n\
+ jnz 1b\n\
+3: .section .fixup,\"ax\"\n\
+4: mov %5, %1\n\
+ jmp 3b\n\
+ .previous\n\
+ .section __ex_table,\"a\"\n\
+ .align 8\n\
+ .long 1b,4b,2b,4b\n\
+ .previous" \
+ : "=&a" (oldval), "=&r" (ret), "=m" (*uaddr), \
+ "=&r" (tem) \
+ : "r" (oparg), "i" (-EFAULT), "m" (*uaddr), "1" (0))
+
+static inline int
+futex_atomic_op_inuser (int encoded_op, int __user *uaddr)
+{
+ int op = (encoded_op >> 28) & 7;
+ int cmp = (encoded_op >> 24) & 15;
+ int oparg = (encoded_op << 8) >> 20;
+ int cmparg = (encoded_op << 20) >> 20;
+ int oldval = 0, ret, tem;
+ if (encoded_op & (FUTEX_OP_OPARG_SHIFT << 28))
+ oparg = 1 << oparg;
+
+ if (! access_ok (VERIFY_WRITE, uaddr, sizeof(int)))
+ return -EFAULT;
+
+ inc_preempt_count();
+
+ if (op == FUTEX_OP_SET)
+ __futex_atomic_op1("xchgl %0, %2", ret, oldval, uaddr, oparg);
+ else {
+#ifndef CONFIG_X86_BSWAP
+ if (boot_cpu_data.x86 == 3)
+ ret = -ENOSYS;
+ else
+#endif
+ switch (op) {
+ case FUTEX_OP_ADD:
+ __futex_atomic_op1(LOCK "xaddl %0, %2", ret,
+ oldval, uaddr, oparg);
+ break;
+ case FUTEX_OP_OR:
+ __futex_atomic_op2("orl %4, %3", ret, oldval, uaddr,
+ oparg);
+ break;
+ case FUTEX_OP_ANDN:
+ __futex_atomic_op2("andl %4, %3", ret, oldval, uaddr,
+ ~oparg);
+ break;
+ case FUTEX_OP_XOR:
+ __futex_atomic_op2("xorl %4, %3", ret, oldval, uaddr,
+ oparg);
+ break;
+ default:
+ ret = -ENOSYS;
+ }
+ }
+
+ dec_preempt_count();
+
+ if (!ret) {
+ switch (cmp) {
+ case FUTEX_OP_CMP_EQ: ret = (oldval == cmparg); break;
+ case FUTEX_OP_CMP_NE: ret = (oldval != cmparg); break;
+ case FUTEX_OP_CMP_LT: ret = (oldval < cmparg); break;
+ case FUTEX_OP_CMP_GE: ret = (oldval >= cmparg); break;
+ case FUTEX_OP_CMP_LE: ret = (oldval <= cmparg); break;
+ case FUTEX_OP_CMP_GT: ret = (oldval > cmparg); break;
+ default: ret = -ENOSYS;
+ }
+ }
+ return ret;
+}
+
+#endif
+#endif
--- linux-2.6.12/include/asm-alpha/futex.h.jj 2005-08-23 11:13:38.000000000 +0200
+++ linux-2.6.12/include/asm-alpha/futex.h 2005-08-23 11:17:25.000000000 +0200
@@ -0,0 +1,53 @@
+#ifndef _ASM_FUTEX_H
+#define _ASM_FUTEX_H
+
+#ifdef __KERNEL__
+
+#include <linux/futex.h>
+#include <asm/errno.h>
+#include <asm/uaccess.h>
+
+static inline int
+futex_atomic_op_inuser (int encoded_op, int __user *uaddr)
+{
+ int op = (encoded_op >> 28) & 7;
+ int cmp = (encoded_op >> 24) & 15;
+ int oparg = (encoded_op << 8) >> 20;
+ int cmparg = (encoded_op << 20) >> 20;
+ int oldval = 0, ret, tem;
+ if (encoded_op & (FUTEX_OP_OPARG_SHIFT << 28))
+ oparg = 1 << oparg;
+
+ if (! access_ok (VERIFY_WRITE, uaddr, sizeof(int)))
+ return -EFAULT;
+
+ inc_preempt_count();
+
+ switch (op) {
+ case FUTEX_OP_SET:
+ case FUTEX_OP_ADD:
+ case FUTEX_OP_OR:
+ case FUTEX_OP_ANDN:
+ case FUTEX_OP_XOR:
+ default:
+ ret = -ENOSYS;
+ }
+
+ dec_preempt_count();
+
+ if (!ret) {
+ switch (cmp) {
+ case FUTEX_OP_CMP_EQ: ret = (oldval == cmparg); break;
+ case FUTEX_OP_CMP_NE: ret = (oldval != cmparg); break;
+ case FUTEX_OP_CMP_LT: ret = (oldval < cmparg); break;
+ case FUTEX_OP_CMP_GE: ret = (oldval >= cmparg); break;
+ case FUTEX_OP_CMP_LE: ret = (oldval <= cmparg); break;
+ case FUTEX_OP_CMP_GT: ret = (oldval > cmparg); break;
+ default: ret = -ENOSYS;
+ }
+ }
+ return ret;
+}
+
+#endif
+#endif
--- linux-2.6.12/include/asm-arm/futex.h.jj 2005-08-23 11:13:38.000000000 +0200
+++ linux-2.6.12/include/asm-arm/futex.h 2005-08-23 11:17:25.000000000 +0200
@@ -0,0 +1,53 @@
+#ifndef _ASM_FUTEX_H
+#define _ASM_FUTEX_H
+
+#ifdef __KERNEL__
+
+#include <linux/futex.h>
+#include <asm/errno.h>
+#include <asm/uaccess.h>
+
+static inline int
+futex_atomic_op_inuser (int encoded_op, int __user *uaddr)
+{
+ int op = (encoded_op >> 28) & 7;
+ int cmp = (encoded_op >> 24) & 15;
+ int oparg = (encoded_op << 8) >> 20;
+ int cmparg = (encoded_op << 20) >> 20;
+ int oldval = 0, ret, tem;
+ if (encoded_op & (FUTEX_OP_OPARG_SHIFT << 28))
+ oparg = 1 << oparg;
+
+ if (! access_ok (VERIFY_WRITE, uaddr, sizeof(int)))
+ return -EFAULT;
+
+ inc_preempt_count();
+
+ switch (op) {
+ case FUTEX_OP_SET:
+ case FUTEX_OP_ADD:
+ case FUTEX_OP_OR:
+ case FUTEX_OP_ANDN:
+ case FUTEX_OP_XOR:
+ default:
+ ret = -ENOSYS;
+ }
+
+ dec_preempt_count();
+
+ if (!ret) {
+ switch (cmp) {
+ case FUTEX_OP_CMP_EQ: ret = (oldval == cmparg); break;
+ case FUTEX_OP_CMP_NE: ret = (oldval != cmparg); break;
+ case FUTEX_OP_CMP_LT: ret = (oldval < cmparg); break;
+ case FUTEX_OP_CMP_GE: ret = (oldval >= cmparg); break;
+ case FUTEX_OP_CMP_LE: ret = (oldval <= cmparg); break;
+ case FUTEX_OP_CMP_GT: ret = (oldval > cmparg); break;
+ default: ret = -ENOSYS;
+ }
+ }
+ return ret;
+}
+
+#endif
+#endif
--- linux-2.6.12/include/asm-arm26/futex.h.jj 2005-08-23 11:13:38.000000000 +0200
+++ linux-2.6.12/include/asm-arm26/futex.h 2005-08-23 11:17:25.000000000 +0200
@@ -0,0 +1,53 @@
+#ifndef _ASM_FUTEX_H
+#define _ASM_FUTEX_H
+
+#ifdef __KERNEL__
+
+#include <linux/futex.h>
+#include <asm/errno.h>
+#include <asm/uaccess.h>
+
+static inline int
+futex_atomic_op_inuser (int encoded_op, int __user *uaddr)
+{
+ int op = (encoded_op >> 28) & 7;
+ int cmp = (encoded_op >> 24) & 15;
+ int oparg = (encoded_op << 8) >> 20;
+ int cmparg = (encoded_op << 20) >> 20;
+ int oldval = 0, ret, tem;
+ if (encoded_op & (FUTEX_OP_OPARG_SHIFT << 28))
+ oparg = 1 << oparg;
+
+ if (! access_ok (VERIFY_WRITE, uaddr, sizeof(int)))
+ return -EFAULT;
+
+ inc_preempt_count();
+
+ switch (op) {
+ case FUTEX_OP_SET:
+ case FUTEX_OP_ADD:
+ case FUTEX_OP_OR:
+ case FUTEX_OP_ANDN:
+ case FUTEX_OP_XOR:
+ default:
+ ret = -ENOSYS;
+ }
+
+ dec_preempt_count();
+
+ if (!ret) {
+ switch (cmp) {
+ case FUTEX_OP_CMP_EQ: ret = (oldval == cmparg); break;
+ case FUTEX_OP_CMP_NE: ret = (oldval != cmparg); break;
+ case FUTEX_OP_CMP_LT: ret = (oldval < cmparg); break;
+ case FUTEX_OP_CMP_GE: ret = (oldval >= cmparg); break;
+ case FUTEX_OP_CMP_LE: ret = (oldval <= cmparg); break;
+ case FUTEX_OP_CMP_GT: ret = (oldval > cmparg); break;
+ default: ret = -ENOSYS;
+ }
+ }
+ return ret;
+}
+
+#endif
+#endif
--- linux-2.6.12/include/asm-cris/futex.h.jj 2005-08-23 11:13:38.000000000 +0200
+++ linux-2.6.12/include/asm-cris/futex.h 2005-08-23 11:17:25.000000000 +0200
@@ -0,0 +1,53 @@
+#ifndef _ASM_FUTEX_H
+#define _ASM_FUTEX_H
+
+#ifdef __KERNEL__
+
+#include <linux/futex.h>
+#include <asm/errno.h>
+#include <asm/uaccess.h>
+
+static inline int
+futex_atomic_op_inuser (int encoded_op, int __user *uaddr)
+{
+ int op = (encoded_op >> 28) & 7;
+ int cmp = (encoded_op >> 24) & 15;
+ int oparg = (encoded_op << 8) >> 20;
+ int cmparg = (encoded_op << 20) >> 20;
+ int oldval = 0, ret, tem;
+ if (encoded_op & (FUTEX_OP_OPARG_SHIFT << 28))
+ oparg = 1 << oparg;
+
+ if (! access_ok (VERIFY_WRITE, uaddr, sizeof(int)))
+ return -EFAULT;
+
+ inc_preempt_count();
+
+ switch (op) {
+ case FUTEX_OP_SET:
+ case FUTEX_OP_ADD:
+ case FUTEX_OP_OR:
+ case FUTEX_OP_ANDN:
+ case FUTEX_OP_XOR:
+ default:
+ ret = -ENOSYS;
+ }
+
+ dec_preempt_count();
+
+ if (!ret) {
+ switch (cmp) {
+ case FUTEX_OP_CMP_EQ: ret = (oldval == cmparg); break;
+ case FUTEX_OP_CMP_NE: ret = (oldval != cmparg); break;
+ case FUTEX_OP_CMP_LT: ret = (oldval < cmparg); break;
+ case FUTEX_OP_CMP_GE: ret = (oldval >= cmparg); break;
+ case FUTEX_OP_CMP_LE: ret = (oldval <= cmparg); break;
+ case FUTEX_OP_CMP_GT: ret = (oldval > cmparg); break;
+ default: ret = -ENOSYS;
+ }
+ }
+ return ret;
+}
+
+#endif
+#endif
--- linux-2.6.12/include/asm-frv/futex.h.jj 2005-08-23 11:13:38.000000000 +0200
+++ linux-2.6.12/include/asm-frv/futex.h 2005-08-23 11:17:25.000000000 +0200
@@ -0,0 +1,53 @@
+#ifndef _ASM_FUTEX_H
+#define _ASM_FUTEX_H
+
+#ifdef __KERNEL__
+
+#include <linux/futex.h>
+#include <asm/errno.h>
+#include <asm/uaccess.h>
+
+static inline int
+futex_atomic_op_inuser (int encoded_op, int __user *uaddr)
+{
+ int op = (encoded_op >> 28) & 7;
+ int cmp = (encoded_op >> 24) & 15;
+ int oparg = (encoded_op << 8) >> 20;
+ int cmparg = (encoded_op << 20) >> 20;
+ int oldval = 0, ret, tem;
+ if (encoded_op & (FUTEX_OP_OPARG_SHIFT << 28))
+ oparg = 1 << oparg;
+
+ if (! access_ok (VERIFY_WRITE, uaddr, sizeof(int)))
+ return -EFAULT;
+
+ inc_preempt_count();
+
+ switch (op) {
+ case FUTEX_OP_SET:
+ case FUTEX_OP_ADD:
+ case FUTEX_OP_OR:
+ case FUTEX_OP_ANDN:
+ case FUTEX_OP_XOR:
+ default:
+ ret = -ENOSYS;
+ }
+
+ dec_preempt_count();
+
+ if (!ret) {
+ switch (cmp) {
+ case FUTEX_OP_CMP_EQ: ret = (oldval == cmparg); break;
+ case FUTEX_OP_CMP_NE: ret = (oldval != cmparg); break;
+ case FUTEX_OP_CMP_LT: ret = (oldval < cmparg); break;
+ case FUTEX_OP_CMP_GE: ret = (oldval >= cmparg); break;
+ case FUTEX_OP_CMP_LE: ret = (oldval <= cmparg); break;
+ case FUTEX_OP_CMP_GT: ret = (oldval > cmparg); break;
+ default: ret = -ENOSYS;
+ }
+ }
+ return ret;
+}
+
+#endif
+#endif
--- linux-2.6.12/include/asm-h8300/futex.h.jj 2005-08-23 11:13:38.000000000 +0200
+++ linux-2.6.12/include/asm-h8300/futex.h 2005-08-23 11:17:25.000000000 +0200
@@ -0,0 +1,53 @@
+#ifndef _ASM_FUTEX_H
+#define _ASM_FUTEX_H
+
+#ifdef __KERNEL__
+
+#include <linux/futex.h>
+#include <asm/errno.h>
+#include <asm/uaccess.h>
+
+static inline int
+futex_atomic_op_inuser (int encoded_op, int __user *uaddr)
+{
+ int op = (encoded_op >> 28) & 7;
+ int cmp = (encoded_op >> 24) & 15;
+ int oparg = (encoded_op << 8) >> 20;
+ int cmparg = (encoded_op << 20) >> 20;
+ int oldval = 0, ret, tem;
+ if (encoded_op & (FUTEX_OP_OPARG_SHIFT << 28))
+ oparg = 1 << oparg;
+
+ if (! access_ok (VERIFY_WRITE, uaddr, sizeof(int)))
+ return -EFAULT;
+
+ inc_preempt_count();
+
+ switch (op) {
+ case FUTEX_OP_SET:
+ case FUTEX_OP_ADD:
+ case FUTEX_OP_OR:
+ case FUTEX_OP_ANDN:
+ case FUTEX_OP_XOR:
+ default:
+ ret = -ENOSYS;
+ }
+
+ dec_preempt_count();
+
+ if (!ret) {
+ switch (cmp) {
+ case FUTEX_OP_CMP_EQ: ret = (oldval == cmparg); break;
+ case FUTEX_OP_CMP_NE: ret = (oldval != cmparg); break;
+ case FUTEX_OP_CMP_LT: ret = (oldval < cmparg); break;
+ case FUTEX_OP_CMP_GE: ret = (oldval >= cmparg); break;
+ case FUTEX_OP_CMP_LE: ret = (oldval <= cmparg); break;
+ case FUTEX_OP_CMP_GT: ret = (oldval > cmparg); break;
+ default: ret = -ENOSYS;
+ }
+ }
+ return ret;
+}
+
+#endif
+#endif
--- linux-2.6.12/include/asm-ia64/futex.h.jj 2005-08-23 11:13:38.000000000 +0200
+++ linux-2.6.12/include/asm-ia64/futex.h 2005-08-23 11:17:25.000000000 +0200
@@ -0,0 +1,53 @@
+#ifndef _ASM_FUTEX_H
+#define _ASM_FUTEX_H
+
+#ifdef __KERNEL__
+
+#include <linux/futex.h>
+#include <asm/errno.h>
+#include <asm/uaccess.h>
+
+static inline int
+futex_atomic_op_inuser (int encoded_op, int __user *uaddr)
+{
+ int op = (encoded_op >> 28) & 7;
+ int cmp = (encoded_op >> 24) & 15;
+ int oparg = (encoded_op << 8) >> 20;
+ int cmparg = (encoded_op << 20) >> 20;
+ int oldval = 0, ret, tem;
+ if (encoded_op & (FUTEX_OP_OPARG_SHIFT << 28))
+ oparg = 1 << oparg;
+
+ if (! access_ok (VERIFY_WRITE, uaddr, sizeof(int)))
+ return -EFAULT;
+
+ inc_preempt_count();
+
+ switch (op) {
+ case FUTEX_OP_SET:
+ case FUTEX_OP_ADD:
+ case FUTEX_OP_OR:
+ case FUTEX_OP_ANDN:
+ case FUTEX_OP_XOR:
+ default:
+ ret = -ENOSYS;
+ }
+
+ dec_preempt_count();
+
+ if (!ret) {
+ switch (cmp) {
+ case FUTEX_OP_CMP_EQ: ret = (oldval == cmparg); break;
+ case FUTEX_OP_CMP_NE: ret = (oldval != cmparg); break;
+ case FUTEX_OP_CMP_LT: ret = (oldval < cmparg); break;
+ case FUTEX_OP_CMP_GE: ret = (oldval >= cmparg); break;
+ case FUTEX_OP_CMP_LE: ret = (oldval <= cmparg); break;
+ case FUTEX_OP_CMP_GT: ret = (oldval > cmparg); break;
+ default: ret = -ENOSYS;
+ }
+ }
+ return ret;
+}
+
+#endif
+#endif
--- linux-2.6.12/include/asm-m32r/futex.h.jj 2005-08-23 11:13:38.000000000 +0200
+++ linux-2.6.12/include/asm-m32r/futex.h 2005-08-23 11:17:25.000000000 +0200
@@ -0,0 +1,53 @@
+#ifndef _ASM_FUTEX_H
+#define _ASM_FUTEX_H
+
+#ifdef __KERNEL__
+
+#include <linux/futex.h>
+#include <asm/errno.h>
+#include <asm/uaccess.h>
+
+static inline int
+futex_atomic_op_inuser (int encoded_op, int __user *uaddr)
+{
+ int op = (encoded_op >> 28) & 7;
+ int cmp = (encoded_op >> 24) & 15;
+ int oparg = (encoded_op << 8) >> 20;
+ int cmparg = (encoded_op << 20) >> 20;
+ int oldval = 0, ret, tem;
+ if (encoded_op & (FUTEX_OP_OPARG_SHIFT << 28))
+ oparg = 1 << oparg;
+
+ if (! access_ok (VERIFY_WRITE, uaddr, sizeof(int)))
+ return -EFAULT;
+
+ inc_preempt_count();
+
+ switch (op) {
+ case FUTEX_OP_SET:
+ case FUTEX_OP_ADD:
+ case FUTEX_OP_OR:
+ case FUTEX_OP_ANDN:
+ case FUTEX_OP_XOR:
+ default:
+ ret = -ENOSYS;
+ }
+
+ dec_preempt_count();
+
+ if (!ret) {
+ switch (cmp) {
+ case FUTEX_OP_CMP_EQ: ret = (oldval == cmparg); break;
+ case FUTEX_OP_CMP_NE: ret = (oldval != cmparg); break;
+ case FUTEX_OP_CMP_LT: ret = (oldval < cmparg); break;
+ case FUTEX_OP_CMP_GE: ret = (oldval >= cmparg); break;
+ case FUTEX_OP_CMP_LE: ret = (oldval <= cmparg); break;
+ case FUTEX_OP_CMP_GT: ret = (oldval > cmparg); break;
+ default: ret = -ENOSYS;
+ }
+ }
+ return ret;
+}
+
+#endif
+#endif
--- linux-2.6.12/include/asm-m68k/futex.h.jj 2005-08-23 11:13:38.000000000 +0200
+++ linux-2.6.12/include/asm-m68k/futex.h 2005-08-23 11:17:25.000000000 +0200
@@ -0,0 +1,53 @@
+#ifndef _ASM_FUTEX_H
+#define _ASM_FUTEX_H
+
+#ifdef __KERNEL__
+
+#include <linux/futex.h>
+#include <asm/errno.h>
+#include <asm/uaccess.h>
+
+static inline int
+futex_atomic_op_inuser (int encoded_op, int __user *uaddr)
+{
+ int op = (encoded_op >> 28) & 7;
+ int cmp = (encoded_op >> 24) & 15;
+ int oparg = (encoded_op << 8) >> 20;
+ int cmparg = (encoded_op << 20) >> 20;
+ int oldval = 0, ret, tem;
+ if (encoded_op & (FUTEX_OP_OPARG_SHIFT << 28))
+ oparg = 1 << oparg;
+
+ if (! access_ok (VERIFY_WRITE, uaddr, sizeof(int)))
+ return -EFAULT;
+
+ inc_preempt_count();
+
+ switch (op) {
+ case FUTEX_OP_SET:
+ case FUTEX_OP_ADD:
+ case FUTEX_OP_OR:
+ case FUTEX_OP_ANDN:
+ case FUTEX_OP_XOR:
+ default:
+ ret = -ENOSYS;
+ }
+
+ dec_preempt_count();
+
+ if (!ret) {
+ switch (cmp) {
+ case FUTEX_OP_CMP_EQ: ret = (oldval == cmparg); break;
+ case FUTEX_OP_CMP_NE: ret = (oldval != cmparg); break;
+ case FUTEX_OP_CMP_LT: ret = (oldval < cmparg); break;
+ case FUTEX_OP_CMP_GE: ret = (oldval >= cmparg); break;
+ case FUTEX_OP_CMP_LE: ret = (oldval <= cmparg); break;
+ case FUTEX_OP_CMP_GT: ret = (oldval > cmparg); break;
+ default: ret = -ENOSYS;
+ }
+ }
+ return ret;
+}
+
+#endif
+#endif
--- linux-2.6.12/include/asm-m68knommu/futex.h.jj 2005-08-23 11:13:38.000000000 +0200
+++ linux-2.6.12/include/asm-m68knommu/futex.h 2005-08-23 11:17:25.000000000 +0200
@@ -0,0 +1,53 @@
+#ifndef _ASM_FUTEX_H
+#define _ASM_FUTEX_H
+
+#ifdef __KERNEL__
+
+#include <linux/futex.h>
+#include <asm/errno.h>
+#include <asm/uaccess.h>
+
+static inline int
+futex_atomic_op_inuser (int encoded_op, int __user *uaddr)
+{
+ int op = (encoded_op >> 28) & 7;
+ int cmp = (encoded_op >> 24) & 15;
+ int oparg = (encoded_op << 8) >> 20;
+ int cmparg = (encoded_op << 20) >> 20;
+ int oldval = 0, ret, tem;
+ if (encoded_op & (FUTEX_OP_OPARG_SHIFT << 28))
+ oparg = 1 << oparg;
+
+ if (! access_ok (VERIFY_WRITE, uaddr, sizeof(int)))
+ return -EFAULT;
+
+ inc_preempt_count();
+
+ switch (op) {
+ case FUTEX_OP_SET:
+ case FUTEX_OP_ADD:
+ case FUTEX_OP_OR:
+ case FUTEX_OP_ANDN:
+ case FUTEX_OP_XOR:
+ default:
+ ret = -ENOSYS;
+ }
+
+ dec_preempt_count();
+
+ if (!ret) {
+ switch (cmp) {
+ case FUTEX_OP_CMP_EQ: ret = (oldval == cmparg); break;
+ case FUTEX_OP_CMP_NE: ret = (oldval != cmparg); break;
+ case FUTEX_OP_CMP_LT: ret = (oldval < cmparg); break;
+ case FUTEX_OP_CMP_GE: ret = (oldval >= cmparg); break;
+ case FUTEX_OP_CMP_LE: ret = (oldval <= cmparg); break;
+ case FUTEX_OP_CMP_GT: ret = (oldval > cmparg); break;
+ default: ret = -ENOSYS;
+ }
+ }
+ return ret;
+}
+
+#endif
+#endif
--- linux-2.6.12/include/asm-mips/futex.h.jj 2005-08-23 11:13:38.000000000 +0200
+++ linux-2.6.12/include/asm-mips/futex.h 2005-08-23 11:17:25.000000000 +0200
@@ -0,0 +1,53 @@
+#ifndef _ASM_FUTEX_H
+#define _ASM_FUTEX_H
+
+#ifdef __KERNEL__
+
+#include <linux/futex.h>
+#include <asm/errno.h>
+#include <asm/uaccess.h>
+
+static inline int
+futex_atomic_op_inuser (int encoded_op, int __user *uaddr)
+{
+ int op = (encoded_op >> 28) & 7;
+ int cmp = (encoded_op >> 24) & 15;
+ int oparg = (encoded_op << 8) >> 20;
+ int cmparg = (encoded_op << 20) >> 20;
+ int oldval = 0, ret, tem;
+ if (encoded_op & (FUTEX_OP_OPARG_SHIFT << 28))
+ oparg = 1 << oparg;
+
+ if (! access_ok (VERIFY_WRITE, uaddr, sizeof(int)))
+ return -EFAULT;
+
+ inc_preempt_count();
+
+ switch (op) {
+ case FUTEX_OP_SET:
+ case FUTEX_OP_ADD:
+ case FUTEX_OP_OR:
+ case FUTEX_OP_ANDN:
+ case FUTEX_OP_XOR:
+ default:
+ ret = -ENOSYS;
+ }
+
+ dec_preempt_count();
+
+ if (!ret) {
+ switch (cmp) {
+ case FUTEX_OP_CMP_EQ: ret = (oldval == cmparg); break;
+ case FUTEX_OP_CMP_NE: ret = (oldval != cmparg); break;
+ case FUTEX_OP_CMP_LT: ret = (oldval < cmparg); break;
+ case FUTEX_OP_CMP_GE: ret = (oldval >= cmparg); break;
+ case FUTEX_OP_CMP_LE: ret = (oldval <= cmparg); break;
+ case FUTEX_OP_CMP_GT: ret = (oldval > cmparg); break;
+ default: ret = -ENOSYS;
+ }
+ }
+ return ret;
+}
+
+#endif
+#endif
--- linux-2.6.12/include/asm-parisc/futex.h.jj 2005-08-23 11:13:38.000000000 +0200
+++ linux-2.6.12/include/asm-parisc/futex.h 2005-08-23 11:17:25.000000000 +0200
@@ -0,0 +1,53 @@
+#ifndef _ASM_FUTEX_H
+#define _ASM_FUTEX_H
+
+#ifdef __KERNEL__
+
+#include <linux/futex.h>
+#include <asm/errno.h>
+#include <asm/uaccess.h>
+
+static inline int
+futex_atomic_op_inuser (int encoded_op, int __user *uaddr)
+{
+ int op = (encoded_op >> 28) & 7;
+ int cmp = (encoded_op >> 24) & 15;
+ int oparg = (encoded_op << 8) >> 20;
+ int cmparg = (encoded_op << 20) >> 20;
+ int oldval = 0, ret, tem;
+ if (encoded_op & (FUTEX_OP_OPARG_SHIFT << 28))
+ oparg = 1 << oparg;
+
+ if (! access_ok (VERIFY_WRITE, uaddr, sizeof(int)))
+ return -EFAULT;
+
+ inc_preempt_count();
+
+ switch (op) {
+ case FUTEX_OP_SET:
+ case FUTEX_OP_ADD:
+ case FUTEX_OP_OR:
+ case FUTEX_OP_ANDN:
+ case FUTEX_OP_XOR:
+ default:
+ ret = -ENOSYS;
+ }
+
+ dec_preempt_count();
+
+ if (!ret) {
+ switch (cmp) {
+ case FUTEX_OP_CMP_EQ: ret = (oldval == cmparg); break;
+ case FUTEX_OP_CMP_NE: ret = (oldval != cmparg); break;
+ case FUTEX_OP_CMP_LT: ret = (oldval < cmparg); break;
+ case FUTEX_OP_CMP_GE: ret = (oldval >= cmparg); break;
+ case FUTEX_OP_CMP_LE: ret = (oldval <= cmparg); break;
+ case FUTEX_OP_CMP_GT: ret = (oldval > cmparg); break;
+ default: ret = -ENOSYS;
+ }
+ }
+ return ret;
+}
+
+#endif
+#endif
--- linux-2.6.12/include/asm-ppc/futex.h.jj 2005-08-23 11:13:38.000000000 +0200
+++ linux-2.6.12/include/asm-ppc/futex.h 2005-08-23 11:17:25.000000000 +0200
@@ -0,0 +1,53 @@
+#ifndef _ASM_FUTEX_H
+#define _ASM_FUTEX_H
+
+#ifdef __KERNEL__
+
+#include <linux/futex.h>
+#include <asm/errno.h>
+#include <asm/uaccess.h>
+
+static inline int
+futex_atomic_op_inuser (int encoded_op, int __user *uaddr)
+{
+ int op = (encoded_op >> 28) & 7;
+ int cmp = (encoded_op >> 24) & 15;
+ int oparg = (encoded_op << 8) >> 20;
+ int cmparg = (encoded_op << 20) >> 20;
+ int oldval = 0, ret, tem;
+ if (encoded_op & (FUTEX_OP_OPARG_SHIFT << 28))
+ oparg = 1 << oparg;
+
+ if (! access_ok (VERIFY_WRITE, uaddr, sizeof(int)))
+ return -EFAULT;
+
+ inc_preempt_count();
+
+ switch (op) {
+ case FUTEX_OP_SET:
+ case FUTEX_OP_ADD:
+ case FUTEX_OP_OR:
+ case FUTEX_OP_ANDN:
+ case FUTEX_OP_XOR:
+ default:
+ ret = -ENOSYS;
+ }
+
+ dec_preempt_count();
+
+ if (!ret) {
+ switch (cmp) {
+ case FUTEX_OP_CMP_EQ: ret = (oldval == cmparg); break;
+ case FUTEX_OP_CMP_NE: ret = (oldval != cmparg); break;
+ case FUTEX_OP_CMP_LT: ret = (oldval < cmparg); break;
+ case FUTEX_OP_CMP_GE: ret = (oldval >= cmparg); break;
+ case FUTEX_OP_CMP_LE: ret = (oldval <= cmparg); break;
+ case FUTEX_OP_CMP_GT: ret = (oldval > cmparg); break;
+ default: ret = -ENOSYS;
+ }
+ }
+ return ret;
+}
+
+#endif
+#endif
--- linux-2.6.12/include/asm-s390/futex.h.jj 2005-08-23 11:13:38.000000000 +0200
+++ linux-2.6.12/include/asm-s390/futex.h 2005-08-23 11:17:25.000000000 +0200
@@ -0,0 +1,53 @@
+#ifndef _ASM_FUTEX_H
+#define _ASM_FUTEX_H
+
+#ifdef __KERNEL__
+
+#include <linux/futex.h>
+#include <asm/errno.h>
+#include <asm/uaccess.h>
+
+static inline int
+futex_atomic_op_inuser (int encoded_op, int __user *uaddr)
+{
+ int op = (encoded_op >> 28) & 7;
+ int cmp = (encoded_op >> 24) & 15;
+ int oparg = (encoded_op << 8) >> 20;
+ int cmparg = (encoded_op << 20) >> 20;
+ int oldval = 0, ret, tem;
+ if (encoded_op & (FUTEX_OP_OPARG_SHIFT << 28))
+ oparg = 1 << oparg;
+
+ if (! access_ok (VERIFY_WRITE, uaddr, sizeof(int)))
+ return -EFAULT;
+
+ inc_preempt_count();
+
+ switch (op) {
+ case FUTEX_OP_SET:
+ case FUTEX_OP_ADD:
+ case FUTEX_OP_OR:
+ case FUTEX_OP_ANDN:
+ case FUTEX_OP_XOR:
+ default:
+ ret = -ENOSYS;
+ }
+
+ dec_preempt_count();
+
+ if (!ret) {
+ switch (cmp) {
+ case FUTEX_OP_CMP_EQ: ret = (oldval == cmparg); break;
+ case FUTEX_OP_CMP_NE: ret = (oldval != cmparg); break;
+ case FUTEX_OP_CMP_LT: ret = (oldval < cmparg); break;
+ case FUTEX_OP_CMP_GE: ret = (oldval >= cmparg); break;
+ case FUTEX_OP_CMP_LE: ret = (oldval <= cmparg); break;
+ case FUTEX_OP_CMP_GT: ret = (oldval > cmparg); break;
+ default: ret = -ENOSYS;
+ }
+ }
+ return ret;
+}
+
+#endif
+#endif
--- linux-2.6.12/include/asm-sh/futex.h.jj 2005-08-23 11:13:38.000000000 +0200
+++ linux-2.6.12/include/asm-sh/futex.h 2005-08-23 11:17:25.000000000 +0200
@@ -0,0 +1,53 @@
+#ifndef _ASM_FUTEX_H
+#define _ASM_FUTEX_H
+
+#ifdef __KERNEL__
+
+#include <linux/futex.h>
+#include <asm/errno.h>
+#include <asm/uaccess.h>
+
+static inline int
+futex_atomic_op_inuser (int encoded_op, int __user *uaddr)
+{
+ int op = (encoded_op >> 28) & 7;
+ int cmp = (encoded_op >> 24) & 15;
+ int oparg = (encoded_op << 8) >> 20;
+ int cmparg = (encoded_op << 20) >> 20;
+ int oldval = 0, ret, tem;
+ if (encoded_op & (FUTEX_OP_OPARG_SHIFT << 28))
+ oparg = 1 << oparg;
+
+ if (! access_ok (VERIFY_WRITE, uaddr, sizeof(int)))
+ return -EFAULT;
+
+ inc_preempt_count();
+
+ switch (op) {
+ case FUTEX_OP_SET:
+ case FUTEX_OP_ADD:
+ case FUTEX_OP_OR:
+ case FUTEX_OP_ANDN:
+ case FUTEX_OP_XOR:
+ default:
+ ret = -ENOSYS;
+ }
+
+ dec_preempt_count();
+
+ if (!ret) {
+ switch (cmp) {
+ case FUTEX_OP_CMP_EQ: ret = (oldval == cmparg); break;
+ case FUTEX_OP_CMP_NE: ret = (oldval != cmparg); break;
+ case FUTEX_OP_CMP_LT: ret = (oldval < cmparg); break;
+ case FUTEX_OP_CMP_GE: ret = (oldval >= cmparg); break;
+ case FUTEX_OP_CMP_LE: ret = (oldval <= cmparg); break;
+ case FUTEX_OP_CMP_GT: ret = (oldval > cmparg); break;
+ default: ret = -ENOSYS;
+ }
+ }
+ return ret;
+}
+
+#endif
+#endif
--- linux-2.6.12/include/asm-sh64/futex.h.jj 2005-08-23 11:13:38.000000000 +0200
+++ linux-2.6.12/include/asm-sh64/futex.h 2005-08-23 11:17:25.000000000 +0200
@@ -0,0 +1,53 @@
+#ifndef _ASM_FUTEX_H
+#define _ASM_FUTEX_H
+
+#ifdef __KERNEL__
+
+#include <linux/futex.h>
+#include <asm/errno.h>
+#include <asm/uaccess.h>
+
+static inline int
+futex_atomic_op_inuser (int encoded_op, int __user *uaddr)
+{
+ int op = (encoded_op >> 28) & 7;
+ int cmp = (encoded_op >> 24) & 15;
+ int oparg = (encoded_op << 8) >> 20;
+ int cmparg = (encoded_op << 20) >> 20;
+ int oldval = 0, ret, tem;
+ if (encoded_op & (FUTEX_OP_OPARG_SHIFT << 28))
+ oparg = 1 << oparg;
+
+ if (! access_ok (VERIFY_WRITE, uaddr, sizeof(int)))
+ return -EFAULT;
+
+ inc_preempt_count();
+
+ switch (op) {
+ case FUTEX_OP_SET:
+ case FUTEX_OP_ADD:
+ case FUTEX_OP_OR:
+ case FUTEX_OP_ANDN:
+ case FUTEX_OP_XOR:
+ default:
+ ret = -ENOSYS;
+ }
+
+ dec_preempt_count();
+
+ if (!ret) {
+ switch (cmp) {
+ case FUTEX_OP_CMP_EQ: ret = (oldval == cmparg); break;
+ case FUTEX_OP_CMP_NE: ret = (oldval != cmparg); break;
+ case FUTEX_OP_CMP_LT: ret = (oldval < cmparg); break;
+ case FUTEX_OP_CMP_GE: ret = (oldval >= cmparg); break;
+ case FUTEX_OP_CMP_LE: ret = (oldval <= cmparg); break;
+ case FUTEX_OP_CMP_GT: ret = (oldval > cmparg); break;
+ default: ret = -ENOSYS;
+ }
+ }
+ return ret;
+}
+
+#endif
+#endif
--- linux-2.6.12/include/asm-sparc/futex.h.jj 2005-08-23 11:13:38.000000000 +0200
+++ linux-2.6.12/include/asm-sparc/futex.h 2005-08-23 11:17:25.000000000 +0200
@@ -0,0 +1,53 @@
+#ifndef _ASM_FUTEX_H
+#define _ASM_FUTEX_H
+
+#ifdef __KERNEL__
+
+#include <linux/futex.h>
+#include <asm/errno.h>
+#include <asm/uaccess.h>
+
+static inline int
+futex_atomic_op_inuser (int encoded_op, int __user *uaddr)
+{
+ int op = (encoded_op >> 28) & 7;
+ int cmp = (encoded_op >> 24) & 15;
+ int oparg = (encoded_op << 8) >> 20;
+ int cmparg = (encoded_op << 20) >> 20;
+ int oldval = 0, ret, tem;
+ if (encoded_op & (FUTEX_OP_OPARG_SHIFT << 28))
+ oparg = 1 << oparg;
+
+ if (! access_ok (VERIFY_WRITE, uaddr, sizeof(int)))
+ return -EFAULT;
+
+ inc_preempt_count();
+
+ switch (op) {
+ case FUTEX_OP_SET:
+ case FUTEX_OP_ADD:
+ case FUTEX_OP_OR:
+ case FUTEX_OP_ANDN:
+ case FUTEX_OP_XOR:
+ default:
+ ret = -ENOSYS;
+ }
+
+ dec_preempt_count();
+
+ if (!ret) {
+ switch (cmp) {
+ case FUTEX_OP_CMP_EQ: ret = (oldval == cmparg); break;
+ case FUTEX_OP_CMP_NE: ret = (oldval != cmparg); break;
+ case FUTEX_OP_CMP_LT: ret = (oldval < cmparg); break;
+ case FUTEX_OP_CMP_GE: ret = (oldval >= cmparg); break;
+ case FUTEX_OP_CMP_LE: ret = (oldval <= cmparg); break;
+ case FUTEX_OP_CMP_GT: ret = (oldval > cmparg); break;
+ default: ret = -ENOSYS;
+ }
+ }
+ return ret;
+}
+
+#endif
+#endif
--- linux-2.6.12/include/asm-sparc64/futex.h.jj 2005-08-23 11:13:38.000000000 +0200
+++ linux-2.6.12/include/asm-sparc64/futex.h 2005-08-23 11:17:25.000000000 +0200
@@ -0,0 +1,53 @@
+#ifndef _ASM_FUTEX_H
+#define _ASM_FUTEX_H
+
+#ifdef __KERNEL__
+
+#include <linux/futex.h>
+#include <asm/errno.h>
+#include <asm/uaccess.h>
+
+static inline int
+futex_atomic_op_inuser (int encoded_op, int __user *uaddr)
+{
+ int op = (encoded_op >> 28) & 7;
+ int cmp = (encoded_op >> 24) & 15;
+ int oparg = (encoded_op << 8) >> 20;
+ int cmparg = (encoded_op << 20) >> 20;
+ int oldval = 0, ret, tem;
+ if (encoded_op & (FUTEX_OP_OPARG_SHIFT << 28))
+ oparg = 1 << oparg;
+
+ if (! access_ok (VERIFY_WRITE, uaddr, sizeof(int)))
+ return -EFAULT;
+
+ inc_preempt_count();
+
+ switch (op) {
+ case FUTEX_OP_SET:
+ case FUTEX_OP_ADD:
+ case FUTEX_OP_OR:
+ case FUTEX_OP_ANDN:
+ case FUTEX_OP_XOR:
+ default:
+ ret = -ENOSYS;
+ }
+
+ dec_preempt_count();
+
+ if (!ret) {
+ switch (cmp) {
+ case FUTEX_OP_CMP_EQ: ret = (oldval == cmparg); break;
+ case FUTEX_OP_CMP_NE: ret = (oldval != cmparg); break;
+ case FUTEX_OP_CMP_LT: ret = (oldval < cmparg); break;
+ case FUTEX_OP_CMP_GE: ret = (oldval >= cmparg); break;
+ case FUTEX_OP_CMP_LE: ret = (oldval <= cmparg); break;
+ case FUTEX_OP_CMP_GT: ret = (oldval > cmparg); break;
+ default: ret = -ENOSYS;
+ }
+ }
+ return ret;
+}
+
+#endif
+#endif
--- linux-2.6.12/include/asm-um/futex.h.jj 2005-08-23 11:13:38.000000000 +0200
+++ linux-2.6.12/include/asm-um/futex.h 2005-08-23 11:17:25.000000000 +0200
@@ -0,0 +1,53 @@
+#ifndef _ASM_FUTEX_H
+#define _ASM_FUTEX_H
+
+#ifdef __KERNEL__
+
+#include <linux/futex.h>
+#include <asm/errno.h>
+#include <asm/uaccess.h>
+
+static inline int
+futex_atomic_op_inuser (int encoded_op, int __user *uaddr)
+{
+ int op = (encoded_op >> 28) & 7;
+ int cmp = (encoded_op >> 24) & 15;
+ int oparg = (encoded_op << 8) >> 20;
+ int cmparg = (encoded_op << 20) >> 20;
+ int oldval = 0, ret, tem;
+ if (encoded_op & (FUTEX_OP_OPARG_SHIFT << 28))
+ oparg = 1 << oparg;
+
+ if (! access_ok (VERIFY_WRITE, uaddr, sizeof(int)))
+ return -EFAULT;
+
+ inc_preempt_count();
+
+ switch (op) {
+ case FUTEX_OP_SET:
+ case FUTEX_OP_ADD:
+ case FUTEX_OP_OR:
+ case FUTEX_OP_ANDN:
+ case FUTEX_OP_XOR:
+ default:
+ ret = -ENOSYS;
+ }
+
+ dec_preempt_count();
+
+ if (!ret) {
+ switch (cmp) {
+ case FUTEX_OP_CMP_EQ: ret = (oldval == cmparg); break;
+ case FUTEX_OP_CMP_NE: ret = (oldval != cmparg); break;
+ case FUTEX_OP_CMP_LT: ret = (oldval < cmparg); break;
+ case FUTEX_OP_CMP_GE: ret = (oldval >= cmparg); break;
+ case FUTEX_OP_CMP_LE: ret = (oldval <= cmparg); break;
+ case FUTEX_OP_CMP_GT: ret = (oldval > cmparg); break;
+ default: ret = -ENOSYS;
+ }
+ }
+ return ret;
+}
+
+#endif
+#endif
--- linux-2.6.12/include/asm-v850/futex.h.jj 2005-08-23 11:13:38.000000000 +0200
+++ linux-2.6.12/include/asm-v850/futex.h 2005-08-23 11:17:25.000000000 +0200
@@ -0,0 +1,53 @@
+#ifndef _ASM_FUTEX_H
+#define _ASM_FUTEX_H
+
+#ifdef __KERNEL__
+
+#include <linux/futex.h>
+#include <asm/errno.h>
+#include <asm/uaccess.h>
+
+static inline int
+futex_atomic_op_inuser (int encoded_op, int __user *uaddr)
+{
+ int op = (encoded_op >> 28) & 7;
+ int cmp = (encoded_op >> 24) & 15;
+ int oparg = (encoded_op << 8) >> 20;
+ int cmparg = (encoded_op << 20) >> 20;
+ int oldval = 0, ret, tem;
+ if (encoded_op & (FUTEX_OP_OPARG_SHIFT << 28))
+ oparg = 1 << oparg;
+
+ if (! access_ok (VERIFY_WRITE, uaddr, sizeof(int)))
+ return -EFAULT;
+
+ inc_preempt_count();
+
+ switch (op) {
+ case FUTEX_OP_SET:
+ case FUTEX_OP_ADD:
+ case FUTEX_OP_OR:
+ case FUTEX_OP_ANDN:
+ case FUTEX_OP_XOR:
+ default:
+ ret = -ENOSYS;
+ }
+
+ dec_preempt_count();
+
+ if (!ret) {
+ switch (cmp) {
+ case FUTEX_OP_CMP_EQ: ret = (oldval == cmparg); break;
+ case FUTEX_OP_CMP_NE: ret = (oldval != cmparg); break;
+ case FUTEX_OP_CMP_LT: ret = (oldval < cmparg); break;
+ case FUTEX_OP_CMP_GE: ret = (oldval >= cmparg); break;
+ case FUTEX_OP_CMP_LE: ret = (oldval <= cmparg); break;
+ case FUTEX_OP_CMP_GT: ret = (oldval > cmparg); break;
+ default: ret = -ENOSYS;
+ }
+ }
+ return ret;
+}
+
+#endif
+#endif
linux-2.6-ide-netcell.patch:
drivers/ide/pci/generic.c | 9 ++++++++-
drivers/ide/setup-pci.c | 1 +
drivers/pci/pci.ids | 2 +-
include/linux/pci_ids.h | 3 +++
4 files changed, 13 insertions(+), 2 deletions(-)
--- NEW FILE linux-2.6-ide-netcell.patch ---
diff -purN linux-2.6.13-rc3-git5/drivers/ide/pci/generic.c linux/drivers/ide/pci/generic.c
--- linux-2.6.13-rc3-git5/drivers/ide/pci/generic.c 2005-07-26 10:50:31.000000000 -0700
+++ linux/drivers/ide/pci/generic.c 2005-07-26 11:37:51.000000000 -0700
@@ -173,7 +173,13 @@ static ide_pci_device_t generic_chipsets
.channels = 2,
.autodma = NOAUTODMA,
.bootable = ON_BOARD,
- }
+ },{ /* 14 */
+ .name = "Revolution",
+ .init_hwif = init_hwif_generic,
+ .channels = 2,
+ .autodma = AUTODMA,
+ .bootable = OFF_BOARD,
+ }
};
/**
@@ -231,6 +237,7 @@ static struct pci_device_id generic_pci_
{ PCI_VENDOR_ID_TOSHIBA,PCI_DEVICE_ID_TOSHIBA_PICCOLO, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 11},
{ PCI_VENDOR_ID_TOSHIBA,PCI_DEVICE_ID_TOSHIBA_PICCOLO_1, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 12},
{ PCI_VENDOR_ID_TOSHIBA,PCI_DEVICE_ID_TOSHIBA_PICCOLO_2, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 13},
+ { PCI_VENDOR_ID_NETCELL,PCI_DEVICE_ID_REVOLUTION, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 14},
/* Must come last. If you add entries adjust this table appropriately and the init_one code */
{ PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, PCI_CLASS_STORAGE_IDE << 8, 0xFFFFFF00UL, 0},
{ 0, },
diff -purN linux-2.6.13-rc3-git5/drivers/ide/setup-pci.c linux/drivers/ide/setup-pci.c
--- linux-2.6.13-rc3-git5/drivers/ide/setup-pci.c 2005-07-26 10:50:31.000000000 -0700
+++ linux/drivers/ide/setup-pci.c 2005-07-26 11:37:51.000000000 -0700
@@ -229,6 +229,7 @@ second_chance_to_dma:
case PCI_DEVICE_ID_AMD_VIPER_7409:
case PCI_DEVICE_ID_CMD_643:
case PCI_DEVICE_ID_SERVERWORKS_CSB5IDE:
+ case PCI_DEVICE_ID_REVOLUTION:
simplex_stat = hwif->INB(dma_base + 2);
hwif->OUTB((simplex_stat&0x60),(dma_base + 2));
simplex_stat = hwif->INB(dma_base + 2);
diff -purN linux-2.6.13-rc3-git5/drivers/pci/pci.ids linux/drivers/pci/pci.ids
--- linux-2.6.13-rc3-git5/drivers/pci/pci.ids 2005-07-26 10:50:01.000000000 -0700
+++ linux/drivers/pci/pci.ids 2005-07-26 11:37:52.000000000 -0700
@@ -7982,7 +7982,7 @@
168c 2042 Netgate 5354MP Plus ARIES2 a/b/g MiniPCI Adapter
1014 AR5212 802.11abg NIC
169c Netcell Corporation
- 0044 SyncRAID SR3000/5000 Series SATA RAID Controllers
+ 0044 Revolution Storage Processing Card
16a5 Tekram Technology Co.,Ltd.
16ab Global Sun Technology Inc
1100 GL24110P
diff -purN linux-2.6.13-rc3-git5/include/linux/pci_ids.h linux/include/linux/pci_ids.h
--- linux-2.6.13-rc3-git5/include/linux/pci_ids.h 2005-07-26 10:49:27.000000000 -0700
+++ linux/include/linux/pci_ids.h 2005-07-26 11:37:52.000000000 -0700
@@ -2170,6 +2170,9 @@
#define PCI_VENDOR_ID_SIBYTE 0x166d
#define PCI_DEVICE_ID_BCM1250_HT 0x0002
+#define PCI_VENDOR_ID_NETCELL 0x169c
+#define PCI_DEVICE_ID_REVOLUTION 0x0044
+
#define PCI_VENDOR_ID_LINKSYS 0x1737
#define PCI_DEVICE_ID_LINKSYS_EG1032 0x1032
#define PCI_DEVICE_ID_LINKSYS_EG1064 0x1064
linux-2.6-input-usblegacy.patch:
i8042.c | 4 +++-
1 files changed, 3 insertions(+), 1 deletion(-)
--- NEW FILE linux-2.6-input-usblegacy.patch ---
Some laptops seem to lose their touchpads.
This patch is currently an experiment to see if its
usb legacy that's causing the problem.
--- linux-2.6.12/drivers/input/serio/i8042.c~ 2005-08-28 17:17:55.000000000 -0400
+++ linux-2.6.12/drivers/input/serio/i8042.c 2005-08-28 17:19:42.000000000 -0400
@@ -576,8 +576,10 @@ static int __init i8042_check_mux(void)
/* Workaround for interference with USB Legacy emulation */
/* that causes a v10.12 MUX to be found. */
- if (mux_version == 0xAC)
+ if (mux_version == 0xAC) {
+ printk(KERN_INFO "i8042.c: MUX probe failed. USB legacy enabled in BIOS?\n");
return -1;
+ }
printk(KERN_INFO "i8042.c: Detected active multiplexing controller, rev %d.%d.\n",
(mux_version >> 4) & 0xf, mux_version & 0xf);
linux-2.6-max-symlinks.patch:
namei.h | 2 +-
1 files changed, 1 insertion(+), 1 deletion(-)
--- NEW FILE linux-2.6-max-symlinks.patch ---
Bump up the maximum nested amount of symlinks.
diff -urNp --exclude-from=/home/davej/.exclude linux-3022/include/linux/namei.h linux-10000/include/linux/namei.h
--- linux-3022/include/linux/namei.h
+++ linux-10000/include/linux/namei.h
@@ -10,7 +10,7 @@ struct open_intent {
int create_mode;
};
-enum { MAX_NESTED_LINKS = 5 };
+enum { MAX_NESTED_LINKS = 8 };
struct nameidata {
struct dentry *dentry;
linux-2.6-modules-ignore-whitespace.patch:
params.c | 8 ++++++--
1 files changed, 6 insertions(+), 2 deletions(-)
--- NEW FILE linux-2.6-modules-ignore-whitespace.patch ---
Name: Ignore trailing whitespace on kernel parameters correctly: Fixed version
Signed-off-by: Rusty Russell <rusty at rustcorp.com.au>
Dave Jones says:
... if the modprobe.conf has trailing whitespace, modules fail to load
with the following helpful message..
snd_intel8x0: Unknown parameter `'
Previous version truncated last argument.
Index: linux-2.6.13-rc6-git7-Module/kernel/params.c
===================================================================
--- linux-2.6.13-rc6-git7-Module.orig/kernel/params.c 2005-08-10 16:12:45.000000000 +1000
+++ linux-2.6.13-rc6-git7-Module/kernel/params.c 2005-08-16 14:31:16.000000000 +1000
@@ -80,8 +80,6 @@
int in_quote = 0, quoted = 0;
char *next;
- /* Chew any extra spaces */
- while (*args == ' ') args++;
if (*args == '"') {
args++;
in_quote = 1;
@@ -121,6 +119,9 @@
next = args + i + 1;
} else
next = args + i;
+
+ /* Chew up trailing spaces. */
+ while (*next == ' ') next++;
return next;
}
@@ -134,6 +135,9 @@
char *param, *val;
DEBUGP("Parsing ARGS: %s\n", args);
+
+ /* Chew leading spaces */
+ while (*args == ' ') args++;
while (*args) {
int ret;
linux-2.6-net-acenic-use-after-free.patch:
acenic.c | 2 +-
1 files changed, 1 insertion(+), 1 deletion(-)
--- NEW FILE linux-2.6-net-acenic-use-after-free.patch ---
reference after free
diff -urNp --exclude-from=/home/davej/.exclude linux-3022/drivers/net/acenic.c linux-10000/drivers/net/acenic.c
--- linux-3022/drivers/net/acenic.c
+++ linux-10000/drivers/net/acenic.c
@@ -443,7 +443,7 @@ MODULE_PARM_DESC(max_rx_desc, "AceNIC/3C
MODULE_PARM_DESC(tx_ratio, "AceNIC/3C985/GA620 ratio of NIC memory used for TX/RX descriptors (range 0-63)");
-static char version[] __devinitdata =
+static char version[] =
"acenic.c: v0.92 08/05/2002 Jes Sorensen, linux-acenic at SunSITE.dk\n"
" http://home.cern.ch/~jes/gige/acenic.html\n";
linux-2.6-net-sk98lin-vpd.patch:
skvpd.c.orig | 15 ++++++++++++++-
1 files changed, 14 insertions(+), 1 deletion(-)
--- NEW FILE linux-2.6-net-sk98lin-vpd.patch ---
https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=136158
--- 1/drivers/net/sk98lin/skvpd.c 2005-01-09 17:20:35.520678152 +0100
+++ 2/drivers/net/sk98lin/skvpd.c.orig 2005-01-09 17:20:08.812738376 +0100
@@ -502,7 +502,20 @@
/* checksum error */
SK_DBG_MSG(pAC, SK_DBGMOD_VPD, SK_DBGCAT_ERR | SK_DBGCAT_FATAL,
("VPD Checksum Error\n"));
- return(1);
+ /* 090105 - JaWi/Timo - Attempt to workaround the faulty VPD
+ * checksum of the FN95 mainboard. */
+ if ( ( ( unsigned char )pAC->vpd.vpd_buf[0x03] == 'Y' ) &&
+ ( ( unsigned char )pAC->vpd.vpd_buf[0x04] == 'u' ) &&
+ ( ( unsigned char )pAC->vpd.vpd_buf[0x05] == 'k' ) &&
+ ( ( unsigned char )pAC->vpd.vpd_buf[0x06] == 'o' ) &&
+ ( ( unsigned char )pAC->vpd.vpd_buf[0x07] == 'n' ) ) {
+ printk( "sk98lin: Yukon/FN95 board found?! "
+ "Ignoring faulty checksum (0x%x) ...\n", x );
+ }
+ else {
+ /* Other boards should fail on faulty checksums... */
+ return(1);
+ }
}
/* find and check the end tag of the RW area */
linux-2.6-obsolete-idescsi-warning.patch:
ide-scsi.c | 7 ++++++-
1 files changed, 6 insertions(+), 1 deletion(-)
--- NEW FILE linux-2.6-obsolete-idescsi-warning.patch ---
--- linux-2.6.11/drivers/scsi/ide-scsi.c~ 2005-03-22 19:21:13.000000000 -0500
+++ linux-2.6.11/drivers/scsi/ide-scsi.c 2005-03-22 19:21:51.000000000 -0500
@@ -764,6 +764,8 @@ static ide_driver_t idescsi_driver = {
.drives = LIST_HEAD_INIT(idescsi_driver.drives),
};
+static int ide_scsi_warned;
+
static int idescsi_ide_open(struct inode *inode, struct file *filp)
{
struct gendisk *disk = inode->i_bdev->bd_disk;
@@ -776,7 +778,10 @@ static int idescsi_ide_open(struct inode
drive = scsi->drive;
drive->usage++;
-
+ if (!ide_scsi_warned++) {
+ printk(KERN_WARNING "ide-scsi: Warning this device driver is only intended for specialist devices.\n");
+ printk(KERN_WARNING "ide-scsi: Do not use for cd burning, use /dev/hdX directly instead.\n");
+ }
return 0;
}
linux-2.6-obsolete-oss-warning.patch:
pcm_oss.c | 7 +++++++
1 files changed, 7 insertions(+)
--- NEW FILE linux-2.6-obsolete-oss-warning.patch ---
diff -urNp --exclude-from=/home/davej/.exclude linux-3022/sound/core/oss/pcm_oss.c linux-10000/sound/core/oss/pcm_oss.c
--- linux-3022/sound/core/oss/pcm_oss.c
+++ linux-10000/sound/core/oss/pcm_oss.c
@@ -1815,6 +1815,13 @@ static int snd_pcm_oss_open(struct inode
snd_pcm_oss_setup_t *psetup = NULL, *csetup = NULL;
int nonblock;
wait_queue_t wait;
+ static char printed_comm[16];
+
+ if (strncmp(printed_comm, current->comm, 16)) {
+ printk(KERN_DEBUG "application %s uses obsolete OSS audio interface\n",
+ current->comm);
+ memcpy(printed_comm, current->comm, 16);
+ }
snd_assert(cardnum >= 0 && cardnum < SNDRV_CARDS, return -ENXIO);
device = SNDRV_MINOR_OSS_DEVICE(minor) == SNDRV_MINOR_OSS_PCM1 ?
linux-2.6-optimise-for-size.patch:
Kconfig | 2 +-
1 files changed, 1 insertion(+), 1 deletion(-)
--- NEW FILE linux-2.6-optimise-for-size.patch ---
MAke this selectable without EMBEDDED
diff -urNp --exclude-from=/home/davej/.exclude linux-3022/init/Kconfig linux-10000/init/Kconfig
--- linux-3022/init/Kconfig
+++ linux-10000/init/Kconfig
@@ -291,7 +291,7 @@ config EPOLL
support for epoll family of system calls.
config CC_OPTIMIZE_FOR_SIZE
- bool "Optimize for size" if EMBEDDED
+ bool "Optimize for size"
default y if ARM || H8300
help
Enabling this option will pass "-Os" instead of "-O2" to gcc
linux-2.6-pcmcia-single-port-off-by-one.patch:
rsrc_nonstatic.c | 4 ++--
1 files changed, 2 insertions(+), 2 deletions(-)
--- NEW FILE linux-2.6-pcmcia-single-port-off-by-one.patch ---
Subject: [PATCH] pcmcia: allow one port excludes
From: Dominik Brodowski <linux at dominikbrodowski.net>
Date: 1127764542 +0200
Allow for excluding only one port in /etc/pcmcia/config.otps
Signed-off-by: Dominik Brodowski <linux at dominikbrodowski.net>
---
drivers/pcmcia/rsrc_nonstatic.c | 4 ++--
1 files changed, 2 insertions(+), 2 deletions(-)
e32c6eb822af30fe90f55b89e553e7a060cdda79
diff --git a/drivers/pcmcia/rsrc_nonstatic.c b/drivers/pcmcia/rsrc_nonstatic.c
--- a/drivers/pcmcia/rsrc_nonstatic.c
+++ b/drivers/pcmcia/rsrc_nonstatic.c
@@ -691,7 +691,7 @@ static int adjust_memory(struct pcmcia_s
unsigned long size = end - start + 1;
int ret = 0;
- if (end <= start)
+ if (end < start)
return -EINVAL;
down(&rsrc_sem);
@@ -724,7 +724,7 @@ static int adjust_io(struct pcmcia_socke
unsigned long size = end - start + 1;
int ret = 0;
- if (end <= start)
+ if (end < start)
return -EINVAL;
if (end > IO_SPACE_LIMIT)
linux-2.6-pwc-powerup-by-default.patch:
pwc-if.c | 6 ++++++
1 files changed, 6 insertions(+)
--- NEW FILE linux-2.6-pwc-powerup-by-default.patch ---
--- linux-2.6.13/drivers/usb/media/pwc/pwc-if.c~ 2005-09-28 18:59:49.000000000 -0400
+++ linux-2.6.13/drivers/usb/media/pwc/pwc-if.c 2005-09-28 19:09:08.000000000 -0400
@@ -1946,6 +1946,12 @@ static int usb_pwc_probe(struct usb_inte
if (hint < MAX_DEV_HINTS)
device_hint[hint].pdev = pdev;
+ if (!power_save) {
+ i = pwc_camera_power(pdev, 1);
+ if (i < 0)
+ Info("Failed to power up the camera! (%d)\n", i);
+ }
+
Trace(TRACE_PROBE, "probe() function returning struct at 0x%p.\n", pdev);
usb_set_intfdata (intf, pdev);
return 0;
linux-2.6-radeon-backlight.patch:
linux-2.6.11-rc4-tank/drivers/video/aty/radeon_base.c | 11
linux-2.6.11-rc4-tank/drivers/video/aty/radeon_pm.c | 299 +++++++++++++++++-
linux-2.6.12/drivers/video/aty/radeon_pm.c | 16
linux-2.6.13/drivers/video/aty/radeon_pm.c | 8
4 files changed, 333 insertions(+), 1 deletion(-)
--- NEW FILE linux-2.6-radeon-backlight.patch ---
--- linux-2.6.11-rc4-tank/drivers/video/aty/radeon_pm.c.tppm 2005-02-20 20:09:02.000000000 +0200
+++ linux-2.6.11-rc4-tank/drivers/video/aty/radeon_pm.c 2005-02-20 21:35:27.000000000 +0200
@@ -25,8 +25,274 @@
#include <asm/pmac_feature.h>
#endif
+/* For detecting supported PC laptops */
+#ifdef CONFIG_X86
+#include <linux/dmi.h>
+#endif
+
#include "ati_ids.h"
+#ifdef CONFIG_X86
+/* This array holds a list of supported PC laptops.
+ * Currently only few IBM models are tested.
+ * If you want to experiment, use dmidecode to find out
+ * vendor and product codes for Your laptop.
+ */
+static struct dmi_system_id __devinitdata radeonfb_dmi_table[] = {
+ {
+ /* Reported by George Avrunin <avrunin at math.umass.edu> */
+ .ident = "IBM ThinkPad T40 (2372-9CU)",
+ .matches = {
+ DMI_MATCH(DMI_SYS_VENDOR, "IBM"),
+ DMI_MATCH(DMI_PRODUCT_NAME, "23729CU"),
+ },
+ },
+ {
+ /* Reported by Pete Toscano <pete at verisignlabs.com> */
+ .ident = "IBM ThinkPad R40 (2722-B3G)",
+ .matches = {
+ DMI_MATCH(DMI_SYS_VENDOR, "IBM"),
+ DMI_MATCH(DMI_PRODUCT_NAME, "2722B3G"),
+ },
+ },
+ {
+ /* Reported by Phillip Jones <philljones at us.ibm.com> */
+ .ident = "IBM ThinkPad T30 (2366-MU9)",
+ .matches = {
+ DMI_MATCH(DMI_SYS_VENDOR, "IBM"),
+ DMI_MATCH(DMI_PRODUCT_NAME, "2366MU9"),
+ },
+ },
+ {
+ /* Reported by Klaus Kurzmann <mok at fluxnetz.de> */
+ .ident = "IBM ThinkPad T40 (2373-25G)",
+ .matches = {
+ DMI_MATCH(DMI_SYS_VENDOR, "IBM"),
+ DMI_MATCH(DMI_PRODUCT_NAME, "237325G"),
+ },
+ },
+ {
+ /* Reported by Antti Andreimann <Antti.Andreimann at mail.ee> */
+ .ident = "IBM ThinkPad T41 (2373-2FG)",
+ .matches = {
+ DMI_MATCH(DMI_SYS_VENDOR, "IBM"),
+ DMI_MATCH(DMI_PRODUCT_NAME, "23732FG"),
+ },
+ },
+ {
+ /* Reported by Antti P Miettinen <apm at brigitte.dna.fi> */
+ .ident = "IBM ThinkPad T40 (2373-4G2)",
+ .matches = {
+ DMI_MATCH(DMI_SYS_VENDOR, "IBM"),
+ DMI_MATCH(DMI_PRODUCT_NAME, "23734G2"),
+ },
+ },
+ {
+ /* Reported by Pete Toscano <pete at verisignlabs.com> */
+ .ident = "IBM ThinkPad T40 (2373-92G)",
+ .matches = {
+ DMI_MATCH(DMI_SYS_VENDOR, "IBM"),
+ DMI_MATCH(DMI_PRODUCT_NAME, "237392G"),
+ },
+ },
+ {
+ /* Reported by Pete Toscano <pete at verisignlabs.com> */
+ .ident = "IBM ThinkPad T40 (2373-8CG)",
+ .matches = {
+ DMI_MATCH(DMI_SYS_VENDOR, "IBM"),
+ DMI_MATCH(DMI_PRODUCT_NAME, "23738CG"),
+ },
+ },
+ {
+ /* Reported by Pete Toscano <pete at verisignlabs.com> */
+ .ident = "IBM ThinkPad T40 (2373-94U)",
+ .matches = {
+ DMI_MATCH(DMI_SYS_VENDOR, "IBM"),
+ DMI_MATCH(DMI_PRODUCT_NAME, "237394U"),
+ },
+ },
+ {
+ /* Reported by Manuel Carro <mcarro at fi.upm.es> */
+ .ident = "IBM ThinkPad T40 (2373-94G)",
+ .matches = {
+ DMI_MATCH(DMI_SYS_VENDOR, "IBM"),
+ DMI_MATCH(DMI_PRODUCT_NAME, "237394G"),
+ },
+ },
+ {
+ /* Reported by Peter Jones <pjones at redhat.com> */
+ .ident = "IBM ThinkPad T41 (2373-9FU)",
+ .matches = {
+ DMI_MATCH(DMI_SYS_VENDOR, "IBM"),
+ DMI_MATCH(DMI_PRODUCT_NAME, "23739FU"),
+ },
+ },
+ {
+ /* Reported by Ajay Ramaswamy <ajay at ramaswamy.net> */
+ .ident = "IBM ThinkPad T41 (2373-9HU)",
+ .matches = {
+ DMI_MATCH(DMI_SYS_VENDOR, "IBM"),
+ DMI_MATCH(DMI_PRODUCT_NAME, "23739HU"),
+ },
+ },
+ {
+ /* Reported by Peter Jones <pjones at redhat.com> */
+ .ident = "IBM ThinkPad T40 (2373-BU7)",
+ .matches = {
+ DMI_MATCH(DMI_SYS_VENDOR, "IBM"),
+ DMI_MATCH(DMI_PRODUCT_NAME, "2373BU7"),
+ },
+ },
+ {
+ /* Reported by Jerome Poggi <Jerome.Poggi at hsc.fr> */
+ .ident = "IBM ThinkPad T42 (2373-FWG)",
+ .matches = {
+ DMI_MATCH(DMI_SYS_VENDOR, "IBM"),
+ DMI_MATCH(DMI_PRODUCT_NAME, "2373FWG"),
+ },
+ },
+ {
+ /* Reported by Juerg Billeter <j at bitron.ch> */
+ .ident = "IBM ThinkPad T40p (2373-G1G)",
+ .matches = {
+ DMI_MATCH(DMI_SYS_VENDOR, "IBM"),
+ DMI_MATCH(DMI_PRODUCT_NAME, "2373G1G"),
+ },
+ },
+ {
+ /* Reported by Bill Nottingham <notting at redhat.com> */
+ .ident = "IBM ThinkPad T40p (2373-G1U)",
+ .matches = {
+ DMI_MATCH(DMI_SYS_VENDOR, "IBM"),
+ DMI_MATCH(DMI_PRODUCT_NAME, "2373G1U"),
+ },
+ },
+ {
+ /* Reported by Hartwig, Thomas <t.hartwig at itth.com> */
+ .ident = "IBM ThinkPad T40p (2373-G3G)",
+ .matches = {
+ DMI_MATCH(DMI_SYS_VENDOR, "IBM"),
+ DMI_MATCH(DMI_PRODUCT_NAME, "2373G3G"),
+ },
+ },
+ {
+ /* Reported by Eric Benson <eric_a_benson at yahoo.com> */
+ .ident = "IBM ThinkPad T41p (2373-GEU)",
+ .matches = {
+ DMI_MATCH(DMI_SYS_VENDOR, "IBM"),
+ DMI_MATCH(DMI_PRODUCT_NAME, "2373GEU"),
+ },
+ },
+ {
+ /* Reported by Dwight Barkley <barkley at maths.warwick.ac.uk> */
+ .ident = "IBM ThinkPad T42 (2373-JTU)",
+ .matches = {
+ DMI_MATCH(DMI_SYS_VENDOR, "IBM"),
+ DMI_MATCH(DMI_PRODUCT_NAME, "2373JTU"),
+ },
+ },
+ {
+ /* Reported by Vernon Mauery <vernux at us.ibm.com> */
+ .ident = "IBM ThinkPad T40 (2373-MU4)",
+ .matches = {
+ DMI_MATCH(DMI_SYS_VENDOR, "IBM"),
+ DMI_MATCH(DMI_PRODUCT_NAME, "2373MU4"),
+ },
+ },
+ {
+ /* Reported by Ajay Ramaswamy <ajay at ramaswamy.net> */
+ .ident = "IBM ThinkPad T41 (2373-XNX)",
+ .matches = {
+ DMI_MATCH(DMI_SYS_VENDOR, "IBM"),
+ DMI_MATCH(DMI_PRODUCT_NAME, "2373XNX"),
+ },
+ },
+ {
+ /* Reported by obi <graziano at cs.ucsb.edu> */
+ .ident = "IBM ThinkPad T41 (2378-DEU)",
+ .matches = {
+ DMI_MATCH(DMI_SYS_VENDOR, "IBM"),
+ DMI_MATCH(DMI_PRODUCT_NAME, "2378DEU"),
+ },
+ },
+ {
+ /* Reported by Volker Braun <vbraun at physics.upenn.edu> */
+ .ident = "IBM ThinkPad T41 (2379-DJU)",
+ .matches = {
+ DMI_MATCH(DMI_SYS_VENDOR, "IBM"),
+ DMI_MATCH(DMI_PRODUCT_NAME, "2379DJU"),
+ },
+ },
+ {
+ /* Reported by Pete Toscano <pete at verisignlabs.com> */
+ .ident = "IBM ThinkPad T42 (2373-FWG)",
+ .matches = {
+ DMI_MATCH(DMI_SYS_VENDOR, "IBM"),
+ DMI_MATCH(DMI_PRODUCT_NAME, "2373FWG"),
+ },
+ },
+ {
+ /* Reported by Frank Schmitt <tonne2004 at gehheimdienst.de> */
+ .ident = "IBM ThinkPad R40 (2722-3GG)",
+ .matches = {
+ DMI_MATCH(DMI_SYS_VENDOR, "IBM"),
+ DMI_MATCH(DMI_PRODUCT_NAME, "27223GG"),
+ },
+ },
+ {
+ /* Reported by Nils Trebing <nils.trebing at uni-konstanz.de> */
+ .ident = "IBM ThinkPad R40 (2722-5MG)",
+ .matches = {
+ DMI_MATCH(DMI_SYS_VENDOR, "IBM"),
+ DMI_MATCH(DMI_PRODUCT_NAME, "27225MG"),
+ },
+ },
+ {
+ /* Reported by Paul Ionescu <i_p_a_u_l at yahoo.com> */
+ .ident = "IBM ThinkPad T41 (2373-TG5)",
+ .matches = {
+ DMI_MATCH(DMI_SYS_VENDOR, "IBM"),
+ DMI_MATCH(DMI_PRODUCT_NAME, "2373TG5"),
+ },
+ },
+ {
+ /* Reported by Michele Lamarca <lammic at gmail.com> */
+ .ident = "IBM ThinkPad T40 (2373-22G)",
+ .matches = {
+ DMI_MATCH(DMI_SYS_VENDOR, "IBM"),
+ DMI_MATCH(DMI_PRODUCT_NAME, "237322G"),
+ },
+ },
+ {
+ /* Reported by Henrik Brix Andersen <brix at gentoo.org> */
+ .ident = "IBM ThinkPad X31 (2672-XXH)",
+ .matches = {
+ DMI_MATCH(DMI_SYS_VENDOR, "IBM"),
+ DMI_MATCH(DMI_PRODUCT_NAME, "2672XXH"),
+ },
+ },
+ {
+ /* Reported by Matthew Saltzman <mjs at clemson.edu> */
+ .ident = "IBM ThinkPad T41 (2373-7JU)",
+ .matches = {
+ DMI_MATCH(DMI_SYS_VENDOR, "IBM"),
+ DMI_MATCH(DMI_PRODUCT_NAME, "23737JU"),
+ },
+ },
+ { },
+ /* Negative reports: */
+ /* IBM thinkpad T30 2366 -> machine hangs
+ Reported by: Jakob Schiotz <schiotz at fysik.dtu.dk> */
+ /* IBM thinkpad T42p 2373-KUU -> machine hangs as X starts
+ Reported by: Dax Kelson <dax at gurulabs.com> */
+ /* IBM ThinkPad X31 2672-XXH -> works, but doesn't fix the LCD
+ backlight on during S3 issue.
+ Reported by: Henrik Brix Andersen <brix at gentoo.org> */
+};
+
+extern int radeon_force_sleep;
+#endif
+
static void radeon_pm_disable_dynamic_mode(struct radeonfb_info *rinfo)
{
u32 tmp;
@@ -852,7 +1109,14 @@
/* because both INPLL and OUTPLL take the same lock, that's why. */
tmp = INPLL( pllMCLK_MISC) | MCLK_MISC__EN_MCLK_TRISTATE_IN_SUSPEND;
OUTPLL( pllMCLK_MISC, tmp);
-
+
+ /* BUS_CNTL1__MOBILE_PLATORM_SEL setting is northbridge chipset
+ * and radeon chip dependent. Thus we only enable it on Mac for
+ * now (until we get more info on how to compute the correct
+ * value for various X86 bridges).
+ */
+
+#ifdef CONFIG_PPC_PMAC
/* AGP PLL control */
if (rinfo->family <= CHIP_FAMILY_RV280) {
OUTREG(BUS_CNTL1, INREG(BUS_CNTL1) | BUS_CNTL1__AGPCLK_VALID);
@@ -864,6 +1128,7 @@
OUTREG(BUS_CNTL1, INREG(BUS_CNTL1));
OUTREG(BUS_CNTL1, (INREG(BUS_CNTL1) & ~0x4000) | 0x8000);
}
+#endif
OUTREG(CRTC_OFFSET_CNTL, (INREG(CRTC_OFFSET_CNTL)
& ~CRTC_OFFSET_CNTL__CRTC_STEREO_SYNC_OUT_EN));
@@ -2790,6 +3055,29 @@
#endif
}
#endif /* defined(CONFIG_PM) && defined(CONFIG_PPC_OF) */
+
+/* The PM code also works on some PC laptops.
+ * Only a few models are actually tested so Your mileage may vary.
+ * We can do D2 on at least M7 and M9 on some IBM ThinkPad T41 models.
+ */
+#if defined(CONFIG_PM) && defined(CONFIG_X86)
+ if (radeon_force_sleep || dmi_check_system(radeonfb_dmi_table)) {
+ if (radeon_force_sleep)
+ printk("radeonfb: forcefully enabling sleep mode\n");
+ else
+ printk("radeonfb: enabling sleep mode\n");
+
+ if (rinfo->is_mobility && rinfo->pm_reg &&
+ rinfo->family <= CHIP_FAMILY_RV250)
+ rinfo->pm_mode |= radeon_pm_d2;
+
+ /* Power down TV DAC, that saves a significant amount of power,
+ * we'll have something better once we actually have some TVOut
+ * support
+ */
+ OUTREG(TV_DAC_CNTL, INREG(TV_DAC_CNTL) | 0x07000000);
+ }
+#endif /* defined(CONFIG_PM) && defined(CONFIG_X86) */
}
void radeonfb_pm_exit(struct radeonfb_info *rinfo)
--- linux-2.6.11-rc4-tank/drivers/video/aty/radeon_base.c.tppm 2005-02-20 20:08:15.000000000 +0200
+++ linux-2.6.11-rc4-tank/drivers/video/aty/radeon_base.c 2005-02-20 20:18:20.000000000 +0200
@@ -272,6 +272,9 @@
#ifdef CONFIG_MTRR
static int nomtrr = 0;
#endif
+#if defined(CONFIG_PM) && defined(CONFIG_X86)
+int radeon_force_sleep = 0;
+#endif
/*
* prototypes
@@ -2530,6 +2533,10 @@
force_measure_pll = 1;
} else if (!strncmp(this_opt, "ignore_edid", 11)) {
ignore_edid = 1;
+#if defined(CONFIG_PM) && defined(CONFIG_X86)
+ } else if (!strncmp(this_opt, "force_sleep", 11)) {
+ radeon_force_sleep = 1;
+#endif
} else
mode_option = this_opt;
}
@@ -2585,3 +2592,7 @@
MODULE_PARM_DESC(panel_yres, "int: set panel yres");
module_param(mode_option, charp, 0);
MODULE_PARM_DESC(mode_option, "Specify resolution as \"<xres>x<yres>[-<bpp>][@<refresh>]\" ");
+#if defined(CONFIG_PM) && defined(CONFIG_X86)
+module_param(radeon_force_sleep, int, 0);
+MODULE_PARM_DESC(radeon_force_sleep, "bool: force ACPI sleep mode on untested machines");
+#endif
--- linux-2.6.12/drivers/video/aty/radeon_pm.c~ 2005-07-05 16:07:58.000000000 -0400
+++ linux-2.6.12/drivers/video/aty/radeon_pm.c 2005-07-05 16:08:43.000000000 -0400
@@ -271,6 +271,14 @@ static struct dmi_system_id __devinitdat
DMI_MATCH(DMI_PRODUCT_NAME, "23737JU"),
},
},
+ {
+ /* Reported by David Zeuthen <davidz at redhat.com> */
+ .ident = "IBM ThinkPad T41 (2373-HU6)",
+ .matches = {
+ DMI_MATCH(DMI_SYS_VENDOR, "IBM"),
+ DMI_MATCH(DMI_PRODUCT_NAME, "2373HU6"),
+ },
+ },
{ },
/* Negative reports: */
/* IBM thinkpad T30 2366 -> machine hangs
--- linux-2.6.12/drivers/video/aty/radeon_pm.c~ 2005-08-26 00:57:10.000000000 -0400
+++ linux-2.6.12/drivers/video/aty/radeon_pm.c 2005-08-26 00:58:17.000000000 -0400
@@ -232,6 +232,14 @@ static struct dmi_system_id __devinitdat
},
},
{
+ /* Reported by Ulrich Drepper <drepper at redhat.com> */
+ .ident = "IBM ThinkPad T42 (2378-R2U)",
+ .matches = {
+ DMI_MATCH(DMI_SYS_VENDOR, "IBM"),
+ DMI_MATCH(DMI_PRODUCT_NAME, "2378R2U"),
+ },
+ },
+ {
/* Reported by Frank Schmitt <tonne2004 at gehheimdienst.de> */
.ident = "IBM ThinkPad R40 (2722-3GG)",
.matches = {
--- linux-2.6.13/drivers/video/aty/radeon_pm.c~ 2005-09-23 20:11:34.000000000 -0400
+++ linux-2.6.13/drivers/video/aty/radeon_pm.c 2005-09-23 20:12:23.000000000 -0400
@@ -56,6 +56,14 @@ static struct dmi_system_id __devinitdat
},
},
{
+ /* Reported by Stephan Groà <st.gross at inf.tu-dresden.de> */
+ .ident = "IBM ThinkPad T30 (2366-97G)",
+ .matches = {
+ DMI_MATCH(DMI_SYS_VENDOR, "IBM"),
+ DMI_MATCH(DMI_PRODUCT_NAME, "236697G"),
+ },
+ },
+ {
/* Reported by Phillip Jones <philljones at us.ibm.com> */
.ident = "IBM ThinkPad T30 (2366-MU9)",
.matches = {
linux-2.6-sound-emu10k1-ac97.patch:
emu10k1_main.c | 11 +++++++++--
1 files changed, 9 insertions(+), 2 deletions(-)
--- NEW FILE linux-2.6-sound-emu10k1-ac97.patch ---
--- linux-2.6.13/sound/pci/emu10k1/emu10k1_main.c~ 2005-09-23 18:15:33.000000000 -0400
+++ linux-2.6.13/sound/pci/emu10k1/emu10k1_main.c 2005-09-23 18:18:17.000000000 -0400
@@ -741,17 +741,24 @@ static emu_chip_details_t emu_chip_detai
.emu10k1_chip = 1,
.ac97_chip = 1,
.sblive51 = 1} ,
+ /* Tested by Thomas Zehetbauer 27th Aug 2005 */
+ {.vendor = 0x1102, .device = 0x0002, .subsystem = 0x80651102,
+ .driver = "EMU10K1", .name = "SB Live 5.1 [SB0220]",
+ .id = "Live",
+ .emu10k1_chip = 1,
+ .ac97_chip = 1,
+ .sblive51 = 1} ,
{.vendor = 0x1102, .device = 0x0002, .subsystem = 0x80641102,
.driver = "EMU10K1", .name = "SB Live 5.1",
.id = "Live",
.emu10k1_chip = 1,
.ac97_chip = 1,
.sblive51 = 1} ,
+ /* Tested by alsa bugtrack user "hus" bug #1297 12th Aug 2005 */
{.vendor = 0x1102, .device = 0x0002, .subsystem = 0x80611102,
- .driver = "EMU10K1", .name = "SBLive! Player 5.1 [SB0060]",
+ .driver = "EMU10K1", .name = "SBLive! Platinum 5.1 [SB0060]",
.id = "Live",
.emu10k1_chip = 1,
- .ac97_chip = 1,
.sblive51 = 1} ,
{.vendor = 0x1102, .device = 0x0002, .subsystem = 0x80511102,
.driver = "EMU10K1", .name = "SBLive! Value [CT4850]",
linux-2.6-tux.patch:
linux-2.6.12/arch/ia64/kernel/ia64_ksyms.c | 5
linux-2.6.12/net/Kconfig | 1
linux-2.6.12/net/ipv4/tcp_output.c | 1
linux/arch/alpha/kernel/systbls.S | 8
linux/arch/i386/kernel/syscall_table.S | 10
linux/arch/ia64/kernel/entry.S | 8
linux/arch/ppc64/kernel/misc.S | 20
linux/arch/x86_64/ia32/ia32entry.S | 10
linux/fs/dcache.c | 36
linux/fs/exec.c | 2
linux/fs/fcntl.c | 4
linux/fs/namei.c | 18
linux/fs/namespace.c | 2
linux/fs/open.c | 4
linux/fs/pipe.c | 2
linux/fs/read_write.c | 2
linux/include/asm-alpha/fcntl.h | 1
linux/include/asm-i386/fcntl.h | 1
linux/include/asm-i386/unistd.h | 5
linux/include/asm-ia64/fcntl.h | 1
linux/include/asm-ia64/unistd.h | 2
linux/include/asm-ppc/fcntl.h | 1
linux/include/asm-ppc64/fcntl.h | 1
linux/include/asm-s390/fcntl.h | 1
linux/include/asm-sparc/fcntl.h | 1
linux/include/asm-sparc64/fcntl.h | 1
linux/include/asm-x86_64/fcntl.h | 1
linux/include/asm-x86_64/unistd.h | 10
linux/include/linux/buffer_head.h | 1
linux/include/linux/dcache.h | 8
linux/include/linux/errno.h | 3
linux/include/linux/file.h | 2
linux/include/linux/fs.h | 7
linux/include/linux/kmod.h | 2
linux/include/linux/namei.h | 2
linux/include/linux/net.h | 1
linux/include/linux/sched.h | 5
linux/include/linux/skbuff.h | 2
linux/include/linux/socket.h | 5
linux/include/linux/sysctl.h | 50
linux/include/net/sock.h | 6
linux/include/net/tcp.h | 3
linux/include/net/tux.h | 802 ++++++++++
linux/include/net/tux_u.h | 163 ++
linux/kernel/exit.c | 7
linux/kernel/fork.c | 1
linux/kernel/kmod.c | 30
linux/kernel/signal.c | 1
linux/mm/filemap.c | 19
linux/mm/truncate.c | 2
linux/net/Makefile | 1
linux/net/ipv4/tcp.c | 3
linux/net/ipv4/tcp_input.c | 1
linux/net/ipv4/tcp_ipv4.c | 5
linux/net/ipv4/tcp_minisocks.c | 3
linux/net/ipv4/tcp_output.c | 5
linux/net/socket.c | 137 +
linux/net/tux/Kconfig | 25
linux/net/tux/Makefile | 12
linux/net/tux/abuf.c | 190 ++
linux/net/tux/accept.c | 859 +++++++++++
linux/net/tux/cachemiss.c | 265 +++
linux/net/tux/cgi.c | 160 ++
linux/net/tux/directory.c | 302 +++
linux/net/tux/extcgi.c | 329 ++++
linux/net/tux/gzip.c | 40
linux/net/tux/input.c | 640 ++++++++
linux/net/tux/logger.c | 836 +++++++++++
linux/net/tux/main.c | 1413 ++++++++++++++++++
linux/net/tux/mod.c | 262 +++
linux/net/tux/output.c | 352 ++++
linux/net/tux/parser.h | 102 +
linux/net/tux/postpone.c | 77 +
linux/net/tux/proc.c | 1149 +++++++++++++++
linux/net/tux/proto_ftp.c | 1549 ++++++++++++++++++++
linux/net/tux/proto_http.c | 2197 +++++++++++++++++++++++++++++
linux/net/tux/redirect.c | 167 ++
linux/net/tux/times.c | 392 +++++
linux/net/tux/times.h | 26
linux/net/tux/userspace.c | 27
80 files changed, 12736 insertions(+), 71 deletions(-)
--- NEW FILE linux-2.6-tux.patch ---
arch/alpha/kernel/systbls.S | 8
arch/i386/kernel/syscall_table.S | 10
arch/ia64/kernel/entry.S | 8
arch/ia64/kernel/ia64_ksyms.c | 3
arch/ppc64/kernel/misc.S | 20
arch/x86_64/ia32/ia32entry.S | 10
fs/dcache.c | 36
fs/exec.c | 2
fs/fcntl.c | 4
fs/namei.c | 18
fs/namespace.c | 2
fs/open.c | 4
fs/pipe.c | 2
fs/read_write.c | 2
include/asm-alpha/fcntl.h | 1
include/asm-i386/fcntl.h | 1
include/asm-i386/unistd.h | 5
include/asm-ia64/fcntl.h | 1
include/asm-ia64/unistd.h | 2
include/asm-ppc/fcntl.h | 1
include/asm-ppc64/fcntl.h | 1
include/asm-s390/fcntl.h | 1
include/asm-sparc/fcntl.h | 1
include/asm-sparc64/fcntl.h | 1
include/asm-x86_64/fcntl.h | 1
include/asm-x86_64/unistd.h | 10
include/linux/buffer_head.h | 1
include/linux/dcache.h | 8
include/linux/errno.h | 3
include/linux/file.h | 2
include/linux/fs.h | 7
include/linux/kmod.h | 2
include/linux/namei.h | 2
include/linux/net.h | 1
include/linux/sched.h | 5
include/linux/skbuff.h | 2
include/linux/socket.h | 5
include/linux/sysctl.h | 50
include/net/sock.h | 6
include/net/tcp.h | 8
include/net/tux.h | 802 ++++++++++++++
include/net/tux_u.h | 163 ++
kernel/exit.c | 10
kernel/fork.c | 1
kernel/kmod.c | 30
kernel/signal.c | 1
mm/filemap.c | 19
mm/truncate.c | 2
net/Kconfig | 2
net/Makefile | 1
net/ipv4/tcp.c | 3
net/ipv4/tcp_input.c | 1
net/ipv4/tcp_ipv4.c | 5
net/ipv4/tcp_minisocks.c | 3
net/ipv4/tcp_output.c | 5
net/socket.c | 137 +-
net/tux/Kconfig | 25
net/tux/Makefile | 12
net/tux/abuf.c | 190 +++
net/tux/accept.c | 859 +++++++++++++++
net/tux/cachemiss.c | 265 ++++
net/tux/cgi.c | 160 ++
net/tux/directory.c | 302 +++++
net/tux/extcgi.c | 329 +++++
net/tux/gzip.c | 40
net/tux/input.c | 640 +++++++++++
net/tux/logger.c | 836 ++++++++++++++
net/tux/main.c | 1413 +++++++++++++++++++++++++
net/tux/mod.c | 262 ++++
net/tux/output.c | 352 ++++++
net/tux/parser.h | 102 +
net/tux/postpone.c | 77 +
net/tux/proc.c | 1149 ++++++++++++++++++++
net/tux/proto_ftp.c | 1549 +++++++++++++++++++++++++++
net/tux/proto_http.c | 2197 +++++++++++++++++++++++++++++++++++++++
net/tux/redirect.c | 167 ++
net/tux/times.c | 392 ++++++
net/tux/times.h | 26
net/tux/userspace.c | 27
79 files changed, 12739 insertions(+), 74 deletions(-)
Index: linux/arch/alpha/kernel/systbls.S
===================================================================
--- linux.orig/arch/alpha/kernel/systbls.S
+++ linux/arch/alpha/kernel/systbls.S
@@ -240,7 +240,15 @@ sys_call_table:
.quad alpha_ni_syscall
.quad alpha_ni_syscall /* 220 */
.quad alpha_ni_syscall
+#ifdef CONFIG_TUX
+ .quad __sys_tux
+#else
+# ifdef CONFIG_TUX_MODULE
+ .quad sys_tux
+# else
.quad alpha_ni_syscall
+# endif
+#endif
.quad alpha_ni_syscall
.quad alpha_ni_syscall
.quad alpha_ni_syscall /* 225 */
Index: linux/arch/i386/kernel/syscall_table.S
===================================================================
--- linux.orig/arch/i386/kernel/syscall_table.S
+++ linux/arch/i386/kernel/syscall_table.S
@@ -222,7 +222,15 @@ ENTRY(sys_call_table)
.long sys_madvise
.long sys_getdents64 /* 220 */
.long sys_fcntl64
- .long sys_ni_syscall /* reserved for TUX */
+#ifdef CONFIG_TUX
+ .long __sys_tux
+#else
+# ifdef CONFIG_TUX_MODULE
+ .long sys_tux
+# else
+ .long sys_ni_syscall
+# endif
+#endif
.long sys_ni_syscall
.long sys_gettid
.long sys_readahead /* 225 */
Index: linux/arch/ia64/kernel/entry.S
===================================================================
--- linux.orig/arch/ia64/kernel/entry.S
+++ linux/arch/ia64/kernel/entry.S
@@ -1423,7 +1423,15 @@ sys_call_table:
data8 sys_syslog
data8 sys_setitimer
data8 sys_getitimer
+#ifdef CONFIG_TUX
+ data8 __sys_tux // 1120 /* was: ia64_oldstat */
+#else
+# ifdef CONFIG_TUX_MODULE
+ data8 sys_tux // 1120 /* was: ia64_oldstat */
+# else
data8 sys_ni_syscall // 1120 /* was: ia64_oldstat */
+# endif
+#endif
data8 sys_ni_syscall /* was: ia64_oldlstat */
data8 sys_ni_syscall /* was: ia64_oldfstat */
data8 sys_vhangup
Index: linux/arch/ia64/kernel/ia64_ksyms.c
===================================================================
--- linux-2.6.12/arch/ia64/kernel/ia64_ksyms.c~ 2005-07-12 17:30:24.000000000 -0400
+++ linux-2.6.12/arch/ia64/kernel/ia64_ksyms.c 2005-07-12 17:30:45.000000000 -0400
@@ -58,6 +58,11 @@ EXPORT_SYMBOL(__strlen_user);
EXPORT_SYMBOL(__strncpy_from_user);
EXPORT_SYMBOL(__strnlen_user);
+#define __KERNEL_SYSCALLS__
+#include <asm/unistd.h>
+EXPORT_SYMBOL(sys_execve);
+EXPORT_SYMBOL(clone);
+
/* from arch/ia64/lib */
extern void __divsi3(void);
extern void __udivsi3(void);
Index: linux/arch/ppc64/kernel/misc.S
===================================================================
--- linux.orig/arch/ppc64/kernel/misc.S
+++ linux/arch/ppc64/kernel/misc.S
@@ -1079,7 +1079,15 @@ _GLOBAL(sys_call_table32)
.llong .compat_sys_sched_setaffinity
.llong .compat_sys_sched_getaffinity
.llong .sys_ni_syscall
- .llong .sys_ni_syscall /* 225 - reserved for tux */
+#ifdef CONFIG_TUX
+ .llong .__sys_tux
+#else
+# ifdef CONFIG_TUX_MODULE
+ .llong .sys_tux
+# else
+ .llong .sys_ni_syscall
+# endif
+#endif
.llong .sys32_sendfile64
.llong .compat_sys_io_setup
.llong .sys_io_destroy
@@ -1355,7 +1363,15 @@ _GLOBAL(sys_call_table)
.llong .sys_sched_setaffinity
.llong .sys_sched_getaffinity
.llong .sys_ni_syscall
- .llong .sys_ni_syscall /* 225 - reserved for tux */
+#ifdef CONFIG_TUX
+ .llong .__sys_tux
+#else
+# ifdef CONFIG_TUX_MODULE
+ .llong .sys_tux
+# else
+ .llong .sys_ni_syscall
+# endif
+#endif
.llong .sys_ni_syscall /* 32bit only sendfile64 */
.llong .sys_io_setup
.llong .sys_io_destroy
Index: linux/arch/x86_64/ia32/ia32entry.S
===================================================================
--- linux.orig/arch/x86_64/ia32/ia32entry.S
[...13504 lines suppressed...]
+ /* day 0 is march 1, 2000 */
+ year = 5 + day / 146097;
+ day = day % 146097;
+ if (day < 0) {
+ day += 146097;
+ --year;
+ }
+ /* from now on, day is nonnegative */
+ year *= 4;
+ if (day == 146096) {
+ year += 3;
+ day = 36524;
+ } else {
+ year += day / 36524;
+ day %= 36524;
+ }
+ year *= 25;
+ year += day / 1461;
+ day %= 1461;
+ year *= 4;
+ if (day == 1460) {
+ year += 3;
+ day = 365;
+ } else {
+ year += day / 365;
+ day %= 365;
+ }
+
+ day *= 10;
+ mon = (day + 5) / 306;
+ day = day + 5 - 306 * mon;
+ day /= 10;
+ if (mon >= 10) {
+ ++year;
+ mon -= 10;
+ } else
+ mon += 2;
+
+ return sprintf(curr, "213 %.4d%.2d%.2d%.2d%.2d%.2d\r\n",
+ year, mon+1, day+1, hour, min, sec);
+}
+
+static inline int make_num(const char *s)
+{
+ if (*s >= '0' && *s <= '9')
+ return 10 * (*s - '0') + *(s + 1) - '0';
+ else
+ return *(s + 1) - '0';
+}
+
+static inline int make_month(const char *s)
+{
+ int i;
+
+ for (i = 0; i < 12; i++)
+ if (!strncmp(monthName[i], s, 3))
+ return i+1;
+ return 0;
+}
+
+time_t parse_time(const char *str, const int str_len)
+{
+ int hour;
+ int min;
+ int sec;
+ int mday;
+ int mon;
+ int year;
+
+ if (str[3] == ',') {
+ /* Thu, 09 Jan 1993 01:29:59 GMT */
+
+ if (str_len < 29)
+ return -1;
+
+ mday = make_num(str+5);
+ mon = make_month(str + 8);
+ year = 100 * make_num(str + 12) + make_num(str + 14);
+ hour = make_num(str + 17);
+ min = make_num(str + 20);
+ sec = make_num(str + 23);
+ }
+ else {
+ const char *s;
+ s = strchr(str, ',');
+ if (!s || (str_len - (s - str) < 24)) {
+ /* Wed Jun 9 01:29:59 1993 */
+
+ if (str_len < 24)
+ return -1;
+
+ mon = make_month(str+4);
+ mday = make_num(str+8);
+ hour = make_num(str+11);
+ min = make_num(str+14);
+ sec = make_num(str+17);
+ year = make_num(str+20)*100 + make_num(str+22);
+ }
+ else {
+ /* Thursday, 10-Jun-93 01:29:59 GMT */
+
+ mday = make_num(s + 2);
+ mon = make_month(s + 5);
+ year = make_num(s + 9) + 1900;
+ if (year < 1970)
+ year += 100;
+ hour = make_num(s + 12);
+ min = make_num(s + 15);
+ sec = make_num(s + 18);
+ }
+ }
+
+ if (sec < 0 || sec > 59)
+ return -1;
+ if (min < 0 || min > 59)
+ return -1;
+ if (hour < 0 || hour > 23)
+ return -1;
+ if (mday < 1 || mday > 31)
+ return -1;
+ if (mon < 1 || mon > 12)
+ return -1;
+ if (year < 1970 || year > 2020)
+ return -1;
+
+ return mktime(year, mon, mday, hour, min, sec);
+}
Index: linux/net/tux/times.h
===================================================================
--- /dev/null
+++ linux/net/tux/times.h
@@ -0,0 +1,26 @@
+static time_t TimeDays[10][13] = {
+ { 852073200, 854751600, 857170800, 859849200, 862441200, 865119600, 867711600, 870390000, 873068400, 875660400, 878338800, 880930800, 883609200 } ,
+ { 883609200, 886287600, 888706800, 891385200, 893977200, 896655600, 899247600, 901926000, 904604400, 907196400, 909874800, 912466800, 915145200 } ,
+ { 915145200, 917823600, 920242800, 922921200, 925513200, 928191600, 930783600, 933462000, 936140400, 938732400, 941410800, 944002800, 946681200 } ,
+ { 946681200, 949359600, 951865200, 954543600, 957135600, 959814000, 962406000, 965084400, 967762800, 970354800, 973033200, 975625200, 978303600 } ,
+ { 978303600, 980982000, 983401200, 986079600, 988671600, 991350000, 993942000, 996620400, 999298800, 1001890800, 1004569200, 1007161200, 1009839600 } ,
+ { 1009839600, 1012518000, 1014937200, 1017615600, 1020207600, 1022886000, 1025478000, 1028156400, 1030834800, 1033426800, 1036105200, 1038697200, 1041375600 } ,
+ { 1041375600, 1044054000, 1046473200, 1049151600, 1051743600, 1054422000, 1057014000, 1059692400, 1062370800, 1064962800, 1067641200, 1070233200, 1072911600 } ,
+ { 1072911600, 1075590000, 1078095600, 1080774000, 1083366000, 1086044400, 1088636400, 1091314800, 1093993200, 1096585200, 1099263600, 1101855600, 1104534000 } ,
+ { 1104534000, 1107212400, 1109631600, 1112310000, 1114902000, 1117580400, 1120172400, 1122850800, 1125529200, 1128121200, 1130799600, 1133391600, 1136070000 } ,
+ { 1136070000, 1138748400, 1141167600, 1143846000, 1146438000, 1149116400, 1151708400, 1154386800, 1157065200, 1159657200, 1162335600, 1164927600, 1167606000 }
+};
+static int WeekDays[10][13] = {
+ { 3, 6, 6, 2, 4, 0, 2, 5, 1, 3, 6, 1, 4 } ,
+ { 4, 0, 0, 3, 5, 1, 3, 6, 2, 4, 0, 2, 5 } ,
+ { 5, 1, 1, 4, 6, 2, 4, 0, 3, 5, 1, 3, 6 } ,
+ { 6, 2, 3, 6, 1, 4, 6, 2, 5, 0, 3, 5, 1 } ,
+ { 1, 4, 4, 0, 2, 5, 0, 3, 6, 1, 4, 6, 2 } ,
+ { 2, 5, 5, 1, 3, 6, 1, 4, 0, 2, 5, 0, 3 } ,
+ { 3, 6, 6, 2, 4, 0, 2, 5, 1, 3, 6, 1, 4 } ,
+ { 4, 0, 1, 4, 6, 2, 4, 0, 3, 5, 1, 3, 6 } ,
+ { 6, 2, 2, 5, 0, 3, 5, 1, 4, 6, 2, 4, 0 } ,
+ { 0, 3, 3, 6, 1, 4, 6, 2, 5, 0, 3, 5, 1 }
+};
+#define TUX_YEAROFFSET 1997
+#define TUX_NUMYEARS 10
Index: linux/net/tux/userspace.c
===================================================================
--- /dev/null
+++ linux/net/tux/userspace.c
@@ -0,0 +1,27 @@
+/*
+ * TUX - Integrated Application Protocols Layer and Object Cache
+ *
+ * Copyright (C) 2000, 2001, Ingo Molnar <mingo at redhat.com>
+ *
+ * userspace.c: handle userspace-module requests
+ */
+
+#include <net/tux.h>
+
+/****************************************************************
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ ****************************************************************/
+
--- linux-2.6.12/net/ipv4/tcp_output.c~ 2005-07-14 18:20:31.000000000 -0400
+++ linux-2.6.12/net/ipv4/tcp_output.c 2005-07-14 18:20:45.000000000 -0400
@@ -1067,6 +1067,7 @@ void __tcp_push_pending_frames(struct so
tcp_check_probe_timer(sk, tp);
}
}
+EXPORT_SYMBOL_GPL(__tcp_push_pending_frames);
/* Send _single_ skb sitting at the send head. This function requires
* true push pending frames to setup probe timer etc.
linux-2.6-unexport-symbols.patch:
arch/x86_64/ia32/sys_ia32.c | 1 -
fs/open.c | 1 -
2 files changed, 2 deletions(-)
--- NEW FILE linux-2.6-unexport-symbols.patch ---
No external modules should be touching these symbols.
If they are, they are broken.
diff -urNp --exclude-from=/home/davej/.exclude linux-3022/fs/open.c linux-10000/fs/open.c
--- linux-3022/fs/open.c
+++ linux-10000/fs/open.c
@@ -976,7 +976,6 @@ out_error:
fd = error;
goto out;
}
-EXPORT_SYMBOL_GPL(sys_open);
#ifndef __alpha__
diff -urNp --exclude-from=/home/davej/.exclude linux-3022/arch/x86_64/ia32/sys_ia32.c linux-10000/arch/x86_64/ia32/sys_ia32.c
--- linux-3022/arch/x86_64/ia32/sys_ia32.c
+++ linux-10000/arch/x86_64/ia32/sys_ia32.c
@@ -1048,4 +1048,3 @@ static int __init ia32_init (void)
__initcall(ia32_init);
extern unsigned long ia32_sys_call_table[];
-EXPORT_SYMBOL(ia32_sys_call_table);
linux-2.6-usb-ehci-intsoff-on-reset.patch:
ehci-hcd.c | 1 +
1 files changed, 1 insertion(+)
--- NEW FILE linux-2.6-usb-ehci-intsoff-on-reset.patch ---
Turn off interrupts before we perform the reset.
--- linux-2.6.11/drivers/usb/host/ehci-hcd.c.orig 2005-05-01 10:01:22.152008984 +0100
+++ linux-2.6.11/drivers/usb/host/ehci-hcd.c 2005-05-01 10:25:00.418949184 +0100
@@ -382,6 +382,7 @@ static int ehci_hc_reset (struct usb_hcd
ehci->hcs_params = readl (&ehci->caps->hcs_params);
#ifdef CONFIG_PCI
+ writel(0, &ehci->regs->intr_enable);
if (hcd->self.controller->bus == &pci_bus_type) {
struct pci_dev *pdev = to_pci_dev(hcd->self.controller);
linux-2.6-vm-silence-atomic-alloc-failures.patch:
gfp.h | 2 +-
1 files changed, 1 insertion(+), 1 deletion(-)
--- NEW FILE linux-2.6-vm-silence-atomic-alloc-failures.patch ---
Atomic failures aren't too interesting.
diff -urNp --exclude-from=/home/davej/.exclude linux-3022/include/linux/gfp.h linux-10000/include/linux/gfp.h
--- linux-3022/include/linux/gfp.h
+++ linux-10000/include/linux/gfp.h
@@ -47,7 +47,7 @@ struct vm_area_struct;
__GFP_COLD|__GFP_NOWARN|__GFP_REPEAT| \
__GFP_NOFAIL|__GFP_NORETRY|__GFP_NO_GROW|__GFP_COMP)
-#define GFP_ATOMIC (__GFP_HIGH)
+#define GFP_ATOMIC (__GFP_HIGH | __GFP_NOWARN)
#define GFP_NOIO (__GFP_WAIT)
#define GFP_NOFS (__GFP_WAIT | __GFP_IO)
#define GFP_KERNEL (__GFP_WAIT | __GFP_IO | __GFP_FS)
linux-2.6-w1-hush-debug.patch:
w1.c | 2 +-
1 files changed, 1 insertion(+), 1 deletion(-)
--- NEW FILE linux-2.6-w1-hush-debug.patch ---
https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=167403
--- linux-2.6.13/drivers/w1/w1.c~ 2005-09-28 06:09:13.000000000 -0400
+++ linux-2.6.13/drivers/w1/w1.c 2005-09-28 06:09:27.000000000 -0400
@@ -593,7 +593,7 @@ void w1_search(struct w1_master *dev, w1
* Return 0 - device(s) present, 1 - no devices present.
*/
if (w1_reset_bus(dev)) {
- dev_dbg(&dev->dev, "No devices present on the wire.\n");
+ //dev_dbg(&dev->dev, "No devices present on the wire.\n");
break;
}
linux-2.6.12-ext3-always-nobh.patch:
super.c | 3 ++-
1 files changed, 2 insertions(+), 1 deletion(-)
Index: linux-2.6.12-ext3-always-nobh.patch
===================================================================
RCS file: linux-2.6.12-ext3-always-nobh.patch
diff -N linux-2.6.12-ext3-always-nobh.patch
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ linux-2.6.12-ext3-always-nobh.patch 29 Sep 2005 23:04:29 -0000 1.3
@@ -0,0 +1,19 @@
+--- linux-2.6.11/fs/ext3/super.c~ 2005-05-11 19:04:49.000000000 -0400
++++ linux-2.6.11/fs/ext3/super.c 2005-05-11 19:08:16.000000000 -0400
+@@ -925,7 +925,6 @@ clear_qf_name:
+ *n_blocks_count = option;
+ break;
+ case Opt_nobh:
+- set_opt(sbi->s_mount_opt, NOBH);
+ break;
+ default:
+ printk (KERN_ERR
+@@ -943,6 +942,8 @@ clear_qf_name:
+ }
+ #endif
+
++ set_opt(sbi->s_mount_opt, NOBH);
++
+ return 1;
+ }
+
linux-2.6.12-pmac-sound-oops.patch:
pmac.c | 3 ++-
1 files changed, 2 insertions(+), 1 deletion(-)
--- NEW FILE linux-2.6.12-pmac-sound-oops.patch ---
--- linux-2.6.12/sound/ppc/pmac.c.orig 2005-08-17 11:19:46.000000000 +0100
+++ linux-2.6.12/sound/ppc/pmac.c 2005-08-17 11:20:05.000000000 +0100
@@ -765,7 +765,8 @@ snd_pmac_ctrl_intr(int irq, void *devid,
*/
static void snd_pmac_sound_feature(pmac_t *chip, int enable)
{
- ppc_md.feature_call(PMAC_FTR_SOUND_CHIP_ENABLE, chip->node, 0, enable);
+ if (ppc_md.feature_call)
+ ppc_md.feature_call(PMAC_FTR_SOUND_CHIP_ENABLE, chip->node, 0, enable);
}
/*
linux-2.6.12-scsi-advansys-pcitable.patch:
drivers/scsi/advansys.c | 82 +++++++++++++++++------------------
linux-2.6.12/include/linux/pci_ids.h | 3 +
2 files changed, 44 insertions(+), 41 deletions(-)
--- NEW FILE linux-2.6.12-scsi-advansys-pcitable.patch ---
Remove a lot of duplicate #defines from the advansys driver.
--- linux-2.6.12/include/linux/pci_ids.h~ 2005-07-05 23:18:13.000000000 -0400
+++ linux-2.6.12/include/linux/pci_ids.h 2005-07-05 23:30:02.000000000 -0400
@@ -1101,9 +1101,12 @@
#define PCI_DEVICE_ID_NEOMAGIC_MAGICGRAPH_128ZVPLUS 0x0083
#define PCI_VENDOR_ID_ASP 0x10cd
+#define PCI_DEVICE_ID_ASP_1200A 0x1100
#define PCI_DEVICE_ID_ASP_ABP940 0x1200
#define PCI_DEVICE_ID_ASP_ABP940U 0x1300
#define PCI_DEVICE_ID_ASP_ABP940UW 0x2300
+#define PCI_DEVICE_ID_38C0800_REV1 0x2500
+#define PCI_DEVICE_ID_38C1600_REV1 0x2700
#define PCI_VENDOR_ID_MACRONIX 0x10d9
#define PCI_DEVICE_ID_MACRONIX_MX98713 0x0512
--- vanilla/drivers/scsi/advansys.c 2005-06-17 15:48:29.000000000 -0400
+++ linux-2.6.12/drivers/scsi/advansys.c 2005-07-05 23:27:48.000000000 -0400
@@ -889,10 +889,6 @@ typedef unsigned char uchar;
#define ASC_PCI_ID2DEV(id) (((id) >> 11) & 0x1F)
#define ASC_PCI_ID2FUNC(id) (((id) >> 8) & 0x7)
#define ASC_PCI_MKID(bus, dev, func) ((((dev) & 0x1F) << 11) | (((func) & 0x7) << 8) | ((bus) & 0xFF))
-#define ASC_PCI_VENDORID 0x10CD
-#define ASC_PCI_DEVICEID_1200A 0x1100
-#define ASC_PCI_DEVICEID_1200B 0x1200
-#define ASC_PCI_DEVICEID_ULTRA 0x1300
#define ASC_PCI_REVISION_3150 0x02
#define ASC_PCI_REVISION_3050 0x03
@@ -1493,8 +1489,6 @@ typedef struct asc_dvc_cfg {
#define ASC_INIT_STATE_END_INQUIRY 0x0080
#define ASC_INIT_RESET_SCSI_DONE 0x0100
#define ASC_INIT_STATE_WITHOUT_EEP 0x8000
-#define ASC_PCI_DEVICE_ID_REV_A 0x1100
-#define ASC_PCI_DEVICE_ID_REV_B 0x1200
#define ASC_BUG_FIX_IF_NOT_DWB 0x0001
#define ASC_BUG_FIX_ASYN_USE_SYN 0x0002
#define ASYN_SDTR_DATA_FIX_PCI_REV_AB 0x41
@@ -2101,12 +2095,6 @@ STATIC ASC_DCNT AscGetMaxDmaCount(ushor
#define ADV_NUM_PAGE_CROSSING \
((ADV_SG_TOTAL_MEM_SIZE + (ADV_PAGE_SIZE - 1))/ADV_PAGE_SIZE)
-/* a_condor.h */
-#define ADV_PCI_VENDOR_ID 0x10CD
-#define ADV_PCI_DEVICE_ID_REV_A 0x2300
-#define ADV_PCI_DEVID_38C0800_REV1 0x2500
-#define ADV_PCI_DEVID_38C1600_REV1 0x2700
-
#define ADV_EEP_DVC_CFG_BEGIN (0x00)
#define ADV_EEP_DVC_CFG_END (0x15)
#define ADV_EEP_DVC_CTL_BEGIN (0x16) /* location of OEM name */
@@ -3570,14 +3558,7 @@ typedef struct scsi_cmnd REQ, *REQP;
#define PCI_MAX_SLOT 0x1F
#define PCI_MAX_BUS 0xFF
#define PCI_IOADDRESS_MASK 0xFFFE
-#define ASC_PCI_VENDORID 0x10CD
#define ASC_PCI_DEVICE_ID_CNT 6 /* PCI Device ID count. */
-#define ASC_PCI_DEVICE_ID_1100 0x1100
-#define ASC_PCI_DEVICE_ID_1200 0x1200
-#define ASC_PCI_DEVICE_ID_1300 0x1300
-#define ASC_PCI_DEVICE_ID_2300 0x2300 /* ASC-3550 */
-#define ASC_PCI_DEVICE_ID_2500 0x2500 /* ASC-38C0800 */
-#define ASC_PCI_DEVICE_ID_2700 0x2700 /* ASC-38C1600 */
#ifndef ADVANSYS_STATS
#define ASC_STATS(shp, counter)
@@ -4331,12 +4312,12 @@ advansys_detect(struct scsi_host_templat
struct pci_dev *pci_devp = NULL;
int pci_device_id_cnt = 0;
unsigned int pci_device_id[ASC_PCI_DEVICE_ID_CNT] = {
- ASC_PCI_DEVICE_ID_1100,
- ASC_PCI_DEVICE_ID_1200,
- ASC_PCI_DEVICE_ID_1300,
- ASC_PCI_DEVICE_ID_2300,
- ASC_PCI_DEVICE_ID_2500,
- ASC_PCI_DEVICE_ID_2700
+ PCI_DEVICE_ID_ASP_1200A,
+ PCI_DEVICE_ID_ASP_ABP940,
+ PCI_DEVICE_ID_ASP_ABP940U,
+ PCI_DEVICE_ID_ASP_ABP940UW,
+ PCI_DEVICE_ID_38C0800_REV1,
+ PCI_DEVICE_ID_38C1600_REV1
};
ADV_PADDR pci_memory_address;
#endif /* CONFIG_PCI */
@@ -4472,7 +4453,7 @@ advansys_detect(struct scsi_host_templat
/* Find all PCI cards. */
while (pci_device_id_cnt < ASC_PCI_DEVICE_ID_CNT) {
- if ((pci_devp = pci_find_device(ASC_PCI_VENDORID,
+ if ((pci_devp = pci_find_device(PCI_VENDOR_ID_ASP,
pci_device_id[pci_device_id_cnt], pci_devp)) ==
NULL) {
pci_device_id_cnt++;
@@ -4578,9 +4559,9 @@ advansys_detect(struct scsi_host_templat
*/
#ifdef CONFIG_PCI
if (asc_bus[bus] == ASC_IS_PCI &&
- (pci_devp->device == ASC_PCI_DEVICE_ID_2300 ||
- pci_devp->device == ASC_PCI_DEVICE_ID_2500 ||
- pci_devp->device == ASC_PCI_DEVICE_ID_2700))
+ (pci_devp->device == PCI_DEVICE_ID_ASP_ABP940UW ||
+ pci_devp->device == PCI_DEVICE_ID_38C0800_REV1 ||
+ pci_devp->device == PCI_DEVICE_ID_38C1600_REV1))
{
boardp->flags |= ASC_IS_WIDE_BOARD;
}
@@ -4603,11 +4584,11 @@ advansys_detect(struct scsi_host_templat
adv_dvc_varp->isr_callback = adv_isr_callback;
adv_dvc_varp->async_callback = adv_async_callback;
#ifdef CONFIG_PCI
- if (pci_devp->device == ASC_PCI_DEVICE_ID_2300)
+ if (pci_devp->device == PCI_DEVICE_ID_ASP_ABP940UW)
{
ASC_DBG(1, "advansys_detect: ASC-3550\n");
adv_dvc_varp->chip_type = ADV_CHIP_ASC3550;
- } else if (pci_devp->device == ASC_PCI_DEVICE_ID_2500)
+ } else if (pci_devp->device == PCI_DEVICE_ID_38C0800_REV1)
{
ASC_DBG(1, "advansys_detect: ASC-38C0800\n");
adv_dvc_varp->chip_type = ADV_CHIP_ASC38C0800;
@@ -11929,7 +11910,7 @@ AscInitGetConfig(
PCIRevisionID = DvcReadPCIConfigByte(asc_dvc,
AscPCIConfigRevisionIDRegister);
- if (PCIVendorID != ASC_PCI_VENDORID) {
+ if (PCIVendorID != PCI_VENDOR_ID_ASP) {
warn_code |= ASC_WARN_SET_PCI_CONFIG_SPACE;
}
prevCmdRegBits = DvcReadPCIConfigByte(asc_dvc,
@@ -11949,15 +11930,15 @@ AscInitGetConfig(
warn_code |= ASC_WARN_SET_PCI_CONFIG_SPACE;
}
}
- if ((PCIDeviceID == ASC_PCI_DEVICEID_1200A) ||
- (PCIDeviceID == ASC_PCI_DEVICEID_1200B)) {
+ if ((PCIDeviceID == PCI_DEVICE_ID_ASP_1200A) ||
+ (PCIDeviceID == PCI_DEVICE_ID_ASP_ABP940)) {
DvcWritePCIConfigByte(asc_dvc,
AscPCIConfigLatencyTimer, 0x00);
if (DvcReadPCIConfigByte(asc_dvc, AscPCIConfigLatencyTimer)
!= 0x00) {
warn_code |= ASC_WARN_SET_PCI_CONFIG_SPACE;
}
- } else if (PCIDeviceID == ASC_PCI_DEVICEID_ULTRA) {
+ } else if (PCIDeviceID == PCI_DEVICE_ID_ASP_ABP940U) {
if (DvcReadPCIConfigByte(asc_dvc,
AscPCIConfigLatencyTimer) < 0x20) {
DvcWritePCIConfigByte(asc_dvc,
@@ -12044,8 +12025,8 @@ AscInitFromAscDvcVar(
AscSetChipCfgMsw(iop_base, cfg_msw);
if ((asc_dvc->bus_type & ASC_IS_PCI_ULTRA) == ASC_IS_PCI_ULTRA) {
} else {
- if ((pci_device_id == ASC_PCI_DEVICE_ID_REV_A) ||
- (pci_device_id == ASC_PCI_DEVICE_ID_REV_B)) {
+ if ((pci_device_id == PCI_DEVICE_ID_ASP_1200A) ||
+ (pci_device_id == PCI_DEVICE_ID_ASP_ABP940)) {
asc_dvc->bug_fix_cntl |= ASC_BUG_FIX_IF_NOT_DWB;
asc_dvc->bug_fix_cntl |= ASC_BUG_FIX_ASYN_USE_SYN;
}
@@ -14282,8 +14263,8 @@ Default_38C0800_EEPROM_Config __initdata
0, /* 55 reserved */
0, /* 56 cisptr_lsw */
0, /* 57 cisprt_msw */
- ADV_PCI_VENDOR_ID, /* 58 subsysvid */
- ADV_PCI_DEVID_38C0800_REV1, /* 59 subsysid */
+ PCI_VENDOR_ID_ASP, /* 58 subsysvid */
+ PCI_DEVICE_ID_38C0800_REV1, /* 59 subsysid */
0, /* 60 reserved */
0, /* 61 reserved */
0, /* 62 reserved */
@@ -14412,8 +14393,8 @@ Default_38C1600_EEPROM_Config __initdata
0, /* 55 reserved */
0, /* 56 cisptr_lsw */
0, /* 57 cisprt_msw */
- ADV_PCI_VENDOR_ID, /* 58 subsysvid */
- ADV_PCI_DEVID_38C1600_REV1, /* 59 subsysid */
+ PCI_VENDOR_ID_ASP, /* 58 subsysvid */
+ PCI_DEVICE_ID_38C1600_REV1, /* 59 subsysid */
0, /* 60 reserved */
0, /* 61 reserved */
0, /* 62 reserved */
The advansys driver needs a lot of TLC. It does all its probing
for devices in a prehistoric way. This patch at least allows
anaconda to recognise that the devices exist.
https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=162431
--- vanilla/drivers/scsi/advansys.c 2005-06-17 15:48:29.000000000 -0400
+++ linux-2.6.12/drivers/scsi/advansys.c 2005-07-05 23:27:48.000000000 -0400
@@ -18232,3 +18213,22 @@ AdvInquiryHandling(
}
}
MODULE_LICENSE("Dual BSD/GPL");
+
+/* PCI Devices supported by this driver */
+static struct pci_device_id advansys_pci_tbl[] __devinitdata = {
+ { PCI_VENDOR_ID_ASP, PCI_DEVICE_ID_ASP_1200A,
+ PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
+ { PCI_VENDOR_ID_ASP, PCI_DEVICE_ID_ASP_ABP940,
+ PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
+ { PCI_VENDOR_ID_ASP, PCI_DEVICE_ID_ASP_ABP940U,
+ PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
+ { PCI_VENDOR_ID_ASP, PCI_DEVICE_ID_ASP_ABP940UW,
+ PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
+ { PCI_VENDOR_ID_ASP, PCI_DEVICE_ID_38C0800_REV1,
+ PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
+ { PCI_VENDOR_ID_ASP, PCI_DEVICE_ID_38C1600_REV1,
+ PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
+ { }
+};
+MODULE_DEVICE_TABLE(pci, advansys_pci_tbl);
+
linux-2.6.13-audit-git.patch:
MAINTAINERS | 5
arch/ppc64/kernel/asm-offsets.c | 1
arch/ppc64/kernel/entry.S | 16 +
fs/namei.c | 2
include/linux/audit.h | 36 ++--
kernel/audit.c | 128 +++++++++------
kernel/auditsc.c | 329 +++++++++++++++++++++++++++-------------
security/selinux/avc.c | 4
security/selinux/hooks.c | 2
security/selinux/ss/services.c | 4
10 files changed, 355 insertions(+), 172 deletions(-)
--- NEW FILE linux-2.6.13-audit-git.patch ---
diff --git a/MAINTAINERS b/MAINTAINERS
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -371,7 +371,10 @@ W: http://atmelwlandriver.sourceforge.ne
S: Maintained
AUDIT SUBSYSTEM
-L: linux-audit at redhat.com (subscribers-only)
+P: David Woodhouse
+M: dwmw2 at infradead.org
+L: linux-audit at redhat.com
+W: http://people.redhat.com/sgrubb/audit/
S: Maintained
AX.25 NETWORK LAYER
diff --git a/arch/ppc64/kernel/asm-offsets.c b/arch/ppc64/kernel/asm-offsets.c
--- a/arch/ppc64/kernel/asm-offsets.c
+++ b/arch/ppc64/kernel/asm-offsets.c
@@ -68,6 +68,7 @@ int main(void)
DEFINE(THREAD_USED_VR, offsetof(struct thread_struct, used_vr));
#endif /* CONFIG_ALTIVEC */
DEFINE(MM, offsetof(struct task_struct, mm));
+ DEFINE(AUDITCONTEXT, offsetof(struct task_struct, audit_context));
DEFINE(DCACHEL1LINESIZE, offsetof(struct ppc64_caches, dline_size));
DEFINE(DCACHEL1LOGLINESIZE, offsetof(struct ppc64_caches, log_dline_size));
diff --git a/arch/ppc64/kernel/entry.S b/arch/ppc64/kernel/entry.S
--- a/arch/ppc64/kernel/entry.S
+++ b/arch/ppc64/kernel/entry.S
@@ -276,12 +276,20 @@ _GLOBAL(ppc64_rt_sigsuspend)
_GLOBAL(ppc32_rt_sigsuspend)
bl .save_nvgprs
bl .sys32_rt_sigsuspend
- /* If sigsuspend() returns zero, we are going into a signal handler */
70: cmpdi 0,r3,0
- beq .ret_from_except
- /* If it returned -EINTR, we need to return via syscall_exit to set
+ /* If it returned an error, we need to return via syscall_exit to set
the SO bit in cr0 and potentially stop for ptrace. */
- b syscall_exit
+ bne syscall_exit
+ /* If sigsuspend() returns zero, we are going into a signal handler. We
+ may need to call audit_syscall_exit() to mark the exit from sigsuspend() */
+ ld r3,PACACURRENT(r13)
+ ld r4,AUDITCONTEXT(r3)
+ cmpdi 0,r4,0
+ beq .ret_from_except /* No audit_context: Leave immediately. */
+ li r4, 2 /* AUDITSC_FAILURE */
+ li r5,-4 /* It's always -EINTR */
+ bl .audit_syscall_exit
+ b .ret_from_except
_GLOBAL(ppc_fork)
bl .save_nvgprs
diff --git a/fs/namei.c b/fs/namei.c
--- a/fs/namei.c
+++ b/fs/namei.c
@@ -1046,7 +1046,7 @@ int fastcall path_lookup(const char *nam
out:
if (unlikely(current->audit_context
&& nd && nd->dentry && nd->dentry->d_inode))
- audit_inode(name, nd->dentry->d_inode);
+ audit_inode(name, nd->dentry->d_inode, flags);
return retval;
}
diff --git a/include/linux/audit.h b/include/linux/audit.h
--- a/include/linux/audit.h
+++ b/include/linux/audit.h
@@ -51,7 +51,8 @@
#define AUDIT_WATCH_LIST 1009 /* List all file/dir watches */
#define AUDIT_SIGNAL_INFO 1010 /* Get info about sender of signal to auditd */
-#define AUDIT_FIRST_USER_MSG 1100 /* Userspace messages uninteresting to kernel */
+#define AUDIT_FIRST_USER_MSG 1100 /* Userspace messages mostly uninteresting to kernel */
+#define AUDIT_USER_AVC 1107 /* We filter this differently */
#define AUDIT_LAST_USER_MSG 1199
#define AUDIT_DAEMON_START 1200 /* Daemon startup record */
@@ -75,10 +76,15 @@
#define AUDIT_KERNEL 2000 /* Asynchronous audit record. NOT A REQUEST. */
/* Rule flags */
-#define AUDIT_PER_TASK 0x01 /* Apply rule at task creation (not syscall) */
-#define AUDIT_AT_ENTRY 0x02 /* Apply rule at syscall entry */
-#define AUDIT_AT_EXIT 0x04 /* Apply rule at syscall exit */
-#define AUDIT_PREPEND 0x10 /* Prepend to front of list */
+#define AUDIT_FILTER_USER 0x00 /* Apply rule to user-generated messages */
+#define AUDIT_FILTER_TASK 0x01 /* Apply rule at task creation (not syscall) */
+#define AUDIT_FILTER_ENTRY 0x02 /* Apply rule at syscall entry */
+#define AUDIT_FILTER_WATCH 0x03 /* Apply rule to file system watches */
+#define AUDIT_FILTER_EXIT 0x04 /* Apply rule at syscall exit */
+
+#define AUDIT_NR_FILTERS 5
+
+#define AUDIT_FILTER_PREPEND 0x10 /* Prepend to front of list */
/* Rule actions */
#define AUDIT_NEVER 0 /* Do not build context if rule matches */
@@ -199,6 +205,7 @@ struct audit_sig_info {
struct audit_buffer;
struct audit_context;
struct inode;
+struct netlink_skb_parms;
#define AUDITSC_INVALID 0
#define AUDITSC_SUCCESS 1
@@ -215,7 +222,7 @@ extern void audit_syscall_entry(struct t
extern void audit_syscall_exit(struct task_struct *task, int failed, long return_code);
extern void audit_getname(const char *name);
extern void audit_putname(const char *name);
-extern void audit_inode(const char *name, const struct inode *inode);
+extern void audit_inode(const char *name, const struct inode *inode, unsigned flags);
/* Private API (for audit.c only) */
extern int audit_receive_filter(int type, int pid, int uid, int seq,
@@ -230,6 +237,7 @@ extern int audit_socketcall(int nargs, u
extern int audit_sockaddr(int len, void *addr);
extern int audit_avc_path(struct dentry *dentry, struct vfsmount *mnt);
extern void audit_signal_info(int sig, struct task_struct *t);
+extern int audit_filter_user(struct netlink_skb_parms *cb, int type);
#else
#define audit_alloc(t) ({ 0; })
#define audit_free(t) do { ; } while (0)
@@ -237,7 +245,7 @@ extern void audit_signal_info(int sig, s
#define audit_syscall_exit(t,f,r) do { ; } while (0)
#define audit_getname(n) do { ; } while (0)
#define audit_putname(n) do { ; } while (0)
-#define audit_inode(n,i) do { ; } while (0)
+#define audit_inode(n,i,f) do { ; } while (0)
#define audit_receive_filter(t,p,u,s,d,l) ({ -EOPNOTSUPP; })
#define auditsc_get_stamp(c,t,s) do { BUG(); } while (0)
#define audit_get_loginuid(c) ({ -1; })
@@ -246,16 +254,17 @@ extern void audit_signal_info(int sig, s
#define audit_sockaddr(len, addr) ({ 0; })
#define audit_avc_path(dentry, mnt) ({ 0; })
#define audit_signal_info(s,t) do { ; } while (0)
+#define audit_filter_user(cb,t) ({ 1; })
#endif
#ifdef CONFIG_AUDIT
/* These are defined in audit.c */
/* Public API */
-extern void audit_log(struct audit_context *ctx, int type,
- const char *fmt, ...)
- __attribute__((format(printf,3,4)));
+extern void audit_log(struct audit_context *ctx, int gfp_mask,
+ int type, const char *fmt, ...)
+ __attribute__((format(printf,4,5)));
-extern struct audit_buffer *audit_log_start(struct audit_context *ctx,int type);
+extern struct audit_buffer *audit_log_start(struct audit_context *ctx, int gfp_mask, int type);
extern void audit_log_format(struct audit_buffer *ab,
const char *fmt, ...)
__attribute__((format(printf,2,3)));
@@ -274,9 +283,10 @@ extern void audit_send_reply(int pi
int done, int multi,
void *payload, int size);
extern void audit_log_lost(const char *message);
+extern struct semaphore audit_netlink_sem;
#else
-#define audit_log(c,t,f,...) do { ; } while (0)
-#define audit_log_start(c,t) ({ NULL; })
+#define audit_log(c,g,t,f,...) do { ; } while (0)
+#define audit_log_start(c,g,t) ({ NULL; })
#define audit_log_vformat(b,f,a) do { ; } while (0)
#define audit_log_format(b,f,...) do { ; } while (0)
#define audit_log_end(b) do { ; } while (0)
diff --git a/kernel/audit.c b/kernel/audit.c
--- a/kernel/audit.c
+++ b/kernel/audit.c
@@ -79,6 +79,8 @@ static int audit_rate_limit;
/* Number of outstanding audit_buffers allowed. */
static int audit_backlog_limit = 64;
+static int audit_backlog_wait_time = 60 * HZ;
+static int audit_backlog_wait_overflow = 0;
/* The identity of the user shutting down the audit system. */
uid_t audit_sig_uid = -1;
@@ -106,18 +108,12 @@ static LIST_HEAD(audit_freelist);
static struct sk_buff_head audit_skb_queue;
static struct task_struct *kauditd_task;
static DECLARE_WAIT_QUEUE_HEAD(kauditd_wait);
-
-/* There are three lists of rules -- one to search at task creation
- * time, one to search at syscall entry time, and another to search at
- * syscall exit time. */
-static LIST_HEAD(audit_tsklist);
-static LIST_HEAD(audit_entlist);
-static LIST_HEAD(audit_extlist);
+static DECLARE_WAIT_QUEUE_HEAD(audit_backlog_wait);
/* The netlink socket is only to be read by 1 CPU, which lets us assume
* that list additions and deletions never happen simultaneously in
* auditsc.c */
-static DECLARE_MUTEX(audit_netlink_sem);
+DECLARE_MUTEX(audit_netlink_sem);
/* AUDIT_BUFSIZ is the size of the temporary buffer used for formatting
* audit records. Since printk uses a 1024 byte buffer, this buffer
@@ -137,6 +133,7 @@ struct audit_buffer {
struct list_head list;
struct sk_buff *skb; /* formatted skb ready to send */
struct audit_context *ctx; /* NULL or associated context */
+ int gfp_mask;
};
static void audit_set_pid(struct audit_buffer *ab, pid_t pid)
@@ -145,11 +142,6 @@ static void audit_set_pid(struct audit_b
nlh->nlmsg_pid = pid;
}
-struct audit_entry {
- struct list_head list;
- struct audit_rule rule;
-};
-
static void audit_panic(const char *message)
{
switch (audit_failure)
@@ -233,7 +225,7 @@ static int audit_set_rate_limit(int limi
{
int old = audit_rate_limit;
audit_rate_limit = limit;
- audit_log(NULL, AUDIT_CONFIG_CHANGE,
+ audit_log(NULL, GFP_KERNEL, AUDIT_CONFIG_CHANGE,
"audit_rate_limit=%d old=%d by auid=%u",
audit_rate_limit, old, loginuid);
return old;
@@ -243,7 +235,7 @@ static int audit_set_backlog_limit(int l
{
int old = audit_backlog_limit;
audit_backlog_limit = limit;
- audit_log(NULL, AUDIT_CONFIG_CHANGE,
+ audit_log(NULL, GFP_KERNEL, AUDIT_CONFIG_CHANGE,
"audit_backlog_limit=%d old=%d by auid=%u",
audit_backlog_limit, old, loginuid);
return old;
@@ -255,7 +247,7 @@ static int audit_set_enabled(int state,
if (state != 0 && state != 1)
return -EINVAL;
audit_enabled = state;
- audit_log(NULL, AUDIT_CONFIG_CHANGE,
+ audit_log(NULL, GFP_KERNEL, AUDIT_CONFIG_CHANGE,
"audit_enabled=%d old=%d by auid=%u",
audit_enabled, old, loginuid);
return old;
@@ -269,7 +261,7 @@ static int audit_set_failure(int state,
&& state != AUDIT_FAIL_PANIC)
return -EINVAL;
audit_failure = state;
- audit_log(NULL, AUDIT_CONFIG_CHANGE,
+ audit_log(NULL, GFP_KERNEL, AUDIT_CONFIG_CHANGE,
"audit_failure=%d old=%d by auid=%u",
audit_failure, old, loginuid);
return old;
@@ -281,6 +273,7 @@ int kauditd_thread(void *dummy)
while (1) {
skb = skb_dequeue(&audit_skb_queue);
+ wake_up(&audit_backlog_wait);
if (skb) {
if (audit_pid) {
int err = netlink_unicast(audit_sock, skb, audit_pid, 0);
@@ -290,7 +283,7 @@ int kauditd_thread(void *dummy)
audit_pid = 0;
}
} else {
- printk(KERN_ERR "%s\n", skb->data + NLMSG_SPACE(0));
+ printk(KERN_NOTICE "%s\n", skb->data + NLMSG_SPACE(0));
kfree_skb(skb);
}
} else {
@@ -423,7 +416,7 @@ static int audit_receive_msg(struct sk_b
if (status_get->mask & AUDIT_STATUS_PID) {
int old = audit_pid;
audit_pid = status_get->pid;
- audit_log(NULL, AUDIT_CONFIG_CHANGE,
+ audit_log(NULL, GFP_KERNEL, AUDIT_CONFIG_CHANGE,
"audit_pid=%d old=%d by auid=%u",
audit_pid, old, loginuid);
}
@@ -435,15 +428,21 @@ static int audit_receive_msg(struct sk_b
break;
case AUDIT_USER:
case AUDIT_FIRST_USER_MSG...AUDIT_LAST_USER_MSG:
- ab = audit_log_start(NULL, msg_type);
- if (!ab)
- break; /* audit_panic has been called */
- audit_log_format(ab,
- "user pid=%d uid=%u auid=%u"
- " msg='%.1024s'",
- pid, uid, loginuid, (char *)data);
- audit_set_pid(ab, pid);
- audit_log_end(ab);
+ if (!audit_enabled && msg_type != AUDIT_USER_AVC)
+ return 0;
+
+ err = audit_filter_user(&NETLINK_CB(skb), msg_type);
+ if (err == 1) {
+ err = 0;
+ ab = audit_log_start(NULL, GFP_KERNEL, msg_type);
+ if (ab) {
+ audit_log_format(ab,
+ "user pid=%d uid=%u auid=%u msg='%.1024s'",
+ pid, uid, loginuid, (char *)data);
+ audit_set_pid(ab, pid);
+ audit_log_end(ab);
+ }
+ }
break;
case AUDIT_ADD:
case AUDIT_DEL:
@@ -522,7 +521,7 @@ static int __init audit_init(void)
skb_queue_head_init(&audit_skb_queue);
audit_initialized = 1;
audit_enabled = audit_default;
- audit_log(NULL, AUDIT_KERNEL, "initialized");
+ audit_log(NULL, GFP_KERNEL, AUDIT_KERNEL, "initialized");
return 0;
}
__initcall(audit_init);
@@ -560,7 +559,7 @@ static void audit_buffer_free(struct aud
}
static struct audit_buffer * audit_buffer_alloc(struct audit_context *ctx,
- int gfp_mask, int type)
+ unsigned int __nocast gfp_mask, int type)
{
unsigned long flags;
struct audit_buffer *ab = NULL;
@@ -586,6 +585,7 @@ static struct audit_buffer * audit_buffe
goto err;
ab->ctx = ctx;
+ ab->gfp_mask = gfp_mask;
nlh = (struct nlmsghdr *)skb_put(ab->skb, NLMSG_SPACE(0));
nlh->nlmsg_type = type;
nlh->nlmsg_flags = 0;
@@ -605,26 +605,27 @@ err:
* (timestamp,serial) tuple is unique for each syscall and is live from
* syscall entry to syscall exit.
*
- * Atomic values are only guaranteed to be 24-bit, so we count down.
- *
* NOTE: Another possibility is to store the formatted records off the
* audit context (for those records that have a context), and emit them
* all at syscall exit. However, this could delay the reporting of
* significant errors until syscall exit (or never, if the system
* halts). */
+
unsigned int audit_serial(void)
{
- static atomic_t serial = ATOMIC_INIT(0xffffff);
- unsigned int a, b;
+ static spinlock_t serial_lock = SPIN_LOCK_UNLOCKED;
+ static unsigned int serial = 0;
+
+ unsigned long flags;
+ unsigned int ret;
+ spin_lock_irqsave(&serial_lock, flags);
do {
- a = atomic_read(&serial);
- if (atomic_dec_and_test(&serial))
- atomic_set(&serial, 0xffffff);
- b = atomic_read(&serial);
- } while (b != a - 1);
+ ret = ++serial;
+ } while (unlikely(!ret));
+ spin_unlock_irqrestore(&serial_lock, flags);
- return 0xffffff - b;
+ return ret;
}
static inline void audit_get_stamp(struct audit_context *ctx,
@@ -644,17 +645,43 @@ static inline void audit_get_stamp(struc
* syscall, then the syscall is marked as auditable and an audit record
* will be written at syscall exit. If there is no associated task, tsk
* should be NULL. */
-struct audit_buffer *audit_log_start(struct audit_context *ctx, int type)
+
+struct audit_buffer *audit_log_start(struct audit_context *ctx, int gfp_mask,
+ int type)
{
struct audit_buffer *ab = NULL;
struct timespec t;
unsigned int serial;
+ int reserve;
+ unsigned long timeout_start = jiffies;
if (!audit_initialized)
return NULL;
- if (audit_backlog_limit
- && skb_queue_len(&audit_skb_queue) > audit_backlog_limit) {
+ if (gfp_mask & __GFP_WAIT)
+ reserve = 0;
+ else
+ reserve = 5; /* Allow atomic callers to go up to five
+ entries over the normal backlog limit */
+
+ while (audit_backlog_limit
+ && skb_queue_len(&audit_skb_queue) > audit_backlog_limit + reserve) {
+ if (gfp_mask & __GFP_WAIT && audit_backlog_wait_time
+ && time_before(jiffies, timeout_start + audit_backlog_wait_time)) {
+
+ /* Wait for auditd to drain the queue a little */
+ DECLARE_WAITQUEUE(wait, current);
+ set_current_state(TASK_INTERRUPTIBLE);
+ add_wait_queue(&audit_backlog_wait, &wait);
+
+ if (audit_backlog_limit &&
+ skb_queue_len(&audit_skb_queue) > audit_backlog_limit)
+ schedule_timeout(timeout_start + audit_backlog_wait_time - jiffies);
+
+ __set_current_state(TASK_RUNNING);
+ remove_wait_queue(&audit_backlog_wait, &wait);
+ continue;
+ }
if (audit_rate_check())
printk(KERN_WARNING
"audit: audit_backlog=%d > "
@@ -662,10 +689,12 @@ struct audit_buffer *audit_log_start(str
skb_queue_len(&audit_skb_queue),
audit_backlog_limit);
audit_log_lost("backlog limit exceeded");
+ audit_backlog_wait_time = audit_backlog_wait_overflow;
+ wake_up(&audit_backlog_wait);
return NULL;
}
- ab = audit_buffer_alloc(ctx, GFP_ATOMIC, type);
+ ab = audit_buffer_alloc(ctx, gfp_mask, type);
if (!ab) {
audit_log_lost("out of memory in audit_log_start");
return NULL;
@@ -689,7 +718,7 @@ static inline int audit_expand(struct au
{
struct sk_buff *skb = ab->skb;
int ret = pskb_expand_head(skb, skb_headroom(skb), extra,
- GFP_ATOMIC);
+ ab->gfp_mask);
if (ret < 0) {
audit_log_lost("out of memory in audit_expand");
return 0;
@@ -808,7 +837,7 @@ void audit_log_d_path(struct audit_buffe
audit_log_format(ab, " %s", prefix);
/* We will allow 11 spaces for ' (deleted)' to be appended */
- path = kmalloc(PATH_MAX+11, GFP_KERNEL);
+ path = kmalloc(PATH_MAX+11, ab->gfp_mask);
if (!path) {
audit_log_format(ab, "<no memory>");
return;
@@ -840,7 +869,7 @@ void audit_log_end(struct audit_buffer *
ab->skb = NULL;
wake_up_interruptible(&kauditd_wait);
} else {
- printk("%s\n", ab->skb->data + NLMSG_SPACE(0));
+ printk(KERN_NOTICE "%s\n", ab->skb->data + NLMSG_SPACE(0));
}
}
audit_buffer_free(ab);
@@ -849,12 +878,13 @@ void audit_log_end(struct audit_buffer *
/* Log an audit record. This is a convenience function that calls
* audit_log_start, audit_log_vformat, and audit_log_end. It may be
* called in any context. */
-void audit_log(struct audit_context *ctx, int type, const char *fmt, ...)
+void audit_log(struct audit_context *ctx, int gfp_mask, int type,
+ const char *fmt, ...)
{
struct audit_buffer *ab;
va_list args;
- ab = audit_log_start(ctx, type);
+ ab = audit_log_start(ctx, gfp_mask, type);
if (ab) {
va_start(args, fmt);
audit_log_vformat(ab, fmt, args);
diff --git a/kernel/auditsc.c b/kernel/auditsc.c
--- a/kernel/auditsc.c
+++ b/kernel/auditsc.c
@@ -39,6 +39,9 @@
#include <linux/audit.h>
#include <linux/personality.h>
#include <linux/time.h>
+#include <linux/kthread.h>
+#include <linux/netlink.h>
+#include <linux/compiler.h>
#include <asm/unistd.h>
/* 0 = no checking
@@ -95,6 +98,7 @@ struct audit_names {
uid_t uid;
gid_t gid;
dev_t rdev;
+ unsigned flags;
};
struct audit_aux_data {
@@ -167,9 +171,16 @@ struct audit_context {
/* There are three lists of rules -- one to search at task creation
* time, one to search at syscall entry time, and another to search at
* syscall exit time. */
-static LIST_HEAD(audit_tsklist);
-static LIST_HEAD(audit_entlist);
-static LIST_HEAD(audit_extlist);
+static struct list_head audit_filter_list[AUDIT_NR_FILTERS] = {
+ LIST_HEAD_INIT(audit_filter_list[0]),
+ LIST_HEAD_INIT(audit_filter_list[1]),
+ LIST_HEAD_INIT(audit_filter_list[2]),
+ LIST_HEAD_INIT(audit_filter_list[3]),
+ LIST_HEAD_INIT(audit_filter_list[4]),
+#if AUDIT_NR_FILTERS != 5
+#error Fix audit_filter_list initialiser
+#endif
+};
struct audit_entry {
struct list_head list;
@@ -179,9 +190,36 @@ struct audit_entry {
extern int audit_pid;
+/* Copy rule from user-space to kernel-space. Called from
+ * audit_add_rule during AUDIT_ADD. */
+static inline int audit_copy_rule(struct audit_rule *d, struct audit_rule *s)
+{
+ int i;
+
+ if (s->action != AUDIT_NEVER
+ && s->action != AUDIT_POSSIBLE
+ && s->action != AUDIT_ALWAYS)
+ return -1;
+ if (s->field_count < 0 || s->field_count > AUDIT_MAX_FIELDS)
+ return -1;
+ if ((s->flags & ~AUDIT_FILTER_PREPEND) >= AUDIT_NR_FILTERS)
+ return -1;
+
+ d->flags = s->flags;
+ d->action = s->action;
+ d->field_count = s->field_count;
+ for (i = 0; i < d->field_count; i++) {
+ d->fields[i] = s->fields[i];
+ d->values[i] = s->values[i];
+ }
+ for (i = 0; i < AUDIT_BITMASK_SIZE; i++) d->mask[i] = s->mask[i];
+ return 0;
+}
+
/* Check to see if two rules are identical. It is called from
+ * audit_add_rule during AUDIT_ADD and
* audit_del_rule during AUDIT_DEL. */
-static int audit_compare_rule(struct audit_rule *a, struct audit_rule *b)
+static inline int audit_compare_rule(struct audit_rule *a, struct audit_rule *b)
{
int i;
@@ -210,19 +248,37 @@ static int audit_compare_rule(struct aud
/* Note that audit_add_rule and audit_del_rule are called via
* audit_receive() in audit.c, and are protected by
* audit_netlink_sem. */
-static inline int audit_add_rule(struct audit_entry *entry,
- struct list_head *list)
+static inline int audit_add_rule(struct audit_rule *rule,
+ struct list_head *list)
{
- if (entry->rule.flags & AUDIT_PREPEND) {
- entry->rule.flags &= ~AUDIT_PREPEND;
+ struct audit_entry *entry;
+
+ /* Do not use the _rcu iterator here, since this is the only
+ * addition routine. */
+ list_for_each_entry(entry, list, list) {
+ if (!audit_compare_rule(rule, &entry->rule)) {
+ return -EEXIST;
+ }
+ }
+
+ if (!(entry = kmalloc(sizeof(*entry), GFP_KERNEL)))
+ return -ENOMEM;
+ if (audit_copy_rule(&entry->rule, rule)) {
+ kfree(entry);
+ return -EINVAL;
+ }
+
+ if (entry->rule.flags & AUDIT_FILTER_PREPEND) {
+ entry->rule.flags &= ~AUDIT_FILTER_PREPEND;
list_add_rcu(&entry->list, list);
} else {
list_add_tail_rcu(&entry->list, list);
}
+
return 0;
}
-static void audit_free_rule(struct rcu_head *head)
+static inline void audit_free_rule(struct rcu_head *head)
{
struct audit_entry *e = container_of(head, struct audit_entry, rcu);
kfree(e);
@@ -245,82 +301,82 @@ static inline int audit_del_rule(struct
return 0;
}
}
- return -EFAULT; /* No matching rule */
+ return -ENOENT; /* No matching rule */
}
-/* Copy rule from user-space to kernel-space. Called during
- * AUDIT_ADD. */
-static int audit_copy_rule(struct audit_rule *d, struct audit_rule *s)
+static int audit_list_rules(void *_dest)
{
+ int pid, seq;
+ int *dest = _dest;
+ struct audit_entry *entry;
int i;
- if (s->action != AUDIT_NEVER
- && s->action != AUDIT_POSSIBLE
- && s->action != AUDIT_ALWAYS)
- return -1;
- if (s->field_count < 0 || s->field_count > AUDIT_MAX_FIELDS)
- return -1;
-
- d->flags = s->flags;
- d->action = s->action;
- d->field_count = s->field_count;
- for (i = 0; i < d->field_count; i++) {
- d->fields[i] = s->fields[i];
- d->values[i] = s->values[i];
+ pid = dest[0];
+ seq = dest[1];
+ kfree(dest);
+
+ down(&audit_netlink_sem);
+
+ /* The *_rcu iterators not needed here because we are
+ always called with audit_netlink_sem held. */
+ for (i=0; i<AUDIT_NR_FILTERS; i++) {
+ list_for_each_entry(entry, &audit_filter_list[i], list)
+ audit_send_reply(pid, seq, AUDIT_LIST, 0, 1,
+ &entry->rule, sizeof(entry->rule));
}
- for (i = 0; i < AUDIT_BITMASK_SIZE; i++) d->mask[i] = s->mask[i];
+ audit_send_reply(pid, seq, AUDIT_LIST, 1, 1, NULL, 0);
+
+ up(&audit_netlink_sem);
return 0;
}
int audit_receive_filter(int type, int pid, int uid, int seq, void *data,
uid_t loginuid)
{
- u32 flags;
- struct audit_entry *entry;
+ struct task_struct *tsk;
+ int *dest;
int err = 0;
+ unsigned listnr;
switch (type) {
case AUDIT_LIST:
- /* The *_rcu iterators not needed here because we are
- always called with audit_netlink_sem held. */
- list_for_each_entry(entry, &audit_tsklist, list)
- audit_send_reply(pid, seq, AUDIT_LIST, 0, 1,
- &entry->rule, sizeof(entry->rule));
- list_for_each_entry(entry, &audit_entlist, list)
- audit_send_reply(pid, seq, AUDIT_LIST, 0, 1,
- &entry->rule, sizeof(entry->rule));
- list_for_each_entry(entry, &audit_extlist, list)
- audit_send_reply(pid, seq, AUDIT_LIST, 0, 1,
- &entry->rule, sizeof(entry->rule));
- audit_send_reply(pid, seq, AUDIT_LIST, 1, 1, NULL, 0);
+ /* We can't just spew out the rules here because we might fill
+ * the available socket buffer space and deadlock waiting for
+ * auditctl to read from it... which isn't ever going to
+ * happen if we're actually running in the context of auditctl
+ * trying to _send_ the stuff */
+
+ dest = kmalloc(2 * sizeof(int), GFP_KERNEL);
+ if (!dest)
+ return -ENOMEM;
+ dest[0] = pid;
+ dest[1] = seq;
+
+ tsk = kthread_run(audit_list_rules, dest, "audit_list_rules");
+ if (IS_ERR(tsk)) {
+ kfree(dest);
+ err = PTR_ERR(tsk);
+ }
break;
case AUDIT_ADD:
- if (!(entry = kmalloc(sizeof(*entry), GFP_KERNEL)))
- return -ENOMEM;
- if (audit_copy_rule(&entry->rule, data)) {
- kfree(entry);
+ listnr =((struct audit_rule *)data)->flags & ~AUDIT_FILTER_PREPEND;
+ if (listnr >= AUDIT_NR_FILTERS)
return -EINVAL;
- }
- flags = entry->rule.flags;
- if (!err && (flags & AUDIT_PER_TASK))
- err = audit_add_rule(entry, &audit_tsklist);
- if (!err && (flags & AUDIT_AT_ENTRY))
- err = audit_add_rule(entry, &audit_entlist);
- if (!err && (flags & AUDIT_AT_EXIT))
- err = audit_add_rule(entry, &audit_extlist);
- audit_log(NULL, AUDIT_CONFIG_CHANGE,
- "auid=%u added an audit rule\n", loginuid);
+
+ err = audit_add_rule(data, &audit_filter_list[listnr]);
+ if (!err)
+ audit_log(NULL, GFP_KERNEL, AUDIT_CONFIG_CHANGE,
+ "auid=%u added an audit rule\n", loginuid);
break;
case AUDIT_DEL:
- flags =((struct audit_rule *)data)->flags;
- if (!err && (flags & AUDIT_PER_TASK))
- err = audit_del_rule(data, &audit_tsklist);
- if (!err && (flags & AUDIT_AT_ENTRY))
- err = audit_del_rule(data, &audit_entlist);
- if (!err && (flags & AUDIT_AT_EXIT))
- err = audit_del_rule(data, &audit_extlist);
- audit_log(NULL, AUDIT_CONFIG_CHANGE,
- "auid=%u removed an audit rule\n", loginuid);
+ listnr =((struct audit_rule *)data)->flags & ~AUDIT_FILTER_PREPEND;
+ if (listnr >= AUDIT_NR_FILTERS)
+ return -EINVAL;
+
+ err = audit_del_rule(data, &audit_filter_list[listnr]);
+ if (!err)
+ audit_log(NULL, GFP_KERNEL, AUDIT_CONFIG_CHANGE,
+ "auid=%u removed an audit rule\n", loginuid);
break;
default:
return -EINVAL;
@@ -384,8 +440,12 @@ static int audit_filter_rules(struct tas
result = (ctx->return_code == value);
break;
case AUDIT_SUCCESS:
- if (ctx && ctx->return_valid)
- result = (ctx->return_valid == AUDITSC_SUCCESS);
+ if (ctx && ctx->return_valid) {
+ if (value)
+ result = (ctx->return_valid == AUDITSC_SUCCESS);
+ else
+ result = (ctx->return_valid == AUDITSC_FAILURE);
+ }
break;
case AUDIT_DEVMAJOR:
if (ctx) {
@@ -454,7 +514,7 @@ static enum audit_state audit_filter_tas
enum audit_state state;
rcu_read_lock();
- list_for_each_entry_rcu(e, &audit_tsklist, list) {
+ list_for_each_entry_rcu(e, &audit_filter_list[AUDIT_FILTER_TASK], list) {
if (audit_filter_rules(tsk, &e->rule, NULL, &state)) {
rcu_read_unlock();
return state;
@@ -474,20 +534,84 @@ static enum audit_state audit_filter_sys
struct list_head *list)
{
struct audit_entry *e;
+ enum audit_state state;
+
+ if (audit_pid && tsk->tgid == audit_pid)
+ return AUDIT_DISABLED;
+
+ rcu_read_lock();
+ if (!list_empty(list)) {
+ int word = AUDIT_WORD(ctx->major);
+ int bit = AUDIT_BIT(ctx->major);
+
+ list_for_each_entry_rcu(e, list, list) {
+ if ((e->rule.mask[word] & bit) == bit
+ && audit_filter_rules(tsk, &e->rule, ctx, &state)) {
+ rcu_read_unlock();
+ return state;
+ }
+ }
+ }
+ rcu_read_unlock();
+ return AUDIT_BUILD_CONTEXT;
+}
+
+static int audit_filter_user_rules(struct netlink_skb_parms *cb,
+ struct audit_rule *rule,
+ enum audit_state *state)
+{
+ int i;
+
+ for (i = 0; i < rule->field_count; i++) {
+ u32 field = rule->fields[i] & ~AUDIT_NEGATE;
+ u32 value = rule->values[i];
+ int result = 0;
+
+ switch (field) {
+ case AUDIT_PID:
+ result = (cb->creds.pid == value);
+ break;
+ case AUDIT_UID:
+ result = (cb->creds.uid == value);
+ break;
+ case AUDIT_GID:
+ result = (cb->creds.gid == value);
+ break;
+ case AUDIT_LOGINUID:
+ result = (cb->loginuid == value);
+ break;
+ }
+
+ if (rule->fields[i] & AUDIT_NEGATE)
+ result = !result;
+ if (!result)
+ return 0;
+ }
+ switch (rule->action) {
+ case AUDIT_NEVER: *state = AUDIT_DISABLED; break;
+ case AUDIT_POSSIBLE: *state = AUDIT_BUILD_CONTEXT; break;
+ case AUDIT_ALWAYS: *state = AUDIT_RECORD_CONTEXT; break;
+ }
+ return 1;
+}
+
+int audit_filter_user(struct netlink_skb_parms *cb, int type)
+{
+ struct audit_entry *e;
enum audit_state state;
- int word = AUDIT_WORD(ctx->major);
- int bit = AUDIT_BIT(ctx->major);
+ int ret = 1;
rcu_read_lock();
- list_for_each_entry_rcu(e, list, list) {
- if ((e->rule.mask[word] & bit) == bit
- && audit_filter_rules(tsk, &e->rule, ctx, &state)) {
- rcu_read_unlock();
- return state;
+ list_for_each_entry_rcu(e, &audit_filter_list[AUDIT_FILTER_USER], list) {
+ if (audit_filter_user_rules(cb, &e->rule, &state)) {
+ if (state == AUDIT_DISABLED)
+ ret = 0;
+ break;
}
}
rcu_read_unlock();
- return AUDIT_BUILD_CONTEXT;
+
+ return ret; /* Audit by default */
}
/* This should be called with task_lock() held. */
@@ -504,7 +628,7 @@ static inline struct audit_context *audi
if (context->in_syscall && !context->auditable) {
enum audit_state state;
- state = audit_filter_syscall(tsk, context, &audit_extlist);
+ state = audit_filter_syscall(tsk, context, &audit_filter_list[AUDIT_FILTER_EXIT]);
if (state == AUDIT_RECORD_CONTEXT)
context->auditable = 1;
}
@@ -679,13 +803,13 @@ static void audit_log_task_info(struct a
up_read(&mm->mmap_sem);
}
-static void audit_log_exit(struct audit_context *context)
+static void audit_log_exit(struct audit_context *context, unsigned int gfp_mask)
{
int i;
struct audit_buffer *ab;
struct audit_aux_data *aux;
- ab = audit_log_start(context, AUDIT_SYSCALL);
+ ab = audit_log_start(context, gfp_mask, AUDIT_SYSCALL);
if (!ab)
return; /* audit_panic has been called */
audit_log_format(ab, "arch=%x syscall=%d",
@@ -717,7 +841,7 @@ static void audit_log_exit(struct audit_
for (aux = context->aux; aux; aux = aux->next) {
- ab = audit_log_start(context, aux->type);
+ ab = audit_log_start(context, GFP_KERNEL, aux->type);
if (!ab)
continue; /* audit_panic has been called */
@@ -754,14 +878,14 @@ static void audit_log_exit(struct audit_
}
if (context->pwd && context->pwdmnt) {
- ab = audit_log_start(context, AUDIT_CWD);
+ ab = audit_log_start(context, GFP_KERNEL, AUDIT_CWD);
if (ab) {
audit_log_d_path(ab, "cwd=", context->pwd, context->pwdmnt);
audit_log_end(ab);
}
}
for (i = 0; i < context->name_count; i++) {
- ab = audit_log_start(context, AUDIT_PATH);
+ ab = audit_log_start(context, GFP_KERNEL, AUDIT_PATH);
if (!ab)
continue; /* audit_panic has been called */
@@ -770,6 +894,8 @@ static void audit_log_exit(struct audit_
audit_log_format(ab, " name=");
audit_log_untrustedstring(ab, context->names[i].name);
}
+ audit_log_format(ab, " flags=%x\n", context->names[i].flags);
+
if (context->names[i].ino != (unsigned long)-1)
audit_log_format(ab, " inode=%lu dev=%02x:%02x mode=%#o"
" ouid=%u ogid=%u rdev=%02x:%02x",
@@ -799,9 +925,11 @@ void audit_free(struct task_struct *tsk)
return;
/* Check for system calls that do not go through the exit
- * function (e.g., exit_group), then free context block. */
- if (context->in_syscall && context->auditable && context->pid != audit_pid)
- audit_log_exit(context);
+ * function (e.g., exit_group), then free context block.
+ * We use GFP_ATOMIC here because we might be doing this
+ * in the context of the idle thread */
+ if (context->in_syscall && context->auditable)
+ audit_log_exit(context, GFP_ATOMIC);
audit_free_context(context);
}
@@ -876,11 +1004,11 @@ void audit_syscall_entry(struct task_str
state = context->state;
if (state == AUDIT_SETUP_CONTEXT || state == AUDIT_BUILD_CONTEXT)
- state = audit_filter_syscall(tsk, context, &audit_entlist);
+ state = audit_filter_syscall(tsk, context, &audit_filter_list[AUDIT_FILTER_ENTRY]);
if (likely(state == AUDIT_DISABLED))
return;
- context->serial = audit_serial();
+ context->serial = 0;
context->ctime = CURRENT_TIME;
context->in_syscall = 1;
context->auditable = !!(state == AUDIT_RECORD_CONTEXT);
@@ -903,10 +1031,10 @@ void audit_syscall_exit(struct task_stru
/* Not having a context here is ok, since the parent may have
* called __put_task_struct. */
if (likely(!context))
- return;
+ goto out;
- if (context->in_syscall && context->auditable && context->pid != audit_pid)
- audit_log_exit(context);
+ if (context->in_syscall && context->auditable)
+ audit_log_exit(context, GFP_KERNEL);
context->in_syscall = 0;
context->auditable = 0;
@@ -919,9 +1047,9 @@ void audit_syscall_exit(struct task_stru
} else {
audit_free_names(context);
audit_free_aux(context);
- audit_zero_context(context, context->state);
tsk->audit_context = context;
}
+ out:
put_task_struct(tsk);
}
@@ -996,7 +1124,7 @@ void audit_putname(const char *name)
/* Store the inode and device from a lookup. Called from
* fs/namei.c:path_lookup(). */
-void audit_inode(const char *name, const struct inode *inode)
+void audit_inode(const char *name, const struct inode *inode, unsigned flags)
{
int idx;
struct audit_context *context = current->audit_context;
@@ -1022,17 +1150,20 @@ void audit_inode(const char *name, const
++context->ino_count;
#endif
}
- context->names[idx].ino = inode->i_ino;
- context->names[idx].dev = inode->i_sb->s_dev;
- context->names[idx].mode = inode->i_mode;
- context->names[idx].uid = inode->i_uid;
- context->names[idx].gid = inode->i_gid;
- context->names[idx].rdev = inode->i_rdev;
+ context->names[idx].flags = flags;
+ context->names[idx].ino = inode->i_ino;
+ context->names[idx].dev = inode->i_sb->s_dev;
+ context->names[idx].mode = inode->i_mode;
+ context->names[idx].uid = inode->i_uid;
+ context->names[idx].gid = inode->i_gid;
+ context->names[idx].rdev = inode->i_rdev;
}
void auditsc_get_stamp(struct audit_context *ctx,
struct timespec *t, unsigned int *serial)
{
+ if (!ctx->serial)
+ ctx->serial = audit_serial();
t->tv_sec = ctx->ctime.tv_sec;
t->tv_nsec = ctx->ctime.tv_nsec;
*serial = ctx->serial;
@@ -1044,7 +1175,7 @@ int audit_set_loginuid(struct task_struc
if (task->audit_context) {
struct audit_buffer *ab;
- ab = audit_log_start(NULL, AUDIT_LOGIN);
+ ab = audit_log_start(NULL, GFP_KERNEL, AUDIT_LOGIN);
if (ab) {
audit_log_format(ab, "login pid=%d uid=%u "
"old auid=%u new auid=%u",
@@ -1153,7 +1284,7 @@ void audit_signal_info(int sig, struct t
extern pid_t audit_sig_pid;
extern uid_t audit_sig_uid;
- if (unlikely(audit_pid && t->pid == audit_pid)) {
+ if (unlikely(audit_pid && t->tgid == audit_pid)) {
if (sig == SIGTERM || sig == SIGHUP) {
struct audit_context *ctx = current->audit_context;
audit_sig_pid = current->pid;
diff --git a/security/selinux/avc.c b/security/selinux/avc.c
--- a/security/selinux/avc.c
+++ b/security/selinux/avc.c
@@ -242,7 +242,7 @@ void __init avc_init(void)
avc_node_cachep = kmem_cache_create("avc_node", sizeof(struct avc_node),
0, SLAB_PANIC, NULL, NULL);
- audit_log(current->audit_context, AUDIT_KERNEL, "AVC INITIALIZED\n");
+ audit_log(current->audit_context, GFP_KERNEL, AUDIT_KERNEL, "AVC INITIALIZED\n");
}
int avc_get_hash_stats(char *page)
@@ -550,7 +550,7 @@ void avc_audit(u32 ssid, u32 tsid,
return;
}
- ab = audit_log_start(current->audit_context, AUDIT_AVC);
+ ab = audit_log_start(current->audit_context, GFP_ATOMIC, AUDIT_AVC);
if (!ab)
return; /* audit_panic has been called */
audit_log_format(ab, "avc: %s ", denied ? "denied" : "granted");
diff --git a/security/selinux/hooks.c b/security/selinux/hooks.c
--- a/security/selinux/hooks.c
+++ b/security/selinux/hooks.c
@@ -3442,7 +3442,7 @@ static int selinux_nlmsg_perm(struct soc
err = selinux_nlmsg_lookup(isec->sclass, nlh->nlmsg_type, &perm);
if (err) {
if (err == -EINVAL) {
- audit_log(current->audit_context, AUDIT_SELINUX_ERR,
+ audit_log(current->audit_context, GFP_KERNEL, AUDIT_SELINUX_ERR,
"SELinux: unrecognized netlink message"
" type=%hu for sclass=%hu\n",
nlh->nlmsg_type, isec->sclass);
diff --git a/security/selinux/ss/services.c b/security/selinux/ss/services.c
--- a/security/selinux/ss/services.c
+++ b/security/selinux/ss/services.c
@@ -365,7 +365,7 @@ static int security_validtrans_handle_fa
goto out;
if (context_struct_to_string(tcontext, &t, &tlen) < 0)
goto out;
- audit_log(current->audit_context, AUDIT_SELINUX_ERR,
+ audit_log(current->audit_context, GFP_ATOMIC, AUDIT_SELINUX_ERR,
"security_validate_transition: denied for"
" oldcontext=%s newcontext=%s taskcontext=%s tclass=%s",
o, n, t, policydb.p_class_val_to_name[tclass-1]);
@@ -771,7 +771,7 @@ static int compute_sid_handle_invalid_co
goto out;
if (context_struct_to_string(newcontext, &n, &nlen) < 0)
goto out;
- audit_log(current->audit_context, AUDIT_SELINUX_ERR,
+ audit_log(current->audit_context, GFP_ATOMIC, AUDIT_SELINUX_ERR,
"security_compute_sid: invalid context %s"
" for scontext=%s"
" tcontext=%s"
--- NEW FILE linux-2.6.13.tar.bz2.sign ---
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.6 (GNU/Linux)
Comment: See http://www.kernel.org/signature.html for info
iD8DBQBDElIWyGugalF9Dw4RApe/AJ418agzvXnbZyZg5s8LD/17PPEgbgCgi7H7
nS+lRuZ5mc6LfAV+jSqG3JI=
=ZRIY
-----END PGP SIGNATURE-----
--- NEW FILE patch-2.6.13.2.bz2.sign ---
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.6 (GNU/Linux)
Comment: See http://www.kernel.org/signature.html for info
iD8DBQBDLSfmyGugalF9Dw4RAsogAJwNc6z8dyNKx4PIZDHaukmB9RC2JgCeK1nq
T6Z6CTjg6O530O2pekdfbUg=
=4zNz
-----END PGP SIGNATURE-----
Index: .cvsignore
===================================================================
RCS file: /cvs/dist/rpms/kernel/FC-4/.cvsignore,v
retrieving revision 1.157
retrieving revision 1.158
diff -u -r1.157 -r1.158
--- .cvsignore 15 Aug 2005 05:56:56 -0000 1.157
+++ .cvsignore 29 Sep 2005 23:04:12 -0000 1.158
@@ -1,10 +1,7 @@
linux-2.6.*.tar.bz2
-patch-2.6.*-bk*.bz2
patch-2.6.*-rc*.bz2
-patch-2.6.*-final*.bz2
kernel-2.6.*.config
temp-*
-kernel-2.6.12
-linux-2.6.12.tar.bz2
-linux-2.6-acpi-20050729.patch.bz2
-patch-2.6.12.5.bz2
+kernel-2.6.13
+linux-2.6.13.tar.bz2
+patch-2.6.13.2.bz2
Index: kernel-2.6.spec
===================================================================
RCS file: /cvs/dist/rpms/kernel/FC-4/kernel-2.6.spec,v
retrieving revision 1.1456
retrieving revision 1.1457
diff -u -r1.1456 -r1.1457
--- kernel-2.6.spec 22 Sep 2005 06:05:24 -0000 1.1456
+++ kernel-2.6.spec 29 Sep 2005 23:04:13 -0000 1.1457
@@ -3,14 +3,9 @@
# What parts do we want to build? We must build at least one kernel.
# These are the kernels that are built IF the architecture allows it.
-%define FC3 0
-%define FC4 1
-
%define buildup 1
%define buildsmp 1
-%if %{FC4}
%define includexen 1
-%endif
%define builddoc 0
# Versions of various parts
@@ -21,16 +16,11 @@
# that the kernel isn't the stock distribution kernel, for example by
# adding some text to the end of the version number.
#
-%define sublevel 12
+%define sublevel 13
%define kversion 2.6.%{sublevel}
%define rpmversion 2.6.%{sublevel}
-%define rhbsys %([ -r /etc/beehive-root -o -n "%{?__beehive_build}" ] && echo || echo .`whoami`)
-%if %{FC3}
-%define release %(R="$Revision$"; RR="${R##: }"; echo ${RR%%?})_FC3%{rhbsys}
-%endif
-%if %{FC4}
+%define rhbsys %([ -r /etc/beehive-root -o -n "%{?__beehive_build}" ] && echo || echo .`whoami`@`hostname -s|sed s/-//`)
%define release %(R="$Revision$"; RR="${R##: }"; echo ${RR%%?})_FC4%{rhbsys}
-%endif
%define signmodules 0
%define make_target bzImage
@@ -163,7 +153,7 @@
License: GPLv2
Version: %{rpmversion}
Release: %{release}
-ExclusiveArch: noarch %{all_x86} x86_64 ppc ppc64 ppc64iseries sparc sparc64
+ExclusiveArch: noarch %{all_x86} x86_64 ppc ppc64 sparc sparc64
ExclusiveOS: Linux
Provides: kernel = %{version}
Provides: kernel-drm = 4.3.0
@@ -213,10 +203,11 @@
#
# Patches 0 through 100 are meant for core subsystem upgrades
#
-Patch1: patch-2.6.12.5.bz2
-Patch2: patch-2.6.12.6pre.patch
+Patch1: patch-2.6.13.2.bz2
# Patches 100 through 500 are meant for architecture patches
+Patch100: linux-2.6-bzimage.patch
+Patch101: linux-2.6.13-audit-git.patch
# 200 - 299 x86(-64)
@@ -227,18 +218,10 @@
Patch300: linux-2.6.2-ppc64-build.patch
Patch301: linux-2.6.12-serial-of.patch
Patch302: linux-2.6.10-ppc-headerabuse.patch
-Patch303: linux-2.6-windtunnel-printk.patch
# 400 - 499 ia64
-Patch400: linux-2.6.3-ia64-build.patch
-
# 500 - 599 s390(x)
-Patch500: linux-2.6.1-s390-compile.patch
-Patch501: linux-2.6.9-s390-autoraid.patch
-Patch502: linux-2.6.9-s390-zfcp_port-fix.patch
-
# 600 - 699 sparc(64)
-Patch600: linux-2.6.3-sparc-addbzimage.patch
# 700 - 799 Xen
Patch700: linux-2.6.12-xen.patch
@@ -246,11 +229,14 @@
Patch702: linux-2.6.9-xen-compile.patch
#
-# Patches 500 through 1000 are reserved for bugfixes to the core system
+# Patches 800 through 899 are reserved for bugfixes to the core system
# and patches related to how RPMs are build
#
-Patch800: linux-2.4.0-nonintconfig.patch
-Patch801: linux-2.6.0-must_check.patch
+Patch800: linux-2.6-build-nonintconfig.patch
+Patch801: linux-2.6-build-userspace-headers-warning.patch
+Patch802: linux-2.6-build-qconfig-qt-lib64.patch
+Patch803: linux-2.6-build-reference-discarded-debug_loc.patch
+Patch804: linux-2.6-build-reference-discarded-opd.patch
Patch810: linux-2.6.11-execshield.patch
Patch811: linux-2.6.10-x86_64-read-implies-exec32.patch
@@ -267,15 +253,26 @@
Patch905: linux-2.6.7-modsign-include.patch
# Tux http accelerator.
-Patch910: linux-2.6.11-tux.patch
+Patch910: linux-2.6-tux.patch
#
# Patches 1000 to 5000 are reserved for bugfixes to drivers and filesystems
#
Patch1000: linux-2.4.0-test11-vidfail.patch
-Patch1010: linux-2.6.10-periodic-slab-debug.patch
-Patch1011: linux-2.6.11-slab-backtrace.patch
-Patch1020: linux-2.6.4-stackusage.patch
+
+Patch1010: linux-2.6-debug-periodic-slab-check.patch
+Patch1011: linux-2.6-debug-slab-backtrace.patch
+Patch1012: linux-2.6-debug-list_head.patch
+Patch1013: linux-2.6-debug-taint-vm.patch
+Patch1014: linux-2.6-debug-taint-check.patch
+Patch1015: linux-2.6-debug-singlebiterror.patch
+Patch1016: linux-2.6-debug-detect-softlockups.patch
+Patch1017: linux-2.6-debug-spinlock-taint.patch
+Patch1018: linux-2.6-debug-spinlock-panic.patch
+Patch1019: linux-2.6-debug-Wundef.patch
+Patch1020: linux-2.6-debug-disable-builtins.patch
+Patch1021: linux-2.6-debug-sleep-in-irq-warning.patch
+Patch1022: linux-2.6-debug-reference-discarded-return-result.patch
Patch1050: linux-2.6.11-devmem.patch
Patch1051: linux-2.6.8-devmem-xen.patch
@@ -284,35 +281,28 @@
Patch1061: linux-2.6.10-crash-xen.patch
Patch1070: linux-2.6.0-sleepon.patch
+# Tweak some defaults.
+Patch1080: linux-2.6.11-default-elevator.patch
+Patch1081: linux-2.6-max-symlinks.patch
+Patch1082: linux-2.6-optimise-for-size.patch
+
# SCSI bits.
Patch1101: linux-2.6.9-scsi-advansys-enabler.patch
Patch1102: linux-2.6.9-scsi-megaraid-legacy.patch
Patch1103: linux-2.6.12-scsi-blacklist.patch
-Patch1104: linux-2.6.12-scsicam-geom-fix.patch
-Patch1105: linux-2.6-scsi-sym2-alloc_lcb_tags-atomic.patch
+Patch1104: linux-2.6.12-scsi-advansys-pcitable.patch
Patch1106: linux-2.6-scsi-aic-dma39bit.patch
# NFS bits.
Patch1200: linux-2.6.9-NFSD-non-null-getxattr.patch
-Patch1201: linux-2.6.8-lockd-racewarn2.patch
-Patch1202: linux-2.6.9-lockd-block-nosleep.patch
-Patch1203: linux-2.6.9-lockd-reclaims.patch
-Patch1204: linux-2.6.12-nfsd-ctlbits.patch
-Patch1205: linux-2.6-nfs-enoent.patch
# NIC driver updates
-Patch1300: linux-2.6.9-net-tr-irqlock-fix.patch
Patch1301: linux-2.6.12-net-sundance-ip100A.patch
-Patch1302: linux-2.6.12-net-make-orinoco-suck-less.patch
-Patch1304: linux-2.6.12-net-atm-lanai-nodev-rmmod.patch
+Patch1302: linux-2.6.12-net-atm-lanai-nodev-rmmod.patch
+Patch1303: linux-2.6-net-acenic-use-after-free.patch
# USB bits
-Patch1400: linux-2.6.12-usb-old_scheme_first.patch
-Patch1401: linux-2.6.12-rc3-ehci-misc-updates.patch
-Patch1402: linux-2.6.11-random-ehci-patch.patch
-Patch1403: linux-2.6-usbmon-deficiency-workaround.patch
-Patch1404: linux-2.6-usbhid-wireless-security-lock.patch
-Patch1405: linux-2.6-usb-transcend-nosense.patch
+Patch1400: linux-2.6-usbmon-deficiency-workaround.patch
# Netdump and Diskdump bits.
Patch1500: linux-2.6-crashdump-common.patch
@@ -323,59 +313,48 @@
Patch1505: linux-2.6-dump_smp_call_function.patch
# Misc bits.
-Patch1600: linux-2.6.11-i2c-config.patch
-Patch1610: linux-2.6.11-atkbd-dell-multimedia.patch
-Patch1620: linux-2.6.11-isdn-icn-nodev.patch
-Patch1640: linux-2.6.11-panic-stackdump.patch
-Patch1700: linux-2.6.10-revert-module-invalidparam.patch
-Patch1710: linux-2.6.12rc-ac-ide-fixes.patch
-Patch1711: linux-2.6-ide-tune-locking.patch
-Patch1712: linux-2.6-ide-scsi-check_condition.patch
-Patch1720: linux-2.6.9-module_version.patch
-Patch1730: linux-2.6.9-spinlock-debug-panic.patch
-Patch1740: linux-2.6.11-default-elevator.patch
-Patch1770: linux-2.6.11-taint-check.patch
-Patch1800: linux-2.6.11-parport-sysctl-perms.patch
-Patch1801: linux-2.6-procfs-i_nlink-miscalculate.patch
-Patch1810: linux-2.6.11-libata-promise-pata-on-sata.patch
-Patch1820: linux-2.6.12-input-kill-stupid-messages.patch
-Patch1830: linux-2.6.12-audit-merge.patch
-Patch1831: linux-2.6.13-rc3-audit-git.patch
-Patch1860: linux-2.6.11-serial-tickle-nmi.patch
-Patch1870: linux-2.6.12-missing-exports.patch
-Patch1880: linux-2.6.11-radeon-backlight.patch
-Patch1890: linux-2.6.12-firedire-init-breakage.patch
-Patch1900: linux-2.6.12-pwc-warning.patch
-Patch1910: linux-2.6.12-ns558-nodev-rmmod.patch
-Patch1930: linux-2.6-appletouch-update.patch
-Patch1940: linux-2.6-powernow-k8-update.patch
-Patch1950: linux-2.6-selinux-addrlen-checks.patch
-Patch1960: linux-2.6-input-alps-typo.patch
-
-Patch2000: linux-2.6.11-vm-taint.patch
-Patch2001: linux-2.6.9-vm-oomkiller-debugging.patch
-Patch2002: linux-2.6.12-vm-singlebiterror.patch
-
-Patch2100: linux-2.6-acpi-20050729.patch.bz2
-Patch2101: linux-2.6-acpi-xen.patch
-Patch2102: linux-2.6-acpi-rollup-20050902.patch
-Patch2110: linux-2.6.11-acpi-thinkpad-c2c3.patch
-
-Patch2200: linux-2.6-alsa-snd-intel8x0m-semaphore.patch
-
-Patch2999: linux-2.6.3-printopen.patch
-
-Patch3000: linux-2.6-CAN-2005-2490.patch
-Patch3001: linux-2.6-CAN-2005-2492.patch
+Patch1600: linux-2.6-procfs-i_nlink-miscalculate.patch
+Patch1601: linux-2.6.11-atkbd-dell-multimedia.patch
+Patch1602: linux-2.6.11-panic-stackdump.patch
+Patch1603: linux-2.6.11-acpi-thinkpad-c2c3.patch
+Patch1604: linux-2.6-sound-emu10k1-ac97.patch
+Patch1605: linux-2.6.9-module_version.patch
+Patch1606: linux-2.6-agp-sworks-hang.patch
+Patch1607: linux-2.6-pcmcia-single-port-off-by-one.patch
+Patch1608: linux-2.6-pwc-powerup-by-default.patch
+Patch1609: linux-2.6-w1-hush-debug.patch
+Patch1610: linux-2.6.11-libata-promise-pata-on-sata.patch
+Patch1611: linux-2.6.12-input-kill-stupid-messages.patch
+Patch1612: linux-2.6-input-usblegacy.patch
+Patch1613: linux-2.6-modules-ignore-whitespace.patch
+Patch1614: linux-2.6.11-serial-tickle-nmi.patch
+Patch1615: linux-2.6.12-missing-exports.patch
+Patch1616: linux-2.6-radeon-backlight.patch
+Patch1617: linux-2.6-futex-wake_op.patch
+Patch1618: linux-2.6.10-revert-module-invalidparam.patch
+
+Patch1800: linux-2.6-ide-tune-locking.patch
+
+# Warn about usage of various obsolete functionality that may go away.
+Patch1900: linux-2.6-obsolete-idescsi-warning.patch
+Patch1901: linux-2.6-obsolete-oss-warning.patch
+
+# no external module should use these symbols.
+Patch1910: linux-2.6-unexport-symbols.patch
+
+
+# VM bits.
+Patch2000: linux-2.6.9-vm-oomkiller-debugging.patch
+Patch2001: linux-2.6-vm-silence-atomic-alloc-failures.patch
#
# External drivers that are about to get accepted upstream
#
# Intel Centrino wireless drivers.
-Patch3020: linux-2.6.9-ipw2100.patch
-Patch3021: linux-2.6.9-ipw2200.patch
-Patch3022: linux-2.6.9-ieee80211.patch
+Patch3000: linux-2.6.9-ipw2100.patch
+Patch3001: linux-2.6.9-ipw2200.patch
+Patch3002: linux-2.6.9-ieee80211.patch
#
# 10000 to 20000 is for stuff that has to come last due to the
@@ -383,8 +362,7 @@
# Not patches you're too lazy for to put in the proper place.
#
-Patch10000: linux-2.6.0-compile.patch
-Patch10001: linux-2.6-compile-fixes.patch
+#Patch10000: linux-2.6-compile-fixes.patch
# END OF PATCH DEFINITIONS
@@ -539,22 +517,24 @@
%prep
if [ ! -d kernel-%{kversion}/vanilla ]; then
+ # Ok, first time we do a make prep.
%setup -q -n %{name}-%{version} -c
-rm -f pax_global_header
-mv linux-%{kversion} vanilla
+ rm -f pax_global_header
+ mv linux-%{kversion} vanilla
else
+ # We already have a vanilla dir.
cd kernel-%{kversion}
+ rm -rf linux-%{kversion}
fi
-rm -rf linux-%{kversion}
cp -rl vanilla linux-%{kversion}
-
cd linux-%{kversion}
+# Update to latest upstream.
+%patch1 -p1
+
#
-# Patches 0 through 100 are meant for core subsystem upgrades
+# Patches 10 through 100 are meant for core subsystem upgrades
#
-%patch1 -p1
-%patch2 -p1
#
# Patches to back out
@@ -563,13 +543,15 @@
#
# Architecture patches
#
+%patch100 -p1
+%patch101 -p1
#
# x86(-64)
#
# Compile 686 kernels tuned for Pentium4.
%patch200 -p1
-# AMD errata 122
+# errata 122 workaround
%patch201 -p1
#
@@ -580,31 +562,6 @@
%patch300 -p1
%patch301 -p1
%patch302 -p1
-%patch303 -p1
-
-#
-# ia64
-#
-
-# Basic build fixes
-%patch400 -p1
-
-
-#
-# s390
-#
-
-# Basic build fixes
-%patch500 -p1
-# Auto raidstart for S390
-%patch501 -p1
-# Recover after aborted nameserver request.
-%patch502 -p1
-
-#
-# sparc/sparc64
-#
-%patch600 -p1
#
# Xen
@@ -625,13 +582,13 @@
# also gives a list of missing options at the end. Useful for automated
# builds (as used in the buildsystem).
%patch800 -p1
-
-#
-# Patch that adds a __must_check attribute for functions for which checking
-# the return value is mantadory (eg copy_from_user)
-#
+# Warn if someone tries to build userspace using kernel headers
%patch801 -p1
-
+# Fix qt config tool compilation on 64bit.
+%patch802 -p1
+# reference_discarded additions.
+%patch803 -p1
+%patch804 -p1
# Exec shield
%patch810 -p1
@@ -677,15 +634,20 @@
# in that case
%patch1000 -p1
-# Periodically scan slab caches for corruption.
+# Various low-impact patches to aid debugging.
%patch1010 -p1
-# Stack backtrace if we find corruption.
%patch1011 -p1
-
-#
-# Fix the extreme stack usage in some kernel functions
-#
+%patch1012 -p1
+%patch1013 -p1
+%patch1014 -p1
+%patch1015 -p1
+#%patch1016 -p1
+%patch1017 -p1
+%patch1018 -p1
+%patch1019 -p1
%patch1020 -p1
+%patch1021 -p1
+%patch1022 -p1
#
# Make /dev/mem a need-to-know function
@@ -708,6 +670,14 @@
#
%patch1070 -p1
+# Adjust some defaults.
+# Make CFQ default elevator again
+%patch1080 -p1
+# Bump up the number of recursive symlinks.
+%patch1081 -p1
+# Make optimise for size available without selecting CONFIG_EMBEDDED
+%patch1082 -p1
+
#
# SCSI Bits.
#
@@ -717,10 +687,8 @@
%patch1102 -p1
# Blacklist some SCSI devices that don't like having LUNs probed.
%patch1103 -p1
-# SCSI CAM geometry fix.
+# Add a pci table to advansys driver.
%patch1104 -p1
-# Fix up sleeping in invalid context in sym2 driver.
-%patch1105 -p1
# Fix aic7xxx >4GB
%patch1106 -p1
@@ -728,32 +696,17 @@
# Various upstream NFS/NFSD fixes.
#
%patch1200 -p1
-%patch1201 -p1
-%patch1202 -p1
-%patch1203 -p1
-%patch1204 -p1
-%patch1205 -p1
# NIC driver fixes.
-# Use correct spinlock functions in token ring net code
-%patch1300 -p1
# New PCI ID for sundance driver.
%patch1301 -p1
-# Make orinoco driver suck less.
-%patch1302 -p1
# Fix rmmod lanai
-%patch1304 -p1
+%patch1302 -p1
+# Acenic use after free
+%patch1303 -p1
# USB Bits.
-# Enable both old and new style USB initialisation.
-#%patch1400 -p1
-# Fix port power switching for EHCI
-#%patch1401 -p1
-# Do something else originally described as "Alan's hint for ehci"
-#%patch1402 -p1
-%patch1403 -p1
-%patch1404 -p1
-%patch1405 -p1
+%patch1400 -p1
# netdump bits
%patch1500 -p1
@@ -768,105 +721,70 @@
#
# Misc fixes
-# Make some I2C drivers arch dependant.
+# Fix incorrect n_link in proc
%patch1600 -p1
# Make multimedia buttons on Dell Inspiron 8200 work.
-%patch1610 -p1
-# ISDN ICN driver barfs if probed with no cards present.
-%patch1620 -p1
+%patch1601 -p1
# Print stack trace when we panic.
-%patch1640 -p1
-# Don't barf on obsolete module parameters.
-%patch1700 -p1
-# Numerous IDE fixes.
-%patch1710 -p1
-%patch1711 -p1
-%patch1712 -p1
+%patch1602 -p1
+# Blacklist another 'No C2/C3 states' Thinkpad R40e BIOS.
+%patch1603 -p1
+# Fix AC97/emu10k1 bugs.
+%patch1604 -p1
# Add missing MODULE_VERSION tags to some modules.
-%patch1720 -p1
-# Make spinlock debugging panic instead of continue.
-%patch1730 -p1
-# Make CFQ default elevator again
-%patch1740 -p1
-# Check tainted bit on oops.
-%patch1770 -p1
-# Fix up some permissions in /proc
-%patch1800 -p1
-# Fix up miscalculated i_nlink in /proc
-%patch1801 -p1
+%patch1605 -p1
+# Fix hang with serverworks AGP
+%patch1606 -p1
+# Fix off by one in PCMCIA port reservation
+%patch1607 -p1
+# Powerup PWC driver by default.
+%patch1608 -p1
+# Silence silly debug msg in w1 driver
+%patch1609 -p1
# Support PATA on Promise SATA.
-%patch1810 -p1
+%patch1610 -p1
# The input layer spews crap no-one cares about.
-%patch1820 -p1
-# Audit code from git tree which was imported into 2.6.12-git1
-%patch1830 -p1
-# Audit code from git tree which is still in 2.6.12-mm
-%patch1831 -p1
+%patch1611 -p1
+# usb legacy workaround.
+%patch1612 -p1
+# Ignore whitespace at the EOL in modprobe.conf
+%patch1613 -p1
# Tickle the NMI whilst doing serial writes.
-%patch1860 -p1
+%patch1614 -p1
# Missing EXPORT_SYMBOL's
-%patch1870 -p1
+%patch1615 -p1
# Radeon on thinkpad backlight power-management goodness.
-%patch1880 -p1
-# Fix ochi1394 smp init.
-%patch1890 -p1
-# Fix warning in pwc driver.
+%patch1616 -p1
+# FUTEX_WAKE_OP support.
+%patch1617 -p1
+# Fix unknown module-param handling.
+%patch1618 -p1
+# Fix IDE locking bug.
+%patch1800 -p1
+
+# Warn about obsolete functionality usage.
%patch1900 -p1
-# Fix oops in ns558 on rmmod
+%patch1901 -p1
+# Remove kernel-internal functionality that nothing external should use.
%patch1910 -p1
-# Fix Appletouch tapping.
-%patch1930 -p1
-# powernow-k8 driver update from 2.6.13rc7
-%patch1940 -p1
-# Fix addrlen checks in selinux_socket_connect
-%patch1950 -p1
-# ALPS typo fix.
-%patch1960 -p1
#
# VM related fixes.
#
-# Display taint bits on VM error.
-%patch2000 -p1
# Extra debugging on OOM Kill.
+%patch2000 -p1
+# Silence GFP_ATOMIC failures.
%patch2001 -p1
-# Spot single bit errors in slab corruption.
-%patch2002 -p1
-# ACPI update.
-%patch2100 -p1
-# xen fixup for ACPI update
-%if %{includexen}
-%patch2101 -p1
-%endif
-# Various ACPI fixes from post 2.6.13
-%patch2102 -p1
-# Blacklist another 'No C2/C3 states' Thinkpad R40e BIOS.
-%patch2110 -p1
-
-# Fix 'semaphore is not ready' error in snd-intel8x0m
-%patch2200 -p1
-
-#
-# Local hack (off for any shipped kernels) to printk all files opened
-# the first 180 seconds after boot for debugging userspace startup
-# speeds
-#
-#%patch2999 -p1
-
-# Security fixes.
-%patch3000 -p1
-%patch3001 -p1
-
#
# External drivers that are about to get accepted upstream
#
# Intel wireless
-%patch3020 -p1
-%patch3021 -p1
-%patch3022 -p1
+%patch3000 -p1
+%patch3001 -p1
+%patch3002 -p1
#
# Patches 5000 to 6000 are reserved for new drivers that are about to
@@ -881,8 +799,7 @@
#
# misc small stuff to make things compile or otherwise improve performance
#
-%patch10000 -p1
-%patch10001 -p1
+#%patch10000 -p1
# END OF PATCH APPLICATIONS
@@ -1024,6 +941,9 @@
cp -a asm-xen $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/include
%endif
cp -a `readlink asm` $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/include
+ if [ "$Arch" = "x86_64" ]; then
+ cp -a asm-i386 $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/include
+ fi
# Make sure the Makefile and version.h have a matching timestamp so that
# external modules can be built
touch -r $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/Makefile $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/include/linux/version.h
@@ -1299,174 +1219,303 @@
%endif
%changelog
-* Thu Sep 22 2005 Dave Jones <davej at redhat.com> [2.6.12-1.1456_FC4]
-- Disable crash driver on Xen kernels.
+* Wed Sep 28 2005 Dave Jones <davej at redhat.com> [2.6.13-1.1526_FC4]
+- Fix boot-hang with serverworks AGP. (#154673)
+- Fix off by one in pcmcia port reservation.
+- Power up pwc cams by default. (#140258)
+- Silence silly debug msg in w1 driver. (#167403)
+- Don't abort module loading if passed unknown params.
-* Wed Sep 14 2005 Dave Jones <davej at redhat.com> [2.6.12-1.1455_FC4]
-- Fixes for CAN-2005-2490 and CAN-2005-2492
+* Mon Sep 26 2005 Dave Jones <davej at redhat.com>
+- Fix asm-x86_64 dependancy on asm-i386. (#150266)
-* Thu Sep 8 2005 Rik van Riel <riel at redhat.com>
-- upgrade to a newer Xen snapshot
-- exclude Xen TPM bits, since those conflict with 2.6.12.5
-- enable highmem for Xen kernels (#162226)
-- add workaround for glibc bug on VDSO note parsing (Roland) (#166984)
+* Fri Sep 23 2005 Dave Jones <davej at redhat.com>
+- Add another Radeon to the power saving backlight patch. (#165297)
-* Mon Sep 5 2005 Dave Jones <davej at redhat.com>
+* Fri Sep 23 2005 Dave Jones <davej at redhat.com> [2.6.13-1.1525_FC4]
+- Fix some emu10k1/ac97 bugs. (#169152)
- Fix aic7xxx issue with >4GB. (#167049)
-* Fri Sep 2 2005 Dave Jones <davej at redhat.com>
-- Various post 2.6.13 ACPI updates. (20050902)
+* Tue Sep 20 2005 Dave Jones <davej at redhat.com>
+- 2.6.13.2
+
+* Sun Aug 28 2005 Dave Jones <davej at redhat.com>
+- 2.6.13 final.
+
+* Sat Aug 27 2005 Dave Jones <davej at redhat.com>
+- 2.6.13-rc7-git2
-* Mon Aug 29 2005 Dave Jones <davej at redhat.com>
-- Fix local builds when '-' is in the hostname.
-- Update ALPS driver to 2.6.13 level.
+* Sat Aug 27 2005 Dave Jones <davej at redhat.com>
+- Enabled voluntary preemption.
-* Fri Aug 26 2005 Dave Jones <davej at redhat.com> [2.6.12-1.1447_FC4]
+* Fri Aug 26 2005 Dave Jones <davej at redhat.com>
+- Add another bios rev to the "thinkpad that cant do c2/c3" list. (#165590)
+- Add another thinkpad to the radeon-pm list. (#166123)
- Better identify local builds. (#159696)
-- Fix disk/net dump & netconsole. (#152586)
-- Fix up sleeping in invalid context in sym2 driver. (#164995)
-- Fix 'semaphore is not ready' error in snd-intel8x0m.
-- Restore hwclock functionality on some systems. (#144894)
-- Merge patches proposed for 2.6.12.6
-- Fix typo in ALPS driver.
-- Fix 'No sense' error with Transcend USB key. (#162559)
-- Fix up ide-scsi check for medium not present. (#160868)
-- powernow-k8 driver update from 2.6.13rc7.
+- Fix up some missing exported symbols.
+- Build network drivers for Xen0 kernel.
-* Tue Aug 23 2005 Dave Jones <davej at redhat.com> [2.6.12-1.1435_FC4]
-- Work around AMD x86-64 errata 122.
+* Thu Aug 25 2005 Dave Jones <davej at redhat.com>
+- 2.6.13-rc7-git1
+- FUTEX_WAKE_OP support.
+
+* Tue Aug 23 2005 Dave Jones <davej at redhat.com>
+- 2.6.13-rc7
+- Net/Diskdump/netconsole update from Jeff "The Yellow Dart" Moyer.
* Tue Aug 23 2005 Rik van Riel <riel at redhat.com>
-- upgrade to today's Xen snapshot
+- upgrade to latest upstream Xen snapshot
+
+* Mon Aug 22 2005 Dave Jones <davej at redhat.com>
+- 2.6.13-rc6-git13
+
+* Sat Aug 20 2005 Dave Jones <davej at redhat.com>
+- 2.6.13-rc6-git12
+
+* Sat Aug 20 2005 Dave Jones <davej at redhat.com>
+- Disable -Os again, to see if some odd bugs 'go away'.
+- Add errata 122 workaround for AMD x86-64 CPUs.
-* Mon Aug 22 2005 Rik van Riel <riel at redhat.com>
-- make sure that the vsyscall-note is linked in so the right glibc is used
+* Fri Aug 19 2005 Dave Jones <davej at redhat.com>
+- 2.6.13-rc6-git11
-* Sun Aug 21 2005 Rik van Riel <riel at redhat.com>
-- fix the Xen vsyscall problem
+* Thu Aug 18 2005 Dave Jones <davej at redhat.com>
+- 2.6.13-rc6-git10
+- Drop a bunch of bogus patches.
* Thu Aug 18 2005 David Woodhouse <dwmw2 at redhat.com>
- Don't probe 8250 ports on ppc32 unless they're in the device tree
-- Enable ISDN, 8250 console, i8042 keyboard controller on ppc32
+- Prevent snd-powermac from oopsing on non-Mac hardware
- Audit updates from git tree
-* Wed Aug 17 2005 Rik van Riel <riel at redhat.com>
-- temporarily disable the vsyscall page for Xen
+* Thu Aug 18 2005 Dave Jones <davej at redhat.com>
+- 2.6.13-rc6-git9
+- Fix up the 'last item on the boot cmdline gets eaten' bug.
+- Better workaround for the usbmon DMA deficiency.
* Tue Aug 16 2005 Dave Jones <davej at redhat.com>
-- Restrict ipsec socket policy loading to CAP_NET_ADMIN. (CAN-2005-2555)
-
-* Mon Aug 15 2005 Rik van Riel <riel at redhat.com>
-- upgrade Xen to a newer version
+- 2.6.13-rc6-git8
* Mon Aug 15 2005 Dave Jones <davej at redhat.com>
-- 2.6.11.5
+- 2.6.13-rc6-git7
- Fix module_verify_elf check that rejected valid .ko files. (#165528)
+* Sun Aug 14 2005 Dave Jones <davej at redhat.com>
+- 2.6.13-rc6-git6
+
+* Sat Aug 13 2005 Dave Jones <davej at redhat.com>
+- 2.6.13-rc6-git5
+
+* Fri Aug 12 2005 Dave Jones <davej at redhat.com>
+- 2.6.13-rc6-git4
+- Bump mkinitrd dependancy.
+
* Thu Aug 11 2005 Dave Jones <davej at redhat.com>
-- Audit speedup in syscall path.
-- Update to a newer ACPI drop.
+- 2.6.13-rc6-git3
+
+* Thu Aug 11 2005 David Woodhouse <dwmw2 at redhat.com>
+- Enable ISDN and CONFIG_SERIAL_8250_CONSOLE for PPC32
+
+* Wed Aug 10 2005 Dave Jones <davej at redhat.com>
+- 2.6.13-rc6-git2
+- Enable CONFIG_I2C_I801 for x86-64.
+
+* Tue Aug 09 2005 Dave Jones <davej at redhat.com>
+- 2.6.13-rc6-git1
+- PCMCIA/PCCARD are now built non-modular for improved resource management.
+- Fix incorrect n_link count in procfs.
+- Fix missing declaration in the ppc64 kernel.
+
+* Tue Aug 09 2005 Dave Jones <davej at redhat.com>
+- Improve the spinlock debugging panic code.
+ (Worse case, users can now boot with 'dontpanic')
+- Add new patch to deal with the 'white space at eol of modprobe.conf' bug.
+ (This one doesn't ignore obsolete parameters).
+
+* Mon Aug 08 2005 Dave Jones <davej at redhat.com>
+- Various specfile cleanup.
+ - dropped dead patches, renamed some patches, updated package conflicts:
+- Improve megaraid compatiblity hack.
+ (Now the legacy driver doesn't claim support for the drivers
+ that the newer driver supports).
+- Disable building of sk98lin driver. (Use sk98 instead).
+
+* Sun Aug 07 2005 Dave Jones <davej at redhat.com>
+- 2.6.13-rc6
+
+* Sat Aug 06 2005 Dave Jones <davej at redhat.com>
+- 2.6.13-rc5-git4
+
+* Fri Aug 05 2005 Dave Jones <davej at redhat.com>
+- 2.6.13-rc5-git3
+- Add support for netcell revolution IDE controller. (#164330)
+
+* Thu Aug 04 2005 Dave Jones <davej at redhat.com>
+- 2.6.13-rc5-git2
+
+* Wed Aug 03 2005 Dave Jones <davej at redhat.com>
+- 2.6.13-rc5-git1
+
+* Tue Aug 02 2005 Dave Jones <davej at redhat.com>
+- 2.6.13-rc5
-* Fri Aug 5 2005 Dave Jones <davej at redhat.com> [2.6.12-1.1420_FC4]
-- update to final 2.6.12.4 patchset.
-- ACPI update to 20050729.
-- Disable experimental ACPI HOTKEY driver. (#163355)
-
-* Thu Aug 4 2005 Dave Jones <davej at redhat.com>
-- Enable Amiga partition support. (#149802)
-
-* Wed Aug 3 2005 Dave Jones <davej at redhat.com> [2.6.12-1.1411_FC4]
-- Include pre-release 2.6.12.4 patchset
-- Silence some messages from PowerMac thermal driver. (#158739)
-- nfs server intermitently claimed ENOENT on existing files or directories. (#150759)
-- Stop usbhid driver incorrectly claiming Wireless Security Lock as a mouse. (#147479)
-- Further NFSD fixing for non-standard ports.
-- Fix up miscalculated i_nlink in /proc (#162418)
-- Fix addrlen checks in selinux_socket_connect. (#164165)
+* Mon Aug 01 2005 Dave Jones <davej at redhat.com>
+- 2.6.13-rc4-git4
+
+* Mon Aug 01 2005 Dave Jones <davej at redhat.com>
+- 2.6.13-rc4-git3
+
+* Fri Jul 29 2005 Dave Jones <davej at redhat.com>
+- 2.6.13-rc4-git1
* Thu Jul 28 2005 Dave Jones <davej at redhat.com>
-- Fix compilation with older gcc. (#164041)
+- 2.6.13-rc4
-* Fri Jul 15 2005 Dave Jones <davej at redhat.com>
-- Enable the DC395x driver. (#151010)
+* Thu Jul 28 2005 Dave Jones <davej at redhat.com>
+- 2.6.13-rc3-git9
+
+* Thu Jul 28 2005 David Woodhouse <dwmw2 at redhat.com>
+- Enable i8042 and Amiga partitions on PPC (for Pegasos II, CHRP)
+
+* Wed Jul 27 2005 Dave Jones <davej at redhat.com>
+- 2.6.13-rc3-git8
-* Fri Jul 15 2005 Dave Jones <davej at redhat.com> [2.6.12-1.1398_FC4]
-- Include a number of patches likely to show up in 2.6.12.3
+* Mon Jul 25 2005 Dave Jones <davej at redhat.com>
+- 2.6.13-rc3-git7
+
+* Sat Jul 23 2005 Dave Jones <davej at redhat.com>
+- 2.6.13-rc3-git5
+
+* Mon Jul 18 2005 Dave Jones <davej at redhat.com>
+- 2.6.13-rc3-git4
+
+* Sun Jul 17 2005 Dave Jones <davej at redhat.com>
+- 2.6.13-rc3-git4
+
+* Fri Jul 15 2005 Dave Jones <davej at redhat.com>
+- 2.6.13-rc3-git2
* Thu Jul 14 2005 Dave Jones <davej at redhat.com>
-- Add Appletouch support.
+- 2.6.13-rc3-git1
-* Wed Jul 13 2005 David Woodhouse <dwmw2 at redhat.com>
-- Audit updates. In particular, don't printk audit messages that
- are passed from userspace when auditing is disabled.
+* Wed Jul 13 2005 Dave Jones <davej at redhat.com>
+- 2.6.13-rc3
* Tue Jul 12 2005 Dave Jones <davej at redhat.com>
-- Fix up several reports of CD's causing crashes.
-- Make -p port arg of rpc.nfsd work.
-- Work around a usbmon deficiency.
-- Fix connection tracking bug with bridging. (#162438)
-
-* Mon Jul 11 2005 Dave Jones <davej at redhat.com>
-- Fix up locking in piix IDE driver whilst tuning chipset.
-
-* Tue Jul 5 2005 Dave Jones <davej at redhat.com>
-- Fixup ACPI IRQ routing bug that prevented booting for some folks.
-- Reenable ISA I2C drivers for x86-64.
-- Bump requirement on mkinitrd to something newer (#160492)
+- 2.6.13-rc2-git5
+- Fix IDE locking bug de jour.
+- Workaround a usbmon deficiency.
+- Re-add Tux again.
+
+* Sun Jul 10 2005 Dave Jones <davej at redhat.com>
+- 2.6.13-rc2-git3
+
+* Fri Jul 08 2005 Dave Jones <davej at redhat.com>
+- 2.6.13-rc2-git2
+
+* Thu Jul 07 2005 Dave Jones <davej at redhat.com>
+- Fix exec-shield to not randomize to between end-of-binary and start-of-brk
+
+* Wed Jul 06 2005 Dave Jones <davej at redhat.com>
+- 2.6.13-rc2
+
+* Tue Jul 05 2005 Dave Jones <davej at redhat.com>
+- 2.6.13-rc1-git7
+- Radeon power saving for another T41 (#159791)
+- Drop x86-64 SMP kernels, and make generic kernel use SMP.
+- Add pci table to advansys scsi driver. (#162431)
+
+* Mon Jul 04 2005 Dave Jones <davej at redhat.com>
+- 2.6.13-rc1-git6
+
+* Fri Jul 01 2005 Dave Jones <davej at redhat.com>
+- 2.6.13-rc1-git3
+ - Xen broke again, so is temporarily disabled. Sorry :(
+- Add a vdso marker to /proc/*/maps even if the vDSO is randomized
+
+* Thu Jun 30 2005 Dave Jones <davej at redhat.com>
+- 2.6.13-rc1-git2
* Wed Jun 29 2005 Dave Jones <davej at redhat.com>
-- 2.6.12.2
+- 2.6.13-rc1
+
+* Tue Jun 28 2005 Dave Jones <davej at redhat.com>
+- 2.6.12-git10
+
+* Mon Jun 27 2005 Dave Jones <davej at redhat.com>
+- 2.6.12-git9
* Mon Jun 27 2005 Dave Jones <davej at redhat.com>
-- Disable multipath caches. (#161168)
-- Reenable AMD756 I2C driver for x86-64. (#159609)
-- Add more IBM r40e BIOS's to the C2/C3 blacklist.
+- 2.6.12-git8
* Thu Jun 23 2005 Dave Jones <davej at redhat.com>
-- Make orinoco driver suck less.
- (Scanning/roaming/ethtool support).
-- Exec-shield randomisation fix.
-- pwc driver warning fix.
-- Prevent potential oops in tux with symlinks. (#160219)
+- 2.6.12-git5
+- Revert ipw drivers back to those shipped with FC4 for the time being..
+- Make Orinoco driver suck less.
+ (Scanning/Roaming/Ethtool support).
* Wed Jun 22 2005 Dave Jones <davej at redhat.com>
-- 2.6.12.1
- - Clean up subthread exec (CAN-2005-1913)
- - ia64 ptrace + sigrestore_context (CAN-2005-1761)
+- 2.6.12-git4
+- Bring back the IDE fixes from -ac
-* Wed Jun 22 2005 David Woodhouse <dwmw2 at redhat.com>
-- Update audit support
+* Tue Jun 21 2005 Dave Jones <davej at redhat.com>
+- 2.6.12-git3
+ - Welcome back Tux.
+- Don't disable sysenter if booted with exec_shield=0
+- Fix up and reenable Xen.
* Mon Jun 20 2005 Dave Jones <davej at redhat.com>
-- Rebase to 2.6.12
- - Temporarily drop Alans IDE fixes whilst they get redone.
-- Enable userspace queueing of ipv6 packets.
+- 2.6.12-git2
+ - temporarily disable Tux as the rebase broke it.
+
+* Mon Jun 13 2005 Peter Jones <pjones at redhat.com>
+- Reenable fixed ipw drivers.
+
+* Mon Jun 13 2005 Dave Jones <davej at redhat.com>
+- 2.6.12-rc6-git5
+
+* Thu Jun 09 2005 Dave Jones <davej at redhat.com>
+- 2.6.12-rc6-git3
+- Temporarily disable the ipw drivers until I sort them out.
* Tue Jun 7 2005 Dave Jones <davej at redhat.com>
-- Drop recent b44 changes which broke some setups.
+- 2.6.12-rc6-git1
+- Disable hercules fb.
+ If you have one of these, please put it back in the trash. Thanks.
+
+* Mon Jun 6 2005 Dave Jones <davej at redhat.com>
+- 2.6.12-rc6
+- Copy asm-i386 into x86-64's kernel-devel too. (#150266)
+
+* Sat Jun 4 2005 Dave Jones <davej at redhat.com>
+- 2.6.12-rc5-git9
+
+* Fri Jun 3 2005 Dave Jones <davej at redhat.com>
+- 2.6.12-rc5-git8
+
+* Thu Jun 2 2005 Dave Jones <davej at redhat.com>
+- 2.6.12-rc5-git7
* Wed Jun 1 2005 Dave Jones <davej at redhat.com>
-- Fix up ALI IDE regression. (#157175)
+- 2.6.12-rc5-git6
-* Mon May 30 2005 Dave Jones <davej at redhat.com>
-- Fix up VIA IRQ quirk.
+* Tue May 31 2005 Dave Jones <davej at redhat.com>
+- 2.6.12-rc5-git5
* Sun May 29 2005 Dave Jones <davej at redhat.com>
- Fix slab corruption in firewire (#158424)
+- 2.6.12-rc5-git4
+
+* Sat May 28 2005 Dave Jones <davej at redhat.com>
+- 2.6.12-rc5-git3
* Fri May 27 2005 Dave Jones <davej at redhat.com>
-- remove non-cleanroom pwc driver compression.
-- Fix unintialised value in single bit error detector. (#158825)
+- 2.6.12-rc5-git2
-* Wed May 25 2005 Dave Jones <davej at redhat.com>
-- Disable TPM driver, it breaks 8139 driver.
-- Revert to previous version of ipw2x00 drivers.
- The newer ones sadly brought too many problems this close to
- the release. I'll look at updating them again for an update.
-- Update to 2.6.12rc5
- Fix potential local DoS. 1-2 other small fixes.
-- Tweak to fix up some vdso arithmetic.
-- Disable sysenter again for now.
+* Thu May 26 2005 Dave Jones <davej at redhat.com>
+- Specfile adjustments for FC5
+- 2.6.12-rc5-git1
+- Fix unintialised value in single bit error detector. (#158825)
* Wed May 25 2005 David Woodhouse <dwmw2 at redhat.com>
- Turn off CONFIG_ISA on PPC again. It makes some Macs unhappy (#149200)
@@ -1478,7 +1527,6 @@
kobject ordering, tg3 fixes, ppc32 ipic fix,
ppc64 powermac smp fix. token-ring fixes,
TCP fix. ipv6 fix.
-- Disable slab debugging.
* Mon May 23 2005 Dave Jones <davej at redhat.com>
- Add extra id to SATA Sil driver. (#155748)
linux-2.6-compile-fixes.patch:
0 files changed
Index: linux-2.6-compile-fixes.patch
===================================================================
RCS file: /cvs/dist/rpms/kernel/FC-4/linux-2.6-compile-fixes.patch,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- linux-2.6-compile-fixes.patch 6 Aug 2005 02:06:57 -0000 1.3
+++ linux-2.6-compile-fixes.patch 29 Sep 2005 23:04:26 -0000 1.4
@@ -1,207 +0,0 @@
-diff -urNp --exclude-from=/home/davej/.exclude linux-10000/arch/ppc/kernel/head.S linux-10001/arch/ppc/kernel/head.S
---- linux-10000/arch/ppc/kernel/head.S
-+++ linux-10001/arch/ppc/kernel/head.S
-@@ -1512,7 +1512,7 @@ END_FTR_SECTION_IFSET(CPU_FTR_HAS_HIGH_B
- flush_tlbs:
- lis r10, 0x40
- 1: addic. r10, r10, -0x1000
-- tlbie r10
-+ tlbie r10,0
- blt 1b
- sync
- blr
-diff -urNp --exclude-from=/home/davej/.exclude linux-10000/arch/ppc/kernel/misc.S linux-10001/arch/ppc/kernel/misc.S
---- linux-10000/arch/ppc/kernel/misc.S
-+++ linux-10001/arch/ppc/kernel/misc.S
-@@ -565,7 +565,7 @@ _GLOBAL(_tlbie)
- SYNC_601
- isync
- #else /* CONFIG_SMP */
-- tlbie r3
-+ tlbie r3,0
- sync
- #endif /* CONFIG_SMP */
- #endif /* ! CONFIG_40x */
-diff -urNp --exclude-from=/home/davej/.exclude linux-10000/arch/ppc/Makefile linux-10001/arch/ppc/Makefile
---- linux-10000/arch/ppc/Makefile
-+++ linux-10001/arch/ppc/Makefile
-@@ -78,6 +78,7 @@ CPPFLAGS_vmlinux.lds := -Upowerpc
-
- # All the instructions talk about "make bzImage".
- bzImage: zImage
-+ cp vmlinux arch/ppc/boot/bzImage
-
- boot := arch/$(ARCH)/boot
-
-diff -urNp --exclude-from=/home/davej/.exclude linux-10000/arch/ppc/mm/hashtable.S linux-10001/arch/ppc/mm/hashtable.S
---- linux-10000/arch/ppc/mm/hashtable.S
-+++ linux-10001/arch/ppc/mm/hashtable.S
-@@ -375,7 +375,7 @@ _GLOBAL(hash_page_patch_A)
- */
- andi. r6,r6,_PAGE_HASHPTE
- beq+ 10f /* no PTE: go look for an empty slot */
-- tlbie r4
-+ tlbie r4,0
-
- addis r4,r7,htab_hash_searches at ha
- lwz r6,htab_hash_searches at l(r4)
-@@ -616,7 +616,7 @@ _GLOBAL(flush_hash_patch_B)
- 3: li r0,0
- STPTE r0,0(r12) /* invalidate entry */
- 4: sync
-- tlbie r4 /* in hw tlb too */
-+ tlbie r4,0 /* in hw tlb too */
- sync
-
- 8: ble cr1,9f /* if all ptes checked */
-diff -urNp --exclude-from=/home/davej/.exclude linux-10000/arch/ppc/platforms/pmac_sleep.S linux-10001/arch/ppc/platforms/pmac_sleep.S
---- linux-10000/arch/ppc/platforms/pmac_sleep.S
-+++ linux-10001/arch/ppc/platforms/pmac_sleep.S
-@@ -340,7 +340,7 @@ END_FTR_SECTION_IFSET(CPU_FTR_HAS_HIGH_B
- /* Flush all TLBs */
- lis r4,0x1000
- 1: addic. r4,r4,-0x1000
-- tlbie r4
-+ tlbie r4, 0
- blt 1b
- sync
-
-diff -urNp --exclude-from=/home/davej/.exclude linux-10000/arch/ppc64/boot/main.c linux-10001/arch/ppc64/boot/main.c
---- linux-10000/arch/ppc64/boot/main.c
-+++ linux-10001/arch/ppc64/boot/main.c
-@@ -8,6 +8,7 @@
- * as published by the Free Software Foundation; either version
- * 2 of the License, or (at your option) any later version.
- */
-+#define __KERNGLUE__
- #include "ppc32-types.h"
- #include "zlib.h"
- #include <linux/elf.h>
-diff -urNp --exclude-from=/home/davej/.exclude linux-10000/arch/ppc64/Makefile linux-10001/arch/ppc64/Makefile
---- linux-10000/arch/ppc64/Makefile
-+++ linux-10001/arch/ppc64/Makefile
-@@ -68,7 +68,7 @@ endif
-
- # Enable unit-at-a-time mode when possible. It shrinks the
- # kernel considerably.
--CFLAGS += $(call cc-option,-funit-at-a-time)
-+CFLAGS += $(call cc-option,-fno-unit-at-a-time)
-
- head-y := arch/ppc64/kernel/head.o
-
-diff -urNp --exclude-from=/home/davej/.exclude linux-10000/crypto/Makefile linux-10001/crypto/Makefile
---- linux-10000/crypto/Makefile
-+++ linux-10001/crypto/Makefile
-@@ -35,3 +35,5 @@ obj-$(CONFIG_CRYPTO_TEST) += tcrypt.o
-
- obj-$(CONFIG_CRYPTO_SIGNATURE) += signature/
- obj-$(CONFIG_CRYPTO_MPILIB) += mpi/
-+
-+CFLAGS_twofish.o += -fno-schedule-insns
-diff -urNp --exclude-from=/home/davej/.exclude linux-10000/drivers/md/Makefile linux-10001/drivers/md/Makefile
---- linux-10000/drivers/md/Makefile
-+++ linux-10001/drivers/md/Makefile
-@@ -15,6 +15,8 @@ raid6-objs := raid6main.o raid6algos.o r
- raid6mmx.o raid6sse1.o raid6sse2.o
- hostprogs-y := mktables
-
-+CFLAGS_raid6int8.o += -O2
-+
- # Note: link order is important. All raid personalities
- # and xor.o must come before md.o, as they each initialise
- # themselves, and md.o may use the personalities when it
-diff -urNp --exclude-from=/home/davej/.exclude linux-10000/include/asm-ppc/ppc_asm.h linux-10001/include/asm-ppc/ppc_asm.h
---- linux-10000/include/asm-ppc/ppc_asm.h
-+++ linux-10001/include/asm-ppc/ppc_asm.h
-@@ -116,7 +116,7 @@ END_FTR_SECTION_IFCLR(CPU_FTR_601)
- li r4,1024; \
- mtctr r4; \
- lis r4,KERNELBASE at h; \
--0: tlbie r4; \
-+0: tlbie r4, 0; \
- addi r4,r4,0x1000; \
- bdnz 0b
- #endif
-diff -urNp --exclude-from=/home/davej/.exclude linux-10000/include/linux/config.h linux-10001/include/linux/config.h
---- linux-10000/include/linux/config.h
-+++ linux-10001/include/linux/config.h
-@@ -2,7 +2,7 @@
- #define _LINUX_CONFIG_H
-
- #include <linux/autoconf.h>
--#ifndef __KERNEL__
-+#if !defined (__KERNEL__) && !defined(__KERNGLUE__)
- #error including kernel header in userspace; use the glibc headers instead!
- #endif
- #endif
-diff -urNp --exclude-from=/home/davej/.exclude linux-10000/scripts/kconfig/Makefile linux-10001/scripts/kconfig/Makefile
---- linux-10000/scripts/kconfig/Makefile
-+++ linux-10001/scripts/kconfig/Makefile
-@@ -126,7 +126,7 @@ QTLIBPATH = $(QTDIR)/lib
-
- # QT needs some extra effort...
- $(obj)/.tmp_qtcheck:
-- @set -e; for d in $$QTDIR /usr/share/qt* /usr/lib/qt*; do \
-+ @set -e; for d in $$QTDIR /usr/share/qt* /usr/lib/qt* /usr/lib64/qt* ; do \
- if [ -f $$d/include/qconfig.h ]; then DIR=$$d; break; fi; \
- done; \
- if [ -z "$$DIR" ]; then \
-diff -urNp --exclude-from=/home/davej/.exclude linux-10000/scripts/reference_discarded.pl linux-10001/scripts/reference_discarded.pl
---- linux-10000/scripts/reference_discarded.pl
-+++ linux-10001/scripts/reference_discarded.pl
-@@ -96,6 +96,7 @@ foreach $object (keys(%object)) {
- $from !~ /\.debug_aranges$/ &&
- $from !~ /\.debug_ranges$/ &&
- $from !~ /\.debug_line$/ &&
-+ $from !~ /\.debug_loc$/ &&
- $from !~ /\.debug_frame$/ &&
- $from !~ /\.exitcall\.exit$/ &&
- $from !~ /\.eh_frame$/ &&
-diff -urNp --exclude-from=/home/davej/.exclude linux-10000/sound/core/oss/Makefile linux-10001/sound/core/oss/Makefile
---- linux-10000/sound/core/oss/Makefile
-+++ linux-10001/sound/core/oss/Makefile
-@@ -3,6 +3,7 @@
- # Copyright (c) 1999 by Jaroslav Kysela <perex at suse.cz>
- #
-
-+CFLAGS_pcm_plugin.o += -g0
- snd-mixer-oss-objs := mixer_oss.o
-
- snd-pcm-oss-objs := pcm_oss.o pcm_plugin.o \
---- linux-2.6.11/drivers/firmware/pcdp.c~ 2005-05-28 19:12:41.000000000 -0400
-+++ linux-2.6.11/drivers/firmware/pcdp.c 2005-05-28 19:12:51.000000000 -0400
-@@ -15,6 +15,7 @@
- #include <linux/console.h>
- #include <linux/efi.h>
- #include <linux/serial.h>
-+#include <acpi/actypes.h>
- #include "pcdp.h"
-
- static int __init
---- linux-2.6.11/drivers/char/agp/hp-agp.c~ 2005-05-28 19:13:50.000000000 -0400
-+++ linux-2.6.11/drivers/char/agp/hp-agp.c 2005-05-28 19:14:14.000000000 -0400
-@@ -14,9 +14,8 @@
- #include <linux/pci.h>
- #include <linux/init.h>
- #include <linux/agp_backend.h>
--
-+#include <acpi/acpixf.h>
- #include <asm/acpi-ext.h>
--
- #include "agp.h"
-
- #ifndef log2
---- linux-2.6.12/drivers/net/sk98lin/skge.c~ 2005-08-05 18:52:38.000000000 -0400
-+++ linux-2.6.12/drivers/net/sk98lin/skge.c 2005-08-05 18:52:53.000000000 -0400
-@@ -5220,8 +5220,10 @@ static struct pci_driver skge_driver = {
- .id_table = skge_pci_tbl,
- .probe = skge_probe_one,
- .remove = __devexit_p(skge_remove_one),
-+#ifdef CONFIG_PM
- .suspend = skge_suspend,
- .resume = skge_resume,
-+#endif
- };
-
- static int __init skge_init(void)
-
linux-2.6-crashdump-common.patch:
Documentation/sysrq.txt | 8 +
arch/i386/kernel/nmi.c | 1
arch/i386/kernel/traps.c | 3
arch/i386/mm/init.c | 47 +++++++
arch/i386/mm/pgtable.c | 3
arch/ia64/kernel/process.c | 30 ++++
arch/ia64/kernel/traps.c | 6
arch/ia64/mm/contig.c | 3
arch/ia64/mm/discontig.c | 3
arch/ia64/mm/init.c | 90 +++++++++++++-
arch/ppc64/kernel/process.c | 1
arch/ppc64/kernel/traps.c | 3
arch/ppc64/mm/init.c | 29 ++++
arch/s390/kernel/traps.c | 6
arch/x86_64/kernel/process.c | 2
arch/x86_64/kernel/traps.c | 6
arch/x86_64/mm/fault.c | 1
arch/x86_64/mm/init.c | 33 +++++
drivers/char/sysrq.c | 13 +-
include/asm-generic/crashdump.h | 47 +++++++
include/asm-i386/crashdump.h | 123 ++++++++++++++++++++
include/asm-i386/kmap_types.h | 4
include/asm-ia64/crashdump.h | 72 +++++++++++
include/asm-ppc64/crashdump.h | 61 +++++++++
include/asm-x86_64/crashdump.h | 86 +++++++++++++
include/linux/kernel.h | 18 ++
kernel/Makefile | 2
kernel/dump.c | 246 ++++++++++++++++++++++++++++++++++++++++
kernel/panic.c | 4
kernel/printk.c | 20 +++
kernel/sched.c | 2
31 files changed, 961 insertions(+), 12 deletions(-)
Index: linux-2.6-crashdump-common.patch
===================================================================
RCS file: /cvs/dist/rpms/kernel/FC-4/linux-2.6-crashdump-common.patch,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- linux-2.6-crashdump-common.patch 26 Aug 2005 07:13:50 -0000 1.2
+++ linux-2.6-crashdump-common.patch 29 Sep 2005 23:04:26 -0000 1.3
@@ -18,15 +18,90 @@
static void sysrq_handle_sync(int key, struct pt_regs *pt_regs,
struct tty_struct *tty)
{
-@@ -284,7 +284,7 @@ static struct sysrq_key_op *sysrq_key_ta
+@@ -289,7 +300,7 @@
it is handled specially on the sparc
and will never arrive */
/* b */ &sysrq_reboot_op,
--/* c */ NULL,
-+/* c */ &sysrq_crash_op,
- /* d */ NULL,
- /* e */ &sysrq_term_op,
- /* f */ &sysrq_moom_op,
+-#ifdef CONFIG_KEXEC
++#if defined(CONFIG_KEXEC) || defined(CONFIG_NETDUMP) || defined(CONFIG_DISKDUMP)
+ /* c */ &sysrq_crashdump_op,
+ #else
+ /* c */ NULL,
+--- /dev/null 2005-08-18 08:15:49.820487896 -0400
++++ linux-2.6.12/include/asm-ia64/crashdump.h 2005-08-18 14:23:59.000000000 -0400
+@@ -0,0 +1,72 @@
++#ifndef _ASM_IA64_CRASHDUMP_H
++#define _ASM_IA64_CRASHDUMP_H
++
++/*
++ * linux/include/asm-ia64/crashdump.h
++ *
++ * Copyright (c) 2004 FUJITSU LIMITED
++ * Copyright (c) 2003 Red Hat, Inc. All rights reserved.
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 2, or (at your option)
++ * any later version.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
++ *
++ */
++
++#ifdef __KERNEL__
++
++#include <linux/elf.h>
++#include <asm/unwind.h>
++#include <asm/ptrace.h>
++
++extern void ia64_do_copy_regs(struct unw_frame_info *, void *arg);
++extern void ia64_freeze_cpu(struct unw_frame_info *, void *arg);
++extern void ia64_start_dump(struct unw_frame_info *, void *arg);
++extern int page_is_ram(unsigned long);
++extern unsigned long next_ram_page(unsigned long);
++
++#define platform_timestamp(x) ({ x = ia64_get_itc(); })
++
++#define platform_fix_regs() \
++{ \
++ struct unw_frame_info *info = platform_arg; \
++ \
++ current->thread.ksp = (__u64)info->sw - 16; \
++ myregs = *regs; \
++}
++
++#define platform_init_stack(stackptr) do { } while (0)
++#define platform_cleanup_stack(stackptr) do { } while (0)
++
++typedef asmlinkage void (*crashdump_func_t)(struct pt_regs *, void *);
++
++/* Container to hold dump hander information */
++struct dump_call_param {
++ crashdump_func_t func;
++ struct pt_regs *regs;
++};
++
++static inline void platform_start_crashdump(void *stackptr,
++ crashdump_func_t dumpfunc,
++ struct pt_regs *regs)
++{
++ struct dump_call_param param;
++
++ param.func = dumpfunc;
++ param.regs = regs;
++ unw_init_running(ia64_start_dump, ¶m);
++}
++
++#endif /* __KERNEL__ */
++
++#endif /* _ASM_IA64_CRASHDUMP_H */
--- /dev/null 2005-08-18 08:15:49.820487896 -0400
+++ linux-2.6.12/include/asm-ppc64/crashdump.h 2005-08-18 14:23:59.000000000 -0400
@@ -0,0 +1,61 @@
@@ -741,18 +816,19 @@
/**
* init_idle - set up an idle thread for a given CPU
* @idle: task in question
---- linux-2.6.12/kernel/panic.c~ 2005-08-26 02:38:59.000000000 -0400
-+++ linux-2.6.12/kernel/panic.c 2005-08-26 02:39:18.000000000 -0400
-@@ -70,6 +70,9 @@ NORET_TYPE void panic(const char * fmt,
- printk(KERN_EMERG "Kernel panic - not syncing: %s\n",buf);
+--- linux-2.6.12/kernel/panic.c.orig 2005-08-18 12:41:17.000000000 -0400
++++ linux-2.6.12/kernel/panic.c 2005-08-18 14:31:42.000000000 -0400
+@@ -89,6 +89,10 @@
+ dump_stack();
bust_spinlocks(0);
++#if defined(CONFIG_NETDUMP) || defined(CONFIG_DISKDUMP)
+ if (crashdump_func())
+ BUG();
-+
- #ifdef CONFIG_SMP
- smp_send_stop();
- #endif
++#endif
+ /*
+ * If we have crashed and we have a crash kernel loaded let it handle
+ * everything else.
--- linux-2.6.12/arch/s390/kernel/traps.c.orig 2005-08-18 12:40:01.000000000 -0400
+++ linux-2.6.12/arch/s390/kernel/traps.c 2005-08-18 14:23:59.000000000 -0400
@@ -286,12 +286,16 @@
@@ -981,6 +1057,235 @@
oops_end();
do_exit(SIGSEGV);
}
+--- linux-2.6.12/arch/ia64/mm/init.c.orig 2005-08-18 12:41:13.000000000 -0400
++++ linux-2.6.12/arch/ia64/mm/init.c 2005-08-18 14:23:59.000000000 -0400
+@@ -258,12 +258,94 @@
+ }
+ }
+
+-int page_is_ram(unsigned long pagenr)
++struct curr_mem_request {
++ unsigned long requested;
++ unsigned long min_physaddr;
++ int found;
++};
++
++/*
++ * Check whether a physical address fits within the memory descriptor
++ * block sent from efi_mmap_walk(). If it fits, set found.
++ */
++static int
++verify_physaddr (unsigned long start, unsigned long end, void *arg)
++{
++ struct curr_mem_request *cr = arg;
++
++ start = __pa(start);
++ end = __pa(end);
++
++ if ((cr->requested >= start) && (cr->requested + PAGE_SIZE) <= end) {
++ cr->found = 1;
++ return -1;
++ }
++
++ return 0;
++}
++
++/*
++ * If physical page 'nr' is valid RAM then return 1. Otherwise return 0.
++ */
++
++int
++page_is_ram (unsigned long pagenr)
++{
++ struct curr_mem_request cr;
++
++ if (!pfn_valid(pagenr))
++ return 0;
++
++ cr.requested = pagenr << PAGE_SHIFT;
++ cr.found = 0;
++
++ efi_memmap_walk(verify_physaddr, &cr);
++
++ return cr.found;
++}
++EXPORT_SYMBOL_GPL(page_is_ram);
++
++static int
++find_next (unsigned long start, unsigned long end, void *arg)
+ {
+- //FIXME: implement w/efi walk
+- printk("page is ram is called!!!!!\n");
+- return 1;
++ struct curr_mem_request *cr = (struct curr_mem_request *)arg;
++
++ start = __pa(start);
++ end = __pa(end);
++
++ if ((cr->requested >= start) && (cr->requested + PAGE_SIZE) <= end) {
++ cr->min_physaddr = cr->requested;
++ cr->found = 1;
++ return -1;
++ }
++ if ((cr->requested < start) && (start + PAGE_SIZE) <= end)
++ if (start < cr->min_physaddr) {
++ cr->min_physaddr = start;
++ cr->found = 1;
++ }
++
++ return 0;
++}
++
++unsigned long
++next_ram_page (unsigned long pagenr)
++{
++ struct curr_mem_request cr;
++
++ pagenr++;
++
++ cr.requested = pagenr << PAGE_SHIFT;
++ cr.found = 0;
++ cr.min_physaddr = ULONG_MAX;
++
++ efi_memmap_walk(find_next, &cr);
++
++ if (cr.found)
++ return cr.min_physaddr >> PAGE_SHIFT;
++ else
++ return ULONG_MAX;
+ }
++EXPORT_SYMBOL_GPL(next_ram_page);
+
+ /*
+ * This installs a clean page in the kernel's page table.
+--- linux-2.6.12/arch/ia64/mm/discontig.c.orig 2005-08-18 12:39:57.000000000 -0400
++++ linux-2.6.12/arch/ia64/mm/discontig.c 2005-08-18 14:23:59.000000000 -0400
+@@ -21,6 +21,7 @@
+ #include <linux/acpi.h>
+ #include <linux/efi.h>
+ #include <linux/nodemask.h>
++#include <linux/module.h>
+ #include <asm/pgalloc.h>
+ #include <asm/tlb.h>
+ #include <asm/meminit.h>
+@@ -556,6 +557,8 @@
+ printk("%d free buffer pages\n", nr_free_buffer_pages());
+ }
+
++EXPORT_SYMBOL_GPL(show_mem);
++
+ /**
+ * call_pernode_memory - use SRAT to call callback functions with node info
+ * @start: physical start of range
+--- linux-2.6.12/arch/ia64/mm/contig.c.orig 2005-06-17 15:48:29.000000000 -0400
++++ linux-2.6.12/arch/ia64/mm/contig.c 2005-08-18 14:23:59.000000000 -0400
+@@ -19,6 +19,7 @@
+ #include <linux/efi.h>
+ #include <linux/mm.h>
+ #include <linux/swap.h>
++#include <linux/module.h>
+
+ #include <asm/meminit.h>
+ #include <asm/pgalloc.h>
+@@ -65,6 +66,8 @@
+ pgtable_quicklist_total_size());
+ }
+
++EXPORT_SYMBOL_GPL(show_mem);
++
+ /* physical address where the bootmem map is located */
+ unsigned long bootmap_start;
+
+--- linux-2.6.12/arch/ia64/kernel/process.c.orig 2005-08-18 12:41:05.000000000 -0400
++++ linux-2.6.12/arch/ia64/kernel/process.c 2005-08-18 14:25:30.000000000 -0400
+@@ -41,6 +41,7 @@
+ #include <asm/uaccess.h>
+ #include <asm/unwind.h>
+ #include <asm/user.h>
++#include <asm/diskdump.h>
+
+ #include "entry.h"
+
+@@ -154,6 +155,8 @@
+ show_stack(NULL, NULL);
+ }
+
++EXPORT_SYMBOL_GPL(show_regs);
++
+ void
+ do_notify_resume_user (sigset_t *oldset, struct sigscratch *scr, long in_syscall)
+ {
+@@ -591,11 +594,13 @@
+ }
+
+ void
+-do_copy_regs (struct unw_frame_info *info, void *arg)
++ia64_do_copy_regs (struct unw_frame_info *info, void *arg)
+ {
+ do_copy_task_regs(current, info, arg);
+ }
+
++EXPORT_SYMBOL_GPL(ia64_do_copy_regs);
++
+ void
+ do_dump_fpu (struct unw_frame_info *info, void *arg)
+ {
+@@ -608,7 +613,7 @@
+ struct unw_frame_info tcore_info;
+
+ if (current == task) {
+- unw_init_running(do_copy_regs, regs);
++ unw_init_running(ia64_do_copy_regs, regs);
+ } else {
+ memset(&tcore_info, 0, sizeof(tcore_info));
+ unw_init_from_blocked_task(&tcore_info, task);
+@@ -620,7 +625,7 @@
+ void
+ ia64_elf_core_copy_regs (struct pt_regs *pt, elf_gregset_t dst)
+ {
+- unw_init_running(do_copy_regs, dst);
++ unw_init_running(ia64_do_copy_regs, dst);
+ }
+
+ int
+@@ -821,3 +826,22 @@
+ machine_halt();
+ }
+
++
++void
++ia64_freeze_cpu (struct unw_frame_info *info, void *arg)
++{
++ current->thread.ksp = (__u64)(info->sw) - 16;
++ for (;;) local_irq_disable();
++}
++
++EXPORT_SYMBOL_GPL(ia64_freeze_cpu);
++
++void
++ia64_start_dump (struct unw_frame_info *info, void *arg)
++{
++ struct dump_call_param *param = arg;
++
++ param->func(param->regs, info);
++}
++
++EXPORT_SYMBOL_GPL(ia64_start_dump);
+--- linux-2.6.12/arch/ia64/kernel/traps.c.orig 2005-08-18 12:39:57.000000000 -0400
++++ linux-2.6.12/arch/ia64/kernel/traps.c 2005-08-18 14:23:59.000000000 -0400
+@@ -108,6 +108,12 @@
+ } else
+ printk(KERN_ERR "Recursive die() failure, output suppressed\n");
+
++ try_crashdump(regs);
++ if (panic_on_oops) {
++ if (netdump_func)
++ netdump_func = NULL;
++ panic("Fatal exception");
++ }
+ bust_spinlocks(0);
+ die.lock_owner = -1;
+ spin_unlock_irq(&die.lock);
--- linux-2.6.12/arch/ppc64/mm/init.c.orig 2005-08-18 12:41:13.000000000 -0400
+++ linux-2.6.12/arch/ppc64/mm/init.c 2005-08-18 14:23:59.000000000 -0400
@@ -113,6 +113,7 @@
linux-2.6-crashdump-reboot-exports.patch:
i386/kernel/process.c | 2 ++
i386/kernel/reboot.c | 4 ++++
ia64/kernel/process.c | 4 ++++
ppc64/kernel/setup.c | 4 ++++
s390/kernel/process.c | 2 ++
s390/kernel/setup.c | 4 ++++
x86_64/kernel/reboot.c | 4 ++++
7 files changed, 24 insertions(+)
Index: linux-2.6-crashdump-reboot-exports.patch
===================================================================
RCS file: /cvs/dist/rpms/kernel/FC-4/linux-2.6-crashdump-reboot-exports.patch,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- linux-2.6-crashdump-reboot-exports.patch 26 Aug 2005 07:04:29 -0000 1.2
+++ linux-2.6-crashdump-reboot-exports.patch 29 Sep 2005 23:04:26 -0000 1.3
@@ -1,3 +1,72 @@
+--- linux-2.6.12/arch/s390/kernel/process.c.orig 2005-08-22 14:11:14.469588353 -0400
++++ linux-2.6.12/arch/s390/kernel/process.c 2005-08-22 14:11:31.717710903 -0400
+@@ -158,6 +158,8 @@ void show_regs(struct pt_regs *regs)
+ show_trace(0,(unsigned long *) regs->gprs[15]);
+ }
+
++EXPORT_SYMBOL(show_regs);
++
+ extern void kernel_thread_starter(void);
+
+ __asm__(".align 4\n"
+--- linux-2.6.12/arch/s390/kernel/setup.c.orig 2005-08-22 14:11:53.530072038 -0400
++++ linux-2.6.12/arch/s390/kernel/setup.c 2005-08-22 14:12:09.611389274 -0400
+@@ -299,12 +299,16 @@ void machine_restart(char *command)
+ _machine_restart(command);
+ }
+
++EXPORT_SYMBOL(machine_restart);
++
+ void machine_halt(void)
+ {
+ console_unblank();
+ _machine_halt();
+ }
+
++EXPORT_SYMBOL(machine_halt);
++
+ void machine_power_off(void)
+ {
+ console_unblank();
+--- linux-2.6.12/arch/ia64/kernel/process.c.orig 2005-08-22 14:07:34.782386720 -0400
++++ linux-2.6.12/arch/ia64/kernel/process.c 2005-08-22 14:07:36.013178773 -0400
+@@ -812,12 +812,16 @@ machine_restart (char *restart_cmd)
+ (*efi.reset_system)(EFI_RESET_WARM, 0, 0, NULL);
+ }
+
++EXPORT_SYMBOL(machine_restart);
++
+ void
+ machine_halt (void)
+ {
+ cpu_halt();
+ }
+
++EXPORT_SYMBOL(machine_halt);
++
+ void
+ machine_power_off (void)
+ {
+--- linux-2.6.12/arch/ppc64/kernel/setup.c.orig 2005-08-22 14:09:24.318964809 -0400
++++ linux-2.6.12/arch/ppc64/kernel/setup.c 2005-08-22 14:09:43.133825875 -0400
+@@ -695,6 +695,8 @@ void machine_restart(char *cmd)
+ while (1) ;
+ }
+
++EXPORT_SYMBOL(machine_restart);
++
+ void machine_power_off(void)
+ {
+ machine_shutdown();
+@@ -720,6 +722,8 @@ void machine_halt(void)
+ while (1) ;
+ }
+
++EXPORT_SYMBOL(machine_halt);
++
+ static int ppc64_panic_event(struct notifier_block *this,
+ unsigned long event, void *ptr)
+ {
--- linux-2.6.12/arch/i386/kernel/process.c.orig 2005-08-22 14:06:18.768231301 -0400
+++ linux-2.6.12/arch/i386/kernel/process.c 2005-08-22 14:06:19.889041887 -0400
@@ -327,6 +327,8 @@ void show_regs(struct pt_regs * regs)
@@ -9,3 +78,37 @@
/*
* This gets run with %ebx containing the
* function to call, and %edx containing
+--- linux-2.6.12/arch/i386/kernel/reboot.c.orig 2005-08-22 14:06:57.191738225 -0400
++++ linux-2.6.12/arch/i386/kernel/reboot.c 2005-08-22 14:06:46.392563059 -0400
+@@ -341,10 +341,14 @@ void machine_restart(char * __unused)
+ machine_emergency_restart();
+ }
+
++EXPORT_SYMBOL(machine_restart);
++
+ void machine_halt(void)
+ {
+ }
+
++EXPORT_SYMBOL(machine_halt);
++
+ void machine_power_off(void)
+ {
+ machine_shutdown();
+--- linux-2.6.12/arch/x86_64/kernel/reboot.c.orig 2005-08-22 14:08:25.688786610 -0400
++++ linux-2.6.12/arch/x86_64/kernel/reboot.c 2005-08-22 14:08:17.449178506 -0400
+@@ -147,10 +147,14 @@ void machine_restart(char * __unused)
+ machine_emergency_restart();
+ }
+
++EXPORT_SYMBOL(machine_restart);
++
+ void machine_halt(void)
+ {
+ }
+
++EXPORT_SYMBOL(machine_halt);
++
+ void machine_power_off(void)
+ {
+ if (!reboot_force) {
linux-2.6-diskdump.patch:
drivers/block/Kconfig | 5
drivers/block/Makefile | 1
drivers/block/diskdump.c | 1121 +++++++++++++++++++++++++++++++++++++++++
include/asm-generic/diskdump.h | 13
include/asm-i386/diskdump.h | 55 ++
include/asm-ia64/diskdump.h | 63 ++
include/asm-ppc/diskdump.h | 6
include/asm-ppc64/diskdump.h | 55 ++
include/asm-s390/diskdump.h | 6
include/asm-x86_64/diskdump.h | 44 +
include/linux/diskdump.h | 186 ++++++
include/linux/interrupt.h | 4
include/linux/timer.h | 3
include/linux/workqueue.h | 3
kernel/softirq.c | 32 +
kernel/timer.c | 43 +
kernel/workqueue.c | 34 +
17 files changed, 1670 insertions(+), 4 deletions(-)
Index: linux-2.6-diskdump.patch
===================================================================
RCS file: /cvs/dist/rpms/kernel/FC-4/linux-2.6-diskdump.patch,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- linux-2.6-diskdump.patch 26 Aug 2005 06:53:13 -0000 1.1
+++ linux-2.6-diskdump.patch 29 Sep 2005 23:04:27 -0000 1.2
@@ -1242,38 +1242,32 @@
#include <asm/uaccess.h>
#include <asm/unistd.h>
-@@ -438,8 +438,9 @@ static int cascade(tvec_base_t *base, tv
+@@ -460,8 +462,9 @@ static int cascade(tvec_base_t *base, tv
static inline void __run_timers(tvec_base_t *base)
{
struct timer_list *timer;
+ unsigned long flags;
-- spin_lock_irq(&base->lock);
-+ spin_lock_irqsave(&base->lock, flags);
+- spin_lock_irq(&base->t_base.lock);
++ spin_lock_irqsave(&base->t_base.lock, flags);
while (time_after_eq(jiffies, base->timer_jiffies)) {
struct list_head work_list = LIST_HEAD_INIT(work_list);
struct list_head *head = &work_list;
-@@ -468,7 +469,7 @@ repeat:
+@@ -487,7 +490,7 @@ static inline void __run_timers(tvec_bas
+
set_running_timer(base, timer);
- smp_wmb();
- timer->base = NULL;
-- spin_unlock_irq(&base->lock);
-+ spin_unlock_irqrestore(&base->lock, flags);
+ detach_timer(timer, 1);
+- spin_unlock_irq(&base->t_base.lock);
++ spin_unlock_irqrestore(&base->t_base.lock, flags);
{
- u32 preempt_count = preempt_count();
+ int preempt_count = preempt_count();
fn(data);
-@@ -477,12 +478,12 @@ repeat:
- BUG();
- }
- }
-- spin_lock_irq(&base->lock);
-+ spin_lock_irqsave(&base->lock, flags);
- goto repeat;
+@@ -504,7 +507,7 @@ static inline void __run_timers(tvec_bas
}
}
set_running_timer(base, NULL);
-- spin_unlock_irq(&base->lock);
-+ spin_unlock_irqrestore(&base->lock, flags);
+- spin_unlock_irq(&base->t_base.lock);
++ spin_unlock_irqrestore(&base->t_base.lock, flags);
}
#ifdef CONFIG_NO_IDLE_HZ
linux-2.6-dump_smp_call_function.patch:
arch/i386/kernel/smp.c | 44 ++++++++++++++++++++++++++++++++++++++++++++
arch/ia64/kernel/smp.c | 44 ++++++++++++++++++++++++++++++++++++++++++++
arch/ppc64/kernel/smp.c | 45 ++++++++++++++++++++++++++++++++++++++++++++-
arch/x86_64/kernel/smp.c | 45 +++++++++++++++++++++++++++++++++++++++++++++
drivers/block/diskdump.c | 2 +-
drivers/net/netdump.c | 2 +-
include/linux/smp.h | 2 ++
7 files changed, 181 insertions(+), 3 deletions(-)
Index: linux-2.6-dump_smp_call_function.patch
===================================================================
RCS file: /cvs/dist/rpms/kernel/FC-4/linux-2.6-dump_smp_call_function.patch,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- linux-2.6-dump_smp_call_function.patch 27 Aug 2005 00:05:52 -0000 1.4
+++ linux-2.6-dump_smp_call_function.patch 29 Sep 2005 23:04:27 -0000 1.5
@@ -133,14 +133,6 @@
*
--- linux-2.6.12/arch/i386/kernel/smp.c.orig 2005-08-23 10:50:15.380598925 -0400
+++ linux-2.6.12/arch/i386/kernel/smp.c 2005-08-23 10:53:29.712621271 -0400
-@@ -19,6 +19,7 @@
- #include <linux/mc146818rtc.h>
- #include <linux/cache.h>
- #include <linux/interrupt.h>
-+#include <linux/module.h>
-
- #include <asm/mtrr.h>
- #include <asm/tlbflush.h>
@@ -489,6 +489,7 @@ void smp_send_reschedule(int cpu)
* static memory requirements. It also looks cleaner.
*/
linux-2.6-netdump.patch:
drivers/net/Kconfig | 7
drivers/net/Makefile | 1
drivers/net/netdump.c | 550 ++++++++++++++++++++++++++++++++++++++++++
drivers/net/netdump.h | 90 ++++++
include/asm-generic/netdump.h | 48 +++
include/asm-i386/netdump.h | 79 ++++++
include/asm-ia64/netdump.h | 82 ++++++
include/asm-ppc64/netdump.h | 79 ++++++
include/asm-s390/netdump.h | 6
include/asm-x86_64/netdump.h | 79 ++++++
include/linux/netdevice.h | 8
include/linux/netpoll.h | 4
net/core/netpoll.c | 17 +
13 files changed, 1039 insertions(+), 11 deletions(-)
Index: linux-2.6-netdump.patch
===================================================================
RCS file: /cvs/dist/rpms/kernel/FC-4/linux-2.6-netdump.patch,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- linux-2.6-netdump.patch 26 Aug 2005 06:53:13 -0000 1.1
+++ linux-2.6-netdump.patch 29 Sep 2005 23:04:27 -0000 1.2
@@ -644,22 +644,22 @@
+
+module_init(init_netdump);
+module_exit(cleanup_netdump);
---- linux-2.6.12/net/Kconfig~ 2005-08-26 02:41:34.000000000 -0400
-+++ linux-2.6.12/net/Kconfig 2005-08-26 02:41:54.000000000 -0400
-@@ -618,6 +618,13 @@ endmenu
-
- endmenu
-
-+config NETDUMP
-+ tristate "Network kernel crash dump support"
-+ depends on NETPOLL && NETPOLL_TRAP && (X86 || PPC_PSERIES || IA64)
-+ ---help---
-+ Enable this option if you have a netdump server and you would like
-+ to collect kernel crash dumps.
+--- linux-2.6.12/drivers/net/Kconfig.netdump.orig 2005-08-19 17:45:43.052483533 -0400
++++ linux-2.6.12/drivers/net/Kconfig 2005-08-19 17:48:14.835252548 -0400
+@@ -2545,6 +2545,13 @@ config NETCONSOLE
+ If you want to log kernel messages over the network, enable this.
+ See <file:Documentation/networking/netconsole.txt> for details.
+
++ config NETDUMP
++ tristate "Network kernel crash dump support"
++ depends on NETPOLL && NETPOLL_TRAP && (X86 || PPC_PSERIES || IA64)
++ ---help---
++ Enable this option if you have a netdump server and you would like
++ to collect kernel crash dumps.
+
- config NETPOLL
- def_bool NETCONSOLE
+ endif #NETDEVICES
+ config NETPOLL
--- linux-2.6.12/drivers/net/Makefile.netdump.orig 2005-08-19 17:45:43.053483367 -0400
+++ linux-2.6.12/drivers/net/Makefile 2005-08-19 17:47:33.025203810 -0400
@@ -195,3 +195,4 @@ obj-$(CONFIG_IRDA) += irda/
@@ -682,15 +682,15 @@
/*
* We maintain a small pool of fully-sized skbs, to make sure the
-@@ -132,7 +132,7 @@ static int checksum_udp(struct sk_buff *
- */
+@@ -132,7 +134,7 @@ static int checksum_udp(struct sk_buff *
static void poll_napi(struct netpoll *np)
{
+ struct netpoll_info *npinfo = np->dev->npinfo;
- int budget = 16;
+ int budget = netdump_mode ? 64 : 16;
if (test_bit(__LINK_STATE_RX_SCHED, &np->dev->state) &&
- np->poll_owner != smp_processor_id() &&
+ npinfo->poll_owner != smp_processor_id() &&
@@ -203,6 +205,7 @@ static void zap_completion_queue(void)
}
@@ -928,10 +928,10 @@
--- linux-2.6.12/include/linux/netpoll.h.netdump.orig 2005-08-19 17:46:01.045492820 -0400
+++ linux-2.6.12/include/linux/netpoll.h 2005-08-19 17:47:33.041201150 -0400
-@@ -17,7 +17,8 @@ struct netpoll {
+@@ -17,7 +17,8 @@ struct netpoll;
+ struct netpoll {
struct net_device *dev;
char dev_name[16], *name;
- int rx_flags;
- void (*rx_hook)(struct netpoll *, int, char *, int);
+ void (*rx_hook)(struct netpoll *, short, char *, int);
+ void (*dump_func)(struct pt_regs *);
linux-2.6-usb-transcend-nosense.patch:
unusual_devs.h | 10 ++++++++++
1 files changed, 10 insertions(+)
Index: linux-2.6-usb-transcend-nosense.patch
===================================================================
RCS file: /cvs/dist/rpms/kernel/FC-4/linux-2.6-usb-transcend-nosense.patch,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- linux-2.6-usb-transcend-nosense.patch 26 Aug 2005 23:15:39 -0000 1.1
+++ linux-2.6-usb-transcend-nosense.patch 29 Sep 2005 23:04:27 -0000 1.2
@@ -1,3 +1,6 @@
+
+bugzilla 162559
+
--- linux-2.6.13-rc6/drivers/usb/storage/unusual_devs.h 2005-08-14 20:57:45.000000000 -0700
+++ linux-2.6.13-rc6-lem/drivers/usb/storage/unusual_devs.h 2005-08-18 14:27:54.000000000 -0700
@@ -96,6 +96,16 @@ UNUSUAL_DEV( 0x0436, 0x0005, 0x0100, 0x
linux-2.6-usbhid-wireless-security-lock.patch:
hid-core.c | 4 ++++
1 files changed, 4 insertions(+)
Index: linux-2.6-usbhid-wireless-security-lock.patch
===================================================================
RCS file: /cvs/dist/rpms/kernel/FC-4/linux-2.6-usbhid-wireless-security-lock.patch,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- linux-2.6-usbhid-wireless-security-lock.patch 3 Aug 2005 21:32:14 -0000 1.1
+++ linux-2.6-usbhid-wireless-security-lock.patch 29 Sep 2005 23:04:27 -0000 1.2
@@ -1,3 +1,6 @@
+
+bugzilla 147479
+
diff -ur linux-2.6.11.orig/drivers/usb/input/hid-core.c linux-2.6.11/drivers/usb/input/hid-core.c
--- linux-2.6.11.orig/drivers/usb/input/hid-core.c 2005-03-02 08:38:10.000000000 +0100
+++ linux-2.6.11/drivers/usb/input/hid-core.c 2005-07-24 19:25:35.000000000 +0200
linux-2.6-usbmon-deficiency-workaround.patch:
Makefile | 2 +-
mon_dma.c | 55 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
mon_text.c | 35 +++++++++++++++++------------------
usb_mon.h | 4 ++++
4 files changed, 77 insertions(+), 19 deletions(-)
Index: linux-2.6-usbmon-deficiency-workaround.patch
===================================================================
RCS file: /cvs/dist/rpms/kernel/FC-4/linux-2.6-usbmon-deficiency-workaround.patch,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- linux-2.6-usbmon-deficiency-workaround.patch 12 Jul 2005 20:53:12 -0000 1.1
+++ linux-2.6-usbmon-deficiency-workaround.patch 29 Sep 2005 23:04:27 -0000 1.2
@@ -1,38 +1,149 @@
-We have usbmon enabled now and it's good, but usb-storage moved away
-from under me a little bit. It now maps everything for DMA beforehand,
-which makes usbmon to miss the SCSI commands and replies.
-
-I am going to address this problem in usbmon, where it belongs, but
-it requires some work which is not done.
-
-What do you think about carrying the attached patch for a few months
-(I hope to turn around sooner, but you know how that works!)
+I came around with the usbmon fix (although it's for i386 only at this
+time - I would gladly take a patch for x86_64). So, would you please
+drop the workaround in usb-storage, patch 1402, and apply the attached
+instead?
-- Pete
-diff -urp -X dontdiff linux-2.6.12/drivers/usb/storage/transport.c linux-2.6.12-lem/drivers/usb/storage/transport.c
---- linux-2.6.12/drivers/usb/storage/transport.c 2005-06-21 12:58:48.000000000 -0700
-+++ linux-2.6.12-lem/drivers/usb/storage/transport.c 2005-07-06 14:00:30.000000000 -0700
-@@ -948,8 +948,9 @@ int usb_stor_Bulk_max_lun(struct us_data
+diff -urpN -X dontdiff linux-2.6.13-rc6/drivers/usb/mon/Makefile linux-2.6.13-rc6-lem/drivers/usb/mon/Makefile
+--- linux-2.6.13-rc6/drivers/usb/mon/Makefile 2005-08-14 20:57:43.000000000 -0700
++++ linux-2.6.13-rc6-lem/drivers/usb/mon/Makefile 2005-08-15 11:25:32.000000000 -0700
+@@ -2,7 +2,7 @@
+ # Makefile for USB Core files and filesystem
+ #
- int usb_stor_Bulk_transport(struct scsi_cmnd *srb, struct us_data *us)
+-usbmon-objs := mon_main.o mon_stat.o mon_text.o
++usbmon-objs := mon_main.o mon_stat.o mon_text.o mon_dma.o
+
+ # This does not use CONFIG_USB_MON because we want this to use a tristate.
+ obj-$(CONFIG_USB) += usbmon.o
+diff -urpN -X dontdiff linux-2.6.13-rc6/drivers/usb/mon/mon_dma.c linux-2.6.13-rc6-lem/drivers/usb/mon/mon_dma.c
+--- linux-2.6.13-rc6/drivers/usb/mon/mon_dma.c 1969-12-31 16:00:00.000000000 -0800
++++ linux-2.6.13-rc6-lem/drivers/usb/mon/mon_dma.c 2005-08-15 16:11:51.000000000 -0700
+@@ -0,0 +1,55 @@
++/*
++ * The USB Monitor, inspired by Dave Harding's USBMon.
++ *
++ * mon_dma.c: Library which snoops on DMA areas.
++ *
++ * Copyright (C) 2005 Pete Zaitcev (zaitcev at redhat.com)
++ */
++#include <linux/kernel.h>
++#include <linux/list.h>
++#include <linux/highmem.h>
++#include <asm/page.h>
++
++#include <linux/usb.h> /* Only needed for declarations in usb_mon.h */
++#include "usb_mon.h"
++
++#ifdef __i386__ /* CONFIG_ARCH_I386 does not exit */
++#define MON_HAS_UNMAP 1
++
++#define phys_to_page(phys) pfn_to_page((phys) >> PAGE_SHIFT)
++
++char mon_dmapeek(unsigned char *dst, dma_addr_t dma_addr, int len)
++{
++ struct page *pg;
++ unsigned long flags;
++ unsigned char *map;
++ unsigned char *ptr;
++
++ /*
++ * On i386, a DMA handle is the "physical" address of a page.
++ * In other words, the bus address is equal to physical address.
++ * There is no IOMMU.
++ */
++ pg = phys_to_page(dma_addr);
++
++ /*
++ * We are called from hardware IRQs in case of callbacks.
++ * But we can be called from softirq or process context in case
++ * of submissions. In such case, we need to protect KM_IRQ0.
++ */
++ local_irq_save(flags);
++ map = kmap_atomic(pg, KM_IRQ0);
++ ptr = map + (dma_addr & (PAGE_SIZE-1));
++ memcpy(dst, ptr, len);
++ kunmap_atomic(map, KM_IRQ0);
++ local_irq_restore(flags);
++ return 0;
++}
++#endif /* __i386__ */
++
++#ifndef MON_HAS_UNMAP
++char mon_dmapeek(unsigned char *dst, dma_addr_t dma_addr, int len)
++{
++ return 'D';
++}
++#endif
+diff -urpN -X dontdiff linux-2.6.13-rc6/drivers/usb/mon/mon_text.c linux-2.6.13-rc6-lem/drivers/usb/mon/mon_text.c
+--- linux-2.6.13-rc6/drivers/usb/mon/mon_text.c 2005-08-14 20:57:43.000000000 -0700
++++ linux-2.6.13-rc6-lem/drivers/usb/mon/mon_text.c 2005-08-15 11:44:13.000000000 -0700
+@@ -91,25 +91,11 @@ static inline char mon_text_get_data(str
+ int len, char ev_type)
{
-- struct bulk_cb_wrap *bcb = (struct bulk_cb_wrap *) us->iobuf;
-- struct bulk_cs_wrap *bcs = (struct bulk_cs_wrap *) us->iobuf;
-+ /* Offset into iobuf a little in order to defeat pre-set DMA */
-+ struct bulk_cb_wrap *bcb = (struct bulk_cb_wrap *) (us->iobuf + 4);
-+ struct bulk_cs_wrap *bcs = (struct bulk_cs_wrap *) (us->iobuf + 4);
- unsigned int transfer_length = srb->request_bufflen;
- unsigned int residue;
- int result;
-@@ -960,7 +961,7 @@ int usb_stor_Bulk_transport(struct scsi_
- /* Take care of BULK32 devices; set extra byte to 0 */
- if ( unlikely(us->flags & US_FL_BULK32)) {
- cbwlen = 32;
-- us->iobuf[31] = 0;
-+ ((unsigned char *)bcb)[31] = 0;
+ int pipe = urb->pipe;
+- unsigned char *data;
+-
+- /*
+- * The check to see if it's safe to poke at data has an enormous
+- * number of corner cases, but it seems that the following is
+- * more or less safe.
+- *
+- * We do not even try to look transfer_buffer, because it can
+- * contain non-NULL garbage in case the upper level promised to
+- * set DMA for the HCD.
+- */
+- if (urb->transfer_flags & URB_NO_TRANSFER_DMA_MAP)
+- return 'D';
+
+ if (len <= 0)
+ return 'L';
+-
+- if ((data = urb->transfer_buffer) == NULL)
+- return 'Z'; /* '0' would be not as pretty. */
++ if (len >= DATA_MAX)
++ len = DATA_MAX;
+
+ /*
+ * Bulk is easy to shortcut reliably.
+@@ -126,8 +112,21 @@ static inline char mon_text_get_data(str
+ }
}
- /* set up the command wrapper */
+- if (len >= DATA_MAX)
+- len = DATA_MAX;
++ /*
++ * The check to see if it's safe to poke at data has an enormous
++ * number of corner cases, but it seems that the following is
++ * more or less safe.
++ *
++ * We do not even try to look transfer_buffer, because it can
++ * contain non-NULL garbage in case the upper level promised to
++ * set DMA for the HCD.
++ */
++ if (urb->transfer_flags & URB_NO_TRANSFER_DMA_MAP)
++ return mon_dmapeek(ep->data, urb->transfer_dma, len);
++
++ if (urb->transfer_buffer == NULL)
++ return 'Z'; /* '0' would be not as pretty. */
++
+ memcpy(ep->data, urb->transfer_buffer, len);
+ return 0;
+ }
+diff -urpN -X dontdiff linux-2.6.13-rc6/drivers/usb/mon/usb_mon.h linux-2.6.13-rc6-lem/drivers/usb/mon/usb_mon.h
+--- linux-2.6.13-rc6/drivers/usb/mon/usb_mon.h 2005-06-17 12:48:29.000000000 -0700
++++ linux-2.6.13-rc6-lem/drivers/usb/mon/usb_mon.h 2005-08-15 16:12:42.000000000 -0700
+@@ -43,6 +45,10 @@ struct mon_reader {
+ void mon_reader_add(struct mon_bus *mbus, struct mon_reader *r);
+ void mon_reader_del(struct mon_bus *mbus, struct mon_reader *r);
+
++/*
++ */
++extern char mon_dmapeek(unsigned char *dst, dma_addr_t dma_addr, int len);
++
+ extern struct semaphore mon_lock;
+
+ extern struct file_operations mon_fops_text;
linux-2.6.0-sleepon.patch:
drivers/block/DAC960.c | 12 +++++++++++-
drivers/net/tokenring/ibmtr.c | 9 ++++++++-
include/linux/wait.h | 6 +++---
kernel/sched.c | 28 +++++++++++++++-------------
net/sunrpc/clnt.c | 9 ++++++++-
5 files changed, 45 insertions(+), 19 deletions(-)
Index: linux-2.6.0-sleepon.patch
===================================================================
RCS file: /cvs/dist/rpms/kernel/FC-4/linux-2.6.0-sleepon.patch,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -r1.13 -r1.14
--- linux-2.6.0-sleepon.patch 22 Mar 2005 07:00:21 -0000 1.13
+++ linux-2.6.0-sleepon.patch 29 Sep 2005 23:04:28 -0000 1.14
@@ -63,17 +63,6 @@
return i? 0 : -EAGAIN;
}
-diff -urNp --exclude-from=/home/davej/.exclude linux-1060/fs/lockd/clntlock.c linux-1070/fs/lockd/clntlock.c
---- linux-1060/fs/lockd/clntlock.c
-+++ linux-1070/fs/lockd/clntlock.c
-@@ -70,6 +70,7 @@ nlmclnt_block(struct nlm_host *host, str
- * nlmclnt_lock for an explanation.
- */
- sleep_on_timeout(&block.b_wait, 30*HZ);
-+ #warning race
-
- for (head = &nlm_blocked; *head; head = &(*head)->b_next) {
- if (*head == &block) {
diff -urNp --exclude-from=/home/davej/.exclude linux-1060/include/linux/wait.h linux-1070/include/linux/wait.h
--- linux-1060/include/linux/wait.h
+++ linux-1070/include/linux/wait.h
linux-2.6.11-acpi-thinkpad-c2c3.patch:
processor_idle.c | 6 ++++++
1 files changed, 6 insertions(+)
Index: linux-2.6.11-acpi-thinkpad-c2c3.patch
===================================================================
RCS file: /cvs/dist/rpms/kernel/FC-4/linux-2.6.11-acpi-thinkpad-c2c3.patch,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- linux-2.6.11-acpi-thinkpad-c2c3.patch 5 Aug 2005 22:14:57 -0000 1.3
+++ linux-2.6.11-acpi-thinkpad-c2c3.patch 29 Sep 2005 23:04:28 -0000 1.4
@@ -1,3 +1,5 @@
+https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=165590
+
--- linux-2.6.12/drivers/acpi/processor_idle.c~ 2005-08-01 00:26:50.000000000 -0400
+++ linux-2.6.12/drivers/acpi/processor_idle.c 2005-08-01 00:27:53.000000000 -0400
@@ -101,6 +101,9 @@ static struct dmi_system_id __initdata p
@@ -10,3 +12,15 @@
{ set_max_cstate, "Medion 41700", {
DMI_MATCH(DMI_BIOS_VENDOR,"Phoenix Technologies LTD"),
DMI_MATCH(DMI_BIOS_VERSION,"R01-A1J") }, (void*)1},
+--- linux-2.6.12/drivers/acpi/processor_idle.c~ 2005-08-26 00:51:18.000000000 -0400
++++ linux-2.6.12/drivers/acpi/processor_idle.c 2005-08-26 00:51:59.000000000 -0400
+@@ -103,6 +103,9 @@ static struct dmi_system_id __initdata p
+ { set_max_cstate, "IBM ThinkPad R40e", {
+ DMI_MATCH(DMI_BIOS_VENDOR,"IBM"),
+ DMI_MATCH(DMI_BIOS_VERSION,"1SET61WW") }, (void*)1},
++ { set_max_cstate, "IBM ThinkPad R40e", {
++ DMI_MATCH(DMI_BIOS_VENDOR,"IBM"),
++ DMI_MATCH(DMI_BIOS_VERSION,"1SET68WW") }, (void*)1},
+ { set_max_cstate, "Medion 41700", {
+ DMI_MATCH(DMI_BIOS_VENDOR,"Phoenix Technologies LTD"),
+ DMI_MATCH(DMI_BIOS_VERSION,"R01-A1J") }, (void*)1},
linux-2.6.11-devmem.patch:
arch/i386/mm/init.c | 19 +++++
arch/ia64/mm/init.c | 7 ++
arch/ppc64/mm/init.c | 12 +++
arch/s390/mm/init.c | 5 +
arch/x86_64/mm/init.c | 20 +++++
drivers/char/mem.c | 146 ++++++-------------------------------------
fs/proc/kcore.c | 2
include/asm-alpha/page.h | 1
include/asm-arm/page.h | 2
include/asm-arm26/page.h | 2
include/asm-cris/page.h | 2
include/asm-h8300/page.h | 2
include/asm-i386/page.h | 4 +
include/asm-ia64/page.h | 2
include/asm-m68k/page.h | 2
include/asm-m68knommu/page.h | 2
include/asm-mips/page.h | 2
include/asm-parisc/page.h | 2
include/asm-ppc/page.h | 2
include/asm-ppc64/page.h | 2
include/asm-s390/page.h | 2
include/asm-sh/page.h | 2
include/asm-sh64/page.h | 2
include/asm-sparc/page.h | 2
include/asm-sparc64/page.h | 2
include/asm-um/page.h | 1
include/asm-v850/page.h | 2
include/asm-x86_64/page.h | 4 +
28 files changed, 130 insertions(+), 125 deletions(-)
Index: linux-2.6.11-devmem.patch
===================================================================
RCS file: /cvs/dist/rpms/kernel/FC-4/linux-2.6.11-devmem.patch,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- linux-2.6.11-devmem.patch 6 Apr 2005 20:44:18 -0000 1.3
+++ linux-2.6.11-devmem.patch 29 Sep 2005 23:04:28 -0000 1.4
@@ -125,8 +125,8 @@
+ cursor = from >> PAGE_SHIFT;
+ while ((cursor << PAGE_SHIFT) < to) {
+ if (!devmem_is_allowed(cursor)) {
-+ printk ("Program %s tried to read /dev/mem between %lx->%lx."
-+ "We stopped at %lx\n", current->comm, from, to, cursor);
++ printk ("Program %s tried to read /dev/mem between %lx->%lx.\n",
++ current->comm, from, to);
+ return 0;
+ }
+ cursor++;
@@ -290,7 +290,7 @@
- return virtr + wrote;
-}
-
- #if defined(CONFIG_ISA) || !defined(__mc68000__)
+ #if (defined(CONFIG_ISA) || !defined(__mc68000__)) && (!defined(CONFIG_PPC_ISERIES) || defined(CONFIG_PCI))
static ssize_t read_port(struct file * file, char __user * buf,
size_t count, loff_t *ppos)
@@ -717,7 +617,6 @@ static struct file_operations mem_fops =
linux-2.6.11-execshield-vdso.patch:
linux-2.6.11/arch/i386/kernel/sysenter.c | 71 +++++++++++++++++------------
linux-2.6.11/fs/binfmt_elf.c | 17 ++----
linux-2.6.11/include/asm-i386/elf.h | 7 ++
linux-2.6.11/include/asm-i386/page.h | 5 ++
linux-2.6.11/include/linux/mm.h | 5 ++
linux-2.6.11/mm/mmap.c | 39 +++++++++++++++
linux-2.6.12/arch/i386/kernel/cpu/common.c | 7 ++
linux/fs/proc/task_mmu.c | 15 ++++--
8 files changed, 123 insertions(+), 43 deletions(-)
Index: linux-2.6.11-execshield-vdso.patch
===================================================================
RCS file: /cvs/dist/rpms/kernel/FC-4/linux-2.6.11-execshield-vdso.patch,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- linux-2.6.11-execshield-vdso.patch 25 May 2005 23:26:28 -0000 1.9
+++ linux-2.6.11-execshield-vdso.patch 29 Sep 2005 23:04:28 -0000 1.10
@@ -1,18 +1,3 @@
---- linux-2.6.8/arch/i386/kernel/cpu/common.c~ 2004-10-12 17:21:42.945526432 -0400
-+++ linux-2.6.8/arch/i386/kernel/cpu/common.c 2004-10-12 17:24:30.941987088 -0400
-@@ -384,6 +377,12 @@ void __init identify_cpu(struct cpuinfo_
- if (disable_pse)
- clear_bit(X86_FEATURE_PSE, c->x86_capability);
-
-+ /* hack: disable SEP for non-NX cpus; SEP breaks Execshield. */
-+ #ifdef CONFIG_HIGHMEM64G
-+ if (!test_bit(X86_FEATURE_NX, c->x86_capability))
-+ #endif
-+ clear_bit(X86_FEATURE_SEP, c->x86_capability);
-+
- /* If the model name is still unset, do table lookup. */
- if ( !c->x86_model_id[0] ) {
- char *p;
--- linux-2.6.11/arch/i386/kernel/sysenter.c
+++ linux-2.6.11/arch/i386/kernel/sysenter.c
@@ -48,13 +48,6 @@ static int __init sysenter_setup(void)
@@ -263,14 +248,55 @@
compute_creds(bprm);
current->flags &= ~PF_FORKNOEXEC;
create_elf_tables(bprm, &loc->elf_ex, (interpreter_type == INTERPRETER_AOUT),
---- linux-2.6.11/arch/i386/kernel/sysenter.c~ 2005-05-25 19:25:10.000000000 -0400
-+++ linux-2.6.11/arch/i386/kernel/sysenter.c 2005-05-25 19:25:41.000000000 -0400
-@@ -51,7 +51,7 @@ static int __init sysenter_setup(void)
-
- sysenter_page = virt_to_page(page);
+--- linux-2.6.12/arch/i386/kernel/cpu/common.c~ 2005-06-21 14:36:07.000000000 -0400
++++ linux-2.6.12/arch/i386/kernel/cpu/common.c 2005-06-21 14:39:50.000000000 -0400
+@@ -403,6 +403,13 @@ void __devinit identify_cpu(struct cpuin
+ if (disable_pse)
+ clear_bit(X86_FEATURE_PSE, c->x86_capability);
-- if (!boot_cpu_has(X86_FEATURE_SEP)) {
-+ if (1 || (!boot_cpu_has(X86_FEATURE_SEP))) {
- memcpy(page,
- &vsyscall_int80_start,
- &vsyscall_int80_end - &vsyscall_int80_start);
++ if (exec_shield != 0) {
++#ifdef CONFIG_HIGHMEM64G /* NX implies PAE */
++ if (!test_bit(X86_FEATURE_NX, c->x86_capability))
++#endif
++ clear_bit(X86_FEATURE_SEP, c->x86_capability);
++ }
++
+ /* If the model name is still unset, do table lookup. */
+ if ( !c->x86_model_id[0] ) {
+ char *p;
+
+btw., the patch below (against 1381-FC4) adds a vdso marker to
+/proc/*/maps even if the vDSO is randomized a'ka Roland's patch.
+
+ Ingo
+
+Index: linux/fs/proc/task_mmu.c
+===================================================================
+--- linux.orig/fs/proc/task_mmu.c
++++ linux/fs/proc/task_mmu.c
+@@ -142,14 +142,19 @@ static int show_map(struct seq_file *m,
+ if (map->vm_end == mm->brk) {
+ pad_len_spaces(m, len);
+ seq_puts(m, "[heap]");
+- } else {
+- if (map->vm_start <= mm->start_stack &&
++ } else if (map->vm_start <= mm->start_stack &&
+ map->vm_end >= mm->start_stack) {
+
+- pad_len_spaces(m, len);
+- seq_puts(m, "[stack]");
+- }
++ pad_len_spaces(m, len);
++ seq_puts(m, "[stack]");
++ }
++#ifdef __i386__
++ else if (map->vm_start ==
++ (unsigned long)mm->context.vdso) {
++ pad_len_spaces(m, len);
++ seq_puts(m, "[vdso]");
+ }
++#endif
+ } else {
+ pad_len_spaces(m, len);
+ seq_puts(m, "[vdso]");
+
linux-2.6.11-execshield.patch:
linux-2.6.11/arch/i386/kernel/traps.c | 111 ++++++++++++++++-------
linux-2.6.11/arch/x86_64/mm/fault.c | 2
linux-2.6.12/include/asm-x86_64/processor.h | 5 +
linux-2.6.12/mm/mmap.c | 2
linux-810/arch/i386/kernel/asm-offsets.c | 1
linux-810/arch/i386/kernel/entry.S | 8 +
linux-810/arch/i386/kernel/process.c | 59 ++++++++++++
linux-810/arch/i386/kernel/signal.c | 4
linux-810/arch/i386/kernel/smp.c | 3
linux-810/arch/i386/kernel/sysenter.c | 55 +++++++++++
linux-810/arch/i386/kernel/traps.c | 48 +++++++++-
linux-810/arch/i386/kernel/vsyscall-sysenter.S | 6 -
linux-810/arch/i386/kernel/vsyscall.lds.S | 4
linux-810/arch/i386/mm/init.c | 6 +
linux-810/arch/i386/mm/mmap.c | 6 -
linux-810/arch/ia64/ia32/binfmt_elf32.c | 2
linux-810/arch/x86_64/ia32/ia32_binfmt.c | 2
linux-810/arch/x86_64/kernel/process.c | 7 -
linux-810/arch/x86_64/mm/Makefile | 2
linux-810/arch/x86_64/mm/mmap.c | 95 +++++++++++++++++++
linux-810/drivers/char/random.c | 7 +
linux-810/fs/binfmt_elf.c | 120 ++++++++++++++++++++-----
linux-810/fs/proc/array.c | 8 +
linux-810/fs/proc/base.c | 4
linux-810/fs/proc/task_mmu.c | 25 ++++-
linux-810/include/asm-i386/desc.h | 14 ++
linux-810/include/asm-i386/elf.h | 42 +++++---
linux-810/include/asm-i386/mmu.h | 6 +
linux-810/include/asm-i386/pgalloc.h | 1
linux-810/include/asm-i386/processor.h | 8 +
linux-810/include/asm-i386/thread_info.h | 1
linux-810/include/asm-ia64/pgalloc.h | 4
linux-810/include/asm-ppc/pgalloc.h | 5 +
linux-810/include/asm-ppc64/pgalloc.h | 5 +
linux-810/include/asm-s390/pgalloc.h | 4
linux-810/include/asm-sparc/pgalloc.h | 4
linux-810/include/asm-sparc64/pgalloc.h | 4
linux-810/include/asm-x86_64/pgalloc.h | 7 +
linux-810/include/linux/mm.h | 9 +
linux-810/include/linux/resource.h | 5 -
linux-810/include/linux/sched.h | 9 +
linux-810/include/linux/sysctl.h | 3
linux-810/kernel/signal.c | 38 +++++++
linux-810/kernel/sysctl.c | 39 ++++++++
linux-810/mm/fremap.c | 10 +-
linux-810/mm/mmap.c | 105 ++++++++++++++++++++-
linux-810/mm/mprotect.c | 5 -
linux-810/mm/mremap.c | 4
48 files changed, 801 insertions(+), 123 deletions(-)
Index: linux-2.6.11-execshield.patch
===================================================================
RCS file: /cvs/dist/rpms/kernel/FC-4/linux-2.6.11-execshield.patch,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -r1.10 -r1.11
--- linux-2.6.11-execshield.patch 23 Jun 2005 23:58:55 -0000 1.10
+++ linux-2.6.11-execshield.patch 29 Sep 2005 23:04:28 -0000 1.11
@@ -152,13 +152,13 @@
#include <asm/cpufeature.h>
#include <asm/msr.h>
-@@ -41,11 +42,20 @@ void enable_sep_cpu(void *info)
+@@ -41,11 +42,20 @@ void enable_sep_cpu(void)
extern const char vsyscall_int80_start, vsyscall_int80_end;
extern const char vsyscall_sysenter_start, vsyscall_sysenter_end;
+struct page *sysenter_page;
+
- static int __init sysenter_setup(void)
+ int __init sysenter_setup(void)
{
void *page = (void *)get_zeroed_page(GFP_ATOMIC);
@@ -174,10 +174,8 @@
if (!boot_cpu_has(X86_FEATURE_SEP)) {
memcpy(page,
-@@ -63,3 +73,46 @@ static int __init sysenter_setup(void)
+@@ -63,1 +73,44 @@ static int __init sysenter_setup(void)
}
-
- __initcall(sysenter_setup);
+
+extern void SYSENTER_RETURN_OFFSET;
+
@@ -1187,23 +1185,20 @@
#define pmd_populate_kernel(mm, pmd, pte) \
set_pmd(pmd, __pmd(_PAGE_TABLE | __pa(pte)))
#define pud_populate(mm, pud, pmd) \
---- linux-2.6.11/include/asm-x86_64/processor.h~ 2005-05-18 14:02:29.000000000 -0400
-+++ linux-2.6.11/include/asm-x86_64/processor.h 2005-05-18 14:03:14.000000000 -0400
-@@ -160,7 +160,13 @@ static inline void clear_in_cr4 (unsigne
- /*
- * User space process size. 47bits minus one guard page.
+--- linux-2.6.12/include/asm-x86_64/processor.h~ 2005-06-22 14:01:10.000000000 -0400
++++ linux-2.6.12/include/asm-x86_64/processor.h 2005-06-22 14:02:14.000000000 -0400
+@@ -162,6 +162,11 @@ static inline void clear_in_cr4 (unsigne
*/
--#define TASK_SIZE (0x800000000000UL - 4096)
-+#define TASK_SIZE_64 (0x800000000000UL - 4096)
-+#define TASK_SIZE (test_thread_flag(TIF_IA32) ? IA32_PAGE_OFFSET : TASK_SIZE_64)
-+
+ #define TASK_SIZE64 (0x800000000000UL - 4096)
+
+#define __HAVE_ARCH_ALIGN_STACK
+extern unsigned long arch_align_stack(unsigned long sp);
+
+#define HAVE_ARCH_PICK_MMAP_LAYOUT
-
++
/* This decides where the kernel will search for a free chunk of vm
* space during mmap's.
+ */
diff -urNp --exclude-from=/home/davej/.exclude linux-801/include/linux/mm.h linux-810/include/linux/mm.h
--- linux-801/include/linux/mm.h
+++ linux-810/include/linux/mm.h
@@ -1262,16 +1257,16 @@
extern unsigned long
arch_get_unmapped_area_topdown(struct file *filp, unsigned long addr,
unsigned long len, unsigned long pgoff,
-@@ -212,6 +218,9 @@ struct mm_struct {
+@@ -224,6 +224,9 @@ struct mm_struct {
unsigned long (*get_unmapped_area) (struct file *filp,
unsigned long addr, unsigned long len,
unsigned long pgoff, unsigned long flags);
+ unsigned long (*get_unmapped_exec_area) (struct file *filp,
+ unsigned long addr, unsigned long len,
+ unsigned long pgoff, unsigned long flags);
- void (*unmap_area) (struct vm_area_struct *area);
- unsigned long mmap_base; /* base of mmap area */
- unsigned long free_area_cache; /* first hole */
+ void (*unmap_area) (struct mm_struct *mm, unsigned long addr);
+ unsigned long mmap_base; /* base of mmap area */
+ unsigned long cached_hole_size; /* if non-zero, the largest hole below free_area_cache */
diff -urNp --exclude-from=/home/davej/.exclude linux-801/include/linux/sysctl.h linux-810/include/linux/sysctl.h
--- linux-801/include/linux/sysctl.h
+++ linux-810/include/linux/sysctl.h
@@ -1667,20 +1662,11 @@
instr = (unsigned char *)convert_rip_to_linear(current, regs);
max_instr = instr + 15;
-- if ((regs->cs & 3) != 0 && instr >= (unsigned char *)TASK_SIZE)
-+ if ((regs->cs & 3) != 0 && instr >= (unsigned char *)TASK_SIZE_64)
+- if (user_mode(regs) && instr >= (unsigned char *)TASK_SIZE)
++ if (user_mode(regs) && instr >= (unsigned char *)TASK_SIZE64)
return 0;
while (scan_more && instr < max_instr) {
-@@ -350,7 +350,7 @@ asmlinkage void do_page_fault(struct pt_
- * (error_code & 4) == 0, and that the fault was not a
- * protection error (error_code & 1) == 0.
- */
-- if (unlikely(address >= TASK_SIZE)) {
-+ if (unlikely(address >= TASK_SIZE_64)) {
- if (!(error_code & 5) &&
- ((address >= VMALLOC_START && address < VMALLOC_END) ||
- (address >= MODULES_VADDR && address < MODULES_END))) {
--- linux-2.6.11/arch/i386/kernel/traps.c.~1~
+++ linux-2.6.11/arch/i386/kernel/traps.c
@@ -457,17 +457,89 @@ DO_ERROR(10, SIGSEGV, "invalid TSS", inv
@@ -1821,9 +1807,9 @@
if (print_fatal_signals) {
printk("#GPF(%ld[seg:%lx]) at %08lx, CPU#%d.\n", error_code, error_code/8, regs->eip, smp_processor_id());
printk(" exec_limit: %08lx, user_cs: %08lx/%08lx.\n", current->mm->context.exec_limit, current->mm->context.user_cs.a, current->mm->context.user_cs.b);
---- 1/mm/mmap.c.orig
-+++ 2/mm/mmap.c
-@@ -1303,7 +1303,7 @@ unsigned long arch_get_unmapped_exec_are
+--- linux-2.6.12/mm/mmap.c~ 2005-07-07 15:20:55.000000000 -0400
++++ linux-2.6.12/mm/mmap.c 2005-07-07 15:21:21.000000000 -0400
+@@ -1422,7 +1422,7 @@ unsigned long arch_get_unmapped_exec_are
* as much as possible:
*/
if (addr >= 0x01000000) {
@@ -1832,4 +1818,3 @@
vma = find_vma(mm, tmp);
if (TASK_SIZE - len >= tmp &&
(!vma || tmp + len <= vma->vm_start))
-
linux-2.6.12-serial-of.patch:
arch/ppc64/kernel/setup.c | 180 ----------------------------------------
drivers/serial/8250_of.c | 197 ++++++++++++++++++++++++++++++++++++++++++++
drivers/serial/Kconfig | 5 +
drivers/serial/Makefile | 1
include/asm-ppc/pc_serial.h | 16 ---
5 files changed, 204 insertions(+), 195 deletions(-)
Index: linux-2.6.12-serial-of.patch
===================================================================
RCS file: /cvs/dist/rpms/kernel/FC-4/linux-2.6.12-serial-of.patch,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- linux-2.6.12-serial-of.patch 18 Aug 2005 07:54:08 -0000 1.2
+++ linux-2.6.12-serial-of.patch 29 Sep 2005 23:04:40 -0000 1.3
@@ -1,15 +1,15 @@
---- linux-2.6.12/drivers/serial/Makefile.sof 2005-08-18 08:24:49.000000000 +0100
-+++ linux-2.6.12/drivers/serial/Makefile 2005-08-18 08:25:33.000000000 +0100
-@@ -17,6 +17,7 @@ obj-$(CONFIG_SERIAL_8250) += 8250.o $(se
- obj-$(CONFIG_SERIAL_8250_CS) += serial_cs.o
- obj-$(CONFIG_SERIAL_8250_ACORN) += 8250_acorn.o
- obj-$(CONFIG_SERIAL_8250_CONSOLE) += 8250_early.o
+--- linux-2.6.12/drivers/serial/Makefile~ 2005-08-11 13:51:50.000000000 +0100
++++ linux-2.6.12/drivers/serial/Makefile 2005-08-15 21:08:49.000000000 +0100
+@@ -22,6 +22,7 @@ obj-$(CONFIG_SERIAL_8250_ACCENT) += 8250
+ obj-$(CONFIG_SERIAL_8250_BOCA) += 8250_boca.o
+ obj-$(CONFIG_SERIAL_8250_HUB6) += 8250_hub6.o
+ obj-$(CONFIG_SERIAL_8250_MCA) += 8250_mca.o
+obj-$(CONFIG_SERIAL_8250_OF) += 8250_of.o
obj-$(CONFIG_SERIAL_AMBA_PL010) += amba-pl010.o
obj-$(CONFIG_SERIAL_AMBA_PL011) += amba-pl011.o
obj-$(CONFIG_SERIAL_CLPS711X) += clps711x.o
---- linux-2.6.12/drivers/serial/8250_of.c.sof 2005-08-18 08:24:49.000000000 +0100
-+++ linux-2.6.12/drivers/serial/8250_of.c 2005-08-18 08:25:02.000000000 +0100
+--- linux-2.6.12/drivers/serial/8250_of.c~ 2005-08-15 21:14:27.000000000 +0100
++++ linux-2.6.12/drivers/serial/8250_of.c 2005-08-15 21:20:59.000000000 +0100
@@ -0,0 +1,197 @@
+#include <linux/kernel.h>
+#include <linux/serial.h>
@@ -208,8 +208,8 @@
+ return platform_device_register(&serial_device);
+}
+arch_initcall(serial_dev_init);
---- linux-2.6.12/drivers/serial/Kconfig.sof 2005-08-18 08:24:49.000000000 +0100
-+++ linux-2.6.12/drivers/serial/Kconfig 2005-08-18 08:25:02.000000000 +0100
+--- linux-2.6.12/drivers/serial/Kconfig~ 2005-08-11 13:51:50.000000000 +0100
++++ linux-2.6.12/drivers/serial/Kconfig 2005-08-15 21:13:41.000000000 +0100
@@ -77,6 +77,11 @@ config SERIAL_8250_CS
If unsure, say N.
@@ -222,9 +222,9 @@
config SERIAL_8250_ACPI
bool "8250/16550 device discovery via ACPI namespace"
default y if IA64
---- linux-2.6.12/arch/ppc64/kernel/setup.c.sof 2005-08-18 08:24:49.000000000 +0100
-+++ linux-2.6.12/arch/ppc64/kernel/setup.c 2005-08-18 08:25:02.000000000 +0100
-@@ -1124,186 +1124,6 @@ void setup_default_decr(void)
+--- linux-2.6.12/arch/ppc64/kernel/setup.c~ 2005-08-11 13:52:04.000000000 +0100
++++ linux-2.6.12/arch/ppc64/kernel/setup.c 2005-08-15 20:27:25.000000000 +0100
+@@ -1147,186 +1147,6 @@ void __init setup_default_decr(void)
lpaca->next_jiffy_update_tb = get_tb() + tb_ticks_per_jiffy;
}
@@ -411,9 +411,9 @@
int check_legacy_ioport(unsigned long base_port)
{
---- linux-2.6.12/include/asm-ppc/pc_serial.h.sof 2005-08-18 08:24:49.000000000 +0100
-+++ linux-2.6.12/include/asm-ppc/pc_serial.h 2005-08-18 08:26:43.000000000 +0100
-@@ -26,102 +26,4 @@
+--- linux-2.6.12/include/asm-ppc/pc_serial.h~ 2005-08-15 21:19:32.000000000 +0100
++++ linux-2.6.12/include/asm-ppc/pc_serial.h 2005-08-15 21:20:24.000000000 +0100
+@@ -26,18 +26,4 @@
#define RS_TABLE_SIZE 4
#endif
@@ -426,94 +426,10 @@
-#define STD_COM4_FLAGS ASYNC_BOOT_AUTOCONF
-#endif
-
--#ifdef CONFIG_SERIAL_MANY_PORTS
--#define FOURPORT_FLAGS ASYNC_FOURPORT
--#define ACCENT_FLAGS 0
--#define BOCA_FLAGS 0
--#define HUB6_FLAGS 0
--#endif
--
--/*
-- * The following define the access methods for the HUB6 card. All
-- * access is through two ports for all 24 possible chips. The card is
-- * selected through the high 2 bits, the port on that card with the
-- * "middle" 3 bits, and the register on that port with the bottom
-- * 3 bits.
-- *
-- * While the access port and interrupt is configurable, the default
-- * port locations are 0x302 for the port control register, and 0x303
-- * for the data read/write register. Normally, the interrupt is at irq3
-- * but can be anything from 3 to 7 inclusive. Note that using 3 will
-- * require disabling com2.
-- */
--
--#define C_P(card,port) (((card)<<6|(port)<<3) + 1)
--
--#define STD_SERIAL_PORT_DEFNS \
++#define SERIAL_PORT_DFNS /* */
+-#define SERIAL_PORT_DFNS \
- /* UART CLK PORT IRQ FLAGS */ \
- { 0, BASE_BAUD, 0x3F8, 4, STD_COM_FLAGS }, /* ttyS0 */ \
- { 0, BASE_BAUD, 0x2F8, 3, STD_COM_FLAGS }, /* ttyS1 */ \
- { 0, BASE_BAUD, 0x3E8, 4, STD_COM_FLAGS }, /* ttyS2 */ \
- { 0, BASE_BAUD, 0x2E8, 3, STD_COM4_FLAGS }, /* ttyS3 */
--
--
--#ifdef CONFIG_SERIAL_MANY_PORTS
--#define EXTRA_SERIAL_PORT_DEFNS \
-- { 0, BASE_BAUD, 0x1A0, 9, FOURPORT_FLAGS }, /* ttyS4 */ \
-- { 0, BASE_BAUD, 0x1A8, 9, FOURPORT_FLAGS }, /* ttyS5 */ \
-- { 0, BASE_BAUD, 0x1B0, 9, FOURPORT_FLAGS }, /* ttyS6 */ \
-- { 0, BASE_BAUD, 0x1B8, 9, FOURPORT_FLAGS }, /* ttyS7 */ \
-- { 0, BASE_BAUD, 0x2A0, 5, FOURPORT_FLAGS }, /* ttyS8 */ \
-- { 0, BASE_BAUD, 0x2A8, 5, FOURPORT_FLAGS }, /* ttyS9 */ \
-- { 0, BASE_BAUD, 0x2B0, 5, FOURPORT_FLAGS }, /* ttyS10 */ \
-- { 0, BASE_BAUD, 0x2B8, 5, FOURPORT_FLAGS }, /* ttyS11 */ \
-- { 0, BASE_BAUD, 0x330, 4, ACCENT_FLAGS }, /* ttyS12 */ \
-- { 0, BASE_BAUD, 0x338, 4, ACCENT_FLAGS }, /* ttyS13 */ \
-- { 0, BASE_BAUD, 0x000, 0, 0 }, /* ttyS14 (spare) */ \
-- { 0, BASE_BAUD, 0x000, 0, 0 }, /* ttyS15 (spare) */ \
-- { 0, BASE_BAUD, 0x100, 12, BOCA_FLAGS }, /* ttyS16 */ \
-- { 0, BASE_BAUD, 0x108, 12, BOCA_FLAGS }, /* ttyS17 */ \
-- { 0, BASE_BAUD, 0x110, 12, BOCA_FLAGS }, /* ttyS18 */ \
-- { 0, BASE_BAUD, 0x118, 12, BOCA_FLAGS }, /* ttyS19 */ \
-- { 0, BASE_BAUD, 0x120, 12, BOCA_FLAGS }, /* ttyS20 */ \
-- { 0, BASE_BAUD, 0x128, 12, BOCA_FLAGS }, /* ttyS21 */ \
-- { 0, BASE_BAUD, 0x130, 12, BOCA_FLAGS }, /* ttyS22 */ \
-- { 0, BASE_BAUD, 0x138, 12, BOCA_FLAGS }, /* ttyS23 */ \
-- { 0, BASE_BAUD, 0x140, 12, BOCA_FLAGS }, /* ttyS24 */ \
-- { 0, BASE_BAUD, 0x148, 12, BOCA_FLAGS }, /* ttyS25 */ \
-- { 0, BASE_BAUD, 0x150, 12, BOCA_FLAGS }, /* ttyS26 */ \
-- { 0, BASE_BAUD, 0x158, 12, BOCA_FLAGS }, /* ttyS27 */ \
-- { 0, BASE_BAUD, 0x160, 12, BOCA_FLAGS }, /* ttyS28 */ \
-- { 0, BASE_BAUD, 0x168, 12, BOCA_FLAGS }, /* ttyS29 */ \
-- { 0, BASE_BAUD, 0x170, 12, BOCA_FLAGS }, /* ttyS30 */ \
-- { 0, BASE_BAUD, 0x178, 12, BOCA_FLAGS }, /* ttyS31 */
--#else
--#define EXTRA_SERIAL_PORT_DEFNS
--#endif
--
--/* You can have up to four HUB6's in the system, but I've only
-- * included two cards here for a total of twelve ports.
-- */
--#if (defined(CONFIG_HUB6) && defined(CONFIG_SERIAL_MANY_PORTS))
--#define HUB6_SERIAL_PORT_DFNS \
-- { 0, BASE_BAUD, 0x302, 3, HUB6_FLAGS, C_P(0,0) }, /* ttyS32 */ \
-- { 0, BASE_BAUD, 0x302, 3, HUB6_FLAGS, C_P(0,1) }, /* ttyS33 */ \
-- { 0, BASE_BAUD, 0x302, 3, HUB6_FLAGS, C_P(0,2) }, /* ttyS34 */ \
-- { 0, BASE_BAUD, 0x302, 3, HUB6_FLAGS, C_P(0,3) }, /* ttyS35 */ \
-- { 0, BASE_BAUD, 0x302, 3, HUB6_FLAGS, C_P(0,4) }, /* ttyS36 */ \
-- { 0, BASE_BAUD, 0x302, 3, HUB6_FLAGS, C_P(0,5) }, /* ttyS37 */ \
-- { 0, BASE_BAUD, 0x302, 3, HUB6_FLAGS, C_P(1,0) }, /* ttyS38 */ \
-- { 0, BASE_BAUD, 0x302, 3, HUB6_FLAGS, C_P(1,1) }, /* ttyS39 */ \
-- { 0, BASE_BAUD, 0x302, 3, HUB6_FLAGS, C_P(1,2) }, /* ttyS40 */ \
-- { 0, BASE_BAUD, 0x302, 3, HUB6_FLAGS, C_P(1,3) }, /* ttyS41 */ \
-- { 0, BASE_BAUD, 0x302, 3, HUB6_FLAGS, C_P(1,4) }, /* ttyS42 */ \
-- { 0, BASE_BAUD, 0x302, 3, HUB6_FLAGS, C_P(1,5) }, /* ttyS43 */
--#else
--#define HUB6_SERIAL_PORT_DFNS
--#endif
--
--#define SERIAL_PORT_DFNS \
-- STD_SERIAL_PORT_DEFNS \
-- EXTRA_SERIAL_PORT_DEFNS \
-- HUB6_SERIAL_PORT_DFNS
-+#define SERIAL_PORT_DFNS /* */
linux-2.6.12-xen-additional.patch:
linux-2.6.10/include/asm-x86_64/hw_irq.h | 3
linux-2.6.10/include/asm-x86_64/irq.h | 5
linux-2.6.10/include/asm-x86_64/posix_types.h | 4
linux-2.6.11-rcu/kernel/rcupdate.c | 5
linux-2.6.12.new/arch/i386/mm/init.c | 2
linux-2.6.12.new/arch/i386/mm/pageattr.c | 2
linux-2.6.12.new/arch/i386/mm/pgtable.c | 40 ++++++-
linux-2.6.12.new/include/asm-i386/pgtable-2level-defs.h | 2
linux-2.6.12.new/include/asm-i386/pgtable-3level-defs.h | 2
linux-2.6.12.post/arch/i386/Kconfig | 13 ++
linux-2.6.12.post/arch/i386/kernel/Makefile | 1
linux-2.6.12.post/arch/i386/kernel/smpalts.c | 85 ++++++++++++++++
linux-2.6.12.post/arch/i386/kernel/smpboot.c | 5
linux-2.6.12.post/arch/i386/kernel/vmlinux.lds.S | 7 +
linux-2.6.12.post/include/asm-i386/atomic.h | 7 -
linux-2.6.12.post/include/asm-i386/bitops.h | 19 +--
linux-2.6.12.post/include/asm-i386/rwsem.h | 17 +--
linux-2.6.12.post/include/asm-i386/smp_alt.h | 32 ++++++
linux-2.6.12.post/include/asm-i386/spinlock.h | 41 ++++++-
linux-2.6.12.post/include/asm-i386/system.h | 58 +++++++++-
20 files changed, 297 insertions(+), 53 deletions(-)
Index: linux-2.6.12-xen-additional.patch
===================================================================
RCS file: /cvs/dist/rpms/kernel/FC-4/linux-2.6.12-xen-additional.patch,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- linux-2.6.12-xen-additional.patch 15 Aug 2005 18:46:01 -0000 1.1
+++ linux-2.6.12-xen-additional.patch 29 Sep 2005 23:04:40 -0000 1.2
@@ -1,14 +1,3 @@
-diff -ur linux-2.6.11/net/ipv4/netfilter/ip_conntrack_proto_udp.c linux-2.6.11-csum/net/ipv4/netfilter/ip_conntrack_proto_udp.c
---- linux-2.6.11/net/ipv4/netfilter/ip_conntrack_proto_udp.c 2005-05-27 11:47:48 +01:00
-+++ linux-2.6.11-csum/net/ipv4/netfilter/ip_conntrack_proto_udp.c 2005-05-27 11:48:07 +01:00
-@@ -120,6 +120,7 @@
- * and moreover root might send raw packets.
- * FIXME: Source route IP option packets --RR */
- if (hooknum == NF_IP_PRE_ROUTING
-+ && skb->ip_summed != CHECKSUM_UNNECESSARY
- && csum_tcpudp_magic(iph->saddr, iph->daddr, udplen, IPPROTO_UDP,
- skb->ip_summed == CHECKSUM_HW ? skb->csum
- : skb_checksum(skb, iph->ihl*4, udplen, 0))) {
diff -urNpP linux-2.6.12/arch/i386/mm/init.c linux-2.6.12.new/arch/i386/mm/init.c
--- linux-2.6.12/arch/i386/mm/init.c 2005-06-17 20:48:29.000000000 +0100
+++ linux-2.6.12.new/arch/i386/mm/init.c 2005-07-11 16:28:09.778165582 +0100
@@ -285,18 +274,6 @@
diff -Naur linux-2.6.12/arch/i386/kernel/smpboot.c linux-2.6.12.post/arch/i386/kernel/smpboot.c
--- linux-2.6.12/arch/i386/kernel/smpboot.c 2005-06-17 15:48:29.000000000 -0400
+++ linux-2.6.12.post/arch/i386/kernel/smpboot.c 2005-07-25 05:51:21.000000000 -0400
-@@ -1001,6 +1001,11 @@
- if (max_cpus <= cpucount+1)
- continue;
-
-+#ifdef CONFIG_SMP_ALTERNATIVES
-+ if (kicked == 1)
-+ prepare_for_smp();
-+#endif
-+
- if (do_boot_cpu(apicid))
- printk("CPU #%d not responding - cannot use it.\n",
- apicid);
@@ -1130,6 +1135,11 @@
return -EIO;
}
linux-2.6.12-xen.patch:
arch/xen/Kconfig | 203 +
arch/xen/Kconfig.debug | 129
arch/xen/Kconfig.drivers | 94
arch/xen/Makefile | 91
arch/xen/boot/Makefile | 8
arch/xen/configs/xen0_defconfig_x86_32 | 1278 +++++++
arch/xen/configs/xen0_defconfig_x86_64 | 1183 +++++++
arch/xen/configs/xenU_defconfig_x86_32 | 564 +++
arch/xen/configs/xenU_defconfig_x86_64 | 939 +++++
arch/xen/configs/xen_defconfig_x86_32 | 2998 ++++++++++++++++++
arch/xen/configs/xen_defconfig_x86_64 | 2425 ++++++++++++++
arch/xen/i386/Kconfig | 960 +++++
arch/xen/i386/Makefile | 108
arch/xen/i386/kernel/Makefile | 102
arch/xen/i386/kernel/acpi/Makefile | 13
arch/xen/i386/kernel/acpi/boot.c | 912 +++++
arch/xen/i386/kernel/apic.c | 83
arch/xen/i386/kernel/cpu/Makefile | 31
arch/xen/i386/kernel/cpu/common.c | 650 +++
arch/xen/i386/kernel/cpu/mtrr/Makefile | 16
arch/xen/i386/kernel/cpu/mtrr/main.c | 165
arch/xen/i386/kernel/entry.S | 753 ++++
arch/xen/i386/kernel/head.S | 198 +
arch/xen/i386/kernel/i386_ksyms.c | 190 +
arch/xen/i386/kernel/init_task.c | 49
arch/xen/i386/kernel/io_apic.c | 2609 +++++++++++++++
arch/xen/i386/kernel/ioport.c | 125
arch/xen/i386/kernel/irq.c | 299 +
arch/xen/i386/kernel/ldt.c | 276 +
arch/xen/i386/kernel/microcode.c | 163
arch/xen/i386/kernel/mpparse.c | 1126 ++++++
arch/xen/i386/kernel/pci-dma.c | 315 +
arch/xen/i386/kernel/process.c | 798 ++++
arch/xen/i386/kernel/quirks.c | 49
arch/xen/i386/kernel/setup.c | 1712 ++++++++++
arch/xen/i386/kernel/signal.c | 665 +++
arch/xen/i386/kernel/smp.c | 624 +++
arch/xen/i386/kernel/smpboot.c | 1640 +++++++++
arch/xen/i386/kernel/swiotlb.c | 660 +++
arch/xen/i386/kernel/time.c | 928 +++++
arch/xen/i386/kernel/traps.c | 1026 ++++++
arch/xen/i386/kernel/vsyscall.S | 15
arch/xen/i386/mach-default/Makefile | 12
arch/xen/i386/mm/Makefile | 24
arch/xen/i386/mm/fault.c | 598 +++
arch/xen/i386/mm/highmem.c | 99
arch/xen/i386/mm/hypervisor.c | 416 ++
arch/xen/i386/mm/init.c | 766 ++++
arch/xen/i386/mm/ioremap.c | 424 ++
arch/xen/i386/mm/pgtable.c | 558 +++
arch/xen/i386/pci/Makefile | 33
arch/xen/i386/pci/irq.c | 1120 ++++++
arch/xen/kernel/Makefile | 18
arch/xen/kernel/ctrl_if.c | 569 +++
arch/xen/kernel/devmem.c | 158
arch/xen/kernel/evtchn.c | 803 ++++
arch/xen/kernel/fixup.c | 87
arch/xen/kernel/gnttab.c | 396 ++
arch/xen/kernel/reboot.c | 491 ++
arch/xen/kernel/skbuff.c | 97
arch/xen/kernel/smp.c | 16
arch/xen/kernel/xen_proc.c | 18
arch/xen/x86_64/Kconfig | 480 ++
arch/xen/x86_64/Makefile | 93
arch/xen/x86_64/ia32/Makefile | 60
arch/xen/x86_64/ia32/ia32entry.S | 629 +++
arch/xen/x86_64/ia32/syscall32.c | 149
arch/xen/x86_64/ia32/vsyscall-int80.S | 57
arch/xen/x86_64/kernel/Makefile | 71
arch/xen/x86_64/kernel/acpi/Makefile | 20
arch/xen/x86_64/kernel/apic.c | 201 +
arch/xen/x86_64/kernel/e820.c | 609 +++
arch/xen/x86_64/kernel/early_printk.c | 242 +
arch/xen/x86_64/kernel/entry.S | 1060 ++++++
arch/xen/x86_64/kernel/genapic.c | 123
arch/xen/x86_64/kernel/genapic_xen.c | 167 +
arch/xen/x86_64/kernel/head.S | 272 +
arch/xen/x86_64/kernel/head64.c | 127
arch/xen/x86_64/kernel/io_apic.c | 1991 +++++++++++
arch/xen/x86_64/kernel/ioport.c | 57
arch/xen/x86_64/kernel/irq.c | 110
arch/xen/x86_64/kernel/ldt.c | 263 +
arch/xen/x86_64/kernel/mpparse.c | 963 +++++
arch/xen/x86_64/kernel/pci-nommu.c | 98
arch/xen/x86_64/kernel/process.c | 751 ++++
arch/xen/x86_64/kernel/setup.c | 1467 ++++++++
arch/xen/x86_64/kernel/setup64.c | 356 ++
arch/xen/x86_64/kernel/signal.c | 493 ++
arch/xen/x86_64/kernel/smp.c | 498 ++
arch/xen/x86_64/kernel/smpboot.c | 1295 +++++++
arch/xen/x86_64/kernel/traps.c | 982 +++++
arch/xen/x86_64/kernel/vsyscall.c | 241 +
arch/xen/x86_64/kernel/x8664_ksyms.c | 211 +
arch/xen/x86_64/kernel/xen_entry.S | 41
arch/xen/x86_64/mm/Makefile | 31
arch/xen/x86_64/mm/fault.c | 589 +++
arch/xen/x86_64/mm/init.c | 1026 ++++++
arch/xen/x86_64/mm/pageattr.c | 254 +
arch/xen/x86_64/pci/Makefile | 39
arch/xen/x86_64/pci/Makefile-BUS | 22
drivers/Makefile | 1
drivers/acpi/tables.c | 8
drivers/char/mem.c | 12
drivers/char/tty_io.c | 4
drivers/xen/Makefile | 14
drivers/xen/balloon/Makefile | 2
drivers/xen/balloon/balloon.c | 499 ++
drivers/xen/blkback/Makefile | 2
drivers/xen/blkback/blkback.c | 615 +++
drivers/xen/blkback/common.h | 122
drivers/xen/blkback/interface.c | 162
drivers/xen/blkback/vbd.c | 224 +
drivers/xen/blkback/xenbus.c | 303 +
drivers/xen/blkfront/Kconfig | 6
drivers/xen/blkfront/Makefile | 3
drivers/xen/blkfront/blkfront.c | 1396 ++++++++
drivers/xen/blkfront/block.h | 129
drivers/xen/blkfront/vbd.c | 367 ++
drivers/xen/blktap/Makefile | 3
drivers/xen/blktap/blktap.c | 90
drivers/xen/blktap/blktap.h | 230 +
drivers/xen/blktap/blktap_controlmsg.c | 573 +++
drivers/xen/blktap/blktap_datapath.c | 449 ++
drivers/xen/blktap/blktap_userdev.c | 801 ++++
drivers/xen/console/Makefile | 2
drivers/xen/console/console.c | 811 ++++
drivers/xen/evtchn/Makefile | 2
drivers/xen/evtchn/evtchn.c | 430 ++
drivers/xen/netback/Makefile | 2
drivers/xen/netback/common.h | 123
drivers/xen/netback/control.c | 58
drivers/xen/netback/interface.c | 465 ++
drivers/xen/netback/loopback.c | 164
drivers/xen/netback/netback.c | 1005 ++++++
drivers/xen/netfront/Kconfig | 6
drivers/xen/netfront/Makefile | 2
drivers/xen/netfront/netfront.c | 1658 +++++++++
drivers/xen/privcmd/Makefile | 2
drivers/xen/privcmd/privcmd.c | 262 +
drivers/xen/usbback/common.h | 84
drivers/xen/usbback/control.c | 61
drivers/xen/usbback/interface.c | 242 +
drivers/xen/usbback/usbback.c | 1068 ++++++
drivers/xen/usbfront/usbfront.c | 1736 ++++++++++
drivers/xen/usbfront/xhci.h | 182 +
drivers/xen/xenbus/Makefile | 6
drivers/xen/xenbus/xenbus_comms.c | 233 +
drivers/xen/xenbus/xenbus_comms.h | 41
drivers/xen/xenbus/xenbus_probe.c | 648 +++
drivers/xen/xenbus/xenbus_xs.c | 563 +++
drivers/xen/xenbus/xenstored.h | 89
include/asm-generic/pgtable.h | 10
include/asm-xen/asm-i386/agp.h | 37
include/asm-xen/asm-i386/bug.h | 16
include/asm-xen/asm-i386/desc.h | 146
include/asm-xen/asm-i386/dma-mapping.h | 156
include/asm-xen/asm-i386/fixmap.h | 168 +
include/asm-xen/asm-i386/floppy.h | 147
include/asm-xen/asm-i386/highmem.h | 80
include/asm-xen/asm-i386/hw_irq.h | 71
include/asm-xen/asm-i386/hypercall.h | 579 +++
include/asm-xen/asm-i386/io.h | 436 ++
include/asm-xen/asm-i386/kmap_types.h | 32
include/asm-xen/asm-i386/mach-xen/irq_vectors.h | 127
include/asm-xen/asm-i386/mach-xen/setup_arch_post.h | 51
include/asm-xen/asm-i386/mach-xen/setup_arch_pre.h | 5
include/asm-xen/asm-i386/mach-xen/smpboot_hooks.h | 55
include/asm-xen/asm-i386/mmu.h | 26
include/asm-xen/asm-i386/mmu_context.h | 108
include/asm-xen/asm-i386/page.h | 252 +
include/asm-xen/asm-i386/param.h | 23
include/asm-xen/asm-i386/pci.h | 114
include/asm-xen/asm-i386/pgalloc.h | 61
include/asm-xen/asm-i386/pgtable-2level-defs.h | 21
include/asm-xen/asm-i386/pgtable-2level.h | 126
include/asm-xen/asm-i386/pgtable-3level-defs.h | 25
include/asm-xen/asm-i386/pgtable-3level.h | 207 +
include/asm-xen/asm-i386/pgtable.h | 493 ++
include/asm-xen/asm-i386/processor.h | 703 ++++
include/asm-xen/asm-i386/ptrace.h | 69
include/asm-xen/asm-i386/scatterlist.h | 22
include/asm-xen/asm-i386/segment.h | 99
include/asm-xen/asm-i386/setup.h | 66
include/asm-xen/asm-i386/spinlock.h | 250 +
include/asm-xen/asm-i386/swiotlb.h | 42
include/asm-xen/asm-i386/synch_bitops.h | 140
include/asm-xen/asm-i386/system.h | 579 +++
include/asm-xen/asm-i386/tlbflush.h | 102
include/asm-xen/asm-i386/vga.h | 20
include/asm-xen/asm-x86_64/arch_hooks.h | 27
include/asm-xen/asm-x86_64/bootsetup.h | 42
include/asm-xen/asm-x86_64/desc.h | 240 +
include/asm-xen/asm-x86_64/dma-mapping.h | 1
include/asm-xen/asm-x86_64/fixmap.h | 114
include/asm-xen/asm-x86_64/floppy.h | 204 +
include/asm-xen/asm-x86_64/hw_irq.h | 138
include/asm-xen/asm-x86_64/hypercall.h | 522 +++
include/asm-xen/asm-x86_64/io.h | 374 ++
include/asm-xen/asm-x86_64/irq.h | 36
include/asm-xen/asm-x86_64/mach-xen/io_ports.h | 30
include/asm-xen/asm-x86_64/mach-xen/irq_vectors.h | 125
include/asm-xen/asm-x86_64/mach-xen/mach_time.h | 122
include/asm-xen/asm-x86_64/mach-xen/mach_timer.h | 48
include/asm-xen/asm-x86_64/mach-xen/setup_arch_post.h | 47
include/asm-xen/asm-x86_64/mach-xen/setup_arch_pre.h | 5
include/asm-xen/asm-x86_64/mach-xen/smpboot_hooks.h | 55
include/asm-xen/asm-x86_64/mmu_context.h | 126
include/asm-xen/asm-x86_64/page.h | 236 +
include/asm-xen/asm-x86_64/param.h | 22
include/asm-xen/asm-x86_64/pci.h | 150
include/asm-xen/asm-x86_64/pgalloc.h | 172 +
include/asm-xen/asm-x86_64/pgtable.h | 576 +++
include/asm-xen/asm-x86_64/processor.h | 486 ++
include/asm-xen/asm-x86_64/ptrace.h | 124
include/asm-xen/asm-x86_64/segment.h | 46
include/asm-xen/asm-x86_64/smp.h | 139
include/asm-xen/asm-x86_64/system.h | 405 ++
include/asm-xen/asm-x86_64/timer.h | 64
include/asm-xen/asm-x86_64/tlbflush.h | 97
include/asm-xen/asm-x86_64/vga.h | 20
include/asm-xen/asm-x86_64/xor.h | 328 +
include/asm-xen/balloon.h | 60
include/asm-xen/ctrl_if.h | 160
include/asm-xen/evtchn.h | 135
include/asm-xen/foreign_page.h | 30
include/asm-xen/gnttab.h | 72
include/asm-xen/hypervisor.h | 195 +
include/asm-xen/linux-public/privcmd.h | 90
include/asm-xen/linux-public/suspend.h | 43
include/asm-xen/queues.h | 81
include/asm-xen/synch_bitops.h | 2
include/asm-xen/xen-public/COPYING | 28
include/asm-xen/xen-public/acm.h | 172 +
include/asm-xen/xen-public/acm_ops.h | 66
include/asm-xen/xen-public/arch-ia64.h | 299 +
include/asm-xen/xen-public/arch-x86_32.h | 137
include/asm-xen/xen-public/arch-x86_64.h | 195 +
include/asm-xen/xen-public/dom0_ops.h | 414 ++
include/asm-xen/xen-public/event_channel.h | 191 +
include/asm-xen/xen-public/grant_table.h | 284 +
include/asm-xen/xen-public/io/blkif.h | 71
include/asm-xen/xen-public/io/domain_controller.h | 787 ++++
include/asm-xen/xen-public/io/ioreq.h | 70
include/asm-xen/xen-public/io/netif.h | 108
include/asm-xen/xen-public/io/ring.h | 199 +
include/asm-xen/xen-public/io/usbif.h | 66
include/asm-xen/xen-public/io/vmx_vlapic.h | 57
include/asm-xen/xen-public/physdev.h | 70
include/asm-xen/xen-public/sched_ctl.h | 58
include/asm-xen/xen-public/trace.h | 73
include/asm-xen/xen-public/version.h | 31
include/asm-xen/xen-public/vmx_assist.h | 101
include/asm-xen/xen-public/xen.h | 469 ++
include/asm-xen/xen_proc.h | 13
include/asm-xen/xenbus.h | 141
include/linux/gfp.h | 6
include/linux/highmem.h | 2
include/linux/irq.h | 1
include/linux/mm.h | 7
include/linux/skbuff.h | 2
kernel/irq/manage.c | 83
mm/highmem.c | 9
mm/memory.c | 118
mm/mmap.c | 4
mm/page_alloc.c | 6
net/core/dev.c | 35
net/core/skbuff.c | 2
267 files changed, 81974 insertions(+), 27 deletions(-)
View full diff with command:
/usr/bin/cvs -f diff -kk -u -N -r 1.3 -r 1.4 linux-2.6.12-xen.patch
Index: linux-2.6.12-xen.patch
===================================================================
RCS file: /cvs/dist/rpms/kernel/FC-4/linux-2.6.12-xen.patch,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- linux-2.6.12-xen.patch 8 Sep 2005 19:10:35 -0000 1.3
+++ linux-2.6.12-xen.patch 29 Sep 2005 23:04:40 -0000 1.4
@@ -1,1490 +1,778 @@
-diff -Nurp ref-linux-2.6.12/arch/xen/boot/Makefile tmp-linux-2.6.12-xen.patch/arch/xen/boot/Makefile
---- ref-linux-2.6.12/arch/xen/boot/Makefile 1969-12-31 19:00:00.000000000 -0500
-+++ tmp-linux-2.6.12-xen.patch/arch/xen/boot/Makefile 2005-09-07 07:19:53.000000000 -0400
-@@ -0,0 +1,8 @@
+diff -Nurp ref-linux-2.6.12/arch/xen/Kconfig tmp-linux-2.6.12-xen.patch/arch/xen/Kconfig
+--- ref-linux-2.6.12/arch/xen/Kconfig 1969-12-31 19:00:00.000000000 -0500
++++ tmp-linux-2.6.12-xen.patch/arch/xen/Kconfig 2005-08-23 13:12:36.000000000 -0400
+@@ -0,0 +1,203 @@
++#
++# For a description of the syntax of this configuration file,
++# see Documentation/kbuild/kconfig-language.txt.
++#
+
-+OBJCOPYFLAGS := -g --strip-unneeded
++mainmenu "Linux Kernel Configuration"
+
-+vmlinuz: vmlinux-stripped FORCE
-+ $(call if_changed,gzip)
++config XEN
++ bool
++ default y
++ help
++ This is the Linux Xen port.
+
-+vmlinux-stripped: vmlinux FORCE
-+ $(call if_changed,objcopy)
-diff -Nurp ref-linux-2.6.12/arch/xen/configs/xen0_defconfig_x86_32 tmp-linux-2.6.12-xen.patch/arch/xen/configs/xen0_defconfig_x86_32
---- ref-linux-2.6.12/arch/xen/configs/xen0_defconfig_x86_32 1969-12-31 19:00:00.000000000 -0500
-+++ tmp-linux-2.6.12-xen.patch/arch/xen/configs/xen0_defconfig_x86_32 2005-09-07 07:19:53.000000000 -0400
-@@ -0,0 +1,1279 @@
-+#
-+# Automatically generated make config: don't edit
-+# Linux kernel version: 2.6.12-xen0
-+# Wed Aug 3 09:54:56 2005
-+#
-+CONFIG_XEN=y
-+CONFIG_ARCH_XEN=y
-+CONFIG_NO_IDLE_HZ=y
++config ARCH_XEN
++ bool
++ default y
+
-+#
-+# XEN
-+#
-+CONFIG_XEN_PRIVILEGED_GUEST=y
-+CONFIG_XEN_PHYSDEV_ACCESS=y
-+CONFIG_XEN_BLKDEV_BACKEND=y
-+# CONFIG_XEN_BLKDEV_TAP_BE is not set
-+CONFIG_XEN_NETDEV_BACKEND=y
-+# CONFIG_XEN_TPMDEV_FRONTEND is not set
-+# CONFIG_XEN_TPMDEV_BACKEND is not set
-+CONFIG_XEN_BLKDEV_FRONTEND=y
-+CONFIG_XEN_NETDEV_FRONTEND=y
-+CONFIG_XEN_NETDEV_GRANT=y
-+# CONFIG_XEN_NETDEV_FRONTEND_PIPELINED_TRANSMITTER is not set
-+# CONFIG_XEN_BLKDEV_TAP is not set
-+# CONFIG_XEN_SHADOW_MODE is not set
-+CONFIG_XEN_SCRUB_PAGES=y
-+CONFIG_XEN_X86=y
-+# CONFIG_XEN_X86_64 is not set
-+CONFIG_HAVE_ARCH_DEV_ALLOC_SKB=y
+
-+#
-+# Code maturity level options
-+#
-+CONFIG_EXPERIMENTAL=y
-+# CONFIG_CLEAN_COMPILE is not set
-+CONFIG_BROKEN=y
-+CONFIG_BROKEN_ON_SMP=y
-+CONFIG_LOCK_KERNEL=y
-+CONFIG_INIT_ENV_ARG_LIMIT=32
++config NO_IDLE_HZ
++ bool
++ default y
+
-+#
-+# General setup
-+#
-+CONFIG_LOCALVERSION=""
-+CONFIG_SWAP=y
-+CONFIG_SYSVIPC=y
-+# CONFIG_POSIX_MQUEUE is not set
-+# CONFIG_BSD_PROCESS_ACCT is not set
-+CONFIG_SYSCTL=y
-+# CONFIG_AUDIT is not set
-+CONFIG_HOTPLUG=y
-+CONFIG_KOBJECT_UEVENT=y
-+# CONFIG_IKCONFIG is not set
-+# CONFIG_EMBEDDED is not set
-+CONFIG_KALLSYMS=y
-+# CONFIG_KALLSYMS_ALL is not set
-+# CONFIG_KALLSYMS_EXTRA_PASS is not set
-+CONFIG_PRINTK=y
-+CONFIG_BUG=y
-+CONFIG_BASE_FULL=y
-+CONFIG_FUTEX=y
-+CONFIG_EPOLL=y
-+CONFIG_SHMEM=y
-+CONFIG_CC_ALIGN_FUNCTIONS=0
-+CONFIG_CC_ALIGN_LABELS=0
-+CONFIG_CC_ALIGN_LOOPS=0
-+CONFIG_CC_ALIGN_JUMPS=0
-+# CONFIG_TINY_SHMEM is not set
-+CONFIG_BASE_SMALL=0
+
-+#
-+# Loadable module support
-+#
-+CONFIG_MODULES=y
-+CONFIG_MODULE_UNLOAD=y
-+# CONFIG_MODULE_FORCE_UNLOAD is not set
-+CONFIG_OBSOLETE_MODPARM=y
-+# CONFIG_MODVERSIONS is not set
-+# CONFIG_MODULE_SRCVERSION_ALL is not set
-+CONFIG_KMOD=y
++menu "XEN"
+
-+#
-+# X86 Processor Configuration
-+#
-+CONFIG_XENARCH="i386"
-+CONFIG_X86=y
-+CONFIG_MMU=y
-+CONFIG_UID16=y
-+CONFIG_GENERIC_ISA_DMA=y
-+CONFIG_GENERIC_IOMAP=y
-+# CONFIG_M386 is not set
-+# CONFIG_M486 is not set
-+# CONFIG_M586 is not set
-+# CONFIG_M586TSC is not set
-+# CONFIG_M586MMX is not set
-+CONFIG_M686=y
-+# CONFIG_MPENTIUMII is not set
-+# CONFIG_MPENTIUMIII is not set
-+# CONFIG_MPENTIUMM is not set
-+# CONFIG_MPENTIUM4 is not set
-+# CONFIG_MK6 is not set
-+# CONFIG_MK7 is not set
-+# CONFIG_MK8 is not set
-+# CONFIG_MCRUSOE is not set
-+# CONFIG_MEFFICEON is not set
-+# CONFIG_MWINCHIPC6 is not set
-+# CONFIG_MWINCHIP2 is not set
-+# CONFIG_MWINCHIP3D is not set
-+# CONFIG_MGEODEGX1 is not set
-+# CONFIG_MCYRIXIII is not set
-+# CONFIG_MVIAC3_2 is not set
-+# CONFIG_X86_GENERIC is not set
-+CONFIG_X86_CMPXCHG=y
-+CONFIG_X86_XADD=y
-+CONFIG_X86_L1_CACHE_SHIFT=5
-+CONFIG_RWSEM_XCHGADD_ALGORITHM=y
-+CONFIG_GENERIC_CALIBRATE_DELAY=y
-+CONFIG_X86_PPRO_FENCE=y
-+CONFIG_X86_WP_WORKS_OK=y
-+CONFIG_X86_INVLPG=y
-+CONFIG_X86_BSWAP=y
-+CONFIG_X86_POPAD_OK=y
-+CONFIG_X86_GOOD_APIC=y
-+CONFIG_X86_USE_PPRO_CHECKSUM=y
-+# CONFIG_HPET_TIMER is not set
-+# CONFIG_HPET_EMULATE_RTC is not set
-+# CONFIG_SMP is not set
-+CONFIG_PREEMPT=y
-+CONFIG_PREEMPT_BKL=y
-+# CONFIG_X86_REBOOTFIXUPS is not set
-+CONFIG_MICROCODE=y
-+CONFIG_X86_CPUID=y
-+CONFIG_SWIOTLB=y
++config XEN_PRIVILEGED_GUEST
++ bool "Privileged Guest (domain 0)"
++ default n
++ select XEN_PHYSDEV_ACCESS
++ help
++ Support for privileged operation (domain 0)
+
-+#
-+# Firmware Drivers
-+#
-+# CONFIG_EDD is not set
-+# CONFIG_NOHIGHMEM is not set
-+CONFIG_HIGHMEM4G=y
-+# CONFIG_HIGHMEM64G is not set
-+CONFIG_HIGHMEM=y
-+CONFIG_MTRR=y
-+CONFIG_HAVE_DEC_LOCK=y
-+# CONFIG_REGPARM is not set
-+CONFIG_X86_LOCAL_APIC=y
-+CONFIG_X86_IO_APIC=y
++config XEN_PHYSDEV_ACCESS
[...114433 lines suppressed...]
++++ tmp-linux-2.6.12-xen.patch/include/linux/mm.h 2005-08-23 13:12:36.000000000 -0400
@@ -161,6 +161,7 @@ extern unsigned int kobjsize(const void
#define VM_HUGETLB 0x00400000 /* Huge TLB Page VM */
#define VM_NONLINEAR 0x00800000 /* Is non-linear (remap_file_pages) */
@@ -83949,7 +82893,7 @@
#else
diff -Nurp ref-linux-2.6.12/include/linux/skbuff.h tmp-linux-2.6.12-xen.patch/include/linux/skbuff.h
--- ref-linux-2.6.12/include/linux/skbuff.h 2005-06-17 15:48:29.000000000 -0400
-+++ tmp-linux-2.6.12-xen.patch/include/linux/skbuff.h 2005-09-07 07:19:53.000000000 -0400
++++ tmp-linux-2.6.12-xen.patch/include/linux/skbuff.h 2005-07-11 13:20:28.000000000 -0400
@@ -177,6 +177,8 @@ struct skb_shared_info {
* @local_df: allow local fragmentation
* @cloned: Head may be cloned (check refcnt to be sure)
@@ -83959,55 +82903,9 @@
* @pkt_type: Packet class
* @ip_summed: Driver fed us an IP checksum
* @priority: Packet queueing priority
-@@ -252,6 +254,8 @@ struct sk_buff {
- unsigned char local_df,
- cloned:1,
- nohdr:1,
-+ proto_csum_valid:1,
-+ proto_csum_blank:1,
- pkt_type,
- ip_summed;
- __u32 priority;
-diff -Nurp ref-linux-2.6.12/include/linux/tpmfe.h tmp-linux-2.6.12-xen.patch/include/linux/tpmfe.h
---- ref-linux-2.6.12/include/linux/tpmfe.h 1969-12-31 19:00:00.000000000 -0500
-+++ tmp-linux-2.6.12-xen.patch/include/linux/tpmfe.h 2005-09-07 07:19:53.000000000 -0400
-@@ -0,0 +1,33 @@
-+#ifndef TPM_FE_H
-+#define TPM_FE_H
-+
-+struct tpmfe_device {
-+ /*
-+ * Let upper layer receive data from front-end
-+ */
-+ int (*receive)(const u8 *buffer, size_t count, const void *ptr);
-+ /*
-+ * Indicate the status of the front-end to the upper
-+ * layer.
-+ */
-+ void (*status)(unsigned int flags);
-+
-+ /*
-+ * This field indicates the maximum size the driver can
-+ * transfer in one chunk. It is filled out by the front-end
-+ * driver and should be propagated to the generic tpm driver
-+ * for allocation of buffers.
-+ */
-+ unsigned int max_tx_size;
-+};
-+
-+enum {
-+ TPMFE_STATUS_DISCONNECTED = 0x0,
-+ TPMFE_STATUS_CONNECTED = 0x1
-+};
-+
-+int tpm_fe_send(const u8 * buf, size_t count, void *ptr);
-+int tpm_fe_register_receiver(struct tpmfe_device *);
-+void tpm_fe_unregister_receiver(void);
-+
-+#endif
diff -Nurp ref-linux-2.6.12/kernel/irq/manage.c tmp-linux-2.6.12-xen.patch/kernel/irq/manage.c
--- ref-linux-2.6.12/kernel/irq/manage.c 2005-06-17 15:48:29.000000000 -0400
-+++ tmp-linux-2.6.12-xen.patch/kernel/irq/manage.c 2005-09-07 07:19:53.000000000 -0400
++++ tmp-linux-2.6.12-xen.patch/kernel/irq/manage.c 2005-08-23 13:12:36.000000000 -0400
@@ -146,9 +146,14 @@ int can_request_irq(unsigned int irq, un
return !action;
}
@@ -84134,7 +83032,7 @@
EXPORT_SYMBOL(free_irq);
diff -Nurp ref-linux-2.6.12/mm/highmem.c tmp-linux-2.6.12-xen.patch/mm/highmem.c
--- ref-linux-2.6.12/mm/highmem.c 2005-06-17 15:48:29.000000000 -0400
-+++ tmp-linux-2.6.12-xen.patch/mm/highmem.c 2005-09-07 07:19:53.000000000 -0400
++++ tmp-linux-2.6.12-xen.patch/mm/highmem.c 2005-08-23 13:12:36.000000000 -0400
@@ -148,6 +148,15 @@ start:
return vaddr;
}
@@ -84153,8 +83051,8 @@
unsigned long vaddr;
diff -Nurp ref-linux-2.6.12/mm/memory.c tmp-linux-2.6.12-xen.patch/mm/memory.c
--- ref-linux-2.6.12/mm/memory.c 2005-06-17 15:48:29.000000000 -0400
-+++ tmp-linux-2.6.12-xen.patch/mm/memory.c 2005-09-07 07:19:53.000000000 -0400
-@@ -940,6 +940,24 @@ int get_user_pages(struct task_struct *t
++++ tmp-linux-2.6.12-xen.patch/mm/memory.c 2005-08-23 13:12:36.000000000 -0400
+@@ -940,6 +940,26 @@ int get_user_pages(struct task_struct *t
continue;
}
@@ -84172,14 +83070,16 @@
+ i++;
+ start += PAGE_SIZE;
+ len--;
++printk(KERN_ALERT "HIT 0x%lx\n", start);
+ continue;
+ }
++else printk(KERN_ALERT "MISS 0x%lx\n", start);
+ }
+
if (!vma || (vma->vm_flags & VM_IO)
|| !(flags & vma->vm_flags))
return i ? : -EFAULT;
-@@ -1195,6 +1213,104 @@ int remap_pfn_range(struct vm_area_struc
+@@ -1195,6 +1215,104 @@ int remap_pfn_range(struct vm_area_struc
}
EXPORT_SYMBOL(remap_pfn_range);
@@ -84284,51 +83184,9 @@
/*
* Do pte_mkwrite, but only if the vma says VM_WRITE. We do this when
* servicing faults for write access. In the normal case, do always want
-@@ -1249,20 +1365,15 @@ static int do_wp_page(struct mm_struct *
- struct page *old_page, *new_page;
- unsigned long pfn = pte_pfn(pte);
- pte_t entry;
-+ struct page invalid_page;
-
- if (unlikely(!pfn_valid(pfn))) {
-- /*
-- * This should really halt the system so it can be debugged or
-- * at least the kernel stops what it's doing before it corrupts
-- * data, but for the moment just pretend this is OOM.
-- */
-- pte_unmap(page_table);
-- printk(KERN_ERR "do_wp_page: bogus page at address %08lx\n",
-- address);
-- spin_unlock(&mm->page_table_lock);
-- return VM_FAULT_OOM;
-+ /* This can happen with /dev/mem (PROT_WRITE, MAP_PRIVATE). */
-+ invalid_page.flags = (1<<PG_reserved) | (1<<PG_locked);
-+ old_page = &invalid_page;
-+ } else {
-+ old_page = pfn_to_page(pfn);
- }
-- old_page = pfn_to_page(pfn);
-
- if (!TestSetPageLocked(old_page)) {
- int reuse = can_share_swap_page(old_page);
-@@ -1298,7 +1409,13 @@ static int do_wp_page(struct mm_struct *
- new_page = alloc_page_vma(GFP_HIGHUSER, vma, address);
- if (!new_page)
- goto no_new_page;
-- copy_user_highpage(new_page, old_page, address);
-+ if (old_page == &invalid_page) {
-+ char *vto = kmap_atomic(new_page, KM_USER1);
-+ copy_page(vto, (void *)(address & PAGE_MASK));
-+ kunmap_atomic(vto, KM_USER1);
-+ } else {
-+ copy_user_highpage(new_page, old_page, address);
-+ }
- }
- /*
- * Re-check the pte - we dropped the lock
diff -Nurp ref-linux-2.6.12/mm/mmap.c tmp-linux-2.6.12-xen.patch/mm/mmap.c
--- ref-linux-2.6.12/mm/mmap.c 2005-06-17 15:48:29.000000000 -0400
-+++ tmp-linux-2.6.12-xen.patch/mm/mmap.c 2005-09-07 07:19:53.000000000 -0400
++++ tmp-linux-2.6.12-xen.patch/mm/mmap.c 2005-07-11 13:20:28.000000000 -0400
@@ -1904,6 +1904,10 @@ void exit_mmap(struct mm_struct *mm)
unsigned long nr_accounted = 0;
unsigned long end;
@@ -84342,7 +83200,7 @@
spin_lock(&mm->page_table_lock);
diff -Nurp ref-linux-2.6.12/mm/page_alloc.c tmp-linux-2.6.12-xen.patch/mm/page_alloc.c
--- ref-linux-2.6.12/mm/page_alloc.c 2005-06-17 15:48:29.000000000 -0400
-+++ tmp-linux-2.6.12-xen.patch/mm/page_alloc.c 2005-09-07 07:19:53.000000000 -0400
++++ tmp-linux-2.6.12-xen.patch/mm/page_alloc.c 2005-07-11 13:20:28.000000000 -0400
@@ -368,7 +368,8 @@ void __free_pages_ok(struct page *page,
LIST_HEAD(list);
int i;
@@ -84365,19 +83223,7 @@
inc_page_state(pgfree);
diff -Nurp ref-linux-2.6.12/net/core/dev.c tmp-linux-2.6.12-xen.patch/net/core/dev.c
--- ref-linux-2.6.12/net/core/dev.c 2005-06-17 15:48:29.000000000 -0400
-+++ tmp-linux-2.6.12-xen.patch/net/core/dev.c 2005-09-07 07:19:53.000000000 -0400
-@@ -115,6 +115,11 @@
- #endif /* CONFIG_NET_RADIO */
- #include <asm/current.h>
-
-+#include <net/ip.h>
-+#include <linux/tcp.h>
-+#include <linux/udp.h>
-+
-+
- /* This define, if set, will randomly drop a packet when congestion
- * is more than moderate. It helps fairness in the multi-interface
- * case when one of them is a hog, but it kills performance for the
++++ tmp-linux-2.6.12-xen.patch/net/core/dev.c 2005-07-11 13:20:28.000000000 -0400
@@ -1261,6 +1266,30 @@ int dev_queue_xmit(struct sk_buff *skb)
__skb_linearize(skb, GFP_ATOMIC))
goto out_kfree_skb;
@@ -84429,7 +83275,7 @@
if (pt_prev)
diff -Nurp ref-linux-2.6.12/net/core/skbuff.c tmp-linux-2.6.12-xen.patch/net/core/skbuff.c
--- ref-linux-2.6.12/net/core/skbuff.c 2005-06-17 15:48:29.000000000 -0400
-+++ tmp-linux-2.6.12-xen.patch/net/core/skbuff.c 2005-09-07 07:19:53.000000000 -0400
++++ tmp-linux-2.6.12-xen.patch/net/core/skbuff.c 2005-07-11 13:20:28.000000000 -0400
@@ -353,6 +353,8 @@ struct sk_buff *skb_clone(struct sk_buff
C(local_df);
n->cloned = 1;
linux-2.6.12rc3-xen-vdso-note.patch:
linux-2.6.11/include/asm-xen/asm-i386/page.h | 2 +
linux-2.6.12/arch/xen/i386/kernel/Makefile | 6 ++--
linux-2.6.12/arch/xen/i386/kernel/ldt.c | 3 +-
linux-2.6/arch/xen/i386/kernel/vsyscall-note.S | 32 +++++++++++++++++++++++++
4 files changed, 39 insertions(+), 4 deletions(-)
Index: linux-2.6.12rc3-xen-vdso-note.patch
===================================================================
RCS file: /cvs/dist/rpms/kernel/FC-4/linux-2.6.12rc3-xen-vdso-note.patch,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -r1.10 -r1.11
--- linux-2.6.12rc3-xen-vdso-note.patch 9 Sep 2005 02:55:31 -0000 1.10
+++ linux-2.6.12rc3-xen-vdso-note.patch 29 Sep 2005 23:05:03 -0000 1.11
@@ -31,7 +31,7 @@
+#define NOTE_KERNELCAP_END ASM_ELF_NOTE_END
+
+NOTE_KERNELCAP_BEGIN(1, 1)
-+NOTE_KERNELCAP(1, "nosegneg") /* Change 1 back to 0 when glibc is fixed! */
++NOTE_KERNELCAP(0, "nosegneg")
+NOTE_KERNELCAP_END
--- linux-2.6.11/include/asm-xen/asm-i386/page.h.vdso 2005-04-27 10:33:03.000000000 -0400
+++ linux-2.6.11/include/asm-xen/asm-i386/page.h 2005-04-27 10:33:19.000000000 -0400
@@ -57,3 +57,28 @@
old_mm = current->mm;
if (old_mm && old_mm->context.size > 0) {
down(&old_mm->context.sem);
+--- linux-2.6.12/arch/xen/i386/kernel/Makefile.vdso 2005-08-22 13:38:36.000000000 -0400
++++ linux-2.6.12/arch/xen/i386/kernel/Makefile 2005-08-22 13:42:00.000000000 -0400
+@@ -69,7 +69,7 @@
+
+ $(obj)/vsyscall-int80.so $(obj)/vsyscall-sysenter.so: \
+ $(obj)/vsyscall-%.so: $(src)/vsyscall.lds \
+- $(obj)/vsyscall-%.o FORCE
++ $(obj)/vsyscall-%.o $(obj)/vsyscall-note.o FORCE
+ $(call if_changed,syscall)
+
+ # We also create a special relocatable object that should mirror the symbol
+@@ -81,11 +81,11 @@
+
+ SYSCFLAGS_vsyscall-syms.o = -r
+ $(obj)/vsyscall-syms.o: $(src)/vsyscall.lds \
+- $(obj)/vsyscall-sysenter.o FORCE
++ $(obj)/vsyscall-sysenter.o $(obj)/vsyscall-note.o FORCE
+ $(call if_changed,syscall)
+
+ c-link :=
+-s-link := vsyscall-int80.o vsyscall-sysenter.o vsyscall-sigreturn.o vsyscall.lds.o syscall_table.o
++s-link := vsyscall-int80.o vsyscall-sysenter.o vsyscall-sigreturn.o vsyscall.lds.o vsyscall-note.o syscall_table.o
+
+ $(patsubst %.o,$(obj)/%.c,$(c-obj-y) $(c-obj-m) $(c-link)) $(patsubst %.o,$(obj)/%.S,$(s-obj-y) $(s-link)):
+ @ln -fsn $(srctree)/arch/i386/kernel/$(notdir $@) $@
linux-2.6.7-modsign-crypto.patch:
crypto/Kconfig | 19 +++++++++++++++++++
crypto/Makefile | 3 +++
crypto/api.c | 16 ++++++++++++++--
include/linux/crypto.h | 4 ++++
4 files changed, 40 insertions(+), 2 deletions(-)
Index: linux-2.6.7-modsign-crypto.patch
===================================================================
RCS file: /cvs/dist/rpms/kernel/FC-4/linux-2.6.7-modsign-crypto.patch,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- linux-2.6.7-modsign-crypto.patch 22 Mar 2005 07:00:21 -0000 1.4
+++ linux-2.6.7-modsign-crypto.patch 29 Sep 2005 23:05:03 -0000 1.5
@@ -11,6 +11,7 @@
{
struct crypto_tfm *tfm = NULL;
struct crypto_alg *alg;
+ unsigned int tfm_size;
- alg = crypto_alg_mod_lookup(name);
+ if (!nomodload) {
@@ -22,7 +23,6 @@
+
if (alg == NULL)
goto out;
-
@@ -153,6 +160,11 @@ out:
return tfm;
}
linux-2.6.8-execshield-xen.patch:
linux-2.6.10/arch/xen/i386/kernel/cpu/common.c | 6 +
linux-2.6.10/arch/xen/i386/kernel/entry.S | 7 +
linux-2.6.10/arch/xen/i386/kernel/process.c | 53 +++++++++++++
linux-2.6.10/arch/xen/i386/kernel/smp.c | 3
linux-2.6.10/arch/xen/i386/mm/init.c | 3
linux-2.6.10/fs/binfmt_elf.c | 1
linux-2.6.10/include/asm-xen/asm-i386/desc.h | 10 ++
linux-2.6.10/include/asm-xen/asm-i386/pgalloc.h | 5 +
linux-2.6.10/include/asm-xen/asm-i386/processor.h | 6 +
linux-2.6.12/arch/xen/i386/kernel/signal.c | 4 -
linux-2.6.12/arch/xen/i386/kernel/traps.c | 87 +++++++++++++++++++++-
linux-2.6.12/include/asm-xen/asm-i386/mmu.h | 6 +
12 files changed, 187 insertions(+), 4 deletions(-)
Index: linux-2.6.8-execshield-xen.patch
===================================================================
RCS file: /cvs/dist/rpms/kernel/FC-4/linux-2.6.8-execshield-xen.patch,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -r1.13 -r1.14
--- linux-2.6.8-execshield-xen.patch 8 Sep 2005 19:10:39 -0000 1.13
+++ linux-2.6.8-execshield-xen.patch 29 Sep 2005 23:05:03 -0000 1.14
@@ -107,11 +107,14 @@
if (unlikely(next->debugreg[7])) {
--- linux-2.6.12/arch/xen/i386/kernel/traps.c.exec 2005-08-15 10:30:00.000000000 -0400
+++ linux-2.6.12/arch/xen/i386/kernel/traps.c 2005-08-15 10:39:26.000000000 -0400
-@@ -449,10 +449,88 @@ DO_ERROR(10, SIGSEGV, "invalid TSS", inv
+@@ -449,13 +449,91 @@ DO_ERROR(10, SIGSEGV, "invalid TSS", inv
+ DO_ERROR(11, SIGBUS, "segment not present", segment_not_present)
+ DO_ERROR(12, SIGBUS, "stack segment", stack_segment)
+ DO_ERROR_INFO(17, SIGBUS, "alignment check", alignment_check, BUS_ADRALN, 0)
+-DO_ERROR_INFO(32, SIGSEGV, "iret exception", iret_error, ILL_BADSTK, 0)
#ifdef CONFIG_X86_MCE
DO_ERROR(18, SIGBUS, "machine check", machine_check)
#endif
--DO_ERROR_INFO(32, SIGSEGV, "iret exception", iret_error, ILL_BADSTK, 0)
+/*
+ * lazy-check for CS validity on exec-shield binaries:
linux-2.6.9-ieee80211.patch:
linux-2.6.12/drivers/net/wireless/ieee80211/ieee80211.h | 5
linux-2.6.9/drivers/net/wireless/Makefile | 1
linux-2.6.9/drivers/net/wireless/ieee80211/LICENSE | 339 ++
linux-2.6.9/drivers/net/wireless/ieee80211/Makefile | 23
linux-2.6.9/drivers/net/wireless/ieee80211/ieee80211.h | 1073 ++++++-
linux-2.6.9/drivers/net/wireless/ieee80211/ieee80211_crypt.c | 253 +
linux-2.6.9/drivers/net/wireless/ieee80211/ieee80211_crypt.h | 104
linux-2.6.9/drivers/net/wireless/ieee80211/ieee80211_crypt_ccmp.c | 493 +++
linux-2.6.9/drivers/net/wireless/ieee80211/ieee80211_crypt_tkip.c | 734 ++++
linux-2.6.9/drivers/net/wireless/ieee80211/ieee80211_crypt_wep.c | 285 +
linux-2.6.9/drivers/net/wireless/ieee80211/ieee80211_module.c | 306 +-
linux-2.6.9/drivers/net/wireless/ieee80211/ieee80211_rx.c | 1521 ++++++++--
linux-2.6.9/drivers/net/wireless/ieee80211/ieee80211_tx.c | 762 ++++-
linux-2.6.9/drivers/net/wireless/ieee80211/ieee80211_wx.c | 640 +++-
14 files changed, 6019 insertions(+), 520 deletions(-)
Index: linux-2.6.9-ieee80211.patch
===================================================================
RCS file: /cvs/dist/rpms/kernel/FC-4/linux-2.6.9-ieee80211.patch,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -r1.13 -r1.14
--- linux-2.6.9-ieee80211.patch 24 Jun 2005 00:44:41 -0000 1.13
+++ linux-2.6.9-ieee80211.patch 29 Sep 2005 23:05:03 -0000 1.14
@@ -7605,4 +7605,3 @@
extern inline int is_broadcast_ether_addr(const u8 *addr)
{
return ((addr[0] == 0xff) && (addr[1] == 0xff) && (addr[2] == 0xff) && \
-
linux-2.6.9-module_version.patch:
linux-1720/drivers/block/DAC960.c | 1 +
linux-1720/drivers/block/cpqarray.c | 1 +
linux-1720/drivers/message/fusion/mptbase.c | 1 +
linux-1720/drivers/net/b44.c | 1 +
linux-1720/drivers/net/ns83820.c | 1 +
linux-1720/drivers/net/tg3.c | 1 +
linux-1720/drivers/scsi/gdth.c | 1 +
linux-2.6.12/drivers/block/cciss.c | 1 +
8 files changed, 8 insertions(+)
Index: linux-2.6.9-module_version.patch
===================================================================
RCS file: /cvs/dist/rpms/kernel/FC-4/linux-2.6.9-module_version.patch,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -r1.13 -r1.14
--- linux-2.6.9-module_version.patch 21 Jun 2005 18:55:44 -0000 1.13
+++ linux-2.6.9-module_version.patch 29 Sep 2005 23:05:04 -0000 1.14
@@ -1,10 +1,9 @@
-diff -urNp --exclude-from=/home/davej/.exclude linux-1700/drivers/block/cciss.c linux-1720/drivers/block/cciss.c
---- linux-1700/drivers/block/cciss.c
-+++ linux-1720/drivers/block/cciss.c
-@@ -54,6 +54,7 @@ MODULE_AUTHOR("Hewlett-Packard Company")
+--- linux-2.6.12/drivers/block/cciss.c~ 2005-06-28 12:59:45.000000000 -0400
++++ linux-2.6.12/drivers/block/cciss.c 2005-06-28 13:00:25.000000000 -0400
+@@ -55,6 +55,7 @@ MODULE_AUTHOR("Hewlett-Packard Company")
MODULE_DESCRIPTION("Driver for HP Controller SA5xxx SA6xxx version 2.6.6");
MODULE_SUPPORTED_DEVICE("HP SA5i SA5i+ SA532 SA5300 SA5312 SA641 SA642 SA6400"
- " SA6i P600 P800 E400");
+ " SA6i P600 P800 E400 E300");
+MODULE_VERSION("2.6.6");
MODULE_LICENSE("GPL");
@@ -50,27 +49,6 @@
static struct pci_device_id b44_pci_tbl[] = {
{ PCI_VENDOR_ID_BROADCOM, PCI_DEVICE_ID_BCM4401,
-diff -urNp --exclude-from=/home/davej/.exclude linux-1700/drivers/net/ixgb/ixgb_main.c linux-1720/drivers/net/ixgb/ixgb_main.c
---- linux-1700/drivers/net/ixgb/ixgb_main.c
-+++ linux-1720/drivers/net/ixgb/ixgb_main.c
-@@ -47,7 +47,8 @@ char ixgb_driver_string[] = "Intel(R) PR
- #else
- #define DRIVERNAPI "-NAPI"
- #endif
--char ixgb_driver_version[] = "1.0.95-k2"DRIVERNAPI;
-+#define DRV_VERSION "1.0.95-k2"DRIVERNAPI
-+char ixgb_driver_version[] = DRV_VERSION;
- char ixgb_copyright[] = "Copyright (c) 1999-2005 Intel Corporation.";
-
- /* ixgb_pci_tbl - PCI Device ID Table
-@@ -152,6 +153,7 @@ static struct pci_driver ixgb_driver = {
- MODULE_AUTHOR("Intel Corporation, <linux.nics at intel.com>");
- MODULE_DESCRIPTION("Intel(R) PRO/10GbE Network Driver");
- MODULE_LICENSE("GPL");
-+MODULE_VERSION(DRV_VERSION);
-
- /* some defines for controlling descriptor fetches in h/w */
- #define RXDCTL_PTHRESH_DEFAULT 128 /* chip considers prefech below this */
diff -urNp --exclude-from=/home/davej/.exclude linux-1700/drivers/net/ns83820.c linux-1720/drivers/net/ns83820.c
--- linux-1700/drivers/net/ns83820.c
+++ linux-1720/drivers/net/ns83820.c
@@ -93,17 +71,6 @@
static struct pci_device_id tg3_pci_tbl[] = {
{ PCI_VENDOR_ID_BROADCOM, PCI_DEVICE_ID_TIGON3_5700,
-diff -urNp --exclude-from=/home/davej/.exclude linux-1700/drivers/scsi/ahci.c linux-1720/drivers/scsi/ahci.c
---- linux-1700/drivers/scsi/ahci.c
-+++ linux-1720/drivers/scsi/ahci.c
-@@ -1062,6 +1062,7 @@ MODULE_AUTHOR("Jeff Garzik");
- MODULE_DESCRIPTION("AHCI SATA low-level driver");
- MODULE_LICENSE("GPL");
- MODULE_DEVICE_TABLE(pci, ahci_pci_tbl);
-+MODULE_VERSION(DRV_VERSION);
-
- module_init(ahci_init);
- module_exit(ahci_exit);
diff -urNp --exclude-from=/home/davej/.exclude linux-1700/drivers/scsi/gdth.c linux-1720/drivers/scsi/gdth.c
--- linux-1700/drivers/scsi/gdth.c
+++ linux-1720/drivers/scsi/gdth.c
linux-2.6.9-scsi-megaraid-legacy.patch:
linux-1102/drivers/scsi/megaraid/Kconfig.megaraid | 2 --
linux-2.6.12/drivers/scsi/megaraid.c | 12 +-----------
linux-2.6.12/drivers/scsi/megaraid.h | 4 ----
3 files changed, 1 insertion(+), 17 deletions(-)
Index: linux-2.6.9-scsi-megaraid-legacy.patch
===================================================================
RCS file: /cvs/dist/rpms/kernel/FC-4/linux-2.6.9-scsi-megaraid-legacy.patch,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- linux-2.6.9-scsi-megaraid-legacy.patch 22 Mar 2005 07:00:34 -0000 1.2
+++ linux-2.6.9-scsi-megaraid-legacy.patch 29 Sep 2005 23:05:04 -0000 1.3
@@ -14,3 +14,53 @@
To compile this driver as a module, choose M here: the
module will be called megaraid
-endif
+
+--- linux-2.6.12/drivers/scsi/megaraid.c~ 2005-08-08 23:25:13.000000000 -0400
++++ linux-2.6.12/drivers/scsi/megaraid.c 2005-08-08 23:31:14.000000000 -0400
+@@ -5014,22 +5014,12 @@ megaraid_shutdown(struct pci_dev *pdev)
+ }
+
+ static struct pci_device_id megaraid_pci_tbl[] = {
+- {PCI_VENDOR_ID_DELL, PCI_DEVICE_ID_DISCOVERY,
+- PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
+- {PCI_VENDOR_ID_DELL, PCI_DEVICE_ID_PERC4_DI,
+- PCI_ANY_ID, PCI_ANY_ID, 0, 0, BOARD_64BIT},
+- {PCI_VENDOR_ID_LSI_LOGIC, PCI_DEVICE_ID_PERC4_QC_VERDE,
+- PCI_ANY_ID, PCI_ANY_ID, 0, 0, BOARD_64BIT},
+ {PCI_VENDOR_ID_AMI, PCI_DEVICE_ID_AMI_MEGARAID,
+ PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
+ {PCI_VENDOR_ID_AMI, PCI_DEVICE_ID_AMI_MEGARAID2,
+ PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
+- {PCI_VENDOR_ID_AMI, PCI_DEVICE_ID_AMI_MEGARAID3,
+- PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
+ {PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_AMI_MEGARAID3,
+ PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
+- {PCI_VENDOR_ID_LSI_LOGIC, PCI_DEVICE_ID_AMI_MEGARAID3,
+- PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
+ {0,}
+ };
+ MODULE_DEVICE_TABLE(pci, megaraid_pci_tbl);
+--- linux-2.6.12/drivers/scsi/megaraid.h~ 2005-08-08 23:26:41.000000000 -0400
++++ linux-2.6.12/drivers/scsi/megaraid.h 2005-08-08 23:33:14.000000000 -0400
+@@ -73,10 +73,6 @@
+ #define PCI_DEVICE_ID_AMI_MEGARAID3 0x1960
+ #endif
+
+-#define PCI_DEVICE_ID_DISCOVERY 0x000E
+-#define PCI_DEVICE_ID_PERC4_DI 0x000F
+-#define PCI_DEVICE_ID_PERC4_QC_VERDE 0x0407
+-
+ /* Sub-System Vendor IDs */
+ #define AMI_SUBSYS_VID 0x101E
+ #define DELL_SUBSYS_VID 0x1028
+--- linux-2.6.12/drivers/scsi/megaraid.c~ 2005-08-08 23:33:34.000000000 -0400
++++ linux-2.6.12/drivers/scsi/megaraid.c 2005-08-08 23:33:52.000000000 -0400
+@@ -5025,7 +5025,7 @@ static struct pci_device_id megaraid_pci
+ MODULE_DEVICE_TABLE(pci, megaraid_pci_tbl);
+
+ static struct pci_driver megaraid_pci_driver = {
+- .name = "megaraid",
++ .name = "megaraid_legacy",
+ .id_table = megaraid_pci_tbl,
+ .probe = megaraid_probe_one,
+ .remove = __devexit_p(megaraid_remove_one),
linux-2.6.9-vm-oomkiller-debugging.patch:
oom_kill.c | 1 +
1 files changed, 1 insertion(+)
Index: linux-2.6.9-vm-oomkiller-debugging.patch
===================================================================
RCS file: /cvs/dist/rpms/kernel/FC-4/linux-2.6.9-vm-oomkiller-debugging.patch,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- linux-2.6.9-vm-oomkiller-debugging.patch 22 Mar 2005 07:00:34 -0000 1.3
+++ linux-2.6.9-vm-oomkiller-debugging.patch 29 Sep 2005 23:05:04 -0000 1.4
@@ -1,18 +1,10 @@
-diff -urNp --exclude-from=/home/davej/.exclude linux-2000/mm/oom_kill.c linux-2001/mm/oom_kill.c
---- linux-2000/mm/oom_kill.c
-+++ linux-2001/mm/oom_kill.c
-@@ -268,12 +268,12 @@ retry:
+--- linux-2.6.12/mm/oom_kill.c~ 2005-06-22 14:16:57.000000000 -0400
++++ linux-2.6.12/mm/oom_kill.c 2005-06-22 14:17:35.000000000 -0400
+@@ -272,6 +272,7 @@ retry:
/* Found nothing?!?! Either we hang forever, or we panic. */
if (!p) {
read_unlock(&tasklist_lock);
-- show_free_areas();
+ show_mem();
panic("Out of memory and no killable processes...\n");
}
- printk("oom-killer: gfp_mask=0x%x\n", gfp_mask);
-- show_free_areas();
-+ show_mem();
- mm = oom_kill_process(p);
- if (!mm)
- goto retry;
linux-2.6.9-xen-compile.patch:
linux-2.6.10/arch/xen/i386/pci/irq.c | 1 +
linux-2.6.12/arch/i386/kernel/vmlinux.lds.S | 4 ++--
linux-2.6.12/arch/xen/Kconfig | 1 +
linux-2.6.12/arch/xen/Kconfig.drivers | 2 +-
linux-2.6.12/arch/xen/i386/Kconfig | 11 +++++++++++
linux-2.6.12/arch/xen/i386/kernel/i386_ksyms.c | 8 +-------
linux-2.6.12/arch/xen/i386/kernel/process.c | 4 ++--
linux-2.6.12/arch/xen/i386/kernel/setup.c | 8 ++++++++
linux-2.6.12/arch/xen/i386/kernel/signal.c | 2 +-
linux-2.6.12/arch/xen/i386/kernel/time.c | 6 +-----
linux-2.6.12/arch/xen/i386/kernel/traps.c | 4 ++--
linux-2.6.12/arch/xen/i386/mm/pgtable.c | 2 +-
linux-2.6.12/arch/xen/i386/pci/irq.c | 17 +++++++++++------
linux-2.6.12/arch/xen/kernel/reboot.c | 6 ++++++
linux-2.6.12/drivers/char/tty_io.c | 19 ++++++++++++-------
linux-2.6.12/include/asm-i386/timex.h | 2 ++
linux-2.6.12/include/asm-xen/asm-i386/mmu_context.h | 4 +---
linux-2.6.12/include/asm-xen/asm-i386/page.h | 3 +++
linux-2.6.12/include/asm-xen/asm-i386/pci.h | 2 +-
linux-2.6.12/include/asm-xen/asm-i386/ptrace.h | 4 ++++
linux-2.6.12/include/linux/skbuff.h | 6 ++++--
linux-2.6.12/net/core/dev.c | 4 ++++
linux-2.6.8/arch/xen/i386/kernel/time.c | 2 +-
linux-2.6.9/Makefile | 2 +-
linux-2.6.9/arch/xen/Makefile | 3 +++
linux-2.6.9/arch/xen/boot/Makefile | 3 +++
linux-2.6.9/kernel/profile.c | 1 +
27 files changed, 89 insertions(+), 42 deletions(-)
Index: linux-2.6.9-xen-compile.patch
===================================================================
RCS file: /cvs/dist/rpms/kernel/FC-4/linux-2.6.9-xen-compile.patch,v
retrieving revision 1.49
retrieving revision 1.50
diff -u -r1.49 -r1.50
--- linux-2.6.9-xen-compile.patch 8 Sep 2005 19:10:39 -0000 1.49
+++ linux-2.6.9-xen-compile.patch 29 Sep 2005 23:05:04 -0000 1.50
@@ -1,4 +1,67 @@
-unchanged:
+#
+# Chunks that gave rejects in the upstream generated Xen patch.
+#
+--- linux-2.6.12/drivers/char/tty_io.c.fixup 2005-08-23 13:02:02.000000000 -0400
++++ linux-2.6.12/drivers/char/tty_io.c 2005-08-23 13:04:24.000000000 -0400
+@@ -2979,14 +2979,19 @@
+ #endif
+
+ #ifdef CONFIG_VT
+- cdev_init(&vc0_cdev, &console_fops);
+- if (cdev_add(&vc0_cdev, MKDEV(TTY_MAJOR, 0), 1) ||
+- register_chrdev_region(MKDEV(TTY_MAJOR, 0), 1, "/dev/vc/0") < 0)
+- panic("Couldn't register /dev/tty0 driver\n");
+- devfs_mk_cdev(MKDEV(TTY_MAJOR, 0), S_IFCHR|S_IRUSR|S_IWUSR, "vc/0");
+- class_device_create(tty_class, MKDEV(TTY_MAJOR, 0), NULL, "tty0");
++ if (console_use_vt) {
++ cdev_init(&vc0_cdev, &console_fops);
++ if (cdev_add(&vc0_cdev, MKDEV(TTY_MAJOR, 0), 1) ||
++ register_chrdev_region(MKDEV(TTY_MAJOR, 0), 1,
++ "/dev/vc/0") < 0)
++ panic("Couldn't register /dev/tty0 driver\n");
++ devfs_mk_cdev(MKDEV(TTY_MAJOR, 0), S_IFCHR|S_IRUSR|S_IWUSR,
++ "vc/0");
++ class_device_create(tty_class, MKDEV(TTY_MAJOR, 0), NULL,
++ "tty0");
+
+- vty_init();
++ vty_init();
++ }
+ #endif
+ return 0;
+ }
+--- linux-2.6.12/include/linux/skbuff.h.fixup 2005-08-23 13:02:10.000000000 -0400
++++ linux-2.6.12/include/linux/skbuff.h 2005-08-23 13:05:28.000000000 -0400
+@@ -254,8 +254,10 @@
+ __u8 local_df:1,
+ cloned:1,
+ ip_summed:2,
+- nohdr:1;
+- /* 3 bits spare */
++ nohdr:1,
++ proto_csum_valid:1,
++ proto_csum_blank:1;
++ /* 1 bit spare */
+ __u8 pkt_type;
+ __be16 protocol;
+
+--- linux-2.6.12/net/core/dev.c.fixup 2005-08-23 13:02:21.000000000 -0400
++++ linux-2.6.12/net/core/dev.c 2005-08-23 13:06:08.000000000 -0400
+@@ -115,6 +115,10 @@
+ #endif /* CONFIG_NET_RADIO */
+ #include <asm/current.h>
+
++#include <net/ip.h>
++#include <linux/tcp.h>
++#include <linux/udp.h>
++
+ /*
+ * The list of packet types we will receive (as opposed to discard)
+ * and the routines to invoke.
+
+#
+# Other compile fixes
+#
--- linux-2.6.8/arch/xen/i386/kernel/time.c.269 2004-10-15 13:40:26.000000000 -0400
+++ linux-2.6.8/arch/xen/i386/kernel/time.c 2004-10-15 13:40:40.000000000 -0400
@@ -68,7 +68,7 @@
@@ -10,7 +73,6 @@
int pit_latch_buggy; /* extern */
#include "do_timer.h"
-unchanged:
--- linux-2.6.9/kernel/profile.c~ 2004-12-24 01:45:26.735454624 -0500
+++ linux-2.6.9/kernel/profile.c 2004-12-24 01:45:40.875305040 -0500
@@ -22,6 +22,7 @@
@@ -64,3 +126,337 @@
static int __init pcibios_irq_init(void)
{
+--- linux-2.6.12/arch/xen/i386/kernel/process.c.compile 2005-08-23 10:42:33.000000000 -0400
++++ linux-2.6.12/arch/xen/i386/kernel/process.c 2005-08-23 10:42:51.000000000 -0400
+@@ -196,12 +196,12 @@
+
+ if (cpu_is_offline(cpu)) {
+ local_irq_disable();
++#if defined(CONFIG_XEN) && defined(CONFIG_HOTPLUG_CPU)
+ /* Ack it. From this point on until
+ we get woken up, we're not allowed
+ to take any locks. In particular,
+ don't printk. */
+ __get_cpu_var(cpu_state) = CPU_DEAD;
+-#if defined(CONFIG_XEN) && defined(CONFIG_HOTPLUG_CPU)
+ /* Tell hypervisor to take vcpu down. */
+ HYPERVISOR_vcpu_down(cpu);
+ #endif
+--- linux-2.6.12/arch/xen/i386/pci/irq.c.acpi 2005-08-15 11:03:50.000000000 -0400
++++ linux-2.6.12/arch/xen/i386/pci/irq.c 2005-08-15 11:07:05.000000000 -0400
+@@ -56,6 +56,7 @@ struct irq_router_handler {
+ };
+
+ int (*pcibios_enable_irq)(struct pci_dev *dev) = NULL;
++void (*pcibios_disable_irq)(struct pci_dev *dev) = NULL;
+
+ /*
+ * Search 0xf0000 -- 0xfffff for the PCI IRQ Routing Table.
+@@ -1010,24 +1011,28 @@ static int __init pcibios_irq_init(void)
+ subsys_initcall(pcibios_irq_init);
+
+
+-static void pirq_penalize_isa_irq(int irq)
++static void pirq_penalize_isa_irq(int irq, int active)
+ {
+ /*
+ * If any ISAPnP device reports an IRQ in its list of possible
+ * IRQ's, we try to avoid assigning it to PCI devices.
+ */
+- if (irq < 16)
+- pirq_penalty[irq] += 100;
++ if (irq < 16) {
++ if (active)
++ pirq_penalty[irq] += 1000;
++ else
++ pirq_penalty[irq] += 100;
++ }
+ }
+
+-void pcibios_penalize_isa_irq(int irq)
++void pcibios_penalize_isa_irq(int irq, int active)
+ {
+ #ifdef CONFIG_ACPI_PCI
+ if (!acpi_noirq)
+- acpi_penalize_isa_irq(irq);
++ acpi_penalize_isa_irq(irq, active);
+ else
+ #endif
+- pirq_penalize_isa_irq(irq);
++ pirq_penalize_isa_irq(irq, active);
+ }
+
+ static int pirq_enable_irq(struct pci_dev *dev)
+--- linux-2.6.12/include/asm-xen/asm-i386/pci.h.acpi 2005-08-15 11:07:41.000000000 -0400
++++ linux-2.6.12/include/asm-xen/asm-i386/pci.h 2005-08-15 11:08:33.000000000 -0400
+@@ -27,7 +27,7 @@ void pcibios_config_init(void);
+ struct pci_bus * pcibios_scan_root(int bus);
+
+ void pcibios_set_master(struct pci_dev *dev);
+-void pcibios_penalize_isa_irq(int irq);
++void pcibios_penalize_isa_irq(int irq, int active);
+ struct irq_routing_table *pcibios_get_irq_routing_table(void);
+ int pcibios_set_irq_routing(struct pci_dev *dev, int pin, int irq);
+
+
+#
+# Linux 2.6.13 related compile fixes
+#
+--- linux-2.6.12/arch/xen/i386/kernel/signal.c.2613 2005-08-23 13:16:40.000000000 -0400
++++ linux-2.6.12/arch/xen/i386/kernel/signal.c 2005-08-23 13:16:45.000000000 -0400
+@@ -603,7 +603,7 @@
+ return 1;
+
+ if (current->flags & PF_FREEZE) {
+- refrigerator(0);
++ refrigerator();
+ goto no_signal;
+ }
+
+--- linux-2.6.12/arch/xen/i386/kernel/traps.c.2613 2005-08-23 13:17:09.000000000 -0400
++++ linux-2.6.12/arch/xen/i386/kernel/traps.c 2005-08-23 13:21:54.000000000 -0400
+@@ -27,6 +27,7 @@
+ #include <linux/ptrace.h>
+ #include <linux/utsname.h>
+ #include <linux/kprobes.h>
++#include <linux/smp.h>
+
+ #ifdef CONFIG_EISA
+ #include <linux/ioport.h>
+@@ -47,7 +48,6 @@
+ #include <asm/i387.h>
+ #include <asm/nmi.h>
+
+-#include <asm/smp.h>
+ #include <asm/arch_hooks.h>
+ #include <asm/kdebug.h>
+
+@@ -303,7 +303,7 @@
+ };
+ static int die_counter;
+
+- if (die.lock_owner != _smp_processor_id()) {
++ if (die.lock_owner != smp_processor_id()) {
+ console_verbose();
+ spin_lock_irq(&die.lock);
+ die.lock_owner = smp_processor_id();
+--- linux-2.6.12/arch/xen/i386/kernel/time.c.2613 2005-08-23 13:18:17.000000000 -0400
++++ linux-2.6.12/arch/xen/i386/kernel/time.c 2005-08-23 13:22:32.000000000 -0400
+@@ -88,11 +88,7 @@
+ struct timezone __sys_tz __section_sys_tz;
+ #endif
+
+-#if defined(__x86_64__)
+ unsigned int cpu_khz; /* Detected as we calibrate the TSC */
+-#else
+-unsigned long cpu_khz; /* Detected as we calibrate the TSC */
+-#endif
+
+ extern unsigned long wall_jiffies;
+
+@@ -772,7 +768,7 @@
+ update_wallclock();
+
+ init_cpu_khz();
+- printk(KERN_INFO "Xen reported: %lu.%03lu MHz processor.\n",
++ printk(KERN_INFO "Xen reported: %u.%03u MHz processor.\n",
+ cpu_khz / 1000, cpu_khz % 1000);
+
+ #if defined(__x86_64__)
+--- linux-2.6.12/arch/xen/i386/kernel/i386_ksyms.c.2613 2005-08-23 13:22:50.000000000 -0400
++++ linux-2.6.12/arch/xen/i386/kernel/i386_ksyms.c 2005-08-23 14:30:44.000000000 -0400
+@@ -56,7 +56,7 @@
+ EXPORT_SYMBOL(drive_info);
+ #endif
+
+-extern unsigned long cpu_khz;
++extern unsigned int cpu_khz;
+ extern unsigned long get_cmos_time(void);
+
+ /* platform dependent support */
+@@ -69,7 +69,6 @@
+ EXPORT_SYMBOL(xquad_portio);
+ #endif
+ EXPORT_SYMBOL(dump_thread);
+-EXPORT_SYMBOL(dump_fpu);
+ EXPORT_SYMBOL_GPL(kernel_fpu_begin);
+ EXPORT_SYMBOL(__ioremap);
+ EXPORT_SYMBOL(ioremap_nocache);
+@@ -119,11 +118,6 @@
+ EXPORT_SYMBOL(pci_mem_start);
+ #endif
+
+-#ifdef CONFIG_PCI_BIOS
+-EXPORT_SYMBOL(pcibios_set_irq_routing);
+-EXPORT_SYMBOL(pcibios_get_irq_routing_table);
+-#endif
+-
+ #ifdef CONFIG_X86_USE_3DNOW
+ EXPORT_SYMBOL(_mmx_memcpy);
+ EXPORT_SYMBOL(mmx_clear_page);
+--- linux-2.6.12/arch/xen/i386/mm/pgtable.c.2613 2005-08-23 13:26:16.000000000 -0400
++++ linux-2.6.12/arch/xen/i386/mm/pgtable.c 2005-08-23 13:27:39.000000000 -0400
+@@ -41,7 +41,7 @@
+ printk("Free swap: %6ldkB\n", nr_swap_pages<<(PAGE_SHIFT-10));
+ for_each_pgdat(pgdat) {
+ for (i = 0; i < pgdat->node_spanned_pages; ++i) {
+- page = pgdat->node_mem_map + i;
++ page = pgdat_page_nr(pgdat, i);
+ total++;
+ if (PageHighMem(page))
+ highmem++;
+--- linux-2.6.12/include/asm-xen/asm-i386/mmu_context.h.2613 2005-08-23 13:37:24.000000000 -0400
++++ linux-2.6.12/include/asm-xen/asm-i386/mmu_context.h 2005-08-23 14:25:43.000000000 -0400
+@@ -23,9 +23,7 @@
+ #endif
+ }
+
+-#define prepare_arch_switch(rq,next) __prepare_arch_switch()
+-#define finish_arch_switch(rq, next) spin_unlock_irq(&(rq)->lock)
+-#define task_running(rq, p) ((rq)->curr == (p))
++#define prepare_arch_switch(next) __prepare_arch_switch()
+
+ static inline void __prepare_arch_switch(void)
+ {
+--- linux-2.6.12/arch/i386/kernel/vmlinux.lds.S.2613 2005-08-23 19:42:43.000000000 -0400
++++ linux-2.6.12/arch/i386/kernel/vmlinux.lds.S 2005-08-23 19:43:25.000000000 -0400
+@@ -35,10 +35,10 @@
+
+ . = ALIGN(16);
+ __start_smp_alternatives_table = .;
+- __smp_alternatives : { *(__smp_alternatives) }
++ __smp_alternatives : AT(ADDR(__smp_alternatives) - LOAD_OFFSET) { *(__smp_alternatives) }
+ __stop_smp_alternatives_table = .;
+
+- __smp_replacements : { *(__smp_replacements) }
++ __smp_replacements : AT(ADDR(__smp_replacements) - LOAD_OFFSET) { *(__smp_replacements) }
+
+ RODATA
+
+--- linux-2.6.12/arch/xen/i386/Kconfig.2613 2005-08-23 20:19:47.000000000 -0400
++++ linux-2.6.12/arch/xen/i386/Kconfig 2005-08-23 20:21:29.000000000 -0400
+@@ -940,6 +940,17 @@
+ depends on X86 && !EMBEDDED
+ default y
+
++config PHYSICAL_START
++ hex "Physical address where the kernel is loaded" if EMBEDDED
++ default "0x100000"
++ help
++ This gives the physical address where the kernel is loaded.
++ Primarily used in the case of kexec on panic where the
++ fail safe kernel needs to run at a different address than
++ the panic-ed kernel.
++
++ Don't change this unless you know what you are doing.
++
+ config SECCOMP
+ bool "Enable seccomp to safely compute untrusted bytecode"
+ depends on PROC_FS
+--- linux-2.6.12/include/asm-xen/asm-i386/page.h.2613 2005-08-23 20:16:08.000000000 -0400
++++ linux-2.6.12/include/asm-xen/asm-i386/page.h 2005-08-23 20:18:05.000000000 -0400
+@@ -216,9 +216,12 @@
+
+ #ifdef __ASSEMBLY__
+ #define __PAGE_OFFSET (0xC0000000)
++#define __PHYSICAL_START CONFIG_PHYSICAL_START
+ #else
+ #define __PAGE_OFFSET (0xC0000000UL)
++#define __PHYSICAL_START ((unsigned long)CONFIG_PHYSICAL_START)
+ #endif
++#define __KERNEL_START (__PAGE_OFFSET + __PHYSICAL_START)
+
+
+ #define PAGE_OFFSET ((unsigned long)__PAGE_OFFSET)
+--- linux-2.6.12/arch/xen/i386/kernel/process.c.2613 2005-08-23 20:32:31.000000000 -0400
++++ linux-2.6.12/arch/xen/i386/kernel/process.c 2005-08-23 20:32:48.000000000 -0400
+@@ -184,7 +184,7 @@
+ */
+ void cpu_idle (void)
+ {
+- int cpu = _smp_processor_id();
++ int cpu = smp_processor_id();
+
+ /* endless idle loop with no priority at all */
+ while (1) {
+--- linux-2.6.12/arch/xen/i386/kernel/setup.c.2613 2005-08-23 20:35:09.000000000 -0400
++++ linux-2.6.12/arch/xen/i386/kernel/setup.c 2005-08-23 20:36:23.000000000 -0400
+@@ -58,6 +58,14 @@
+ #include "setup_arch_pre.h"
+ #include <bios_ebda.h>
+
++#ifdef CONFIG_HOTPLUG_CPU
++#define DEFAULT_SEND_IPI (1)
++#else
++#define DEFAULT_SEND_IPI (0)
++#endif
++
++int no_broadcast=DEFAULT_SEND_IPI;
++
+ /* Allows setting of maximum possible memory size */
+ static unsigned long xen_override_max_pfn;
+
+--- linux-2.6.12/arch/xen/kernel/reboot.c.2613 2005-08-23 20:41:22.000000000 -0400
++++ linux-2.6.12/arch/xen/kernel/reboot.c 2005-08-23 20:42:16.000000000 -0400
+@@ -32,6 +32,12 @@
+ HYPERVISOR_reboot();
+ }
+
++void machine_emergency_restart(void)
++{
++ char dummy;
++ machine_restart(&dummy);
++}
++
+ void machine_halt(void)
+ {
+ machine_power_off();
+--- linux-2.6.12/include/asm-i386/timex.h.2613 2005-08-23 20:31:58.000000000 -0400
++++ linux-2.6.12/include/asm-i386/timex.h 2005-08-23 20:32:15.000000000 -0400
+@@ -49,7 +49,9 @@
+
+ extern unsigned int cpu_khz;
+
++#ifndef CONFIG_XEN
+ extern int read_current_timer(unsigned long *timer_value);
+ #define ARCH_HAS_READ_CURRENT_TIMER 1
++#endif
+
+ #endif
+--- linux-2.6.12/include/asm-xen/asm-i386/ptrace.h.2613 2005-08-23 20:37:02.000000000 -0400
++++ linux-2.6.12/include/asm-xen/asm-i386/ptrace.h 2005-08-23 20:38:09.000000000 -0400
+@@ -55,9 +55,13 @@
+ #define PTRACE_SET_THREAD_AREA 26
+
+ #ifdef __KERNEL__
++
++#include <asm/vm86.h>
++
+ struct task_struct;
+ extern void send_sigtrap(struct task_struct *tsk, struct pt_regs *regs, int error_code);
+ #define user_mode(regs) ((VM_MASK & (regs)->eflags) || (2 & (regs)->xcs))
++#define user_mode_vm(regs) (((regs->xcs & 3) | (regs->eflags & VM_MASK)) != 0)
+ #define instruction_pointer(regs) ((regs)->eip)
+ #if defined(CONFIG_SMP) && defined(CONFIG_FRAME_POINTER)
+ extern unsigned long profile_pc(struct pt_regs *regs);
+--- linux-2.6.12/arch/xen/Kconfig.drivers~ 2005-08-27 00:23:32.000000000 -0400
++++ linux-2.6.12/arch/xen/Kconfig.drivers 2005-08-27 00:23:49.000000000 -0400
+@@ -30,7 +30,7 @@ source "drivers/ieee1394/Kconfig"
+ source "drivers/message/i2o/Kconfig"
+ endif
+
+-source "net/Kconfig"
++source "drivers/net/Kconfig"
+
+ if XEN_PHYSDEV_ACCESS
+ source "drivers/isdn/Kconfig"
+--- linux-2.6.12/arch/xen/Kconfig~ 2005-08-27 00:23:54.000000000 -0400
++++ linux-2.6.12/arch/xen/Kconfig 2005-08-27 00:24:08.000000000 -0400
+@@ -184,6 +184,7 @@ source "fs/Kconfig.binfmt"
+
+ endmenu
+
++source "net/Kconfig"
+ source "arch/xen/Kconfig.drivers"
+
+ if XEN_PRIVILEGED_GUEST
Index: sources
===================================================================
RCS file: /cvs/dist/rpms/kernel/FC-4/sources,v
retrieving revision 1.142
retrieving revision 1.143
diff -u -r1.142 -r1.143
--- sources 15 Aug 2005 05:56:56 -0000 1.142
+++ sources 29 Sep 2005 23:05:04 -0000 1.143
@@ -1,3 +1,2 @@
-c5d2a1b62e1dad502c871bba267337d5 linux-2.6.12.tar.bz2
-b40f93c0e69d5e91119af3a80f25770d linux-2.6-acpi-20050729.patch.bz2
-cff8abb6a5a992018cbcf382ff95c577 patch-2.6.12.5.bz2
+560f5fadf59f172973e67939868a4cae linux-2.6.13.tar.bz2
+deb39c284b01db99fdc3ec3f80a4eaea patch-2.6.13.2.bz2
Index: upstream
===================================================================
RCS file: /cvs/dist/rpms/kernel/FC-4/upstream,v
retrieving revision 1.82
retrieving revision 1.83
diff -u -r1.82 -r1.83
--- upstream 15 Aug 2005 05:56:56 -0000 1.82
+++ upstream 29 Sep 2005 23:05:04 -0000 1.83
@@ -1,3 +1,2 @@
-linux-2.6.12.tar.bz2
-patch-2.6.12.5.bz2
-
+linux-2.6.13.tar.bz2
+patch-2.6.13.2.bz2
--- linux-2.4.0-nonintconfig.patch DELETED ---
--- linux-2.6-CAN-2005-2490.patch DELETED ---
--- linux-2.6-CAN-2005-2492.patch DELETED ---
--- linux-2.6-acpi-rollup-20050902.patch DELETED ---
--- linux-2.6-alsa-snd-intel8x0m-semaphore.patch DELETED ---
--- linux-2.6-appletouch-update.patch DELETED ---
--- linux-2.6-input-alps-typo.patch DELETED ---
--- linux-2.6-nfs-enoent.patch DELETED ---
--- linux-2.6-powernow-k8-update.patch DELETED ---
--- linux-2.6-scsi-sym2-alloc_lcb_tags-atomic.patch DELETED ---
--- linux-2.6-selinux-addrlen-checks.patch DELETED ---
--- linux-2.6-windtunnel-printk.patch DELETED ---
--- linux-2.6.0-compile.patch DELETED ---
--- linux-2.6.0-must_check.patch DELETED ---
--- linux-2.6.1-s390-compile.patch DELETED ---
--- linux-2.6.10-periodic-slab-debug.patch DELETED ---
--- linux-2.6.11-cpufreq-add-suspend.patch DELETED ---
--- linux-2.6.11-i2c-config.patch DELETED ---
--- linux-2.6.11-isdn-icn-nodev.patch DELETED ---
--- linux-2.6.11-kallsyms-extra-text.patch DELETED ---
--- linux-2.6.11-mac-mini-sound.patch DELETED ---
--- linux-2.6.11-pmac-ide-sleep.patch DELETED ---
--- linux-2.6.11-pmac-volume-save.patch DELETED ---
--- linux-2.6.11-ppc32-750-erratum-fix.patch DELETED ---
--- linux-2.6.11-ppc32-pbook-clock-spreading.patch DELETED ---
--- linux-2.6.11-ppc32-pmac-sleep-fix.patch DELETED ---
--- linux-2.6.11-radeon-backlight.patch DELETED ---
--- linux-2.6.11-random-ehci-patch.patch DELETED ---
--- linux-2.6.11-slab-backtrace.patch DELETED ---
--- linux-2.6.11-tux.patch DELETED ---
--- linux-2.6.11-vm-taint.patch DELETED ---
--- linux-2.6.11.tar.bz2.sign DELETED ---
--- linux-2.6.12-audit-merge.patch DELETED ---
--- linux-2.6.12-detect-softlockups.patch DELETED ---
--- linux-2.6.12-net-conntrack-bridge-fix.patch DELETED ---
--- linux-2.6.12-net-make-orinoco-suck-less.patch DELETED ---
--- linux-2.6.12-nfsd-ctlbits.patch DELETED ---
--- linux-2.6.12-ns558-nodev-rmmod.patch DELETED ---
--- linux-2.6.12-pwc-warning.patch DELETED ---
--- linux-2.6.12-rc3-ehci-misc-updates.patch DELETED ---
--- linux-2.6.12-scsicam-geom-fix.patch DELETED ---
--- linux-2.6.12-usb-old_scheme_first.patch DELETED ---
--- linux-2.6.12-vm-singlebiterror.patch DELETED ---
--- linux-2.6.12.tar.bz2.sign DELETED ---
--- linux-2.6.12rc-ac-ide-fixes.patch DELETED ---
--- linux-2.6.12rc-ppc32-clockspreading-fix.patch DELETED ---
--- linux-2.6.13-rc3-audit-git.patch DELETED ---
--- linux-2.6.3-ia64-build.patch DELETED ---
--- linux-2.6.3-printopen.patch DELETED ---
--- linux-2.6.3-sparc-addbzimage.patch DELETED ---
--- linux-2.6.4-stackusage.patch DELETED ---
--- linux-2.6.8-lockd-racewarn2.patch DELETED ---
--- linux-2.6.8-ppc64-netboot.patch DELETED ---
--- linux-2.6.9-lockd-block-nosleep.patch DELETED ---
--- linux-2.6.9-lockd-reclaims.patch DELETED ---
--- linux-2.6.9-s390-autoraid.patch DELETED ---
--- linux-2.6.9-s390-zfcp_port-fix.patch DELETED ---
--- linux-2.6.9-spinlock-debug-panic.patch DELETED ---
--- patch-2.6.12.5.bz2.sign DELETED ---
--- patch-2.6.12.6pre.patch DELETED ---
- Previous message (by thread): rpms/gdb/devel gdb-6.3-attach-dso-20050929.patch, NONE, 1.1 gdb.spec, 1.159, 1.160
- Next message (by thread): rpms/kernel/FC-4/configs config-generic, 1.33, 1.34 config-ia64-generic, 1.3, 1.4 config-ppc-generic, 1.21, 1.22 config-ppc64, 1.4, 1.5 config-ppc64-generic, 1.10, 1.11 config-rhel-generic, 1.1, 1.2 config-s390-generic, 1.2, 1.3 config-x86-generic, 1.10, 1.11 config-x86_64-generic, 1.10, 1.11 config-xen-generic, 1.9, 1.10 config-xen-x86_64, 1.2, 1.3 config-xen-xen0, 1.4, 1.5
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
More information about the fedora-cvs-commits
mailing list