ndiswrapper

The most current version (1.34) of ndiswrapper works with the 2.6.19 kernel series.

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.

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… 1)

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)
 /*
linux/slackpkg/ndiswrapper.txt · Last modified: 2007/01/25 19:24 by john
 
Except where otherwise noted, content on this wiki is licensed under the following license: CC Attribution-Noncommercial-Share Alike 3.0 Unported
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki