15 Jan, 2012

1 commit

  • * 'for-next' of git://git.infradead.org/users/dhowells/linux-headers:
    UAPI: Split trivial #if defined(__KERNEL__) && X conditionals
    UAPI: Don't have a #elif clause in a __KERNEL__ guard in linux/soundcard.h
    UAPI: Fix AHZ multiple inclusion when __KERNEL__ is removed
    UAPI: Make linux/patchkey.h easier to parse
    UAPI: Fix nested __KERNEL__ guards in video/edid.h
    UAPI: Alter the S390 asm include guards to be recognisable by the UAPI splitter
    UAPI: Guard linux/cuda.h
    UAPI: Guard linux/pmu.h
    UAPI: Guard linux/isdn_divertif.h
    UAPI: Guard linux/sound.h
    UAPI: Rearrange definition of HZ in asm-generic/param.h
    UAPI: Make FRV use asm-generic/param.h
    UAPI: Make M32R use asm-generic/param.h
    UAPI: Make MN10300 use asm-generic/param.h
    UAPI: elf_read_implies_exec() is a kernel-only feature - so hide from userspace
    UAPI: Don't include linux/compat.h in sparc's asm/siginfo.h
    UAPI: Fix arch/mips/include/asm/Kbuild to have separate header-y lines

    Linus Torvalds
     

12 Jan, 2012

1 commit

  • * 'linux-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/pci: (80 commits)
    x86/PCI: Expand the x86_msi_ops to have a restore MSIs.
    PCI: Increase resource array mask bit size in pcim_iomap_regions()
    PCI: DEVICE_COUNT_RESOURCE should be equal to PCI_NUM_RESOURCES
    PCI: pci_ids: add device ids for STA2X11 device (aka ConneXT)
    PNP: work around Dell 1536/1546 BIOS MMCONFIG bug that breaks USB
    x86/PCI: amd: factor out MMCONFIG discovery
    PCI: Enable ATS at the device state restore
    PCI: msi: fix imbalanced refcount of msi irq sysfs objects
    PCI: kconfig: English typo in pci/pcie/Kconfig
    PCI/PM/Runtime: make PCI traces quieter
    PCI: remove pci_create_bus()
    xtensa/PCI: convert to pci_scan_root_bus() for correct root bus resources
    x86/PCI: convert to pci_create_root_bus() and pci_scan_root_bus()
    x86/PCI: use pci_scan_bus() instead of pci_scan_bus_parented()
    x86/PCI: read Broadcom CNB20LE host bridge info before PCI scan
    sparc32, leon/PCI: convert to pci_scan_root_bus() for correct root bus resources
    sparc/PCI: convert to pci_create_root_bus()
    sh/PCI: convert to pci_scan_root_bus() for correct root bus resources
    powerpc/PCI: convert to pci_create_root_bus()
    powerpc/PCI: split PHB part out of pcibios_map_io_space()
    ...

    Fix up conflicts in drivers/pci/msi.c and include/linux/pci_regs.h due
    to the same patches being applied in other branches.

    Linus Torvalds
     

11 Jan, 2012

1 commit

  • lib: use generic pci_iomap on all architectures

    Many architectures don't want to pull in iomap.c,
    so they ended up duplicating pci_iomap from that file.
    That function isn't trivial, and we are going to modify it
    https://lkml.org/lkml/2011/11/14/183
    so the duplication hurts.

    This reduces the scope of the problem significantly,
    by moving pci_iomap to a separate file and
    referencing that from all architectures.

    * tag 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mst/vhost:
    alpha: drop pci_iomap/pci_iounmap from pci-noop.c
    mn10300: switch to GENERIC_PCI_IOMAP
    mn10300: add missing __iomap markers
    frv: switch to GENERIC_PCI_IOMAP
    tile: switch to GENERIC_PCI_IOMAP
    tile: don't panic on iomap
    sparc: switch to GENERIC_PCI_IOMAP
    sh: switch to GENERIC_PCI_IOMAP
    powerpc: switch to GENERIC_PCI_IOMAP
    parisc: switch to GENERIC_PCI_IOMAP
    mips: switch to GENERIC_PCI_IOMAP
    microblaze: switch to GENERIC_PCI_IOMAP
    arm: switch to GENERIC_PCI_IOMAP
    alpha: switch to GENERIC_PCI_IOMAP
    lib: add GENERIC_PCI_IOMAP
    lib: move GENERIC_IOMAP to lib/Kconfig

    Fix up trivial conflicts due to changes nearby in arch/{m68k,score}/Kconfig

    Linus Torvalds
     

07 Jan, 2012

1 commit

  • This patch converts TILE's architecture-specific 'pcibios_set_master()'
    routine to a non-inlined function. This will allow follow on patches
    to create a generic 'pcibios_set_master()' function using the '__weak'
    attribute which can be used by all architectures as a default which,
    if necessary, can then be over-ridden by architecture-specific code.

    Converting 'pci_bios_set_master()' to a non-inlined function will
    allow TILE's 'pcibios_set_master()' implementation to remain
    architecture-specific after the generic version is introduced and
    thus, not change current behavior.

    No functional change.

    Acked-by: Chris Metcalf
    Signed-off-by: Myron Stowe
    Signed-off-by: Jesse Barnes

    Myron Stowe
     

13 Dec, 2011

1 commit


04 Dec, 2011

3 commits


04 Nov, 2011

3 commits

  • The kernel code was using some headers that included a mix
    of hardware-specific information (typically found in Tilera
    headers) and structures, enums, and function declarations supporting
    the disassembly function of the tile-desc.c sources.

    This change refactors that code so that a hardware-specific, but
    OS- and application-agnostic header, is created: .
    This header is then exported to userspace along with the other
    headers and can be used to build userspace code; in particular,
    it is used by glibc as part of implementing the backtrace() function.

    The new header, together with a header that specifically describes
    the disassembly code ( with _32 and _64 variants),
    replaces the old and
    headers.

    As part of this change, we are also renaming the 32-bit constants
    from TILE_xxx to TILEPRO_xxx to better reflect the fact that they
    are specific to the TILEPro architecture, and not to TILE-Gx
    and any successor "tile" architecture chips.

    Signed-off-by: Chris Metcalf

    Chris Metcalf
     
  • These headers are similar to the headers that describe kernel
    APIs, but instead describe aspects of the actual hardware in an
    OS- and application-independent manner. We need to include them in
    the set of installed headers so that userspace tools (including glibc)
    can build purely from the provided kernel headers.

    Signed-off-by: Chris Metcalf

    Chris Metcalf
     
  • is used by glibc's from ,
    which means that it can't clutter the namespace with random symbols
    or #defines. However, we use to get a suitable type to
    hold a machine register.

    This change makes safe to use in this kind of context
    if __need_int_reg_t is defined prior to including the file; in that
    case, it only defines a few symbols that are safe in the ISO namespace
    (prefixed with double underscores). then uses
    the __uint_reg_t type instead of the normal uint_reg_t.

    Signed-off-by: Chris Metcalf

    Chris Metcalf
     

03 Aug, 2011

2 commits


27 Jul, 2011

5 commits

  • After changing all consumers of atomics to include , we
    ran into some compile time errors due to this dependency chain:

    linux/atomic.h
    -> asm/atomic.h
    -> asm-generic/atomic-long.h

    where atomic-long.h could use funcs defined later in linux/atomic.h
    without a prototype. This patches moves the code that includes
    asm-generic/atomic*.h to linux/atomic.h.

    Archs that need need to select
    CONFIG_GENERIC_ATOMIC64 from now on (some of them used to include it
    unconditionally).

    Compile tested on i386 and x86_64 with allnoconfig.

    Signed-off-by: Arun Sharma
    Cc: Eric Dumazet
    Cc: Ingo Molnar
    Cc: David Miller
    Acked-by: Mike Frysinger
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Arun Sharma
     
  • This is in preparation for more generic atomic primitives based on
    __atomic_add_unless.

    Signed-off-by: Arun Sharma
    Signed-off-by: Hans-Christian Egtvedt
    Reviewed-by: Eric Dumazet
    Cc: Ingo Molnar
    Cc: David Miller
    Acked-by: Mike Frysinger
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Arun Sharma
     
  • This allows us to move duplicated code in
    (atomic_inc_not_zero() for now) to

    Signed-off-by: Arun Sharma
    Reviewed-by: Eric Dumazet
    Cc: Ingo Molnar
    Cc: David Miller
    Cc: Eric Dumazet
    Acked-by: Mike Frysinger
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Arun Sharma
     
  • The majority of architectures implement ext2 atomic bitops as
    test_and_{set,clear}_bit() without spinlock.

    This adds this type of generic implementation in ext2-atomic-setbit.h and
    use it wherever possible.

    Signed-off-by: Akinobu Mita
    Suggested-by: Andreas Dilger
    Suggested-by: Arnd Bergmann
    Acked-by: Arnd Bergmann
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Akinobu Mita
     
  • [ poleg@redhat.com: no need to declare show_regs() in ptrace.h, sched.h does this ]
    Signed-off-by: Mike Frysinger
    Cc: Tejun Heo
    Signed-off-by: Oleg Nesterov
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Mike Frysinger
     

28 Jun, 2011

1 commit

  • commit 21a3c96 uses node_start/end_pfn(nid) for detection start/end
    of nodes. But, it's not defined in linux/mmzone.h but defined in
    /arch/???/include/mmzone.h which is included only under
    CONFIG_NEED_MULTIPLE_NODES=y.

    Then, we see
    mm/page_cgroup.c: In function 'page_cgroup_init':
    mm/page_cgroup.c:308: error: implicit declaration of function 'node_start_pfn'
    mm/page_cgroup.c:309: error: implicit declaration of function 'node_end_pfn'

    So, fixiing page_cgroup.c is an idea...

    But node_start_pfn()/node_end_pfn() is a very generic macro and
    should be implemented in the same manner for all archs.
    (m32r has different implementation...)

    This patch removes definitions of node_start/end_pfn() in each archs
    and defines a unified one in linux/mmzone.h. It's not under
    CONFIG_NEED_MULTIPLE_NODES, now.

    A result of macro expansion is here (mm/page_cgroup.c)

    for !NUMA
    start_pfn = ((&contig_page_data)->node_start_pfn);
    end_pfn = ({ pg_data_t *__pgdat = (&contig_page_data); __pgdat->node_start_pfn + __pgdat->node_spanned_pages;});

    for NUMA (x86-64)
    start_pfn = ((node_data[nid])->node_start_pfn);
    end_pfn = ({ pg_data_t *__pgdat = (node_data[nid]); __pgdat->node_start_pfn + __pgdat->node_spanned_pages;});

    Changelog:
    - fixed to avoid using "nid" twice in node_end_pfn() macro.

    Reported-and-acked-by: Randy Dunlap
    Reported-and-tested-by: Ingo Molnar
    Acked-by: Mel Gorman
    Signed-off-by: KAMEZAWA Hiroyuki
    Signed-off-by: Linus Torvalds

    KAMEZAWA Hiroyuki
     

15 Jun, 2011

1 commit


11 Jun, 2011

1 commit

  • The first version of this patch proposed an arch/tile/drivers/ directory,
    but the consensus was that this was probably a poor choice for a place to
    group Tilera-specific drivers, and that in any case grouping by platform
    was discouraged, and grouping by function was preferred.

    This version of the patch addresses various issues raised in the
    community, primarily the absence of sysfs integration. The sysfs
    integration now handles passing information on sector size, page size,
    and total partition size to userspace as well. In addition, we now
    use a single "struct cdev" to manage all the partition minor devices,
    and dynamically discover the correct number of partitions from the
    hypervisor rather than using a module_param with a default value.

    This driver has no particular "peer" drivers it can be grouped with.
    It is sort of like an MTD driver for SPI ROM, but it doesn't group well
    with the other MTD devices since it relies on hypervisor virtualization
    to handle many of the irritating aspects of flash ROM management: sector
    awareness, background read for sub-sector writes, bit examination to
    determine whether a sector erase needs to be issued, etc. It is in fact
    more like an EEPROM driver, but the hypervisor virtualization does require
    a "flush" command if you wish to commit a sector write prior to writing
    to a different sector, and this is sufficiently different from generic
    I2C/SPI EEPROMs that as a result it doesn't group well with them either.

    The simple character device is already in use by a range of Tilera
    SPI ROM management tools, as well as by customers. In addition, using
    the simple character device actually simplifies the userspace tools,
    since they don't need to manage sector erase, background read, etc.
    This both simplifies the code (since we can uniformly manage plain files
    and the SPI ROM) as well as makes the user code portable to non-Linux
    platforms that don't offer the same MTD ioctls.

    Signed-off-by: Chris Metcalf
    Reviewed-by: Arnd Bergmann

    Chris Metcalf
     

04 Jun, 2011

1 commit


27 May, 2011

1 commit

  • This change introduces a few of the less controversial /proc and
    /proc/sys interfaces for tile, along with sysfs attributes for
    various things that were originally proposed as /proc/tile files.
    It also adjusts the "hardwall" proc API.

    Arnd Bergmann reviewed the initial arch/tile submission, which
    included a complete set of all the /proc/tile and /proc/sys/tile
    knobs that we had added in a somewhat ad hoc way during initial
    development, and provided feedback on where most of them should go.

    One knob turned out to be similar enough to the existing
    /proc/sys/debug/exception-trace that it was re-implemented to use
    that model instead.

    Another knob was /proc/tile/grid, which reported the "grid" dimensions
    of a tile chip (e.g. 8x8 processors = 64-core chip). Arnd suggested
    looking at sysfs for that, so this change moves that information
    to a pair of sysfs attributes (chip_width and chip_height) in the
    /sys/devices/system/cpu directory. We also put the "chip_serial"
    and "chip_revision" information from our old /proc/tile/board file
    as attributes in /sys/devices/system/cpu.

    Other information collected via hypervisor APIs is now placed in
    /sys/hypervisor. We create a /sys/hypervisor/type file (holding the
    constant string "tilera") to be parallel with the Xen use of
    /sys/hypervisor/type holding "xen". We create three top-level files,
    "version" (the hypervisor's own version), "config_version" (the
    version of the configuration file), and "hvconfig" (the contents of
    the configuration file). The remaining information from our old
    /proc/tile/board and /proc/tile/switch files becomes an attribute
    group appearing under /sys/hypervisor/board/.

    Finally, after some feedback from Arnd Bergmann for the previous
    version of this patch, the /proc/tile/hardwall file is split up into
    two conceptual parts. First, a directory /proc/tile/hardwall/ which
    contains one file per active hardwall, each file named after the
    hardwall's ID and holding a cpulist that says which cpus are enclosed by
    the hardwall. Second, a /proc/PID file "hardwall" that is either
    empty (for non-hardwall-using processes) or contains the hardwall ID.

    Finally, this change pushes the /proc/sys/tile/unaligned_fixup/
    directory, with knobs controlling the kernel code for handling the
    fixup of unaligned exceptions.

    Reviewed-by: Arnd Bergmann
    Signed-off-by: Chris Metcalf

    Chris Metcalf
     

20 May, 2011

3 commits

  • These changes make the syscall table line up correctly for
    tilegx compat mode, and remove the stale sys32_fadvise64() function,
    which isn't actually used by any syscall table.

    Signed-off-by: Chris Metcalf

    Chris Metcalf
     
  • This change adds support for /proc/sys/debug/exception-trace to tile.
    Like x86 and sparc, by default it is set to "1", generating a one-line
    printk whenever a user process crashes. By setting it to "2", we get
    a much more complete userspace diagnostic at crash time, including
    a user-space backtrace, register dump, and memory dump around the
    address of the crash.

    Some vestiges of the Tilera-internal version of this support are
    removed with this patch (the show_crashinfo variable and the
    arch_coredump_signal function). We retain a "crashinfo" boot parameter
    which allows you to set the boot-time value of exception-trace.

    Signed-off-by: Chris Metcalf

    Chris Metcalf
     
  • These definitions use a ({}) construct to avoid some cases where
    we were getting warnings about unused return values. We also
    promote the definition to the common , since it applies
    to both the 32- and 64-bit atomics.

    In addition, define __HAVE_ARCH_CMPXCHG for TILE-Gx since it has
    efficient direct atomic instructions.

    Signed-off-by: Chris Metcalf

    Chris Metcalf
     

13 May, 2011

1 commit

  • This support was partially present in the existing code (look for
    "__tilegx__" ifdefs) but with this change you can build a working
    kernel using the TILE-Gx toolchain and ARCH=tilegx.

    Most of these files are new, generally adding a foo_64.c file
    where previously there was just a foo_32.c file.

    The ARCH=tilegx directive redirects to arch/tile, not arch/tilegx,
    using the existing SRCARCH mechanism in the top-level Makefile.

    Changes to existing files:

    - and changed to factor the
    include of in the common header.

    - and arch/tile/kernel/compat.c changed to remove
    the "const" markers I had put on compat_sys_execve() when trying
    to match some recent similar changes to the non-compat execve.
    It turns out the compat version wasn't "upgraded" to use const.

    - and were
    previously included accidentally, with the 32-bit contents. Now
    they have the proper 64-bit contents.

    Finally, I had to hack the existing hacky drivers/input/input-compat.h
    to add yet another "#ifdef" for INPUT_COMPAT_TEST (same as x86_64).

    Signed-off-by: Chris Metcalf
    Acked-by: Dmitry Torokhov [drivers/input]

    Chris Metcalf
     

05 May, 2011

7 commits

  • We plan to change mm->cpu_vm_mask definition later. Thus, this patch convert
    it into proper macro.

    Signed-off-by: KOSAKI Motohiro
    Signed-off-by: Chris Metcalf

    KOSAKI Motohiro
     
  • Since v2.6.20 "Pass struct dev pointer to dma_cache_sync()"
    (d3fa72e4556ec1f04e46a0d561d9e785ecaa173d), dma_cache_sync() takes a
    struct dev pointer, but these appear to be missing from the tile and
    mn10300 implementations, so add them.

    Signed-off-by: James Hogan
    [cmetcalf@tilera.com: took only the "tile" portion as I don't maintain mn10300]
    Signed-off-by: Chris Metcalf

    James Hogan
     
  • They are only applicable for locally-homecached memory ranges, so
    change their names to {flush,finv}_buffer_local(). Change inv_buffer()
    to just do an mf instead of any kind of fancier barrier, since you're
    obviously not going to be waiting for anything once the local homecache
    is invalidated.

    Fix tilepro.c network driver not to bother calling finv_buffer when
    stopping the EPP, but just mf after memset to ensure that it will not
    see any packet data after we finish stopping; use finv_buffer_remote()
    when doing exit-time cleanup.

    This also fixes a (not very interesting) generic Linux build failure
    where drivers/scsi/st.c declares its own flush_buffer().

    Signed-off-by: Chris Metcalf

    Chris Metcalf
     
  • User space code has been able to discover the static page size
    by including a special file. In the current release,
    that file is now gone, and doesn't rely on it. The
    getpagesize() API is now the only way for userspace to get the page size.

    Signed-off-by: Chris Metcalf

    Chris Metcalf
     
  • This change adds a number of missing headers in asm (fb.h, parport.h,
    serial.h, and vga.h) using the minimal generic versions.

    It also adds a number of missing interfaces that showed up as build
    failures when trying to build various drivers not normally included in the
    "tile" distribution: ioremap_wc(), memset_io(), io{read,write}{16,32}be(),
    virt_to_bus(), bus_to_virt(), irq_canonicalize(), __pte(), __pgd(),
    and __pmd(). I also added a cast in virt_to_page() since not all callers
    pass a pointer.

    I fixed to properly include a __KERNEL__ guard for the
    __ARCH_WANT_STAT64 symbol, and to use __builtin_bswap32()
    even for our 64-bit architecture, since the same code is produced.

    I added an export for get_cycles(), since it's used in some modules.

    And I made properly include the __KERNEL__ guard,
    even though it's not yet exported, since it likely will be soon.

    Signed-off-by: Chris Metcalf

    Chris Metcalf
     
  • This allows processes to spread more effectively to multiple cores
    (particularly important on 64-core chips!).

    Signed-off-by: Chris Metcalf

    Chris Metcalf
     
  • Note that this is not complete hot-plug support; hot-unplug is not included.

    Signed-off-by: Chris Metcalf

    Chris Metcalf
     

03 May, 2011

2 commits

  • This support is required for CONFIG_KEYS, NFSv4 kernel DNS, etc.
    The change is slightly more complex than the minimal thing, since
    I took advantage of having to go into the assembly code to just
    move a bunch of stuff into C code: specifically, the schedule(),
    do_async_page_fault(), do_signal(), and single_step_once() support,
    in addition to the TIF_NOTIFY_RESUME support.

    Signed-off-by: Chris Metcalf

    Chris Metcalf
     
  • This change is the result of some work to make the backtrace code more
    shareable between kernel, libc, and gdb.

    For the kernel, some good effects are to eliminate the hacky
    "VirtualAddress" typedef in favor of "unsigned long", to eliminate a
    bunch of spurious kernel doc comments, to remove the dead "bt_read_memory"
    function, and to use "__tilegx__" in #ifdefs instead of "TILE_CHIP".

    Signed-off-by: Chris Metcalf

    Chris Metcalf
     

31 Mar, 2011

1 commit


24 Mar, 2011

3 commits

  • minix bit operations are only used by minix filesystem and useless by
    other modules. Because byte order of inode and block bitmaps is different
    on each architecture like below:

    m68k:
    big-endian 16bit indexed bitmaps

    h8300, microblaze, s390, sparc, m68knommu:
    big-endian 32 or 64bit indexed bitmaps

    m32r, mips, sh, xtensa:
    big-endian 32 or 64bit indexed bitmaps for big-endian mode
    little-endian bitmaps for little-endian mode

    Others:
    little-endian bitmaps

    In order to move minix bit operations from asm/bitops.h to architecture
    independent code in minix filesystem, this provides two config options.

    CONFIG_MINIX_FS_BIG_ENDIAN_16BIT_INDEXED is only selected by m68k.
    CONFIG_MINIX_FS_NATIVE_ENDIAN is selected by the architectures which use
    native byte order bitmaps (h8300, microblaze, s390, sparc, m68knommu,
    m32r, mips, sh, xtensa). The architectures which always use little-endian
    bitmaps do not select these options.

    Finally, we can remove minix bit operations from asm/bitops.h for all
    architectures.

    Signed-off-by: Akinobu Mita
    Acked-by: Arnd Bergmann
    Acked-by: Greg Ungerer
    Cc: Geert Uytterhoeven
    Cc: Roman Zippel
    Cc: Andreas Schwab
    Cc: Martin Schwidefsky
    Cc: Heiko Carstens
    Cc: Yoshinori Sato
    Cc: Michal Simek
    Cc: "David S. Miller"
    Cc: Hirokazu Takata
    Acked-by: Ralf Baechle
    Acked-by: Paul Mundt
    Cc: Chris Zankel
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Akinobu Mita
     
  • As the result of conversions, there are no users of ext2 non-atomic bit
    operations except for ext2 filesystem itself. Now we can put them into
    architecture independent code in ext2 filesystem, and remove from
    asm/bitops.h for all architectures.

    Signed-off-by: Akinobu Mita
    Cc: Jan Kara
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Akinobu Mita
     
  • Introduce little-endian bit operations to the big-endian architectures
    which do not have native little-endian bit operations and the
    little-endian architectures. (alpha, avr32, blackfin, cris, frv, h8300,
    ia64, m32r, mips, mn10300, parisc, sh, sparc, tile, x86, xtensa)

    These architectures can just include generic implementation
    (asm-generic/bitops/le.h).

    Signed-off-by: Akinobu Mita
    Cc: Richard Henderson
    Cc: Ivan Kokshaysky
    Cc: Mikael Starvik
    Cc: David Howells
    Cc: Yoshinori Sato
    Cc: "Luck, Tony"
    Cc: Ralf Baechle
    Cc: Kyle McMartin
    Cc: Matthew Wilcox
    Cc: Grant Grundler
    Cc: Paul Mundt
    Cc: Kazumoto Kojima
    Cc: Hirokazu Takata
    Cc: "David S. Miller"
    Cc: Chris Zankel
    Cc: Ingo Molnar
    Cc: Thomas Gleixner
    Acked-by: Hans-Christian Egtvedt
    Acked-by: "H. Peter Anvin"
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Akinobu Mita