summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* Merge branch 'for-linus' of ↵Linus Torvalds2008-05-1933-192/+180
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6 * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6: [PATCH] return to old errno choice in mkdir() et.al. [Patch] fs/binfmt_elf.c: fix wrong return values [PATCH] get rid of leak in compat_execve() [Patch] fs/binfmt_elf.c: fix a wrong free [PATCH] avoid multiplication overflows and signedness issues for max_fds [PATCH] dup_fd() part 4 - race fix [PATCH] dup_fd() - part 3 [PATCH] dup_fd() part 2 [PATCH] dup_fd() fixes, part 1 [PATCH] take init_files to fs/file.c
| * [PATCH] return to old errno choice in mkdir() et.al.Al Viro2008-05-161-4/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | In case when both EEXIST and EROFS would apply we used to return the former in mkdir(2) and friends. Lest anyone suspects us of being consistent, in the same situation knfsd gave clients nfs_erofs... ro-bind series had switched the syscall side of things to returning -EROFS and immediately broke an application - namely, mkdir -p. Patch restores the original behaviour... Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
| * [Patch] fs/binfmt_elf.c: fix wrong return valuesWANG Cong2008-05-161-2/+2
| | | | | | | | | | | | | | | | | | create_elf_tables() returns 0 on success. But when strnlen_user() "fails", it returns 0 directly. So this is wrong. Signed-off-by: WANG Cong <wangcong@zeuux.org> Cc: Alexander Viro <viro@zeniv.linux.org.uk> Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
| * [PATCH] get rid of leak in compat_execve()Al Viro2008-05-163-6/+11
| | | | | | | | | | | | | | | | | | | | | | Even though copy_compat_strings() doesn't cache the pages, copy_strings_kernel() and stuff indirectly called by e.g. ->load_binary() is doing that, so we need to drop the cache contents in the end. [found by WANG Cong <wangcong@zeuux.org>] Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
| * [Patch] fs/binfmt_elf.c: fix a wrong freeWANG Cong2008-05-161-2/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | In kmalloc failing path, we shouldn't free pointers in 'info', because the struct 'info' is uninitilized when kmalloc is called. And when kmalloc returns NULL, it's needless to kfree it. Signed-off-by: WANG Cong <wangcong@zeuux.org> Cc: Alexander Viro <viro@zeniv.linux.org.uk> Reviewed-by: Pekka Enberg <penberg@cs.helsinki.fi> -- Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
| * [PATCH] avoid multiplication overflows and signedness issues for max_fdsAl Viro2008-05-162-1/+8
| | | | | | | | | | | | | | Limit sysctl_nr_open - we don't want ->max_fds to exceed MAX_INT and we don't want size calculation for ->fd[] to overflow. Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
| * [PATCH] dup_fd() part 4 - race fixAl Viro2008-05-161-2/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Parent _can_ be a clone task, contrary to the comment. Moreover, more files could be opened while we allocate a copy, in which case we end up copying only part into new descriptor table. Since what we get _is_ affected by all changes in the old range, we can get rather weird effects - e.g. dup2(0, 1024); close(0); in parallel with fork() resulting in child that sees the effect of close(), but not that of dup2() done just before that close(). What we need is to recalculate the open_count after having reacquired ->file_lock and if external fdtable we'd just allocated is too small for it, free the sucker and redo allocation. Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
| * [PATCH] dup_fd() - part 3Al Viro2008-05-161-28/+15
| | | | | | | | | | | | merge alloc_files() into dup_fd(), leave setting newf->fdt until the end Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
| * [PATCH] dup_fd() part 2Al Viro2008-05-161-8/+16
| | | | | | | | | | | | | | | | use alloc_fdtable() instead of expand_files(), get rid of pointless grabbing newf->file_lock, kill magic in copy_fdtable() that used to be there only to skip copying when called from dup_fd(). Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
| * [PATCH] dup_fd() fixes, part 1Al Viro2008-05-163-130/+131
| | | | | | | | | | | | Move the sucker to fs/file.c in preparation to the rest Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
| * [PATCH] take init_files to fs/file.cAl Viro2008-05-1625-45/+14
| | | | | | | | Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
* | Merge branch 'for-2.6.26' of ↵Linus Torvalds2008-05-191-0/+21
|\ \ | | | | | | | | | | | | | | | | | | git://git.kernel.org/pub/scm/linux/kernel/git/jwboyer/powerpc-4xx * 'for-2.6.26' of git://git.kernel.org/pub/scm/linux/kernel/git/jwboyer/powerpc-4xx: [POWERPC] 4xx: Workaround for CHIP_11 Errata
| * | [POWERPC] 4xx: Workaround for CHIP_11 ErrataJosh Boyer2008-05-191-0/+21
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The PowerPC 440EP, 440GR, 440EPx, and 440GRx chips have an issue that causes the PLB3-to-PLB4 bridge to wait indefinitely for transaction requests that cross the end-of-memory-range boundary. Since the DDR controller only returns the valid portion of a read request, the bridge will prevent other PLB masters from completing their transactions. This implements the recommended workaround for this errata for chips that use older versions of firmware that do not already handle it. The last 4KiB of memory are hidden from the kernel to prevent the problem transactions from occurring. Signed-off-by: Josh Boyer <jwboyer@linux.vnet.ibm.com> Acked-by: Stefan Roese <sr@denx.de> Signed-off-by: Josh Boyer <jwboyer@linux.vnet.ibm.com>
* | | MAINTAINERS needs further order fixingAlan Cox2008-05-191-36/+36
| | | | | | | | | | | | Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
* | | Merge branch 'for-linus' of ↵Linus Torvalds2008-05-1922-416/+565
|\ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | git://git.kernel.org/pub/scm/linux/kernel/git/cooloney/blackfin-2.6 * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/cooloney/blackfin-2.6: Blackfin SPORTS UART Driver: converting BFIN->BLACKFIN Blackfin serial driver: add extra IRQ flag for 8250 serial driver 8250 Serial Driver: Added support for 8250-class UARTs in HV Sistemas H8606 board Blackfin arch: Fix bug - USB fails to build for BF524/BF526 Blackfin arch: update boards defconfig files Blackfin arch: IO Port functions to read/write unalligned memory Blackfin arch: enable a choice to provide 4M DMA memory Blackfin arch: cleanup the icplb/dcplb multiple hit checks Blackfin arch: Add workaround to read edge triggered GPIOs Blackfin arch: Sync channel defines with struct dma_register dma_io_base_addr. Blackfin arch: Check for Anomaly 05000182 [Blackfin] arch: rename bf5xx-flash to bfin-async-flash [Blackfin] arch: Blackfin checksum annotations
| * | | Blackfin SPORTS UART Driver: converting BFIN->BLACKFINMike Frysinger2008-05-171-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Signed-off-by: Mike Frysinger <vapier.adi@gmail.com> Acked-by: Alan Cox <alan@lxorguk.ukuu.org.uk> Signed-off-by: Bryan Wu <cooloney@kernel.org>
| * | | Blackfin serial driver: add extra IRQ flag for 8250 serial driverJavier Herrero2008-05-171-0/+5
| | | | | | | | | | | | | | | | | | | | | | | | Signed-off-by: Javier Herrero <jherrero@hvsistemas.es> Signed-off-by: Bryan Wu <cooloney@kernel.org>
| * | | 8250 Serial Driver: Added support for 8250-class UARTs in HV Sistemas H8606 ↵Javier Herrero2008-05-172-2/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | board Added support for 8250-class UARTs in HV Sistemas H8606 board, modification in 8250.c driver for correct compilation with Blackfin Besides, I think that there is more people using 8250-class UARTs with a different hardware than the H8606 board. This code can be shared by them. Signed-off-by: Javier Herrero <jherrero@hvsistemas.es> Acked-by: Alan Cox <alan@lxorguk.ukuu.org.uk> Signed-off-by: Bryan Wu <cooloney@kernel.org>
| * | | Blackfin arch: Fix bug - USB fails to build for BF524/BF526Bryan Wu2008-05-191-4/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | BF524 is the same as BF525, except the speed of the processor BF526 is the same as BF527, except the speed of the processor Signed-off-by: Bryan Wu <cooloney@kernel.org>
| * | | Blackfin arch: update boards defconfig filesMichael Hennerich2008-05-193-343/+423
| | | | | | | | | | | | | | | | | | | | | | | | Signed-off-by: Michael Hennerich <michael.hennerich@analog.com> Signed-off-by: Bryan Wu <cooloney@kernel.org>
| * | | Blackfin arch: IO Port functions to read/write unalligned memoryMichael Hennerich2008-05-174-4/+37
| | | | | | | | | | | | | | | | | | | | | | | | Signed-off-by: Michael Hennerich <michael.hennerich@analog.com> Signed-off-by: Bryan Wu <cooloney@kernel.org>
| * | | Blackfin arch: enable a choice to provide 4M DMA memoryCliff Cai2008-05-172-1/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | support two cascaded AD73322 cards, more uncached DMA memory is needed, so add a choice to provide 4M DMA memory Signed-off-by: Cliff Cai <cliff.cai@analog.com> Signed-off-by: Bryan Wu <cooloney@kernel.org>
| * | | Blackfin arch: cleanup the icplb/dcplb multiple hit checksMike Frysinger2008-05-171-10/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | so that we always send the same signal and we handle the NULL ptr condition properly Signed-off-by: Mike Frysinger <vapier.adi@gmail.com> Signed-off-by: Bryan Wu <cooloney@kernel.org>
| * | | Blackfin arch: Add workaround to read edge triggered GPIOsMichael Hennerich2008-05-172-1/+19
| | | | | | | | | | | | | | | | | | | | | | | | Signed-off-by: Michael Hennerich <michael.hennerich@analog.com> Signed-off-by: Bryan Wu <cooloney@kernel.org>
| * | | Blackfin arch: Sync channel defines with struct dma_register dma_io_base_addr.Michael Hennerich2008-05-171-4/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Otherwise we use the wrong DMA channels. Signed-off-by: Michael Hennerich <michael.hennerich@analog.com> Signed-off-by: Bryan Wu <cooloney@kernel.org>
| * | | Blackfin arch: Check for Anomaly 05000182Michael Hennerich2008-05-171-0/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | IMDMA does not operate to full speed for 600MHz and higher devices Signed-off-by: Michael Hennerich <michael.hennerich@analog.com> Signed-off-by: Bryan Wu <cooloney@kernel.org>
| * | | [Blackfin] arch: rename bf5xx-flash to bfin-async-flashMike Frysinger2008-05-132-20/+14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - move all kconfig board settings into board resources - fixup casting style according to lkml feedback - rewrite driver so that it can handle arbitrary of instances according to the declared platform resources Signed-off-by: Mike Frysinger <vapier.adi@gmail.com> Cc: Joern Engel <joern@logfs.org> Signed-off-by: Bryan Wu <cooloney@kernel.org>
| * | | [Blackfin] arch: Blackfin checksum annotationsAl Viro2008-05-122-26/+24
| |/ / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | FSVOtest in this case, since I don't have the hardware... However, all changes seen by gcc are actually - explicit cast to unsigned short in return expression of functions returning unsigned short - csum_fold() return type changed from unsigned int to __sum16 (unsigned short), same as for all other architecture and as net/* expects; expression actually returned is ((~(sum << 16)) >> 16) with sum being unsigned 32bit, so it's (a) going to fit into the range of unsigned short and (b) had been unsigned all along, so no sign expansion mess happened. Tested-by: Bryan Wu <cooloney@kernel.org> Signed-off-by: Al Viro <viro@zeniv.linux.org.uk> Signed-off-by: David Miller <davem@davemloft.net> Signed-off-by: Bryan Wu <cooloney@kernel.org>
* | | Merge git://git.kernel.org/pub/scm/linux/kernel/git/lethal/sh-2.6Linus Torvalds2008-05-199-45/+49
|\ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * git://git.kernel.org/pub/scm/linux/kernel/git/lethal/sh-2.6: sh: Fix up restorer in debug_trap exception return path. sh: Make is_valid_bugaddr() more intelligent on nommu. sh: use the common ascii hex helpers sh: fix sh7785 master clock value sh: Fix up thread info pointer in syscall_badsys resume path. sh: Fix up optimized SH-4 memcpy on big endian. sh: disable initrd defaults in .empty_zero_page. sh: display boot params by default on entry.
| * | | sh: Fix up restorer in debug_trap exception return path.Paul Mundt2008-05-191-6/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | There are a few different types of debug trap exceptions, though now that they are all going through a special jump table, the restorer needs to be unified as well. Presently this is falling through the ret_from_fork path, which more or less does the right thing on SH-3/4 whilst being completely unsuitable on MMU-less targets. Ultimately what we want here is a branch through the platform's restore_all directly, without worrying about the retval being clobbered. We can accomplish that through a branch to __restore_all directly, so switch it so we come back from the jump table and branch to the restorer. This fixes up a recursion in the nommu WARN_ON() path, as well as some other userspace nastiness where said recursion caused serious stack corruption. Signed-off-by: Paul Mundt <lethal@linux-sh.org>
| * | | sh: Make is_valid_bugaddr() more intelligent on nommu.Paul Mundt2008-05-191-1/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Currently is_valid_bugaddr() is true for anything >= PAGE_OFFSET, which happens to be 0 on nommu configurations. Make this a bit smarter by just reading in the opcode and comparing it against the trap type that we already know. Follows the logic from avr32. Signed-off-by: Paul Mundt <lethal@linux-sh.org>
| * | | sh: use the common ascii hex helpersHarvey Harrison2008-05-163-24/+9
| | | | | | | | | | | | | | | | | | | | Signed-off-by: Harvey Harrison <harvey.harrison@gmail.com> Signed-off-by: Paul Mundt <lethal@linux-sh.org>
| * | | sh: fix sh7785 master clock valueYoshihiro Shimoda2008-05-161-1/+1
| | | | | | | | | | | | | | | | | | | | Signed-off-by: Yoshihiro Shimoda <shimoda.yoshihiro@renesas.com> Signed-off-by: Paul Mundt <lethal@linux-sh.org>
| * | | sh: Fix up thread info pointer in syscall_badsys resume path.Hideo Saito2008-05-161-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Entry to resume_userspace expects r8 to contain current_thread_info, which happens in all paths except for syscall_badsys, where r8 was being inadvertently trampled. Reload it before the branch. Signed-off-by: Hideo Saito <saito@densan.co.jp> Signed-off-by: Paul Mundt <lethal@linux-sh.org>
| * | | sh: Fix up optimized SH-4 memcpy on big endian.Hideo Saito2008-05-161-11/+11
| | | | | | | | | | | | | | | | | | | | Signed-off-by: Hideo Saito <saito@densan.co.jp> Signed-off-by: Paul Mundt <lethal@linux-sh.org>
| * | | sh: disable initrd defaults in .empty_zero_page.Paul Mundt2008-05-161-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When using initramfs on systems that don't explicitly clear LOADER_TYPE, unpack_to_rootfs() tramples tramples the range with the defaults taken out of .empty_zero_page. This causes kernels with valid initramfs images to bail out with crc or gzip magic mismatch errors after the second unpack takes place on certain platform configurations. Signed-off-by: Paul Mundt <lethal@linux-sh.org>
| * | | sh: display boot params by default on entry.Paul Mundt2008-05-161-0/+11
| | |/ | |/| | | | | | | | | | | | | | | | | | | Some kernel and boot loader configurations tweak the .empty_zero_page settings, while others do not. Print the values out on entry as a debugging aid. Signed-off-by: Paul Mundt <lethal@linux-sh.org>
* | | Merge branch 'upstream-linus' of ↵Linus Torvalds2008-05-1921-384/+453
|\ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | git://git.kernel.org/pub/scm/linux/kernel/git/jgarzik/libata-dev * 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jgarzik/libata-dev: (28 commits) drivers/ata: trim trailing whitespace Fixups to ATA ACPI hotplug libata: ignore SIMG4726 config pseudo device sata_sil24: don't use NCQ if marvell 4140 PMP is attached libata: don't schedule LPM action seperately during probing libata: make sure PMP notification is turned off during recovery libata: increase PMP register access timeout to 3s libata: ignore recovered PHY errors libata: kill hotplug related race condition libata: move reset freeze/thaw handling into ata_eh_reset() libata: reorganize ata_eh_reset() no reset method path libata: fix sata_link_hardreset() @online out parameter handling sata_promise: other cleanups sata_promise: mmio access cleanups sata_promise: fix irq clearing buglets ata: remove FIT() macro sata_mv: ensure empty request queue for FBS-NCQ EH sata_mv: cache main_irq_mask register in hpriv sata_mv: disregard masked irqs sata_mv: fix pmp drives not found ...
| * | | drivers/ata: trim trailing whitespaceJeff Garzik2008-05-192-5/+5
| | | | | | | | | | | | | | | | Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
| * | | Fixups to ATA ACPI hotplugMatthew Garrett2008-05-191-27/+50
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The libata-acpi.c code currently accepts hotplug messages from both the port and the device. This does not match the behaviour of the bay driver, and may result in confusion when two hotplug requests are received for the same device. This patch limits the hotplug notification to removable ACPI devices, which in turn allows it to use the _STA method to determine whether the device has been removed or inserted. On removal, devices are marked as detached. On insertion, a hotplug scan is started. This should avoid lockups caused by the ata layer attempting to scan devices which have been removed. The uevent sending is moved outside the spinlock in order to avoid a warning generated by it firing when interrupts are disabled. Signed-off-by: Matthew Garrett <mjg@redhat.com> Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
| * | | libata: ignore SIMG4726 config pseudo deviceTejun Heo2008-05-193-9/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | I was hoping ATA_HORKAGE_NODMA | ATA_HORKAGE_SKIP_PM could keep it happy but no even this doesn't work under certain configurations and it's not like we can do anything useful with the cofig device anyway. Replace ATA_HORKAGE_SKIP_PM with ATA_HORKAGE_DISABLE and use it for the config device. This makes the device completely ignored by libata. Signed-off-by: Tejun Heo <htejun@gmail.com> Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
| * | | sata_sil24: don't use NCQ if marvell 4140 PMP is attachedTejun Heo2008-05-191-0/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When 4140 PMP is attached to sil24, NCQ commands to fan out port 1 and 2 (0 based) often stall if commands are in progress to other ports. I've tried a number of things but can't tell what's going on. It never happens w/ ahci and reportedly sata_mv which can issue NCQ commands to multiple devices simultaneously like sil24 does. Disable NCQ for devices behind 4140 PMP for the time being. Signed-off-by: Tejun Heo <htejun@gmail.com> Cc: Mark Lord <liml@rtr.ca> Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
| * | | libata: don't schedule LPM action seperately during probingTejun Heo2008-05-191-2/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | There's no reason to schedule LPM action after probing is complete causing another EH iteration. Just schedule it together with probing itself. Signed-off-by: Tejun Heo <htejun@gmail.com> Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
| * | | libata: make sure PMP notification is turned off during recoveryTejun Heo2008-05-191-16/+20
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | PMP notification during reset can make some controllers fail reset processing and needs to be turned off during resets. PMP attach and full-revalidation path did this via sata_pmp_configure() but the quick revalidation wasn't. Move the notification disable code right above fan-out port recovery so that it's always turned off. This fixes obscure reset failures. Signed-off-by: Tejun Heo <htejun@gmail.com> Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
| * | | libata: increase PMP register access timeout to 3sTejun Heo2008-05-192-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This timeout was set low because previously PMP register access was done via polling and register access timeouts could stack up. This is no longer the case. One timeout will make all following accesses fail immediately. In rare cases both marvell and SIMG PMPs need almost a second. Bump it to 3s. While at it, rename it to SATA_PMP_RW_TIMEOUT. It's not specific to SCR access. Signed-off-by: Tejun Heo <htejun@gmail.com> Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
| * | | libata: ignore recovered PHY errorsTejun Heo2008-05-191-6/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | No reason to get overzealous about recovered comm and data errors. Some PHYs habitually sets them w/o no good reason and being draconian about these soft error conditions doesn't seem to help anybody. If need ever rises, we might need to add soft PHY error condition, say AC_ERR_MAYBE_ATA_BUS and use it only to determine whether speed down is necessary but I don't think that's very likely to happen. It's far more likely we'll get timeouts or fatal transmission errors if recovered errors are so prominent that they hamper operation. Signed-off-by: Tejun Heo <htejun@gmail.com> Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
| * | | libata: kill hotplug related race conditionTejun Heo2008-05-192-23/+50
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Originally, whole reset processing was done while the port is frozen and SError was cleared during @postreset(). This had two race conditions. 1: hotplug could occur after reset but before SError is cleared and libata won't know about it. 2: hotplug could occur after all the reset is complete but before the port is thawed. As all events are cleared on thaw, the hotplug event would be lost. Commit ac371987a81c61c2efbd6931245cdcaf43baad89 kills the first race by clearing SError during link resume but before link onlineness test. However, this doesn't fix race #2 and in some cases clearing SError after SRST is a good idea. This patch solves this problem by cross checking link onlineness with classification result after SError is cleared and port is thawed. Reset is retried if link is online but all devices attached to the link are unknown. As all devices will be revalidated, this one-way check is enough to ensure that all devices are detected and revalidated reliably. This, luckily, also fixes the cases where host controller returns bogus status while harddrive is spinning up after hotplug making classification run before the device sends the first FIS and thus causes misdetection. Low level drivers can bypass the logic by setting class explicitly to ATA_DEV_NONE if ever necessary (currently none requires this). Signed-off-by: Tejun Heo <htejun@gmail.com> Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
| * | | libata: move reset freeze/thaw handling into ata_eh_reset()Tejun Heo2008-05-192-32/+18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Previously reset freeze/thaw handling lived outside of ata_eh_reset() mainly because the original PMP reset code needed the port frozen while resetting all the fan-out ports, which is no longer the case. This patch moves freeze/thaw handling into ata_eh_reset(). @prereset() and @postreset() are now called w/o freezing the port although @prereset() an be called frozen if the port is frozen prior to entering ata_eh_reset(). This makes code simpler and will help removing hotplug event related races. Signed-off-by: Tejun Heo <htejun@gmail.com> Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
| * | | libata: reorganize ata_eh_reset() no reset method pathTejun Heo2008-05-191-50/+52
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Reorganize ata_eh_reset() such that @prereset() is called even when no reset method is available and if block is used instead of goto to skip actual reset. This makes no reset case behave better (readiness wait) and future changes easier. Signed-off-by: Tejun Heo <htejun@gmail.com> Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
| * | | libata: fix sata_link_hardreset() @online out parameter handlingTejun Heo2008-05-191-1/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The @online out parameter is supposed to set to true iff link is online and reset succeeded as advertised in the function description and callers are coded expecting that. However, sata_link_reset() didn't behave this way on device readiness test failure. Fix it. Signed-off-by: Tejun Heo <htejun@gmail.com> Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
OpenPOWER on IntegriCloud