====== ndiswrapper ====== The most current version (1.34) of [[http://ndiswrapper.sourceforge.net/|ndiswrapper]] works with the 2.6.19 kernel series. There may be a fix to this ndiswrapper/kernel 2.6.19.* problem: \\ \\ http://ndiswrapper.sourceforge.net/forums/viewtopic.php?t=994 http://sourceforge.net/tracker/index.php?func=detail&aid=1613125&group_id=93482&atid=604452 I have **NOT** been able to get ndiswrapper to work with my 2.6.19 kernel (with SMP enabled - I haven't tried without SMP). As soon as I load the ndiswrapper module, I get a kernel panic. [[http://ndiswrapper.sourceforge.net/|ndiswrapper]] It seems that the new kernel, 2.6.19, has a specific check that taints the kernel when the ndiswrapper module is loaded. This restricts the symbols which ndiswrapper can access, which seems to be causing my system to freeze. I'm going to try patching my kernel (by removing the kernel check which adds a "taint" flag to the ndiswrapper module) and see if that helps things out... (([[http://lwn.net/Articles/205126/]])) diff -u kernel/module.c.orig kernel/module.c --- kernel/module.c.orig 2006-12-02 14:32:02.000000000 -0500 +++ kernel/module.c 2006-12-02 14:32:20.000000000 -0500 @@ -1717,8 +1717,8 @@ /* Set up license info based on the info section */ set_license(mod, get_modinfo(sechdrs, infoindex, "license")); - if (strcmp(mod->name, "ndiswrapper") == 0) - add_taint(TAINT_PROPRIETARY_MODULE); + /* if (strcmp(mod->name, "ndiswrapper") == 0) + add_taint(TAINT_PROPRIETARY_MODULE); */ if (strcmp(mod->name, "driverloader") == 0) add_taint_module(mod, TAINT_PROPRIETARY_MODULE); ===== 16K Stack Kernel Patch ===== current: kernel 2.6.19 [[http://www.linuxant.com/driverloader/wlan/downloads-patches.php]] diff -urN linux-2.6.19/arch/i386/defconfig linux-2.6.19-16kstacks/arch/i386/defconfig --- linux-2.6.19/arch/i386/defconfig 2006-11-29 16:57:37.000000000 -0500 +++ linux-2.6.19-16kstacks/arch/i386/defconfig 2006-11-30 17:15:09.000000000 -0500 @@ -1487,6 +1487,7 @@ # CONFIG_DEBUG_STACK_USAGE is not set # CONFIG_DEBUG_RODATA is not set # CONFIG_4KSTACKS is not set +CONFIG_16KSTACKS=y CONFIG_X86_FIND_SMP_CONFIG=y CONFIG_X86_MPPARSE=y CONFIG_DOUBLEFAULT=y diff -urN linux-2.6.19/arch/i386/Kconfig.debug linux-2.6.19-16kstacks/arch/i386/Kconfig.debug --- linux-2.6.19/arch/i386/Kconfig.debug 2006-11-29 16:57:37.000000000 -0500 +++ linux-2.6.19-16kstacks/arch/i386/Kconfig.debug 2006-11-30 17:12:17.000000000 -0500 @@ -66,6 +66,14 @@ on the VM subsystem for higher order allocations. This option will also use IRQ stacks to compensate for the reduced stackspace. +config 16KSTACKS + bool "Use 16Kb for kernel stacks instead of 8Kb" + depends on DEBUG_KERNEL + help + If you say Y here the kernel will use a 16Kb stacksize for the + kernel stack attached to each process/thread. This option + will also use IRQ stacks to compensate for the reduced stackspace. + config X86_FIND_SMP_CONFIG bool depends on X86_LOCAL_APIC || X86_VOYAGER diff -urN linux-2.6.19/arch/i386/kernel/irq.c linux-2.6.19-16kstacks/arch/i386/kernel/irq.c --- linux-2.6.19/arch/i386/kernel/irq.c 2006-11-29 16:57:37.000000000 -0500 +++ linux-2.6.19-16kstacks/arch/i386/kernel/irq.c 2006-11-30 17:16:33.000000000 -0500 @@ -33,7 +33,7 @@ } #endif -#ifdef CONFIG_4KSTACKS +#if defined(CONFIG_4KSTACKS) || defined(CONFIG_16KSTACKS) /* * per-CPU IRQ handling contexts (thread information and stack) */ @@ -57,7 +57,7 @@ /* high bit used in ret_from_ code */ int irq = ~regs->orig_eax; struct irq_desc *desc = irq_desc + irq; -#ifdef CONFIG_4KSTACKS +#if defined(CONFIG_4KSTACKS) || defined(CONFIG_16KSTACKS) union irq_ctx *curctx, *irqctx; u32 *isp; #endif @@ -85,7 +85,7 @@ } #endif -#ifdef CONFIG_4KSTACKS +#if defined(CONFIG_4KSTACKS) || defined(CONFIG_16KSTACKS) curctx = (union irq_ctx *) current_thread_info(); irqctx = hardirq_ctx[smp_processor_id()]; @@ -130,7 +130,7 @@ return 1; } -#ifdef CONFIG_4KSTACKS +#if defined(CONFIG_4KSTACKS) || defined(CONFIG_16KSTACKS) /* * These should really be __section__(".bss.page_aligned") as well, but diff -urN linux-2.6.19/include/asm-i386/irq.h linux-2.6.19-16kstacks/include/asm-i386/irq.h --- linux-2.6.19/include/asm-i386/irq.h 2006-11-29 16:57:37.000000000 -0500 +++ linux-2.6.19-16kstacks/include/asm-i386/irq.h 2006-11-30 17:12:17.000000000 -0500 @@ -24,7 +24,7 @@ # define ARCH_HAS_NMI_WATCHDOG /* See include/linux/nmi.h */ #endif -#ifdef CONFIG_4KSTACKS +#if defined(CONFIG_4KSTACKS) || defined(CONFIG_16KSTACKS) extern void irq_ctx_init(int cpu); extern void irq_ctx_exit(int cpu); # define __ARCH_HAS_DO_SOFTIRQ diff -urN linux-2.6.19/include/asm-i386/module.h linux-2.6.19-16kstacks/include/asm-i386/module.h --- linux-2.6.19/include/asm-i386/module.h 2006-11-29 16:57:37.000000000 -0500 +++ linux-2.6.19-16kstacks/include/asm-i386/module.h 2006-11-30 17:12:17.000000000 -0500 @@ -69,8 +69,12 @@ #ifdef CONFIG_4KSTACKS #define MODULE_STACKSIZE "4KSTACKS " #else +#ifdef CONFIG_16KSTACKS +#define MODULE_STACKSIZE "16KSTACKS " +#else #define MODULE_STACKSIZE "" #endif +#endif #define MODULE_ARCH_VERMAGIC MODULE_PROC_FAMILY MODULE_REGPARM MODULE_STACKSIZE diff -urN linux-2.6.19/include/asm-i386/thread_info.h linux-2.6.19-16kstacks/include/asm-i386/thread_info.h --- linux-2.6.19/include/asm-i386/thread_info.h 2006-11-29 16:57:37.000000000 -0500 +++ linux-2.6.19-16kstacks/include/asm-i386/thread_info.h 2006-11-30 17:12:17.000000000 -0500 @@ -56,8 +56,12 @@ #ifdef CONFIG_4KSTACKS #define THREAD_SIZE (4096) #else +#ifdef CONFIG_16KSTACKS +#define THREAD_SIZE (16384) +#else #define THREAD_SIZE (8192) #endif +#endif #define STACK_WARN (THREAD_SIZE/8) /* == {{tag>:linux :linux:slackpkg :linux:slackware}}