Patchset of 171 patches is at http://coderock.org/kj/2.6.10-bk13-kj/ Quick patch summary: about 30 new, 30 merged, 30 dropped. Seems like most external trees are merged in -linus, so i'll start (re)sending old patches. new in this release: -------------------- msleep-drivers_atm_ambassador.patch From: Nishanth Aravamudan <nacc@us.ibm.com> Subject: [KJ] [UPDATE PATCH] atm/ambassador: use msleep() instead of schedule_timeout() msleep-drivers_ide_ide-cd.patch From: Nishanth Aravamudan <nacc@us.ibm.com> Subject: [KJ] [UPDATE PATCH] ide/ide-cd: use ssleep() instead of schedule_timeout() msleep-drivers_ieee1394_sbp2.patch From: Nishanth Aravamudan <nacc@us.ibm.com> Subject: [KJ] [UPDATE PATCH] ieee1394/sbp2: use ssleep() instead of schedule_timeout() msleep-drivers_net_cs89x0.patch From: Nishanth Aravamudan <nacc@us.ibm.com> Subject: [KJ] [PATCH 5/28] net/cs89x0: replace schedule_timeout() with msleep() msleep-drivers_net_wan_cosa.patch From: Nishanth Aravamudan <nacc@us.ibm.com> Subject: [KJ] [PATCH 4/28] net/cosa: replace schedule_timeout() with msleep() msleep_ssleep-drivers_net_wireless_airo.patch From: Nishanth Aravamudan <nacc@us.ibm.com> Subject: [KJ] [PATCH 3/28] net/airo: replace schedule_timeout() with msleep()/ssleep() typo_suppport-bttv_dvb.patch From: Carlo Perassi <carlo@linux.it> Subject: [KJ] [patch] trivial typos vfree-arch_ia64_sn_kernel_sn2_sn_hwperf.patch From: jlamanna@gmail.com Subject: [KJ] [PATCH] [RESEND] [11/29] sn_hwperf.c - vfree() checking cleanups vfree-arch_s390_kernel_module.patch From: jlamanna@gmail.com Subject: [KJ] [PATCH] [RESEND] [18/29] module.c - vfree() checking cleanups vfree-drivers_atm_idt77252.patch From: jlamanna@gmail.com Subject: [KJ] [PATCH] [RESEND] [26/29] idt77252.c - vfree() checking cleanups vfree-drivers_char_agp_backend.patch From: jlamanna@gmail.com Subject: [KJ] [PATCH] [RESEND] [23/29] backend.c - vfree() checking cleanups vfree-drivers_char_agp_generic.patch From: jlamanna@gmail.com Subject: [KJ] [PATCH] [RESEND] [28/29] generic.c - vfree() checking cleanups vfree-drivers_ieee1394_dma.patch From: jlamanna@gmail.com Subject: [KJ] [PATCH] [RESEND] [9/29] dma.c - vfree() checking cleanups vfree-drivers_isdn_hardware_eicon_platform.h.patch From: jlamanna@gmail.com Subject: [KJ] [PATCH] [RESEND] [2/29] platform.h - vfree() checking cleanups vfree-drivers_isdn_i4l_isdn_bsdcomp.patch From: jlamanna@gmail.com Subject: [KJ] [PATCH] [RESEND] [1/29] isdn_bsdcomp.c - vfree() checking cleanups vfree-drivers_media_dvb_dvb-core_dmxdev.patch From: jlamanna@gmail.com Subject: [KJ] [PATCH] [RESEND] [12/29] dmxdev.c - vfree() checking cleanups vfree-drivers_media_dvb_dvb-core_dvb_ca_en50221.patch From: jlamanna@gmail.com Subject: [KJ] [PATCH] [RESEND] [4/29] dvb_ca_en50221.c - vfree() checking cleanups vfree-drivers_media_dvb_dvb-core_dvb_demux.patch From: jlamanna@gmail.com Subject: [KJ] [PATCH] [RESEND] [20/29] dvb_demux.c - vfree() checking cleanups vfree-drivers_media_dvb_ttpci_av7110.patch From: jlamanna@gmail.com Subject: [KJ] [PATCH] [RESEND] [5/29] av7110.c - vfree() checking cleanups vfree-drivers_media_dvb_ttpci_av7110_ipack.patch From: jlamanna@gmail.com Subject: [KJ] [PATCH] [RESEND] [8/29] av7110_ipack.c - vfree() checking cleanups vfree-drivers_media_dvb_ttpci_budget-core.patch From: jlamanna@gmail.com Subject: [KJ] [PATCH] [RESEND] [27/29] budget-core.c - vfree() checking cleanups vfree-drivers_media_video_stradis.patch From: jlamanna@gmail.com Subject: [KJ] [PATCH] [RESEND] [24/29] stradis.c - vfree() checking cleanups vfree-drivers_scsi_qla2xxx_qla_os.patch From: jlamanna@gmail.com Subject: [KJ] [PATCH] [RESEND] [15/29] qla_os.c - vfree() checking cleanups vfree-drivers_usb_media_ov511.patch From: jlamanna@gmail.com Subject: [KJ] [PATCH] [RESEND] [25/29] ov511.c - vfree() checking cleanups vfree-drivers_video_sis_sis_main.patch From: jlamanna@gmail.com Subject: [KJ] [PATCH] [RESEND] [22/29] sis_main.c - vfree() checking cleanups vfree-fs_reiserfs_super.patch From: jlamanna@gmail.com Subject: [KJ] [PATCH] [RESEND] [19/29] super.c - vfree() checking cleanups vfree-mm_swapfile.patch From: jlamanna@gmail.com Subject: [KJ] [PATCH] [RESEND] [17/29] swapfile.c - vfree() checking cleanups vfree-net_bridge_netfilter_ebtables.patch From: jlamanna@gmail.com Subject: [KJ] [PATCH] [RESEND] [14/29] ebtables.c - vfree() checking cleanups vfree-sound_oss_gus_wave.patch From: jlamanna@gmail.com Subject: [KJ] [PATCH] [RESEND] [21/29] gus_wave.c - vfree() checking cleanups vfree-sound_oss_pss.patch From: jlamanna@gmail.com Subject: [KJ] [PATCH] [RESEND] [29/29] pss.c - vfree() checking cleanups kj_tag.patch -kj merged: ------- msleep-drivers_mtd_chips_amd_flash msleep-drivers_mtd_chips_cfi_cmdset_0002 msleep-drivers_mtd_chips_cfi_cmdset_0020 for-each-pci-dev-drivers_char_agp_generic for-each-pci-dev-drivers_char_agp_isoch msleep-drivers_scsi_ibmvscsi msleep_interruptible-drivers_net_e1000_e1000_ethtool msleep+msleep_interruptible-drivers_net_e100 pci_get_device-drivers_char_agp_amd64-agp pci_get_device-drivers_char_agp_intel-agp pci_get_device-drivers_char_agp_intel-mch-agp kconfig-arch_sh_drivers_pci msleep-sound_sparc_cs4231 typo-sound_isa_es18xx.c typos-arch_ppc_platforms_prep_setup.c typo-arch_ppc_syslib_ppc4xx_dma.c typo-arch_sh_boards_renesas_hs7751rvoip_io.c typo-drivers_char_ipmi_ipmi_si_intf.c typo-drivers_net_wireless_wavelan_cs.c typo-drivers_usb_net_usbnet.c typo-sound_isa_cs423x_cs4231_lib.c typo_au1000-arch_mips remove_file-fs_jfs_jfs_defragfs.h remove_file-include_asm_arm26_ian_char.h remove_file-include_sound_soundmem.h remove_file-net_sunrpc_auth_gss_gss_pseudoflavors.c remove_file-net_sunrpc_auth_gss_sunrpcgss_syms.c remove_file-sound_core_seq_oss_seq_oss_misc.c dropped: -------- remove_file-arch_alpha_lib_dbg_stackcheck.S remove_file-arch_alpha_lib_dbg_stackkill.S remove_file-arch_alpha_lib_stacktrace.c useful for debugging remove_file-arch_m68knommu_platform_68EZ328_ucsimm_crt0_himem.S.patch already deleted remove_file-arch_m68knommu_platform_68VZ328_ucdimm_crt0_himem.S.patch reworked, so no longer unused remove_file-drivers_net_gt64240eth.h will be used remove_file-drivers_video_riva_nv4ref.h documentation remove_file-include_asm_alpha_numnodes.h bogus patch remove_file-include_asm_um_arch_signal_i386.h remove_file-include_asm_um_archparam_i386.h remove_file-include_asm_um_archparam_ppc.h remove_file-include_asm_um_module_generic.h remove_file-include_asm_um_module_i386.h remove_file-include_asm_um_processor_i386.h remove_file-include_asm_um_processor_ppc.h remove_file-include_asm_um_ptrace_i386.h remove_file-include_asm_um_sigcontext_i386.h remove_file-include_asm_um_sigcontext_ppc.h remove_file-include_asm_um_system_i386.h remove_file-include_asm_um_system_ppc.h are used (symlinks) remove_file-include_linux_byteorder_pdp_endian.h completes the set of endian types remove_file-sound_pci_cs46xx_imgs_cwcemb80.h this dsp image could still be used remove_file-drivers_video_aty_xlinit.c used in -mm msleep-drivers_mtd_chips_cfi_cmdset_0001 not needed anymore msleep-drivers_net_e1000_e1000_osdep merged msleep_interruptible-drivers_net_gt96100eth a version of it merged module_parm-net_ne2k-pci module_parm-net_wireless_atmel_cs module_parm-net_wireless_orinoco module_parm-net_wireless_wavelan.p.h module_parm-net_wireless_wl3501_cs module_param-drivers_net_3c59x.c similar patch merged strlcpy-net_wireless_wavelan similar patch merged cleanup-drivers_media_radio_radio-sf16fmi.c needs reworking all patches: ------------ remove-old-ifdefs-aic7xxx_osm_pci.patch min-max-ide_ide-timing.h.patch list-for-each-entry-drivers_chan_kern.patch list-for-each-entry-drivers_macintosh_via-pmu.patch list-for-each-entry-drivers_net_ppp_generic.patch list-for-each-entry-fs_jffs_intrep.patch list-for-each-entry-fs_namespace.patch list-for-each-entry-safe-arch_i386_mm_pageattr.patch list-for-each-entry-safe-fs_coda_psdev.patch list-for-each-entry-safe-fs_dquot.patch list-for-each-fs_dcache.patch msleep-drivers_ide_ide-tape.patch pr_debug-drivers_block_umem.patch list-for-each-drivers_net_ipv6_ip6_fib.patch list-for-each-drivers_net_tulip_de4x5.patch min-max-arch_sh_boards_bigsur_io.patch min-max-arch_sh_cchips_hd6446x_hd64465_io.patch msleep-drivers_block_xd.patch msleep-drivers_ide_ide-cs.patch msleep_interruptible-drivers_base_dmapool.patch msleep_interruptible-drivers_block_cciss.patch msleep_interruptible-drivers_block_pcd.patch msleep_interruptible-drivers_block_pf.patch msleep_interruptible-drivers_block_pg.patch msleep_interruptible-drivers_block_pt.patch msleep_interruptible-drivers_cdrom_sonycd535.patch msleep_interruptible-drivers_macintosh_mediabay.patch set_current_state-drivers_block_swim3.patch set_current_state-drivers_block_swim_iop.patch add_module_version-drivers_net_8139cp.patch for-each-pci-dev-arch_i386_pci_acpi.patch for-each-pci-dev-arch_i386_pci_i386.patch function-string-arch-mips.patch msleep-drivers_media_radio_radio-zoltrix.patch msleep-drivers_net_3c505.patch msleep-drivers_net_irda_act200l-sir.patch msleep-drivers_net_irda_irtty-sir.patch msleep-drivers_net_irda_ma600-sir.patch msleep-drivers_net_irda_pcmcia_xirc2ps_cs.patch msleep-drivers_net_irda_sir_dev.patch msleep-drivers_net_ixgb_ixgb_osdep.patch msleep-drivers_net_ni65.patch msleep-drivers_net_ns83820.patch msleep-drivers_net_wireless_prism54_islpci_dev.patch msleep-drivers_scsi_ide-scsi.patch msleep-drivers_scsi_imm.patch msleep-drivers_scsi_osst.patch msleep-drivers_scsi_ppa.patch msleep-drivers_scsi_qla1280.patch msleep_interruptible-drivers_net_irda_tekram-sir.patch msleep_interruptible-drivers_net_ixgb_ixgb_ethtool.patch msleep_interruptible-drivers_net_pcnet32.patch msleep_interruptible-drivers_net_sb1000.patch msleep_interruptible-drivers_net_slip.patch msleep_interruptible-drivers_net_wan_cycx_drv.patch msleep_interruptible-drivers_parport_ieee1284_ops.patch msleep_interruptible-drivers_parport_ieee1284.patch msleep_interruptible-drivers_parport_parport_pc.patch msleep_interruptible-drivers_s390_net_ctctty.patch msleep_interruptible-drivers_sbus_char_aurora.patch msleep_interruptible-drivers_sbus_char_envctrl.patch msleep_interruptible-drivers_scsi_dpt_i2o.patch msleep_interruptible-drivers_scsi_st.patch msleep_interruptible-drivers_tc_zs.patch msleep+msleep_interruptible-drivers_net_tokenring_ibmtr.patch msleep+ssleep-drivers_net_appletalk_ltpc.patch pci_dev_present-arch_ia64_hp_common_sba_iommu.patch pci_dev_present-arch_ia64_pci_pci.patch pci_dev_present-drivers_ide_pci_alim15x3.patch remove-pci-find-device-arch_sparc64_kernel_ebus.patch remove-pci-find-device-drivers_net_e1000_e1000_main.patch remove-pci-find-device-drivers_net_gt96100eth.patch remove-pci-find-device-drivers_net_ixgb_ixgb_main.patch remove-pci-find-device-drivers_net_tg3.patch set_current_state-drivers_net_irda_stir4200.patch set_current_state-drivers_net_tokenring_tms380tr.patch set_current_state-drivers_net_wan_farsync.patch ssleep-drivers_net_wireless_orinoco_plx.patch ssleep-drivers_net_wireless_orinoco_tmd.patch ssleep+msleep_interruptible-drivers_net_tokenring_lanstreamer.patch fix-comment-fs_jbd_journal.patch lib-parser-fs_devpts_inode.patch msleep_interruptible-drivers_cdrom_sonycd535_2.patch msleep_interruptible-drivers_message_fusion_mptbase.patch msleep_interruptible-drivers_net_ewrk3.patch reorder-state-drivers_char_snsc.patch reorder-state-drivers_video_pxafb.patch reorder-state-drivers_video_sa1100fb.patch set_current_state-drivers_input_joystick_iforce_iforce-packets.patch ssleep-drivers_scsi_qla2xxx_qla_os.patch docs-fs_super.patch docs-kernel_sysctl.patch kconfig-arch_sparc64.patch myri_code_cleanup.patch printk-drivers-scsi-zalon.patch comment-drivers_block_floppy.c.patch schedule_cleanup-drivers_usb_class_usblp.c.patch typo-arch_ppc64_kernel_rtasd.c.patch remove_file-arch_arm26_boot_compressed_hw_bse.c.patch remove_file-arch_m68k_apollo_dn_debug.c.patch remove_file-arch_m68k_sun3x_sun3x_ksyms.c.patch remove_file-arch_mips_arc_salone.c.patch remove_file-arch_mips_pmc_sierra_yosemite_ht_irq.c.patch remove_file-arch_ppc64_boot_no_initrd.c.patch remove_file-arch_ppc_kernel_find_name.c.patch remove_file-arch_ppc_syslib_ppc4xx_pm.c.patch remove_file-arch_ppc_syslib_ppc4xx_serial.c.patch remove_file-arch_sh64_lib_old_checksum.c.patch remove_file-arch_um_include_umn.h.patch remove_file-arch_x86_64_lib_old_checksum.c.patch remove_file-drivers_char_hp600_keyb.c.patch remove_file-drivers_char_rio_cdproto.h.patch remove_file-drivers_char_rsf16fmi.h.patch remove_file-drivers_parport_parport_arc.c.patch remove_file-drivers_pcmcia_au1000_generic.c.patch remove_file-drivers_pcmcia_au1000_pb1x00.c.patch remove_file-drivers_scsi_dpt_dpt_osdutil.h.patch remove_file-fs_jffs2_histo.h.patch remove_file-include_asm_arm_arch_epxa10db_mode_ctrl00.h.patch remove_file-include_asm_arm_arch_epxa10db_pld_conf00.h.patch remove_file-include_asm_arm_hardware_linkup_l1110.h.patch remove_file-include_asm_m68k_atari_SCCserial.h.patch remove_file-include_asm_m68knommu_io_hw_swap.h.patch remove_file-include_asm_m68knommu_semp3.h.patch remove_file-include_asm_mips_gfx.h.patch remove_file-include_asm_mips_it8172_it8172_lpc.h.patch remove_file-include_asm_mips_mach_au1x00_au1100_mmc.h.patch remove_file-include_asm_mips_mipsprom.h.patch remove_file-include_asm_mips_ng1.h.patch remove_file-include_asm_mips_ng1hw.h.patch remove_file-include_asm_mips_riscos_syscall.h.patch remove_file-include_asm_parisc_bootdata.h.patch remove_file-include_asm_ppc64_iSeries_iSeries_fixup.h.patch remove_file-include_linux_netfilter_ipv4_ip_logging.h.patch remove_file-include_linux_netfilter_ipv6_ip6_logging.h.patch remove_file-include_linux_umsdos_fs_i.h.patch remove_file-sound_oss_maestro_tables.h.patch cleanup-drivers_media_radio_miropcm20-radio.c.patch cleanup-drivers_atm_he.c.patch array_size-fs_proc_base.c.bak.patch remove_sprintf-fs_proc_proc_tty.c.bak.patch msleep-drivers_atm_ambassador.patch msleep-drivers_ide_ide-cd.patch msleep-drivers_ieee1394_sbp2.patch msleep-drivers_net_cs89x0.patch msleep-drivers_net_wan_cosa.patch msleep_ssleep-drivers_net_wireless_airo.patch typo_suppport-bttv_dvb.patch vfree-arch_ia64_sn_kernel_sn2_sn_hwperf.patch vfree-arch_s390_kernel_module.patch vfree-drivers_atm_idt77252.patch vfree-drivers_char_agp_backend.patch vfree-drivers_char_agp_generic.patch vfree-drivers_ieee1394_dma.patch vfree-drivers_isdn_hardware_eicon_platform.h.patch vfree-drivers_isdn_i4l_isdn_bsdcomp.patch vfree-drivers_media_dvb_dvb-core_dmxdev.patch vfree-drivers_media_dvb_dvb-core_dvb_ca_en50221.patch vfree-drivers_media_dvb_dvb-core_dvb_demux.patch vfree-drivers_media_dvb_ttpci_av7110.patch vfree-drivers_media_dvb_ttpci_av7110_ipack.patch vfree-drivers_media_dvb_ttpci_budget-core.patch vfree-drivers_media_video_stradis.patch vfree-drivers_scsi_qla2xxx_qla_os.patch vfree-drivers_usb_media_ov511.patch vfree-drivers_video_sis_sis_main.patch vfree-fs_reiserfs_super.patch vfree-mm_swapfile.patch vfree-net_bridge_netfilter_ebtables.patch vfree-sound_oss_gus_wave.patch vfree-sound_oss_pss.patch kj_tag.patch
On Mon, Jan 10, 2005 at 05:47:03PM +0100, Domen Puncer wrote: > Patchset of 171 patches is at http://coderock.org/kj/2.6.10-bk13-kj/ > > Quick patch summary: about 30 new, 30 merged, 30 dropped. > Seems like most external trees are merged in -linus, so i'll start > (re)sending old patches. <snip> > all patches: > ------------ <snip> > msleep-drivers_scsi_ide-scsi.patch Please consider replacing with the following patch (just a minor change): Description: Use msleep() instead of schedule_timeout() to guarantee the task delays as expected. Remove set_current_state() as it is taken care of by msleep(). Signed-off-by: Nishanth Aravamudan <nacc@us.ibm.com> --- 2.6.10-v/drivers/scsi/ide-scsi.c 2004-12-24 13:35:01.000000000 -0800 +++ 2.6.10/drivers/scsi/ide-scsi.c 2005-01-05 14:23:05.000000000 -0800 @@ -46,6 +46,7 @@ #include <linux/slab.h> #include <linux/ide.h> #include <linux/scatterlist.h> +#include <linux/delay.h> #include <asm/io.h> #include <asm/bitops.h> @@ -1004,9 +1005,8 @@ static int idescsi_eh_reset (struct scsi /* ide_do_reset starts a polling handler which restarts itself every 50ms until the reset finishes */ do { - set_current_state(TASK_UNINTERRUPTIBLE); spin_unlock_irq(cmd->device->host->host_lock); - schedule_timeout(HZ/20); + msleep(50); spin_lock_irq(cmd->device->host->host_lock); } while ( HWGROUP(drive)->handler );
On Mon, Jan 10, 2005 at 05:47:03PM +0100, Domen Puncer wrote: > Patchset of 171 patches is at http://coderock.org/kj/2.6.10-bk13-kj/ > > Quick patch summary: about 30 new, 30 merged, 30 dropped. > Seems like most external trees are merged in -linus, so i'll start > (re)sending old patches. <snip> > msleep-drivers_scsi_imm.patch This patch should be dropped. The msleep() call will ignore waitqueue events set up by prepare_to_wait(). Thanks, Nish
On Mon, Jan 10, 2005 at 05:47:03PM +0100, Domen Puncer wrote: > Patchset of 171 patches is at http://coderock.org/kj/2.6.10-bk13-kj/ > > Quick patch summary: about 30 new, 30 merged, 30 dropped. > Seems like most external trees are merged in -linus, so i'll start > (re)sending old patches. <snip> > all patches: > ------------ <snip> > msleep-drivers_scsi_osst.patch Consider replacing with the following patch, as signals are not dealt with in the existing code: Description: Use msleep() instead of schedule_timeout() to guarantee the task delays as expected. Although TASK_INTERRUPTIBLE is used in the current code, there is no code dealing with an early return / signals_pending(). --- 2.6.10-v/drivers/scsi/osst.c 2004-12-24 13:34:45.000000000 -0800 +++ 2.6.10/drivers/scsi/osst.c 2005-01-05 14:23:05.000000000 -0800 @@ -1488,8 +1488,7 @@ static int osst_reposition_and_retry(OS_ osst_set_frame_position(STp, aSRpnt, frame + skip, 1); flag = 0; attempts--; - set_current_state(TASK_INTERRUPTIBLE); - schedule_timeout(HZ / 10); + msleep(100); } if (osst_get_frame_position(STp, aSRpnt) < 0) { /* additional write error */ #if DEBUG @@ -1550,7 +1549,7 @@ static int osst_reposition_and_retry(OS_ debugging = 0; } #endif - schedule_timeout(HZ / 10); + msleep(100); } printk(KERN_ERR "%s:E: Failed to find valid tape media\n", name); #if DEBUG
On Mon, Jan 10, 2005 at 05:47:03PM +0100, Domen Puncer wrote: > Patchset of 171 patches is at http://coderock.org/kj/2.6.10-bk13-kj/ > > Quick patch summary: about 30 new, 30 merged, 30 dropped. > Seems like most external trees are merged in -linus, so i'll start > (re)sending old patches. <snip> > all patches: > ------------ <snip> > msleep-drivers_scsi_ppa.patch Please drop this patch, as it incorrectly uses msleep() around waitqueues. > msleep-drivers_scsi_qla1280.patch Please conside replacing with the following patch: Description: Use ssleep() instead of schedule_timeout to guarantee the task delays as expected. Signed-off-by: Nishanth Aravamudan <nacc@us.ibm.com> --- 2.6.10-v/drivers/scsi/qla1280.c 2004-12-24 13:35:40.000000000 -0800 +++ 2.6.10/drivers/scsi/qla1280.c 2005-01-05 14:23:05.000000000 -0800 @@ -2939,7 +2939,7 @@ qla1280_bus_reset(struct scsi_qla_host * ha->bus_settings[bus].failed_reset_count++; } else { spin_unlock_irq(HOST_LOCK); - schedule_timeout(reset_delay * HZ); + ssleep(reset_delay); spin_lock_irq(HOST_LOCK); ha->bus_settings[bus].scsi_bus_dead = 0;
Sorry, forgot signed-off-by line.... On Mon, Jan 10, 2005 at 05:47:03PM +0100, Domen Puncer wrote: > Patchset of 171 patches is at http://coderock.org/kj/2.6.10-bk13-kj/ > > Quick patch summary: about 30 new, 30 merged, 30 dropped. > Seems like most external trees are merged in -linus, so i'll start > (re)sending old patches. <snip> > all patches: > ------------ <snip> > msleep-drivers_scsi_osst.patch Consider replacing with the following patch, as signals are not dealt with in the existing code: Description: Use msleep() instead of schedule_timeout() to guarantee the task delays as expected. Although TASK_INTERRUPTIBLE is used in the current code, there is no code dealing with an early return / signals_pending(). Signed-off-by: Nishanth Aravamudan <nacc@us.ibm.com> --- 2.6.10-v/drivers/scsi/osst.c 2004-12-24 13:34:45.000000000 -0800 +++ 2.6.10/drivers/scsi/osst.c 2005-01-05 14:23:05.000000000 -0800 @@ -1488,8 +1488,7 @@ static int osst_reposition_and_retry(OS_ osst_set_frame_position(STp, aSRpnt, frame + skip, 1); flag = 0; attempts--; - set_current_state(TASK_INTERRUPTIBLE); - schedule_timeout(HZ / 10); + msleep(100); } if (osst_get_frame_position(STp, aSRpnt) < 0) { /* additional write error */ #if DEBUG @@ -1550,7 +1549,7 @@ static int osst_reposition_and_retry(OS_ debugging = 0; } #endif - schedule_timeout(HZ / 10); + msleep(100); } printk(KERN_ERR "%s:E: Failed to find valid tape media\n", name); #if DEBUG
On Mon, Jan 10, 2005 at 05:47:03PM +0100, Domen Puncer wrote: > Patchset of 171 patches is at http://coderock.org/kj/2.6.10-bk13-kj/ > > Quick patch summary: about 30 new, 30 merged, 30 dropped. > Seems like most external trees are merged in -linus, so i'll start > (re)sending old patches. <snip> > msleep_interruptible-drivers_base_dmapool.patch Please replace with the following patch. msleep_interruptible() is not appropriate for this delay, as the waitqueue events will be missed. TASK_UNINTERRUPTIBLE should be used instead of TASK_INTERRUPTIBLE, though, as signals are not checked for. Signed-off-by: Nishanth Aravamudan <nacc@us.ibm.com> --- 2.6.10-v/drivers/base/dmapool.c 2004-12-24 13:35:28.000000000 -0800 +++ 2.6.10/drivers/base/dmapool.c 2005-01-10 12:05:08.000000000 -0800 @@ -293,7 +293,7 @@ restart: if (mem_flags & __GFP_WAIT) { DECLARE_WAITQUEUE (wait, current); - current->state = TASK_INTERRUPTIBLE; + set_current_state(TASK_UNINTERRUPTIBLE); add_wait_queue (&pool->waitq, &wait); spin_unlock_irqrestore (&pool->lock, flags);
On Mon, Jan 10, 2005 at 05:47:03PM +0100, Domen Puncer wrote: > Patchset of 171 patches is at http://coderock.org/kj/2.6.10-bk13-kj/ > > Quick patch summary: about 30 new, 30 merged, 30 dropped. > Seems like most external trees are merged in -linus, so i'll start > (re)sending old patches. <snip> > msleep_interruptible-drivers_block_cciss.patch Please consider replacing with the following patch: Description: Use msleep() instead of schedule_timeout() to guarantee the task delays as expected. TASK_INTERRUPTIBLE is used currently, however signals / early returns from schedule_timeout() are not checked for. Thus msleep() is more appropriate. Signed-off-by: Nishanth Aravamudan <nacc@us.ibm.com> --- 2.6.10-v/drivers/block/cciss.c 2004-12-24 13:35:39.000000000 -0800 +++ 2.6.10/drivers/block/cciss.c 2005-01-10 12:10:50.000000000 -0800 @@ -2430,8 +2430,7 @@ static int cciss_pci_init(ctlr_info_t *c scratchpad = readl(c->vaddr + SA5_SCRATCHPAD_OFFSET); if (scratchpad == CCISS_FIRMWARE_READY) break; - set_current_state(TASK_INTERRUPTIBLE); - schedule_timeout(HZ / 10); /* wait 100ms */ + msleep(100); /* wait 100ms */ } if (scratchpad != CCISS_FIRMWARE_READY) { printk(KERN_WARNING "cciss: Board not ready. Timed out.\n");
On Mon, Jan 10, 2005 at 05:47:03PM +0100, Domen Puncer wrote: > Patchset of 171 patches is at http://coderock.org/kj/2.6.10-bk13-kj/ > > Quick patch summary: about 30 new, 30 merged, 30 dropped. > Seems like most external trees are merged in -linus, so i'll start > (re)sending old patches. <snip> > msleep_interruptible-drivers_block_pcd.patch Please consider replacing with the following patch: Description: Use msleep()/ssleep() instead of schedule_timeout() to guarantee the task delays as expected. TASK_INTERRUPTIBLE is used in the original code, however there is no check on the return values / for signals, thus I believe TASK_UNINTERRUPTIBLE (and hence msleep()) is more appropriate. Signed-off-by: Nishanth Aravamudan <nacc@us.ibm.com> --- 2.6.10-v/drivers/block/paride/pcd.c 2004-12-24 13:35:39.000000000 -0800 +++ 2.6.10/drivers/block/paride/pcd.c 2005-01-10 12:20:29.000000000 -0800 @@ -534,12 +534,6 @@ static int pcd_tray_move(struct cdrom_de position ? "eject" : "close tray"); } -static void pcd_sleep(int cs) -{ - current->state = TASK_INTERRUPTIBLE; - schedule_timeout(cs); -} - static int pcd_reset(struct pcd_unit *cd) { int i, k, flg; @@ -549,11 +543,11 @@ static int pcd_reset(struct pcd_unit *cd write_reg(cd, 6, 0xa0 + 0x10 * cd->drive); write_reg(cd, 7, 8); - pcd_sleep(20 * HZ / 1000); /* delay a bit */ + msleep(20); /* delay a bit */ k = 0; while ((k++ < PCD_RESET_TMO) && (status_reg(cd) & IDE_BUSY)) - pcd_sleep(HZ / 10); + msleep(100); flg = 1; for (i = 0; i < 5; i++) @@ -592,7 +586,7 @@ static int pcd_ready_wait(struct pcd_uni if (!(((p & 0xffff) == 0x0402) || ((p & 0xff) == 6))) return p; k++; - pcd_sleep(HZ); + ssleep(1); } return 0x000020; /* timeout */ }
On Mon, Jan 10, 2005 at 05:47:03PM +0100, Domen Puncer wrote: > Patchset of 171 patches is at http://coderock.org/kj/2.6.10-bk13-kj/ > > Quick patch summary: about 30 new, 30 merged, 30 dropped. > Seems like most external trees are merged in -linus, so i'll start > (re)sending old patches. <snip> > msleep_interruptible-drivers_block_pf.patch Please consider replacing with the following patch: Description: Use msleep() instead of pf_sleep() to guarantee the task delays as expected. TASK_INTERRUPTIBLE is used in the original code, however there is no check on the return values / for signals, thus I believe TASK_UNINTERRUPTIBLE (and hence msleep()) is more appropriate. Remove the definition of pf_sleep(). Signed-off-by: Nishanth Aravamudan <nacc@us.ibm.com> --- 2.6.10-v/drivers/block/paride/pf.c 2004-12-24 13:35:01.000000000 -0800 +++ 2.6.10/drivers/block/paride/pf.c 2005-01-10 12:20:20.000000000 -0800 @@ -526,12 +526,6 @@ static void pf_eject(struct pf_unit *pf) #define PF_RESET_TMO 30 /* in tenths of a second */ -static void pf_sleep(int cs) -{ - current->state = TASK_INTERRUPTIBLE; - schedule_timeout(cs); -} - /* the ATAPI standard actually specifies the contents of all 7 registers after a reset, but the specification is ambiguous concerning the last two bytes, and different drives interpret the standard differently. @@ -546,11 +540,11 @@ static int pf_reset(struct pf_unit *pf) write_reg(pf, 6, 0xa0+0x10*pf->drive); write_reg(pf, 7, 8); - pf_sleep(20 * HZ / 1000); + msleep(20); k = 0; while ((k++ < PF_RESET_TMO) && (status_reg(pf) & STAT_BUSY)) - pf_sleep(HZ / 10); + msleep(100); flg = 1; for (i = 0; i < 5; i++)
Sorry, slightly inaccurate description... On Mon, Jan 10, 2005 at 05:47:03PM +0100, Domen Puncer wrote: > Patchset of 171 patches is at http://coderock.org/kj/2.6.10-bk13-kj/ > > Quick patch summary: about 30 new, 30 merged, 30 dropped. > Seems like most external trees are merged in -linus, so i'll start > (re)sending old patches. <snip> > msleep_interruptible-drivers_block_pcd.patch Please consider replacing with the following patch: Description: Use msleep()/ssleep() instead of pcd_sleep() to guarantee the task delays as expected. TASK_INTERRUPTIBLE is used in the original code, however there is no check on the return values / for signals, thus I believe TASK_UNINTERRUPTIBLE (and hence msleep()) is more appropriate. Remove definition of pcd_sleep(). Signed-off-by: Nishanth Aravamudan <nacc@us.ibm.com> --- 2.6.10-v/drivers/block/paride/pcd.c 2004-12-24 13:35:39.000000000 -0800 +++ 2.6.10/drivers/block/paride/pcd.c 2005-01-10 12:20:29.000000000 -0800 @@ -534,12 +534,6 @@ static int pcd_tray_move(struct cdrom_de position ? "eject" : "close tray"); } -static void pcd_sleep(int cs) -{ - current->state = TASK_INTERRUPTIBLE; - schedule_timeout(cs); -} - static int pcd_reset(struct pcd_unit *cd) { int i, k, flg; @@ -549,11 +543,11 @@ static int pcd_reset(struct pcd_unit *cd write_reg(cd, 6, 0xa0 + 0x10 * cd->drive); write_reg(cd, 7, 8); - pcd_sleep(20 * HZ / 1000); /* delay a bit */ + msleep(20); /* delay a bit */ k = 0; while ((k++ < PCD_RESET_TMO) && (status_reg(cd) & IDE_BUSY)) - pcd_sleep(HZ / 10); + msleep(100); flg = 1; for (i = 0; i < 5; i++) @@ -592,7 +586,7 @@ static int pcd_ready_wait(struct pcd_uni if (!(((p & 0xffff) == 0x0402) || ((p & 0xff) == 6))) return p; k++; - pcd_sleep(HZ); + ssleep(1); } return 0x000020; /* timeout */ }
Sorry, slightly inaccurate description... On Mon, Jan 10, 2005 at 05:47:03PM +0100, Domen Puncer wrote: > Patchset of 171 patches is at http://coderock.org/kj/2.6.10-bk13-kj/ > > Quick patch summary: about 30 new, 30 merged, 30 dropped. > Seems like most external trees are merged in -linus, so i'll start > (re)sending old patches. <snip> > msleep_interruptible-drivers_block_pt.patch Please consider replacing with the following patch: Description: Use msleep()/ssleep() instead of pt_sleep() to guarantee the task delays as expected. TASK_INTERRUPTIBLE is used in the original code, however there is no check on the return values / for signals, thus I believe TASK_UNINTERRUPTIBLE (and hence msleep()) is more appropriate. Remove definition of pt_sleep(). Change the units of the pause variable in pt_poll_dsc() to msecs, thus allowing the use of msleep(). Appropriately modify the three callers of pt_poll_dsc(). Signed-off-by: Nishanth Aravamudan <nacc@us.ibm.com> --- 2.6.10-v/drivers/block/paride/pt.c 2004-12-24 13:34:27.000000000 -0800 +++ 2.6.10/drivers/block/paride/pt.c 2005-01-10 12:23:43.000000000 -0800 @@ -401,12 +401,6 @@ static int pt_atapi(struct pt_unit *tape return r; } -static void pt_sleep(int cs) -{ - current->state = TASK_INTERRUPTIBLE; - schedule_timeout(cs); -} - static int pt_poll_dsc(struct pt_unit *tape, int pause, int tmo, char *msg) { struct pi_adapter *pi = tape->pi; @@ -416,7 +410,7 @@ static int pt_poll_dsc(struct pt_unit *t e = 0; s = 0; while (k < tmo) { - pt_sleep(pause); + msleep(pause); k++; pi_connect(pi); write_reg(pi, 6, DRIVE(tape)); @@ -445,7 +439,7 @@ static void pt_media_access_cmd(struct p return; } pi_disconnect(tape->pi); - pt_poll_dsc(tape, HZ, tmo, fun); + pt_poll_dsc(tape, 1000, tmo, fun); } static void pt_rewind(struct pt_unit *tape) @@ -474,11 +468,11 @@ static int pt_reset(struct pt_unit *tape write_reg(pi, 6, DRIVE(tape)); write_reg(pi, 7, 8); - pt_sleep(20 * HZ / 1000); + msleep(20); k = 0; while ((k++ < PT_RESET_TMO) && (status_reg(pi) & STAT_BUSY)) - pt_sleep(HZ / 10); + msleep(100); flg = 1; for (i = 0; i < 5; i++) @@ -512,7 +506,7 @@ static int pt_ready_wait(struct pt_unit if (!(((p & 0xffff) == 0x0402) || ((p & 0xff) == 6))) return p; k++; - pt_sleep(HZ); + ssleep(1); } return 0x000020; /* timeout */ } @@ -785,7 +779,7 @@ static ssize_t pt_read(struct file *filp while (count > 0) { - if (!pt_poll_dsc(tape, HZ / 100, PT_TMO, "read")) + if (!pt_poll_dsc(tape, 10, PT_TMO, "read")) return -EIO; n = count; @@ -886,7 +880,7 @@ static ssize_t pt_write(struct file *fil while (count > 0) { - if (!pt_poll_dsc(tape, HZ / 100, PT_TMO, "write")) + if (!pt_poll_dsc(tape, 10, PT_TMO, "write")) return -EIO; n = count;
Sorry, slightly inaccurate description... On Mon, Jan 10, 2005 at 05:47:03PM +0100, Domen Puncer wrote: > Patchset of 171 patches is at http://coderock.org/kj/2.6.10-bk13-kj/ > > Quick patch summary: about 30 new, 30 merged, 30 dropped. > Seems like most external trees are merged in -linus, so i'll start > (re)sending old patches. <snip> > msleep_interruptible-drivers_block_pg.patch Please consider replacing with the following patch: Description: Use msleep()/ssleep() instead of pg_sleep() to guarantee the task delays as expected. TASK_INTERRUPTIBLE is used in the original code, however there is no check on the return values / for signals, thus I believe TASK_UNINTERRUPTIBLE (and hence msleep()) is more appropriate. Change pg_sleep() to use TASK_UNINTERRUPTIBLE as well. Signed-off-by: Nishanth Aravamudan <nacc@us.ibm.com> --- 2.6.10-v/drivers/block/paride/pg.c 2004-12-24 13:35:25.000000000 -0800 +++ 2.6.10/drivers/block/paride/pg.c 2005-01-10 12:21:34.000000000 -0800 @@ -295,7 +295,7 @@ static inline u8 DRIVE(struct pg *dev) static void pg_sleep(int cs) { - current->state = TASK_INTERRUPTIBLE; + set_current_state(TASK_UNINTERRUPTIBLE); schedule_timeout(cs); } @@ -409,7 +409,7 @@ static int pg_reset(struct pg *dev) write_reg(dev, 6, DRIVE(dev)); write_reg(dev, 7, 8); - pg_sleep(20 * HZ / 1000); + msleep(20); k = 0; while ((k++ < PG_RESET_TMO) && (status_reg(dev) & STAT_BUSY))
On Mon, Jan 10, 2005 at 05:47:03PM +0100, Domen Puncer wrote: > Patchset of 171 patches is at http://coderock.org/kj/2.6.10-bk13-kj/ > > Quick patch summary: about 30 new, 30 merged, 30 dropped. > Seems like most external trees are merged in -linus, so i'll start > (re)sending old patches. <snip> > msleep_interruptible-drivers_cdrom_sonycd535.patch > msleep_interruptible-drivers_cdrom_sonycd535_2.patch These two patches are combined in the following, please replace. Description: Use msleep() instead of schedule_timeout() to guarantee the task delays as expected. Although TASK_INTERRUPTIBLE is used in the original code, the schedule_timeout() return conditions for such a state are not checked appropriately; therefore, TASK_UNINTERRUPTIBLE should be ok (and, hence, msleep()). Signed-off-by: Nishanth Aravamudan <nacc@us.ibm.com> --- 2.6.10-v/drivers/cdrom/sonycd535.c 2004-12-24 13:35:50.000000000 -0800 +++ 2.6.10/drivers/cdrom/sonycd535.c 2005-01-06 10:18:47.000000000 -0800 @@ -129,6 +129,7 @@ #include <linux/mm.h> #include <linux/slab.h> #include <linux/init.h> +#include <linux/delay.h> #define REALLY_SLOW_IO #include <asm/system.h> @@ -896,9 +897,8 @@ do_cdu535_request(request_queue_t * q) } if (readStatus == BAD_STATUS) { /* Sleep for a while, then retry */ - set_current_state(TASK_INTERRUPTIBLE); spin_unlock_irq(&sonycd535_lock); - schedule_timeout(RETRY_FOR_BAD_STATUS*HZ/10); + msleep(RETRY_FOR_BAD_STATUS*100); spin_lock_irq(&sonycd535_lock); } #if DEBUG > 0 @@ -1478,8 +1478,7 @@ static int __init sony535_init(void) /* look for the CD-ROM, follows the procedure in the DOS driver */ inb(select_unit_reg); /* wait for 40 18 Hz ticks (reverse-engineered from DOS driver) */ - set_current_state(TASK_INTERRUPTIBLE); - schedule_timeout((HZ+17)*40/18); + msleep(2222); inb(result_reg); outb(0, read_status_reg); /* does a reset? */
On Mon, Jan 10, 2005 at 05:47:03PM +0100, Domen Puncer wrote: > Patchset of 171 patches is at http://coderock.org/kj/2.6.10-bk13-kj/ > > Quick patch summary: about 30 new, 30 merged, 30 dropped. > Seems like most external trees are merged in -linus, so i'll start > (re)sending old patches. <snip> > msleep_interruptible-drivers_message_fusion_mptbase.patch Please consider replacing with the following patch: Description: Use ssleep() instead of schedule_timeout() to guarantee the task delays as expected. The original code does use TASK_INTERRUPTIBLE, but does not check for signals or early return from schedule_timeout() so ssleep() seems more appropriate. Signed-off-by: Nishanth Aravamudan <nacc@us.ibm.com> --- 2.6.10-v/drivers/message/fusion/mptbase.c 2004-12-24 13:35:50.000000000 -0800 +++ 2.6.10/drivers/message/fusion/mptbase.c 2005-01-05 14:23:05.000000000 -0800 @@ -3137,8 +3137,7 @@ mpt_diag_reset(MPT_ADAPTER *ioc, int ign /* wait 1 sec */ if (sleepFlag == CAN_SLEEP) { - set_current_state(TASK_INTERRUPTIBLE); - schedule_timeout(1000 * HZ / 1000); + ssleep(1); } else { mdelay (1000); }
On Mon, Jan 10, 2005 at 05:47:03PM +0100, Domen Puncer wrote: > Patchset of 171 patches is at http://coderock.org/kj/2.6.10-bk13-kj/ > > Quick patch summary: about 30 new, 30 merged, 30 dropped. > Seems like most external trees are merged in -linus, so i'll start > (re)sending old patches. <snip> > msleep_interruptible-drivers_net_sb1000.patch Please consider replacing with the following: Description: Use ssleep() instead of nicedelay() to guarantee the task delays as expected. Remove the prototype and definition of nicedelay(). This is a very weird function, because it is called to sleep in terms of usecs, but always sleeps for 1 second, completely ignoring the parameter. I have gone ahead and followed suit, just sleeping for a second in all cases, but maybe someone with the hardware could tell me if perhaps the paramter *should* matter. Additionally, nicedelay() is called in TASK_INTERRUPTIBLE state, but doesn't deal with signals in case these longer delays do not complete, so I believe ssleep() is more appropriate. Signed-off-by: Nishanth Aravamudan <nacc@us.ibm.com> --- 2.6.10-v/drivers/net/sb1000.c 2004-12-24 13:33:51.000000000 -0800 +++ 2.6.10/drivers/net/sb1000.c 2005-01-05 14:23:05.000000000 -0800 @@ -90,7 +90,6 @@ static int sb1000_close(struct net_devic /* SB1000 hardware routines to be used during open/configuration phases */ -static inline void nicedelay(unsigned long usecs); static inline int card_wait_for_busy_clear(const int ioaddr[], const char* name); static inline int card_wait_for_ready(const int ioaddr[], const char* name, @@ -254,13 +253,6 @@ static struct pnp_driver sb1000_driver = const int TimeOutJiffies = (875 * HZ) / 100; -static inline void nicedelay(unsigned long usecs) -{ - current->state = TASK_INTERRUPTIBLE; - schedule_timeout(HZ); - return; -} - /* Card Wait For Busy Clear (cannot be used during an interrupt) */ static inline int card_wait_for_busy_clear(const int ioaddr[], const char* name) @@ -475,7 +467,7 @@ sb1000_reset(const int ioaddr[], const c udelay(1000); outb(0x0, port); inb(port); - nicedelay(60000); + ssleep(1); outb(0x4, port); inb(port); udelay(1000); @@ -537,7 +529,7 @@ sb1000_activate(const int ioaddr[], cons const unsigned char Command0[6] = {0x80, 0x11, 0x00, 0x00, 0x00, 0x00}; const unsigned char Command1[6] = {0x80, 0x16, 0x00, 0x00, 0x00, 0x00}; - nicedelay(50000); + ssleep(1); if ((status = card_send_command(ioaddr, name, Command0, st))) return status; if ((status = card_send_command(ioaddr, name, Command1, st))) @@ -944,7 +936,7 @@ sb1000_open(struct net_device *dev) /* initialize sb1000 */ if ((status = sb1000_reset(ioaddr, name))) return status; - nicedelay(200000); + ssleep(1); if ((status = sb1000_check_CRC(ioaddr, name))) return status;
On Mon, Jan 10, 2005 at 05:47:03PM +0100, Domen Puncer wrote: > Patchset of 171 patches is at http://coderock.org/kj/2.6.10-bk13-kj/ > > Quick patch summary: about 30 new, 30 merged, 30 dropped. > Seems like most external trees are merged in -linus, so i'll start > (re)sending old patches. <snip> > msleep_interruptible-drivers_net_slip.patch Please consider replacing with the following: Description: Use msleep() instead of schedule_timeout() to guarantee the task delays as expected. While the original code does use TASK_INTERRUPTIBLE, it does not check for signals, so I believe msleep() is more appropriate. Signed-off-by: Nishanth Aravamudan <nacc@us.ibm.com> --- 2.6.10-v/drivers/net/slip.c 2004-12-24 13:35:49.000000000 -0800 +++ 2.6.10/drivers/net/slip.c 2005-01-05 14:23:05.000000000 -0800 @@ -75,6 +75,7 @@ #include <linux/if_arp.h> #include <linux/if_slip.h> #include <linux/init.h> +#include <linux/delay.h> #include "slip.h" #ifdef CONFIG_INET #include <linux/ip.h> @@ -1395,10 +1396,8 @@ static void __exit slip_exit(void) /* First of all: check for active disciplines and hangup them. */ do { - if (busy) { - set_current_state(TASK_INTERRUPTIBLE); - schedule_timeout(HZ / 10); - } + if (busy) + msleep(100); busy = 0; for (i = 0; i < slip_maxdev; i++) {
On Mon, Jan 10, 2005 at 05:47:03PM +0100, Domen Puncer wrote: > Patchset of 171 patches is at http://coderock.org/kj/2.6.10-bk13-kj/ > > Quick patch summary: about 30 new, 30 merged, 30 dropped. > Seems like most external trees are merged in -linus, so i'll start > (re)sending old patches. <snip> > msleep_interruptible-drivers_sbus_char_envctrl.patch Please consider updating to the following patch: Description: Use msleep_interruptible() instead of schedule_timeout() to guarantee the task delays as expected. Change the units of poll_interval to msecs as it is only used in this delay. Signed-off-by: Nishanth Aravamudan <nacc@us.ibm.com> --- 2.6.10-v/drivers/sbus/char/envctrl.c 2004-12-24 13:34:01.000000000 -0800 +++ 2.6.10/drivers/sbus/char/envctrl.c 2005-01-05 14:23:05.000000000 -0800 @@ -1007,7 +1007,7 @@ static int kenvctrld(void *__unused) return -ENODEV; } - poll_interval = 5 * HZ; /* TODO env_mon_interval */ + poll_interval = 5000; /* TODO env_mon_interval */ daemonize("kenvctrld"); allow_signal(SIGKILL); @@ -1016,10 +1016,7 @@ static int kenvctrld(void *__unused) printk(KERN_INFO "envctrl: %s starting...\n", current->comm); for (;;) { - current->state = TASK_INTERRUPTIBLE; - schedule_timeout(poll_interval); - - if(signal_pending(current)) + if(msleep_interruptible(poll_interval)) break; for (whichcpu = 0; whichcpu < ENVCTRL_MAX_CPU; ++whichcpu) {
On Mon, Jan 10, 2005 at 05:47:03PM +0100, Domen Puncer wrote: > Patchset of 171 patches is at http://coderock.org/kj/2.6.10-bk13-kj/ > > Quick patch summary: about 30 new, 30 merged, 30 dropped. > Seems like most external trees are merged in -linus, so i'll start > (re)sending old patches. <snip> > msleep_interruptible-drivers_scsi_st.patch Please consider updating to the following patch: Description: Use msleep_interruptible() instead of schedule_timeout() to guarantee the task delays as expected. Signed-off-by: Nishanth Aravamudan <nacc@us.ibm.com> --- 2.6.10-v/drivers/scsi/st.c 2004-12-24 13:35:01.000000000 -0800 +++ 2.6.10/drivers/scsi/st.c 2005-01-05 14:23:05.000000000 -0800 @@ -36,6 +36,7 @@ static char *verstr = "20041025"; #include <linux/moduleparam.h> #include <linux/devfs_fs_kernel.h> #include <linux/cdev.h> +#include <linux/delay.h> #include <asm/uaccess.h> #include <asm/dma.h> #include <asm/system.h> @@ -760,9 +761,7 @@ static int test_ready(struct scsi_tape * if (scode == NOT_READY) { if (waits < max_wait) { - set_current_state(TASK_INTERRUPTIBLE); - schedule_timeout(HZ); - if (signal_pending(current)) { + if (msleep_interruptible(1000)) { retval = (-EINTR); break; }
Nishanth Aravamudan wrote:
> @@ -475,7 +467,7 @@ sb1000_reset(const int ioaddr[], const c
> udelay(1000);
> outb(0x0, port);
> inb(port);
> - nicedelay(60000);
> + ssleep(1);
> outb(0x4, port);
> inb(port);
> udelay(1000);
> @@ -537,7 +529,7 @@ sb1000_activate(const int ioaddr[], cons
> const unsigned char Command0[6] = {0x80, 0x11, 0x00, 0x00, 0x00, 0x00};
> const unsigned char Command1[6] = {0x80, 0x16, 0x00, 0x00, 0x00, 0x00};
>
> - nicedelay(50000);
> + ssleep(1);
> if ((status = card_send_command(ioaddr, name, Command0, st)))
> return status;
> if ((status = card_send_command(ioaddr, name, Command1, st)))
> @@ -944,7 +936,7 @@ sb1000_open(struct net_device *dev)
> /* initialize sb1000 */
> if ((status = sb1000_reset(ioaddr, name)))
> return status;
> - nicedelay(200000);
> + ssleep(1);
> if ((status = sb1000_check_CRC(ioaddr, name)))
> return status;
Your conversion of nicedelay() -> ssleep() values is imprecise.
The author clearly intended the values to be different, right?
Jeff
On Mon, 10 Jan 2005 22:56:31 -0500, Jeff Garzik <jgarzik@pobox.com> wrote: > Nishanth Aravamudan wrote: > > @@ -475,7 +467,7 @@ sb1000_reset(const int ioaddr[], const c > > udelay(1000); > > outb(0x0, port); > > inb(port); > > - nicedelay(60000); > > + ssleep(1); > > outb(0x4, port); > > inb(port); > > udelay(1000); > > @@ -537,7 +529,7 @@ sb1000_activate(const int ioaddr[], cons > > const unsigned char Command0[6] = {0x80, 0x11, 0x00, 0x00, 0x00, 0x00}; > > const unsigned char Command1[6] = {0x80, 0x16, 0x00, 0x00, 0x00, 0x00}; > > > > - nicedelay(50000); > > + ssleep(1); > > if ((status = card_send_command(ioaddr, name, Command0, st))) > > return status; > > if ((status = card_send_command(ioaddr, name, Command1, st))) > > @@ -944,7 +936,7 @@ sb1000_open(struct net_device *dev) > > /* initialize sb1000 */ > > if ((status = sb1000_reset(ioaddr, name))) > > return status; > > - nicedelay(200000); > > + ssleep(1); > > if ((status = sb1000_check_CRC(ioaddr, name))) > > return status; > > > Your conversion of nicedelay() -> ssleep() values is imprecise. True, but this is what I attempted to allude to in the description of the patch: > > Remove the prototype and > > definition of nicedelay(). This is a very weird function, because it is > > called to sleep in terms of usecs, but always sleeps for 1 second, > > completely ignoring the parameter. I have gone ahead and followed suit, > > just sleeping for a second in all cases, but maybe someone with the > > hardware could tell me if perhaps the paramter *should* matter. > The author clearly intended the values to be different, right? Since I'm not the author, I'm not certain whether you are right or not. I was honestly very confused by nicedelay(). It is called with various 600000, 500000, 200000 usecs, but the function currently always requests a 1000000 usec delay (a full second of interruptible sleep). It just doesn't make any sense... I have sent messages regarding this function several times (and patches have existed for a while), but no one has had any comment. I appreciate your input greatly. What do you think? Thanks, Nish