Subject: [PATCH] 2.5.24 IDE 96


Ok, this should fix some pending issues...

Tue Jul 2 21:27:44 CEST 2002 ide-clean-96

- revert to previous (2.4.x + channel->lock) locking scheme

- bring back ide__sti() calls

- fix bug introduced in IDE 63 in ide_do_drive_cmd(), if action is ide_end
request should be added to end of queue not next to current request,
fortunately it is used only by ide-tape which is broken anyway

- fix bug introduced in IDE 94 in idedisk_do_request(), removal of
rq->special = ar; probably needed by PMAC and TCQ

- fix bug introduced in IDE 94 in do_request(), always setting IDE_BUSY
bit could lead to deadlock

- in check_crc_errors() do strict checking for UDMA modes

- clean double setting handler/timer hack

- remove CAP_SYS_ADMIN check from HDIO_GET* ioctls


Attachments:
ide-clean-96.diff (24.77 kB)

2002-07-15 21:34:36

by Alexander Hoogerhuis

[permalink] [raw]
Subject: Re: [PATCH] 2.5.24 IDE 96

I'm running 2.5.25-dj2 with IDE 97 and there are two problems with it
when running it all as modules, here's some info:

[root@lapper root]# lsmod | grep ide
ide-scsi 7936 0 (unused)
scsi_mod 97944 1 [ide-scsi]
ide-cd 29376 0
cdrom 31904 0 [ide-cd]
ide-disk 10880 4
ide-mod 79152 -12 [ide-scsi ide-cd ide-disk]
[root@lapper root]#

and,

[root@lapper root]# grep _IDE /home/alexh/src/linux/linux-2.5-misc/.config
CONFIG_IDE=m
# CONFIG_IDE_24 is not set
CONFIG_IDE_25=y
CONFIG_BLK_DEV_IDE=m
# CONFIG_BLK_DEV_HD_IDE is not set
CONFIG_BLK_DEV_IDEDISK=m
CONFIG_IDEDISK_MULTI_MODE=y
CONFIG_IDEDISK_STROKE=y
CONFIG_BLK_DEV_IDECS=m
CONFIG_BLK_DEV_IDECD=m
CONFIG_BLK_DEV_IDETAPE=m
CONFIG_BLK_DEV_IDEFLOPPY=m
CONFIG_BLK_DEV_IDESCSI=m
CONFIG_IDEPCI_SHARE_IRQ=y
CONFIG_BLK_DEV_IDEDMA_PCI=y
CONFIG_IDEDMA_PCI_AUTO=y
CONFIG_IDEDMA_ONLYDISK=y
CONFIG_BLK_DEV_IDEDMA=y
# CONFIG_BLK_DEV_IDE_TCQ is not set
# CONFIG_BLK_DEV_IDE_TCQ_DEFAULT is not set
CONFIG_IDEDMA_NEW_DRIVE_LISTINGS=y
# CONFIG_IDE_CHIPSETS is not set
# CONFIG_IDEDMA_IVB is not set
CONFIG_IDEDMA_AUTO=y
# CONFIG_CD_NO_IDESCSI is not set
[root@lapper root]#

The two problems are:

1. devices.c doesn't export two symbols, so depmod -a will not resolv
all symbols after compile, patch for it is here:

--- linux-2.5-clean/drivers/ide/device.c Wed Jun 19 04:11:52 2002
+++ linux-2.5-misc/drivers/ide/device.c Mon Jul 15 09:29:20 2002
@@ -79,6 +79,8 @@
ch->maskproc(drive);
}

+EXPORT_SYMBOL(ata_mask);
+
/*
* Spin until the drive is no longer busy.
*
@@ -232,6 +234,8 @@
OUT_BYTE(rf->high_cylinder, ch->io_ports[IDE_HCYL_OFFSET]);
}

+EXPORT_SYMBOL(ata_out_regfile);
+
/*
* Input a complete register file.
*/

2. From above, refcounting of module use is rather b0rken. ide-mod is
used -12 times for example.

Apart from that, the machines disk system will lock solid after about
2-3 hrs of up uptime, I'm trying to get some logs from that, but I
need to sort out the laptop keyboard to get to the SysRq key :)

mvh,
A

Bartlomiej Zolnierkiewicz <[email protected]> writes:

> Ok, this should fix some pending issues...
>
> Tue Jul 2 21:27:44 CEST 2002 ide-clean-96
>
> - revert to previous (2.4.x + channel->lock) locking scheme
>
> - bring back ide__sti() calls
>
> - fix bug introduced in IDE 63 in ide_do_drive_cmd(), if action is ide_end
> request should be added to end of queue not next to current request,
> fortunately it is used only by ide-tape which is broken anyway
>
> - fix bug introduced in IDE 94 in idedisk_do_request(), removal of
> rq->special = ar; probably needed by PMAC and TCQ
>
> - fix bug introduced in IDE 94 in do_request(), always setting IDE_BUSY
> bit could lead to deadlock
>
> - in check_crc_errors() do strict checking for UDMA modes
>
> - clean double setting handler/timer hack
>
> - remove CAP_SYS_ADMIN check from HDIO_GET* ioctls
>
>

--
Alexander Hoogerhuis | [email protected]
CCNP - CCDP - MCNE - CCSE | +47 908 21 485
"You have zero privacy anyway. Get over it." --Scott McNealy