1. 20 Sep, 2009 4 commits
    • Arjan van de Ven's avatar
      perf util: SVG performance improvements · 611a546b
      Arjan van de Ven authored
      Tweak the output SVG to increase performance in SVG viewers by
      limiting the different types of font sizes and by smarter
      transformations on the text.
      
      At least with Inkscape this gives a notable performance improvement
      during zoom and scrolling.
      Signed-off-by: default avatarArjan van de Ven <arjan@linux.intel.com>
      Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
      Cc: Paul Mackerras <paulus@samba.org>
      Cc: Frederic Weisbecker <fweisbec@gmail.com>
      LKML-Reference: <20090920181438.3a49cb93@linux.intel.com>
      Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
      611a546b
    • Arjan van de Ven's avatar
      perf util: Make the timechart SVG width dynamic · 5094b655
      Arjan van de Ven authored
      This patch adds a command line option for timechart that allows the
      user to specify the width of the SVG file.
      
      This patch also makes sure that each second of recording has at
      least 200 units (pixels at 96 DPI) of width.  This impacts
      recordings longer than 5 seconds; recordings shorter than 5 second
      will scale up to have a width of 1000 units for the whole recording
      (as before).
      Signed-off-by: default avatarArjan van de Ven <arjan@linux.intel.com>
      Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
      Cc: Paul Mackerras <paulus@samba.org>
      Cc: Frederic Weisbecker <fweisbec@gmail.com>
      LKML-Reference: <20090920181416.69570c5d@linux.intel.com>
      Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
      5094b655
    • Arjan van de Ven's avatar
      perf timechart: Show the duration of scheduler delays in the SVG · a92fe7b3
      Arjan van de Ven authored
      Given that scheduler latencies are the hot thing nowadays, show the
      duration of said latencies in the SVG in text form.
      
      In addition, if the latency is more than 10 msec, pick a brighter
      yellow color as a way to point these long delays out.
      Signed-off-by: default avatarArjan van de Ven <arjan@linux.intel.com>
      Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
      Cc: Paul Mackerras <paulus@samba.org>
      Cc: Frederic Weisbecker <fweisbec@gmail.com>
      LKML-Reference: <20090920181353.796f4509@linux.intel.com>
      Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
      a92fe7b3
    • Arjan van de Ven's avatar
      perf timechart: Show the name of the waker/wakee in timechart · 4f1202c8
      Arjan van de Ven authored
      Timechart currently shows thin green lines for sending or receiving
      wakeups. This patch also prints (in a very small font) the name of
      the process that is being woken/wakes up this process.
      Signed-off-by: default avatarArjan van de Ven <arjan@linux.intel.com>
      Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
      Cc: Paul Mackerras <paulus@samba.org>
      Cc: Frederic Weisbecker <fweisbec@gmail.com>
      LKML-Reference: <20090920181328.68baa978@linux.intel.com>
      Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
      4f1202c8
  2. 19 Sep, 2009 14 commits
  3. 18 Sep, 2009 13 commits
    • Peter Zijlstra's avatar
      sched_clock: Make it NMI safe · def0a9b2
      Peter Zijlstra authored
      Arjan complained about the suckyness of TSC on modern machines, and
      asked if we could do something about that for PERF_SAMPLE_TIME.
      
      Make cpu_clock() NMI safe by removing the spinlock and using
      cmpxchg. This also makes it smaller and more robust.
      
      Affects architectures that use HAVE_UNSTABLE_SCHED_CLOCK, i.e. IA64
      and x86.
      Signed-off-by: default avatarPeter Zijlstra <a.p.zijlstra@chello.nl>
      LKML-Reference: <new-submission>
      Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
      def0a9b2
    • Peter Zijlstra's avatar
      perf_counter: Fix up swcounter throttling · cf450a73
      Peter Zijlstra authored
      /me dons the brown paper bag.
      Signed-off-by: default avatarPeter Zijlstra <a.p.zijlstra@chello.nl>
      LKML-Reference: <new-submission>
      Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
      cf450a73
    • Markus Metzger's avatar
      x86, perf_counter, bts: Optimize BTS overflow handling · 5622f295
      Markus Metzger authored
      Draining the BTS buffer on a buffer overflow interrupt takes too
      long resulting in a kernel lockup when tracing the kernel.
      
      Restructure perf_counter sampling into sample creation and sample
      output.
      
      Prepare a single reference sample for BTS sampling and update the
      from and to address fields when draining the BTS buffer. Drain the
      entire BTS buffer between a single perf_output_begin() /
      perf_output_end() pair.
      Signed-off-by: default avatarMarkus Metzger <markus.t.metzger@intel.com>
      Signed-off-by: default avatarPeter Zijlstra <a.p.zijlstra@chello.nl>
      LKML-Reference: <20090915130023.A16204@sedona.ch.intel.com>
      Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
      5622f295
    • Linus Torvalds's avatar
      pty_write: don't do a tty_wakeup() when the buffers are full · 202c4675
      Linus Torvalds authored
      Commit ac89a917 ("pty: don't limit the writes to 'pty_space()' inside
      'pty_write()'") removed the pty_space() checking, in order to let the
      regular tty buffer code limit the buffering itself.
      
      That was all good, but as a subtle side effect it meant that we'd be
      doing a tty_wakeup() even in the case where the buffers were all filled
      up, and didn't actually make any progress on the write.
      
      Which sounds innocuous, but it interacts very badly with the ppp_async
      code, which has an infinite loop in ppp_async_push() that tries to push
      out data to the tty.  When we call tty_wakeup(), that loop ends up
      thinking that progress was made (see the subtle interactions between
      XMIT_WAKEUP and 'tty_stuffed' for details).  End result: one unhappy ppp
      user.
      
      Fixed by noticing when tty_insert_flip_string() didn't actually do
      anything, and then not doing any more processing (including, very much
      not calling tty_wakeup()).
      Bisected-and-tested-by: default avatarPeter Volkov <pva@gentoo.org>
      Cc: stable@kernel.org (2.6.31)
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      202c4675
    • Mike Galbraith's avatar
      perf sched: Add --input=file option to builtin-sched.c · 4b77a729
      Mike Galbraith authored
      perf sched record passes unparsed args on to perf record, so
      specifying an output file via perf sched record -o FILE (cmd) just
      works.  Ergo, provide an option to specify input file as well.
      
      Also add the missing 'map' command to help.
      Signed-off-by: default avatarMike Galbraith <efault@gmx.de>
      Acked-by: default avatarPeter Zijlstra <a.p.zijlstra@chello.nl>
      LKML-Reference: <1253254944.20589.11.camel@marge.simson.net>
      Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
      4b77a729
    • Linus Torvalds's avatar
      Merge branch 'x86-mce-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip · df58bee2
      Linus Torvalds authored
      * 'x86-mce-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip: (21 commits)
        x86, mce: Fix compilation with !CONFIG_DEBUG_FS in mce-severity.c
        x86, mce: CE in last bank prevents panic by unknown MCE
        x86, mce: Fake panic support for MCE testing
        x86, mce: Move debugfs mce dir creating to mce.c
        x86, mce: Support specifying raise mode for software MCE injection
        x86, mce: Support specifying context for software mce injection
        x86, mce: fix reporting of Thermal Monitoring mechanism enabled
        x86, mce: remove never executed code
        x86, mce: add missing __cpuinit tags
        x86, mce: fix "mce" boot option handling for CONFIG_X86_NEW_MCE
        x86, mce: don't log boot MCEs on Pentium M (model == 13) CPUs
        x86: mce: Lower maximum number of banks to architecture limit
        x86: mce: macros to compute banks MSRs
        x86: mce: Move per bank data in a single datastructure
        x86: mce: Move code in mce.c
        x86: mce: Rename CONFIG_X86_NEW_MCE to CONFIG_X86_MCE
        x86: mce: Remove old i386 machine check code
        x86: mce: Update X86_MCE description in x86/Kconfig
        x86: mce: Make CONFIG_X86_ANCIENT_MCE dependent on CONFIG_X86_MCE
        x86, mce: use atomic_inc_return() instead of add by 1
        ...
      
      Manually fixed up trivial conflicts:
      	Documentation/feature-removal-schedule.txt
      	arch/x86/kernel/cpu/mcheck/mce.c
      df58bee2
    • Linus Torvalds's avatar
      Merge branch 'sched-core-for-linus' of... · dcbf77b9
      Linus Torvalds authored
      Merge branch 'sched-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip
      
      * 'sched-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip: (37 commits)
        sched: Fix SD_POWERSAVING_BALANCE|SD_PREFER_LOCAL vs SD_WAKE_AFFINE
        sched: Stop buddies from hogging the system
        sched: Add new wakeup preemption mode: WAKEUP_RUNNING
        sched: Fix TASK_WAKING & loadaverage breakage
        sched: Disable wakeup balancing
        sched: Rename flags to wake_flags
        sched: Clean up the load_idx selection in select_task_rq_fair
        sched: Optimize cgroup vs wakeup a bit
        sched: x86: Name old_perf in a unique way
        sched: Implement a gentler fair-sleepers feature
        sched: Add SD_PREFER_LOCAL
        sched: Add a few SYNC hint knobs to play with
        sched: Fix sync wakeups again
        sched: Add WF_FORK
        sched: Rename sync arguments
        sched: Rename select_task_rq() argument
        sched: Feature to disable APERF/MPERF cpu_power
        x86: sched: Provide arch implementations using aperf/mperf
        x86: Add generic aperf/mperf code
        x86: Move APERF/MPERF into a X86_FEATURE
        ...
      
      Fix up trivial conflict in arch/x86/include/asm/processor.h due to
      nearby addition of amd_get_nb_id() declaration from the EDAC merge.
      dcbf77b9
    • Linus Torvalds's avatar
      Merge branch 'x86-fixes-for-linus' of... · ca043a66
      Linus Torvalds authored
      Merge branch 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip
      
      * 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
        x86, pat: don't use rb-tree based lookup in reserve_memtype()
        x86: Increase MIN_GAP to include randomized stack
      ca043a66
    • Linus Torvalds's avatar
      Merge branch 'tracing-core-for-linus' of... · 1218259b
      Linus Torvalds authored
      Merge branch 'tracing-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip
      
      * 'tracing-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip: (44 commits)
        vsnprintf: remove duplicate comment of vsnprintf
        softirq: add BLOCK_IOPOLL to softirq_to_name
        oprofile: fix oprofile regression: select RING_BUFFER_ALLOW_SWAP
        tracing: switch function prints from %pf to %ps
        vsprintf: add %ps that is the same as %pS but is like %pf
        tracing: Fix minor bugs for __unregister_ftrace_function_probe
        tracing: remove notrace from __kprobes annotation
        tracing: optimize global_trace_clock cachelines
        MAINTAINERS: Update tracing tree details
        ftrace: document function and function graph implementation
        tracing: make testing syscall events a separate configuration
        tracing: remove some unused macros
        ftrace: add compile-time check on F_printk()
        tracing: fix F_printk() typos
        tracing: have TRACE_EVENT macro use __flags to not shadow parameter
        tracing: add static to generated TRACE_EVENT functions
        ring-buffer: typecast cmpxchg to fix PowerPC warning
        tracing: add filter event logic to special, mmiotrace and boot tracers
        tracing: remove trace_event_types.h
        tracing: use the new trace_entries.h to create format files
        ...
      1218259b
    • Linus Torvalds's avatar
      Merge branch 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jgarzik/libata-dev · ca9a702e
      Linus Torvalds authored
      * 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jgarzik/libata-dev:
        libata: Add pata_atp867x driver for Artop/Acard ATP867X controllers
        pata_amd: do not filter out valid modes in nv_mode_filter
        sata_promise: update reset code
        sata_promise: disable hotplug on 1st gen chips
        libata: fix spurious WARN_ON_ONCE() on port freeze
        ahci: restore pci_intx() handling
      ca9a702e
    • Linus Torvalds's avatar
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-2.6 · bbe5a96f
      Linus Torvalds authored
      * git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-2.6:
        sparc: Update defconfigs.
        sparc: Kill PROM console driver.
      bbe5a96f
    • Linus Torvalds's avatar
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 · f205ce83
      Linus Torvalds authored
      * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6: (66 commits)
        be2net: fix some cmds to use mccq instead of mbox
        atl1e: fix 2.6.31-git4 -- ATL1E 0000:03:00.0: DMA-API: device driver frees DMA
        pkt_sched: Fix qstats.qlen updating in dump_stats
        ipv6: Log the affected address when DAD failure occurs
        wl12xx: Fix print_mac() conversion.
        af_iucv: fix race when queueing skbs on the backlog queue
        af_iucv: do not call iucv_sock_kill() twice
        af_iucv: handle non-accepted sockets after resuming from suspend
        af_iucv: fix race in __iucv_sock_wait()
        iucv: use correct output register in iucv_query_maxconn()
        iucv: fix iucv_buffer_cpumask check when calling IUCV functions
        iucv: suspend/resume error msg for left over pathes
        wl12xx: switch to %pM to print the mac address
        b44: the poll handler b44_poll must not enable IRQ unconditionally
        ipv6: Ignore route option with ROUTER_PREF_INVALID
        bonding: make ab_arp select active slaves as other modes
        cfg80211: fix SME connect
        rc80211_minstrel: fix contention window calculation
        ssb/sdio: fix printk format warnings
        p54usb: add Zcomax XG-705A usbid
        ...
      f205ce83
    • Linus Torvalds's avatar
      Merge branch 'upstream' of git://ftp.linux-mips.org/pub/scm/upstream-linus · 3dc95666
      Linus Torvalds authored
      * 'upstream' of git://ftp.linux-mips.org/pub/scm/upstream-linus: (51 commits)
        MIPS: BCM63xx: Add integrated ethernet mac support.
        MIPS: BCM63xx: Add support for the Broadcom BCM63xx family of SOCs.
        MIPS: BCM63xx: Add Broadcom 63xx CPU definitions.
        MIPS: Octeon:  Move some platform device registration to its own file.
        MIPS: Don't corrupt page tables on vmalloc fault.
        MIPS: Shrink the size of tlb handler
        MIPS: Alchemy: override loops_per_jiffy detection
        MIPS: hw_random: Add hardware RNG for Octeon SOCs.
        MIPS: Octeon:  Add hardware RNG platform device.
        MIPS: Remove useless zero initializations.
        MIPS: Alchemy: get rid of allow_au1k_wait
        MIPS: Octeon: Set kernel_uses_llsc to false on non-SMP builds.
        MIPS: Allow kernel use of LL/SC to be separate from the presence of LL/SC.
        MIPS: Get rid of CONFIG_CPU_HAS_LLSC
        MIPS: Malta: Remove pointless use use of CONFIG_CPU_HAS_LLSC
        MIPS: Rewrite clearing of ll_bit on context switch in C
        MIPS: Rewrite sysmips(MIPS_ATOMIC_SET, ...) in C with inline assembler
        MIPS: Consolidate all CONFIG_CPU_HAS_LLSC use in a single C file.
        MIPS: Clean up linker script using new linker script macros.
        MIPS: Use PAGE_SIZE in assembly instead of _PAGE_SIZE.
        ...
      3dc95666
  4. 17 Sep, 2009 9 commits
    • Li Zefan's avatar
      perf trace: Sample timestamp and cpu when using record flag · 1281a49b
      Li Zefan authored
      Sample timestamp and cpu just like the -R option.
      
      Before:
                  init-0     [-01] 1266874889.17179869184709551615: irq_handler_entry: irq=18 handler=eth0
                  init-0     [-01] 1266874889.17179869184709551615: irq_handler_entry: irq=18 handler=eth0
                  init-0     [-01] 1266874889.17179869184709551615: irq_handler_entry: irq=1 handler=i8042
                  init-0     [-01] 1266874889.17179869184709551615: irq_handler_entry: irq=18 handler=eth0
                  init-0     [-01] 1266874889.17179869184709551615: irq_handler_entry: irq=1 handler=i8042
      
      After:
                  init-0     [001]  7364.568965353: irq_handler_entry: irq=18 handler=eth0
                  init-0     [001]  7365.530226877: irq_handler_entry: irq=1 handler=i8042
                  init-0     [001]  7365.542831563: irq_handler_entry: irq=18 handler=eth0
                  init-0     [001]  7365.644156299: irq_handler_entry: irq=18 handler=eth0
                  init-0     [001]  7365.694556201: irq_handler_entry: irq=18 handler=eth0
      Signed-off-by: default avatarLi Zefan <lizf@cn.fujitsu.com>
      Acked-by: default avatarFrederic Weisbecker <fweisbec@gmail.com>
      Cc: Peter Zijlstra <peterz@infradead.org>
      LKML-Reference: <4AB1F827.8040905@cn.fujitsu.com>
      Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
      1281a49b
    • Li Zefan's avatar
      perf tools: Increase MAX_EVENT_LENGTH · 270bbbe8
      Li Zefan authored
      The name length of some trace events is longer than 30, like
      sys_enter_sched_get_priority_max and
      ext4_mb_discard_preallocations.
      
      Passing those events to perf-record will fail, try:
      
        # ./perf record -f -e syscalls:sys_enter_sched_get_priority_max -F 1 -a
      Signed-off-by: default avatarLi Zefan <lizf@cn.fujitsu.com>
      Acked-by: default avatarFrederic Weisbecker <fweisbec@gmail.com>
      Cc: Peter Zijlstra <peterz@infradead.org>
      LKML-Reference: <4AB1F4AB.7050205@cn.fujitsu.com>
      Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
      270bbbe8
    • Li Zefan's avatar
      perf tools: Fix memory leak in read_ftrace_printk() · 6706ccf8
      Li Zefan authored
      get_tracing_file() should be paired with put_tracing_file().
      Signed-off-by: default avatarLi Zefan <lizf@cn.fujitsu.com>
      Acked-by: default avatarFrederic Weisbecker <fweisbec@gmail.com>
      Cc: Peter Zijlstra <peterz@infradead.org>
      LKML-Reference: <4AB1F48F.4070807@cn.fujitsu.com>
      Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
      6706ccf8
    • H. Peter Anvin's avatar
      Merge branch 'x86/pat' into x86/urgent · 3bb045f1
      H. Peter Anvin authored
      Merge reason:
      
      Suresh Siddha (1):
            x86, pat: don't use rb-tree based lookup in reserve_memtype()
      
      ... requires previous x86/pat commits already pushed to Linus.
      Signed-off-by: default avatarH. Peter Anvin <hpa@zytor.com>
      3bb045f1
    • Suresh Siddha's avatar
      x86, pat: don't use rb-tree based lookup in reserve_memtype() · dcb73bf4
      Suresh Siddha authored
      Recent enhancement of rb-tree based lookup exposed a  bug with the lookup
      mechanism in the reserve_memtype() which ensures that there are no conflicting
      memtype requests for the memory range.
      
      memtype_rb_search() returns an entry which has a start address <= new start
      address. And from here we traverse the linear linked list to check if there
      any conflicts with the existing mappings. As the rbtree is based on the
      start address of the memory range, it is quite possible that we have several
      overlapped mappings whose start address is much less than new requested start
      but the end is >= new requested end. This results in conflicting memtype
      mappings.
      
      Same bug exists with the old code which uses cached_entry from where
      we traverse the linear linked list. But the new rb-tree code exposes this
      bug fairly easily.
      
      For now, don't use the memtype_rb_search() and always start the search from
      the head of linear linked list in reserve_memtype(). Linear linked list
      for most of the systems grow's to few 10's of entries(as we track memory type
      of RAM pages using struct page). So we should be ok for now.
      
      We still retain the rbtree and use it to speed up free_memtype() which
      doesn't have the same bug(as we know what exactly we are searching for
      in free_memtype).
      
      Also use list_for_each_entry_from() in free_memtype() so that we start
      the search from rb-tree lookup result.
      Reported-by: default avatarMarkus Trippelsdorf <markus@trippelsdorf.de>
      Signed-off-by: default avatarSuresh Siddha <suresh.b.siddha@intel.com>
      Cc: Venkatesh Pallipadi <venkatesh.pallipadi@intel.com>
      LKML-Reference: <1253136483.4119.12.camel@sbs-t61.sc.intel.com>
      Signed-off-by: default avatarH. Peter Anvin <hpa@zytor.com>
      dcb73bf4
    • John(Jung-Ik) Lee's avatar
      libata: Add pata_atp867x driver for Artop/Acard ATP867X controllers · d15d6e6c
      John(Jung-Ik) Lee authored
      This is a new pata driver for ARTOP 867X 64bit 4-channel UDMA133 ATA ctrls.
      Based on the Atp867 data sheet rev 1.2, Acard, and in part on early ide codes
      from Eric Uhrhane <ericu@google.com>.
      Signed-off-by: default avatarJohn(Jung-Ik) Lee <jilee@google.com>
      Reviewed-by: default avatarGrant Grundler <grundler@google.com>
      Reviewed-by: default avatarGwendal Gringo <gwendal@google.com>
      Signed-off-by: default avatarJeff Garzik <jgarzik@redhat.com>
      d15d6e6c
    • Robert Hancock's avatar
      pata_amd: do not filter out valid modes in nv_mode_filter · 90950a25
      Robert Hancock authored
      On a Compaq Presario V3000 laptop (NVIDIA MCP51 chipset), pata_amd selects
      PIO0 mode for the PATA DVD-RAM drive instead of MWDMA2 which it supports:
      
      ata4.00: ATAPI: HL-DT-ST DVDRAM GSA-4084N, KQ09, max MWDMA2
      ata4: nv_mode_filter: 0x39f&0x7001->0x1, BIOS=0x0 (0x0) ACPI=0x7001 (60:600:0x11)
      ata4.00: configured for PIO0
      
      For some reason, the BIOS-set UDMA configuration returns 0 and the ACPI _GTM
      reports that UDMA2 and PIO0 are enabled. This causes nv_mode_filter to end up
      allowing only PIO0 and UDMA0-2. Since the drive doesn't support UDMA we end up
      using PIO0.
      
      Since the controllers should always support PIO4, MWDMA2 and UDMA2 regardless
      of what cable type is used, let's make sure we don't filter out these modes
      regardless of what wacky settings the BIOS is using.
      Signed-off-by: Robert Hancock's avatarRobert Hancock <hancockrwd@gmail.com>
      Cc: stable@kernel.org
      Signed-off-by: default avatarJeff Garzik <jgarzik@redhat.com>
      90950a25
    • Mikael Pettersson's avatar
      sata_promise: update reset code · ff7cddf5
      Mikael Pettersson authored
      sata_promise's reset code has deviated quite a bit from
      the Promise reference driver's, and it has been observed
      to fail to recover from errors in some cases.
      
      This patch thus updates the reset code to more closely
      match the reference driver:
      
      - soft reset (pdc_reset_port):
        * wait for ATA engine to not be in packet command mode
          (2nd gen only)
        * write reset bit in PDC_CTLSTAT before the first read
          in the loop
        * for 2nd gen SATA follow up with FPDMA reset and clearing
          error status registers
      - hard reset (pdc_sata_hardreset):
        * wait for ATA engine to not be in packet command mode
          (2nd gen only)
        * reset ATA engine via the PCI control register
        * Tejun's change to use non-waiting hardreset + follow-up SRST
      
      I'm not changing the hotplug mask bits since they are taken care
      of by sata_promise's ->freeze() and ->thaw() operations. And I'm
      not writing the PMP port # because that's always zero (for now).
      
      Tested here on various controllers. In particular, one disk
      which used to timeout and fail to recover from certain hdparm
      and smartmonctl commands now works nicely.
      Signed-off-by: default avatarMikael Pettersson <mikpe@it.uu.se>
      Signed-off-by: default avatarJeff Garzik <jgarzik@redhat.com>
      ff7cddf5
    • Mikael Pettersson's avatar
      sata_promise: disable hotplug on 1st gen chips · 0ae6654d
      Mikael Pettersson authored
      1st generation Promise SATA chips are prone to generating spurious
      hotplug events which can disrupt normal operation. This has been
      observed on 20376 and 20378 chips. This patch thus disables hotplug
      support on 1st gen chips while leaving it enabled for 2nd gen chips.
      
      The pdc_sata_hotplug_offset() function becomes redundant so it is
      removed.
      
      Tested on 1st gen 20376 and 20378 mainboard chips and on a 2nd gen
      SATA300 PCI card.
      Signed-off-by: default avatarMikael Pettersson <mikpe@it.uu.se>
      Tested-by: Kurt Roeckx's avatarKurt Roeckx <kurt@roeckx.be>
      Signed-off-by: default avatarJeff Garzik <jgarzik@redhat.com>
      0ae6654d