2.5.40 (-ac5) - unresolved symbols and cli/sti
Subsystems (4)
PATCH 1/1 2.5.40 (-ac5) - unresolved symbols and cli/sti
drivers/char/ftape/lowlevel/fdc-io.c +21 -26
@@ -82,6 +82,7 @@static int fdc_fifo_locked;/* has fifo && lock set ? */ static __u8 fdc_precomp;/* default precomp. value (nsec) */ static __u8 fdc_prec_code;/* fdc precomp. select code */ +static spinlock_t retry_lock;static char ftape_id[] ="ftape" ;/* used by request irq and free irq */
@@ -89,14 +90,13 @@ {unsigned long flags; -save_flags (flags); -cli (); +spin_lock_irqsave (&retry_lock, flags);if (count ==0 ) { ft_expected_stray_interrupts =0 ; }else { ft_expected_stray_interrupts += count; } -restore_flags (flags); +spin_unlock_irqrestore (&retry_lock, flags); }/* Wait during a timeout period for a given FDC status.
@@ -194,8 +194,7 @@TRACE_FUN (ft_t_any);fdc_usec_wait (FT_RQM_DELAY );/* wait for valid RQM status */ -save_flags (flags); -cli (); +spin_lock_irqsave (&retry_lock, flags);#if LINUX_VERSION_CODE >=KERNEL_VER (2 ,1 ,30 )if (!in_interrupt ()) #else
@@ -223,7 +222,7 @@* "fdc_read timeout" errors, I HOPE :-) */ if (ft_hide_interrupt) { -restore_flags (flags); +spin_unlock_irqrestore (&retry_lock, flags);TRACE (ft_t_info,"Waiting for the isr() completing fdc_seek()" );if (fdc_interrupt_wait (2 *FT_SECOND ) <0 ) {
@@ -246,12 +245,11 @@ }fdc_usec_wait (FT_RQM_DELAY );/* wait for valid RQM status */ -save_flags (flags); -cli (); +spin_lock_irqsave (&retry_lock, flags); } fdc_status =inb (fdc.msr);if ((fdc_status &FDC_DATA_READY_MASK ) !=FDC_DATA_IN_READY ) { -restore_flags (flags); +spin_unlock_irqrestore (&retry_lock, flags);TRACE_ABORT (-EBUSY , ft_t_err,"fdc not ready" ); } fdc_mode = *cmd_data;/* used by isr */
@@ -301,7 +299,7 @@ last_time = ftape_timestamp(); }#endif -restore_flags (flags); +spin_unlock_irqrestore (&retry_lock, flags);TRACE_EXIT result; }
@@ -317,15 +315,14 @@int retry =0 ;TRACE_FUN (ft_t_any); -save_flags (flags); -cli (); +spin_lock_irqsave (&retry_lock, flags); fdc_status =inb (fdc.msr);if ((fdc_status &FDC_DATA_READY_MASK ) !=FDC_DATA_OUT_READY ) {TRACE (ft_t_err,"fdc not ready" ); result = -EBUSY ; }else while (count) {if (!(fdc_status &FDC_BUSY )) { -restore_flags (flags); +spin_unlock_irqrestore (&retry_lock, flags);TRACE_ABORT (-EIO , ft_t_err,"premature end of result phase" ); } result =fdc_read (res_data);
@@ -348,7 +345,7 @@ ++res_data; } } -restore_flags (flags); +spin_unlock_irqrestore (&retry_lock, flags);fdc_usec_wait (FT_RQM_DELAY );/* allow FDC to negate BSY */ TRACE_EXIT result; }
@@ -627,15 +624,13 @@unsigned long flags;TRACE_FUN (ft_t_any); -save_flags (flags); -cli (); +spin_lock_irqsave (&retry_lock, flags);fdc_dor_reset (1 );/* keep unit selected */ fdc_mode = fdc_idle; -/* maybe the cli()/sti() pair is not necessary, BUT: -* the following line MUST be here. Otherwise fdc_interrupt_wait() +/* The following line MUST be here. Otherwise fdc_interrupt_wait() * won't wait. Note that fdc_reset() is called from * ftape_dumb_stop() when the fdc is busy transferring data. In this * case fdc_isr() MOST PROBABLY sets ft_interrupt_seen, and tries
@@ -647,7 +642,7 @@*/ fdc_update_dsr ();/* restore data rate and precomp */ -restore_flags (flags); +spin_unlock_irqrestore (&retry_lock, flags);/* * Wait for first polling cycle to complete
@@ -946,16 +941,15 @@*/ TRACE (ft_t_fdc_dma,"phys. addr. = %lx" ,virt_to_bus ((void *) buff->ptr)); -save_flags (flags); -cli ();/* could be called from ISR ! */ +spin_lock_irqsave (&retry_lock, flags);fdc_setup_dma (DMA_MODE_WRITE , buff->ptr,FT_SECTORS_PER_SEGMENT *4 );/* Issue FDC command to start reading/writing. */ out[1 ] = ft_drive_sel; out[4 ] = buff->gap3;TRACE_CATCH (fdc_setup_error =fdc_command (out,sizeof (out)), - restore_flags(flags); fdc_mode = fdc_idle); -restore_flags (flags); + spin_unlock_irqrestore(&retry_lock, flags); fdc_mode = fdc_idle); +spin_unlock_irqrestore (&retry_lock, flags); TRACE_EXIT 0; }
@@ -998,8 +992,9 @@ ft_t_bug, "bug: illegal operation parameter"); }TRACE (ft_t_fdc_dma,"phys. addr. = %lx" ,virt_to_bus ((void *)buff->ptr)); -save_flags (flags); -cli ();/* could be called from ISR ! */ + +spin_lock_irqsave (&retry_lock, flags); +if (operation !=FDC_VERIFY ) {fdc_setup_dma (dma_mode, buff->ptr,FT_SECTOR_SIZE * buff->sector_count);
@@ -1017,7 +1012,7 @@ out[8 ] =0xff ;/* No limit to transfer size. */ TRACE (ft_t_fdc_dma,"C: 0x%02x, H: 0x%02x, R: 0x%02x, cnt: 0x%02x" , out[2 ], out[3 ], out[4 ], out[6 ] - out[4 ] +1 ); -restore_flags (flags); +spin_unlock_irqrestore (&retry_lock, flags);TRACE_CATCH (fdc_setup_error =fdc_command (out,9 ),fdc_mode = fdc_idle); TRACE_EXIT 0; }
drivers/char/ftape/lowlevel/fdc-isr.c +0 -1
@@ -1091,7 +1091,6 @@*/ TRACE_EXIT ; } -sti ();if (inb_p (fdc.msr) &FDC_BUSY ) {/* Entering Result Phase */ ft_hide_interrupt =0 ;handle_fdc_busy (ftape_get_buffer (ft_queue_head));
drivers/char/ftape/lowlevel/ftape-calibr.c +10 -12
@@ -49,6 +49,8 @@static unsigned long ps_per_cycle =0 ;#endif +static spinlock_t retry_lock; +/* * Note: On Intel PCs, the clock ticks at 100 Hz (HZ==100) which is * too slow for certain timeouts (and that clock doesn't even tick
@@ -75,13 +77,12 @@__u16 lo;__u16 hi; -save_flags (flags); -cli (); +spin_lock_irqsave (&retry_lock, flags);outb_p (0x00 ,0x43 );/* latch the count ASAP */ lo =inb_p (0x40 );/* read the latched count */ lo |=inb (0x40 ) <<8 ; hi = jiffies; -restore_flags (flags); +spin_unlock_irqrestore (&retry_lock, flags);return ((hi +1 ) * (unsigned int )LATCH ) - lo;/* downcounter ! */ #endif }
@@ -94,12 +95,11 @@unsigned int count;unsigned long flags; -save_flags (flags); -cli (); +spin_lock_irqsave (&retry_lock, flags);outb_p (0x00 ,0x43 );/* latch the count ASAP */ count =inb_p (0x40 );/* read the latched count */ count |=inb (0x40 ) <<8 ; -restore_flags (flags); +spin_unlock_irqrestore (&retry_lock, flags);return (LATCH - count);/* normal: downcounter */ #endif }
@@ -150,14 +150,13 @@int status;TRACE_FUN (ft_t_any); -save_flags (flags); -cli (); +spin_lock_irqsave (&retry_lock, flags); t0 =short_ftape_timestamp ();for (i =0 ; i <1000 ; ++i) { status =inb (fdc.msr); } t1 =short_ftape_timestamp (); -restore_flags (flags); +spin_unlock_irqrestore (&retry_lock, flags);TRACE (ft_t_info,"inb() duration: %d nsec" ,ftape_timediff (t0, t1));TRACE_EXIT ; }
@@ -241,8 +240,7 @@ *calibr_count = *calibr_time = count;/* set TC to 1 */ -save_flags (flags); -cli (); +spin_lock_irqsave (&retry_lock, flags);fun (0 );/* dummy, get code into cache */ t0 =short_ftape_timestamp ();fun (0 );/* overhead + one test */
@@ -252,7 +250,7 @@fun (count);/* overhead + count tests */ t1 =short_ftape_timestamp (); multiple =diff (t0, t1); -restore_flags (flags); +spin_unlock_irqrestore (&retry_lock, flags); time =ftape_timediff (0 , multiple - once); tc = (1000 * time) / (count -1 ); TRACE(ft_t_any, "once:%3d us,%6d times:%6d us, TC:%5d ns",
drivers/char/ftape/lowlevel/ftape-format.c +5 -3
@@ -44,6 +44,8 @@#define FT_FMT_SEGS_PER_BUF (FT_BUFF_SIZE/(4*FT_SECTORS_PER_SEGMENT))#endif +static spinlock_t retry_lock; +/* * first segment of the new buffer */
@@ -129,9 +131,9 @@ head->status = formatting; TRACE_CATCH(ftape_seek_head_to_track(track),); TRACE_CATCH(ftape_command(QIC_LOGICAL_FORWARD),); -save_flags (flags);cli (); -TRACE_CATCH (fdc_setup_formatting (head),restore_flags (flags)); -restore_flags (flags); +spin_lock_irqsave (&retry_lock, flags); +TRACE_CATCH (fdc_setup_formatting (head),spin_unlock_irqrestore (&retry_lock, flags)); +spin_unlock_irqrestore (&retry_lock, flags); TRACE_EXIT 0; }
drivers/char/ftape/lowlevel/ftape-io.c +4 -3
@@ -60,6 +60,8 @@static unsigned int ftape_udelay_count;static unsigned int ftape_udelay_time; +static spinlock_t retry_lock; +void ftape_udelay (unsigned int usecs) { volatile int count = (ftape_udelay_count * usecs +
@@ -94,8 +96,7 @@TRACE (ft_t_any,"%d msec, %d ticks" , time/1000 , ticks); timeout = ticks; -save_flags (flags); -sti (); +spin_lock_irqsave (&retry_lock, flags);set_current_state (TASK_INTERRUPTIBLE ); do { /* Mmm. Isn't current->blocked == 0xffffffff ?
@@ -109,7 +110,7 @@ timeout =schedule_timeout (timeout); } }while (timeout); -restore_flags (flags); +spin_unlock_irqrestore (&retry_lock, flags); }TRACE_EXIT ; }
drivers/char/tpqic02.c +3 -3
@@ -1453,6 +1453,7 @@ { int stat; unsigned long flags; + static spinlock_t lock; tpqputs(TPQD_DEBUG, "start_dma() enter"); TPQDEB( {printk(TPQIC02_NAME ": doing_read==%d, doing_write==%d\n",
@@ -1557,10 +1558,9 @@/* initiate first data block read from/write to the tape controller */ -save_flags (flags); -cli (); +spin_lock_irqsave (&lock, flags);dma_transfer (); -restore_flags (flags); +spin_unlock_irqrestore (&lock, flags);TPQPUTS ("start_dma() end" );return TE_OK ;
drivers/i2c/i2c-elektor.c +4 -2
@@ -114,15 +114,17 @@static void pcf_isa_waitforpin (void ) { +unsigned long flags; +static spinlock_t lock;int timeout =2 ;if (irq >0 ) { -cli (); +spin_lock_irqsave (&lock, flags);if (pcf_pending ==0 ) {interruptible_sleep_on_timeout (&pcf_wait, timeout*HZ ); }else pcf_pending =0 ; -sti (); +spin_unlock_irqrestore (&lock, flags); }else {udelay (100 ); }
kernel/ksyms.c +5 -0
@@ -606,5 +606,10 @@EXPORT_SYMBOL (__per_cpu_offset);#endif +#if defined(CONFIG_IP_NF_MATCH_OWNER_MODULE ) +EXPORT_SYMBOL (next_thread); +EXPORT_SYMBOL (find_task_by_pid); +#endif +/* debug */ EXPORT_SYMBOL (dump_stack);
net/netsyms.c +4 -0
@@ -585,6 +585,10 @@#endif #endif +#ifdef CONFIG_X25_MODULE +EXPORT_SYMBOL (sk_send_sigurg); +#endif +EXPORT_SYMBOL (register_gifconf);EXPORT_SYMBOL (net_call_rx_atomic);
--
http://www.techlinux.com.br/~carlos/tmp/2.5.40-3.diff
Signature · 6 lines
_________________________ Carlos E Gorges ([email protected]) Tech informática LTDA Brazil _________________________