On Tue, Jul 15, 2008 at 07:33:56AM +0200, Borislav Petkov wrote: > Hi Bart, > > i broke ide-floppy for Iomega ZIP drives with the last round of generic patches > and now it works only sometimes during write requests. The reason for it is that > the command issue path is not being delayed with a 50msec timeout, for details > see the comment in idefloppy_start_pc(). Anyway, attached is a fix that should > go into the -stable kernel too since the driver is now broken in 2.6.26. > > On a different note, the current pata tree on top of v2.6.25-2125-g50515af blows > up here with the following error: > > > [ 4.296729] Uniform Multi-Platform E-IDE driver > [ 4.297905] ICH4: IDE controller (0x8086:0x24cb rev 0x02) at PCI slot 0000:00:1f.1 > [ 4.297986] ACPI: PCI Interrupt 0000:00:1f.1[A] -> GSI 18 (level, low) -> IRQ 18 > [ 4.298153] ICH4: not 100% native mode: will probe irqs later > [ 4.298213] ide0: BM-DMA at 0xfc00-0xfc07 > [ 4.298282] ide1: BM-DMA at 0xfc08-0xfc0f > [ 4.561768] hda: QUANTUM FIREBALLlct10 20, ATA DISK drive > [ 4.816724] hdb: SAMSUNG SP2014N, ATA DISK drive > [ 4.867959] hda: drive side 80-wire cable detection failed, limiting max speed to UDMA33 > [ 4.868027] hda: UDMA/33 mode selected > [ 4.868441] hdb: UDMA/100 mode selected > [ 5.540683] hdc: IOMEGA ZIP 100 ATAPI, ATAPI FLOPPY drive > [ 5.795564] hdd: IC35L120AVV207-0, ATA DISK drive > [ 5.847295] hdd: host side 80-wire cable detection failed, limiting max speed to UDMA33 > [ 5.847362] hdd: UDMA/33 mode selected > [ 5.847715] ide0 at 0x1f0-0x1f7,0x3f6 on irq 14 > [ 5.855487] ide1 at 0x170-0x177,0x376 on irq 15 > [ 5.875927] ide_generic: please use "probe_mask=0x3f" module parameter for probing all legacy ISA IDE ports > [ 5.876012] ide_generic: I/O resource 0x1F0-0x1F7 not free. > [ 5.876074] ide_generic: I/O resource 0x170-0x177 not free. > [ 11.342504] hde: no response (status = 0xa1), resetting drive > [ 17.206535] hdf: no response (status = 0xa1), resetting drive > [ 17.614474] ------------[ cut here ]------------ > [ 17.614528] WARNING: at lib/kref.c:43 kref_get+0x1a/0x20() > [ 17.614586] Modules linked in: > [ 17.614681] Pid: 1, comm: swapper Not tainted 2.6.26 #33 > [ 17.614738] [<c01220e9>] warn_on_slowpath+0x41/0x7b > [ 17.614839] [<c02efa9a>] ? _spin_unlock_irq+0x2d/0x42 > [ 17.614980] [<c011d1e7>] ? finish_task_switch+0x47/0x94 > [ 17.615118] [<c011d1cb>] ? finish_task_switch+0x2b/0x94 > [ 17.615257] [<c02effa8>] ? __reacquire_kernel_lock+0x33/0x37 > [ 17.615396] [<c013d1d9>] ? trace_hardirqs_on+0xb/0xd > [ 17.615552] [<c013d1ad>] ? trace_hardirqs_on_caller+0xe1/0x102 > [ 17.615693] [<c013d1d9>] ? trace_hardirqs_on+0xb/0xd > [ 17.615830] [<c013d1d9>] ? trace_hardirqs_on+0xb/0xd > [ 17.615968] [<c013d1ad>] ? trace_hardirqs_on_caller+0xe1/0x102 > [ 17.616107] [<c01d86ae>] kref_get+0x1a/0x20 > [ 17.616204] [<c01d7c39>] kobject_get+0x12/0x17 > [ 17.616301] [<c01d7ce0>] kobject_add_internal+0x44/0x14f > [ 17.616399] [<c01d7e69>] kobject_add_varg+0x4a/0x4c > [ 17.617153] [<c01d7ed0>] kobject_add+0x43/0x49 > [ 17.617252] [<c022a5dd>] device_add+0x91/0x48e > [ 17.617353] [<c022a2aa>] ? device_initialize+0xd7/0xf8 > [ 17.617510] [<c022a9ec>] device_register+0x12/0x15 > [ 17.617606] [<c02376b1>] ide_host_register+0x284/0x537 > [ 17.617706] [<c0237af8>] ? ide_host_alloc_all+0x123/0x178 > [ 17.617845] [<c04227ba>] ide_generic_init+0x142/0x1e7 > [ 17.617946] [<c013d1d9>] ? trace_hardirqs_on+0xb/0xd > [ 17.618084] [<c013d1ad>] ? trace_hardirqs_on_caller+0xe1/0x102 > [ 17.618226] [<c013d1d9>] ? trace_hardirqs_on+0xb/0xd > [ 17.618363] [<c02efa9a>] ? _spin_unlock_irq+0x2d/0x42 > [ 17.618516] [<c011d1e7>] ? finish_task_switch+0x47/0x94 > [ 17.618655] [<c02effa8>] ? __reacquire_kernel_lock+0x33/0x37 > [ 17.618796] [<c013d1ad>] ? trace_hardirqs_on_caller+0xe1/0x102 > [ 17.618938] [<c013d1d9>] ? trace_hardirqs_on+0xb/0xd > [ 17.619077] [<c013d1ad>] ? trace_hardirqs_on_caller+0xe1/0x102 > [ 17.619218] [<c013d1d9>] ? trace_hardirqs_on+0xb/0xd > [ 17.619357] [<c02eeb4d>] ? mutex_unlock+0x8/0xa > [ 17.619512] [<c01a0334>] ? sysfs_addrm_finish+0x17/0x1cd > [ 17.619649] [<c02efb2e>] ? _spin_unlock+0x27/0x3c > [ 17.619788] [<c017bad9>] ? ifind+0x7e/0x88 > [ 17.619926] [<c019fdd8>] ? sysfs_ilookup_test+0x0/0x11 > [ 17.620068] [<c019ffa7>] ? sysfs_find_dirent+0x16/0x27 > [ 17.620206] [<c01a00a0>] ? sysfs_add_one+0x14/0x85 > [ 17.620344] [<c019fc8e>] ? sysfs_add_file_mode+0x4e/0x6d > [ 17.620502] [<c019fcbb>] ? sysfs_add_file+0xe/0x13 > [ 17.620637] [<c040d2eb>] kernel_init+0x127/0x257 > [ 17.620739] [<c0422678>] ? ide_generic_init+0x0/0x1e7 > [ 17.620879] [<c013d1ad>] ? trace_hardirqs_on_caller+0xe1/0x102 > [ 17.621019] [<c01dbe18>] ? trace_hardirqs_on_thunk+0xc/0x10 > [ 17.621159] [<c0102eb6>] ? restore_nocheck_notrace+0x0/0xe > [ 17.621298] [<c040d1c4>] ? kernel_init+0x0/0x257 > [ 17.621438] [<c040d1c4>] ? kernel_init+0x0/0x257 > [ 17.621591] [<c0103a8f>] kernel_thread_helper+0x7/0x10 > [ 17.621691] ======================= > [ 17.621759] ---[ end trace 01bb572fb1fb92e8 ]--- > [ 17.621835] BUG: unable to handle kernel paging request at 6f690074 > [ 17.621968] IP: [<6f690074>] > [ 17.622060] *pde = 00000000 > [ 17.622153] Oops: 0000 [#1] PREEMPT SMP > [ 17.622370] Modules linked in: > [ 17.622458] > [ 17.622506] Pid: 1, comm: swapper Tainted: G W (2.6.26 #33) > [ 17.622617] EIP: 0060:[<6f690074>] EFLAGS: 00010206 CPU: 0 > [ 17.622670] EIP is at 0x6f690074 > [ 17.622720] EAX: dfa1b5c8 EBX: c03e630c ECX: 6f690074 EDX: c01ec367 > [ 17.622774] ESI: dfa1b5c8 EDI: c069bd4c EBP: df82fc24 ESP: df82fc14 > [ 17.622884] DS: 007b ES: 007b FS: 00d8 GS: 0000 SS: 0068 > [ 17.622937] Process swapper (pid: 1, ti=df82e000 task=df830000 task.ti=df82e000) > [ 17.622992] Stack: c01ec382 c03e630c dfa1b614 00000000 df82fc34 c02e11c6 c03e630c dfa1b614 > [ 17.623379] df82fc44 c02e1255 dfa1b5e8 dfa1b5e8 df82fc74 c022a8cf dfa1b6e4 dfa1b6c0 > [ 17.623379] c03e630c dfa1b5e8 00000000 00000000 c022a2aa dfa1b5e8 dfa1b5e8 00000006 > [ 17.623379] Call Trace: > [ 17.623379] [<c01ec382>] ? pci_device_suspend+0x1b/0x4d > [ 17.623379] [<c02e11c6>] ? klist_node_init+0x36/0x3a > [ 17.623379] [<c02e1255>] ? klist_add_tail+0x12/0x38 > [ 17.623379] [<c022a8cf>] ? device_add+0x383/0x48e > [ 17.623379] [<c022a2aa>] ? device_initialize+0xd7/0xf8 > [ 17.623379] [<c022a9ec>] ? device_register+0x12/0x15 > [ 17.623379] [<c02376b1>] ? ide_host_register+0x284/0x537 > [ 17.623379] [<c0237af8>] ? ide_host_alloc_all+0x123/0x178 > [ 17.623379] [<c04227ba>] ? ide_generic_init+0x142/0x1e7 > [ 17.623379] [<c013d1d9>] ? trace_hardirqs_on+0xb/0xd > [ 17.623379] [<c013d1ad>] ? trace_hardirqs_on_caller+0xe1/0x102 > [ 17.623379] [<c013d1d9>] ? trace_hardirqs_on+0xb/0xd > [ 17.623379] [<c02efa9a>] ? _spin_unlock_irq+0x2d/0x42 > [ 17.623379] [<c011d1e7>] ? finish_task_switch+0x47/0x94 > [ 17.623379] [<c02effa8>] ? __reacquire_kernel_lock+0x33/0x37 > [ 17.623379] [<c013d1ad>] ? trace_hardirqs_on_caller+0xe1/0x102 > [ 17.623379] [<c013d1d9>] ? trace_hardirqs_on+0xb/0xd > [ 17.623379] [<c013d1ad>] ? trace_hardirqs_on_caller+0xe1/0x102 > [ 17.623379] [<c013d1d9>] ? trace_hardirqs_on+0xb/0xd > [ 17.623379] [<c02eeb4d>] ? mutex_unlock+0x8/0xa > [ 17.623379] [<c01a0334>] ? sysfs_addrm_finish+0x17/0x1cd > [ 17.623379] [<c02efb2e>] ? _spin_unlock+0x27/0x3c > [ 17.623379] [<c017bad9>] ? ifind+0x7e/0x88 > [ 17.623379] [<c019fdd8>] ? sysfs_ilookup_test+0x0/0x11 > [ 17.623379] [<c019ffa7>] ? sysfs_find_dirent+0x16/0x27 > [ 17.623379] [<c01a00a0>] ? sysfs_add_one+0x14/0x85 > [ 17.623379] [<c019fc8e>] ? sysfs_add_file_mode+0x4e/0x6d > [ 17.623379] [<c019fcbb>] ? sysfs_add_file+0xe/0x13 > [ 17.623379] [<c040d2eb>] ? kernel_init+0x127/0x257 > [ 17.623379] [<c0422678>] ? ide_generic_init+0x0/0x1e7 > [ 17.623379] [<c013d1ad>] ? trace_hardirqs_on_caller+0xe1/0x102 > [ 17.623379] [<c01dbe18>] ? trace_hardirqs_on_thunk+0xc/0x10 > [ 17.623379] [<c0102eb6>] ? restore_nocheck_notrace+0x0/0xe > [ 17.623379] [<c040d1c4>] ? kernel_init+0x0/0x257 > [ 17.623379] [<c040d1c4>] ? kernel_init+0x0/0x257 > [ 17.623379] [<c0103a8f>] ? kernel_thread_helper+0x7/0x10 > [ 17.623379] ======================= > [ 17.623379] Code: Bad EIP value. > [ 17.623379] EIP: [<6f690074>] 0x6f690074 SS:ESP 0068:df82fc14 > [ 17.630502] ---[ end trace 01bb572fb1fb92e8 ]--- > [ 17.630557] Kernel panic - not syncing: Attempted to kill init! > > I tracked the error down to the call to ide_register_port(hwif) in > ide-probe.c:ide_host_register() which does device_register(&hwif->gendev) and > the hwif->gendev->kobj seems unitialized thus the WARN_ON on its refcount in i mean hwif->gendev->kobj->parent here. > kref_get(). Will look into it more when i get some free time. > > -- > From: Borislav Petkov <petkovbb@xxxxxxxxx> > > Check the correct flags-location for set features. > > Signed-off-by: Borislav Petkov <petkovbb@xxxxxxxxx> > > --- > > diff --git a/drivers/ide/ide-atapi.c b/drivers/ide/ide-atapi.c > index 97cabfd..ddabad9 100644 > --- a/drivers/ide/ide-atapi.c > +++ b/drivers/ide/ide-atapi.c > @@ -257,7 +257,7 @@ ide_startstop_t ide_transfer_pc(ide_drive_t *drive, struct ide_atapi_pc *pc, > } > > /* Send the actual packet */ > - if ((pc->flags & IDE_DFLAG_ZIP_DRIVE) == 0) > + if ((drive->dev_flags & IDE_DFLAG_ZIP_DRIVE) == 0) > hwif->tp_ops->output_data(drive, NULL, rq->cmd, 12); > > return ide_started; > -- > Regards/Gruß, > Boris. -- Regards/Gruß, Boris. -- To unsubscribe from this list: send the line "unsubscribe linux-ide" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html