19 Oct, 2010

1 commit

  • Provide a mechanism that allows running code in IRQ context. It is
    most useful for NMI code that needs to interact with the rest of the
    system -- like wakeup a task to drain buffers.

    Perf currently has such a mechanism, so extract that and provide it as
    a generic feature, independent of perf so that others may also
    benefit.

    The IRQ context callback is generated through self-IPIs where
    possible, or on architectures like powerpc the decrementer (the
    built-in timer facility) is set to generate an interrupt immediately.

    Architectures that don't have anything like this get to do with a
    callback from the timer tick. These architectures can call
    irq_work_run() at the tail of any IRQ handlers that might enqueue such
    work (like the perf IRQ handler) to avoid undue latencies in
    processing the work.

    Signed-off-by: Peter Zijlstra
    Acked-by: Kyle McMartin
    Acked-by: Martin Schwidefsky
    [ various fixes ]
    Signed-off-by: Huang Ying
    LKML-Reference:
    Signed-off-by: Ingo Molnar

    Peter Zijlstra
     

22 Sep, 2009

1 commit

  • * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial: (34 commits)
    trivial: fix typo in aic7xxx comment
    trivial: fix comment typo in drivers/ata/pata_hpt37x.c
    trivial: typo in kernel-parameters.txt
    trivial: fix typo in tracing documentation
    trivial: add __init/__exit macros in drivers/gpio/bt8xxgpio.c
    trivial: add __init macro/ fix of __exit macro location in ipmi_poweroff.c
    trivial: remove unnecessary semicolons
    trivial: Fix duplicated word "options" in comment
    trivial: kbuild: remove extraneous blank line after declaration of usage()
    trivial: improve help text for mm debug config options
    trivial: doc: hpfall: accept disk device to unload as argument
    trivial: doc: hpfall: reduce risk that hpfall can do harm
    trivial: SubmittingPatches: Fix reference to renumbered step
    trivial: fix typos "man[ae]g?ment" -> "management"
    trivial: media/video/cx88: add __init/__exit macros to cx88 drivers
    trivial: fix typo in CONFIG_DEBUG_FS in gcov doc
    trivial: fix missing printk space in amd_k7_smp_check
    trivial: fix typo s/ketymap/keymap/ in comment
    trivial: fix typo "to to" in multiple files
    trivial: fix typos in comments s/DGBU/DBGU/
    ...

    Linus Torvalds
     

21 Sep, 2009

2 commits

  • Signed-off-by: Uwe Kleine-Koenig
    Signed-off-by: Jiri Kosina

    Uwe Kleine-Koenig
     
  • Bye-bye Performance Counters, welcome Performance Events!

    In the past few months the perfcounters subsystem has grown out its
    initial role of counting hardware events, and has become (and is
    becoming) a much broader generic event enumeration, reporting, logging,
    monitoring, analysis facility.

    Naming its core object 'perf_counter' and naming the subsystem
    'perfcounters' has become more and more of a misnomer. With pending
    code like hw-breakpoints support the 'counter' name is less and
    less appropriate.

    All in one, we've decided to rename the subsystem to 'performance
    events' and to propagate this rename through all fields, variables
    and API names. (in an ABI compatible fashion)

    The word 'event' is also a bit shorter than 'counter' - which makes
    it slightly more convenient to write/handle as well.

    Thanks goes to Stephane Eranian who first observed this misnomer and
    suggested a rename.

    User-space tooling and ABI compatibility is not affected - this patch
    should be function-invariant. (Also, defconfigs were not touched to
    keep the size down.)

    This patch has been generated via the following script:

    FILES=$(find * -type f | grep -vE 'oprofile|[^K]config')

    sed -i \
    -e 's/PERF_EVENT_/PERF_RECORD_/g' \
    -e 's/PERF_COUNTER/PERF_EVENT/g' \
    -e 's/perf_counter/perf_event/g' \
    -e 's/nb_counters/nb_events/g' \
    -e 's/swcounter/swevent/g' \
    -e 's/tpcounter_event/tp_event/g' \
    $FILES

    for N in $(find . -name perf_counter.[ch]); do
    M=$(echo $N | sed 's/perf_counter/perf_event/g')
    mv $N $M
    done

    FILES=$(find . -name perf_event.*)

    sed -i \
    -e 's/COUNTER_MASK/REG_MASK/g' \
    -e 's/COUNTER/EVENT/g' \
    -e 's/\/event_id/g' \
    -e 's/counter/event/g' \
    -e 's/Counter/Event/g' \
    $FILES

    ... to keep it as correct as possible. This script can also be
    used by anyone who has pending perfcounters patches - it converts
    a Linux kernel tree over to the new naming. We tried to time this
    change to the point in time where the amount of pending patches
    is the smallest: the end of the merge window.

    Namespace clashes were fixed up in a preparatory patch - and some
    stylistic fallout will be fixed up in a subsequent patch.

    ( NOTE: 'counters' are still the proper terminology when we deal
    with hardware registers - and these sed scripts are a bit
    over-eager in renaming them. I've undone some of that, but
    in case there's something left where 'counter' would be
    better than 'event' we can undo that on an individual basis
    instead of touching an otherwise nicely automated patch. )

    Suggested-by: Stephane Eranian
    Acked-by: Peter Zijlstra
    Acked-by: Paul Mackerras
    Reviewed-by: Arjan van de Ven
    Cc: Mike Galbraith
    Cc: Arnaldo Carvalho de Melo
    Cc: Frederic Weisbecker
    Cc: Steven Rostedt
    Cc: Benjamin Herrenschmidt
    Cc: David Howells
    Cc: Kyle McMartin
    Cc: Martin Schwidefsky
    Cc: "David S. Miller"
    Cc: Thomas Gleixner
    Cc: "H. Peter Anvin"
    Cc:
    LKML-Reference:
    Signed-off-by: Ingo Molnar

    Ingo Molnar
     

02 Jul, 2009

2 commits

  • Add basic performance counter support to the FRV arch.

    Signed-off-by: David Howells
    Signed-off-by: Linus Torvalds

    David Howells
     
  • Implement atomic64_t and its ops for FRV. Tested with the following patch:

    diff --git a/arch/frv/kernel/setup.c b/arch/frv/kernel/setup.c
    index 55e4fab..086d50d 100644
    --- a/arch/frv/kernel/setup.c
    +++ b/arch/frv/kernel/setup.c
    @@ -746,6 +746,52 @@ static void __init parse_cmdline_early(char *cmdline)

    } /* end parse_cmdline_early() */

    +static atomic64_t xxx;
    +
    +static void test_atomic64(void)
    +{
    + atomic64_set(&xxx, 0x12300000023LL);
    +
    + mb();
    + BUG_ON(atomic64_read(&xxx) != 0x12300000023LL);
    + mb();
    + if (atomic64_inc_return(&xxx) != 0x12300000024LL)
    + BUG();
    + mb();
    + BUG_ON(atomic64_read(&xxx) != 0x12300000024LL);
    + mb();
    + if (atomic64_sub_return(0x36900000050LL, &xxx) != -0x2460000002cLL)
    + BUG();
    + mb();
    + BUG_ON(atomic64_read(&xxx) != -0x2460000002cLL);
    + mb();
    + if (atomic64_dec_return(&xxx) != -0x2460000002dLL)
    + BUG();
    + mb();
    + BUG_ON(atomic64_read(&xxx) != -0x2460000002dLL);
    + mb();
    + if (atomic64_add_return(0x36800000001LL, &xxx) != 0x121ffffffd4LL)
    + BUG();
    + mb();
    + BUG_ON(atomic64_read(&xxx) != 0x121ffffffd4LL);
    + mb();
    + if (atomic64_cmpxchg(&xxx, 0x123456789abcdefLL, 0x121ffffffd4LL) != 0x121ffffffd4LL)
    + BUG();
    + mb();
    + BUG_ON(atomic64_read(&xxx) != 0x121ffffffd4LL);
    + mb();
    + if (atomic64_cmpxchg(&xxx, 0x121ffffffd4LL, 0x123456789abcdefLL) != 0x121ffffffd4LL)
    + BUG();
    + mb();
    + BUG_ON(atomic64_read(&xxx) != 0x123456789abcdefLL);
    + mb();
    + if (atomic64_xchg(&xxx, 0xabcdef123456789LL) != 0x123456789abcdefLL)
    + BUG();
    + mb();
    + BUG_ON(atomic64_read(&xxx) != 0xabcdef123456789LL);
    + mb();
    +}
    +
    /*****************************************************************************/
    /*
    *
    @@ -845,6 +891,8 @@ void __init setup_arch(char **cmdline_p)
    // asm volatile("movgs %0,timerd" :: "r"(10000000));
    // __set_HSR(0, __get_HSR(0) | HSR0_ETMD);

    + test_atomic64();
    +
    } /* end setup_arch() */

    #if 0

    Note that this doesn't cover all the trivial wrappers, but does cover all the
    substantial implementations.

    Signed-off-by: David Howells
    Signed-off-by: Linus Torvalds

    David Howells
     

03 Feb, 2008

1 commit

  • My first guess for "fujitsu" was it might be related to the
    fujitsu-laptop.c driver...

    Move the frv directory one level up since frv is the name of the
    architecture in the Linux kernel.

    Signed-off-by: Adrian Bunk

    Adrian Bunk
     

03 Dec, 2006

2 commits


09 Jan, 2006

2 commits


17 Apr, 2005

1 commit

  • Initial git repository build. I'm not bothering with the full history,
    even though we have it. We can create a separate "historical" git
    archive of that later if we want to, and in the meantime it's about
    3.2GB when imported into git - space that would just make the early
    git days unnecessarily complicated, when we don't have a lot of good
    infrastructure for it.

    Let it rip!

    Linus Torvalds