lkml.org 
[lkml]   [2012]   [May]   [16]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    SubjectRe: [PATCH v5 6/7] x86/tlb: optimizing flush_tlb_mm
    From
    Date
    On Thu, 2012-05-17 at 08:43 +0800, Alex Shi wrote:

    > > I've seem to have misplaced my cross-compiler set, so I've only compiled
    > > x86-64 for now.
    >
    >
    > Oh, I also need a cross-compiler for other archs. Thanks reminder!

    Here:

    http://kernel.org/pub/tools/crosstool/

    Oh, and if you want to automate this. I attached a ktest.pl config that
    does it for you. I'll be pushing this config and others into a examples
    directory come the next merge window.

    Ktest is located in the Linux tree under tools/testing/ktest/

    You can run a bunch of cross compiles by doing:

    ktest.pl crosstests.conf

    -- Steve




    #
    # Example config for cross compiling
    #
    # In this config, it is expected that the tool chains from:
    #
    # http://kernel.org/pub/tools/crosstool/files/bin/x86_64/
    #
    # running on a x86_64 system have been downloaded and installed into:
    #
    # /usr/local/
    #
    # such that the compiler binaries are something like:
    #
    # /usr/local/gcc-4.5.2-nolibc/mips-linux/bin/mips-linux-gcc
    #
    # Some of the archs will use gcc-4.5.1 instead of gcc-4.5.2
    # this config uses variables to differentiate them.
    #
    # Comments will be described for some areas, but the opitons are
    # all documented in the samples.conf file.

    # ${PWD} is defined by ktest.pl to be the directory that the user
    # was in when they executed ktest.pl. It may be better to hardcode the
    # path name here. THIS_DIR is the variable used through out the config file
    # in case you want to change it.

    THIS_DIR := ${PWD}

    # Update the BUILD_DIR option to the location of your git repo you want to test.
    BUILD_DIR = ${THIS_DIR}/linux.git

    # The build will go into this directory. It will be created when you run the test.
    OUTPUT_DIR = ${THIS_DIR}/cross-compile

    # The build will be compiled with -j8
    BUILD_OPTIONS = -j8

    # The test will not stop when it hits a failure.
    DIE_ON_FAILURE = 0

    # If you want to have ktest.pl store the failure somewhere, uncomment this option
    # and change the directory where ktest should store the failures.
    #STORE_FAILURES = ${THIS_DIR}/failures

    # The log file is stored in the OUTPUT_DIR called cross.log
    # If you enable this, you need to create the OUTPUT_DIR. It wont be created for you.
    #LOG_FILE = ${OUTPUT_DIR}/cross.log

    # The log file will be cleared each time you run ktest.
    CLEAR_LOG = 1

    # As some archs do not build with the defconfig, they have been marked
    # to be ignored. If you want to test them anyway, change DO_FAILED to one.
    # If a test that has been marked as DO_FAILED passes, then you should change
    # that test to be DO_DEFAULT

    DO_FAILED := 0
    DO_DEFAULT := 1

    # By setting both DO_FAILED and DO_DEFAULT to zero, you can pick a single
    # arch that you want to test. (uncomment RUN and chose your arch)
    #RUN := m32r

    # At the bottom of the config file exists a bisect test. You can update that
    # test and set DO_FAILED and DO_DEFAULT to zero, and uncomment this variable
    # to run the bisect on the arch.
    #RUN := bisect

    # By default all tests will be running gcc 4.5.2. Some tests are using 4.5.1
    # and they select that in the test.
    # Note: GCC_VER is declared as on option and not a variable ('=' istead of ':=')
    # This is important. A variable is used only in the config file and if it is set
    # it stays that way for the rest of the config file until it is change again.
    # Here we want GCC_VER to remain persistent throughout the tests, as it is used in
    # the MAKE_CMD. By using '=' instead of ':=' we achieve our goal.

    GCC_VER = 4.5.2
    MAKE_CMD = PATH=/usr/local/gcc-${GCC_VER}-nolibc/${CROSS}/bin:$PATH CROSS_COMPILE=${CROSS}- make ARCH=${ARCH}

    # all tests are only doing builds.
    TEST_TYPE = build

    # If you want to add configs on top of the defconfig, you can add those configs into
    # the add-config file and uncomment this option. This is useful if you want to test
    # all cross compiles with PREEMPT set, or TRACING on, etc.
    #ADD_CONFIG = ${THIS_DIR}/add-config

    # All tests are using defconfig
    BUILD_TYPE = defconfig

    # The test names will have the arch and cross compiler used. This will be shown in
    # the results.
    TEST_NAME = ${ARCH} ${CROSS}

    # alpha
    TEST_START IF ${RUN} == alpha || ${DO_DEFAULT}
    CROSS = alpha-linux
    ARCH = alpha

    # arm
    TEST_START IF ${RUN} == arm || ${DO_DEFAULT}
    CROSS = arm-unknown-linux-gnueabi
    ARCH = arm

    # black fin
    TEST_START IF ${RUN} == bfin || ${DO_DEFAULT}
    CROSS = bfin-uclinux
    ARCH = blackfin
    BUILD_OPTIONS = -j8 vmlinux

    # cris - FAILS?
    TEST_START IF ${RUN} == cris || ${RUN} == cris64 || ${DO_FAILED}
    CROSS = cris-linux
    ARCH = cris

    # cris32 - not right arch?
    TEST_START IF ${RUN} == cris || ${RUN} == cris32 || ${DO_FAILED}
    CROSS = crisv32-linux
    ARCH = cris

    # ia64
    TEST_START IF ${RUN} == ia64 || ${DO_DEFAULT}
    CROSS = ia64-linux
    ARCH = ia64

    # frv
    TEST_START IF ${RUN} == frv || ${DO_FAILED}
    CROSS = frv-linux
    ARCH = frv
    GCC_VER = 4.5.1

    # h8300 - failed make defconfig??
    TEST_START IF ${RUN} == h8300 || ${DO_FAILED}
    CROSS = h8300-elf
    ARCH = h8300
    GCC_VER = 4.5.1

    # m68k fails with error?
    TEST_START IF ${RUN} == m68k || ${DO_DEFAULT}
    CROSS = m68k-linux
    ARCH = m68k

    # mips64
    TEST_START IF ${RUN} == mips || ${RUN} == mips64 || ${DO_DEFAULT}
    CROSS = mips64-linux
    ARCH = mips

    # mips32
    TEST_START IF ${RUN} == mips || ${RUN} == mips32 || ${DO_DEFAULT}
    CROSS = mips-linux
    ARCH = mips

    # m32r
    TEST_START IF ${RUN} == m32r || ${DO_FAILED}
    CROSS = m32r-linux
    ARCH = m32r
    GCC_VER = 4.5.1
    BUILD_OPTIONS = -j8 vmlinux

    # parisc64 failed?
    TEST_START IF ${RUN} == hppa || ${RUN} == hppa64 || ${DO_FAILED}
    CROSS = hppa64-linux
    ARCH = parisc

    # parisc
    TEST_START IF ${RUN} == hppa || ${RUN} == hppa32 || ${DO_FAILED}
    CROSS = hppa-linux
    ARCH = parisc

    # ppc
    TEST_START IF ${RUN} == ppc || ${RUN} == ppc32 || ${DO_DEFAULT}
    CROSS = powerpc-linux
    ARCH = powerpc

    # ppc64
    TEST_START IF ${RUN} == ppc || ${RUN} == ppc64 || ${DO_DEFAULT}
    CROSS = powerpc64-linux
    ARCH = powerpc

    # s390
    TEST_START IF ${RUN} == s390 || ${DO_DEFAULT}
    CROSS = s390x-linux
    ARCH = s390

    # sh
    TEST_START IF ${RUN} == sh || ${DO_DEFAULT}
    CROSS = sh4-linux
    ARCH = sh

    # sparc64
    TEST_START IF ${RUN} == sparc || ${RUN} == sparc64 || ${DO_DEFAULT}
    CROSS = sparc64-linux
    ARCH = sparc64

    # sparc
    TEST_START IF ${RUN} == sparc || ${RUN} == sparc32 || ${DO_DEFAULT}
    CROSS = sparc-linux
    ARCH = sparc

    # xtensa failed
    TEST_START IF ${RUN} == xtensa || ${DO_FAILED}
    CROSS = xtensa-linux
    ARCH = xtensa

    # UML
    TEST_START IF ${RUN} == uml || ${DO_DEFAULT}
    MAKE_CMD = make ARCH=um SUBARCH=x86_64
    ARCH = uml
    CROSS =

    TEST_START IF ${RUN} == x86 || ${RUN} == i386 || ${DO_DEFAULT}
    MAKE_CMD = make ARCH=i386
    ARCH = i386
    CROSS =

    TEST_START IF ${RUN} == x86 || ${RUN} == x86_64 || ${DO_DEFAULT}
    MAKE_CMD = make ARCH=x86_64
    ARCH = x86_64
    CROSS =

    #################################

    # This is a bisect if needed. You need to give it a MIN_CONFIG that
    # will be the config file it uses. Basically, just copy the created defconfig
    # for the arch someplace and point MIN_CONFIG to it.
    TEST_START IF ${RUN} == bisect
    MIN_CONFIG = ${THIS_DIR}/min-config
    CROSS = s390x-linux
    ARCH = s390
    TEST_TYPE = bisect
    BISECT_TYPE = build
    BISECT_GOOD = v3.1
    BISECT_BAD = v3.2
    CHECKOUT = v3.2

    #################################

    # These defaults are needed to keep ktest.pl from complaining. They are
    # ignored because the test does not go pass the build. No install or
    # booting of the target images.

    DEFAULTS
    MACHINE = crosstest
    SSH_USER = root
    BUILD_TARGET = cross
    TARGET_IMAGE = image
    POWER_CYCLE = cycle
    CONSOLE = console
    LOCALVERSION = version
    GRUB_MENU = grub

    REBOOT_ON_ERROR = 0
    POWEROFF_ON_ERROR = 0
    POWEROFF_ON_SUCCESS = 0
    REBOOT_ON_SUCCESS = 0

    \
     
     \ /
      Last update: 2012-05-17 04:21    [W:0.047 / U:31.292 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site