An error occurred fetching the project authors.
- 29 May, 2002 1 commit
-
-
Martin Dalecki authored
- Merge ide-probe.c and ide-features.c in to one single file. They are mutually doing basically the same and in esp. in case of the device ID retrieval there *is* quite a lot of code duplication between them. ide-geometry.c fits there as well. - Remove ide_xfer_verbose - it wasn't really used. - Don't allow check_partition to be more clever then the writer of a driver. It was interfering with drivers which check partitions as they go and finally if we want to spew something about it - we can do it ourself. - Eliminate ide_geninit(). We scan for partitions now inside the recently introduced attach method. register_disk() is broken by the way and 90% of places where it's used it is doing literally nothing. Either some one didn't finish some code or the code is basically just junk from the past. Anyway we grok the partitions now one by one as we detect the channels. - ide_driveid_update is gone. We don't report the drive id through /proc/ide and we don't have to update it any longer on the fly. Still someone out there complaining that it went away!? - Use the global driver spin-lock to protect data structure access in the ide_register_subdriver() function instead of blatantly disabling all interrupts.
-
- 28 May, 2002 1 commit
-
-
Martin Dalecki authored
- Replace ide_delay_50m with mdelay(50). There is absolutely no reason we should behave different behaviors whatever IDECS support is enabled or not. - Kill last parameter of ide_register_hw(). It should return a pointer to the interface registered later. - pdc202xx patches by Bartomiej onierkiewicz. - ServerWorks chi pset support cleanup by Andrej Panin. - Move temporarily ide_setup_ports to main.c unfold it in ide-pnp.c.
-
- 27 May, 2002 1 commit
-
-
Martin Dalecki authored
- Rewritten Artop host chip driver by Vojtech Pavlik. His log entries are: Cleanup whitespace. Remove superfluous chip entries in chip table. Remove global variables to allow more than one controller. Remove other forgotten stuff. This is a new driver for the Artop (Acard) controllers. It's completely untested, as I have never seen the hardware. However, I suspect it is much less broken than the previous one ... UDMA33 controller cannot detect 80-wire cable. - Separate ioctl handling out from ide.c. It's big enough. - Move atapi_read and atapi_write to the new atapi module. Fix the declaration of those functions. The data buffer did have the void * type! - Separate module handling code out from actual transfer handling code in to a new module called main.c. Slowly we are at the stage where the code indeed has to be organized logically and not just "sporadically" as was the case before. - Apply patch by Adam Richter for the ide-scsi.c attach method implementation. This particular driver is still broken due to generic SCSI layer issues. - Apply true modularization patch for qd65xx.c by Samuel Thibault. Here are his notes about it: Then, patch-modularize-2.[45] is a proposal for modularizing qd65xx.o. As a single module, one can choose to insmod it before being able to do some hdparm -p /dev/hd[a-d]. But one can't remove it while tuned, since selectproc may be needed. I am sorry I wasn't able to test it under 2.5 series, lacking a functionning kernel for my test computer, but it seemed to work perfectly under 2.4 series, and patches are almost the same. - Move PCI device id's to where they belong. Patch by Vojtech Pavlik. - Don't use BH_Lock in ide-tape.c - somehow this driver scares me sometimes.
-
- 17 May, 2002 4 commits
-
-
Martin Dalecki authored
Let's just get over with this before queue handling will be targeted again... - Implement suggestions by Russell King for improved portability and separation between PCI and non PCI host code. - pdc202xxx updates from Thierry Vignaud. - Tiny PIO fix from Tomita.
-
Martin Dalecki authored
- Propagate the queue handling changes to pmac as well. - Move set_transfer to ide-taskfile.c this is the only place where it's used and it can be made static there. Same applies to ide_ata66_check(). - Move ide_auto_reduce_xfer to ide.c. - Make ide_cmd() local to the only place where it's used. Rename it to drive_cmd(). Don't pass drive_cmd_intr() as parameter. - Remove ide_next command completion type. Nobody is using it. - Move ide_do_drive_cmd to ide-taskfile. It's used there and in sub-drivers. Not in ide.c. The usage inside the device type drivers is entirely bogus inconsistent and so on... - Kill bogus IRQ masking code. The kernel is supposed to handle this properly. We should not try to work against possible bugs in the overall irq handling code. Wow this is increasing the systems overall responsibility by a significant margin. - Remove disfunctional pdcadma code. It is only misleading to the user.
-
Martin Dalecki authored
- Streamline device detection reporting to always use ->slot_name. - Apply 64 bit sector size fixes to the overall code. - Push ->handler down to the struct ata_channel. - Introduce channel group based locking instead of a single global lock for all operations. There are still some places where we have preserved the ide_lock. We can't lock for queues during device probe and we protect global data structures during device registration and unregistration in ide.c with it. - Start replacement of serialized access to the registers of channels which share them with proper host chip driver specific locking. This affects the following host chip drivers: cmd640.c, rz1000, ... ? Seems some are setting the serialize flag just in case. So better let's do it gradually over time. Well, I still have to think whatever we really need to put channels sharing an IRQ line in the same locking group. From now on the sick concept of a hw group is gone now. We have full blown per channel request queues! Hopefully I will be able soon to get my hands on a dual Athlon machine to check how this all behaves on a multi SMP machine. - Move the whole SUPPORT_VLB_SYNC stuff to the only place where it is used: the pdc4030 host chip driver. Eliminate it from the global driver part. - Eliminate pseudo portability macros from pdc4030. This is a host chip firmly based on VLB.
-
Martin Dalecki authored
- Fix typo in pdc202xx driver. - Fix locking order in ioctl. - Fix wrong time_after usage introduced in 60. Maybe the fact I always get is wrong is related to the fact that I'm using the mouse with the left hand!? - Apply arch-clean-2 by Bartlomiej Zolnierkiewicz. - Don't disable interrupts during ide_wait_stat(). I see no reason too. - Push flags down from hwgroup to the ata_chaannel structure. - Apply small fixes from Franz Sirl to make AEC6280 working properly again.
-
- 11 May, 2002 1 commit
-
-
Martin Dalecki authored
- Rewrite ioctl handling. - Apply fix for hpt366 "hang on boot" by Andre. - Remove stale XXX_tune_req. It was no longer used. - Propagate rq through ide_error(), ide_end_drive_cmd(), ide_dump_status(), ide_wait_stat(). - Push the current drive down to ata_channel from hwgroup. - Push the timer down to the ata_channel structure. Most probably it will end at the drive.
-
- 07 May, 2002 2 commits
-
-
Martin Dalecki authored
- m68k fixes by Roman Zippel. - CDROM PIO mode fix by Osamu Tamita. (You are true "Hawk-eye" hovering over my head! Respect - and many Thanks.) - Virtualize the udma_enable method as well to help ARM and PPC people. Please please if you would like to have some other methods virtualized in a similar way - just tell me or even better do it yourself at the end of ide-dma.c. I *don't mind* patches. - Fix the pmac code to adhere to the new API. It's supposed to work again. However this is blind coding... I give myself 80% chances for it to work ;-).
-
Martin Dalecki authored
- Push poll_timeout down from the hwgroup to the channel. We are resetting the channel and not a whole hwgroup. This way using multiple pdc202xxx cards should magically start to work with multiple performance and resets will no longer lock the system. - Updates for PDC4030 by Peter Denison <peterd@marshadder.uklinux.net>. - Make ide_raw_taskfile don't care about request buffers. They where always NULL. - Port set multi mode count over from the special setting interface to ide_raw_taskfile. Fix errors in the corresponding interrupt handler in one go as well. It turned out that this is precisely the same code as in task_no_data_intr, so we can nuke it altogether. And finally we have found some problems with the set_pio_mode() command which can fail with -EBUSY - this is in esp. probably *very* common during boot hdparm usage those days! (OK it was masked by reportig too early that it finished... Crap Crap utter crap it was!!!) Right now hdparm should just be extendid to properly sync and retry on -EBUSY and everything should be fine. And now the 1 Milion EUR question for everybody who loves to put driver settings in to /proc: How the hell could echo > /proc/ide/ide0/settings blah blah blah blah handle properly cases like -EIO, -EBUSY and so on??? Having the possibility o do it does not mean that it is a good idea to use it. OK. After realizing the simple fact that quite a lot of low level hardware manipulating ioctls may require assistance in usage from proper logic which is *very* unlikely to be implemented in a bash (for me preferable still ksh) I have made my mind up. /proc/ide will be nuked. - Execute the recalibration for error recovery on precisely the same request as the one which failed. - Remove set geometry. It's crap by means of standard specification. Because: 1. We rely on the existence of the identify command anyway. 2. This command was obsoleted *before* the identify command existed as far as I can see. 2. I'm able to have a look at what other ATA/ATAPI drivers in the wild do: They don't do it. - Just call tuneproc in set_pio_mode() directly - we are already behind the rq queue there. - After we have uncovered the broken logics behind the whole ioctl handling we now just have made ide_spin_wait_hwgroup() waiting for a proper somehow longer timeout before giving up. This was previously just hiding the broken concept of setting ioctl values through /proc/ide/ideX/settings - now it just really helps hdparm to not to give up too early. (It shouldn't probably play wreck havock on the global driver spin lock as well. I will look in to this later.) - Scrap the non necessary, to say the least, disabling of interrupts for 3, read it again please, 3 seconds, on the local CPU inside ide_spin_wait_hwgroup(). Spin lock handling needs checking there badly as I see now as well... Hey apparently any "special" requests are gone. We now have only to deal with REQ_DEVICE_ACB and REQ_DEVICE_CMD. One of them is still too much and will be killed.
-
- 06 May, 2002 1 commit
-
-
Martin Dalecki authored
- Update HPT374 driver carried over from 2.4.xx series by Andrew Morton. Resync it with the recent host chip driver changes, or better the introduction of an API at all. - Consolidate the handling of device ID byte order in one place. This was spotted and patched by Bartomiej onierkiewicz. - Eliminate CONFIG_BLK_DEV_IDEPCI - it's duplicating the functionality of the already present and fine CONFIG_PCI flag and if we are a PCI host, we are indeed very likely to need host chip support anyway. - Remove some redundant info about the model and channel number from /proc/ide. Remove the binary entries not helpful to the user, and not used by any program and redundant to corresponding ioctls. - Properly return udma_read and udma_write values in taskfile. - Only initialize XXX_udma to the default handlers if it has not been initialized by the host chip initialization. I have enabled spin lock debugging and can see that on device flush the spin locks get wrong counts... no problems elsewher ethus far. I will re check them next time around.
-
- 05 May, 2002 3 commits
-
-
Martin Dalecki authored
- Finish the changes from patch 53. ide_dma_actaion_t is gone now as well as whole hidden code paths associated with it. I hope I didn't mess too many things up with this, since the sheer size of the changes make them sensitive. (Tested on tree different host chip sets so it shouldn't be too bad...) Just still some minor cleanup remaining to be done in this area. The tags lefts there are intentional. In esp. the ide_dma_on method in cy82c693 looks suspicious. Using udma_enable in ide-cd.c, ide-floppy.c and ide-tape.c is suspicious as well. We have just uncovered it. In the next round we will concentrate on the fixes people did send me last time.
-
Martin Dalecki authored
- Start splitting the functions for host chip handling in to separate entities. This change is quite sensitive and may cause some trouble but it's for certain worth it anyway, because it should for example provide a much better infrastructure for th handling of different architectures.
-
Martin Dalecki authored
Adapted from patch Bar³omiej ¯o³nierkiewicz: - make straight8 a flag in ata_channel instead of byte - don't store tables as code in drive_is_flashcard() and ide_xfer_verbose() - fix init_gendisk() (due to 2.5.13 blksize_size[] change) - compress region requesting/releasing in channel_probe() and ide_unregister() - clean a bit ide_setup_ports() Start of DMA handling tratment. - Fix the parameters to ide_build_dmatable() to be channel and request. Rename it to udma_new_table(). udma will mark arch specific functions later. - Let ide_start_dma() take the request directly as an arguemnt. Rename it to ata_start_dma(). After realizing that the usage of the func argument of it was bogous and that nobody is using rwproc we where able to remove both of them. - Fix ide_destroy_dmatable() to take the channel as argument and rename it to udma_destroy_table(). This function should have possible architecture specific implementation as well at some point in time. - Split up the TCQ UDMA handling stuff in to proper functions. Jens must has been dreaming as he introduced them ;-).
-
- 04 May, 2002 1 commit
-
-
Osamu Tomita authored
I found this bug in 2.5.10 first. And caused ext2 FS corruption. We are porting Linux to PC-9801 architecture (made by NEC Japan). It has PIO ONLY IDE I/F. So please check PIO mode too. It was introduced in 2.5.9 and still exists in 2.5.13, and caused superblock corruption for Andries. This fixes it.
-
- 03 May, 2002 1 commit
-
-
Martin Dalecki authored
- Synchronize with Jens. Applying tons of janitorian stuff to his TCQ code. Making functions static where appropriate and so on... Marking the config entry for it experimental and so on. His changelog: 2.5.13 now has the generic tag support that I wrote included, here's an IDE TCQ that uses that. Changes since the version posted for 2.5.12: Fix the ide_tcq_invalidate_queue() WIN_NOP usage needed to clear the internal queue on errors. It was disabled in the last version due to the ata_request changes, it should work now. Remove Promise tcq disable check, it works just fine on Promise as long as we handle the two-drives-with-tcq case like we currently do.
-
- 30 Apr, 2002 2 commits
-
-
Martin Dalecki authored
Tue Apr 30 13:23:13 CEST 2002 ide-clean-48 This fixes the "performance" degradation partially, becouse we don't miss that many jiffies in choose_urgent_device() anymore. However choose_urgent_device has to be fixed for the off by one error to don't loop for a whole 1/100 second before submitting the next request. - Include small declaration bits for Jens. (WIN_NOP fix in esp.) - Fix ide-pmac to conform to the recent API changes. - Prepare and improve the handling of the request queue. It sucks now as many request as possible. This is improving the performance.
-
Martin Dalecki authored
- Remove the specific CONFIG_IDEDMA_PCI_WIP in favor of using the generic CONFIG_EXPERIMENTAL tag. (Pointed out by Vojtech Pavlik). - Change the signature of the IRQ handler to take the request directly as a parameter. This doesn't blow the code up but makes it much more obvious and finally it's reducing the number of side effects of the hwgroup->rq field. - A second sharp look after the above change allowed us to remove the wrq field from the hwgroup struct. It's just not used at all. - Change the signature of the end_request member of struct ata_operations to take the request as a second argument. Similar for __ide_end_request() and ide_end_request(). - Remove BUG_ON() items just before ide_set_handler(). The check in ide_set_handler is clever enough now. - Remove the rq subfield from ide-scsi packet structure. We have now the request context always in place. Same for floppy. - Let the timer expiry function take the request as a direct argument. Yes I know those changes are extensive. But they are a necessary step in between for the following purposes: - Consolidate the whole ATA/ATAPI stuff on passing a single unified request handling object. Because after eliminating those side effects it's far easier to see what's passed where. - Minimizing the amount of side effects in the overall code. That's a good thing anyway and it *doesn't* cost us neither performance nor space, since the stack depths are small anyway here. - Minimizing the usage of hwgroup - which should go away if possible.
-
- 26 Apr, 2002 1 commit
-
-
Martin Dalecki authored
- Streamline the usage of sector_t over the strategy routines in question a bit. Streamline the do_request code in ide-disk.c. - Improve the readability of start_request in ide.c. - Remove obsolete/nowhere used stuff from hdreg.h. - Splitup special_t into classical flag field. - Use only a single field to determine the capacity of a drive. Make this field and the code paths it follows as far as possible use the sector_t instead of a hard coded integer types. This increases the chances that at some distant point in time we will indeed be able to use 64 bit wide sector_t entities. (Disks are getting huge those times now...)
-
- 25 Apr, 2002 1 commit
-
-
Martin Dalecki authored
- Revoke the TCQ stuff. Well having it for some time showed just nicely what has to be done before it can be included cleanly. But it's just not ready yet. For more explanations please simply track the usage of the special field of struct request - *both* in the generic request handling code and in overall driver code.
-
- 19 Apr, 2002 1 commit
-
-
Jens Axboe authored
- (tcq, general) Remove the 'attempt to keep queue full option'. It worked on some IBM models, but failed miserably on others. Also removes some uglies in ide_queue_commands() - (tcq0 Change default depth back to 32. - (general) Add isr for no-dataphase taskfile, like task_no_data_intr but doesn't complain about failure. This is handy for commands what we _know_ will fail, such as WIN_NOP. - (general) ide_cmd_type_parser() must set a handler to WIN_NOP... Otherwise we will just hang the ide system issuing a nop. - (general) HWGROUP(drive)->rq->special -> IDE_CUR_AR(drive) - (general) Have ide_raw_taskfile() copy back the taskfile after execution, otherwise we cannot use the info that ide_end_drive_cmd() puts in there. - (tcq) Use nIEN bit correctly in ide-tcq - (tcq) Small ide_tcq_wait_altstat() changes. Do initial 400ns delay (1us here), then 10us each successive run. - (tcq) Add beginning for 'nop auto poll' support check. - (tcq) Arm handler before GET_STAT() service check in ide_dma_queued_start, WD seemed to trigger interrupt before that. Makes WD Expert drives work with tcq.
-
- 18 Apr, 2002 2 commits
-
-
Martin Dalecki authored
Synchronize with Jens Axobe: - Congruent ATA_AR_POOL fix to the ATA_AR_STATIC memmory corruption fix. - Multi sector write handling fix. - Fix drive capability deduction. - Various other minor fixes.
-
Martin Dalecki authored
- Fix typo in ide_cmd_ioctl(). - Fix typo in cris driver. - Don't retry operations on medium errors. (pointed out by Eric Andersen). - Attach the no_io_32bit, io_32bit, no_unmask, unmask and slow fields to the ata_channel instead of the ata_device structure. They are a property of the channel and not just the devices attached to it. This allowed us to fix the set_io_32bit function by removing the CONFIG_BLK_DEV_DTC2278 conditional. In fact initialization shows that this is fixing many other host chipsets as well since all of them did expect sometimes particular values for those parameters in paralell on both drives attached to a channel but we where allowed to apply different values on a per drive basis. - The keep_settings flag is now unconditional and we don't mess with any channel parameters before drive reset. Some chipsets really really expect unconditionally that the tweaks they apply are always present and this wasn't honoured thus far! We are expecting the user to have good reasons for manually tweaking the settings. - Don't reset io_32bit in ata_pre_reset() unconditionally. There are chipsets out there which expect io_32bit to be *allways* enabled! - Remove many obsolete and nawadays just confusing documentation from ide.txt
-
- 16 Apr, 2002 2 commits
-
-
Martin Dalecki authored
- Don't abuse the sense field for passing failed packet_commands in struct packet_command use a new field instead. - Apply minor bits forwarded by Dave Jones to me. - Fix ide_raw_taskfile() to flag the ar used there to be no subject of free_req list management. This solvs the "hang after /proc/ide read" problem, which was in fact a memory corruption problem.
-
Martin Dalecki authored
- Consolidate ide_choose_drive() and choose_drive() in to one function. - Remove sector data byteswpapping support. Byte-swapping the data is supported on the file-system level where applicable. Byte-swapped interfaces are supported on a lower level anyway. And finally it was used inconsistently. - Eliminate taskfile_input_data() and taskfile_output_data(). This allowed us to split up ideproc and eliminate the ugly action switch as well as the corresponding defines. - Remove tons of unnecessary typedefs from ide.h - Prepate the PIO read write code for soon overhaul. - Misc small bits here and there :-).
-
- 15 Apr, 2002 1 commit
-
-
Martin Dalecki authored
- Synchronize with 2.5.8. - Eliminate the cdrom_log_sense() function. - Pass a struct request to cdrom_analyze_sense_data() since this is the entity this function is working on. This shows nicely that this function is broken. - Use CDROM_PACKET_SIZE where appropriate. - Kill the obfuscating cmd_buf and cmd_len local variables from cdrom_transfer_packet_command(). This made it obvious that the parameters of this function where not adequate - to say the least. Fix this. - Pass a packed command array directly to cdrom_queue_packed_command(). This is reducing the number of places where we have to deal with the c member of struct packet_command. - Never pass NULL as sense to cdrom_lockdoor(). - Eliminate cdrom_do_block_pc(). - Eliminate the c member of struct packet_command. Pass them through struct request cmd member. - Don't enable TCQ unconditionally if there is a TCQ queue depth defined. - Fix small think in ide_cmd_ioctl() rewrite. (My appologies to everyone who has to use hdparm to setup his system...) - Fix compilation without PCI support.
-
- 14 Apr, 2002 1 commit
-
-
Martin Dalecki authored
- Kill unneded parameters to ide_cmd_ioctl() and ide_task_ioctl(). - Apply Petr Vendrovecs fix for 32bit ver 16bit transfers. - Make CD-ROM usable again by guarding the generic routines against request field abuse found there. We will try to convert this driver to the just to be finished struct ata_request after the generic changes stabilize a bit. The strcut ata_taskfile and struct ata_request merge to be more preciese.
-
- 12 Apr, 2002 1 commit
-
-
Martin Dalecki authored
- Don't provide symbolic links in /proc/ide - they are redundant data. - Try to use a more reasonable default capacity value in ata_capacity(). - Fix ata_put() ata_get() usage in ide_check_media_change(). - Small readability fixes to the option parsing code. - Apply Vojtech Pavliks /proc PIIX output fix. - Replace all occurrences of ide_wait_taskfile() with ide_raw_taskfile(). One duplicated code path fewer.
-
- 10 Apr, 2002 2 commits
-
-
Martin Dalecki authored
- Integrate the TCQ stuff from Jens Axboe. Deal with the conflicts, apply some cosmetic changes. We are still not at a stage where we could immediately integrate ata_request and ata_taskfile but we are no longer far away. - Clean up the data transfer function in ide-disk to use ata_request structures directly. - Kill useless leading version information in ide-disk.c - Replace the ATA_AR_INIT macro with inline ata_ar_init() function. - Replace IDE_CLEAR_TAG with ata_clear_tag(). - Replace IDE_SET_TAG with ata_set_tag(). - Kill georgeous ide_dmafunc_verbose(). - Fix typo in ide_enable_queued() (ide-tcq.c!) Apparently there still problems with a TCQ enabled device and a not enabled device on the same channel, but let's first synchronize up with Jens.
-
Martin Dalecki authored
- Eliminate ide_task_t and rename struct ide_task_s to struct ata_taskfile. This should become the entity which is holding all data for a request in the future. If this turns out to be the case, we will just rename it to ata_request. - Reduce the number of arguments for the ata_taskfile() function. This helps to wipe quite a lot of code out as well. This stage is not sensitive, so let's make a patch before we start to integrate the last work of Jens Axboe.
-
- 02 Apr, 2002 5 commits
-
-
Martin Dalecki authored
- Apply Pavel Macheks suspend resume double resume fix. - Finally remove the busy field for ata_operations and replace it with MOD_INC_USE_COUNT and MOD_DEC_USE_COUNT. - Fix ali15xx chipset support by removing initialization differences, apparently caused by mislead interpretation of the specs or a mismatch between the specification and reality. - Guard calls to ide_set_handler with checks to see whatever the previously installed IRQ handler already served it's purpose. - Convert timeout checks on poll_timeout to the time_before() interface. - Consolidate the two different IRQ handlers for multi mode PIO writes into one. The problems remain the same but at least now we will only have to tangle one single problem.
-
Martin Dalecki authored
- Mark all members of structures, which get jiffies assigned or involved in ugly timeout calculations with the prefix PADAM_ for easy spotting. This is Polish for "I'm falling down" or "This brings me to the knees" or slag comment for "What a sh..". Please be assured that it doesn't sound vulgar. Please grep for it to see immediately why this nomenclature is justified. - Rename hwifs_s to ata_channel and eliminate ide_hwifs_t as well as the HWIF macro. OK this step makes this patch rather big.
-
Martin Dalecki authored
- Replace the task_io_reg_t with the simple u8. There is no need to obfuscate the code more then necessary. - kill some unnecessary type definitions out from hdreg.h. - Add proper attributes to register files in hdreg.h. - Don't use raw arrays for tfRegister and hobRegister in ide_task_s. Use out nice global structures describing the fields in them. This allows to kill the following defines: IDE_DATA_OFFSET IDE_FEATURE_OFFSET IDE_NSECTOR_OFFSET IDE_SECTOR_OFFSET IDE_LCYL_OFFSET IDE_HCYL_OFFSET IDE_SELECT_OFFSET IDE_COMMAND_OFFSET and many many others. - Please have a look at the following in pdc4030.c. It couldn't have worked! This has been fixed in one go with the above change: memcpy(args.hobRegister, NULL, sizeof(struct hd_drive_hob_hdr)); - Kill the redundant *_REG_HOB definitions. They don't help readability in any way.
-
Martin Dalecki authored
- Push BAD_DMA_DRIVE and GOOD_DMA_DRIVE to the ide-pmac.c file, since this is the only place where those get used. - Kill unused fields from the ide_task_s structure. In esp. we pass a task attached to a request and not the other way around! - Rename hwif field to channel in struct ide_drive_s. - Move the request queue to the level where proper serialization has to happen anyway - the channel structure.
-
Martin Dalecki authored
- Support for additional Promise controller id's (PDC20276). - Remove code duplication between do_rw_taskfile and do_taskfile. This will evolve into a more reasonable ata_command() function finally. The ata_taskfile function has far too many arguments, but I favour this over having two different code paths for getting actual data to the drive.
-
- 18 Mar, 2002 1 commit
-
-
Martin Dalecki authored
- Apply more patches from Vojtech Pavlik for the handling of host chip setup. Hopefully they are settled now. - Kill unused CONFIG_BLK_DEV_MODES - Push register addressing down in to task_vlb_sync. - Make the taskfile parsing stuff actually readable. This is compressing the code by an incredible amount. We use just one function doing the whole scanning right now. This should make sure that the IRQ handler used by a particular command is always right. I didn't introduce typos hopefully here. - Don't call ide_handler_parser as argument for do_taskfile() any longer. We have killed this function by coalescing it's functionality with ide_cmd_type_parser() anyway. - Kill unused SLC90E66 code, which Vojtech apparently missed in his patch. - sync up with 2.5.7-pre2 Once again the actual patch is rather big mostly due to the removal of some default configuration variables which are not used anylonger. So time for the next patch stage.
-
- 06 Mar, 2002 1 commit
-
-
Martin Dalecki authored
This is actually an attempt to remove some stall code from this driver. However if some *real* users complain (Not just the usuall: "Hey - if someone!" but the "Hey I'm using this!") I'm all open to reenable it. Since I prepared this patch yerstoday it doesn't contain the ide_module.h fixup. This will follow later. - Don't use the convoluted byte type in ide-pci.c. Just use the proper u8instead. - Move ide_get_or_set_dma_base to the only place where it's used and reorganize the code there by killing the unnecessary CONFIG_BLK_DEV_IDEDMA_FORCED configuration option. - Remove unfunctional CONFIG_PKT_TASK_IOCTL code. - Kill unused ALTSTAT_SCREW_UP code. - Tons of dead code removed from ide-taskfile.c (#if 0 #endif and friends) - Remove unused IDE_DEBUG macro as well as lots of other name space pollution from ide.h. - Start using the ide_lock spin-lock for protecting access to data structures instead of the excessive interrupt disabling games. - Shorten the proc ouput of the piix initialization module. - Remove special /proc tape "name" output from ide-tape.c. This was redundant data which should only show up on syslog anyway. - Kill the REALLY_FAST_IO undef from the ide.h. This was a mistake present since far too many years in this driver. The proper way to deal with broken systems is to define REALLY_SLOW_IO in system dependent headers or particular driver files. We can always reintroduce it easy if real users will complain, since OUT_BYTE() and similar can be used as hooks. But I don't expect anybody reporting about this. Even on the most broken IDE chip in the world (cmd640 at VLB) undefining this *always* worked for me. Nearly all the code pieces in the ide driver code *reverted* it's effects explicitly anyway. - Remove the obsolete CONFIG_BLK_DEV_4DRIVES support. This was supposed to support 4 drivers attached at one channel on some older chipsets, in esp. Tekram 690CD, in the last century. They where all supposed to work at a register set starting at the base address 0x1f0. Before complaining that this is removing functionality, please note that this must have been broken for already quite a long time, since the ide driver didn't contain the special device selection methods implicated by this any longer. It didn't scan this port too if PCI host chip support was enabled (as it is in all those distributions around there). On the other hand this is the most prominent case of incoherent use of the mate member in the struct hwif_s. And please think about how big the probability is, that there are systems out there, where there are actually 4 drivers on such a channel? - Streamline module initialization code by removing one shoot functions. - Make the WAIT_READY value used in case of CONFIG_APM or CONFIG_APM_MODULE the default, since this is what really reflects the behavior of modern drives. It won't hurt any other case and finally removing it is reducing the necessary coverage for overall driver code testing/analysis. - Move the IDE_LARGE_SEEK macro to the only place where it's actually used. Replace the IDE_MIN() and IDE_MAX() drivers with the obvious. Remove unused SPLIT_WORD and MAKE WORD from the local header. - Remove CMD640_DUMP_REGS from global scope, since there is no development done on this any longer. Finally, the way the host chip initialization routines are called changed in the time between allows this to remain fully local to the host chip driver in question. - Some spell checking of comments in the code. (Yeep I have extended my Vim to do this the "Word" way with nice undercurl lines... mozilla remains to be fixed...)
-
- 05 Mar, 2002 1 commit
-
-
Martin Dalecki authored
There is no such a thing like a ide-clean-15. Never was. But here comes what has been done in ide-clean-16: - Apply a patch for the initialization of the second PIIX channel. Found by Daniel Quinlan <quinlan@transmeta.com> - Apply a patch for the DMA initialization of the serverworks chip. Ken Brownfield <brownfld@irridia.com> - Make the ata_operations methods immune against device type drivers, which donot provide them by separating the access to them out. Audit them all. - Resynchronize with 2.5.6-pre1. - Remove unused IDE_DRIVE_CMD, IDE_DRIVE_TASK, IDE_DRIVE_TASK_MASK, IDE_DRIVE_TASKFILE macros. - Disable configuration of the task file stuff. It is going to go away and will be replaced by a truly abstract interface based on functionality and *not* direct mess-up of hardware. - Resync with 2.5.6-pre2. - Add HPT entries to the fall-back list, since otherwise the driver won'trecognize the drives. We will have to make this the default behavior for allnot recognized host chip types. - Fix compilation with no PCI host chip support enabled. - Apply the overflow fixes for HPT366 by Vojtech Pavlik. - Kill the one-shoot functions ide_wait_cmd_taks() ide_wait_cmd() by moving them to the places where they are actually used. Fix a potential buffer overflow on the way. - Fix usage of ide.c as module. Thanks to Adam J. Richter for figuring out what was wrong. - Various cleanups all along as well as removal of TONS of unfinished/dead code. I think it's sometimes better to remove stuff, which isn't there, instead of hoping for a "magical day" where it will be finished.
-
- 28 Feb, 2002 2 commits
-
-
Martin Dalecki authored
Most importantly this patch is making ide.c use the new automagic for module initialization lists and further preparing the rest of the code in question here for proper module separation. Despite this the CMOS probe has been removed as well... *Iff*, which I don't expect, this breaks anything it can be reintroduced easely. During this effort an actual bug in the initialization of the main module has been uncovered as well. a quite serious BUG has been tagged in ide-scsi.c as well, but as far as now I just didn't get along to actually fixing it. (The patch is big enough as it is). Details follow: - Kill *unused* ide_media_verbose() funciton. - Remove the unnecessary media and supports_dma fields from ide_driver_t. - Remove the global name field from ide_driver_t struct by pushing it down to the places where it's actually used. - Remove the unused hwif_data field from ide_hwif_t. - Push the supports_dsc_overlap condition up to the level where it belongs: disk type as well. - Make the initialization of ide main ide.c work with the new module initialization auto-magic instead of calling it explicitly in ll_rw_block.c This prevents the ide_init() from being called twice. We have BTW. renamed it to ata_module_init(), since ata is more adequate then ide and xxx_module_init corresponds better to the naming conventions used elsewhere throughout the kernel. This BUG was there before any ide-clean. It was worked around by a magic variable preventing the second call to succeed. We have removed this variable in one of the previous patches and thus uncovered it. - Kill proc_ide_read_driver() and proc_ide_write_driver(). The drivers already report on syslog which drives they have taken care of. (Or at least they should). In esp. the proc_ide_write_driver() was just too offending for me. Beleve it or not the purpose of it was to *request a particular* driver for a device, by echoing some magic values to a magic file... More importantly this "back door" was getting in the way of a properly done modularization of the IDE stuff. - Made some not externally used functions static or not EXPORT-ed. - Provide the start of a proper modularization between the main module and drivers for particular device types. Changing the name-space polluting DRIVER() macro to ata_ops() showed how inconsistently the busy (read: module busy!) field from ide_driver_t is currently used across the different device type modules. This has to be fixed soon. - Make the ide code use the similar device type ID numbers as the SCSI code :-). This is just tedious, but it will help in a distant feature. It helps reading the code anyway. - Mark repettitive code with /* ATA-PATTERN */ comments for later consolidation at places where we did came across it. - Various comments and notes added where some explanations was missing.
-
Martin Dalecki authored
1. Add some notes to Documentation/driver-model.txt about how and and where to mount the driverfs. 2. Reorganize and prepare the PCI scanning code for proper device dependant splitup. Basically tedious cleanup of macro games. 3. Use struct pci_dev name field as the name of PCI host dapaters instead of invention ambigious IDE special names. This makes the kernel bootup messages look a bit shifted, since those names are bit longer, but makes up for consistance and should allow one later to rearage things to fit into the generic PCI device initialization mechanisms provided by the kernel. 4. Set 3. Allowed us to make the host chip specific pci_init_xxx class functions have the proper signature of module initializers. This will make it possible to make true modules out of them later. 5. Make some functions in cmd64x.c static which where not used elsewhere. 6. rename ide_special_settings to trust_pci_irq - this is reflecting it's functionality better. And make it match the pci device vendor as well as the device ID. It was a BUG to match only the device id!. 7. Make the chanell setup more tollerant for BIOS-es which don't report IO and MEM bases properly. The code found previously there tryed but was inconsistant. 8. Start to use proper terminology in ide-pci.c: host chip, channel, drive instead of hwif, port, drive... 9. Enlarge the name field from ide_hwif_t to 64 bytes. It was only 6 previously and there where custom names there which where exceeding this!!! But since we use the proper pci devce name there now instead, we had to extend the size of this field anyway. 10. Add some explanatory comments and fix misguiding comments here and there. 11. Kill the proc_ide_write_config and proc_ide_read_config brain damage! Those where backdoors to the pci configuration registers on PCI devices and IO registers on directly connected ISA ATA controllers. They didn't discrement between them! Access to both of them *simply* doesn't belong into an operating system, which is supposed to abstract out the access to hardware! Did I mention that access to both can be done from user land without an IDE special interface! Any program which was using them (I hardly beleve there is one) just deserves to loose. The programmer responsible for it deserves to be fired immediately. 12. Move ide_map_xx and ide_unmap_xx tinny bio level wrappers away from the "global" ide.h to where those are actually used and kill trivial wrappers for otherwise generic bio_ routines. Just fighting code obfuscation. The "rq->bio is used or is not there" brain damage in ide-taskfile.c has to be fixed later. Possibly by killing ide-taskfile.c alltogether, becouse this should be a driver for users and not a driver for ATA disk disaster recovery companys... 13. Kill hwif->pci_devid and hwif->pci_venid. Just use the already present hwif->pci_dev field instead. 14. Kill unused big switch ide_reinit_drive function. This silly functon was switching upon every possible device driver cathegory and calling the correspondng reinit function directly. This idiocy was fortunately not used. That's all... Most will be clear if one starts looking at the changes in ide.h of course... In contrast to the previous patches this one is actually fixing two serious bugs. The next direct step will be to kill the sigle place global PCI device type recognition list from ide-pci.c by pushing the entries to where they belong -> the host chips setup modules.
-