aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAge
* AFS: Fix afs_prepare_write()David Howells2007-05-17
| | | | | | | | | | afs_prepare_write() should not mark a page up to date if it only partially fills it in, in expectation of the caller filling in the rest prior to calling commit_write(). commit_write(), however, should mark the page up to date. Signed-off-by: David Howells <dhowells@redhat.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
* slub: don't confuse ctor and dtorHugh Dickins2007-05-17
| | | | | | | | | | | kmem_cache_create() was swapping ctor and dtor in calling find_mergeable(): though it caused no bug, and probably never would, even if destructors are retained; but fix it so as not to generate anxiety ;) Signed-off-by: Hugh Dickins <hugh@veritas.com> Cc: Christoph Lameter <clameter@sgi.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
* SLUB: It is legit to allocate a slab of the maximum permitted sizeChristoph Lameter2007-05-17
| | | | | | | | | Sorry I screwed up the comparison. It is only an error if we attempt to allocate a slab larger than the maximum allowed size. Signed-off-by: Christoph Lameter <clameter@sgi.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
* AFS: write back dirty data on unmountDavid Howells2007-05-17
| | | | | | | | | | Fix AFS to write back dirty on unmounting. This didn't happen because afs_super_ops.drop_inode was pointing to generic_delete_inode. Now this pointer is left set to NULL so that the default behaviour occurs instead. Signed-off-by: David Howells <dhowells@redhat.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
* Merge branch 'release' of ↵Linus Torvalds2007-05-17
|\ | | | | | | | | | | | | | | | | | | | | | | git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6 * 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6: [IA64] optimize pagefaults a little [IA64] Fix section conflict of ia64_mlogbuf_finish [IA64] s/scalibility/scalability/ [IA64] kdump on INIT needs multi-nodes sync-up (v.2) [IA64] wire up {signal,timer,event}fd syscalls [IA64] spelling fixes: arch/ia64/
| * [IA64] optimize pagefaults a littleChristoph Hellwig2007-05-16
| | | | | | | | | | | | | | | | | | Get rid of the notifier list and call the kprobes code directly if compiled in. This mirrors the changes that recently went into powerpc, s390 and sparc64. Signed-off-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Tony Luck <tony.luck@intel.com>
| * [IA64] Fix section conflict of ia64_mlogbuf_finishMartin Michlmayr2007-05-15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Building with GCC 4.2, I get the following error: CC arch/ia64/kernel/mca.o arch/ia64/kernel/mca.c:275: error: __ksymtab_ia64_mlogbuf_finish causes a section type conflict This is because ia64_mlogbuf_finish is both declared static and exported. Fix by removing the export (which is unneeded now). Signed-off-by: Martin Michlmayr <tbm@cyrius.com> Signed-off-by: Tony Luck <tony.luck@intel.com>
| * [IA64] s/scalibility/scalability/Tony Luck2007-05-14
| | | | | | | | | | | | | | | | Previous spelling patch from Simon Arlott broke one spot that didn't need fixing (reported by Simon within 35 minutes of the patch ... but not until after I'd applied to GIT and pushed :-( Signed-off-by: Tony Luck <tony.luck@intel.com>
| * [IA64] kdump on INIT needs multi-nodes sync-up (v.2)Jay Lan2007-05-14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The current implementation of kdump on INIT events would enter kdump processing on DIE_INIT_MONARCH_ENTER and DIE_INIT_SLAVE_ENTER events. Thus, the monarch cpu would go ahead and boot up the kdump On SN shub2 systems, this out-of-sync situation causes some slave cpus on different nodes to enter POD. This patch moves kdump entry points to DIE_INIT_MONARCH_LEAVE and DIE_INIT_SLAVE_LEAVE. It also sets kdump_in_progress variable in the DIE_INIT_MONARCH_PROCESS event to not dump all active stack traces to the console in the case of kdump. I have tested this patch on an SN machine and a HP RX2600. Signed-off-by: Jay Lan <jlan@sgi.com> Acked-by: Zou Nan hai <nanhai.zou@intel.com> Signed-off-by: Tony Luck <tony.luck@intel.com>
| * [IA64] wire up {signal,timer,event}fd syscallsTony Luck2007-05-14
| | | | | | | | Signed-off-by: Tony Luck <tony.luck@intel.com>
| * [IA64] spelling fixes: arch/ia64/Simon Arlott2007-05-11
| | | | | | | | | | | | | | Spelling and apostrophe fixes in arch/ia64/. Signed-off-by: Simon Arlott <simon@fire.lp0.eu> Signed-off-by: Tony Luck <tony.luck@intel.com>
* | Fix ACPI suspend / device suspend ordering problemLinus Torvalds2007-05-16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In commit e3c7db621bed4afb8e231cb005057f2feb5db557 we fixed the resume ordering, so that the ACPI low-level resume code was called before the actual driver resume was called. However, that broke the nesting logic of suspend and resume, and we continued to suspend the devices _after_ we the ACPI device suspend code was called. That resulted in us saving PCI state for devices that had already been changed by ACPI, and in some cases disabled entirely (causing the PCI save_state to be all-ones). Which in turn caused the wrong state to be written back on resume. This moves the ACPI device suspend to after the device model per-device suspend() calls. This fixes the bogus state save. Thanks to Lukáš Hejtmánek for testing. Acked-by: Lukas Hejtmanek <xhejtman@ics.muni.cz> Acked-by: Rafael J. Wysocki <rjw@sisk.pl> Cc: Len Brown <len.brown@intel.com> Cc: Pavel Machek <pavel@ucw.cz> Cc: Andrew Morton <akpm@linux-foundation.org> Cc: Greg KH <greg@kroah.com> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
* | arm: walk_stacktrace() needs to be exportedAl Viro2007-05-15
| | | | | | | | | | | | | | oprofile depends on having it Signed-off-by: Al Viro <viro@zeniv.linux.org.uk> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
* | fix uml-x86_64Al Viro2007-05-15
| | | | | | | | | | | | | | | | | | __NR_syscall_max is done in x86_64 asm-offsets; do an equivalent in uml kern_constants.h Signed-off-by: Al Viro <viro@zeniv.linux.org.uk> Acked-by: Jeff Dike <jdike@addtoit.com> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
* | audit_match_signal() and friends are used only if CONFIG_AUDITSYSCALL is setAl Viro2007-05-15
| | | | | | | | | | Signed-off-by: Al Viro <viro@zeniv.linux.org.uk> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
* | m32r: __xchg() should be always_inlineAl Viro2007-05-15
| | | | | | | | | | | | | | | | | | it depends on elimination of unreachable branches in switch (by object size), so we must declare it always_inline Signed-off-by: Al Viro <viro@zeniv.linux.org.uk> Acked-by: Hirokazu Takata <takata@linux-m32r.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
* | rpadlpar breakage - fallout of struct subsystem removalAl Viro2007-05-15
| | | | | | | | | | Signed-off-by: Al Viro <viro@zeniv.linux.org.uk> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
* | em28xx and ivtv should depend on PCIAl Viro2007-05-15
| | | | | | | | | | | | | | .. because video-buf.c requires PCI, and VIDEO_EM28XX selects it. Signed-off-by: Al Viro <viro@zeniv.linux.org.uk> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
* | missing includes in mlx4Al Viro2007-05-15
| | | | | | | | | | | | | | Signed-off-by: Al Viro <viro@zeniv.linux.org.uk> Acked-by: Jeff Garzik <jeff@garzik.org> Acked-by: Roland Dreier <rolandd@cisco.com> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
* | missing dependencies for USB drivers in inputAl Viro2007-05-15
| | | | | | | | | | | | | | | | stuff that does select USB should depend on USB_ARCH_HAS_HCD, or we'll end up with unbuildable configs. Signed-off-by: Al Viro <viro@zeniv.linux.org.uk> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
* | missing mm.h in fw-ohciAl Viro2007-05-15
| | | | | | | | | | | | | | need it for page_private(), not all targets have it pulled indirectly Signed-off-by: Al Viro <viro@zeniv.linux.org.uk> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
* | Merge master.kernel.org:/pub/scm/linux/kernel/git/lethal/sh64-2.6Linus Torvalds2007-05-15
|\ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * master.kernel.org:/pub/scm/linux/kernel/git/lethal/sh64-2.6: sh64: Add .gitignore entry for syscalltab. sh64: generic quicklist support. sh64: Update cayman defconfig. sh64: Fixup sh-sci build. sh64: ppoll/pselect6() and restartable syscalls. sh64: dma-mapping updates. sh64: Fixups for the irq_regs changes. sh64: Wire up many new syscalls. spelling fixes: arch/sh64/ sh64: ROUND_UP macro cleanup in arch/sh64/kernel/pci_sh5.c
| * | sh64: Add .gitignore entry for syscalltab.Paul Mundt2007-05-13
| | | | | | | | | | | | Signed-off-by: Paul Mundt <lethal@linux-sh.org>
| * | sh64: generic quicklist support.Paul Mundt2007-05-13
| | | | | | | | | | | | Signed-off-by: Paul Mundt <lethal@linux-sh.org>
| * | sh64: Update cayman defconfig.Paul Mundt2007-05-13
| | | | | | | | | | | | Signed-off-by: Paul Mundt <lethal@linux-sh.org>
| * | sh64: Fixup sh-sci build.Paul Mundt2007-05-13
| | | | | | | | | | | | | | | | | | | | | sh-sci needs asm/sci.h, borrow this from sh so we can build again. Signed-off-by: Paul Mundt <lethal@linux-sh.org>
| * | sh64: ppoll/pselect6() and restartable syscalls.Paul Mundt2007-05-13
| | | | | | | | | | | | | | | | | | | | | | | | This patch was hanging around for some time while we were waiting for the compiler situation to improve.. now that all is well again, finally merge it. Signed-off-by: Paul Mundt <lethal@linux-sh.org>
| * | sh64: dma-mapping updates.Paul Mundt2007-05-13
| | | | | | | | | | | | | | | | | | Follow the noncoherent changes from sh. Signed-off-by: Paul Mundt <lethal@linux-sh.org>
| * | sh64: Fixups for the irq_regs changes.Paul Mundt2007-05-13
| | | | | | | | | | | | | | | | | | | | | | | | A few interrupt handlers were never updated, fix them up. We were missing the irq_regs conversion also, so do that at the same time. Signed-off-by: Paul Mundt <lethal@linux-sh.org>
| * | sh64: Wire up many new syscalls.Paul Mundt2007-05-13
| | | | | | | | | | | | | | | | | | | | | | | | This has suffered a bit of bitrot, so we're a bit behind on the syscalls. There were a few that were wrapped incorrectly as well, caught by the syscall checker. Fix them all up. Signed-off-by: Paul Mundt <lethal@linux-sh.org>
| * | spelling fixes: arch/sh64/Simon Arlott2007-05-13
| | | | | | | | | | | | | | | | | | | | | Spelling fixes in arch/sh64/. Signed-off-by: Simon Arlott <simon@fire.lp0.eu> Signed-off-by: Paul Mundt <lethal@linux-sh.org>
| * | sh64: ROUND_UP macro cleanup in arch/sh64/kernel/pci_sh5.cMilind Arun Choudhary2007-05-13
| | | | | | | | | | | | | | | | | | | | | | | | ROUND_UP macro cleanup, use ALIGN where ever appropriate. Signed-off-by: Milind Arun Choudhary <milindchoudhary@gmail.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Paul Mundt <lethal@linux-sh.org>
* | | Merge master.kernel.org:/pub/scm/linux/kernel/git/bart/ide-2.6Linus Torvalds2007-05-15
|\ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * master.kernel.org:/pub/scm/linux/kernel/git/bart/ide-2.6: Use menuconfig objects: IDE sl82c105: Switch to ref counting API ide: remove ide_use_dma() ide: add missing validity checks for identify words 62 and 63 ide: remove ide_dma_enable() sl82c105: add speedproc() method and MWDMA0/1 support cs5530/sc1200: add ->speedproc support cs5530/sc1200: DMA support cleanup ide: use ide_tune_dma() part #2 cs5530/sc1200: add ->udma_filter methods ide: always disable DMA before tuning it pdc202xx_new: use ide_tune_dma() alim15x3: use ide_tune_dma() sis5513: PIO mode setup fixes serverworks: PIO mode setup fixes pdc202xx_old: rewrite mode programming code (v2)
| * | | Use menuconfig objects: IDEJan Engelhardt2007-05-15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Use menuconfigs instead of menus, so the whole menu can be disabled at once instead of going through all options. Signed-off-by: Jan Engelhardt <jengelh@gmx.de> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
| * | | sl82c105: Switch to ref counting APIAlan Cox2007-05-15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Not sure how this one got missed in the great purge some time ago but it did. Signed-off-by: Alan Cox <alan@redhat.com> Cc: Sergei Shtylyov <sshtylyov@ru.mvista.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
| * | | ide: remove ide_use_dma()Bartlomiej Zolnierkiewicz2007-05-15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ide_use_dma() duplicates a lot of ide_max_dma_mode() functionality and as all users of ide_use_dma() were converted to use ide_tune_dma() now it is possible to add missing checks to ide_tune_dma() and remove ide_use_dma() completely, so do it. There should be no functionality changes caused by this patch. Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
| * | | ide: add missing validity checks for identify words 62 and 63Bartlomiej Zolnierkiewicz2007-05-15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Check validity of identify words 62 and 63 before using them in ide_get_mode_mask(). Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
| * | | ide: remove ide_dma_enable()Bartlomiej Zolnierkiewicz2007-05-15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * check ->speedproc return value in ide_tune_dma() * use ide_tune_dma() in cmd64x/cs5530/sc1200/siimage/sl82c105/scc_pata drivers * remove no longer needed ide_dma_enable() Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
| * | | sl82c105: add speedproc() method and MWDMA0/1 supportSergei Shtylyov2007-05-15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add the speedproc() method for setting transfer modes, modify config_for_dma() to call it and use ide_max_dma_mode() to select the best DMA mode. Add support for the multiword DMA modes 0 and 1, using the upper half of the 'drive_data' field to store the DMA timings to program into the drive control register when DMA is turned on for real. Signed-off-by: Sergei Shtylyov <sshtylyov@ru.mvista.com> Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
| * | | cs5530/sc1200: add ->speedproc supportBartlomiej Zolnierkiewicz2007-05-15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * add {cs5530,sc1200}_tunepio() for programming PIO timings * add {cs5530,sc1200}_tune_chipset() (->speedproc method) for setting transfer mode and convert {cs5530,sc1200}_config_dma() to use it * bump driver version Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
| * | | cs5530/sc1200: DMA support cleanupBartlomiej Zolnierkiewicz2007-05-15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | sc1200.c: * remove open-coded variant of ide_dma_host_off() (== ->dma_host_off), it is not needed because ->dma_off_quietly calls ->dma_host_off * use ->dma_host_on (== ide_dma_host_on() for this driver) instead of open-coded variant, call it from the users of sc1200_config_dma2() [ there is no need to call ->dma_host_on in sc1200_config_dma() because core code takes care of calling ->ide_dma_on on successful execution of ->ide_dma_check ] * add comment about ->tuneproc interface abuse cs5530.c/sc1200.c: * core code takes care of calling ->dma_off_quietly before calling ->ide_dma_check so there is no need to call it in ->ide_dma_check methods * bump driver version Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
| * | | ide: use ide_tune_dma() part #2Bartlomiej Zolnierkiewicz2007-05-15
| | | | | | | | | | | | | | | | | | | | | | | | Use ide_tune_dma() in ide-cris/it821x/pdc202xx_old/serverworks drivers. Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
| * | | cs5530/sc1200: add ->udma_filter methodsBartlomiej Zolnierkiewicz2007-05-15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | CS5530/SC1200 specifies that two drives on the same cable cannot mix UDMA/MDMA. Add {cs5530,sc1200}_udma_filter() to handle this. This also makes it possible to remove open-coded best DMA mode selection and use standard ide_use_dma()/ide_max_dma_mode() helpers. While at it bump version numbers. There should be no functionality changes caused by this patch. Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
| * | | ide: always disable DMA before tuning itBartlomiej Zolnierkiewicz2007-05-15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ide_start_power_step() and set_using_dma() were missing ->dma_off_quietly call (comment in probe_hwif() states that DMA should be always cleared before tuning is attempted). Fix it. Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
| * | | pdc202xx_new: use ide_tune_dma()Bartlomiej Zolnierkiewicz2007-05-15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * remove code enabling IORDY and prefetch from config_chipset_for_dma(), as the comment states it has no real effect because these settings are overriden when the PIO mode is set (and for this driver ->autotune == 1 so PIO mode is always programmed) * use ide_tune_dma() in pdcnew_config_drive_xfer_rate() and remove no longer needed config_chipset_for_dma() There should be no functionality changes caused by this patch. Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
| * | | alim15x3: use ide_tune_dma()Bartlomiej Zolnierkiewicz2007-05-15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Use ide_tune_dma() in ali15x3_config_drive_for_dma() and remove all the open coded DMA tuning code and also config_chipset_for_dma(). Set ->atapi_dma flag correctly in init_hwif_common_ali15x3() so ide_tune_dma() can take care of checking if ATAPI DMA is allowed and remove open coded ATAPI DMA check from ali15x3_config_drive_for_dma(). There should be no functionality changes caused by this patch. Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
| * | | sis5513: PIO mode setup fixesBartlomiej Zolnierkiewicz2007-05-15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * limit max PIO mode to PIO4, this driver doesn't support PIO5 and attempt to program PIO5 by config_art_rwp_pio() could result in incorrect PIO timings being programmed and possibly the data corruption (for < ATA100 family chipsets PIO0 timings were used, for ATA100 and ATA100a - the random content of test1 variable was used, for ATA133 - MWDMA0 timings were used) * BUG() in sis5513_tune_chipset() if somebody tries to force unsupported PIO5, also cleanup this function a bit while at it * add comment about PIO0 timings for < ATA100 family chipsets * remove open-coded best PIO mode selection from config_art_rwp_pio(), it contained numerous bugs: - it didn't check for validity of id->eide_pio_modes and id->eide_pio_iordy before using them - it tried to found out maximum PIO mode basing on minimum IORDY cycle time (moreover wrong cycle times were used for PIO1/5) - it was overriding PIO blacklist and conservative PIO "downgrade" done by ide_get_best_pio_mode() * use sis5513_tune_drive() instead of config_art_rwp_pio() in sis5513_config_xfer_rate() so the correct PIO mode is also set on drive even if the device is not IORDY/DMA capable * config_art_rwp_pio() was always setting the best possible mode and not the wanted one - fix it and move ide_get_best_pio_mode() call to config_chipset_for_pio() * don't use ide_find_best_mode() in config_chipset_for_pio(), it was being overriden by config_art_rwp_pio() for the host timings anyway + we need to set the same PIO mode on the device and the host * pass correct "pio" argument (255 instead of 5) to sis5513_tune_drive() call in sis5513_config_xfer_rate() so the best PIO mode is set on the drive and not PIO4 * rename sis5513_tune_drive() to sis5513_tuneproc() and config_chipset_for_pio() to sis5513_tune_driver() * bump driver version Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
| * | | serverworks: PIO mode setup fixesBartlomiej Zolnierkiewicz2007-05-15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * limit max PIO mode to PIO4, this driver doesn't support PIO5 and attempt to program PIO5 by svwks_tune_chipset() could result in incorrect PIO timings being programmed and possibly the data corruption (it seems that the minimum possible values were used but I lack the datasheets to be sure) * select best PIO mode in svwks_tune_drive() and not in svwks_tune_chipset() when doing PIO autotuning (pio == 255) * don't try to tune PIO in config_chipset_for_dma() as ide_dma_enable() could return 1 if DMA was previously enabled (svwks_config_drive_xfer_rate() takes care of PIO tuning if no suitable DMA mode is found) * remove config_chipset_for_pio() and use svwks_tune_drive() instead, config_chipset_for_pio() contained numerous bugs when selecting PIO mode (luckily it was only used for devices limited to PIO by capabilities/BIOS): - it didn't check for validity of id->eide_pio_modes and id->eide_pio_iordy before using them - it tried to found out maximum PIO mode basing on minimum IORDY cycle time (moreover wrong cycle times were used for PIO0/1/5) - it was overriding PIO blacklist and conservative PIO "downgrade" done by ide_get_best_pio_mode() - if the max drive PIO was PIO5 then XFER_PIO_0/XFER_PIO_SLOW was selected (XFER_PIO_SLOW is not supported by svwks_tune_chipset() so the result was the same as if using XFER_PIO_5 => wrong PIO timings were set) - it was overriding drive->current_speed * bump driver version Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
| * | | pdc202xx_old: rewrite mode programming code (v2)Bartlomiej Zolnierkiewicz2007-05-15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch is based on the documentation (I would like to thank Promise for it) and also partially on the older vendor driver. Rewrite mode programming code: * disable 66MHz clock in pdc202xx_tune_chipset() so it is correctly disabled even if both devices on the channel are not DMA capable and after reset * enable/disable IORDY and PREFETCH bits in pdc202xx_tune_chipset() as they need to be setup correctly also for PIO only devices, plus IORDY wasn't disabled for non-IORDY devices and PREFETCH wasn't disabled for ATAPI devices * remove dead code for setting SYNC_ERDDY_EN bits from config_chipset_for_dma() (driver sets ->autotune to 1 so PIO modes are always programmed => lower nibble of register A never equals 4 => "chipset_is_set" is always true) * enable PIO mode programming for all ATAPI devices (it was limited to ->media == ide_cdrom devices) * remove extra reads of registers A/B/C, don't read register D et all * do clearing / programming of registers A/B/C in one go (gets rid of extra PCI config space read/write cycle) * set initial values of drive_conf/AP/BP/CP variables to zero (paranoia for the case when PCI reads fail) * remove XFER_UDMA6 to XFER_UDMA5 remapping case - it can't happen (ide_rate_filter() takes care of it) * fix XFER_MW_DMA0 timings (they were overclocked, use the official ones) * fix bitmasks for clearing bits of register B: - when programming DMA mode bit 0x10 of register B was cleared which resulted in overclocked PIO timing setting (iff PIO0 was used) - when programming PIO mode bits 0x18 weren't cleared so suboptimal timings were used for PIO1-4 if PIO0 was previously set (bit 0x10) and for PIO0/3/4 if PIO1/2 was previously set (bit 0x08) * add FIXME comment about missing locking for 66MHz clock register Also while at it: * remove unused defines * do a few cosmetic / CodingStyle fixes * bump driver version v2: * in pdc202xx_tune_chipset() the old content of drive configuration registers is used only by the debugging code so cover "drive_conf" PCI registers read by #if PDC202XX_DEBUG_DRIVE_INFO (Noticed by Sergei Shtylyov) Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
* | | | Merge branch 'upstream-linus' of ↵Linus Torvalds2007-05-15
|\ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/netdev-2.6 * 'upstream-linus' of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/netdev-2.6: ucc_geth: eliminate max-speed, change interface-type to phy-connection-type smc911x: fix compilation breakage pasemi_mac: Fix local-mac-address parsing pasemi_mac: Terminate PCI ID list pasemi_mac: Interrupt ack fixes pasemi_mac: Fix register defines