[BK PATCHES] ide-dev-2.6 update

From: Bartlomiej Zolnierkiewicz (bzolnier_at_elka.pw.edu.pl)
Date: 02/11/05

  • Next message: Lee Revell: "Re: [patch, 2.6.11-rc2] sched: RLIMIT_RT_CPU_RATIO feature"
    Date:	Fri, 11 Feb 2005 22:14:24 +0100 (CET)
    To: Andrew Morton <akpm@osdl.org>
    
    

    Hi Andrew,

    ide-dev-2.6 is fixed now and can be added back to -mm.

    ChangeLog:

    * fix OOPS in task_end_request()
    * add VIA VT6410 support (Mathias Kretschmer)
    * fix unneeded LBA48 taskfile registers access
    * fix io_32bit race in ide_taskfile_ioctl() (Tejun Heo)

    BK users:

            bk pull bk://bart.bkbits.net/ide-dev-2.6

    This will update the following files:

     drivers/ide/ide-default.c | 73 --------
     drivers/ide/Kconfig | 8
     drivers/ide/Makefile | 3
     drivers/ide/ide-cd.c | 220 +++++++++++++++++---------
     drivers/ide/ide-cd.h | 4
     drivers/ide/ide-disk.c | 338 +++++++++++++++--------------------------
     drivers/ide/ide-dma.c | 4
     drivers/ide/ide-floppy.c | 172 ++++++++++++++++----
     drivers/ide/ide-io.c | 218 ++++++++++++++++++++++++--
     drivers/ide/ide-iops.c | 20 ++
     drivers/ide/ide-probe.c | 184 +++++++++++++++-------
     drivers/ide/ide-proc.c | 20 --
     drivers/ide/ide-tape.c | 227 ++++++++++++++++++++-------
     drivers/ide/ide-taskfile.c | 40 +++-
     drivers/ide/ide.c | 166 ++++----------------
     drivers/ide/pci/pdc202xx_new.c | 6
     drivers/ide/pci/pdc202xx_old.c | 17 --
     drivers/ide/pci/via82cxxx.c | 37 ++--
     drivers/ide/setup-pci.c | 15 -
     drivers/scsi/ide-scsi.c | 111 +++++++++++--
     include/linux/ata.h | 1
     include/linux/ide.h | 16 -
     include/linux/pci_ids.h | 1
     23 files changed, 1130 insertions(+), 771 deletions(-)

    through these ChangeSets:

    <bzolnier@trik.(none)> (05/02/11 1.2134)
       [ide] fix io_32bit race in ide_taskfile_ioctl()

       In ide_taskfile_ioctl(), there was a race condition involving
       drive->io_32bit. It was cleared and restored during ioctl
       requests but there was no synchronization with other requests.
       So, other requests could execute with the altered io_32bit
       setting or updated drive->io_32bit could be overwritten by
       ide_taskfile_ioctl().

       This patch adds ATA_TFLAG_IO_16BIT flag to indicate to
       ide_pio_datablock() that 16bit IO is needed regardless of
       drive->io_32bit settting.

       Signed-off-by: Tejun Heo <htejun@gmail.com>

    <bzolnier@trik.(none)> (05/02/11 1.2133)
       [ide] fix unneeded LBA48 taskfile registers access

       This small patch fixes unneeded writes/reads to LBA48 taskfile registers
       on LBA48 capable disks for following cases:

       * Power Management requests
         (WIN_FLUSH_CACHE, WIN_STANDBYNOW1, WIN_IDLEIMMEDIATE commands)
       * special commands (WIN_SPECIFY, WIN_RESTORE, WIN_SETMULT)
       * Host Protected Area support (WIN_READ_NATIVE_MAX, WIN_SET_MAX)
       * /proc/ide/ SMART support (WIN_SMART with SMART_ENABLE,
         SMART_READ_VALUES and SMART_READ_THRESHOLDS subcommands)
       * write cache enabling/disabling in ide-disk
        (WIN_SETFEATURES with SETFEATURES_{EN,DIS}_WCACHE)
       * write cache flushing in ide-disk (WIN_FLUSH_CACHE)
       * acoustic management in ide-disk
         (WIN_SETFEATURES with SETFEATURES_{EN,DIS}_AAM)
       * door (un)locking in ide-disk (WIN_DOORLOCK, WIN_DOORUNLOCK)
       * /proc/ide/hd?/identify support (WIN_IDENTIFY)

       Patch adds 'unsinged long flags' to ide_task_t and uses ATA_TFLAG_LBA48
       flag (from <linux/ata.h>) to indicate need of access to LBA48 taskfile
       registers.

    <bzolnier@trik.(none)> (05/02/11 1.2132)
       [ide via82cxxx] add VIA VT6410 support

       From: Mathias Kretschmer <posting@blx4.net>

    <bzolnier@trik.(none)> (05/02/11 1.2131)
       [ide] fix OOPS in task_end_request()

       Requests generated by /proc/ide/hd?/identify
       and /proc/ide/hd?/smart_{thresholds,values}
       don't have valid rq->rq_disk set.

       Use ide_end_request() instead of ->end_request().

    <bzolnier@trik.(none)> (05/02/06 1.2130)
       [ide] fix ATAPI Power Management

       I've introduced bug in ATAPI Power Management handling,
       idedisk_pm_idle shouldn't be done for ATAPI devices.

    <bzolnier@trik.(none)> (05/02/06 1.2129)
       [ide] fix pdc202xx_{new,old}.c after linux-2.6 merge

    <bzolnier@trik.(none)> (05/02/04 1.2040.4.18)
       [ide] kill ide-default

       * add ide_drives list to list devices without a driver
       * add __ide_add_setting() and use it for adding no auto remove entries
       * kill ide-default pseudo-driver

    <bzolnier@trik.(none)> (05/02/04 1.2040.4.17)
       [ide] get driver from rq->rq_disk->private_data

       * add ide_driver_t * to device drivers objects
       * set it to point at driver's ide_driver_t
       * store address of this entry in disk->private_data
       * fix ide_{cd,disk,floppy,tape,scsi}_g accordingly
       * use rq->rq_disk->private_data instead of drive->driver
         to obtain driver (this allows us to kill ide-default)

    <bzolnier@trik.(none)> (05/02/04 1.2040.4.16)
       [ide] kill ide_drive_t->disk

       * move ->disk from ide_drive_t to driver specific objects
       * make drivers allocate struct gendisk and setup rq->rq_disk
         (there is no need to do this for REQ_DRIVE_TASKFILE requests)
       * add ide_init_disk() helper and kill alloc_disks() in ide-probe.c
       * kill no longer needed ide_open() and ide_fops[] in ide.c

    <bzolnier@trik.(none)> (05/02/04 1.2040.4.15)
       [ide] add ide_{un}register_region()

       Add ide_{un}register_region() and fix ide-{tape,scsi}.c to register
       block device number ranges. In ata_probe() only probe for modules.

       Behavior is unchanged because:
       * if driver is already loaded and attached to drive ata_probe()
         is not called et all
       * if driver is loaded by ata_probe() it will register new number range
         for a drive and this range will be found by kobj_lookup()

       If this is not clear please read http://lwn.net/Articles/25711/
       and see drivers/base/map.c.

       This patch makes it possible to move drive->disk allocation from
       ide-probe.c to device drivers.

    <bzolnier@trik.(none)> (05/02/04 1.2040.4.14)
       [ide] destroy_proc_ide_device() cleanup

       When this function is called device is already unbinded from a
       driver so there are no driver /proc entries to remove.

    <bzolnier@trik.(none)> (05/02/04 1.2040.4.13)
       [ide] drive->dsc_overlap fix

       drive->dsc_overlap is supported only by ide-{cd,tape} drivers.
       Add missing clearing of ->dsc_overlap to ide_{cd,tape}_release()
       and move ->dsc_overlap setup from ide_register_subdriver() to
       ide_cdrom_setup() (ide-tape enables it unconditionally).

    <bzolnier@trik.(none)> (05/02/04 1.2040.4.12)
       [ide] drive->nice1 fix

       It is drive's property independent of the driver being used so move
       drive->nice1 setup from ide_register_subdriver() to probe_hwif() in
       ide-probe.c. As a result changing a driver which controls the drive
       no longer affects this flag.

    <bzolnier@trik.(none)> (05/02/04 1.2040.4.11)
       [ide] ide-tape: fix character device ->open() vs ->cleanup() race

       Similar to the same race but for the block device.

       * store pointer to struct ide_tape_obj in idetape_chrdevs[]
       * rename idetape_chrdevs[] to idetape_devs[] and kill idetape_chrdev_t
       * add ide_tape_chrdev_get() for getting reference to the tape
       * store tape pointer in file->private_data and fix all users of it
       * fix idetape_chrdev_{open,release}() to get/put reference to the tape

    <bzolnier@trik.(none)> (05/02/03 1.2040.4.10)
       [ide] fix via82cxxx resume failure

       With David Woodhouse <dwmw2@infradead.org>.

       On resume from sleep, via_set_speed() doesn't reinstate the correct
       mode, because it thinks the drive is already configured correctly.

       Also kill redundant printk, ide_config_drive_speed() warns about errors.

    <bzolnier@trik.(none)> (05/02/03 1.2040.4.9)
       [ide] ide-scsi: add basic refcounting

       * pointers to a SCSI host and a drive are added to idescsi_scsi_t
       * pointer to the SCSI host is stored in disk->private_data
       * ide_scsi_{get,put}() is used to {get,put} reference to the SCSI host

    <bzolnier@trik.(none)> (05/02/03 1.2040.4.8)
       [ide] ide-tape: add basic refcounting

       Similar changes as for ide-cd.c.

    <bzolnier@trik.(none)> (05/02/03 1.2040.4.7)
       [ide] ide-floppy: add basic refcounting

       Similar changes as for ide-cd.c.

    <bzolnier@trik.(none)> (05/02/03 1.2040.4.6)
       [ide] ide-disk: add basic refcounting

       Similar changes as for ide-cd.c (except that struct ide_disk_obj is added).

    <bzolnier@trik.(none)> (05/02/03 1.2040.4.5)
       [ide] ide-cd: add basic refcounting

       * based on reference counting in drivers/scsi/{sd,sr}.c
       * fixes race between ->open() and ->cleanup() (ide_unregister_subdriver()
         tests for drive->usage != 0 but there is no protection against new users)
       * struct kref and pointer to a drive are added to struct ide_cdrom_info
       * pointer to drive's struct ide_cdrom_info is stored in disk->private_data
       * ide_cd_{get,put}() is used to {get,put} reference to struct ide_cdrom_info
       * ide_cd_release() is a release method for struct ide_cdrom_info

    <bzolnier@trik.(none)> (05/02/03 1.2040.4.4)
       [ide] make ide_generic_ioctl() take ide_drive_t * as an argument

       As a result disk->private_data can be used by device drivers now.

    <bzolnier@trik.(none)> (05/02/03 1.2040.4.3)
       [ide] kill setup_driver_defaults()

       * move default_do_request() to ide-default.c
       * fix drivers to set ide_driver_t->{do_request,end_request,error,abort}
       * kill setup_driver_defaults()

    <bzolnier@trik.(none)> (05/02/03 1.2040.4.2)
       [ide] kill ide_driver_t->capacity

       * add private /proc/ide/hd?/capacity handlers to ide-{cd,disk,floppy}.c
       * use generic proc_ide_read_capacity() for ide-{scsi,tape}.c
       * kill ->capacity, default_capacity() and generic_subdriver_entries[]

    <bzolnier@trik.(none)> (05/01/21 1.1966.85.144)
       [ide] kill ide_driver_t->pre_reset

       Add ide_drive_t->post_reset flag and use it to signal post reset
       condition to the ide-tape driver (the only user of ->pre_reset).

    <bzolnier@trik.(none)> (05/01/21 1.1966.85.143)
       [ide] fix some rare ide-default vs ide-disk races

       Some rare races between ide-default and ide-disk are possible, i.e.:
       * ide-default is used, I/O request is triggered (ie. /proc/ide/hd?/identify),
         drive->special is cleared silently (so CHS is not initialized properly),
         ide-disk is loaded and fails if drive uses CHS
       * ide-disk is used, drive is resetted, ide-disk is unloaded, ide-default
         takes control over drive and on the first I/O request silently clears
        drive->special without restoring settings

       Fix them by moving idedisk_{special,pre_reset}() and company to IDE core.

    <bzolnier@trik.(none)> (05/01/21 1.1966.85.142)
       [ide] generic Power Management for IDE devices

       Move PM code from ide-cd.c and ide-disk.c to IDE core so:
       * PM is supported for other ATAPI devices (floppy, tape)
       * PM is supported even if specific driver is not loaded

    <bzolnier@trik.(none)> (05/01/21 1.1966.85.141)
       [ide] fix drive->ready_stat for ATAPI

       ATAPI devices ignore DRDY bit so drive->ready_stat must be set to zero.
       It is currently done by device drivers (including ide-default fake driver)
       but for PMAC driver it is too late as wait_for_ready() may be called during
       probe: probe_hwif()->pmac_ide_dma_check()->pmac_ide_{mdma,udma}_enable()->
       ->pmac_ide_do_setfeature()->wait_for_ready().

       Fixup drive->ready_stat just after detecting ATAPI device.

    <bzolnier@trik.(none)> (05/01/21 1.1966.85.140)
       [ide] ignore BIOS enable bits for Promise controllers

       Since there are no Promise binary drivers for 2.6.x kernels:
       * ignore BIOS enable bits completely
       * remove CONFIG_PDC202XX_FORCE
       * kill IDEPCI_FLAG_FORCE_PDC hack

    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/


  • Next message: Lee Revell: "Re: [patch, 2.6.11-rc2] sched: RLIMIT_RT_CPU_RATIO feature"

    Relevant Pages

    • [GIT]: Networking
      ... maintainer making a lot of changes to driver FOO. ... support for networking. ... iwl3945: Fix iwl3945 rate scaling. ... Fix build warning due to typo in %pI4 format changes. ...
      (Linux-Kernel)
    • [GIT]: Networking
      ... Make VLAN and MACVLAN drivers support multiqueue, ... Return type of net driver xmit routines is formalized into ... Lots of bluetooth fixes and cleanups from Marcel Holtmann ... Fix premature termination of FIN_WAIT2, ...
      (Linux-Kernel)
    • [GIT]: Networking
      ... RFKILL rewrite from Johannes Berg. ... IPV6 stateless autoconfig support for ISATAP, ... fix led bug when SW rfkill ... Add watchdog functionality to hfcmulti driver ...
      (Linux-Kernel)
    • Re: Network card problem during install
      ... DO NOT CONTACT DONALD BECKER FOR SUPPORT OF THIS DRIVER, ... Kernel 2.4.3 or later. ... Tigran Aivazian - testing, code review, and a bug fix ...
      (alt.os.linux.suse)
    • [git pull] IDE updates [part 2]
      ... Old bast-ide driver removal (we use PATA platform support now) from Ben Dooks. ... Conversion of more host drivers to use struct ide_port_info. ... ide: remove unused XFER_UDMA_SLOW ...
      (Linux-Kernel)