From: Linus Torvalds Date: Fri, 23 Nov 2007 20:16:39 +0000 (-0500) Subject: Import 2.1.122pre2 X-Git-Tag: 2.1.122pre2 X-Git-Url: http://git.neil.brown.name/?a=commitdiff_plain;h=5f61db3c09f86907778ed86dcc8da322d8638671;p=history.git Import 2.1.122pre2 --- diff --git a/CREDITS b/CREDITS index cf5554fa7c20..f62977ca8326 100644 --- a/CREDITS +++ b/CREDITS @@ -1615,14 +1615,12 @@ S: Beaverton, Oregon 97008 S: USA N: Mike Shaver -E: shaver@ingenia.com -W: http://neon.ingenia.com/~shaver/ -D: Network hacking, /proc/sys/net -S: c/o Ingenia Communications Corporation -S: Suite 4200, CTTC Building -S: 1125 Colonel By Drive +E: shaver@netscape.com +W: http://people.netscape.com/shaver/ +D: MIPS work, /proc/sys/net, misc net hacking +S: 149 Union St. S: Ottawa, Ontario -S: Canada K1S 5R1 +S: Canada K7L 2P4 N: John Shifflett E: john@geolog.com diff --git a/arch/i386/kernel/irq.c b/arch/i386/kernel/irq.c index 1baf19aea43d..e5bc7e8d21e6 100644 --- a/arch/i386/kernel/irq.c +++ b/arch/i386/kernel/irq.c @@ -699,7 +699,7 @@ void enable_irq(unsigned int irq) * install a handler for this interrupt (make irq autodetection * work by just looking at the status field for the irq) */ - irq_desc[irq].status = 0; + irq_desc[irq].status &= ~(IRQ_DISABLED | IRQ_INPROGRESS); irq_desc[irq].handler->enable(irq); spin_unlock_irqrestore(&irq_controller_lock, flags); } @@ -785,7 +785,6 @@ int setup_x86_irq(unsigned int irq, struct irqaction * new) *p = new; if (!shared) { - irq_desc[irq].status = 0; #ifdef __SMP__ if (IO_APIC_IRQ(irq)) { /* @@ -796,10 +795,11 @@ int setup_x86_irq(unsigned int irq, struct irqaction * new) if (irq < 16) { disable_8259A_irq(irq); if (i8259A_irq_pending(irq)) - irq_desc[irq].status = IRQ_PENDING; + irq_desc[irq].status |= IRQ_PENDING; } } #endif + irq_desc[irq].status &= ~(IRQ_DISABLED | IRQ_INPROGRESS); irq_desc[irq].handler->enable(irq); } spin_unlock_irqrestore(&irq_controller_lock,flags); diff --git a/arch/i386/kernel/mtrr.c b/arch/i386/kernel/mtrr.c index f56bcdfa1504..9d079cc1fe31 100644 --- a/arch/i386/kernel/mtrr.c +++ b/arch/i386/kernel/mtrr.c @@ -117,6 +117,14 @@ 19980611 Richard Gooch Always define . v1.22 + 19980901 Richard Gooch + Removed module support in order to tidy up code. + Added sanity check for / before . + Created addition queue for prior to SMP commence. + v1.23 + 19980910 Richard Gooch + Removed sanity checks and addition queue: Linus prefers an OOPS. + v1.24 */ #include #include @@ -149,7 +157,7 @@ #include #include -#define MTRR_VERSION "1.22 (19980611)" +#define MTRR_VERSION "1.24 (19980910)" #define TRUE 1 #define FALSE 0 @@ -658,13 +666,8 @@ static void set_mtrr_smp (unsigned int reg, unsigned long base, } /* End Function set_mtrr_smp */ -/* A warning that is common to the module and non-module cases. */ /* Some BIOS's are fucked and don't set all MTRRs the same! */ -#ifdef MODULE -static void mtrr_state_warn (unsigned long mask) -#else __initfunc(static void mtrr_state_warn (unsigned long mask)) -#endif { if (!mask) return; if (mask & MTRR_CHANGE_MASK_FIXED) @@ -676,37 +679,6 @@ __initfunc(static void mtrr_state_warn (unsigned long mask)) printk ("mtrr: probably your BIOS does not setup all CPUs\n"); } /* End Function mtrr_state_warn */ -#ifdef MODULE -/* As a module, copy the MTRR state using an IPI handler. */ - -static volatile unsigned long smp_changes_mask = 0; - -static void copy_mtrr_state_handler (struct set_mtrr_context *ctxt, void *info) -{ - unsigned long mask, count; - struct mtrr_state *smp_mtrr_state = info; - - mask = set_mtrr_state (smp_mtrr_state, ctxt); - /* Use the atomic bitops to update the global mask */ - for (count = 0; count < sizeof mask * 8; ++count) - { - if (mask & 0x01) set_bit (count, &smp_changes_mask); - mask >>= 1; - } -} /* End Function copy_mtrr_state_handler */ - -/* Copies the entire MTRR state of this CPU to all the others. */ -static void copy_mtrr_state (void) -{ - struct mtrr_state ms; - - get_mtrr_state (&ms); - do_all_cpus (copy_mtrr_state_handler, &ms, FALSE); - finalize_mtrr_state (&ms); - mtrr_state_warn (smp_changes_mask); -} /* End Function copy_mtrr_state */ - -#endif /* MODULE */ #endif /* __SMP__ */ static char *attrib_to_str (int x) @@ -1163,7 +1135,7 @@ static void compute_ascii (void) EXPORT_SYMBOL(mtrr_add); EXPORT_SYMBOL(mtrr_del); -#if defined(__SMP__) && !defined(MODULE) +#ifdef __SMP__ static volatile unsigned long smp_changes_mask __initdata = 0; static struct mtrr_state smp_mtrr_state __initdata = {0, 0}; @@ -1196,26 +1168,18 @@ __initfunc(void mtrr_init_secondary_cpu (void)) } } /* End Function mtrr_init_secondary_cpu */ -#endif +#endif /* __SMP__ */ -#ifdef MODULE -int init_module (void) -#else __initfunc(int mtrr_init(void)) -#endif { if ( !(boot_cpu_data.x86_capability & X86_FEATURE_MTRR) ) return 0; -# if !defined(__SMP__) || defined(MODULE) +# ifndef __SMP__ printk("mtrr: v%s Richard Gooch (rgooch@atnf.csiro.au)\n", MTRR_VERSION); # endif # ifdef __SMP__ -# ifdef MODULE - copy_mtrr_state (); -# else /* MODULE */ finalize_mtrr_state (&smp_mtrr_state); mtrr_state_warn (smp_changes_mask); -# endif /* MODULE */ # endif /* __SMP__ */ # ifdef CONFIG_PROC_FS @@ -1224,17 +1188,4 @@ __initfunc(int mtrr_init(void)) init_table (); return 0; -} - -#ifdef MODULE -void cleanup_module (void) -{ - if ( !(boot_cpu_data.x86_capability & X86_FEATURE_MTRR) ) return; -# ifdef CONFIG_PROC_FS - proc_unregister (&proc_root, PROC_MTRR); -# endif -# ifdef __SMP__ - mtrr_hook = NULL; -# endif -} -#endif +} /* End Function mtrr_init */ diff --git a/drivers/net/Config.in b/drivers/net/Config.in index 2c6638004fa1..b7f36ee144e2 100644 --- a/drivers/net/Config.in +++ b/drivers/net/Config.in @@ -153,18 +153,16 @@ fi # AppleTalk # if [ "$CONFIG_EXPERIMENTAL" = "y" ]; then - if [ "$CONFIG_ATALK" != "n" ]; then - tristate 'Apple/Farallon LocalTalk PC support' CONFIG_LTPC - tristate 'COPS LocalTalk PC support' CONFIG_COPS - if [ "$CONFIG_COPS" != "n" ]; then - bool 'Dayna firmware support' CONFIG_COPS_DAYNA - bool 'Tangent firmware support' CONFIG_COPS_TANGENT - fi - tristate 'Appletalk-IP driver support' CONFIG_IPDDP - if [ "$CONFIG_IPDDP" != "n" ]; then - bool 'IP to Appletalk-IP Encapsulation support' CONFIG_IPDDP_ENCAP - bool 'Appletalk-IP to IP Decapsulation support' CONFIG_IPDDP_DECAP - fi + dep_tristate 'Apple/Farallon LocalTalk PC support' CONFIG_LTPC $CONFIG_ATALK + dep_tristate 'COPS LocalTalk PC support' CONFIG_COPS + if [ "$CONFIG_COPS" != "n" ]; then + bool 'Dayna firmware support' CONFIG_COPS_DAYNA + bool 'Tangent firmware support' CONFIG_COPS_TANGENT + fi + dep_tristate 'Appletalk-IP driver support' CONFIG_IPDDP $CONFIG_ATALK + if [ "$CONFIG_IPDDP" != "n" ]; then + bool 'IP to Appletalk-IP Encapsulation support' CONFIG_IPDDP_ENCAP + bool 'Appletalk-IP to IP Decapsulation support' CONFIG_IPDDP_DECAP fi fi diff --git a/fs/isofs/inode.c b/fs/isofs/inode.c index 06de6ac7ce84..406dae9aca5f 100644 --- a/fs/isofs/inode.c +++ b/fs/isofs/inode.c @@ -320,7 +320,7 @@ static int parse_options(char *options, struct iso9660_options * popt) *value++ = 0; #ifdef CONFIG_JOLIET - if (!strcmp(this_char,"iocharset")) { + if (!strcmp(this_char,"iocharset") && value) { popt->iocharset = value; while (*value && *value != ',') value++;