1. 11 5月, 2007 8 次提交
    • R
      ocfs2: kobject/kset foobar · c4a7f5eb
      Randy Dunlap 提交于
      Fix gcc warning and Oops that it causes:
      
      fs/ocfs2/cluster/masklog.c:161: warning: assignment from incompatible pointer type
      [ 2776.204120] OCFS2 Node Manager 1.3.3
      [ 2776.211729] BUG: spinlock bad magic on CPU#0, modprobe/4424
      [ 2776.214269]  lock: ffff810021c8fe18, .magic: ffffffff, .owner: /6394416, .owner_cpu: 0
      [ 2776.217864] [ 2776.217865] Call Trace:
      [ 2776.219662]  [<ffffffff803426c8>] spin_bug+0x9e/0xe9
      [ 2776.221921]  [<ffffffff803427bf>] _raw_spin_lock+0x23/0xf9
      [ 2776.224417]  [<ffffffff8051acf4>] _spin_lock+0x9/0xb
      [ 2776.226676]  [<ffffffff8033c3b1>] kobject_shadow_add+0x98/0x1ac
      [ 2776.229367]  [<ffffffff8033c4d0>] kobject_add+0xb/0xd
      [ 2776.231665]  [<ffffffff8033c4df>] kset_add+0xd/0xf
      [ 2776.233845]  [<ffffffff8033c5a6>] kset_register+0x23/0x28
      [ 2776.236309]  [<ffffffff8808ccb7>] :ocfs2_nodemanager:mlog_sys_init+0x68/0x6d
      [ 2776.239518]  [<ffffffff8808ccee>] :ocfs2_nodemanager:o2cb_sys_init+0x32/0x4a
      [ 2776.242726]  [<ffffffff880b80a6>] :ocfs2_nodemanager:init_o2nm+0xa6/0xd5
      [ 2776.245772]  [<ffffffff8025266c>] sys_init_module+0x1471/0x15d2
      [ 2776.248465]  [<ffffffff8033f250>] simple_strtoull+0x0/0xdc
      [ 2776.250959]  [<ffffffff8020948e>] system_call+0x7e/0x83
      Signed-off-by: NRandy Dunlap <randy.dunlap@oracle.com>
      Acked-by: NMark Fasheh <mark.fasheh@oracle.com>
      Cc: Greg KH <greg@kroah.com>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      c4a7f5eb
    • S
      early_pfn_to_nid needs to be __meminit · 6f076f5d
      Stephen Rothwell 提交于
      Since it is referenced by memmap_init_zone (which is __meminit) via the
      early_pfn_in_nid macro when CONFIG_NODES_SPAN_OTHER_NODES is set (which
      basically means PowerPC 64).
      
      This removes a section mismatch warning in those circumstances.
      Signed-off-by: NStephen Rothwell <sfr@canb.auug.org.au>
      Cc: Yasunori Goto <y-goto@jp.fujitsu.com>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      6f076f5d
    • D
      AF_RXRPC: reduce debugging noise · a6a62b69
      David Howells 提交于
      Reduce debugging noise generated by AF_RXRPC.
      Signed-off-by: NDavid Howells <dhowells@redhat.com>
      Cc: "David S. Miller" <davem@davemloft.net>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      a6a62b69
    • D
      AFS: further write support fixes · 5bbf5d39
      David Howells 提交于
      Further fixes for AFS write support:
      
       (1) The afs_send_pages() outer loop must do an extra iteration if it ends
           with 'first == last' because 'last' is inclusive in the page set
           otherwise it fails to send the last page and complete the RxRPC op under
           some circumstances.
      
       (2) Similarly, the outer loop in afs_pages_written_back() must also do an
           extra iteration if it ends with 'first == last', otherwise it fails to
           clear PG_writeback on the last page under some circumstances.
      Signed-off-by: NDavid Howells <dhowells@redhat.com>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      5bbf5d39
    • D
      AFS: write support fixes · b9b1f8d5
      David Howells 提交于
      AFS write support fixes:
      
       (1) Support large files using the 64-bit file access operations if available
           on the server.
      
       (2) Use kmap_atomic() rather than kmap() in afs_prepare_page().
      
       (3) Don't do stuff in afs_writepage() that's done by the caller.
      
      [akpm@linux-foundation.org: fix right shift count >= width of type]
      Signed-off-by: NDavid Howells <dhowells@redhat.com>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      b9b1f8d5
    • A
      add upper-32-bits macro · 218e180e
      Andrew Morton 提交于
      We keep on getting "right shift count >= width of type" warnings when doing
      things like
      
      	sector_t s;
      
      	x = s >> 56;
      
      because with CONFIG_LBD=n, s is only 32-bit.  Similar problems can occur with
      dma_addr_t's.
      
      So add a simple wrapper function which code can use to avoid this warning.
      The above example would become
      
      	x = upper_32_bits(s) >> 24;
      
      The first user is in fact AFS.
      
      Cc: James Bottomley <James.Bottomley@SteelEye.com>
      Cc: "Cameron, Steve" <Steve.Cameron@hp.com>
      Cc: "Miller, Mike (OS Dev)" <Mike.Miller@hp.com>
      Cc: Hisashi Hifumi <hifumi.hisashi@oss.ntt.co.jp>
      Cc: Alan Cox <alan@lxorguk.ukuu.org.uk>
      Cc: David Howells <dhowells@redhat.com>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      218e180e
    • C
      slub: support concurrent local and remote frees and allocs on a slab · 894b8788
      Christoph Lameter 提交于
      Avoid atomic overhead in slab_alloc and slab_free
      
      SLUB needs to use the slab_lock for the per cpu slabs to synchronize with
      potential kfree operations.  This patch avoids that need by moving all free
      objects onto a lockless_freelist.  The regular freelist continues to exist
      and will be used to free objects.  So while we consume the
      lockless_freelist the regular freelist may build up objects.
      
      If we are out of objects on the lockless_freelist then we may check the
      regular freelist.  If it has objects then we move those over to the
      lockless_freelist and do this again.  There is a significant savings in
      terms of atomic operations that have to be performed.
      
      We can even free directly to the lockless_freelist if we know that we are
      running on the same processor.  So this speeds up short lived objects.
      They may be allocated and freed without taking the slab_lock.  This is
      particular good for netperf.
      
      In order to maximize the effect of the new faster hotpath we extract the
      hottest performance pieces into inlined functions.  These are then inlined
      into kmem_cache_alloc and kmem_cache_free.  So hotpath allocation and
      freeing no longer requires a subroutine call within SLUB.
      
      [I am not sure that it is worth doing this because it changes the easy to
      read structure of slub just to reduce atomic ops.  However, there is
      someone out there with a benchmark on 4 way and 8 way processor systems
      that seems to show a 5% regression vs.  Slab.  Seems that the regression is
      due to increased atomic operations use vs.  SLAB in SLUB).  I wonder if
      this is applicable or discernable at all in a real workload?]
      Signed-off-by: NChristoph Lameter <clameter@sgi.com>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      894b8788
    • M
      02b67325
  2. 10 5月, 2007 32 次提交
    • L
      Merge branch 'for-linus' of master.kernel.org:/pub/scm/linux/kernel/git/roland/infiniband · de560374
      Linus Torvalds 提交于
      * 'for-linus' of master.kernel.org:/pub/scm/linux/kernel/git/roland/infiniband:
        IB/mlx4: Add a driver Mellanox ConnectX InfiniBand adapters
        IB: Put rlimit accounting struct in struct ib_umem
        IB/uverbs: Export ib_umem_get()/ib_umem_release() to modules
      de560374
    • L
      Merge branch 'usb-move' of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/netdev-2.6 · b5f0adbc
      Linus Torvalds 提交于
      * 'usb-move' of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/netdev-2.6:
        Move USB network drivers to drivers/net/usb.
      b5f0adbc
    • L
      Merge branch 'upstream-linus' of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/libata-dev · 0a09d9a4
      Linus Torvalds 提交于
      * 'upstream-linus' of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/libata-dev:
        Doc Fix: remove mention of combined mode-related kernel parameters
        libata: fix kernel-doc parameters
        Fix pata_qdi.c probe code
        pata_scc: fix compilation
        sata_via: add missing PM hooks
        sata_nv: fix ADMA freeze/thaw/irq_clear issues
        pata_pcmcia.c: add card ident for jvc cdrom
        sata_promise: SATAII-150/300 TX4 port numbering fix
        sata_promise: fix another error decode regression
        libata-acpi: fix _GTF command protocol for ATAPI devices
      0a09d9a4
    • L
      Revert "md: improve partition detection in md array" · 44ce6294
      Linus Torvalds 提交于
      This reverts commit 5b479c91.
      
      Quoth Neil Brown:
      
        "It causes an oops when auto-detecting raid arrays, and it doesn't
         seem easy to fix.
      
         The array may not be 'open' when do_md_run is called, so
         bdev->bd_disk might be NULL, so bd_set_size can oops.
      
         This whole approach of opening an md device before it has been
         assembled just seems to get more and more painful.  I think I'm going
         to have to come up with something clever to provide both backward
         comparability with usage expectation, and sane integration into the
         rest of the kernel."
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      44ce6294
    • J
      Move USB network drivers to drivers/net/usb. · 5b2fc499
      Jeff Garzik 提交于
      It is preferable to group drivers by usage (net, scsi, ATA, ...) than
      by bus.  When reviewing drivers, the [PCI|USB|PCMCIA|...] maintainer
      is probably less qualified on networking issues than a networking
      maintainer.  Also, from a practical standpoint, chips often
      appear on multiple buses, which is why we do not put drivers into
      drivers/pci/net.
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      Signed-off-by: NJeff Garzik <jeff@garzik.org>
      5b2fc499
    • J
      Doc Fix: remove mention of combined mode-related kernel parameters · e0863397
      Jesse Barnes 提交于
      Looks like you removed the combined_mode quirk (yay!) but didn't update
      kernel-parameters.txt...  might confuse people.  Here's a patch to remove
      mention of it from the documentation.
      Signed-off-by: NJesse Barnes <jesse.barnes@intel.com>
      Signed-off-by: NJeff Garzik <jeff@garzik.org>
      e0863397
    • R
      libata: fix kernel-doc parameters · 6b38d1d1
      Randy Dunlap 提交于
      Warning(linux-2.6.21-git4//drivers/ata/libata-core.c:904): No description found for parameter 'new_sectors'
      Warning(linux-2.6.21-git4//drivers/ata/libata-core.c:941): No description found for parameter 'new_sectors'
      Signed-off-by: NRandy Dunlap <randy.dunlap@oracle.com>
      Signed-off-by: NJeff Garzik <jeff@garzik.org>
      6b38d1d1
    • S
      Fix pata_qdi.c probe code · 6878cce5
      Samuel Thibault 提交于
      There is a small typo in the probe code of pata_qdi.c, here is a patch.
      Signed-off-by: NJeff Garzik <jeff@garzik.org>
      6878cce5
    • A
      pata_scc: fix compilation · 0397bad5
      Alexey Dobriyan 提交于
      Signed-off-by: NAlexey Dobriyan <adobriyan@gmail.com>
      Signed-off-by: NJeff Garzik <jeff@garzik.org>
      0397bad5
    • T
      sata_via: add missing PM hooks · e1e143cf
      Tejun Heo 提交于
      For some reason, sata_via is missing PM hooks.  Add them.  Spotted by
      Jeroen Janssen <jeroen.janssen@gmail.com>.
      Signed-off-by: NTejun Heo <htejun@gmail.com>
      Cc: Jeroen Janssen <jeroen.janssen@gmail.com>
      Signed-off-by: NJeff Garzik <jeff@garzik.org>
      e1e143cf
    • R
      sata_nv: fix ADMA freeze/thaw/irq_clear issues · 53014e25
      Robert Hancock 提交于
      This patch fixes some problems with ADMA-capable controllers with
      regard to freeze, thaw and irq_clear libata callbacks. Freeze and
      thaw didn't switch the ADMA-specific interrupts on or off, and more
      critically the irq_clear function didn't respect the restriction that
      the notifier clear registers for both ports have to be written at
      the same time even when only one port is being cleared. This could
      result in timeouts on one port when error handling (i.e. as a result
      of hotplug) occurred on the other port.
      
      As well, this fixes some issues in the interrupt handler: we shouldn't
      check any ADMA status if the port has ADMA switched off because of
      an ATAPI device, and it also checks to see if any ADMA interrupt has
      been raised even when we are in port-register mode.
      Signed-off-by: NRobert Hancock <hancockr@shaw.ca>
      Signed-off-by: NJeff Garzik <jeff@garzik.org>
      53014e25
    • R
      pata_pcmcia.c: add card ident for jvc cdrom · 7871e74a
      Richard Kennedy 提交于
      update pata_pcmcia to add card ident for JVC MP-CDX1 cdrom drive
      card info:
      PRODID_1="KME"
      PRODID_2="KXLC005"
      PRODID_3="00"
      MANFID=0032,2904
      Signed-off-by: NRichard Kennedy <richard@rsk.demon.co.uk>
      Signed-off-by: NJeff Garzik <jeff@garzik.org>
      7871e74a
    • M
      sata_promise: SATAII-150/300 TX4 port numbering fix · 5ac2fe57
      Mikael Pettersson 提交于
      There is a known problem with sata_promise on SATAII-150/300 TX4
      controller cards: it enumerates drives in an order that differs
      from the port numbers printed on the controller cards. However,
      Promise's BIOS and Linux driver both get the order right.
      
      I investigated Promise's Linux driver (v1.01.0.23), and found
      that it explicitly changes the mapping from logical port number
      to ATA engine MMIO address on the SATAII TX4 cards. It does this
      on all SATAII TX4 cards, without inspecting revision etc. The
      SATAII TX2plus cards continue to use the same mapping that was
      used for the first-generation chips.
      
      This patch updates sata_promise to use the new port number to
      ATA engine mapping on SATAII TX4 cards, which fixes the drive
      enumeration order problem on those cards. Tested on several
      1st and 2nd generation TX2plus and TX4 chips.
      Signed-off-by: NMikael Pettersson <mikpe@it.uu.se>
      Signed-off-by: NJeff Garzik <jeff@garzik.org>
      5ac2fe57
    • M
      sata_promise: fix another error decode regression · 8ffcfd9d
      Mikael Pettersson 提交于
      The sata_promise error decode update changed pdc_host_intr()
      to return and not complete the qc after detecting an error.
      Unfortunately not completing the qc:s causes them to always
      time out on error, which is wrong and has nasty side-effects.
      
      This patch updates pdc_error_intr() to call ata_port_abort(),
      similar to ahci and sata_sil24. Doing this is important as it
      makes EH see the original error and not a bogus timeout.
      Signed-off-by: NMikael Pettersson <mikpe@it.uu.se>
      Signed-off-by: NJeff Garzik <jeff@garzik.org>
      8ffcfd9d
    • T
      libata-acpi: fix _GTF command protocol for ATAPI devices · 48be6b18
      Tejun Heo 提交于
      _GTF command is never ATA_PROT_ATAPI_NODATA whether the device is
      ATAPI or not.  It's always ATA_PROT_NODATA.
      Signed-off-by: NTejun Heo <htejun@gmail.com>
      Signed-off-by: NJeff Garzik <jeff@garzik.org>
      48be6b18
    • A
      atl1: add netconsole support · 497f050c
      Alexey Dobriyan 提交于
      Copied from b44 driver, but it works:
      
      netconsole: device eth0 not up yet, forcing it
      atl1: eth0 link is up 100 Mbps full duplex
      netconsole: network logging started
      Signed-off-by: NAlexey Dobriyan <adobriyan@gmail.com>
      Signed-off-by: NJeff Garzik <jeff@garzik.org>
      497f050c
    • P
      Fix hang on IBM Token Ring PCMCIA card ejection · 5bebf82f
      Paul Walmsley 提交于
      Ejecting a PCMCIA IBM Token Ring card that has not had its dev->open()
      called will reliably trigger an uninitialized spinlock oops when
      spinlock debugging is enabled. The system then hangs, occasionally
      softlockup oopsing.  Apparently ibmtr.c:tok_interrupt() doesn't expect
      to be called before tok_open(), but tok_interrupt() gets called anyway
      when the card is ejected.  So, set an already-existing flag which
      causes tok_interrupt() to bail out early upon card ejection. Tested by
      inserting and removing the PCMCIA card several times.
      Signed-off-by: NPaul Walmsley <paul@booyaka.com>
      Signed-off-by: NJeff Garzik <jeff@garzik.org>
      5bebf82f
    • S
      skge: default WOL should be magic only (rev2) · 5b982c5b
      Stephen Hemminger 提交于
      By default, the skge driver now enables wake on magic and wake on PHY.
      This is a bad default (bug), wake on PHY means machine will never shutdown
      if connected to a switch.
      
      Signed-off-by: Stephen Hemminger <shemminger@linux-foundation.org>a
      Signed-off-by: NJeff Garzik <jeff@garzik.org>
      5b982c5b
    • J
      Merge branch 'upstream' of... · 2c4f365a
      Jeff Garzik 提交于
      Merge branch 'upstream' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-2.6 into upstream
      2c4f365a
    • L
      Merge master.kernel.org:/pub/scm/linux/kernel/git/bart/ide-2.6 · 3cb7396b
      Linus Torvalds 提交于
      * master.kernel.org:/pub/scm/linux/kernel/git/bart/ide-2.6:
        ide: fix PIO setup on resume for ATAPI devices
        ide: legacy PCI bus order probing fixes
        ide: add ide_proc_register_port()
        ide: add "initializing" argument to ide_register_hw()
        ide: cable detection fixes (take 2)
        ide: move IDE settings handling to ide-proc.c
        ide: split off ioctl handling from IDE settings (v2)
        ide: make /proc/ide/ optional
        ide: add ide_tune_dma() helper
        ide: rework the code for selecting the best DMA transfer mode (v3)
        ide: fix UDMA/MWDMA/SWDMA masks (v3)
      3cb7396b
    • L
      Merge git://git.linux-nfs.org/pub/linux/nfs-2.6 · d0b6e0e3
      Linus Torvalds 提交于
      * git://git.linux-nfs.org/pub/linux/nfs-2.6:
        NFS: Kill the obsolete NFS_PARANOIA
        NFS: use __set_current_state()
        sunrpc: fix crash in rpc_malloc()
        NFS: Clean up NFSv4 XDR error message
        NFS: NFS client underestimates how large an NFSv4 SETATTR reply can be
        SUNRPC: Fix pointer arithmetic bug recently introduced in rpc_malloc/free
        NFS: Remove redundant check in nfs_check_verifier()
        NFS: Fix a jiffie wraparound issue
      d0b6e0e3
    • B
      ide: fix PIO setup on resume for ATAPI devices · 317a46a2
      Bartlomiej Zolnierkiewicz 提交于
      PIO should be restored also for ATAPI devices during resume, fix it.
      Signed-off-by: NBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
      317a46a2
    • B
      ide: legacy PCI bus order probing fixes · 6d208b39
      Bartlomiej Zolnierkiewicz 提交于
      IDE PCI host drivers should register themselves with IDE core only when
      IDE driver is built-in, otherwise (IDE driver is modular and thus IDE PCI
      host drivers are also modular) the code has no effect and just complicates
      the probing.
      
      Fix it by adding new config option CONFIG_IDEPCI_PCIBUS (defined only when
      needed and invisible to the user) and covering by #ifdef/#endif the code
      in question.  It turned out that "ide=reverse" was silently accepted but did
      nothing in case when IDE driver was modular, this is fixed now.
      Signed-off-by: NBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
      6d208b39
    • B
      ide: add ide_proc_register_port() · 5cbf79cd
      Bartlomiej Zolnierkiewicz 提交于
      * create_proc_ide_interfaces() tries to add /proc entries for every probed
        and initialized IDE port, replace it by ide_proc_register_port() which does
        it only for the given port (also rename destroy_proc_ide_interface() to
        ide_proc_unregister_port() for consistency)
        
      * convert {create,destroy}_proc_ide_interface[s]() users to use new functions
      
      * pmac driver depended on proc_ide_create() to add /proc port entries, fix it
        
      * au1xxx-ide, swarm and cs5520 drivers depended indirectly on ide-generic
        driver (CONFIG_IDE_GENERIC=y) to add port /proc entries, fix them
      
      * there is now no need to add /proc entries for IDE ports in proc_ide_create()
        so don't do it
      
      * proc_ide_create() needs now to be called before drivers are probed - fix it,
        while at it make proc_ide_create() create /proc "ide" directory
      Signed-off-by: NBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
      5cbf79cd
    • B
      ide: add "initializing" argument to ide_register_hw() · 869c56ee
      Bartlomiej Zolnierkiewicz 提交于
      Add "initializing" argument to ide_register_hw() and use it instead of ide.c
      wide variable of the same name.  Update all users of ide_register_hw()
      accordingly.
      Signed-off-by: NBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
      869c56ee
    • B
      ide: cable detection fixes (take 2) · 7f8f48af
      Bartlomiej Zolnierkiewicz 提交于
      Tejun's recent eighty_ninty_three() fix has inspired me to do more thorough
      review of the cable detection code...
      
      * print user-friendly warning about limiting the maximum transfer speed
        to UDMA33 (and the reason behind it) when 80-wire cable is not detected,
        also while at it cleanup eighty_ninty_three() a bit
      
      * use eighty_ninty_three() in ide_ata66_check(), this actually fixes 3 bugs:
        - bit 14 (word 93 validity check) == 1 && bit 13 (80-wire cable test) == 1
          were used as 80-wire cable present test for CONFIG_IDEDMA_IVB=n case
          (please see FIXME comment in eighty_ninty_three() for more details)
        - CONFIG_IDEDMA_IVB=y/n cases were interchanged
        - check for SATA devices was missing
      
      * remove private cable warnings from pdc_202xx{old,new} drivers now that core
        code provides this functionality (plus, in pdc202xx_new case the test could
        give false warnings for ATAPI devices because pdc202xx_new driver doesn't
        even support ATAPI DMA)
      
      Cc: Tejun Heo <htejun@gmail.com>
      Signed-off-by: NBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
      7f8f48af
    • B
      ide: move IDE settings handling to ide-proc.c · 7662d046
      Bartlomiej Zolnierkiewicz 提交于
      * move
      	__ide_add_setting()
      	ide_add_setting()
      	__ide_remove_setting()
      	auto_remove_settings()
      	ide_find_setting_by_name()
      	ide_read_setting()
      	ide_write_setting()
      	set_xfer_rate()
      	ide_add_generic_settings()
      	ide_register_subdriver()
      	ide_unregister_subdriver()
      
        from ide.c to ide-proc.c
      
      * set_{io_32bit,pio_mode,using_dma}() cannot be marked static now, fix it
      
      * rename ide_[un]register_subdriver() to ide_proc_[un]register_driver(),
        update device drivers to use new names
      
      * add CONFIG_IDE_PROC_FS=n versions of ide_proc_[un]register_driver()
        and ide_add_generic_settings()
      
      * make ide_find_setting_by_name(), ide_{read,write}_setting()
        and ide_{add,remove}_proc_entries() static
      
      * cover IDE settings code in device drivers with CONFIG_IDE_PROC_FS #ifdef,
        also while at it cover with CONFIG_IDE_PROC_FS #ifdef ide_driver_t.proc
      
      * remove bogus comment from ide.h
      
      * cover with CONFIG_IDE_PROC_FS #ifdef .proc and .settings in ide_drive_t
      
      Besides saner code this patch results in the IDE core smaller by ~2 kB
      (on x86-32) and IDE disk driver by ~1 kB (ditto) when CONFIG_IDE_PROC_FS=n.
      Signed-off-by: NBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
      7662d046
    • B
      ide: split off ioctl handling from IDE settings (v2) · 1497943e
      Bartlomiej Zolnierkiewicz 提交于
      * do write permission and min/max checks in ide_procset_t functions
      
      * ide-disk.c: drive->id is always available so cleanup "multcount" setting
        accordingly
      
      * ide-disk.c: "address" setting was incorrectly defined as type TYPE_INTA,
        fix it by using type TYPE_BYTE and updating ide_drive_t->adressing field,
        the bug didn't trigger because this IDE setting uses custom ->set function
      
      * ide.c: add set_ksettings() for handling HDIO_SET_KEEPSETTINGS ioctl
      
      * ide.c: add set_unmaskirq() for handling HDIO_SET_UNMASKINTR ioctl
      
      * handle ioctls directly in generic_ide_ioclt() and idedisk_ioctl()
        instead of using IDE settings to deal with them
      
      * remove no longer needed ide_find_setting_by_ioctl() and {read,write}_ioctl
        fields from ide_settings_t, also remove now unused TYPE_INTA handling
      
      v2:
      * add missing EXPORT_SYMBOL_GPL(ide_setting_sem) needed now for ide-disk
      Signed-off-by: NBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
      1497943e
    • B
      ide: make /proc/ide/ optional · ecfd80e4
      Bartlomiej Zolnierkiewicz 提交于
      All important information/features should be already available through
      sysfs and ioctl interfaces.
      
      Add CONFIG_IDE_PROC_FS (CONFIG_SCSI_PROC_FS rip-off) config option,
      disabling it makes IDE driver ~5 kB smaller (on x86-32).
      
      While at it add CONFIG_PROC_FS=n versions of proc_ide_{create,destroy}()
      and remove no longer needed #ifdefs.
      Signed-off-by: NBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
      ecfd80e4
    • B
      ide: add ide_tune_dma() helper · 29e744d0
      Bartlomiej Zolnierkiewicz 提交于
      After reworking the code responsible for selecting the best DMA
      transfer mode it is now possible to add generic ide_tune_dma() helper.
      
      Convert some IDE PCI host drivers to use it (the ones left need more work).
      Signed-off-by: NBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
      29e744d0
    • B
      ide: rework the code for selecting the best DMA transfer mode (v3) · 2d5eaa6d
      Bartlomiej Zolnierkiewicz 提交于
      Depends on the "ide: fix UDMA/MWDMA/SWDMA masks" patch.
      
      * add ide_hwif_t.udma_filter hook for filtering UDMA mask
        (use it in alim15x3, hpt366, siimage and serverworks drivers)
      * add ide_max_dma_mode() for finding best DMA mode for the device
        (loosely based on some older libata-core.c code)
      * convert ide_dma_speed() users to use ide_max_dma_mode()
      * make ide_rate_filter() take "ide_drive_t *drive" as an argument instead
        of "u8 mode" and teach it to how to use UDMA mask to do filtering
      * use ide_rate_filter() in hpt366 driver
      * remove no longer needed ide_dma_speed() and *_ratemask()
      * unexport eighty_ninty_three()
      
      v2:
      * rename ->filter_udma_mask to ->udma_filter
        [ Suggested by Sergei Shtylyov <sshtylyov@ru.mvista.com>. ]
      
      v3:
      * updated for scc_pata driver (fixes XFER_UDMA_6 filtering for user-space
        originated transfer mode change requests when 100MHz clock is used)
      Signed-off-by: NBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
      2d5eaa6d
    • B
      ide: fix UDMA/MWDMA/SWDMA masks (v3) · 18137207
      Bartlomiej Zolnierkiewicz 提交于
      * use 0x00 instead of 0x80 to disable ->{ultra,mwdma,swdma}_mask
      * add udma_mask field to ide_pci_device_t and use it to initialize
        ->ultra_mask in aec62xx, cmd64x, pdc202xx_{new,old} and piix drivers
      * fix UDMA masks to match with chipset specific *_ratemask()
        (alim15x3, hpt366, serverworks and siimage drivers need UDMA mask
         filtering method - done in the next patch)
      
      v2:
      * piix: fix cable detection for 82801AA_1 and 82372FB_1
        [ Noticed by Sergei Shtylyov <sshtylyov@ru.mvista.com>. ]
      * cmd64x: use hwif->cds->udma_mask
        [ Suggested by Sergei Shtylyov <sshtylyov@ru.mvista.com>. ]
      * aec62xx: fix newly introduced bug - check DMA status not command register
        [ Noticed by Sergei Shtylyov <sshtylyov@ru.mvista.com>. ]
      
      v3:
      * piix: use hwif->cds->udma_mask
        [ Suggested by Sergei Shtylyov <sshtylyov@ru.mvista.com>. ]
      Signed-off-by: NBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
      18137207