Messages in this thread | | | Date | Tue, 6 Jul 1999 10:43:46 -0500 (CDT) | From | "Andre M. Hedrick" <> | Subject | Re: [PATCH] 2.2.10-pre4 IDE config problems |
| |
Yep, I know.
Since there are lots of other kernel changes that this tied togather, things are a lot ugly. IDE/BLOCK are in the process to part directories. Since "block" is now more than 85% IDE, there has been a decision to slipt the tree again.
I respect you changes and suggestions; however, I differ with the out come.
The moving of CONFIG_BLK_DEV_IDEDMA_PCI and CONFIG_IDEDMA_AUTO will most likely break other archs in the kernel. I spent five (5) days thing why is this needed. The Config.in only relfects the ifdefs in the code. This is a change that Linus started and I finished.
On Tue, 6 Jul 1999, Andrzej Krzysztofowicz wrote:
> Hi, > I noticed that current (2.3.10-pre4) drivers/block/Config.in handling > of some IDE-related options does not properly handle old .config values > (i.e. uses old options when they should be ignored). > The simple example is (for i386 arch.): to disable CONFIG_PCI with following > options in old .config enabled: > > ============================== > CONFIG_EXPERIMENTAL=y > ... > CONFIG_PCI=y > ... > CONFIG_BLK_DEV_IDE=y > ... > CONFIG_BLK_DEV_IDEPCI=y > CONFIG_BLK_DEV_IDEDMA_PCI=y > CONFIG_IDEDMA_PCI_AUTO=y > ... > IDEDMA_PCI_EXPERIMENTAL=y > ... > CONFIG_BLK_DEV_ALI15X3=y > ... > CONFIG_BLK_DEV_IDEDMA=y > CONFIG_IDEDMA_AUTO=y > ... > CONFIG_BLK_DEV_IDE_MODES=y > ============================== > > You get: > > ============================== > # CONFIG_PCI is not set > ... > CONFIG_BLK_DEV_IDE=y > ... > CONFIG_BLK_DEV_IDEDMA=y # it bases on old values of CONFIG_BLK_DEV_IDEDMA_PCI > CONFIG_IDEDMA_AUTO=y # and CONFIG_IDEDMA_PCI_AUTO which are never > ... # undefined > CONFIG_BLK_DEV_IDE_MODES=y # as CONFIG_BLK_DEV_ALI15X3 is not undefined > # also ... > ============================== > > The similar problem appears always when somebody uses in a config condition > a variable: > - which may be not defined (for a specyfic configuration) and > - the condition for the same configuration is analysed during config > process. > It is a bug. > Of course, the problem disappears whan you call make config/menuconfig twice; > but this is not proper solution (IMHO) ... > > The following patch (long) fixes this problem by defining > CONFIG_BLK_DEV_IDEDMA, CONFIG_IDEDMA_AUTO and CONFIG_BLK_DEV_IDE_MODES > (separate define_bool()s) *only* when they should be defined (and with > default to "n"). It also removes duplicated condition in line 32 of > drivers/block/Config.in (same condition is examined in lines 17,19). > > Regards > Andrzej > ********************* PATCH ********************************* > --- linux/drivers/block/Config.in.orig Tue Jul 6 11:41:07 1999 > +++ linux/drivers/block/Config.in Tue Jul 6 12:01:14 1999 > @@ -17,6 +17,7 @@ > if [ "$CONFIG_BLK_DEV_IDE" = "n" ]; then > bool 'Old hard disk (MFM/RLL/IDE) driver' CONFIG_BLK_DEV_HD_ONLY > else > + define_bool CONFIG_BLK_DEV_IDE_MODES n > bool ' Use old disk-only driver on primary interface' CONFIG_BLK_DEV_HD_IDE > dep_tristate ' Include IDE/ATA-2 DISK support' CONFIG_BLK_DEV_IDEDISK $CONFIG_BLK_DEV_IDE > if [ "$CONFIG_BLK_DEV_IDEDISK" != "n" ]; then > @@ -29,125 +30,144 @@ > dep_tristate ' Include IDE/ATAPI TAPE support' CONFIG_BLK_DEV_IDETAPE $CONFIG_BLK_DEV_IDE > dep_tristate ' Include IDE/ATAPI FLOPPY support' CONFIG_BLK_DEV_IDEFLOPPY $CONFIG_BLK_DEV_IDE > dep_tristate ' SCSI emulation support' CONFIG_BLK_DEV_IDESCSI $CONFIG_BLK_DEV_IDE > - if [ "$CONFIG_BLK_DEV_IDE" != "n" ]; then > - bool ' CMD640 chipset bugfix/support' CONFIG_BLK_DEV_CMD640 > - if [ "$CONFIG_BLK_DEV_CMD640" = "y" ]; then > - bool ' CMD640 enhanced support' CONFIG_BLK_DEV_CMD640_ENHANCED > - fi > - if [ "$CONFIG_PCI" = "y" ]; then > - bool ' RZ1000 chipset bugfix/support' CONFIG_BLK_DEV_RZ1000 > - bool ' Generic PCI IDE chipset support' CONFIG_BLK_DEV_IDEPCI > - if [ "$CONFIG_BLK_DEV_IDEPCI" = "y" ]; then > - bool ' Generic PCI bus-master DMA support' CONFIG_BLK_DEV_IDEDMA_PCI > - if [ "$CONFIG_BLK_DEV_IDEDMA_PCI" = "y" ]; then > - bool ' Use PCI DMA by default when available' CONFIG_IDEDMA_PCI_AUTO > - if [ "$CONFIG_EXPERIMENTAL" = "y" ]; then > - bool ' Good-Bad DMA Model-Firmware (EXPERIMENTAL)' IDEDMA_NEW_DRIVE_LISTINGS > - bool ' Generic ATA-66 support (DANGEROUS)' CONFIG_IDEDMA_ULTRA_66 > - define_bool IDEDMA_PCI_EXPERIMENTAL y > - else > - define_bool IDEDMA_PCI_EXPERIMENTAL n > - fi > + bool ' CMD640 chipset bugfix/support' CONFIG_BLK_DEV_CMD640 > + if [ "$CONFIG_BLK_DEV_CMD640" = "y" ]; then > + define_bool CONFIG_BLK_DEV_IDE_MODES y > + bool ' CMD640 enhanced support' CONFIG_BLK_DEV_CMD640_ENHANCED > + fi > + define_bool CONFIG_BLK_DEV_IDEDMA n > + define_bool CONFIG_IDEDMA_AUTO n
This will break PPC and ARM because the are conditional flags dependent on the Config.in for other old and new ifdefs.
Trust me that it will get better.
> + if [ "$CONFIG_PCI" = "y" ]; then > + bool ' RZ1000 chipset bugfix/support' CONFIG_BLK_DEV_RZ1000 > + bool ' Generic PCI IDE chipset support' CONFIG_BLK_DEV_IDEPCI > + if [ "$CONFIG_BLK_DEV_IDEPCI" = "y" ]; then > + bool ' Generic PCI bus-master DMA support' CONFIG_BLK_DEV_IDEDMA_PCI > + if [ "$CONFIG_BLK_DEV_IDEDMA_PCI" = "y" ]; then > + define_bool CONFIG_BLK_DEV_IDEDMA y > + bool ' Use PCI DMA by default when available' CONFIG_IDEDMA_PCI_AUTO > + if [ "$CONFIG_IDEDMA_PCI_AUTO" = "y" ]; then > + define_bool CONFIG_IDEDMA_AUTO y > fi > - bool ' Boot off-board chipsets first support' CONFIG_BLK_DEV_OFFBOARD > - bool ' AEC6210 chipset support' CONFIG_BLK_DEV_AEC6210 > - if [ "$IDEDMA_PCI_EXPERIMENTAL" = "y" ]; then > - bool ' ALI M15x3 chipset support (EXPERIMENTAL)' CONFIG_BLK_DEV_ALI15X3 > - bool ' CMD646 chipset support (EXPERIMENTAL)' CONFIG_BLK_DEV_CMD646 > - bool ' CY82C693 chipset support (EXPERIMENTAL)' CONFIG_BLK_DEV_CY82C693 > - fi > - bool ' HPT34X chipset support' CONFIG_BLK_DEV_HPT34X > - if [ "$IDEDMA_PCI_EXPERIMENTAL" = "y" -a \ > - "$CONFIG_BLK_DEV_HPT34X" = "y" ]; then > - bool ' HPT34X DMA support (DANGEROUS)' CONFIG_BLK_DEV_HPT34X_DMA > + if [ "$CONFIG_EXPERIMENTAL" = "y" ]; then > + bool ' Good-Bad DMA Model-Firmware (EXPERIMENTAL)' IDEDMA_NEW_DRIVE_LISTINGS > + bool ' Generic ATA-66 support (DANGEROUS)' CONFIG_IDEDMA_ULTRA_66 > + define_bool IDEDMA_PCI_EXPERIMENTAL y > + else > + define_bool IDEDMA_PCI_EXPERIMENTAL n > fi > - bool ' Intel PIIXn chipsets support' CONFIG_BLK_DEV_PIIX > - if [ "$IDEDMA_PCI_EXPERIMENTAL" = "y" -a \ > - "$CONFIG_BLK_DEV_PIIX" = "y" ]; then > - bool ' PIIXn Tuning support (EXPERIMENTAL)' CONFIG_BLK_DEV_PIIX_TUNING > + fi > + bool ' Boot off-board chipsets first support' CONFIG_BLK_DEV_OFFBOARD > + bool ' AEC6210 chipset support' CONFIG_BLK_DEV_AEC6210 > + if [ "$IDEDMA_PCI_EXPERIMENTAL" = "y" ]; then > + bool ' ALI M15x3 chipset support (EXPERIMENTAL)' CONFIG_BLK_DEV_ALI15X3 > + bool ' CMD646 chipset support (EXPERIMENTAL)' CONFIG_BLK_DEV_CMD646 > + bool ' CY82C693 chipset support (EXPERIMENTAL)' CONFIG_BLK_DEV_CY82C693 > + if [ "$CONFIG_BLK_DEV_ALI15X3" = "y" -o \ > + "$CONFIG_BLK_DEV_CY82C693" = "y" ]; then > + define_bool CONFIG_BLK_DEV_IDE_MODES y > fi > + fi > + bool ' HPT34X chipset support' CONFIG_BLK_DEV_HPT34X > + if [ "$CONFIG_BLK_DEV_HPT34X" = "y" ]; then > + define_bool CONFIG_BLK_DEV_IDE_MODES y > if [ "$IDEDMA_PCI_EXPERIMENTAL" = "y" ]; then > - bool ' NS87415 chipset support (EXPERIMENTAL)' CONFIG_BLK_DEV_NS87415 > + bool ' HPT34X DMA support (DANGEROUS)' CONFIG_BLK_DEV_HPT34X_DMA > fi > - if [ "$CONFIG_EXPERIMENTAL" = "y" ]; then > - bool ' OPTi 82C621 chipset enhanced support (EXPERIMENTAL)' CONFIG_BLK_DEV_OPTI621 > + fi > + bool ' Intel PIIXn chipsets support' CONFIG_BLK_DEV_PIIX > + if [ "$CONFIG_BLK_DEV_PIIX" = "y" ]; then > + define_bool CONFIG_BLK_DEV_IDE_MODES y > + if [ "$IDEDMA_PCI_EXPERIMENTAL" = "y" ]; then > + bool ' PIIXn Tuning support (EXPERIMENTAL)' CONFIG_BLK_DEV_PIIX_TUNING > fi > - if [ "$CONFIG_BLK_DEV_IDEDMA_PCI" = "y" ]; then > - bool ' PROMISE PDC20246/PDC20262 support' CONFIG_BLK_DEV_PDC202XX > - if [ "$CONFIG_EXPERIMENTAL" = "y" -a \ > - "$CONFIG_BLK_DEV_PDC202XX" = "y" ]; then > - bool ' Special UDMA Feature (EXPERIMENTAL)' PDC202XX_FORCE_BURST_BIT > - bool ' Special Mode Feature (DANGEROUS)' PDC202XX_FORCE_MASTER_MODE > - fi > + fi > + if [ "$IDEDMA_PCI_EXPERIMENTAL" = "y" ]; then > + bool ' NS87415 chipset support (EXPERIMENTAL)' CONFIG_BLK_DEV_NS87415 > + fi > + if [ "$CONFIG_EXPERIMENTAL" = "y" ]; then > + bool ' OPTi 82C621 chipset enhanced support (EXPERIMENTAL)' CONFIG_BLK_DEV_OPTI621 > + if [ "$CONFIG_BLK_DEV_OPTI621" = "y" ]; then > + define_bool CONFIG_BLK_DEV_IDE_MODES y > fi > - if [ "$IDEDMA_PCI_EXPERIMENTAL" = "y" ]; then > - bool ' Tekram TRM290 chipset support (EXPERIMENTAL)' CONFIG_BLK_DEV_TRM290 > - bool ' VIA82C586 chipset support (EXPERIMENTAL)' CONFIG_BLK_DEV_VIA82C586 > + fi > + if [ "$CONFIG_BLK_DEV_IDEDMA_PCI" = "y" ]; then > + bool ' PROMISE PDC20246/PDC20262 support' CONFIG_BLK_DEV_PDC202XX > + if [ "$CONFIG_EXPERIMENTAL" = "y" -a \ > + "$CONFIG_BLK_DEV_PDC202XX" = "y" ]; then > + bool ' Special UDMA Feature (EXPERIMENTAL)' PDC202XX_FORCE_BURST_BIT > + bool ' Special Mode Feature (DANGEROUS)' PDC202XX_FORCE_MASTER_MODE > fi > fi > - if [ "$CONFIG_PPC" = "y" -o "$CONFIG_ARM" = "y" ]; then > - bool ' Winbond SL82c105 support' CONFIG_BLK_DEV_SL82C105 > + if [ "$IDEDMA_PCI_EXPERIMENTAL" = "y" ]; then > + bool ' Tekram TRM290 chipset support (EXPERIMENTAL)' CONFIG_BLK_DEV_TRM290 > + bool ' VIA82C586 chipset support (EXPERIMENTAL)' CONFIG_BLK_DEV_VIA82C586 > fi > fi > - if [ "$CONFIG_PMAC" = "y" -o "$CONFIG_ALL_PPC" = "y" ]; then > - bool ' Builtin PowerMac IDE support' CONFIG_BLK_DEV_IDE_PMAC > - if [ "$CONFIG_BLK_DEV_IDE_PMAC" != "n" ]; then > - bool ' PowerMac IDE DMA support' CONFIG_BLK_DEV_IDEDMA_PMAC > - if [ "$CONFIG_BLK_DEV_IDEDMA_PMAC" = "y" ]; then > - bool ' Use DMA by default' CONFIG_IDEDMA_PMAC_AUTO > - fi > - fi > - fi > - if [ "$CONFIG_ARCH_ACORN" = "y" ]; then > - bool ' ICS IDE interface support' CONFIG_BLK_DEV_IDE_ICSIDE > - if [ "$CONFIG_BLK_DEV_IDE_ICSIDE" = "y" ]; then > - bool ' ICS DMA support' CONFIG_BLK_DEV_IDEDMA_ICS > - if [ "$CONFIG_BLK_DEV_IDEDMA_ICS" = "y" ]; then > - bool ' Use ICS DMA by default' CONFIG_IDEDMA_ICS_AUTO > - fi > - fi > - bool ' RapIDE interface support' CONFIG_BLK_DEV_IDE_RAPIDE > - fi > - if [ "$CONFIG_BLK_DEV_IDEDMA_PCI" = "y" -o \ > - "$CONFIG_BLK_DEV_IDEDMA_PMAC" = "y" -o \ > - "$CONFIG_BLK_DEV_IDEDMA_ICS" = "y" ]; then > - define_bool CONFIG_BLK_DEV_IDEDMA y > - if [ "$CONFIG_IDEDMA_PCI_AUTO" = "y" -o \ > - "$CONFIG_IDEDMA_PMAC_AUTO" = "y" -o \ > - "$CONFIG_IDEDMA_ICS_AUTO" = "y" ]; then > - define_bool CONFIG_IDEDMA_AUTO y > - fi > - fi > - bool ' Other IDE chipset support' CONFIG_IDE_CHIPSETS > - if [ "$CONFIG_IDE_CHIPSETS" = "y" ]; then > - comment 'Note: most of these also require special kernel boot parameters' > - bool ' Generic 4 drives/port support' CONFIG_BLK_DEV_4DRIVES > - bool ' ALI M14xx support' CONFIG_BLK_DEV_ALI14XX > - bool ' DTC-2278 support' CONFIG_BLK_DEV_DTC2278 > - bool ' Holtek HT6560B support' CONFIG_BLK_DEV_HT6560B > - if [ "$CONFIG_BLK_DEV_IDEDISK" = "y" -a \ > - "$CONFIG_EXPERIMENTAL" = "y" ]; then > - bool ' PROMISE DC4030 support (EXPERIMENTAL)' CONFIG_BLK_DEV_PDC4030 > + if [ "$CONFIG_PPC" = "y" -o "$CONFIG_ARM" = "y" ]; then > + bool ' Winbond SL82c105 support' CONFIG_BLK_DEV_SL82C105 > + if [ "$CONFIG_BLK_DEV_SL82C105" = "y" ]; then > + define_bool CONFIG_BLK_DEV_IDE_MODES y > fi > - bool ' QDI QD6580 support' CONFIG_BLK_DEV_QD6580 > - bool ' UMC-8672 support' CONFIG_BLK_DEV_UMC8672 > fi > - if [ "$CONFIG_AMIGA" = "y" ]; then > - bool ' Amiga Gayle IDE interface support' CONFIG_BLK_DEV_GAYLE > - if [ "$CONFIG_EXPERIMENTAL" = "y" ]; then > - bool ' Amiga IDE Doubler support' CONFIG_BLK_DEV_IDEDOUBLER $CONFIG_BLK_DEV_GAYLE > + fi > + if [ "$CONFIG_PMAC" = "y" -o "$CONFIG_ALL_PPC" = "y" ]; then > + bool ' Builtin PowerMac IDE support' CONFIG_BLK_DEV_IDE_PMAC > + if [ "$CONFIG_BLK_DEV_IDE_PMAC" != "n" ]; then > + define_bool CONFIG_BLK_DEV_IDE_MODES y > + bool ' PowerMac IDE DMA support' CONFIG_BLK_DEV_IDEDMA_PMAC > + if [ "$CONFIG_BLK_DEV_IDEDMA_PMAC" = "y" ]; then > + define_bool CONFIG_BLK_DEV_IDEDMA y > + bool ' Use DMA by default' CONFIG_IDEDMA_PMAC_AUTO > + if [ "$CONFIG_IDEDMA_PMAC_AUTO" = "y" ]; then > + define_bool CONFIG_IDEDMA_AUTO y > + fi > fi > fi > - if [ "$CONFIG_ZORRO" = "y" -a "$CONFIG_EXPERIMENTAL" = "y" ]; then > - bool ' Buddha/Catweasel IDE interface support' CONFIG_BLK_DEV_BUDDHA > + fi > + if [ "$CONFIG_ARCH_ACORN" = "y" ]; then > + bool ' ICS IDE interface support' CONFIG_BLK_DEV_IDE_ICSIDE > + if [ "$CONFIG_BLK_DEV_IDE_ICSIDE" = "y" ]; then > + bool ' ICS DMA support' CONFIG_BLK_DEV_IDEDMA_ICS > + if [ "$CONFIG_BLK_DEV_IDEDMA_ICS" = "y" ]; then > + define_bool CONFIG_BLK_DEV_IDEDMA y > + bool ' Use ICS DMA by default' CONFIG_IDEDMA_ICS_AUTO > + if [ "$CONFIG_IDEDMA_ICS_AUTO" = "y" ]; then > + define_bool CONFIG_IDEDMA_AUTO y > + fi > + fi > fi > - if [ "$CONFIG_ATARI" = "y" ]; then > - bool ' Falcon IDE interface support' CONFIG_BLK_DEV_FALCON_IDE > + bool ' RapIDE interface support' CONFIG_BLK_DEV_IDE_RAPIDE > + fi > + bool ' Other IDE chipset support' CONFIG_IDE_CHIPSETS > + if [ "$CONFIG_IDE_CHIPSETS" = "y" ]; then > + define_bool CONFIG_BLK_DEV_IDE_MODES y > + comment 'Note: most of these also require special kernel boot parameters' > + bool ' Generic 4 drives/port support' CONFIG_BLK_DEV_4DRIVES > + bool ' ALI M14xx support' CONFIG_BLK_DEV_ALI14XX > + bool ' DTC-2278 support' CONFIG_BLK_DEV_DTC2278 > + bool ' Holtek HT6560B support' CONFIG_BLK_DEV_HT6560B > + if [ "$CONFIG_BLK_DEV_IDEDISK" = "y" -a \ > + "$CONFIG_EXPERIMENTAL" = "y" ]; then > + bool ' PROMISE DC4030 support (EXPERIMENTAL)' CONFIG_BLK_DEV_PDC4030 > fi > - if [ "$CONFIG_MAC" = "y" ]; then > - bool ' Macintosh Quadra/Powerbook IDE interface support' CONFIG_BLK_DEV_MAC_IDE > + bool ' QDI QD6580 support' CONFIG_BLK_DEV_QD6580 > + bool ' UMC-8672 support' CONFIG_BLK_DEV_UMC8672 > + fi > + if [ "$CONFIG_AMIGA" = "y" ]; then > + bool ' Amiga Gayle IDE interface support' CONFIG_BLK_DEV_GAYLE > + if [ "$CONFIG_EXPERIMENTAL" = "y" ]; then > + bool ' Amiga IDE Doubler support' CONFIG_BLK_DEV_IDEDOUBLER $CONFIG_BLK_DEV_GAYLE > fi > fi > + if [ "$CONFIG_ZORRO" = "y" -a "$CONFIG_EXPERIMENTAL" = "y" ]; then > + bool ' Buddha/Catweasel IDE interface support' CONFIG_BLK_DEV_BUDDHA > + fi > + if [ "$CONFIG_ATARI" = "y" ]; then > + bool ' Falcon IDE interface support' CONFIG_BLK_DEV_FALCON_IDE > + fi > + if [ "$CONFIG_MAC" = "y" ]; then > + bool ' Macintosh Quadra/Powerbook IDE interface support' CONFIG_BLK_DEV_MAC_IDE > + fi > fi > if [ "$CONFIG_MCA" = "y" ]; then > tristate 'PS/2 ESDI hard disk support' CONFIG_BLK_DEV_PS2 > @@ -199,20 +219,6 @@ > dep_tristate 'Parallel port IDE device support' CONFIG_PARIDE $CONFIG_PARIDE_PARPORT > if [ "$CONFIG_PARIDE" = "y" -o "$CONFIG_PARIDE" = "m" ]; then > source drivers/block/paride/Config.in > -fi > - > -if [ "$CONFIG_IDE_CHIPSETS" = "y" -o \ > - "$CONFIG_BLK_DEV_ALI15X3" = "y" -o \ > - "$CONFIG_BLK_DEV_CMD640" = "y" -o \ > - "$CONFIG_BLK_DEV_CY82C693" = "y" -o \ > - "$CONFIG_BLK_DEV_HPT34X" = "y" -o \ > - "$CONFIG_BLK_DEV_IDE_PMAC" = "y" -o \ > - "$CONFIG_BLK_DEV_OPTI621" = "y" -o \ > - "$CONFIG_BLK_DEV_PIIX" = "y" -o \ > - "$CONFIG_BLK_DEV_SL82C105" = "y" ]; then > - define_bool CONFIG_BLK_DEV_IDE_MODES y > -else > - define_bool CONFIG_BLK_DEV_IDE_MODES n > fi > > if [ "$CONFIG_BLK_DEV_HD_IDE" = "y" -o "$CONFIG_BLK_DEV_HD_ONLY" = "y" ]; then > ************************************************************* > -- > ======================================================================= > Andrzej M. Krzysztofowicz ankry@mif.pg.gda.pl > phone (48)(58) 347 14 61 > Faculty of Applied Phys. & Math., Technical University of Gdansk > > - > To unsubscribe from this list: send the line "unsubscribe linux-kernel" in > the body of a message to majordomo@vger.rutgers.edu > Please read the FAQ at http://www.tux.org/lkml/ >
Andre Hedrick The Linux IDE guy
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.rutgers.edu Please read the FAQ at http://www.tux.org/lkml/
| |