20 May, 2012

2 commits

  • Pull PA-RISC fixes from James Bottomley:
    "This is a set of three bug fixes that gets parisc running again on
    systems with PA1.1 processors.

    Two fix regressions introduced in 2.6.39 and one fixes a prefetch bug
    that only affects PA7300LC processors. We also have another pending
    fix to do with the sectional arrangement of vmlinux.lds, but there's a
    query on it during testing on one particular system type, so I'll hold
    off sending it in for now."

    * tag 'parisc-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/parisc-2.6:
    [PARISC] fix panic on prefetch(NULL) on PA7300LC
    [PARISC] fix crash in flush_icache_page_asm on PA1.1
    [PARISC] fix PA1.1 oops on boot

    Linus Torvalds
     
  • Pull x86 linker bug workarounds from Peter Anvin.

    GNU ld-2.22.52.0.[12] (*) has an unfortunate bug where it incorrectly
    turns certain relocation entries absolute. Section-relative symbols
    that are part of otherwise empty sections are silently changed them to
    absolute. We rely on section-relative symbols staying section-relative,
    and actually have several sections in the linker script solely for this
    purpose.

    See for example

    http://sourceware.org/bugzilla/show_bug.cgi?id=14052

    We could just black-list the buggy linker, but it appears that it got
    shipped in at least F17, and possibly other distros too, so it's sadly
    not some rare unusual case.

    This backports the workaround from the x86/trampoline branch, and as
    Peter says: "This is not a minimal fix, not at all, but it is a tested
    code base."

    * 'x86/ld-fix' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    x86, relocs: When printing an error, say relative or absolute
    x86, relocs: Workaround for binutils 2.22.52.0.1 section bug
    x86, realmode: 16-bit real-mode code support for relocs tool

    (*) That's a manly release numbering system. Stupid, sure. But manly.

    Linus Torvalds
     

19 May, 2012

7 commits

  • When the relocs tool throws an error, let the error message say if it
    is an absolute or relative symbol. This should make it a lot more
    clear what action the programmer needs to take and should help us find
    the reason if additional symbol bugs show up.

    Signed-off-by: H. Peter Anvin
    Cc:

    H. Peter Anvin
     
  • GNU ld 2.22.52.0.1 has a bug that it blindly changes symbols from
    section-relative to absolute if they are in a section of zero length.
    This turns the symbols __init_begin and __init_end into absolute
    symbols. Let the relocs program know that those should be treated as
    relative symbols.

    Reported-by: Ingo Molnar
    Signed-off-by: H. Peter Anvin
    Cc: H.J. Lu
    Cc:
    Cc: Jarkko Sakkinen

    H. Peter Anvin
     
  • A new option is added to the relocs tool called '--realmode'.
    This option causes the generation of 16-bit segment relocations
    and 32-bit linear relocations for the real-mode code. When
    the real-mode code is moved to the low-memory during kernel
    initialization, these relocation entries can be used to
    relocate the code properly.

    In the assembly code 16-bit segment relocations must be relative
    to the 'real_mode_seg' absolute symbol. Linear relocations must be
    relative to a symbol prefixed with 'pa_'.

    16-bit segment relocation is used to load cs:ip in 16-bit code.
    Linear relocations are used in the 32-bit code for relocatable
    data references. They are declared in the linker script of the
    real-mode code.

    The relocs tool is moved to arch/x86/tools/relocs.c, and added new
    target archscripts that can be used to build scripts needed building
    an architecture. be compiled before building the arch/x86 tree.

    [ hpa: accelerating this because it detects invalid absolute
    relocations, a serious bug in binutils 2.22.52.0.x which currently
    produces bad kernels. ]

    Signed-off-by: H. Peter Anvin
    Link: http://lkml.kernel.org/r/1336501366-28617-2-git-send-email-jarkko.sakkinen@intel.com
    Signed-off-by: Jarkko Sakkinen
    Signed-off-by: H. Peter Anvin
    Cc:

    H. Peter Anvin
     
  • Pull tile tree bugfix from Chris Metcalf:
    "This fixes a security vulnerability (and correctness bug) in tilegx"

    * 'stable' of git://git.kernel.org/pub/scm/linux/kernel/git/cmetcalf/linux-tile:
    tilegx: enable SYSCALL_WRAPPERS support

    Linus Torvalds
     
  • Merge misc fixes from Andrew Morton.

    * emailed from Andrew Morton : (4 patches)
    frv: delete incorrect task prototypes causing compile fail
    slub: missing test for partial pages flush work in flush_all()
    fs, proc: fix ABBA deadlock in case of execution attempt of map_files/ entries
    drivers/rtc/rtc-pl031.c: configure correct wday for 2000-01-01

    Linus Torvalds
     
  • Some discussion with the glibc mailing lists revealed that this was
    necessary for 64-bit platforms with MIPS-like sign-extension rules
    for 32-bit values. The original symptom was that passing (uid_t)-1 to
    setreuid() was failing in programs linked -pthread because of the "setxid"
    mechanism for passing setxid-type function arguments to the syscall code.
    SYSCALL_WRAPPERS handles ensuring that all syscall arguments end up with
    proper sign-extension and is thus the appropriate fix for this problem.

    On other platforms (s390, powerpc, sparc64, and mips) this was fixed
    in 2.6.28.6. The general issue is tracked as CVE-2009-0029.

    Cc:
    Signed-off-by: Chris Metcalf

    Chris Metcalf
     
  • Pull a machine check recovery fix from Tony Luck.

    I really don't like how the MCE code does some of the things it does,
    but this does seem to be an improvement.

    * tag 'linus-mce-fix' of git://git.kernel.org/pub/scm/linux/kernel/git/ras/ras:
    x86/mce: Only restart instruction after machine check recovery if it is safe

    Linus Torvalds
     

18 May, 2012

4 commits

  • Commit 41101809a865 ("fork: Provide weak arch_release_[task_struct|
    thread_info] functions") in -tip highlights a problem in the frv arch,
    where it has needles prototypes for alloc_task_struct_node and
    free_task_struct. This now shows up as:

    kernel/fork.c:120:66: error: static declaration of 'alloc_task_struct_node' follows non-static declaration
    kernel/fork.c:127:51: error: static declaration of 'free_task_struct' follows non-static declaration

    since that commit turned them into real functions. Since arch/frv does
    does not define define __HAVE_ARCH_TASK_STRUCT_ALLOCATOR (i.e. it just
    uses the generic ones) it shouldn't list these at all.

    Signed-off-by: Paul Gortmaker
    Cc: David Howells
    Cc: Thomas Gleixner
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Paul Gortmaker
     
  • Pull ARM fixes from Russell King:
    "Small set of fixes again."

    * 'fixes' of git://git.linaro.org/people/rmk/linux-arm:
    ARM: 7419/1: vfp: fix VFP flushing regression on sigreturn path
    ARM: 7418/1: LPAE: fix access flag setup in mem_type_table
    ARM: prevent VM_GROWSDOWN mmaps extending below FIRST_USER_ADDRESS
    ARM: 7417/1: vfp: ensure preemption is disabled when enabling VFP access

    Linus Torvalds
     
  • Pull ARM: SoC fixes from Olof Johansson:
    "I will stop trying to predict when we're done with fixes for a
    release.

    Here's another small batch of three patches for arm-soc:

    - A fix for a boot time WARN_ON() due to irq domain conversion on
    PRIMA2
    - Fix for a regression in Tegra SMP spinup code due to swapped
    register offsets
    - Fixed config dependency for mv_cesa crypto driver to avoid build
    breakage"

    * tag 'fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc:
    ARM: PRIMA2: fix irq domain size and IRQ mask of internal interrupt controller
    crypto: mv_cesa requires on CRYPTO_HASH to build
    ARM: tegra: Fix flow controller accesses

    Linus Torvalds
     
  • …-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip

    Pull perf, x86 and scheduler updates from Ingo Molnar.

    * 'perf-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    tracing: Do not enable function event with enable
    perf stat: handle ENXIO error for perf_event_open
    perf: Turn off compiler warnings for flex and bison generated files
    perf stat: Fix case where guest/host monitoring is not supported by kernel
    perf build-id: Fix filename size calculation

    * 'x86-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    x86, kvm: KVM paravirt kernels don't check for CPUID being unavailable
    x86: Fix section annotation of acpi_map_cpu2node()
    x86/microcode: Ensure that module is only loaded on supported Intel CPUs

    * 'sched-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    sched: Fix KVM and ia64 boot crash due to sched_groups circular linked list assumption

    Linus Torvalds
     

17 May, 2012

7 commits

  • Commit ff9a184c ("ARM: 7400/1: vfp: clear fpscr length and stride bits
    on entry to sig handler") flushes the VFP state prior to entering a
    signal handler so that a VFP operation inside the handler will trap and
    force a restore of ABI-compliant registers. Reflushing and disabling VFP
    on the sigreturn path is predicated on the saved thread state indicating
    that VFP was used by the handler -- however for SMP platforms this is
    only set on context-switch, making the check unreliable and causing VFP
    register corruption in userspace since the register values are not
    necessarily those restored from the sigframe.

    This patch unconditionally flushes the VFP state after a signal handler.
    Since we already perform the flush before the handler and the flushing
    itself happens lazily, the redundant flush when VFP is not used by the
    handler is essentially a nop.

    Reported-by: Jon Medhurst
    Signed-off-by: Jon Medhurst
    Signed-off-by: Will Deacon
    Signed-off-by: Russell King

    Will Deacon
     
  • A zero value for prot_sect in the memory types table implies that
    section mappings should never be created for the memory type in question.
    This is checked for in alloc_init_section().

    With LPAE, we set a bit to mask access flag faults for kernel mappings.
    This breaks the aforementioned (!prot_sect) check in alloc_init_section().

    This patch fixes this bug by first checking for a non-zero
    prot_sect before setting the PMD_SECT_AF flag.

    Signed-off-by: Vitaly Andrianov
    Acked-by: Catalin Marinas
    Signed-off-by: Russell King

    Vitaly Andrianov
     
  • the old codes will cause 3.4 kernel warning as irq domain size is wrong:
    ------------[ cut here ]------------
    WARNING: at kernel/irq/irqdomain.c:74 irq_domain_legacy_revmap+0x24/0x48()
    Modules linked in:
    [] (unwind_backtrace+0x0/0xf8) from [] (warn_slowpath_common+0x54/0x64)
    [] (warn_slowpath_common+0x54/0x64) from [] (warn_slowpath_null+0x1c/0x24)
    [] (warn_slowpath_null+0x1c/0x24) from [] (irq_domain_legacy_revmap+0x24/0x48)
    [] (irq_domain_legacy_revmap+0x24/0x48) from [] (irq_create_mapping+0x20/0x120)
    [] (irq_create_mapping+0x20/0x120) from [] (irq_create_of_mapping+0x7c/0xf0)
    [] (irq_create_of_mapping+0x7c/0xf0) from [] (irq_of_parse_and_map+0x2c/0x34)
    [] (irq_of_parse_and_map+0x2c/0x34) from [] (of_irq_to_resource+0x18/0x74)
    [] (of_irq_to_resource+0x18/0x74) from [] (of_irq_count+0x24/0x34)
    [] (of_irq_count+0x24/0x34) from [] (of_device_alloc+0x58/0x158)
    [] (of_device_alloc+0x58/0x158) from [] (of_platform_device_create_pdata+0x3c/0x80)
    [] (of_platform_device_create_pdata+0x3c/0x80) from [] (of_platform_bus_create+0xc8/0x190)
    [] (of_platform_bus_create+0xc8/0x190) from [] (of_platform_bus_create+0x12c/0x190)
    ---[ end trace 1b75b31a2719ed32 ]---

    Signed-off-by: Barry Song
    Signed-off-by: Olof Johansson

    Barry Song
     
  • Pull kvm powerpc fixes from Marcelo Tosatti:
    "Urgent KVM PPC updates, quoting Alexander Graf:

    There are a few bugs in 3.4 that really should be fixed before
    people can be all happy and fuzzy about KVM on PowerPC. These fixes
    are:

    * fix POWER7 bare metal with PR=y
    * fix deadlock on HV=y book3s_64 mode in low memory cases
    * fix invalid MMU scope of PR=y mode on book3s_64, possibly eading
    to memory corruption"

    * git://git.kernel.org/pub/scm/virt/kvm/kvm:
    KVM: PPC: Book3S HV: Fix bug leading to deadlock in guest HPT updates
    powerpc/kvm: Fix VSID usage in 64-bit "PR" KVM
    KVM: PPC: Book3S: PR: Fix hsrr code
    KVM: PPC: Fix PR KVM on POWER7 bare metal
    KVM: PPC: Book3S: PR: Handle EMUL_ASSIST

    Linus Torvalds
     
  • Pull two Tile arch fixes from Chris Metcalf:
    "These are both bug-fixes, one to avoid some issues in how we invoke
    the "pending userspace work" flags on return to userspace, and the
    other to provide the same signal handler arguments for tilegx32 that
    we do for tilegx64."

    * 'stable' of git://git.kernel.org/pub/scm/linux/kernel/git/cmetcalf/linux-tile:
    arch/tile: apply commit 74fca9da0 to the compat signal handling as well
    arch/tile: fix up some issues in calling do_work_pending()

    Linus Torvalds
     
  • This passes siginfo and mcontext to tilegx32 signal handlers that
    don't have SA_SIGINFO set just as we have been doing for tilegx64.

    Cc: stable@vger.kernel.org
    Signed-off-by: Chris Metcalf

    Chris Metcalf
     
  • First, we were at risk of handling thread-info flags, in particular
    do_signal(), when returning from kernel space. This could happen
    after a failed kernel_execve(), or when forking a kernel thread.
    The fix is to test in do_work_pending() for user_mode() and return
    immediately if so; we already had this test for one of the flags,
    so I just hoisted it to the top of the function.

    Second, if a ptraced process updated the callee-saved registers
    in the ptregs struct and then processed another thread-info flag, we
    would overwrite the modifications with the original callee-saved
    registers. To fix this, we add a register to note if we've already
    saved the registers once, and skip doing it on additional passes
    through the loop. To avoid a performance hit from the couple of
    extra instructions involved, I modified the GET_THREAD_INFO() macro
    to be guaranteed to be one instruction, then bundled it with adjacent
    instructions, yielding an overall net savings.

    Reported-By: Al Viro
    Signed-off-by: Chris Metcalf

    Chris Metcalf
     

16 May, 2012

11 commits

  • Cc:
    Reported-by: Al Viro
    Signed-off-by: Russell King

    Russell King
     
  • When handling the H_BULK_REMOVE hypercall, we were forgetting to
    invalidate and unlock the hashed page table entry (HPTE) in the case
    where the page had been paged out. This fixes it by clearing the
    first doubleword of the HPTE in that case.

    This fixes a regression introduced in commit a92bce95f0 ("KVM: PPC:
    Book3S HV: Keep HPTE locked when invalidating"). The effect of the
    regression is that the host kernel will sometimes hang when under
    memory pressure.

    Signed-off-by: Paul Mackerras
    Signed-off-by: Alexander Graf

    Paul Mackerras
     
  • The code forgot to scramble the VSIDs the way we normally do
    and was basically using the "proto VSID" directly with the MMU.

    This means that in practice, KVM used random VSIDs that could
    collide with segments used by other user space programs.

    Signed-off-by: Benjamin Herrenschmidt
    [agraf: simplify ppc32 case]
    Signed-off-by: Alexander Graf

    Benjamin Herrenschmidt
     
  • When jumping back into the kernel to code that knows that it would be
    using HSRR registers instead of SRR registers, we need to make sure we
    pass it all information on where to jump to in HSRR registers.

    Unfortunately, we used r10 to store the information to distinguish between
    the HSRR and SRR case. That register got clobbered in between though,
    rendering the later comparison invalid.

    Instead, let's use cr1 to store this information. That way we don't
    need yet another register and everyone's happy.

    This fixes PR KVM on POWER7 bare metal for me.

    Signed-off-by: Alexander Graf

    Alexander Graf
     
  • When running on a system that is HV capable, some interrupts use HSRR
    SPRs instead of the normal SRR SPRs. These are also used in the Linux
    handlers to jump back to code after an interrupt got processed.

    Unfortunately, in our "jump back to the real host handler after we've
    done the context switch" code, we were only setting the SRR SPRs,
    rendering Linux to jump back to some invalid IP after it's processed
    the interrupt.

    This fixes random crashes on p7 opal mode with PR KVM for me.

    Signed-off-by: Alexander Graf

    Alexander Graf
     
  • In addition to normal "priviledged instruction" traps, we can also receive
    "emulation assist" traps on newer hardware that has the HV bit set.

    Handle that one the same way as a privileged instruction, including the
    instruction fetching. That way we don't execute old instructions that we
    happen to still leave in that field when an emul assist trap comes.

    This fixes -M mac99 / -M g3beige on p7 bare metal for me.

    Signed-off-by: Alexander Graf

    Alexander Graf
     
  • Due to an errata, the PA7300LC generates a TLB miss interruption even on the
    prefetch instruction. This means that prefetch(NULL), which is supposed to be
    a nop on linux actually generates a NULL deref fault. Fix this by testing the
    address of prefetch against NULL before doing the prefetch.

    Cc: stable@vger.kernel.org
    Signed-off-by: James Bottomley

    James Bottomley
     
  • As pointed out by serveral people, PA1.1 only has a type 26 instruction
    meaning that the space register must be explicitly encoded. Not giving an
    explicit space means that the compiler uses the type 24 version which is PA2.0
    only resulting in an illegal instruction crash.

    This regression was caused by

    commit f311847c2fcebd81912e2f0caf8a461dec28db41
    Author: James Bottomley
    Date: Wed Dec 22 10:22:11 2010 -0600

    parisc: flush pages through tmpalias space

    Reported-by: Helge Deller
    Signed-off-by: John David Anglin
    Cc: stable@vger.kernel.org #2.6.39+
    Signed-off-by: James Bottomley

    John David Anglin
     
  • All PA1.1 systems have been oopsing on boot since

    commit f311847c2fcebd81912e2f0caf8a461dec28db41
    Author: James Bottomley
    Date: Wed Dec 22 10:22:11 2010 -0600

    parisc: flush pages through tmpalias space

    because a PA2.0 instruction was accidentally introduced into the PA1.1 TLB
    insertion interruption path when it was consolidated with the do_alias macro.
    Fix the do_alias macro only to use PA2.0 instructions if compiled for 64 bit.
    Cc: stable@vger.kernel.org #2.6.39+
    Signed-off-by: James Bottomley

    James Bottomley
     
  • The scheduler depends on receiving the CPU_STARTING notification, without
    which we end up into a lot of trouble. So add the missing call to
    notify_cpu_starting() in the bringup code.

    Signed-off-by: Srivatsa S. Bhat
    Signed-off-by: Linus Torvalds

    Srivatsa S. Bhat
     
  • The scheduler depends on receiving the CPU_STARTING notification, without
    which we end up into a lot of trouble. So add the missing call to
    notify_cpu_starting() in the bringup code.

    Signed-off-by: Srivatsa S. Bhat
    Acked-and-Tested-by: Mikulas Patocka
    Acked-and-Tested-by: Tobias Ulmer
    Tested-by: John David Anglin
    Signed-off-by: Linus Torvalds

    Srivatsa S. Bhat
     

15 May, 2012

3 commits

  • Section 15.3.1.2 of the software developer manual has this to say about the
    RIPV bit in the IA32_MCG_STATUS register:

    RIPV (restart IP valid) flag, bit 0 — Indicates (when set) that program
    execution can be restarted reliably at the instruction pointed to by the
    instruction pointer pushed on the stack when the machine-check exception
    is generated. When clear, the program cannot be reliably restarted at
    the pushed instruction pointer.

    We need to save the state of this bit in do_machine_check() and use it
    in mce_notify_process() to force a signal; even if memory_failure() says
    it made a complete recovery ... e.g. replaced a clean LRU page.

    Acked-by: Borislav Petkov
    Signed-off-by: Tony Luck

    Tony Luck
     
  • We set cpuid_level to -1 if there is no CPUID instruction (only
    possible on i386).

    Signed-off-by: Alan Cox
    Link: http://lkml.kernel.org/r/20120514174059.30236.1064.stgit@bluebook
    Resolves-bug: https://bugzilla.kernel.org/show_bug.cgi?id=12122
    Cc: Avi Kivity
    Cc: Marcelo Tosatti
    Signed-off-by: H. Peter Anvin

    Alan Cox
     
  • flowctrl_write_cpu_csr uses the cpu halt offsets and vice versa. This patch
    fixes this bug.

    Reported-by: Dan Willemsen
    Signed-off-by: Peter De Schrijver
    [swarren: This problem was introduced in v3.4-rc1, in commit 26fe681 "ARM:
    tegra: functions to access the flowcontroller", when this file was first
    added]
    Signed-off-by: Stephen Warren

    Peter De Schrijver
     

13 May, 2012

6 commits

  • Pull ARM: SoC fixes from Olof Johansson:
    "I was hoping to be done with fixes for 3.4 but we got two branches
    from subarch maintainers the last couple of days. So here is one
    last(?) pull request for arm-soc containing 7 patches:

    - Five of them are for shmobile dealing with SMP setup and compile
    failures
    - The remaining two are for regressions on the Samsung platforms"

    * tag 'fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc:
    ARM: EXYNOS: fix ctrlbit for exynos5_clk_pdma1
    ARM: EXYNOS: use s5p-timer for UniversalC210 board
    ARM / mach-shmobile: Invalidate caches when booting secondary cores
    ARM / mach-shmobile: sh73a0 SMP TWD boot regression fix
    ARM / mach-shmobile: r8a7779 SMP TWD boot regression fix
    ARM: mach-shmobile: convert ag5evm to use the generic MMC GPIO hotplug helper
    ARM: mach-shmobile: convert mackerel to use the generic MMC GPIO hotplug helper

    Linus Torvalds
     
  • …/git/kgene/linux-samsung into fixes

    * 'v3.4-samsung-fixes-5' of git://git.kernel.org/pub/scm/linux/kernel/git/kgene/linux-samsung:
    ARM: EXYNOS: fix ctrlbit for exynos5_clk_pdma1
    ARM: EXYNOS: use s5p-timer for UniversalC210 board

    Olof Johansson
     
  • It should be (1 << 2) for ctrlbit of exynos5_clk_pdma1.

    Signed-off-by: Kukjin Kim

    Kukjin Kim
     
  • Commit 069d4e743 ("ARM: EXYNOS4: Remove clock event timers using
    ARM private timers") removed support for local timers and forced
    to use MCT as event source. However MCT is not operating properly
    on early revision of EXYNOS4 SoCs. All UniversalC210 boards are
    based on it, so that commit broke support for it. This patch
    provides a workaround that enables UniversalC210 boards to boot
    again. s5p-timer is used as an event source, it works only for
    non-SMP builds.

    Signed-off-by: Marek Szyprowski
    Signed-off-by: Kyungmin Park
    Signed-off-by: Kukjin Kim

    Marek Szyprowski
     
  • By Guennadi Liakhovetski (2) and others via Rafael J. Wysocki:
    "[...] urgent fixes for Renesas ARM-based platforms. Four of these
    commits are fixes of regressions new in 3.4-rc and the last one is
    necessary for SMP to work on those systems in general."

    * 'fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/renesas:
    ARM / mach-shmobile: Invalidate caches when booting secondary cores
    ARM / mach-shmobile: sh73a0 SMP TWD boot regression fix
    ARM / mach-shmobile: r8a7779 SMP TWD boot regression fix
    ARM: mach-shmobile: convert ag5evm to use the generic MMC GPIO hotplug helper
    ARM: mach-shmobile: convert mackerel to use the generic MMC GPIO hotplug helper

    Olof Johansson
     
  • Make sure L1 caches are invalidated when booting secondary
    cores. Needed to boot all mach-shmobile SMP systems that
    are using Cortex-A9 including sh73a0, r8a7779 and EMEV2.

    Thanks to imx and tegra guys for actual code.

    Signed-off-by: Magnus Damm
    Tested-by: Kuninori Morimoto
    Signed-off-by: Rafael J. Wysocki

    Magnus Damm