An error occurred fetching the project authors.
  1. 29 May, 2002 1 commit
    • Martin Dalecki's avatar
      [PATCH] 2.5.18 IDE 73 · eb796b17
      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.
      eb796b17
  2. 28 May, 2002 1 commit
    • Martin Dalecki's avatar
      [PATCH] 2.5.18 IDE 72 · 9c4d67fb
      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.
      9c4d67fb
  3. 27 May, 2002 1 commit
    • Martin Dalecki's avatar
      [PATCH] 2.5.18 IDE 71 · 4478f040
      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.
      4478f040
  4. 17 May, 2002 4 commits
    • Martin Dalecki's avatar
      [PATCH] 2.5.15 IDE 64 · acff0d93
      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.
      acff0d93
    • Martin Dalecki's avatar
      [PATCH] 2.5.15 IDE 63 · d7e09f7e
      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.
      d7e09f7e
    • Martin Dalecki's avatar
      [PATCH] 2.5.15 IDE 62a · 5ff49f70
      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.
      5ff49f70
    • Martin Dalecki's avatar
      [PATCH] 2.5.15 IDE 61 · 938f5b72
      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.
      938f5b72
  5. 11 May, 2002 1 commit
    • Martin Dalecki's avatar
      [PATCH] 2.5.15 IDE 60 · bdff23c1
      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.
      bdff23c1
  6. 07 May, 2002 2 commits
    • Martin Dalecki's avatar
      [PATCH] IDE 58 · 96a878c0
      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 ;-).
      96a878c0
    • Martin Dalecki's avatar
      [PATCH] 2.5.14 IDE 56 · 470d15bb
      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.
      470d15bb
  7. 06 May, 2002 1 commit
    • Martin Dalecki's avatar
      [PATCH] 2.5.14 IDE 55 · fb0bbfda
      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.
      fb0bbfda
  8. 05 May, 2002 3 commits
    • Martin Dalecki's avatar
      [PATCH] [PATCH 2.5.13 IDE 54 · 5e229c99
      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.
      5e229c99
    • Martin Dalecki's avatar
      [PATCH] 2.5.13 IDE 53 · 3ddddcf2
      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.
      3ddddcf2
    • Martin Dalecki's avatar
      [PATCH] 2.5.13 IDE 52 · ab08629c
      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 ;-).
      ab08629c
  9. 04 May, 2002 1 commit
    • Osamu Tomita's avatar
      [PATCH] IDE PIO mode Fix · 359e8441
      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.
      359e8441
  10. 03 May, 2002 1 commit
    • Martin Dalecki's avatar
      [PATCH] 2.5.13 IDE 51 · f015724e
      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.
      f015724e
  11. 30 Apr, 2002 2 commits
    • Martin Dalecki's avatar
      [PATCH] 2.5.11 IDE 48 · 4507e7c8
      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.
      4507e7c8
    • Martin Dalecki's avatar
      [PATCH] 2.5.11 IDE 46 · 4a58bd1a
      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.
      4a58bd1a
  12. 26 Apr, 2002 1 commit
    • Martin Dalecki's avatar
      [PATCH] 2.5.10 IDE 42 · 9dbf0015
      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...)
      9dbf0015
  13. 25 Apr, 2002 1 commit
    • Martin Dalecki's avatar
      [PATCH] 2.5.10 IDE 41 · cf530091
      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.
      cf530091
  14. 19 Apr, 2002 1 commit
    • Jens Axboe's avatar
      [PATCH] ide updates · 0540fcdf
      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.
      0540fcdf
  15. 18 Apr, 2002 2 commits
    • Martin Dalecki's avatar
      [PATCH] 2.5.8 IDE 39 · d8bffa93
      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.
      d8bffa93
    • Martin Dalecki's avatar
      [PATCH] 2.5.8 IDE 38 · 43c1ab59
      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
      43c1ab59
  16. 16 Apr, 2002 2 commits
    • Martin Dalecki's avatar
      [PATCH] 2.5.8 IDE 37 · 0c0a9d38
      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.
      0c0a9d38
    • Martin Dalecki's avatar
      [PATCH] 2.5.8 IDE 36 · 87689e36
      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 :-).
      87689e36
  17. 15 Apr, 2002 1 commit
    • Martin Dalecki's avatar
      [PATCH] 2.5.8 IDE 34 · 21aecbc3
      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.
      21aecbc3
  18. 14 Apr, 2002 1 commit
    • Martin Dalecki's avatar
      [PATCH] 2.5.8-pre3 IDE 33 · 3e11aea0
      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.
      3e11aea0
  19. 12 Apr, 2002 1 commit
    • Martin Dalecki's avatar
      [PATCH] 2.5.8-pre3 IDE 32 · 6a0b3e79
      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.
      6a0b3e79
  20. 10 Apr, 2002 2 commits
    • Martin Dalecki's avatar
      [PATCH] 2.5.8-pre3 IDE 31 · 17b581c6
      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.
      17b581c6
    • Martin Dalecki's avatar
      [PATCH] 2.5.8-pre3 IDE 30 · a87cd868
      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.
      a87cd868
  21. 02 Apr, 2002 5 commits
    • Martin Dalecki's avatar
      [PATCH] 2.5.7 IDE 28a · 5be8243b
      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.
      5be8243b
    • Martin Dalecki's avatar
      [PATCH] 2.5.7 IDE 26 · d1372f76
      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.
      d1372f76
    • Martin Dalecki's avatar
      [PATCH] 2.5.7 IDE 25 · e07a6a66
      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.
      e07a6a66
    • Martin Dalecki's avatar
      [PATCH] 2.5.7 IDE 24 · 4772b236
      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.
      4772b236
    • Martin Dalecki's avatar
      [PATCH] 2.5.7 IDE 23 · 869cc357
      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.
      869cc357
  22. 18 Mar, 2002 1 commit
    • Martin Dalecki's avatar
      [PATCH] 2.5.7-pre2 IDE 22a · 198231a8
      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.
      198231a8
  23. 06 Mar, 2002 1 commit
    • Martin Dalecki's avatar
      [PATCH] IDE 17 (not just cleanup) · a925c40f
      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...)
      a925c40f
  24. 05 Mar, 2002 1 commit
    • Martin Dalecki's avatar
      [PATCH] 2.5.6-pre2 IDE cleanup 16 · 24ae9cff
      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.
      24ae9cff
  25. 28 Feb, 2002 2 commits
    • Martin Dalecki's avatar
      [PATCH] 2.5.6-pre1 IDE clean 14 · 48ba6e98
      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.
      48ba6e98
    • Martin Dalecki's avatar
      [PATCH] 2.5.5 IDE cleanup 12 · c0bf9449
      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.
      c0bf9449