1. 18 4月, 2008 16 次提交
    • B
      ide: add CONFIG_IDE_ARCH_OBSOLETE_DEFAULTS (take 2) · 0e33555f
      Bartlomiej Zolnierkiewicz 提交于
      * Add CONFIG_IDE_ARCH_OBSOLETE_DEFAULTS to drivers/ide/Kconfig and use
        it instead of defining IDE_ARCH_OBSOLETE_DEFAULTS in <arch/ide.h>.
      
      v2:
      * Define ide_default_irq() in ide-probe.c/ns87415.c if not already defined
        and drop defining ide_default_irq() for CONFIG_IDE_ARCH_OBSOLETE_DEFAULTS=n.
      
        [ Thanks to Stephen Rothwell and David Miller for noticing the problem. ]
      
      Cc: Stephen Rothwell <sfr@canb.auug.org.au>
      Cc: David Miller <davem@davemloft.net>
      Signed-off-by: NBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
      0e33555f
    • B
      ppc: remove ppc_ide_md · 1d850bd0
      Bartlomiej Zolnierkiewicz 提交于
      * Add special cases for pplus and prep to ide_default_{irq,io_base}()
        (+ FIXMEs about the need to use IDE platform host driver instead).
      
      * Remove no longer needed ppc_ide_md and struct ide_machdep_calls.
      
      * Then remove <linux/ide.h> include from:
        - arch/powerpc/kernel/setup_32.c
        - arch/ppc/kernel/ppc_ksyms.c
        - arch/ppc/kernel/setup.c
        - arch/ppc/platforms/pplus.c
        - arch/ppc/platforms/prep_setup.c
      
      There should be no functional changes caused by this patch.
      
      Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
      Signed-off-by: NBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
      1d850bd0
    • B
    • B
      ide: add generic packet command representation ide_atapi_pc · 8303b46e
      Borislav Petkov 提交于
      This new struct unifies ide{-floppy,-tape,-scsi}'s view of a packet command. For now,
      it represents the common denominator between the three drivers while adding driver-
      specific members at the end of the struct which will be merged/simplified into the
      generic ATAPI handling code in later steps, or removed completely.
      
      Bart:
      - move struct ide_atapi_pc outside of #ifdef/#endif CONFIG_IDE_PROC_FS
      Signed-off-by: NBorislav Petkov <petkovbb@gmail.com>
      Signed-off-by: NBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
      8303b46e
    • B
      ide: remove IDE_*_REG macros · 23579a2a
      Bartlomiej Zolnierkiewicz 提交于
      * Add IDE_{ALTSTATUS,IREASON,BCOUNTL,BCOUNTH}_OFFSET defines.
      
      * Remove IDE_*_REG macros - this results in more readable
        and slightly smaller code.
      
      There should be no functional changes caused by this patch.
      
      Cc: Borislav Petkov <petkovbb@gmail.com>
      Acked-by: NSergei Shtylyov <sshtylyov@ru.mvista.com>
      Signed-off-by: NBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
      23579a2a
    • B
      ide: add ide_atapi_{discard_data,write_zeros} inline helpers · 7616c0ad
      Bartlomiej Zolnierkiewicz 提交于
      Add ide_atapi_{discard_data,write_zeros} inline helpers to <linux/ide.h>
      and use them instead of home-brewn helpers in ide-{floppy,tape,scsi}.
      
      There should be no functional changes caused by this patch.
      
      Cc: Borislav Petkov <petkovbb@gmail.com>
      Signed-off-by: NBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
      7616c0ad
    • B
      ide: remove ide_init_hwif_ports() · e6bfa38a
      Bartlomiej Zolnierkiewicz 提交于
      ide_init_hwif_ports() is only used by init_ide_data() now, inline it there.
      Signed-off-by: NBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
      e6bfa38a
    • B
      ide: remove ->hold field from ide_hwif_t (take 2) · 2304dc64
      Bartlomiej Zolnierkiewicz 提交于
      ->hold is write-only now, remove it.
      
      v2:
      * v1 missed bast-ide, palm_bk3710, ide-cs and delkin_cb host drivers.
      Acked-by: NSergei Shtylyov <sshtylyov@ru.mvista.com>
      Signed-off-by: NBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
      2304dc64
    • B
      ide: remove broken/dangerous HDIO_[UNREGISTER,SCAN]_HWIF ioctls (take 3) · 93de00fd
      Bartlomiej Zolnierkiewicz 提交于
      hdparm explicitely marks HDIO_[UNREGISTER,SCAN]_HWIF ioctls as DANGEROUS
      and given the number of bugs we can assume that there are no real users:
      
      * DMA has no chance of working because DMA resources are released by
        ide_unregister() and they are never allocated again.
      
      * Since ide_init_hwif_ports() is used for ->io_ports[] setup the ioctls
        don't work for almost all hosts with "non-standard" (== non ISA-like)
        layout of IDE taskfile registers (there is a lot of such host drivers).
      
      * ide_port_init_devices() is not called when probing IDE devices so:
        - drive->autotune is never set and IDE host/devices are not programmed
          for the correct PIO/DMA transfer modes (=> possible data corruption)
        - host specific I/O 32-bit and IRQ unmasking settings are not applied
          (=> possible data corruption)
        - host specific ->port_init_devs method is not called (=> no luck with
          ht6560b, qd65xx and opti621 host drivers)
      
      * ->rw_disk method is not preserved (=> no HPT3xxN chipsets support).
      
      * ->serialized flag is not preserved (=> possible data corruption when
         using icside, aec62xx (ATP850UF chipset), cmd640, cs5530, hpt366
         (HPT3xxN chipsets), rz1000, sc1200, dtc2278 and ht6560b host drivers).
      
      * ->ack_intr method is not preserved (=> needed by ide-cris, buddha,
        gayle and macide host drivers).
      
      * ->sata_scr[] and sata_misc[] is cleared by ide_unregister() and it
        isn't initialized again (SiI3112 support needs them).
      
      * To issue an ioctl() there need to be at least one IDE device present
        in the system.
      
      * ->cable_detect method is not preserved + it is not called when probing
        IDE devices so cable detection is broken (however since DMA support is
        also broken it doesn't really matter ;-).
      
      * Some objects which may have already been freed in ide_unregister()
        are restored by ide_hwif_restore() (i.e. ->hwgroup).
      
      * ide_register_hw() may unregister unrelated IDE ports if free ide_hwifs[]
        slot cannot be found.
      
      * When IDE host drivers are modular unregistered port may be re-used by
        different host driver that owned it first causing subtle bugs.
      
      Since we now have a proper warm-plug support remove these ioctls,
      then remove no longer needed:
      - ide_register_hw() and ide_hwif_restore() functions
      - 'init_default' and 'restore' arguments of ide_unregister()
      - zeroeing of hwif->{dma,extra}_* fields in ide_unregister()
      
      As an added bonus IDE core code size shrinks by ~3kB (x86-32).
      
      v2:
      * fix ide_unregister() arguments in cleanup_module() (Andrew Morton).
      
      v3:
      * fix ide_unregister() arguments in palm_bk3710.c.
      Acked-by: NSergei Shtylyov <sshtylyov@ru.mvista.com>
      Signed-off-by: NBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
      93de00fd
    • B
      ide: remove obsoleted "idex=base[,ctl[,irq]]" kernel parameters (take 2) · 9a0e77f2
      Bartlomiej Zolnierkiewicz 提交于
      * Remove obsoleted "idex=base[,ctl[,irq]]" kernel parameters
        and update Documentation/ide/ide.txt.
      
      * Remove no longer needed ide_forced chipset type.
      
      v2:
      * is_chipset_set[] -> is_chipset_set in ide.c.
      
      * Documentation/ide/ide.txt fix.
      Signed-off-by: NBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
      9a0e77f2
    • B
      ide: add warm-plug support for IDE devices (take 2) · f74c9141
      Bartlomiej Zolnierkiewicz 提交于
      * Add 'struct class ide_port_class' ('ide_port' class) and a 'struct
        device *portdev' ('ide_port' class device) in ide_hwif_t.
      
      * Register 'ide_port' class in ide_init() and unregister it in
        cleanup_module().
      
      * Create ->portdev in ide_register_port () and unregister it in
        ide_unregister().
      
      * Add "delete_devices" class device attribute for unregistering IDE devices
        on a port and "scan" one for probing+registering IDE devices on a port.
      
      * Add ide_sysfs_register_port() helper for registering "delete_devices"
        and "scan" attributes with ->portdev.  Call it in ide_device_add_all().
      
      * Document IDE warm-plug support in Documentation/ide/warm-plug-howto.txt.
      
      v2:
      * Convert patch from using 'struct class_device' to use 'struct device'.
        (thanks to Kay Sievers for doing it)
      Signed-off-by: NBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
      f74c9141
    • B
      ide: remove dead/obsolete ->busproc method · 50672e5d
      Bartlomiej Zolnierkiewicz 提交于
      ->busproc method is used by HDIO_SET_BUSSTATE ioctl but it has no chance
      of working as intended (in 2.4.x days) because to issue an ioctl there
      is a device node needed and:
      
      - for BUSSTATE_TRISTATE+OFF it is too late (devices are already gone)
      
      - for BUSSTATE_TRISTATE+ON it is too early (devices are not registered yet)
      
      Just remove ->busproc method for now (it was only implemented by hpt366,
      siimage and tc86c001 host drivers).
      
      Cc: Sergei Shtylyov <sshtylyov@ru.mvista.com>
      Signed-off-by: NBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
      50672e5d
    • B
      ide: rework PowerMac media-bay support (take 2) · 2dde7861
      Bartlomiej Zolnierkiewicz 提交于
      Rework PowerMac media-bay support in such way that instead of
      un/registering the IDE interface we un/register IDE devices:
      
      * Add ide_port_scan() helper for probing+registerering devices on a port.
      
      * Rename ide_port_unregister_devices() to __ide_port_unregister_devices().
      
      * Add ide_port_unregister_devices() helper for unregistering devices on a port.
      
      * Add 'ide_hwif_t *cd_port' to 'struct media_bay_info', pass 'hwif' instead
        of hwif->index to media_bay_set_ide_infos() and use it to setup 'cd_port'.
      
      * Use ide_port_unregister_devices() instead of ide_unregister()
        and ide_port_scan() instead of ide_register_hw() in media_bay_step().
      
      * Unexport ide_register_hw() and make it static.
      
      v2:
      * Fix build by adding <linux/ide.h> include to <asm-powerpc/mediabay.h>.
        (Reported by Michael/Kamalesh/Andrew).
      
      Cc: Kamalesh Babulal <kamalesh@linux.vnet.ibm.com>
      Cc: Michael Ellerman <michael@ellerman.id.au>
      Cc: Andrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
      2dde7861
    • B
      ide: remove IDE devices from /proc/ide/ before unregistering them · 5b0c4b30
      Bartlomiej Zolnierkiewicz 提交于
      IDE devices need to be removed from /proc/ide/ _before_ being unregistered:
      
      * Drop 'ide_hwif_t *hwif' argument from destroy_proc_ide_device()
        and use drive->hwif instead.
      
      * Rename destroy_proc_ide_device() to ide_proc_unregister_device().
      
      * Call ide_proc_unregister_device() in drive_release_dev().
      
      * Remove no longer needed destroy_proc_ide_drives().
      Signed-off-by: NBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
      5b0c4b30
    • B
      ide: use ide_find_port() instead of ide_deprecated_find_port() · 4f0eee4d
      Bartlomiej Zolnierkiewicz 提交于
      * Use ide_find_port() instead of ide_deprecated_find_port() in bast-ide/
        palm_bk3710/ide-cs/delkin_cb host drivers and in ide_register_hw().
      
      * Remove no longer needed ide_deprecated_find_port().
      Signed-off-by: NBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
      4f0eee4d
    • G
      IDE: remove ide=reverse IDE core · a594eeb1
      Greg Kroah-Hartman 提交于
      This option is obsolete and can be removed safely.
      
      It allows us to remove the pci_get_device_reverse() function from the
      PCI core.
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      Signed-off-by: NBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
      a594eeb1
  2. 17 4月, 2008 2 次提交
  3. 16 4月, 2008 5 次提交
  4. 15 4月, 2008 1 次提交
  5. 14 4月, 2008 2 次提交
  6. 13 4月, 2008 3 次提交
  7. 12 4月, 2008 1 次提交
  8. 11 4月, 2008 8 次提交
    • H
      Fix "$(AS) -traditional" compile breakage caused by asmlinkage_protect · b0fac023
      Heiko Carstens 提交于
      git commit 54a01510 ("asmlinkage_protect
      replaces prevent_tail_call") causes this build failure on s390:
      
          AS      arch/s390/kernel/entry64.o
        In file included from arch/s390/kernel/entry64.S:14:
        include/linux/linkage.h:34: error: syntax error in macro parameter list
        make[1]: *** [arch/s390/kernel/entry64.o] Error 1
        make: *** [arch/s390/kernel] Error 2
      
      and some other architectures.  The reason is that some architectures add
      the "-traditional" flag to the invocation of $(AS), which disables
      variadic macro argument support.
      
      So just surround the new define with an #ifndef __ASSEMBLY__ to prevent
      any side effects on asm code.
      
      Cc: Roland McGrath <roland@redhat.com>
      Cc: Martin Schwidefsky <schwidefsky@de.ibm.com>
      Signed-off-by: NHeiko Carstens <heiko.carstens@de.ibm.com>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      b0fac023
    • B
      pnp: increase number of devices supported per protocol · 544451a1
      Bjorn Helgaas 提交于
      Increase the PNP "number of devices" limit.  We currently use an unsigned
      char, which limits us to 256 devices per protocol.  This patch changes that to
      an unsigned int.
      
      Not all backends can take advantage of this: we limit ISAPNP to 10 devices in
      isapnp_cfg_begin(), and PNPBIOS is limited to 256 devices because the BIOS
      interfaces use a one-byte device node number.
      
      But there is no limit on the number of PNPACPI devices we may have.  Large HP
      Integrity machines have more than 256, which causes the current "unsigned char
      number" to wrap around.  This causes errors like this:
      
          pnp: PnP ACPI init
          kobject_add failed for 00:00 with -EEXIST, don't try to register things with the same name in the same directory.
      
          Call Trace:
           [<a000000100010720>] show_stack+0x40/0xa0
           [<a0000001000107b0>] dump_stack+0x30/0x60
           [<a0000001001dbdf0>] kobject_add+0x290/0x2c0
           [<a0000001002bfd40>] device_add+0x160/0x860
           [<a0000001002c0470>] device_register+0x30/0x60
           [<a00000010026ba70>] __pnp_add_device+0x130/0x180
           [<a00000010026bb70>] pnp_add_device+0xb0/0xe0
           [<a0000001007f2730>] pnpacpi_add_device+0x510/0x5a0
           [<a0000001007f2810>] pnpacpi_add_device_handler+0x50/0x80
      
      This patch increases the limit to fix this PNPACPI problem.  It should not
      have any adverse effect on ISAPNP or PNPBIOS because their limits are still
      enforced in the backends.
      Signed-off-by: NBjorn Helgaas <bjorn.helgaas@hp.com>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      544451a1
    • L
      Add commentary about the new "asmlinkage_protect()" macro · d10d89ec
      Linus Torvalds 提交于
      It's really a pretty ugly thing to need, and some day it will hopefully
      be obviated by teaching gcc about the magic calling conventions for the
      low-level system call code, but in the meantime we can at least add big
      honking comments about why we need these insane and strange macros.
      
      I took my comments from my version of the macro, but I ended up deciding
      to just pick Roland's version of the actual code instead (with his
      prettier syntax that uses vararg macros).  Thus the previous two commits
      that actually implement it.
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      d10d89ec
    • R
      asmlinkage_protect replaces prevent_tail_call · 54a01510
      Roland McGrath 提交于
      The prevent_tail_call() macro works around the problem of the compiler
      clobbering argument words on the stack, which for asmlinkage functions
      is the caller's (user's) struct pt_regs.  The tail/sibling-call
      optimization is not the only way that the compiler can decide to use
      stack argument words as scratch space, which we have to prevent.
      Other optimizations can do it too.
      
      Until we have new compiler support to make "asmlinkage" binding on the
      compiler's own use of the stack argument frame, we have work around all
      the manifestations of this issue that crop up.
      
      More cases seem to be prevented by also keeping the incoming argument
      variables live at the end of the function.  This makes their original
      stack slots attractive places to leave those variables, so the compiler
      tends not clobber them for something else.  It's still no guarantee, but
      it handles some observed cases that prevent_tail_call() did not.
      Signed-off-by: NRoland McGrath <roland@redhat.com>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      54a01510
    • D
      FRV: Don't make smp_{r, w, }mb() interpolate MEMBAR when CONFIG_SMP=n [try #2] · f17520e1
      David Howells 提交于
      Don't make smp_{r,w,}mb() interpolate a MEMBAR instruction when CONFIG_SMP=n as
      SMP memory barries on UP systems should interpolate a compiler barrier only.
      Signed-off-by: NDavid Howells <dhowells@redhat.com>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      f17520e1
    • D
      FRV: Add support for emulation of userspace atomic ops [try #2] · e31c243f
      David Howells 提交于
      Use traps 120-126 to emulate atomic cmpxchg32, xchg32, and XOR-, OR-, AND-, SUB-
      and ADD-to-memory operations for userspace.
      Signed-off-by: NDavid Howells <dhowells@redhat.com>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      e31c243f
    • D
      FRV: Move STACK_TOP_MAX up [try #2] · 0c93d8e4
      David Howells 提交于
      Move STACK_TOP_MAX up so that we don't try moving the stack above it as that
      causes setup_arg_pages() to malfunction.
      Signed-off-by: NDavid Howells <dhowells@redhat.com>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      0c93d8e4
    • D
      FRV: Handle update_mmu_cache() being called when current->mm is NULL [try #2] · a31b9dd8
      David Howells 提交于
      Handle update_mmu_cache() being called when current->mm is NULL.
      
      We cache static TLB mappings for the current page table in DAMPR4 and DAMPR5
      on the theory that the next data lookup is likely to be in the same general
      region, and thus is likely to be mapped by the same page table.  However, we
      can't get this information if we can't access the appropriate mm_struct.
      
      If current->mm is NULL, we just clear the cache in the knowledge that the TLB
      miss handlers will load it.
      Signed-off-by: NDavid Howells <dhowells@redhat.com>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      a31b9dd8
  9. 08 4月, 2008 2 次提交
    • I
      [TCP]: tcp_simple_retransmit can cause S+L · 882bebaa
      Ilpo Järvinen 提交于
      This fixes Bugzilla #10384
      
      tcp_simple_retransmit does L increment without any checking
      whatsoever for overflowing S+L when Reno is in use.
      
      The simplest scenario I can currently think of is rather
      complex in practice (there might be some more straightforward
      cases though). Ie., if mss is reduced during mtu probing, it
      may end up marking everything lost and if some duplicate ACKs
      arrived prior to that sacked_out will be non-zero as well,
      leading to S+L > packets_out, tcp_clean_rtx_queue on the next
      cumulative ACK or tcp_fastretrans_alert on the next duplicate
      ACK will fix the S counter.
      
      More straightforward (but questionable) solution would be to
      just call tcp_reset_reno_sack() in tcp_simple_retransmit but
      it would negatively impact the probe's retransmission, ie.,
      the retransmissions would not occur if some duplicate ACKs
      had arrived.
      
      So I had to add reno sacked_out reseting to CA_Loss state
      when the first cumulative ACK arrives (this stale sacked_out
      might actually be the explanation for the reports of left_out
      overflows in kernel prior to 2.6.23 and S+L overflow reports
      of 2.6.24). However, this alone won't be enough to fix kernel
      before 2.6.24 because it is building on top of the commit
      1b6d427b ([TCP]: Reduce sacked_out with reno when purging
      write_queue) to keep the sacked_out from overflowing.
      Signed-off-by: NIlpo Järvinen <ilpo.jarvinen@helsinki.fi>
      Reported-by: NAlessandro Suardi <alessandro.suardi@gmail.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      882bebaa
    • R
      [MIPS] Handle aliases in vmalloc correctly. · 9c5a3d72
      Ralf Baechle 提交于
      flush_cache_vmap / flush_cache_vunmap were calling flush_cache_all which -
      having been deprecated - turned into a nop ...
      Signed-off-by: NRalf Baechle <ralf@linux-mips.org>
      9c5a3d72