1. 26 1月, 2008 23 次提交
    • B
      ide: remove CONFIG_IDEPCI_SHARE_IRQ config option · f1ca6d37
      Bartlomiej Zolnierkiewicz 提交于
      We can safely remove CONFIG_IDEPCI_SHARE_IRQ and always support
      PCI IRQ sharing.
      Signed-off-by: NBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
      f1ca6d37
    • B
      ide: remove IRQF_DISABLED from IRQ flags for IDE IRQ handler · 7b5da4be
      Bartlomiej Zolnierkiewicz 提交于
      IRQF_DISABLED is not needed because the first thing that ide_intr()
      (IDE IRQ handler) does is calling spin_lock_irqsave() which disables
      local IRQs (IRQ unmasking is later handled by drive->unmask).
      
      kernel/irq/handle.c:
      
      irqreturn_t handle_IRQ_event(unsigned int irq, struct irqaction *action)
      ...
      	if (!(action->flags & IRQF_DISABLED))
      		local_irq_enable_in_hardirq();
      
      	do {
      		ret = action->handler(irq, action->dev_id);
      		if (ret == IRQ_HANDLED)
      			status |= action->flags;
      		retval |= ret;
      		action = action->next;
      	} while (action);
      ...
      
      drivers/ide/ide-io.c:
      
      irqreturn_t ide_intr (int irq, void *dev_id)
      ...
      	spin_lock_irqsave(&ide_lock, flags);
      ...
      	spin_unlock(&ide_lock);
      ...
      	if (drive->unmask)
      		local_irq_enable_in_hardirq();
      ...
      Signed-off-by: NBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
      7b5da4be
    • B
      ide-pmac: fix pmac_ide_init_hwif_ports() · d26805fd
      Bartlomiej Zolnierkiewicz 提交于
      * pmac_ide_init_hwif_ports() can be called by ide_init_hwif_ports()
        (through ppc_ide_md.ide_init_hwif hook) for non IDE PMAC interfaces.
        If this is the case the hw->io_ports[] should be already setup by
        ide_init_hwif_ports()->ide_std_init_ports() so remove redundant code
        from pmac_ide_init_hwif_ports().
      
        As side-effect this change fixes ctl_addr == 0 special handling in
        ide_init_hwif_ports().
      
      * Fix misleading comment while at it.
      
      Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
      Cc: Alan Cox <alan@lxorguk.ukuu.org.uk>
      Signed-off-by: NBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
      d26805fd
    • B
      ide: use do_rw_taskfile() in flagged_taskfile() · 74095a91
      Bartlomiej Zolnierkiewicz 提交于
      Based on the earlier work by Tejun Heo.
      
      * Move setting IDE_TFLAG_LBA48 taskfile flag from do_rw_taskfile()
        function to the callers.
      
      * Add IDE_TFLAG_FLAGGED taskfile flag for flagged taskfiles coming
        from ide_taskfile_ioctl().  Check it instead of ->tf_out_flags.all.
      
      * Add IDE_TFLAG_OUT_DATA taskfile flag to indicate the need to load
        IDE data register in ide_tf_load().
      
      * Add IDE_TFLAG_OUT_* taskfile flags to indicate the need to load
        particular IDE taskfile registers in ide_tf_load().
      
      * Update do_rw_taskfile() and ide_tf_load() users to set respective
        IDE_TFLAG_OUT_* taksfile flags.
      
      * Add task_dma_ok() helper.
      
      * Use IDE_TFLAG_FLAGGED taskfile flag to select HIHI mask in ide_tf_load().
      
      * Use do_rw_taskfile() in flagged_taskfile().
      
      * Remove no longer needed 'tf_out_flags' field from ide_task_t.
      
      There should be no functionality changes caused by this patch.
      
      Cc: Tejun Heo <htejun@gmail.com>
      Signed-off-by: NBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
      74095a91
    • B
      ide: add ide_no_data_taskfile() helper · 9a3c49be
      Bartlomiej Zolnierkiewicz 提交于
      * Add ide_no_data_taskfile() helper and convert ide_raw_taskfile() w/ NO DATA
        protocol users to use it instead.
      
      * Set ->data_phase explicitly in ide_no_data_taskfile()
        (TASKFILE_NO_DATA is defined as 0x0000).
      
      * Unexport task_no_data_intr().
      Acked-by: NSergei Shtylyov <sshtylyov@ru.mvista.com>
      Signed-off-by: NBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
      9a3c49be
    • B
      ide: add ide_tf_load() helper · 9e42237f
      Bartlomiej Zolnierkiewicz 提交于
      Based on the earlier work by Tejun Heo.
      
      * Add 'tf_flags' field (for taskfile flags) to ide_task_t.
      
      * Add IDE_TFLAG_LBA48 taskfile flag for LBA48 taskfiles.
      
      * Add IDE_TFLAG_NO_SELECT_MASK taskfile flag for __ide_do_rw_disk()
        which doesn't use SELECT_MASK() (looks like a bug but it requires
        some more investigation).
      
      * Split off ide_tf_load() helper from do_rw_taskfile().
      
      * Convert __ide_do_rw_disk() to use ide_tf_load().
      
      There should be no functionality changes caused by this patch.
      
      Cc: Tejun Heo <htejun@gmail.com>
      Acked-by: NSergei Shtylyov <sshtylyov@ru.mvista.com>
      Signed-off-by: NBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
      9e42237f
    • B
      ide-disk: use struct ide_taskfile in __ide_do_rw_disk() · 2bd06b23
      Bartlomiej Zolnierkiewicz 提交于
      Based on the earlier work by Tejun Heo.
      
      There should be no functionality changes caused by this patch.
      
      Cc: Tejun Heo <htejun@gmail.com>
      Acked-by: NSergei Shtylyov <sshtylyov@ru.mvista.com>
      Signed-off-by: NBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
      2bd06b23
    • B
      ide-disk: fix taskfile registers loading order in __ide_do_rw_disk() · d00e42dd
      Bartlomiej Zolnierkiewicz 提交于
      Load IDE_SECTOR_REG after IDE_FEATURE_REG and IDE_NSECTOR_REG when using CHS.
      
      This patch is basically a preparation for the next one which converts
      __ide_do_rw_disk() to use struct ide_taskfile.
      
      It shouldn't affect anything (just a usual paranoia to separate changes
      which change the way in which hardware is accessed from code cleanups).
      Signed-off-by: NBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
      d00e42dd
    • B
      ide-disk: merge LBA28 and LBA48 Host Protected Area support code (take 2) · 7a3b7512
      Bartlomiej Zolnierkiewicz 提交于
      * Merge idedisk_{read_native,set}_max_address_ext() into
        idedisk_{read_native,set}_max_address().
      
      v2:
      * Remove LBA48 code leftover from idedisk_read_native_max_address()
        ('high' variable initialization).  (Noticed by Sergei).
      
      There should be no functionality changes caused by this patch.
      Acked-by: NSergei Shtylyov <sshtylyov@ru.mvista.com>
      Signed-off-by: NBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
      7a3b7512
    • B
      ide: add struct ide_taskfile (take 2) · 650d841d
      Bartlomiej Zolnierkiewicz 提交于
      * Don't set write-only ide_task_t.hobRegister[6] and ide_task_t.hobRegister[7]
        in idedisk_set_max_address_ext().
      
      * Add struct ide_taskfile and use it in ide_task_t instead of tfRegister[]
        and hobRegister[].
      
      * Remove no longer needed IDE_CONTROL_OFFSET_HOB define.
      
      * Add #ifndef/#endif __KERNEL__ around definitions of {task,hob}_struct_t.
      
      While at it:
      
      * Use ATA_LBA define for LBA bit (0x40) as suggested by Tejun Heo.
      
      v2:
      * Add missing newlines. (Noticed by Sergei)
      
      * Use ~ATA_LBA instead of 0xBF. (Noticed by Sergei)
      
      * Use unnamed unions for error/feature and status/command.
        (Suggested by Sergei).
      
      There should be no functionality changes caused by this patch.
      Acked-by: NSergei Shtylyov <sshtylyov@ru.mvista.com>
      Cc: Tejun Heo <htejun@gmail.com>
      Signed-off-by: NBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
      650d841d
    • B
      ide: remove task_ioreg_t typedef (take 2) · cd2a2d96
      Bartlomiej Zolnierkiewicz 提交于
      Remove task_ioreg_t typedef from the kernel code (but leave it
      in <linux/hdreg.h> for #ifndef/#endif __KERNEL__ case).
      
      While at it also move sata_ioreg_t typedef under #ifndef/#endif __KERNEL__.
      
      v2:
      Remove name of the second parameter from ide_execute_command() declaration.
      (Noticed by Sergei).
      Acked-by: NSergei Shtylyov <sshtylyov@ru.mvista.com>
      Signed-off-by: NBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
      cd2a2d96
    • B
      ide: remove ->dma_master field from ide_hwif_t (take 5) · 1c029fd6
      Bartlomiej Zolnierkiewicz 提交于
      * Convert cmd64x, hpt366 and pdc202xx_old host drivers to use
        pci_resource_start(hwif->pci_dev, 4) instead of hwif->dma_master.
      
      * Remove no longer needed ->dma_master field from ide_hwif_t.
      
      v2:
      * Use the more readable 'hwif->dma_base - (hwif->channel * 8)' instead of
        pci_resource_start(hwif->pci_dev, 4).
      
      v3:
      * Use hwif->extra_base in hpt366/pdc20xx_old + some cosmetic fixups over v2
        (suggested by Sergei).
      
      v4:
      * Correct offsets in hpt3xxn_set_clock().
      
      v5:
      * Use hwif->extra_base in hpt366 for _real_ this time. (Noticed by Sergei)
      Acked-by: NSergei Shtylyov <sshtylyov@ru.mvista.com>
      Cc: Jeff Garzik <jeff@garzik.org>
      Signed-off-by: NBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
      1c029fd6
    • S
      hpt366: merge set_dma_mode() methods · 866664d7
      Sergei Shtylyov 提交于
      Group the array of pointers to the timing tables with the timing register masks
      which allows us to merge HPT36x/HPT37x set_dma_mode() methods into one.
      Signed-off-by: NSergei Shtylyov <sshtylyov@ru.mvista.com>
      Signed-off-by: NBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
      866664d7
    • S
      hpt366: kill set_dma_mode() method wrapper · a488f34e
      Sergei Shtylyov 提交于
      There's no reason to keep the set_dma_mode() method wrapper for two different
      chip families, so get rid of it...
      Signed-off-by: NSergei Shtylyov <sshtylyov@ru.mvista.com>
      Signed-off-by: NBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
      a488f34e
    • S
      hpt366: change timing register masks · ceb1b2c5
      Sergei Shtylyov 提交于
      Since PIO autotuning is now done always, there's no need anymore to program
      the taskfile timings also on DMA modes, so change the IDE timing register
      masks accordingly, "inverting the polarity" of the masks while at it...
      Signed-off-by: NSergei Shtylyov <sshtylyov@ru.mvista.com>
      Signed-off-by: NBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
      ceb1b2c5
    • A
      ide-io: set REQ_FAILED when drive is dead · b5e1a4e2
      Aristeu Rozanski 提交于
      Currently it's possible to ide-cd to set an incorrect blocksize by
      reading garbage if the drive is dead:
      
      ide_cd_probe()
       -> cdrom_read_toc()
           -> cdrom_read_capacity()
               -> cdrom_queue_packet_command()
                   -> ide_do_drive_cmd()
                       -> ide_do_request()
                           -> start_request()
      
      on start_request():
      
              /* bail early if we've exceeded max_failures */
              if (drive->max_failures && (drive->failures > drive->max_failures)) {
                      goto kill_rq;
              }
      (...)
      kill_rq:
              ide_kill_rq(drive, rq);
              return ide_stopped;
      
      ide_kill_rq() and the next calls won't set REQ_FAILED on rq->cmd_flags and thus
      cdrom_queue_packet_command() won't return an error. then:
      
              stat = cdrom_queue_packet_command(drive, &req);
              if (stat == 0) {
                      *capacity = 1 + be32_to_cpu(capbuf.lba);
                      *sectors_per_frame =
                              be32_to_cpu(capbuf.blocklen) >> SECTOR_BITS;
              }
      
      cdrom_read_capacity() ends believing capbuf is valid but in fact it's just
      uninitialized data. back to cdrom_read_toc():
      
              /* Try to get the total cdrom capacity and sector size. */
              stat = cdrom_read_capacity(drive, &toc->capacity, &sectors_per_frame,
                                         sense);
              if (stat)
                      toc->capacity = 0x1fffff;
      
              set_capacity(info->disk, toc->capacity * sectors_per_frame);
              /* Save a private copy of te TOC capacity for error handling */
              drive->probed_capacity = toc->capacity * sectors_per_frame;
      
              blk_queue_hardsect_size(drive->queue,
                                      sectors_per_frame << SECTOR_BITS);
      
      that will set drive->queue->hardsect_size to be the random value.
      hardsect_size is used to calculate inode->i_blkbits. later on, on a read
      path:
      
      void create_empty_buffers(struct page *page,
                              unsigned long blocksize, unsigned long b_state)
      {       
              struct buffer_head *bh, *head, *tail;
      
              head = alloc_page_buffers(page, blocksize, 1);
              bh = head;
              do {    
                      bh->b_state |= b_state;
                      tail = bh;
                      bh = bh->b_this_page;
              } while (bh);
              tail->b_this_page = head;
      
      alloc_page_buffers() will return NULL if blocksize > 4096. blocksize is
      calculed based on inode->i_blkbits. that will trigger a null
      dereference on create_empty_buffers().
      Signed-off-by: NAristeu Rozanski <arozansk@redhat.com>
      Cc: Borislav Petkov <bbpetkov@yahoo.de>
      Signed-off-by: NBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
      b5e1a4e2
    • L
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/selinux-2.6 · b47711bf
      Linus Torvalds 提交于
      * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/selinux-2.6:
        selinux: make mls_compute_sid always polyinstantiate
        security/selinux: constify function pointer tables and fields
        security: add a secctx_to_secid() hook
        security: call security_file_permission from rw_verify_area
        security: remove security_sb_post_mountroot hook
        Security: remove security.h include from mm.h
        Security: remove security_file_mmap hook sparse-warnings (NULL as 0).
        Security: add get, set, and cloning of superblock security information
        security/selinux: Add missing "space"
      b47711bf
    • L
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/hskinnemoen/avr32-2.6 · 7556afa0
      Linus Torvalds 提交于
      * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/hskinnemoen/avr32-2.6:
        [AVR32] extint: Set initial irq type to low level
        [AVR32] extint: change set_irq_type() handling
        [AVR32] NMI debugging
        [AVR32] constify function pointer tables
        [AVR32] ATNGW100: Update defconfig
        [AVR32] ATSTK1002: Update defconfig
        [AVR32] Kconfig: Choose daughterboard instead of CPU
        [AVR32] Add support for ATSTK1003 and ATSTK1004
        [AVR32] Clean up external DAC setup code
        [AVR32] ATSTK1000: Move gpio-leds setup to setup.c
        [AVR32] Add support for AT32AP7001 and AT32AP7002
        [AVR32] Provide more CPU information in /proc/cpuinfo and dmesg
        [AVR32] Oprofile support
        [AVR32] Include instrumentation menu
        Disable VGA text console for AVR32 architecture
        [AVR32] Enable debugging only when needed
        ptrace: Call arch_ptrace_attach() when request=PTRACE_TRACEME
        [AVR32] Remove redundant try_to_freeze() call from do_signal()
        [AVR32] Drop GFP_COMP for DMA memory allocations
      7556afa0
    • L
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/steve/gfs2-2.6-nmw · e07dd2ad
      Linus Torvalds 提交于
      * git://git.kernel.org/pub/scm/linux/kernel/git/steve/gfs2-2.6-nmw: (56 commits)
        [GFS2] Allow journal recovery on read-only mount
        [GFS2] Lockup on error
        [GFS2] Fix page_mkwrite truncation race path
        [GFS2] Fix typo
        [GFS2] Fix write alloc required shortcut calculation
        [GFS2] gfs2_alloc_required performance
        [GFS2] Remove unneeded i_spin
        [GFS2] Reduce inode size by moving i_alloc out of line
        [GFS2] Fix assert in log code
        [GFS2] Fix problems relating to execution of files on GFS2
        [GFS2] Initialize extent_list earlier
        [GFS2] Allow page migration for writeback and ordered pages
        [GFS2] Remove unused variable
        [GFS2] Fix log block mapper
        [GFS2] Minor correction
        [GFS2] Eliminate the no longer needed sd_statfs_mutex
        [GFS2] Incremental patch to fix compiler warning
        [GFS2] Function meta_read optimization
        [GFS2] Only fetch the dinode once in block_map
        [GFS2] Reorganize function gfs2_glmutex_lock
        ...
      e07dd2ad
    • L
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6 · eba0e319
      Linus Torvalds 提交于
      * git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6: (125 commits)
        [CRYPTO] twofish: Merge common glue code
        [CRYPTO] hifn_795x: Fixup container_of() usage
        [CRYPTO] cast6: inline bloat--
        [CRYPTO] api: Set default CRYPTO_MINALIGN to unsigned long long
        [CRYPTO] tcrypt: Make xcbc available as a standalone test
        [CRYPTO] xcbc: Remove bogus hash/cipher test
        [CRYPTO] xcbc: Fix algorithm leak when block size check fails
        [CRYPTO] tcrypt: Zero axbuf in the right function
        [CRYPTO] padlock: Only reset the key once for each CBC and ECB operation
        [CRYPTO] api: Include sched.h for cond_resched in scatterwalk.h
        [CRYPTO] salsa20-asm: Remove unnecessary dependency on CRYPTO_SALSA20
        [CRYPTO] tcrypt: Add select of AEAD
        [CRYPTO] salsa20: Add x86-64 assembly version
        [CRYPTO] salsa20_i586: Salsa20 stream cipher algorithm (i586 version)
        [CRYPTO] gcm: Introduce rfc4106
        [CRYPTO] api: Show async type
        [CRYPTO] chainiv: Avoid lock spinning where possible
        [CRYPTO] seqiv: Add select AEAD in Kconfig
        [CRYPTO] scatterwalk: Handle zero nbytes in scatterwalk_map_and_copy
        [CRYPTO] null: Allow setkey on digest_null 
        ...
      eba0e319
    • L
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-2.6 · df8dc74e
      Linus Torvalds 提交于
      This can be broken down into these major areas:
       - Documentation updates (language translations and fixes, as
         well as kobject and kset documenatation updates.)
       - major kset/kobject/ktype rework and fixes.  This cleans up the
         kset and kobject and ktype relationship and architecture,
         making sense of things now, and good documenation and samples
         are provided for others to use.  Also the attributes for
         kobjects are much easier to handle now.  This cleaned up a LOT
         of code all through the kernel, making kobjects easier to use
         if you want to.
       - struct bus_type has been reworked to now handle the lifetime
         rules properly, as the kobject is properly dynamic.
       - struct driver has also been reworked, and now the lifetime
         issues are resolved.
       - the block subsystem has been converted to use struct device
         now, and not "raw" kobjects.  This patch has been in the -mm
         tree for over a year now, and finally all the issues are
         worked out with it.  Older distros now properly work with new
         kernels, and no userspace updates are needed at all.
       - nozomi driver is added.  This has also been in -mm for a long
         time, and many people have asked for it to go in.  It is now
         in good enough shape to do so.
       - lots of class_device conversions to use struct device instead.
         The tree is almost all cleaned up now, only SCSI and IB is the
         remaining code to fix up...
      
      * git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-2.6: (196 commits)
        Driver core: coding style fixes
        Kobject: fix coding style issues in kobject c files
        Kobject: fix coding style issues in kobject.h
        Driver core: fix coding style issues in device.h
        spi: use class iteration api
        scsi: use class iteration api
        rtc: use class iteration api
        power supply : use class iteration api
        ieee1394: use class iteration api
        Driver Core: add class iteration api
        Driver core: Cleanup get_device_parent() in device_add() and device_move()
        UIO: constify function pointer tables
        Driver Core: constify the name passed to platform_device_register_simple
        driver core: fix build with SYSFS=n
        sysfs: make SYSFS_DEPRECATED depend on SYSFS
        Driver core: use LIST_HEAD instead of call to INIT_LIST_HEAD in __init
        kobject: add sample code for how to use ksets/ktypes/kobjects
        kobject: add sample code for how to use kobjects in a simple manner.
        kobject: update the kobject/kset documentation
        kobject: remove old, outdated documentation.
        ...
      df8dc74e
    • P
      slab: fix bootstrap on memoryless node · 556a169d
      Pekka Enberg 提交于
      If the node we're booting on doesn't have memory, bootstrapping kmalloc()
      caches resorts to fallback_alloc() which requires ->nodelists set for all
      nodes.  Fix that by calling set_up_list3s() for CACHE_CACHE in
      kmem_cache_init().
      
      As kmem_getpages() is called with GFP_THISNODE set, this used to work before
      because of breakage in 2.6.22 and before with GFP_THISNODE returning pages from
      the wrong node if a node had no memory. So it may have worked accidentally and
      in an unsafe manner because the pages would have been associated with the wrong
      node which could trigger bug ons and locking troubles.
      Tested-by: NMel Gorman <mel@csn.ul.ie>
      Tested-by: NOlaf Hering <olaf@aepfle.de>
      Reviewed-by: NChristoph Lameter <clameter@sgi.com>
      Signed-off-by: NPekka Enberg <penberg@cs.helsinki.fi>
      [ With additional one-liner by Olaf Hering  - Linus ]
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      556a169d
    • K
      fix oops on rmmod capidrv · eb36f4fc
      Karsten Keil 提交于
      Fix overwriting the stack with the version string
      (it is currently 10 bytes + zero) when unloading the
      capidrv module. Safeguard against overwriting it
      should the version string grow in the future.
      
      Should fix Kernel Bug Tracker Bug 9696.
      Signed-off-by: NGerd v. Egidy <gerd.von.egidy@intra2net.com>
      Acked-by: NKarsten Keil <kkeil@suse.de>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      eb36f4fc
  2. 25 1月, 2008 17 次提交