11 Jun, 2018

3 commits

  • Fix child-node lookup during probe, which ended up searching the whole
    device tree depth-first starting at the parent rather than just matching
    on its children.

    This would only cause trouble if the child node is missing while there
    is an unrelated node named "backlight" elsewhere in the tree.

    Cc: stable # 3.7
    Fixes: eebfdc17cc6c ("backlight: Add TPS65217 WLED driver")
    Signed-off-by: Johan Hovold
    Acked-by: Daniel Thompson
    Signed-off-by: Lee Jones

    Johan Hovold
     
  • Fix child-node lookup during probe, which ended up searching the whole
    device tree depth-first starting at the parent rather than just matching
    on its children.

    To make things worse, the parent mfd node was also prematurely freed,
    while the child backlight node was leaked.

    Cc: stable # 3.9
    Fixes: 47ec340cb8e2 ("mfd: max8925: Support dt for backlight")
    Signed-off-by: Johan Hovold
    Acked-by: Daniel Thompson
    Signed-off-by: Lee Jones

    Johan Hovold
     
  • Fix child-node lookup during probe, which ended up searching the whole
    device tree depth-first starting at the parent rather than just matching
    on its children.

    To make things worse, the parent mfd node was also prematurely freed.

    Cc: stable # 3.10
    Fixes: 59eb2b5e57ea ("drivers/video/backlight/as3711_bl.c: add OF support")
    Signed-off-by: Johan Hovold
    Acked-by: Daniel Thompson
    Signed-off-by: Lee Jones

    Johan Hovold
     

30 Apr, 2018

13 commits

  • For the same reasons we've added dri-devel for all fbdev patches: Most
    of the actively developed drivers using this infrastructure are in
    drivers/gpu/. It just makes sense to cross-post patches and keep
    aligned. And total activity in the backlight subsystem is miniscule
    compared to drm overall.

    Signed-off-by: Daniel Vetter
    Acked-by: Daniel Thompson
    Acked-by: Jingoo Han
    Reviewed-by: Jani Nikula
    Signed-off-by: Lee Jones

    Daniel Vetter
     
  • Now that the 3 drivers using this are cleaned up we can also remove
    this final bit of confusion of leaking driver internals into the
    backlight power interface.

    The backlight power interface itself is still a massive mess.

    Signed-off-by: Daniel Vetter
    Acked-by: Daniel Thompson
    Reviewed-by: Jani Nikula
    Signed-off-by: Lee Jones

    Daniel Vetter
     
  • Leaking driver internal tracking into the already massively confusing
    backlight power tracking is really confusing.

    Luckily we have already a drvdata structure, so fixing this is really
    easy.

    Signed-off-by: Daniel Vetter
    Acked-by: Daniel Thompson
    Reviewed-by: Jani Nikula
    Signed-off-by: Lee Jones

    Daniel Vetter
     
  • Leaking driver internal tracking into the already massively confusing
    backlight power tracking is really confusing.

    Stop that by allocating a tiny driver private data structure instead.

    Signed-off-by: Daniel Vetter
    Acked-by: Daniel Thompson
    Reviewed-by: Jani Nikula
    Signed-off-by: Lee Jones

    Daniel Vetter
     
  • Nothing in the entire tree ever sets this, which means this is dead
    code. Remove it.

    Signed-off-by: Daniel Vetter
    Acked-by: Daniel Thompson
    Reviewed-by: Jani Nikula
    Signed-off-by: Lee Jones

    Daniel Vetter
     
  • The backlight power state handling is supremely confusing. We have:
    - props.power, using FB_BLANK_* defines
    - props.fb_blank, using the same, but deprecated int favour of
    props.state
    - props.state, using the BL_CORE_* defines
    - and finally a bunch of backlight drivers treat brightness == 0 as
    off. But of course not all of them.

    This is way too much confusion to fix in a simple patch, but at least
    prevent more hilarity from spreading by removing the unused BL_CORE_*
    defines. I have no idea why exactly anyone would need that.

    Wrt the ideal state, we really just want a boolean state. The 4 power
    saving states that the fbdev subsystem uses are overkill in todays hw
    (this was only relevant for VGA and similar analog circuits like
    TV-out), the new drm atomic modeset api simplified even the uapi to a
    simple bool. And there was never a valid technical reason to have the
    intermediate fbdev power states for backlights (those really only can
    be either off or on).

    Cleanup motivated by Meghana's questions about all this.

    Signed-off-by: Daniel Vetter
    Acked-by: Daniel Thompson
    Acked-by: Jingoo Han
    Reviewed-by: Jani Nikula
    Signed-off-by: Lee Jones

    Daniel Vetter
     
  • This patch adds a LCD driver supporting the OTM3225A LCD SoC
    from ORISE Technology. This device can drive TFT LC panels having a
    resolution of 240x320 pixels. After initializing the OTM3225A using
    it's SPI interface it switches to use 16-bib RGB as external
    display interface.

    Signed-off-by: Felix Brack
    Acked-by: Daniel Thompson
    Signed-off-by: Lee Jones

    Felix Brack
     
  • The documentation was wrong, gpiod_get_direction() returns 0/1 instead
    of the GPIOF_* flags. The docs were fixed with commit 94fc73094abe47
    ("gpio: correct docs about return value of gpiod_get_direction"). Now,
    fix this user (until a better, system-wide solution is in place).

    Signed-off-by: Wolfram Sang
    Acked-by: Daniel Thompson
    Reviewed-by: Simon Horman
    Signed-off-by: Lee Jones

    Wolfram Sang
     
  • Some panels (i.e. N116BGE-L41), in their power sequence specifications,
    request a delay between set the PWM signal and enable the backlight and
    between clear the PWM signal and disable the backlight. Add support for
    the new post-pwm-on-delay-ms and pwm-off-delay-ms proprieties to meet
    the timings.

    Signed-off-by: Enric Balletbo i Serra
    Acked-by: Pavel Machek
    Acked-by: Daniel Thompson
    Acked-by: Jingoo Han
    Acked-by: Thierry Reding
    Signed-off-by: Lee Jones

    Enric Balletbo i Serra
     
  • Hardware needs a delay between setting an initial (non-zero) PWM and
    enabling the backlight using GPIO. The post-pwm-on-delay-ms specifies
    this delay in milli seconds. Hardware also needs a delay between disabing
    the backlight using GPIO and setting PWM value to 0. The pwm-off-delay-ms
    is this delay in milli seconds.

    Signed-off-by: Enric Balletbo i Serra
    Acked-by: Pavel Machek
    Acked-by: Thierry Reding
    Acked-by: Daniel Thompson
    Reviewed-by: Rob Herring
    Signed-off-by: Lee Jones

    Enric Balletbo i Serra
     
  • Before this patch the enable signal was set before the PWM signal and
    vice-versa on power off. This sequence is wrong, at least, it is on
    the different panels datasheets that I checked, so I inverted the sequence
    to follow the specs.

    For reference the following panels have the mentioned sequence:
    - N133HSE-EA1 (Innolux)
    - N116BGE (Innolux)
    - N156BGE-L21 (Innolux)
    - B101EAN0 (Auo)
    - B101AW03 (Auo)
    - LTN101NT05 (Samsung)
    - CLAA101WA01A (Chunghwa)

    Signed-off-by: Enric Balletbo i Serra
    Acked-by: Daniel Thompson
    Acked-by: Jingoo Han
    Acked-by: Thierry Reding
    Signed-off-by: Lee Jones

    Enric Balletbo i Serra
     
  • Add Device Tree bindings for RAVE SP backlight driver - an MFD cell of
    parent RAVE SP driver (documented in
    Documentation/devicetree/bindings/mfd/zii,rave-sp.txt).

    Signed-off-by: Andrey Smirnov
    Acked-by: Daniel Thompson
    Reviewed-by: Rob Herring
    Signed-off-by: Lee Jones

    Andrey Smirnov
     
  • This driver provides access to RAVE SP backlight control
    functionality.

    Signed-off-by: Andrey Smirnov
    Acked-by: Daniel Thompson
    Signed-off-by: Lee Jones

    Andrey Smirnov
     

16 Apr, 2018

13 commits

  • Linus Torvalds
     
  • Pull more btrfs updates from David Sterba:
    "We have queued a few more fixes (error handling, log replay,
    softlockup) and the rest is SPDX updates that touche almost all files
    so the diffstat is long"

    * tag 'for-4.17-part2-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/kdave/linux:
    btrfs: Only check first key for committed tree blocks
    btrfs: add SPDX header to Kconfig
    btrfs: replace GPL boilerplate by SPDX -- sources
    btrfs: replace GPL boilerplate by SPDX -- headers
    Btrfs: fix loss of prealloc extents past i_size after fsync log replay
    Btrfs: clean up resources during umount after trans is aborted
    btrfs: Fix possible softlock on single core machines
    Btrfs: bail out on error during replay_dir_deletes
    Btrfs: fix NULL pointer dereference in log_dir_items

    Linus Torvalds
     
  • Pull cifs fixes from Steve French:
    "SMB3 fixes, a few for stable, and some important cleanup work from
    Ronnie of the smb3 transport code"

    * tag '4.17-rc1SMB3-Fixes' of git://git.samba.org/sfrench/cifs-2.6:
    cifs: change validate_buf to validate_iov
    cifs: remove rfc1002 hardcoded constants from cifs_discard_remaining_data()
    cifs: Change SMB2_open to return an iov for the error parameter
    cifs: add resp_buf_size to the mid_q_entry structure
    smb3.11: replace a 4 with server->vals->header_preamble_size
    cifs: replace a 4 with server->vals->header_preamble_size
    cifs: add pdu_size to the TCP_Server_Info structure
    SMB311: Improve checking of negotiate security contexts
    SMB3: Fix length checking of SMB3.11 negotiate request
    CIFS: add ONCE flag for cifs_dbg type
    cifs: Use ULL suffix for 64-bit constant
    SMB3: Log at least once if tree connect fails during reconnect
    cifs: smb2pdu: Fix potential NULL pointer dereference

    Linus Torvalds
     
  • Pull SCSI fixes from James Bottomley:
    "This is a set of minor (and safe changes) that didn't make the initial
    pull request plus some bug fixes.

    The status handling code is actually a running regression from the
    previous merge window which had an incomplete fix (now reverted) and
    most of the remaining bug fixes are for problems older than the
    current merge window"

    [ Side note: this merge also takes the base kernel git repository to 6+
    million objects for the first time. Technically we hit it a couple of
    merges ago already if you count all the tag objects, but now it
    reaches 6M+ objects reachable from HEAD.

    I was joking around that that's when I should switch to 5.0, because
    3.0 happened at the 2M mark, and 4.0 happened at 4M objects. But
    probably not, even if numerology is about as good a reason as any.

    - Linus ]

    * tag 'scsi-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi:
    scsi: devinfo: Add Microsoft iSCSI target to 1024 sector blacklist
    scsi: cxgb4i: silence overflow warning in t4_uld_rx_handler()
    scsi: dpt_i2o: Use after free in I2ORESETCMD ioctl
    scsi: core: Make scsi_result_to_blk_status() recognize CONDITION MET
    scsi: core: Rename __scsi_error_from_host_byte() into scsi_result_to_blk_status()
    Revert "scsi: core: return BLK_STS_OK for DID_OK in __scsi_error_from_host_byte()"
    scsi: aacraid: Insure command thread is not recursively stopped
    scsi: qla2xxx: Correct setting of SAM_STAT_CHECK_CONDITION
    scsi: qla2xxx: correctly shift host byte
    scsi: qla2xxx: Fix race condition between iocb timeout and initialisation
    scsi: qla2xxx: Avoid double completion of abort command
    scsi: qla2xxx: Fix small memory leak in qla2x00_probe_one on probe failure
    scsi: scsi_dh: Don't look for NULL devices handlers by name
    scsi: core: remove redundant assignment to shost->use_blk_mq

    Linus Torvalds
     
  • Pull more Kbuild updates from Masahiro Yamada:

    - pass HOSTLDFLAGS when compiling single .c host programs

    - build genksyms lexer and parser files instead of using shipped
    versions

    - rename *-asn1.[ch] to *.asn1.[ch] for suffix consistency

    - let the top .gitignore globally ignore artifacts generated by flex,
    bison, and asn1_compiler

    - let the top Makefile globally clean artifacts generated by flex,
    bison, and asn1_compiler

    - use safer .SECONDARY marker instead of .PRECIOUS to prevent
    intermediate files from being removed

    - support -fmacro-prefix-map option to make __FILE__ a relative path

    - fix # escaping to prepare for the future GNU Make release

    - clean up deb-pkg by using debian tools instead of handrolled
    source/changes generation

    - improve rpm-pkg portability by supporting kernel-install as a
    fallback of new-kernel-pkg

    - extend Kconfig listnewconfig target to provide more information

    * tag 'kbuild-v4.17-2' of git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild:
    kconfig: extend output of 'listnewconfig'
    kbuild: rpm-pkg: use kernel-install as a fallback for new-kernel-pkg
    Kbuild: fix # escaping in .cmd files for future Make
    kbuild: deb-pkg: split generating packaging and build
    kbuild: use -fmacro-prefix-map to make __FILE__ a relative path
    kbuild: mark $(targets) as .SECONDARY and remove .PRECIOUS markers
    kbuild: rename *-asn1.[ch] to *.asn1.[ch]
    kbuild: clean up *-asn1.[ch] patterns from top-level Makefile
    .gitignore: move *-asn1.[ch] patterns to the top-level .gitignore
    kbuild: add %.dtb.S and %.dtb to 'targets' automatically
    kbuild: add %.lex.c and %.tab.[ch] to 'targets' automatically
    genksyms: generate lexer and parser during build instead of shipping
    kbuild: clean up *.lex.c and *.tab.[ch] patterns from top-level Makefile
    .gitignore: move *.lex.c *.tab.[ch] patterns to the top-level .gitignore
    kbuild: use HOSTLDFLAGS for single .c executables

    Linus Torvalds
     
  • Pull x86 fixes from Thomas Gleixner:
    "A set of fixes and updates for x86:

    - Address a swiotlb regression which was caused by the recent DMA
    rework and made driver fail because dma_direct_supported() returned
    false

    - Fix a signedness bug in the APIC ID validation which caused invalid
    APIC IDs to be detected as valid thereby bloating the CPU possible
    space.

    - Fix inconsisten config dependcy/select magic for the MFD_CS5535
    driver.

    - Fix a corruption of the physical address space bits when encryption
    has reduced the address space and late cpuinfo updates overwrite
    the reduced bit information with the original value.

    - Dominiks syscall rework which consolidates the architecture
    specific syscall functions so all syscalls can be wrapped with the
    same macros. This allows to switch x86/64 to struct pt_regs based
    syscalls. Extend the clearing of user space controlled registers in
    the entry patch to the lower registers"

    * 'x86-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    x86/apic: Fix signedness bug in APIC ID validity checks
    x86/cpu: Prevent cpuinfo_x86::x86_phys_bits adjustment corruption
    x86/olpc: Fix inconsistent MFD_CS5535 configuration
    swiotlb: Use dma_direct_supported() for swiotlb_ops
    syscalls/x86: Adapt syscall_wrapper.h to the new syscall stub naming convention
    syscalls/core, syscalls/x86: Rename struct pt_regs-based sys_*() to __x64_sys_*()
    syscalls/core, syscalls/x86: Clean up compat syscall stub naming convention
    syscalls/core, syscalls/x86: Clean up syscall stub naming convention
    syscalls/x86: Extend register clearing on syscall entry to lower registers
    syscalls/x86: Unconditionally enable 'struct pt_regs' based syscalls on x86_64
    syscalls/x86: Use 'struct pt_regs' based syscall calling for IA32_EMULATION and x32
    syscalls/core: Prepare CONFIG_ARCH_HAS_SYSCALL_WRAPPER=y for compat syscalls
    syscalls/x86: Use 'struct pt_regs' based syscall calling convention for 64-bit syscalls
    syscalls/core: Introduce CONFIG_ARCH_HAS_SYSCALL_WRAPPER=y
    x86/syscalls: Don't pointlessly reload the system call number
    x86/mm: Fix documentation of module mapping range with 4-level paging
    x86/cpuid: Switch to 'static const' specifier

    Linus Torvalds
     
  • Pull x86 pti updates from Thomas Gleixner:
    "Another series of PTI related changes:

    - Remove the manual stack switch for user entries from the idtentry
    code. This debloats entry by 5k+ bytes of text.

    - Use the proper types for the asm/bootparam.h defines to prevent
    user space compile errors.

    - Use PAGE_GLOBAL for !PCID systems to gain back performance

    - Prevent setting of huge PUD/PMD entries when the entries are not
    leaf entries otherwise the entries to which the PUD/PMD points to
    and are populated get lost"

    * 'x86-pti-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    x86/pgtable: Don't set huge PUD/PMD on non-leaf entries
    x86/pti: Leave kernel text global for !PCID
    x86/pti: Never implicitly clear _PAGE_GLOBAL for kernel image
    x86/pti: Enable global pages for shared areas
    x86/mm: Do not forbid _PAGE_RW before init for __ro_after_init
    x86/mm: Comment _PAGE_GLOBAL mystery
    x86/mm: Remove extra filtering in pageattr code
    x86/mm: Do not auto-massage page protections
    x86/espfix: Document use of _PAGE_GLOBAL
    x86/mm: Introduce "default" kernel PTE mask
    x86/mm: Undo double _PAGE_PSE clearing
    x86/mm: Factor out pageattr _PAGE_GLOBAL setting
    x86/entry/64: Drop idtentry's manual stack switch for user entries
    x86/uapi: Fix asm/bootparam.h userspace compilation errors

    Linus Torvalds
     
  • Pull scheduler fixes from Thomas Gleixner:
    "A few scheduler fixes:

    - Prevent a bogus warning vs. runqueue clock update flags in
    do_sched_rt_period_timer()

    - Simplify the helper functions which handle requests for skipping
    the runqueue clock updat.

    - Do not unlock the tunables mutex in the error path of the cpu
    frequency scheduler utils. Its not held.

    - Enforce proper alignement for 'struct util_est' in sched_avg to
    prevent a misalignment fault on IA64"

    * 'sched-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    sched/core: Force proper alignment of 'struct util_est'
    sched/core: Simplify helpers for rq clock update skip requests
    sched/rt: Fix rq->clock_update_flags < RQCF_ACT_SKIP warning
    sched/cpufreq/schedutil: Fix error path mutex unlock

    Linus Torvalds
     
  • Pull more perf updates from Thomas Gleixner:
    "A rather large set of perf updates:

    Kernel:

    - Fix various initialization issues

    - Prevent creating [ku]probes for not CAP_SYS_ADMIN users

    Tooling:

    - Show only failing syscalls with 'perf trace --failure' (Arnaldo
    Carvalho de Melo)

    e.g: See what 'openat' syscalls are failing:

    # perf trace --failure -e openat
    762.323 ( 0.007 ms): VideoCapture/4566 openat(dfd: CWD, filename: /dev/video2) = -1 ENOENT No such file or directory

    790.228 ( 0.008 ms): VideoCapture/4566 openat(dfd: CWD, filename: /dev/video63) = -1 ENOENT No such file or directory
    ^C#

    - Show information about the event (freq, nr_samples, total
    period/nr_events) in the annotate --tui and --stdio2 'perf
    annotate' output, similar to the first line in the 'perf report
    --tui', but just for the samples for a the annotated symbol
    (Arnaldo Carvalho de Melo)

    - Introduce 'perf version --build-options' to show what features were
    linked, aliased as well as a shorter 'perf -vv' (Jin Yao)

    - Add a "dso_size" sort order (Kim Phillips)

    - Remove redundant ')' in the tracepoint output in 'perf trace'
    (Changbin Du)

    - Synchronize x86's cpufeatures.h, no effect on toolss (Arnaldo
    Carvalho de Melo)

    - Show group details on the title line in the annotate browser and
    'perf annotate --stdio2' output, so that the per-event columns can
    have headers (Arnaldo Carvalho de Melo)

    - Fixup vertical line separating metrics from instructions and
    cleaning unused lines at the bottom, both in the annotate TUI
    browser (Arnaldo Carvalho de Melo)

    - Remove duplicated 'samples' in lost samples warning in
    'perf report' (Arnaldo Carvalho de Melo)

    - Synchronize i915_drm.h, silencing the perf build process,
    automagically adding support for the new DRM_I915_QUERY ioctl
    (Arnaldo Carvalho de Melo)

    - Make auxtrace_queues__add_buffer() allocate struct buffer, from a
    patchkit already applied (Adrian Hunter)

    - Fix the --stdio2/TUI annotate output to include group details, be
    it for a recorded '{a,b,f}' explicit event group or when forcing
    group display using 'perf report --group' for a set of events not
    recorded as a group (Arnaldo Carvalho de Melo)

    - Fix display artifacts in the ui browser (base class for the
    annotate and main report/top TUI browser) related to the extra
    title lines work (Arnaldo Carvalho de Melo)

    - perf auxtrace refactorings, leftovers from a previously partially
    processed patchset (Adrian Hunter)

    - Fix the builtin clang build (Sandipan Das, Arnaldo Carvalho de
    Melo)

    - Synchronize i915_drm.h, silencing a perf build warning and in the
    process automagically adding support for a new ioctl command
    (Arnaldo Carvalho de Melo)

    - Fix a strncpy issue in uprobe tracing"

    * 'perf-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (36 commits)
    perf/core: Need CAP_SYS_ADMIN to create k/uprobe with perf_event_open()
    tracing/uprobe_event: Fix strncpy corner case
    perf/core: Fix perf_uprobe_init()
    perf/core: Fix perf_kprobe_init()
    perf/core: Fix use-after-free in uprobe_perf_close()
    perf tests clang: Fix function name for clang IR test
    perf clang: Add support for recent clang versions
    perf tools: Fix perf builds with clang support
    perf tools: No need to include namespaces.h in util.h
    perf hists browser: Remove leftover from row returned from refresh
    perf hists browser: Show extra_title_lines in the 'D' debug hotkey
    perf auxtrace: Make auxtrace_queues__add_buffer() do CPU filtering
    tools headers uapi: Synchronize i915_drm.h
    perf report: Remove duplicated 'samples' in lost samples warning
    perf ui browser: Fixup cleaning unused lines at the bottom
    perf annotate browser: Fixup vertical line separating metrics from instructions
    perf annotate: Show group details on the title line
    perf auxtrace: Make auxtrace_queues__add_buffer() allocate struct buffer
    perf/x86/intel: Move regs->flags EXACT bit init
    perf trace: Remove redundant ')'
    ...

    Linus Torvalds
     
  • Pull x86 EFI bootup fixlet from Thomas Gleixner:
    "A single fix for an early boot warning caused by invoking
    this_cpu_has() before SMP initialization"

    * 'efi-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    x86/mm: Fix bogus warning during EFI bootup, use boot_cpu_has() instead of this_cpu_has() in build_cr3_noflush()

    Linus Torvalds
     
  • Pull irq affinity fixes from Thomas Gleixner:

    - Fix error path handling in the affinity spreading code

    - Make affinity spreading smarter to avoid issues on systems which
    claim to have hotpluggable CPUs while in fact they can't hotplug
    anything.

    So instead of trying to spread the vectors (and thereby the
    associated device queues) to all possibe CPUs, spread them on all
    present CPUs first. If there are left over vectors after that first
    step they are spread among the possible, but not present CPUs which
    keeps the code backwards compatible for virtual decives and NVME
    which allocate a queue per possible CPU, but makes the spreading
    smarter for devices which have less queues than possible or present
    CPUs.

    * 'irq-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    genirq/affinity: Spread irq vectors among present CPUs as far as possible
    genirq/affinity: Allow irq spreading from a given starting point
    genirq/affinity: Move actual irq vector spreading into a helper function
    genirq/affinity: Rename *node_to_possible_cpumask as *node_to_cpumask
    genirq/affinity: Don't return with empty affinity masks on error

    Linus Torvalds
     
  • Pull OpenRISC fixlet from Stafford Horne:
    "Just one small thing here, it came in a while back but I didnt have
    anything in my 4.16 queue, still its the only thing for 4.17 so
    sending it alone.

    Small cleanup: remove unused __ARCH_HAVE_MMU define"

    * tag 'for-linus' of git://github.com/openrisc/linux:
    openrisc: remove unused __ARCH_HAVE_MMU define

    Linus Torvalds
     
  • Pull powerpc fixes from Michael Ellerman:

    - Fix crashes when loading modules built with a different
    CONFIG_RELOCATABLE value by adding CONFIG_RELOCATABLE to vermagic.

    - Fix busy loops in the OPAL NVRAM driver if we get certain error
    conditions from firmware.

    - Remove tlbie trace points from KVM code that's called in real mode,
    because it causes crashes.

    - Fix checkstops caused by invalid tlbiel on Power9 Radix.

    - Ensure the set of CPU features we "know" are always enabled is
    actually the minimal set when we build with support for firmware
    supplied CPU features.

    Thanks to: Aneesh Kumar K.V, Anshuman Khandual, Nicholas Piggin.

    * tag 'powerpc-4.17-2' of git://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux:
    powerpc/64s: Fix CPU_FTRS_ALWAYS vs DT CPU features
    powerpc/mm/radix: Fix checkstops caused by invalid tlbiel
    KVM: PPC: Book3S HV: trace_tlbie must not be called in realmode
    powerpc/8xx: Fix build with hugetlbfs enabled
    powerpc/powernv: Fix OPAL NVRAM driver OPAL_BUSY loops
    powerpc/powernv: define a standard delay for OPAL_BUSY type retry loops
    powerpc/fscr: Enable interrupts earlier before calling get_user()
    powerpc/64s: Fix section mismatch warnings from setup_rfi_flush()
    powerpc/modules: Fix crashes by adding CONFIG_RELOCATABLE to vermagic

    Linus Torvalds
     

14 Apr, 2018

11 commits

  • Merge yet more updates from Andrew Morton:

    - various hotfixes

    - kexec_file updates and feature work

    * emailed patches from Andrew Morton : (27 commits)
    kernel/kexec_file.c: move purgatories sha256 to common code
    kernel/kexec_file.c: allow archs to set purgatory load address
    kernel/kexec_file.c: remove mis-use of sh_offset field during purgatory load
    kernel/kexec_file.c: remove unneeded variables in kexec_purgatory_setup_sechdrs
    kernel/kexec_file.c: remove unneeded for-loop in kexec_purgatory_setup_sechdrs
    kernel/kexec_file.c: split up __kexec_load_puragory
    kernel/kexec_file.c: use read-only sections in arch_kexec_apply_relocations*
    kernel/kexec_file.c: search symbols in read-only kexec_purgatory
    kernel/kexec_file.c: make purgatory_info->ehdr const
    kernel/kexec_file.c: remove checks in kexec_purgatory_load
    include/linux/kexec.h: silence compile warnings
    kexec_file, x86: move re-factored code to generic side
    x86: kexec_file: clean up prepare_elf64_headers()
    x86: kexec_file: lift CRASH_MAX_RANGES limit on crash_mem buffer
    x86: kexec_file: remove X86_64 dependency from prepare_elf64_headers()
    x86: kexec_file: purge system-ram walking from prepare_elf64_headers()
    kexec_file,x86,powerpc: factor out kexec_file_ops functions
    kexec_file: make use of purgatory optional
    proc: revalidate misc dentries
    mm, slab: reschedule cache_reap() on the same CPU
    ...

    Linus Torvalds
     
  • The code to verify the new kernels sha digest is applicable for all
    architectures. Move it to common code.

    One problem is the string.c implementation on x86. Currently sha256
    includes x86/boot/string.h which defines memcpy and memset to be gcc
    builtins. By moving the sha256 implementation to common code and
    changing the include to linux/string.h both functions are no longer
    defined. Thus definitions have to be provided in x86/purgatory/string.c

    Link: http://lkml.kernel.org/r/20180321112751.22196-12-prudo@linux.vnet.ibm.com
    Signed-off-by: Philipp Rudo
    Acked-by: Dave Young
    Cc: AKASHI Takahiro
    Cc: Eric Biederman
    Cc: Heiko Carstens
    Cc: Ingo Molnar
    Cc: Martin Schwidefsky
    Cc: Michael Ellerman
    Cc: Thiago Jung Bauermann
    Cc: Vivek Goyal
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Philipp Rudo
     
  • For s390 new kernels are loaded to fixed addresses in memory before they
    are booted. With the current code this is a problem as it assumes the
    kernel will be loaded to an 'arbitrary' address. In particular,
    kexec_locate_mem_hole searches for a large enough memory region and sets
    the load address (kexec_bufer->mem) to it.

    Luckily there is a simple workaround for this problem. By returning 1
    in arch_kexec_walk_mem, kexec_locate_mem_hole is turned off. This
    allows the architecture to set kbuf->mem by hand. While the trick works
    fine for the kernel it does not for the purgatory as here the
    architectures don't have access to its kexec_buffer.

    Give architectures access to the purgatories kexec_buffer by changing
    kexec_load_purgatory to take a pointer to it. With this change
    architectures have access to the buffer and can edit it as they need.

    A nice side effect of this change is that we can get rid of the
    purgatory_info->purgatory_load_address field. As now the information
    stored there can directly be accessed from kbuf->mem.

    Link: http://lkml.kernel.org/r/20180321112751.22196-11-prudo@linux.vnet.ibm.com
    Signed-off-by: Philipp Rudo
    Reviewed-by: Martin Schwidefsky
    Acked-by: Dave Young
    Cc: AKASHI Takahiro
    Cc: Eric Biederman
    Cc: Heiko Carstens
    Cc: Ingo Molnar
    Cc: Michael Ellerman
    Cc: Thiago Jung Bauermann
    Cc: Vivek Goyal
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Philipp Rudo
     
  • The current code uses the sh_offset field in purgatory_info->sechdrs to
    store a pointer to the current load address of the section. Depending
    whether the section will be loaded or not this is either a pointer into
    purgatory_info->purgatory_buf or kexec_purgatory. This is not only a
    violation of the ELF standard but also makes the code very hard to
    understand as you cannot tell if the memory you are using is read-only
    or not.

    Remove this misuse and store the offset of the section in
    pugaroty_info->purgatory_buf in sh_offset.

    Link: http://lkml.kernel.org/r/20180321112751.22196-10-prudo@linux.vnet.ibm.com
    Signed-off-by: Philipp Rudo
    Acked-by: Dave Young
    Cc: AKASHI Takahiro
    Cc: Eric Biederman
    Cc: Heiko Carstens
    Cc: Ingo Molnar
    Cc: Martin Schwidefsky
    Cc: Michael Ellerman
    Cc: Thiago Jung Bauermann
    Cc: Vivek Goyal
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Philipp Rudo
     
  • The main loop currently uses quite a lot of variables to update the
    section headers. Some of them are unnecessary. So clean them up a
    little.

    Link: http://lkml.kernel.org/r/20180321112751.22196-9-prudo@linux.vnet.ibm.com
    Signed-off-by: Philipp Rudo
    Acked-by: Dave Young
    Cc: AKASHI Takahiro
    Cc: Eric Biederman
    Cc: Heiko Carstens
    Cc: Ingo Molnar
    Cc: Martin Schwidefsky
    Cc: Michael Ellerman
    Cc: Thiago Jung Bauermann
    Cc: Vivek Goyal
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Philipp Rudo
     
  • To update the entry point there is an extra loop over all section
    headers although this can be done in the main loop. So move it there
    and eliminate the extra loop and variable to store the 'entry section
    index'.

    Also, in the main loop, move the usual case, i.e. non-bss section, out
    of the extra if-block.

    Link: http://lkml.kernel.org/r/20180321112751.22196-8-prudo@linux.vnet.ibm.com
    Signed-off-by: Philipp Rudo
    Reviewed-by: Martin Schwidefsky
    Acked-by: Dave Young
    Cc: AKASHI Takahiro
    Cc: Eric Biederman
    Cc: Heiko Carstens
    Cc: Ingo Molnar
    Cc: Michael Ellerman
    Cc: Thiago Jung Bauermann
    Cc: Vivek Goyal
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Philipp Rudo
     
  • When inspecting __kexec_load_purgatory you find that it has two tasks

    1) setting up the kexec_buffer for the new kernel and,
    2) setting up pi->sechdrs for the final load address.

    The two tasks are independent of each other. To improve readability
    split up __kexec_load_purgatory into two functions, one for each task,
    and call them directly from kexec_load_purgatory.

    Link: http://lkml.kernel.org/r/20180321112751.22196-7-prudo@linux.vnet.ibm.com
    Signed-off-by: Philipp Rudo
    Acked-by: Dave Young
    Cc: AKASHI Takahiro
    Cc: Eric Biederman
    Cc: Heiko Carstens
    Cc: Ingo Molnar
    Cc: Martin Schwidefsky
    Cc: Michael Ellerman
    Cc: Thiago Jung Bauermann
    Cc: Vivek Goyal
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Philipp Rudo
     
  • When the relocations are applied to the purgatory only the section the
    relocations are applied to is writable. The other sections, i.e. the
    symtab and .rel/.rela, are in read-only kexec_purgatory. Highlight this
    by marking the corresponding variables as 'const'.

    While at it also change the signatures of arch_kexec_apply_relocations* to
    take section pointers instead of just the index of the relocation section.
    This removes the second lookup and sanity check of the sections in arch
    code.

    Link: http://lkml.kernel.org/r/20180321112751.22196-6-prudo@linux.vnet.ibm.com
    Signed-off-by: Philipp Rudo
    Acked-by: Dave Young
    Cc: AKASHI Takahiro
    Cc: Eric Biederman
    Cc: Heiko Carstens
    Cc: Ingo Molnar
    Cc: Martin Schwidefsky
    Cc: Michael Ellerman
    Cc: Thiago Jung Bauermann
    Cc: Vivek Goyal
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Philipp Rudo
     
  • The stripped purgatory does not contain a symtab. So when looking for
    symbols this is done in read-only kexec_purgatory. Highlight this by
    marking the corresponding variables as 'const'.

    Link: http://lkml.kernel.org/r/20180321112751.22196-5-prudo@linux.vnet.ibm.com
    Signed-off-by: Philipp Rudo
    Acked-by: Dave Young
    Cc: AKASHI Takahiro
    Cc: Eric Biederman
    Cc: Heiko Carstens
    Cc: Ingo Molnar
    Cc: Martin Schwidefsky
    Cc: Michael Ellerman
    Cc: Thiago Jung Bauermann
    Cc: Vivek Goyal
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Philipp Rudo
     
  • The kexec_purgatory buffer is read-only. Thus all pointers into
    kexec_purgatory are read-only, too. Point this out by explicitly
    marking purgatory_info->ehdr as 'const' and update the comments in
    purgatory_info.

    Link: http://lkml.kernel.org/r/20180321112751.22196-4-prudo@linux.vnet.ibm.com
    Signed-off-by: Philipp Rudo
    Acked-by: Dave Young
    Cc: AKASHI Takahiro
    Cc: Eric Biederman
    Cc: Heiko Carstens
    Cc: Ingo Molnar
    Cc: Martin Schwidefsky
    Cc: Michael Ellerman
    Cc: Thiago Jung Bauermann
    Cc: Vivek Goyal
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Philipp Rudo
     
  • Before the purgatory is loaded several checks are done whether the ELF
    file in kexec_purgatory is valid or not. These checks are incomplete.
    For example they don't check for the total size of the sections defined
    in the section header table or if the entry point actually points into
    the purgatory.

    On the other hand the purgatory, although an ELF file on its own, is
    part of the kernel. Thus not trusting the purgatory means not trusting
    the kernel build itself.

    So remove all validity checks on the purgatory and just trust the kernel
    build.

    Link: http://lkml.kernel.org/r/20180321112751.22196-3-prudo@linux.vnet.ibm.com
    Signed-off-by: Philipp Rudo
    Acked-by: Dave Young
    Cc: AKASHI Takahiro
    Cc: Eric Biederman
    Cc: Heiko Carstens
    Cc: Ingo Molnar
    Cc: Martin Schwidefsky
    Cc: Michael Ellerman
    Cc: Thiago Jung Bauermann
    Cc: Vivek Goyal
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Philipp Rudo