97 Commits

Author SHA1 Message Date
Nathan Chancellor
465a6da0b9 Merge 4.4.202 into android-msm-wahoo-4.4
Changes in 4.4.202: (21 commits)
        kvm: mmu: Don't read PDPTEs when paging is not enabled
        MIPS: BCM63XX: fix switch core reset on BCM6368
        powerpc/Makefile: Use cflags-y/aflags-y for setting endian options
        powerpc: Fix compiling a BE kernel with a powerpc64le toolchain
        powerpc/boot: Request no dynamic linker for boot wrapper
        KVM: Introduce kvm_get_arch_capabilities()
        KVM: x86: Emulate MSR_IA32_ARCH_CAPABILITIES on AMD hosts
        kvm: x86: IA32_ARCH_CAPABILITIES is always supported
        KVM: x86: use Intel speculation bugs and features as derived in generic x86 code
        x86/msr: Add the IA32_TSX_CTRL MSR
        x86/cpu: Add a helper function x86_read_arch_cap_msr()
        x86/cpu: Add a "tsx=" cmdline option with TSX disabled by default
        x86/speculation/taa: Add mitigation for TSX Async Abort
        x86/speculation/taa: Add sysfs reporting for TSX Async Abort
        kvm/x86: Export MDS_NO=0 to guests when TSX is enabled
        x86/tsx: Add "auto" option to the tsx= cmdline parameter
        x86/speculation/taa: Add documentation for TSX Async Abort
        x86/tsx: Add config options to set tsx=on|off|auto
        x86/speculation/taa: Fix printing of TAA_MSG_SMT on IBRS_ALL CPUs
        x86/bugs: Add ITLB_MULTIHIT bug infrastructure
        Linux 4.4.202

Signed-off-by: Nathan Chancellor <natechancellor@gmail.com>
2019-11-18 21:41:30 -07:00
Vineela Tummalapalli
6534fc5ddf x86/bugs: Add ITLB_MULTIHIT bug infrastructure
commit db4d30fbb71b47e4ecb11c4efa5d8aad4b03dfae upstream.

Some processors may incur a machine check error possibly resulting in an
unrecoverable CPU lockup when an instruction fetch encounters a TLB
multi-hit in the instruction TLB. This can occur when the page size is
changed along with either the physical address or cache type. The relevant
erratum can be found here:

   https://bugzilla.kernel.org/show_bug.cgi?id=205195

There are other processors affected for which the erratum does not fully
disclose the impact.

This issue affects both bare-metal x86 page tables and EPT.

It can be mitigated by either eliminating the use of large pages or by
using careful TLB invalidations when changing the page size in the page
tables.

Just like Spectre, Meltdown, L1TF and MDS, a new bit has been allocated in
MSR_IA32_ARCH_CAPABILITIES (PSCHANGE_MC_NO) and will be set on CPUs which
are mitigated against this issue.

Signed-off-by: Vineela Tummalapalli <vineela.tummalapalli@intel.com>
Co-developed-by: Pawan Gupta <pawan.kumar.gupta@linux.intel.com>
Signed-off-by: Pawan Gupta <pawan.kumar.gupta@linux.intel.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
[bwh: Backported to 4.4:
 - No support for X86_VENDOR_HYGON, ATOM_AIRMONT_NP
 - Adjust context, indentation]
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2019-11-16 10:27:52 +01:00
Pawan Gupta
d601096be4 x86/speculation/taa: Add sysfs reporting for TSX Async Abort
commit 6608b45ac5ecb56f9e171252229c39580cc85f0f upstream.

Add the sysfs reporting file for TSX Async Abort. It exposes the
vulnerability and the mitigation state similar to the existing files for
the other hardware vulnerabilities.

Sysfs file path is:
/sys/devices/system/cpu/vulnerabilities/tsx_async_abort

Signed-off-by: Pawan Gupta <pawan.kumar.gupta@linux.intel.com>
Signed-off-by: Borislav Petkov <bp@suse.de>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Tested-by: Neelima Krishnan <neelima.krishnan@intel.com>
Reviewed-by: Mark Gross <mgross@linux.intel.com>
Reviewed-by: Tony Luck <tony.luck@intel.com>
Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Reviewed-by: Josh Poimboeuf <jpoimboe@redhat.com>
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2019-11-16 10:27:50 +01:00
Nathan Chancellor
06d423a807 Merge 4.4.180 into android-msm-wahoo-4.4
Changes in 4.4.180: (267 commits)
        kbuild: simplify ld-option implementation
        KVM: fail KVM_SET_VCPU_EVENTS with invalid exception number
        cifs: do not attempt cifs operation on smb2+ rename error
        MIPS: scall64-o32: Fix indirect syscall number load
        trace: Fix preempt_enable_no_resched() abuse
        sched/numa: Fix a possible divide-by-zero
        ceph: ensure d_name stability in ceph_dentry_hash()
        ceph: fix ci->i_head_snapc leak
        nfsd: Don't release the callback slot unless it was actually held
        sunrpc: don't mark uninitialised items as VALID.
        USB: Add new USB LPM helpers
        USB: Consolidate LPM checks to avoid enabling LPM twice
        powerpc/xmon: Add RFI flush related fields to paca dump
        powerpc/64s: Improve RFI L1-D cache flush fallback
        powerpc/pseries: Support firmware disable of RFI flush
        powerpc/powernv: Support firmware disable of RFI flush
        powerpc/rfi-flush: Move the logic to avoid a redo into the debugfs code
        powerpc/rfi-flush: Make it possible to call setup_rfi_flush() again
        powerpc/rfi-flush: Always enable fallback flush on pseries
        powerpc/rfi-flush: Differentiate enabled and patched flush types
        powerpc/pseries: Add new H_GET_CPU_CHARACTERISTICS flags
        powerpc/rfi-flush: Call setup_rfi_flush() after LPM migration
        powerpc: Add security feature flags for Spectre/Meltdown
        powerpc/pseries: Set or clear security feature flags
        powerpc/powernv: Set or clear security feature flags
        powerpc/64s: Move cpu_show_meltdown()
        powerpc/64s: Enhance the information in cpu_show_meltdown()
        powerpc/powernv: Use the security flags in pnv_setup_rfi_flush()
        powerpc/pseries: Use the security flags in pseries_setup_rfi_flush()
        powerpc/64s: Wire up cpu_show_spectre_v1()
        powerpc/64s: Wire up cpu_show_spectre_v2()
        powerpc/pseries: Fix clearing of security feature flags
        powerpc: Move default security feature flags
        powerpc/pseries: Restore default security feature flags on setup
        powerpc/64s: Fix section mismatch warnings from setup_rfi_flush()
        powerpc/64s: Add support for a store forwarding barrier at kernel entry/exit
        powerpc/64s: Add barrier_nospec
        powerpc/64s: Add support for ori barrier_nospec patching
        powerpc/64s: Patch barrier_nospec in modules
        powerpc/64s: Enable barrier_nospec based on firmware settings
        powerpc/64: Use barrier_nospec in syscall entry
        powerpc: Use barrier_nospec in copy_from_user()
        powerpc/64s: Enhance the information in cpu_show_spectre_v1()
        powerpc64s: Show ori31 availability in spectre_v1 sysfs file not v2
        powerpc/64: Disable the speculation barrier from the command line
        powerpc/64: Make stf barrier PPC_BOOK3S_64 specific.
        powerpc/64: Add CONFIG_PPC_BARRIER_NOSPEC
        powerpc/64: Call setup_barrier_nospec() from setup_arch()
        powerpc/64: Make meltdown reporting Book3S 64 specific
        powerpc/fsl: Add barrier_nospec implementation for NXP PowerPC Book3E
        powerpc/asm: Add a patch_site macro & helpers for patching instructions
        powerpc/64s: Add new security feature flags for count cache flush
        powerpc/64s: Add support for software count cache flush
        powerpc/pseries: Query hypervisor for count cache flush settings
        powerpc/powernv: Query firmware for count cache flush settings
        powerpc: Avoid code patching freed init sections
        powerpc/fsl: Add infrastructure to fixup branch predictor flush
        powerpc/fsl: Add macro to flush the branch predictor
        powerpc/fsl: Fix spectre_v2 mitigations reporting
        powerpc/fsl: Add nospectre_v2 command line argument
        powerpc/fsl: Flush the branch predictor at each kernel entry (64bit)
        powerpc/fsl: Update Spectre v2 reporting
        powerpc/security: Fix spectre_v2 reporting
        powerpc/fsl: Fix the flush of branch predictor.
        tipc: handle the err returned from cmd header function
        slip: make slhc_free() silently accept an error pointer
        intel_th: gth: Fix an off-by-one in output unassigning
        fs/proc/proc_sysctl.c: Fix a NULL pointer dereference
        NFS: Forbid setting AF_INET6 to "struct sockaddr_in"->sin_family.
        netfilter: ebtables: CONFIG_COMPAT: drop a bogus WARN_ON
        tipc: check bearer name with right length in tipc_nl_compat_bearer_enable
        tipc: check link name with right length in tipc_nl_compat_link_set
        bpf: reject wrong sized filters earlier
        Revert "block/loop: Use global lock for ioctl() operation."
        ipv4: add sanity checks in ipv4_link_failure()
        team: fix possible recursive locking when add slaves
        net: stmmac: move stmmac_check_ether_addr() to driver probe
        ipv4: set the tcp_min_rtt_wlen range from 0 to one day
        powerpc/fsl: Enable runtime patching if nospectre_v2 boot arg is used
        powerpc/fsl: Flush branch predictor when entering KVM
        powerpc/fsl: Emulate SPRN_BUCSR register
        powerpc/fsl: Flush the branch predictor at each kernel entry (32 bit)
        powerpc/fsl: Sanitize the syscall table for NXP PowerPC 32 bit platforms
        powerpc/fsl: Fixed warning: orphan section `__btb_flush_fixup'
        powerpc/fsl: Add FSL_PPC_BOOK3E as supported arch for nospectre_v2 boot arg
        Documentation: Add nospectre_v1 parameter
        usbnet: ipheth: prevent TX queue timeouts when device not ready
        usbnet: ipheth: fix potential null pointer dereference in ipheth_carrier_set
        qlcnic: Avoid potential NULL pointer dereference
        netfilter: bridge: set skb transport_header before entering NF_INET_PRE_ROUTING
        sc16is7xx: missing unregister/delete driver on error in sc16is7xx_init()
        usb: gadget: net2280: Fix overrun of OUT messages
        usb: gadget: net2280: Fix net2280_dequeue()
        usb: gadget: net2272: Fix net2272_dequeue()
        ARM: dts: pfla02: increase phy reset duration
        net: ks8851: Dequeue RX packets explicitly
        net: ks8851: Reassert reset pin if chip ID check fails
        net: ks8851: Delay requesting IRQ until opened
        net: ks8851: Set initial carrier state to down
        net: xilinx: fix possible object reference leak
        net: ibm: fix possible object reference leak
        net: ethernet: ti: fix possible object reference leak
        scsi: qla4xxx: fix a potential NULL pointer dereference
        usb: u132-hcd: fix resource leak
        ceph: fix use-after-free on symlink traversal
        scsi: zfcp: reduce flood of fcrscn1 trace records on multi-element RSCN
        libata: fix using DMA buffers on stack
        kconfig/[mn]conf: handle backspace (^H) key
        vfio/type1: Limit DMA mappings per container
        ALSA: line6: use dynamic buffers
        ipv4: ip_do_fragment: Preserve skb_iif during fragmentation
        ipv6/flowlabel: wait rcu grace period before put_pid()
        ipv6: invert flowlabel sharing check in process and user mode
        bnxt_en: Improve multicast address setup logic.
        packet: validate msg_namelen in send directly
        USB: yurex: Fix protection fault after device removal
        USB: w1 ds2490: Fix bug caused by improper use of altsetting array
        USB: core: Fix unterminated string returned by usb_string()
        USB: core: Fix bug caused by duplicate interface PM usage counter
        HID: debug: fix race condition with between rdesc_show() and device removal
        rtc: sh: Fix invalid alarm warning for non-enabled alarm
        igb: Fix WARN_ONCE on runtime suspend
        bonding: show full hw address in sysfs for slave entries
        jffs2: fix use-after-free on symlink traversal
        debugfs: fix use-after-free on symlink traversal
        rtc: da9063: set uie_unsupported when relevant
        vfio/pci: use correct format characters
        scsi: storvsc: Fix calculation of sub-channel count
        net: hns: Use NAPI_POLL_WEIGHT for hns driver
        net: hns: Fix WARNING when remove HNS driver with SMMU enabled
        hugetlbfs: fix memory leak for resv_map
        xsysace: Fix error handling in ace_setup
        ARM: orion: don't use using 64-bit DMA masks
        ARM: iop: don't use using 64-bit DMA masks
        usb: usbip: fix isoc packet num validation in get_pipe
        staging: iio: adt7316: allow adt751x to use internal vref for all dacs
        staging: iio: adt7316: fix the dac read calculation
        staging: iio: adt7316: fix the dac write calculation
        Input: snvs_pwrkey - initialize necessary driver data before enabling IRQ
        selinux: never allow relabeling on context mounts
        x86/mce: Improve error message when kernel cannot recover, p2
        media: v4l2: i2c: ov7670: Fix PLL bypass register values
        scsi: libsas: fix a race condition when smp task timeout
        ASoC:soc-pcm:fix a codec fixup issue in TDM case
        ASoC: cs4270: Set auto-increment bit for register writes
        ASoC: tlv320aic32x4: Fix Common Pins
        perf/x86/intel: Fix handling of wakeup_events for multi-entry PEBS
        scsi: csiostor: fix missing data copy in csio_scsi_err_handler()
        iommu/amd: Set exclusion range correctly
        genirq: Prevent use-after-free and work list corruption
        usb: dwc3: Fix default lpm_nyet_threshold value
        scsi: qla2xxx: Fix incorrect region-size setting in optrom SYSFS routines
        Bluetooth: hidp: fix buffer overflow
        Bluetooth: Align minimum encryption key size for LE and BR/EDR connections
        UAS: fix alignment of scatter/gather segments
        ipv6: fix a potential deadlock in do_ipv6_setsockopt()
        ASoC: Intel: avoid Oops if DMA setup fails
        timer/debug: Change /proc/timer_stats from 0644 to 0600
        netfilter: compat: initialize all fields in xt_init
        platform/x86: sony-laptop: Fix unintentional fall-through
        iio: adc: xilinx: fix potential use-after-free on remove
        HID: input: add mapping for Expose/Overview key
        HID: input: add mapping for keyboard Brightness Up/Down/Toggle keys
        libnvdimm/btt: Fix a kmemdup failure check
        s390/dasd: Fix capacity calculation for large volumes
        s390/3270: fix lockdep false positive on view->lock
        KVM: x86: avoid misreporting level-triggered irqs as edge-triggered in tracing
        tools lib traceevent: Fix missing equality check for strcmp
        init: initialize jump labels before command line option parsing
        ipvs: do not schedule icmp errors from tunnels
        s390: ctcm: fix ctcm_new_device error return code
        selftests/net: correct the return value for run_netsocktests
        gpu: ipu-v3: dp: fix CSC handling
        cw1200: fix missing unlock on error in cw1200_hw_scan()
        x86/vdso: Pass --eh-frame-hdr to the linker
        Don't jump to compute_result state from check_result state
        locking/static_keys: Provide DECLARE and well as DEFINE macros
        x86/microcode/intel: Add a helper which gives the microcode revision
        x86: stop exporting msr-index.h to userland
        bitops: avoid integer overflow in GENMASK(_ULL)
        x86/microcode/intel: Check microcode revision before updating sibling threads
        x86/MCE: Save microcode revision in machine check records
        x86/cpufeatures: Hide AMD-specific speculation flags
        x86/speculation: Support Enhanced IBRS on future CPUs
        x86/speculation: Simplify the CPU bug detection logic
        x86/bugs: Add AMD's variant of SSB_NO
        x86/bugs: Add AMD's SPEC_CTRL MSR usage
        x86/bugs: Switch the selection of mitigation from CPU vendor to CPU features
        locking/atomics, asm-generic: Move some macros from <linux/bitops.h> to a new <linux/bits.h> file
        x86/bugs: Fix the AMD SSBD usage of the SPEC_CTRL MSR
        x86/speculation: Remove SPECTRE_V2_IBRS in enum spectre_v2_mitigation
        x86/microcode: Make sure boot_cpu_data.microcode is up-to-date
        x86/microcode: Update the new microcode revision unconditionally
        x86/cpu: Sanitize FAM6_ATOM naming
        KVM: x86: SVM: Call x86_spec_ctrl_set_guest/host() with interrupts disabled
        x86/mm: Use WRITE_ONCE() when setting PTEs
        x86/speculation: Apply IBPB more strictly to avoid cross-process data leak
        x86/speculation: Enable cross-hyperthread spectre v2 STIBP mitigation
        x86/speculation: Propagate information about RSB filling mitigation to sysfs
        x86/speculation: Update the TIF_SSBD comment
        x86/speculation: Clean up spectre_v2_parse_cmdline()
        x86/speculation: Remove unnecessary ret variable in cpu_show_common()
        x86/speculation: Move STIPB/IBPB string conditionals out of cpu_show_common()
        x86/speculation: Disable STIBP when enhanced IBRS is in use
        x86/speculation: Rename SSBD update functions
        x86/speculation: Reorganize speculation control MSRs update
        x86/Kconfig: Select SCHED_SMT if SMP enabled
        sched: Add sched_smt_active()
        x86/speculation: Rework SMT state change
        x86/speculation: Reorder the spec_v2 code
        x86/speculation: Mark string arrays const correctly
        x86/speculataion: Mark command line parser data __initdata
        x86/speculation: Unify conditional spectre v2 print functions
        x86/speculation: Add command line control for indirect branch speculation
        x86/speculation: Prepare for per task indirect branch speculation control
        x86/process: Consolidate and simplify switch_to_xtra() code
        x86/speculation: Avoid __switch_to_xtra() calls
        x86/speculation: Prepare for conditional IBPB in switch_mm()
        x86/speculation: Split out TIF update
        x86/speculation: Prepare arch_smt_update() for PRCTL mode
        x86/speculation: Prevent stale SPEC_CTRL msr content
        x86/speculation: Add prctl() control for indirect branch speculation
        x86/speculation: Enable prctl mode for spectre_v2_user
        x86/speculation: Add seccomp Spectre v2 user space protection mode
        x86/speculation: Provide IBPB always command line options
        kvm: x86: Report STIBP on GET_SUPPORTED_CPUID
        x86/msr-index: Cleanup bit defines
        x86/speculation: Consolidate CPU whitelists
        x86/speculation/mds: Add basic bug infrastructure for MDS
        x86/speculation/mds: Add BUG_MSBDS_ONLY
        x86/kvm: Expose X86_FEATURE_MD_CLEAR to guests
        x86/speculation/mds: Add mds_clear_cpu_buffers()
        x86/speculation/mds: Clear CPU buffers on exit to user
        x86/speculation/mds: Conditionally clear CPU buffers on idle entry
        x86/speculation/mds: Add mitigation control for MDS
        x86/speculation/l1tf: Document l1tf in sysfs
        x86/speculation/mds: Add sysfs reporting for MDS
        x86/speculation/mds: Add mitigation mode VMWERV
        Documentation: Move L1TF to separate directory
        Documentation: Add MDS vulnerability documentation
        x86/cpu/bugs: Use __initconst for 'const' init data
        x86/speculation: Move arch_smt_update() call to after mitigation decisions
        x86/speculation/mds: Add SMT warning message
        x86/speculation/mds: Fix comment
        x86/speculation/mds: Print SMT vulnerable on MSBDS with mitigations off
        cpu/speculation: Add 'mitigations=' cmdline option
        x86/speculation: Support 'mitigations=' cmdline option
        x86/speculation/mds: Add 'mitigations=' support for MDS
        x86/mds: Add MDSUM variant to the MDS documentation
        Documentation: Correct the possible MDS sysfs values
        x86/speculation/mds: Fix documentation typo
        x86/bugs: Change L1TF mitigation string to match upstream
        USB: serial: use variable for status
        USB: serial: fix unthrottle races
        powerpc/64s: Include cpu header
        bridge: Fix error path for kobject_init_and_add()
        net: ucc_geth - fix Oops when changing number of buffers in the ring
        packet: Fix error path in packet_init
        vlan: disable SIOCSHWTSTAMP in container
        vrf: sit mtu should not be updated when vrf netdev is the link
        ipv4: Fix raw socket lookup for local traffic
        bonding: fix arp_validate toggling in active-backup mode
        drivers/virt/fsl_hypervisor.c: dereferencing error pointers in ioctl
        drivers/virt/fsl_hypervisor.c: prevent integer overflow in ioctl
        powerpc/booke64: set RI in default MSR
        powerpc/lib: fix book3s/32 boot failure due to code patching
        Linux 4.4.180

Signed-off-by: Nathan Chancellor <natechancellor@gmail.com>

Conflicts:
	arch/powerpc/include/asm/uaccess.h
	include/linux/cpu.h
	kernel/cpu.c
	kernel/irq/manage.c
	net/ipv4/sysctl_net_ipv4.c
2019-05-16 13:34:46 -07:00
Josh Poimboeuf
31a2c5f7a2 cpu/speculation: Add 'mitigations=' cmdline option
commit 98af8452945c55652de68536afdde3b520fec429 upstream.

Keeping track of the number of mitigations for all the CPU speculation
bugs has become overwhelming for many users.  It's getting more and more
complicated to decide which mitigations are needed for a given
architecture.  Complicating matters is the fact that each arch tends to
have its own custom way to mitigate the same vulnerability.

Most users fall into a few basic categories:

a) they want all mitigations off;

b) they want all reasonable mitigations on, with SMT enabled even if
   it's vulnerable; or

c) they want all reasonable mitigations on, with SMT disabled if
   vulnerable.

Define a set of curated, arch-independent options, each of which is an
aggregation of existing options:

- mitigations=off: Disable all mitigations.

- mitigations=auto: [default] Enable all the default mitigations, but
  leave SMT enabled, even if it's vulnerable.

- mitigations=auto,nosmt: Enable all the default mitigations, disabling
  SMT if needed by a mitigation.

Currently, these options are placeholders which don't actually do
anything.  They will be fleshed out in upcoming patches.

Signed-off-by: Josh Poimboeuf <jpoimboe@redhat.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Tested-by: Jiri Kosina <jkosina@suse.cz> (on x86)
Reviewed-by: Jiri Kosina <jkosina@suse.cz>
Cc: Borislav Petkov <bp@alien8.de>
Cc: "H . Peter Anvin" <hpa@zytor.com>
Cc: Andy Lutomirski <luto@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Jiri Kosina <jikos@kernel.org>
Cc: Waiman Long <longman@redhat.com>
Cc: Andrea Arcangeli <aarcange@redhat.com>
Cc: Jon Masters <jcm@redhat.com>
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Michael Ellerman <mpe@ellerman.id.au>
Cc: linuxppc-dev@lists.ozlabs.org
Cc: Martin Schwidefsky <schwidefsky@de.ibm.com>
Cc: Heiko Carstens <heiko.carstens@de.ibm.com>
Cc: linux-s390@vger.kernel.org
Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: Will Deacon <will.deacon@arm.com>
Cc: linux-arm-kernel@lists.infradead.org
Cc: linux-arch@vger.kernel.org
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: Tyler Hicks <tyhicks@canonical.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Randy Dunlap <rdunlap@infradead.org>
Cc: Steven Price <steven.price@arm.com>
Cc: Phil Auld <pauld@redhat.com>
Link: https://lkml.kernel.org/r/b07a8ef9b7c5055c3a4637c87d07c296d5016fe0.1555085500.git.jpoimboe@redhat.com
[bwh: Backported to 4.4:
 - Drop the auto,nosmt option which we can't support
 - Adjust filename]
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2019-05-16 19:45:15 +02:00
Thomas Gleixner
3fb41b4e2d x86/speculation/mds: Add sysfs reporting for MDS
commit 8a4b06d391b0a42a373808979b5028f5c84d9c6a upstream.

Add the sysfs reporting file for MDS. It exposes the vulnerability and
mitigation state similar to the existing files for the other speculative
hardware vulnerabilities.

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Reviewed-by: Borislav Petkov <bp@suse.de>
Reviewed-by: Jon Masters <jcm@redhat.com>
Tested-by: Jon Masters <jcm@redhat.com>
[bwh: Backported to 4.4:
 - Test x86_hyper instead of using hypervisor_is_type()
 - Adjust context]
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2019-05-16 19:45:14 +02:00
Nathan Chancellor
30434a5667 Merge 4.4.148 into android-msm-wahoo-4.4
Changes in 4.4.148: (46 commits)
        ext4: fix check to prevent initializing reserved inodes
        tpm: fix race condition in tpm_common_write()
        ipv4+ipv6: Make INET*_ESP select CRYPTO_ECHAINIV
        fork: unconditionally clear stack on fork
        parisc: Enable CONFIG_MLONGCALLS by default
        parisc: Define mb() and add memory barriers to assembler unlock sequences
        xen/netfront: don't cache skb_shinfo()
        ACPI / LPSS: Add missing prv_offset setting for byt/cht PWM devices
        scsi: sr: Avoid that opening a CD-ROM hangs with runtime power management enabled
        root dentries need RCU-delayed freeing
        fix mntput/mntput race
        fix __legitimize_mnt()/mntput() race
        IB/core: Make testing MR flags for writability a static inline function
        IB/mlx4: Mark user MR as writable if actual virtual memory is writable
        IB/ocrdma: fix out of bounds access to local buffer
        ARM: dts: imx6sx: fix irq for pcie bridge
        x86/paravirt: Fix spectre-v2 mitigations for paravirt guests
        x86/speculation: Protect against userspace-userspace spectreRSB
        kprobes/x86: Fix %p uses in error messages
        x86/irqflags: Provide a declaration for native_save_fl
        x86/speculation/l1tf: Increase 32bit PAE __PHYSICAL_PAGE_SHIFT
        x86/mm: Move swap offset/type up in PTE to work around erratum
        x86/mm: Fix swap entry comment and macro
        mm: x86: move _PAGE_SWP_SOFT_DIRTY from bit 7 to bit 1
        x86/speculation/l1tf: Change order of offset/type in swap entry
        x86/speculation/l1tf: Protect swap entries against L1TF
        x86/speculation/l1tf: Protect PROT_NONE PTEs against speculation
        x86/speculation/l1tf: Make sure the first page is always reserved
        x86/speculation/l1tf: Add sysfs reporting for l1tf
        mm: Add vm_insert_pfn_prot()
        mm: fix cache mode tracking in vm_insert_mixed()
        x86/speculation/l1tf: Disallow non privileged high MMIO PROT_NONE mappings
        x86/speculation/l1tf: Limit swap file size to MAX_PA/2
        x86/bugs: Move the l1tf function and define pr_fmt properly
        x86/speculation/l1tf: Extend 64bit swap file size limit
        x86/cpufeatures: Add detection of L1D cache flush support.
        x86/speculation/l1tf: Protect PAE swap entries against L1TF
        x86/speculation/l1tf: Fix up pte->pfn conversion for PAE
        x86/speculation/l1tf: Invert all not present mappings
        x86/speculation/l1tf: Make pmd/pud_mknotpresent() invert
        x86/mm/pat: Make set_memory_np() L1TF safe
        x86/mm/kmmio: Make the tracer robust against L1TF
        x86/speculation/l1tf: Fix up CPU feature flags
        x86/init: fix build with CONFIG_SWAP=n
        x86/speculation/l1tf: Unbreak !__HAVE_ARCH_PFN_MODIFY_ALLOWED architectures
        Linux 4.4.148

Signed-off-by: Nathan Chancellor <natechancellor@gmail.com>

Conflicts:
	include/linux/swapfile.h
2018-08-15 11:17:58 -07:00
Andi Kleen
bf0cca01b8 x86/speculation/l1tf: Add sysfs reporting for l1tf
commit 17dbca119312b4e8173d4e25ff64262119fcef38 upstream

L1TF core kernel workarounds are cheap and normally always enabled, However
they still should be reported in sysfs if the system is vulnerable or
mitigated. Add the necessary CPU feature/bug bits.

- Extend the existing checks for Meltdowns to determine if the system is
  vulnerable. All CPUs which are not vulnerable to Meltdown are also not
  vulnerable to L1TF

- Check for 32bit non PAE and emit a warning as there is no practical way
  for mitigation due to the limited physical address bits

- If the system has more than MAX_PA/2 physical memory the invert page
  workarounds don't protect the system against the L1TF attack anymore,
  because an inverted physical address will also point to valid
  memory. Print a warning in this case and report that the system is
  vulnerable.

Add a function which returns the PFN limit for the L1TF mitigation, which
will be used in follow up patches for sanity and range checks.

[ tglx: Renamed the CPU feature bit to L1TF_PTEINV ]
[ dwmw2: Backport to 4.9 (cpufeatures.h, E820) ]

Signed-off-by: Andi Kleen <ak@linux.intel.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Reviewed-by: Josh Poimboeuf <jpoimboe@redhat.com>
Acked-by: Dave Hansen <dave.hansen@intel.com>
Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2018-08-15 17:42:09 +02:00
Nathan Chancellor
1c1c5864b2 Merge 4.4.144 into android-msm-wahoo-4.4
Changes in 4.4.144: (108 commits)
        KVM/Eventfd: Avoid crash when assign and deassign specific eventfd in parallel.
        x86/MCE: Remove min interval polling limitation
        fat: fix memory allocation failure handling of match_strdup()
        ALSA: rawmidi: Change resized buffers atomically
        ARC: Fix CONFIG_SWAP
        ARC: mm: allow mprotect to make stack mappings executable
        mm: memcg: fix use after free in mem_cgroup_iter()
        ipv4: Return EINVAL when ping_group_range sysctl doesn't map to user ns
        ipv6: fix useless rol32 call on hash
        lib/rhashtable: consider param->min_size when setting initial table size
        net/ipv4: Set oif in fib_compute_spec_dst
        net: phy: fix flag masking in __set_phy_supported
        ptp: fix missing break in switch
        tg3: Add higher cpu clock for 5762.
        net: Don't copy pfmemalloc flag in __copy_skb_header()
        skbuff: Unconditionally copy pfmemalloc in __skb_clone()
        xhci: Fix perceived dead host due to runtime suspend race with event handler
        x86/paravirt: Make native_save_fl() extern inline
        x86/cpufeatures: Add CPUID_7_EDX CPUID leaf
        x86/cpufeatures: Add Intel feature bits for Speculation Control
        x86/cpufeatures: Add AMD feature bits for Speculation Control
        x86/msr: Add definitions for new speculation control MSRs
        x86/pti: Do not enable PTI on CPUs which are not vulnerable to Meltdown
        x86/cpufeature: Blacklist SPEC_CTRL/PRED_CMD on early Spectre v2 microcodes
        x86/speculation: Add basic IBPB (Indirect Branch Prediction Barrier) support
        x86/cpufeatures: Clean up Spectre v2 related CPUID flags
        x86/cpuid: Fix up "virtual" IBRS/IBPB/STIBP feature bits on Intel
        x86/pti: Mark constant arrays as __initconst
        x86/asm/entry/32: Simplify pushes of zeroed pt_regs->REGs
        x86/entry/64/compat: Clear registers for compat syscalls, to reduce speculation attack surface
        x86/speculation: Update Speculation Control microcode blacklist
        x86/speculation: Correct Speculation Control microcode blacklist again
        x86/speculation: Clean up various Spectre related details
        x86/speculation: Fix up array_index_nospec_mask() asm constraint
        x86/speculation: Add <asm/msr-index.h> dependency
        x86/xen: Zero MSR_IA32_SPEC_CTRL before suspend
        x86/mm: Factor out LDT init from context init
        x86/mm: Give each mm TLB flush generation a unique ID
        x86/speculation: Use Indirect Branch Prediction Barrier in context switch
        x86/spectre_v2: Don't check microcode versions when running under hypervisors
        x86/speculation: Use IBRS if available before calling into firmware
        x86/speculation: Move firmware_restrict_branch_speculation_*() from C to CPP
        x86/speculation: Remove Skylake C2 from Speculation Control microcode blacklist
        selftest/seccomp: Fix the flag name SECCOMP_FILTER_FLAG_TSYNC
        selftest/seccomp: Fix the seccomp(2) signature
        xen: set cpu capabilities from xen_start_kernel()
        x86/amd: don't set X86_BUG_SYSRET_SS_ATTRS when running under Xen
        x86/nospec: Simplify alternative_msr_write()
        x86/bugs: Concentrate bug detection into a separate function
        x86/bugs: Concentrate bug reporting into a separate function
        x86/bugs: Read SPEC_CTRL MSR during boot and re-use reserved bits
        x86/bugs, KVM: Support the combination of guest and host IBRS
        x86/cpu: Rename Merrifield2 to Moorefield
        x86/cpu/intel: Add Knights Mill to Intel family
        x86/bugs: Expose /sys/../spec_store_bypass
        x86/cpufeatures: Add X86_FEATURE_RDS
        x86/bugs: Provide boot parameters for the spec_store_bypass_disable mitigation
        x86/bugs/intel: Set proper CPU features and setup RDS
        x86/bugs: Whitelist allowed SPEC_CTRL MSR values
        x86/bugs/AMD: Add support to disable RDS on Fam[15, 16, 17]h if requested
        x86/speculation: Create spec-ctrl.h to avoid include hell
        prctl: Add speculation control prctls
        x86/process: Optimize TIF checks in __switch_to_xtra()
        x86/process: Correct and optimize TIF_BLOCKSTEP switch
        x86/process: Optimize TIF_NOTSC switch
        x86/process: Allow runtime control of Speculative Store Bypass
        x86/speculation: Add prctl for Speculative Store Bypass mitigation
        nospec: Allow getting/setting on non-current task
        proc: Provide details on speculation flaw mitigations
        seccomp: Enable speculation flaw mitigations
        prctl: Add force disable speculation
        seccomp: Use PR_SPEC_FORCE_DISABLE
        seccomp: Add filter flag to opt-out of SSB mitigation
        seccomp: Move speculation migitation control to arch code
        x86/speculation: Make "seccomp" the default mode for Speculative Store Bypass
        x86/bugs: Rename _RDS to _SSBD
        proc: Use underscores for SSBD in 'status'
        Documentation/spec_ctrl: Do some minor cleanups
        x86/bugs: Fix __ssb_select_mitigation() return type
        x86/bugs: Make cpu_show_common() static
        x86/bugs: Fix the parameters alignment and missing void
        x86/cpu: Make alternative_msr_write work for 32-bit code
        x86/speculation: Use synthetic bits for IBRS/IBPB/STIBP
        x86/cpufeatures: Disentangle MSR_SPEC_CTRL enumeration from IBRS
        x86/cpufeatures: Disentangle SSBD enumeration
        x86/cpu/AMD: Fix erratum 1076 (CPB bit)
        x86/cpufeatures: Add FEATURE_ZEN
        x86/speculation: Handle HT correctly on AMD
        x86/bugs, KVM: Extend speculation control for VIRT_SPEC_CTRL
        x86/speculation: Add virtualized speculative store bypass disable support
        x86/speculation: Rework speculative_store_bypass_update()
        x86/bugs: Unify x86_spec_ctrl_{set_guest, restore_host}
        x86/bugs: Expose x86_spec_ctrl_base directly
        x86/bugs: Remove x86_spec_ctrl_set()
        x86/bugs: Rework spec_ctrl base and mask logic
        x86/speculation, KVM: Implement support for VIRT_SPEC_CTRL/LS_CFG
        x86/bugs: Rename SSBD_NO to SSB_NO
        x86/xen: Add call of speculative_store_bypass_ht_init() to PV paths
        x86/cpu: Re-apply forced caps every time CPU caps are re-read
        block: do not use interruptible wait anywhere
        clk: tegra: Fix PLL_U post divider and initial rate on Tegra30
        ubi: Introduce vol_ignored()
        ubi: Rework Fastmap attach base code
        ubi: Be more paranoid while seaching for the most recent Fastmap
        ubi: Fix races around ubi_refill_pools()
        ubi: Fix Fastmap's update_vol()
        ubi: fastmap: Erase outdated anchor PEBs during attach
        Linux 4.4.144

Signed-off-by: Nathan Chancellor <natechancellor@gmail.com>

Conflicts:
	drivers/mtd/ubi/wl.c
	include/uapi/linux/prctl.h
	kernel/sys.c
	sound/core/rawmidi.c
2018-07-25 06:18:25 -07:00
Konrad Rzeszutek Wilk
d8067aba23 x86/bugs: Expose /sys/../spec_store_bypass
commit c456442cd3a59eeb1d60293c26cbe2ff2c4e42cf upstream

Add the sysfs file for the new vulerability. It does not do much except
show the words 'Vulnerable' for recent x86 cores.

Intel cores prior to family 6 are known not to be vulnerable, and so are
some Atoms and some Xeon Phi.

It assumes that older Cyrix, Centaur, etc. cores are immune.

Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Reviewed-by: Borislav Petkov <bp@suse.de>
Reviewed-by: Ingo Molnar <mingo@kernel.org>
Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Srivatsa S. Bhat <srivatsa@csail.mit.edu>
Reviewed-by: Matt Helsley (VMware) <matt.helsley@gmail.com>
Reviewed-by: Alexey Makhalov <amakhalov@vmware.com>
Reviewed-by: Bo Gan <ganb@vmware.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2018-07-25 10:18:24 +02:00
Nathan Chancellor
342fcc871c Merge 4.4.112 into android-msm-wahoo-4.4-oreo-mr1
Changes in 4.4.112: (94 commits)
        dm bufio: fix shrinker scans when (nr_to_scan < retain_target)
        KVM: Fix stack-out-of-bounds read in write_mmio
        can: gs_usb: fix return value of the "set_bittiming" callback
        IB/srpt: Disable RDMA access by the initiator
        MIPS: Validate PR_SET_FP_MODE prctl(2) requests against the ABI of the task
        MIPS: Factor out NT_PRFPREG regset access helpers
        MIPS: Guard against any partial write attempt with PTRACE_SETREGSET
        MIPS: Consistently handle buffer counter with PTRACE_SETREGSET
        MIPS: Fix an FCSR access API regression with NT_PRFPREG and MSA
        MIPS: Also verify sizeof `elf_fpreg_t' with PTRACE_SETREGSET
        MIPS: Disallow outsized PTRACE_SETREGSET NT_PRFPREG regset accesses
        net/mac80211/debugfs.c: prevent build failure with CONFIG_UBSAN=y
        kvm: vmx: Scrub hardware GPRs at VM-exit
        x86/vsdo: Fix build on PARAVIRT_CLOCK=y, KVM_GUEST=n
        x86/acpi: Handle SCI interrupts above legacy space gracefully
        iommu/arm-smmu-v3: Don't free page table ops twice
        ALSA: pcm: Remove incorrect snd_BUG_ON() usages
        ALSA: pcm: Add missing error checks in OSS emulation plugin builder
        ALSA: pcm: Abort properly at pending signal in OSS read/write loops
        ALSA: pcm: Allow aborting mutex lock at OSS read/write loops
        ALSA: aloop: Release cable upon open error path
        ALSA: aloop: Fix inconsistent format due to incomplete rule
        ALSA: aloop: Fix racy hw constraints adjustment
        x86/acpi: Reduce code duplication in mp_override_legacy_irq()
        mm/compaction: fix invalid free_pfn and compact_cached_free_pfn
        mm/compaction: pass only pageblock aligned range to pageblock_pfn_to_page
        mm/page-writeback: fix dirty_ratelimit calculation
        mm/zswap: use workqueue to destroy pool
        zswap: don't param_set_charp while holding spinlock
        locks: don't check for race with close when setting OFD lock
        futex: Replace barrier() in unqueue_me() with READ_ONCE()
        locking/mutex: Allow next waiter lockless wakeup
        usbvision fix overflow of interfaces array
        usb: musb: ux500: Fix NULL pointer dereference at system PM
        r8152: fix the wake event
        r8152: use test_and_clear_bit
        r8152: adjust ALDPS function
        lan78xx: use skb_cow_head() to deal with cloned skbs
        sr9700: use skb_cow_head() to deal with cloned skbs
        smsc75xx: use skb_cow_head() to deal with cloned skbs
        cx82310_eth: use skb_cow_head() to deal with cloned skbs
        x86/mm/pat, /dev/mem: Remove superfluous error message
        hwrng: core - sleep interruptible in read
        sysrq: Fix warning in sysrq generated crash.
        xhci: Fix ring leak in failure path of xhci_alloc_virt_device()
        Revert "userfaultfd: selftest: vm: allow to build in vm/ directory"
        x86/pti/efi: broken conversion from efi to kernel page table
        8021q: fix a memory leak for VLAN 0 device
        ip6_tunnel: disable dst caching if tunnel is dual-stack
        net: core: fix module type in sock_diag_bind
        RDS: Heap OOB write in rds_message_alloc_sgs()
        RDS: null pointer dereference in rds_atomic_free_op
        sh_eth: fix TSU resource handling
        sh_eth: fix SH7757 GEther initialization
        net: stmmac: enable EEE in MII, GMII or RGMII only
        ipv6: fix possible mem leaks in ipv6_make_skb()
        crypto: algapi - fix NULL dereference in crypto_remove_spawns()
        rbd: set max_segments to USHRT_MAX
        x86/microcode/intel: Extend BDW late-loading with a revision check
        KVM: x86: Add memory barrier on vmcs field lookup
        drm/vmwgfx: Potential off by one in vmw_view_add()
        kaiser: Set _PAGE_NX only if supported
        bpf: add bpf_patch_insn_single helper
        bpf: don't (ab)use instructions to store state
        bpf: move fixup_bpf_calls() function
        bpf: refactor fixup_bpf_calls()
        bpf: adjust insn_aux_data when patching insns
        bpf: prevent out-of-bounds speculation
        bpf, array: fix overflow in max_entries and undefined behavior in index_mask
        iscsi-target: Make TASK_REASSIGN use proper se_cmd->cmd_kref
        target: Avoid early CMD_T_PRE_EXECUTE failures during ABORT_TASK
        USB: serial: cp210x: add IDs for LifeScan OneTouch Verio IQ
        USB: serial: cp210x: add new device ID ELV ALC 8xxx
        usb: misc: usb3503: make sure reset is low for at least 100us
        USB: fix usbmon BUG trigger
        usbip: remove kernel addresses from usb device and urb debug msgs
        staging: android: ashmem: fix a race condition in ASHMEM_SET_SIZE ioctl
        Bluetooth: Prevent stack info leak from the EFS element.
        uas: ignore UAS for Norelsys NS1068(X) chips
        e1000e: Fix e1000_check_for_copper_link_ich8lan return value.
        x86/Documentation: Add PTI description
        x86/cpu: Factor out application of forced CPU caps
        x86/cpufeatures: Make CPU bugs sticky
        x86/cpufeatures: Add X86_BUG_CPU_INSECURE
        x86/pti: Rename BUG_CPU_INSECURE to BUG_CPU_MELTDOWN
        x86/cpufeatures: Add X86_BUG_SPECTRE_V[12]
        x86/cpu: Merge bugs.c and bugs_64.c
        sysfs/cpu: Add vulnerability folder
        x86/cpu: Implement CPU vulnerabilites sysfs functions
        sysfs/cpu: Fix typos in vulnerability documentation
        x86/alternatives: Fix optimize_nops() checking
        x86/alternatives: Add missing '\n' at end of ALTERNATIVE inline asm
        selftests/x86: Add test_vsyscall
        Linux 4.4.112

Signed-off-by: Nathan Chancellor <natechancellor@gmail.com>

Conflicts:
	drivers/md/dm-bufio.c
2018-01-17 04:19:16 -07:00
Thomas Gleixner
73492b6860 sysfs/cpu: Add vulnerability folder
commit 87590ce6e373d1a5401f6539f0c59ef92dd924a9 upstream.

As the meltdown/spectre problem affects several CPU architectures, it makes
sense to have common way to express whether a system is affected by a
particular vulnerability or not. If affected the way to express the
mitigation should be common as well.

Create /sys/devices/system/cpu/vulnerabilities folder and files for
meltdown, spectre_v1 and spectre_v2.

Allow architectures to override the show function.

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Reviewed-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Will Deacon <will.deacon@arm.com>
Cc: Dave Hansen <dave.hansen@intel.com>
Cc: Linus Torvalds <torvalds@linuxfoundation.org>
Cc: Borislav Petkov <bp@alien8.de>
Cc: David Woodhouse <dwmw@amazon.co.uk>
Link: https://lkml.kernel.org/r/20180107214913.096657732@linutronix.de
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2018-01-17 09:35:33 +01:00
Thierry Strudel
ab757a987a Merge branch 'android-msm-8998-4.4' into android-msm-8998-4.4-common
Conflicts:
	Documentation/scheduler/sched-hmp.txt
	drivers/base/cpu.c
	include/linux/cgroup-defs.h
	include/linux/cgroup.h
	include/trace/events/sched.h
	kernel/cgroup.c
	kernel/cpuset.c
	kernel/sched/core.c
	kernel/sched/core_ctl.c
	kernel/sched/fair.c
	kernel/sched/hmp.c
	kernel/sched/rt.c
	kernel/sched/tune.c
	kernel/sysctl.c

Test: builds for msmcortex_defconfig
Change-Id: I82e0a13c9ca21d5f52cdbe52a2add501c1fca05d
Signed-off-by: Thierry Strudel <tstrudel@google.com>
2017-04-07 09:56:07 -07:00
Runmin Wang
78cbd38fd5 Merge tag 'lsk-v4.4-17.02-android' into branch 'msm-4.4'
* refs/heads/tmp-26c8156:
  Linux 4.4.49
  drm/i915: fix use-after-free in page_flip_completed()
  ALSA: seq: Don't handle loop timeout at snd_seq_pool_done()
  ALSA: seq: Fix race at creating a queue
  xen-netfront: Delete rx_refill_timer in xennet_disconnect_backend()
  scsi: mpt3sas: disable ASPM for MPI2 controllers
  scsi: aacraid: Fix INTx/MSI-x issue with older controllers
  scsi: zfcp: fix use-after-free by not tracing WKA port open/close on failed send
  netvsc: Set maximum GSO size in the right place
  mac80211: Fix adding of mesh vendor IEs
  ARM: 8642/1: LPAE: catch pending imprecise abort on unmask
  target: Fix COMPARE_AND_WRITE ref leak for non GOOD status
  target: Fix early transport_generic_handle_tmr abort scenario
  target: Use correct SCSI status during EXTENDED_COPY exception
  target: Don't BUG_ON during NodeACL dynamic -> explicit conversion
  ARM: 8643/3: arm/ptrace: Preserve previous registers for short regset write
  hns: avoid stack overflow with CONFIG_KASAN
  cpumask: use nr_cpumask_bits for parsing functions
  Revert "x86/ioapic: Restore IO-APIC irq_chip retrigger callback"
  selinux: fix off-by-one in setprocattr
  ARC: [arcompact] brown paper bag bug in unaligned access delay slot fixup
  Linux 4.4.48
  base/memory, hotplug: fix a kernel oops in show_valid_zones()
  x86/irq: Make irq activate operations symmetric
  USB: serial: option: add device ID for HP lt2523 (Novatel E371)
  usb: gadget: f_fs: Assorted buffer overflow checks.
  USB: Add quirk for WORLDE easykey.25 MIDI keyboard
  USB: serial: pl2303: add ATEN device ID
  USB: serial: qcserial: add Dell DW5570 QDL
  KVM: x86: do not save guest-unsupported XSAVE state
  HID: wacom: Fix poor prox handling in 'wacom_pl_irq'
  percpu-refcount: fix reference leak during percpu-atomic transition
  mmc: sdhci: Ignore unexpected CARD_INT interrupts
  can: bcm: fix hrtimer/tasklet termination in bcm op removal
  mm, fs: check for fatal signals in do_generic_file_read()
  mm/memory_hotplug.c: check start_pfn in test_pages_in_a_zone()
  cifs: initialize file_info_lock
  zswap: disable changing params if init fails
  svcrpc: fix oops in absence of krb5 module
  NFSD: Fix a null reference case in find_or_create_lock_stateid()
  powerpc: Add missing error check to prom_find_boot_cpu()
  powerpc/eeh: Fix wrong flag passed to eeh_unfreeze_pe()
  libata: apply MAX_SEC_1024 to all CX1-JB*-HP devices
  ata: sata_mv:- Handle return value of devm_ioremap.
  perf/core: Fix PERF_RECORD_MMAP2 prot/flags for anonymous memory
  crypto: arm64/aes-blk - honour iv_out requirement in CBC and CTR modes
  crypto: api - Clear CRYPTO_ALG_DEAD bit before registering an alg
  drm/nouveau/nv1a,nv1f/disp: fix memory clock rate retrieval
  drm/nouveau/disp/gt215: Fix HDA ELD handling (thus, HDMI audio) on gt215
  ext4: validate s_first_meta_bg at mount time
  PCI/ASPM: Handle PCI-to-PCIe bridges as roots of PCIe hierarchies
  ANDROID: security: export security_path_chown()
  Linux 4.4.47
  net: dsa: Bring back device detaching in dsa_slave_suspend()
  qmi_wwan/cdc_ether: add device ID for HP lt2523 (Novatel E371) WWAN card
  af_unix: move unix_mknod() out of bindlock
  r8152: don't execute runtime suspend if the tx is not empty
  bridge: netlink: call br_changelink() during br_dev_newlink()
  tcp: initialize max window for a new fastopen socket
  ipv6: addrconf: Avoid addrconf_disable_change() using RCU read-side lock
  net: phy: bcm63xx: Utilize correct config_intr function
  net: fix harmonize_features() vs NETIF_F_HIGHDMA
  ax25: Fix segfault after sock connection timeout
  ravb: do not use zero-length alignment DMA descriptor
  openvswitch: maintain correct checksum state in conntrack actions
  tcp: fix tcp_fastopen unaligned access complaints on sparc
  net: systemport: Decouple flow control from __bcm_sysport_tx_reclaim
  net: ipv4: fix table id in getroute response
  net: lwtunnel: Handle lwtunnel_fill_encap failure
  mlxsw: pci: Fix EQE structure definition
  mlxsw: switchx2: Fix memory leak at skb reallocation
  mlxsw: spectrum: Fix memory leak at skb reallocation
  r8152: fix the sw rx checksum is unavailable
  ANDROID: sdcardfs: Switch strcasecmp for internal call
  ANDROID: sdcardfs: switch to full_name_hash and qstr
  ANDROID: sdcardfs: Add GID Derivation to sdcardfs
  ANDROID: sdcardfs: Remove redundant operation
  ANDROID: sdcardfs: add support for user permission isolation
  ANDROID: sdcardfs: Refactor configfs interface
  ANDROID: sdcardfs: Allow non-owners to touch
  ANDROID: binder: fix format specifier for type binder_size_t
  ANDROID: fs: Export vfs_rmdir2
  ANDROID: fs: Export free_fs_struct and set_fs_pwd
  ANDROID: mnt: remount should propagate to slaves of slaves
  ANDROID: sdcardfs: Switch ->d_inode to d_inode()
  ANDROID: sdcardfs: Fix locking issue with permision fix up
  ANDROID: sdcardfs: Change magic value
  ANDROID: sdcardfs: Use per mount permissions
  ANDROID: sdcardfs: Add gid and mask to private mount data
  ANDROID: sdcardfs: User new permission2 functions
  ANDROID: vfs: Add setattr2 for filesystems with per mount permissions
  ANDROID: vfs: Add permission2 for filesystems with per mount permissions
  ANDROID: vfs: Allow filesystems to access their private mount data
  ANDROID: mnt: Add filesystem private data to mount points
  ANDROID: sdcardfs: Move directory unlock before touch
  ANDROID: sdcardfs: fix external storage exporting incorrect uid
  ANDROID: sdcardfs: Added top to sdcardfs_inode_info
  ANDROID: sdcardfs: Switch package list to RCU
  ANDROID: sdcardfs: Fix locking for permission fix up
  ANDROID: sdcardfs: Check for other cases on path lookup
  ANDROID: sdcardfs: override umask on mkdir and create
  Linux 4.4.46
  mm, memcg: do not retry precharge charges
  platform/x86: intel_mid_powerbtn: Set IRQ_ONESHOT
  pinctrl: broxton: Use correct PADCFGLOCK offset
  s5k4ecgx: select CRC32 helper
  IB/umem: Release pid in error and ODP flow
  IB/ipoib: move back IB LL address into the hard header
  drm/i915: Don't leak edid in intel_crt_detect_ddc()
  SUNRPC: cleanup ida information when removing sunrpc module
  NFSv4.0: always send mode in SETATTR after EXCLUSIVE4
  nfs: Don't increment lock sequence ID after NFS4ERR_MOVED
  parisc: Don't use BITS_PER_LONG in userspace-exported swab.h header
  ARC: [arcompact] handle unaligned access delay slot corner case
  ARC: udelay: fix inline assembler by adding LP_COUNT to clobber list
  can: ti_hecc: add missing prepare and unprepare of the clock
  can: c_can_pci: fix null-pointer-deref in c_can_start() - set device pointer
  s390/ptrace: Preserve previous registers for short regset write
  RDMA/cma: Fix unknown symbol when CONFIG_IPV6 is not enabled
  ISDN: eicon: silence misleading array-bounds warning
  sysctl: fix proc_doulongvec_ms_jiffies_minmax()
  mm/mempolicy.c: do not put mempolicy before using its nodemask
  drm: Fix broken VT switch with video=1366x768 option
  tile/ptrace: Preserve previous registers for short regset write
  fbdev: color map copying bounds checking
  Linux 4.4.45
  arm64: avoid returning from bad_mode
  selftest/powerpc: Wrong PMC initialized in pmc56_overflow test
  dmaengine: pl330: Fix runtime PM support for terminated transfers
  ite-cir: initialize use_demodulator before using it
  blackfin: check devm_pinctrl_get() for errors
  ARM: 8613/1: Fix the uaccess crash on PB11MPCore
  ARM: ux500: fix prcmu_is_cpu_in_wfi() calculation
  ARM: dts: imx6qdl-nitrogen6_max: fix sgtl5000 pinctrl init
  arm64/ptrace: Reject attempts to set incomplete hardware breakpoint fields
  arm64/ptrace: Avoid uninitialised struct padding in fpr_set()
  arm64/ptrace: Preserve previous registers for short regset write - 3
  arm64/ptrace: Preserve previous registers for short regset write - 2
  arm64/ptrace: Preserve previous registers for short regset write
  ARM: dts: da850-evm: fix read access to SPI flash
  ceph: fix bad endianness handling in parse_reply_info_extra
  ARM: 8634/1: hw_breakpoint: blacklist Scorpion CPUs
  svcrdma: avoid duplicate dma unmapping during error recovery
  clocksource/exynos_mct: Clear interrupt when cpu is shut down
  ubifs: Fix journal replay wrt. xattr nodes
  qla2xxx: Fix crash due to null pointer access
  x86/ioapic: Restore IO-APIC irq_chip retrigger callback
  mtd: nand: xway: disable module support
  ieee802154: atusb: do not use the stack for buffers to make them DMA able
  mmc: mxs-mmc: Fix additional cycles after transmission stop
  HID: corsair: fix control-transfer error handling
  HID: corsair: fix DMA buffers on stack
  PCI: Enumerate switches below PCI-to-PCIe bridges
  fuse: clear FR_PENDING flag when moving requests out of pending queue
  svcrpc: don't leak contexts on PROC_DESTROY
  x86/PCI: Ignore _CRS on Supermicro X8DTH-i/6/iF/6F
  tmpfs: clear S_ISGID when setting posix ACLs
  ARM: dts: imx31: fix AVIC base address
  ARM: dts: imx31: move CCM device node to AIPS2 bus devices
  ARM: dts: imx31: fix clock control module interrupts description
  perf scripting: Avoid leaking the scripting_context variable
  IB/IPoIB: Remove can't use GFP_NOIO warning
  IB/mlx4: When no DMFS for IPoIB, don't allow NET_IF QPs
  IB/mlx4: Fix port query for 56Gb Ethernet links
  IB/mlx4: Fix out-of-range array index in destroy qp flow
  IB/mlx4: Set traffic class in AH
  IB/mlx5: Wait for all async command completions to complete
  ftrace/x86: Set ftrace_stub to weak to prevent gcc from using short jumps to it
  Linux 4.4.44
  pinctrl: sh-pfc: Do not unconditionally support PIN_CONFIG_BIAS_DISABLE
  powerpc/ibmebus: Fix device reference leaks in sysfs interface
  powerpc/ibmebus: Fix further device reference leaks
  bus: vexpress-config: fix device reference leak
  blk-mq: Always schedule hctx->next_cpu
  ACPI / APEI: Fix NMI notification handling
  block: cfq_cpd_alloc() should use @gfp
  cpufreq: powernv: Disable preemption while checking CPU throttling state
  NFSv4.1: nfs4_fl_prepare_ds must be careful about reporting success.
  NFS: Fix a performance regression in readdir
  pNFS: Fix race in pnfs_wait_on_layoutreturn
  pinctrl: meson: fix gpio request disabling other modes
  btrfs: fix error handling when run_delayed_extent_op fails
  btrfs: fix locking when we put back a delayed ref that's too new
  x86/cpu: Fix bootup crashes by sanitizing the argument of the 'clearcpuid=' command-line option
  USB: serial: ch341: fix modem-control and B0 handling
  USB: serial: ch341: fix resume after reset
  drm/radeon: drop verde dpm quirks
  sysctl: Drop reference added by grab_header in proc_sys_readdir
  sysrq: attach sysrq handler correctly for 32-bit kernel
  tty/serial: atmel_serial: BUG: stop DMA from transmitting in stop_tx
  mnt: Protect the mountpoint hashtable with mount_lock
  vme: Fix wrong pointer utilization in ca91cx42_slave_get
  xhci: fix deadlock at host remove by running watchdog correctly
  i2c: fix kernel memory disclosure in dev interface
  i2c: print correct device invalid address
  Input: elants_i2c - avoid divide by 0 errors on bad touchscreen data
  USB: serial: ch341: fix open and resume after B0
  USB: serial: ch341: fix control-message error handling
  USB: serial: ch341: fix open error handling
  USB: serial: ch341: fix initial modem-control state
  USB: serial: kl5kusb105: fix line-state error handling
  nl80211: fix sched scan netlink socket owner destruction
  KVM: x86: Introduce segmented_write_std
  KVM: x86: emulate FXSAVE and FXRSTOR
  KVM: x86: add asm_safe wrapper
  KVM: x86: add Align16 instruction flag
  KVM: x86: flush pending lapic jump label updates on module unload
  jump_labels: API for flushing deferred jump label updates
  KVM: eventfd: fix NULL deref irqbypass consumer
  KVM: x86: fix emulation of "MOV SS, null selector"
  mm/hugetlb.c: fix reservation race when freeing surplus pages
  ocfs2: fix crash caused by stale lvb with fsdlm plugin
  mm: fix devm_memremap_pages crash, use mem_hotplug_{begin, done}
  selftests: do not require bash for the generated test
  selftests: do not require bash to run netsocktests testcase
  Input: i8042 - add Pegatron touchpad to noloop table
  Input: xpad - use correct product id for x360w controllers
  DEBUG: sched/fair: Fix sched_load_avg_cpu events for task_groups
  DEBUG: sched/fair: Fix missing sched_load_avg_cpu events
  net: socket: don't set sk_uid to garbage value in ->setattr()
  ANDROID: configs: CONFIG_ARM64_SW_TTBR0_PAN=y
  UPSTREAM: arm64: Disable PAN on uaccess_enable()
  UPSTREAM: arm64: Enable CONFIG_ARM64_SW_TTBR0_PAN
  UPSTREAM: arm64: xen: Enable user access before a privcmd hvc call
  UPSTREAM: arm64: Handle faults caused by inadvertent user access with PAN enabled
  BACKPORT: arm64: Disable TTBR0_EL1 during normal kernel execution
  BACKPORT: arm64: Introduce uaccess_{disable,enable} functionality based on TTBR0_EL1
  BACKPORT: arm64: Factor out TTBR0_EL1 post-update workaround into a specific asm macro
  BACKPORT: arm64: Factor out PAN enabling/disabling into separate uaccess_* macros
  UPSTREAM: arm64: alternative: add auto-nop infrastructure
  UPSTREAM: arm64: barriers: introduce nops and __nops macros for NOP sequences
  Revert "FROMLIST: arm64: Factor out PAN enabling/disabling into separate uaccess_* macros"
  Revert "FROMLIST: arm64: Factor out TTBR0_EL1 post-update workaround into a specific asm macro"
  Revert "FROMLIST: arm64: Introduce uaccess_{disable,enable} functionality based on TTBR0_EL1"
  Revert "FROMLIST: arm64: Disable TTBR0_EL1 during normal kernel execution"
  Revert "FROMLIST: arm64: Handle faults caused by inadvertent user access with PAN enabled"
  Revert "FROMLIST: arm64: xen: Enable user access before a privcmd hvc call"
  Revert "FROMLIST: arm64: Enable CONFIG_ARM64_SW_TTBR0_PAN"
  ANDROID: sched/walt: fix build failure if FAIR_GROUP_SCHED=n
  Linux 4.4.43
  mm/init: fix zone boundary creation
  ALSA: usb-audio: Add a quirk for Plantronics BT600
  spi: mvebu: fix baudrate calculation for armada variant
  ARM: OMAP4+: Fix bad fallthrough for cpuidle
  ARM: zynq: Reserve correct amount of non-DMA RAM
  powerpc: Fix build warning on 32-bit PPC
  ALSA: firewire-tascam: Fix to handle error from initialization of stream data
  HID: hid-cypress: validate length of report
  net: vrf: do not allow table id 0
  net: ipv4: Fix multipath selection with vrf
  gro: Disable frag0 optimization on IPv6 ext headers
  gro: use min_t() in skb_gro_reset_offset()
  gro: Enter slow-path if there is no tailroom
  r8152: fix rx issue for runtime suspend
  r8152: split rtl8152_suspend function
  ipv4: Do not allow MAIN to be alias for new LOCAL w/ custom rules
  igmp: Make igmp group member RFC 3376 compliant
  drop_monitor: consider inserted data in genlmsg_end
  drop_monitor: add missing call to genlmsg_end
  net/mlx5: Avoid shadowing numa_node
  net/mlx5: Check FW limitations on log_max_qp before setting it
  net: stmmac: Fix race between stmmac_drv_probe and stmmac_open
  net, sched: fix soft lockup in tc_classify
  ipv6: handle -EFAULT from skb_copy_bits
  net: vrf: Drop conntrack data after pass through VRF device on Tx
  ser_gigaset: return -ENOMEM on error instead of success
  netvsc: reduce maximum GSO size
  Linux 4.4.42
  usb: gadget: composite: always set ep->mult to a sensible value
  Revert "usb: gadget: composite: always set ep->mult to a sensible value"
  tick/broadcast: Prevent NULL pointer dereference
  drm/radeon: Always store CRTC relative radeon_crtc->cursor_x/y values
  cx23885-dvb: move initialization of a8293_pdata
  net: vxge: avoid unused function warnings
  net: ti: cpmac: Fix compiler warning due to type confusion
  cred/userns: define current_user_ns() as a function
  staging: comedi: dt282x: tidy up register bit defines
  powerpc/pci/rpadlpar: Fix device reference leaks
  md: MD_RECOVERY_NEEDED is set for mddev->recovery
  crypto: arm64/aes-ce - fix for big endian
  crypto: arm64/aes-xts-ce: fix for big endian
  crypto: arm64/sha1-ce - fix for big endian
  crypto: arm64/aes-neon - fix for big endian
  crypto: arm64/aes-ccm-ce: fix for big endian
  crypto: arm/aes-ce - fix for big endian
  crypto: arm64/ghash-ce - fix for big endian
  crypto: arm64/sha2-ce - fix for big endian
  s390/crypto: unlock on error in prng_tdes_read()
  mmc: mmc_test: Uninitialized return value
  PM / wakeirq: Fix dedicated wakeirq for drivers not using autosuspend
  irqchip/bcm7038-l1: Implement irq_cpu_offline() callback
  target/iscsi: Fix double free in lio_target_tiqn_addtpg()
  scsi: mvsas: fix command_active typo
  ASoC: samsung: i2s: Fixup last IRQ unsafe spin lock call
  iommu/vt-d: Flush old iommu caches for kdump when the device gets context mapped
  iommu/vt-d: Fix pasid table size encoding
  iommu/amd: Fix the left value check of cmd buffer
  iommu/amd: Missing error code in amd_iommu_init_device()
  clk: imx31: fix rewritten input argument of mx31_clocks_init()
  clk: clk-wm831x: fix a logic error
  hwmon: (g762) Fix overflows and crash seen when writing limit attributes
  hwmon: (nct7802) Fix overflows seen when writing into limit attributes
  hwmon: (ds620) Fix overflows seen when writing temperature limits
  hwmon: (amc6821) sign extension temperature
  hwmon: (scpi) Fix module autoload
  cris: Only build flash rescue image if CONFIG_ETRAX_AXISFLASHMAP is selected
  ath10k: use the right length of "background"
  stable-fixup: hotplug: fix unused function warning
  usb: dwc3: ep0: explicitly call dwc3_ep0_prepare_one_trb()
  usb: dwc3: ep0: add dwc3_ep0_prepare_one_trb()
  usb: dwc3: gadget: always unmap EP0 requests
  staging: iio: ad7606: fix improper setting of oversampling pins
  mei: bus: fix mei_cldev_enable KDoc
  USB: serial: io_ti: bind to interface after fw download
  USB: phy: am335x-control: fix device and of_node leaks
  ARM: dts: r8a7794: Correct hsusb parent clock
  USB: serial: kl5kusb105: abort on open exception path
  ALSA: usb-audio: Fix bogus error return in snd_usb_create_stream()
  usb: musb: blackfin: add bfin_fifo_offset in bfin_ops
  usb: hub: Move hub_port_disable() to fix warning if PM is disabled
  usb: musb: Fix trying to free already-free IRQ 4
  usb: dwc3: pci: add Intel Gemini Lake PCI ID
  xhci: Fix race related to abort operation
  xhci: Use delayed_work instead of timer for command timeout
  usb: xhci-mem: use passed in GFP flags instead of GFP_KERNEL
  USB: serial: mos7720: fix parallel probe
  USB: serial: mos7720: fix parport use-after-free on probe errors
  USB: serial: mos7720: fix use-after-free on probe errors
  USB: serial: mos7720: fix NULL-deref at open
  USB: serial: mos7840: fix NULL-deref at open
  USB: serial: kobil_sct: fix NULL-deref in write
  USB: serial: cyberjack: fix NULL-deref at open
  USB: serial: oti6858: fix NULL-deref at open
  USB: serial: io_edgeport: fix NULL-deref at open
  USB: serial: ti_usb_3410_5052: fix NULL-deref at open
  USB: serial: garmin_gps: fix memory leak on failed URB submit
  USB: serial: iuu_phoenix: fix NULL-deref at open
  USB: serial: io_ti: fix I/O after disconnect
  USB: serial: io_ti: fix another NULL-deref at open
  USB: serial: io_ti: fix NULL-deref at open
  USB: serial: spcp8x5: fix NULL-deref at open
  USB: serial: keyspan_pda: verify endpoints at probe
  USB: serial: pl2303: fix NULL-deref at open
  USB: serial: quatech2: fix sleep-while-atomic in close
  USB: serial: omninet: fix NULL-derefs at open and disconnect
  usb: xhci: hold lock over xhci_abort_cmd_ring()
  xhci: Handle command completion and timeout race
  usb: host: xhci: Fix possible wild pointer when handling abort command
  usb: xhci: fix return value of xhci_setup_device()
  xhci: free xhci virtual devices with leaf nodes first
  usb: xhci: apply XHCI_PME_STUCK_QUIRK to Intel Apollo Lake
  xhci: workaround for hosts missing CAS bit
  usb: xhci: fix possible wild pointer
  usb: dwc3: core: avoid Overflow events
  usb: gadget: composite: Test get_alt() presence instead of set_alt()
  USB: dummy-hcd: fix bug in stop_activity (handle ep0)
  USB: fix problems with duplicate endpoint addresses
  USB: gadgetfs: fix checks of wTotalLength in config descriptors
  USB: gadgetfs: fix use-after-free bug
  USB: gadgetfs: fix unbounded memory allocation bug
  usb: gadgetfs: restrict upper bound on device configuration size
  usb: storage: unusual_uas: Add JMicron JMS56x to unusual device
  usb: musb: dsps: implement clear_ep_rxintr() callback
  usb: musb: core: add clear_ep_rxintr() to musb_platform_ops
  KVM: MIPS: Flush KVM entry code from icache globally
  KVM: x86: reset MMU on KVM_SET_VCPU_EVENTS
  mac80211: initialize fast-xmit 'info' later
  ARM: davinci: da850: don't add emac clock to lookup table twice
  ALSA: usb-audio: Fix irq/process data synchronization
  ALSA: hda - Apply asus-mode8 fixup to ASUS X71SL
  ALSA: hda - Fix up GPIO for ASUS ROG Ranger
  Linux 4.4.41
  net: mvpp2: fix dma unmapping of TX buffers for fragments
  sg_write()/bsg_write() is not fit to be called under KERNEL_DS
  kconfig/nconf: Fix hang when editing symbol with a long prompt
  target/user: Fix use-after-free of tcmu_cmds if they are expired
  powerpc: Convert cmp to cmpd in idle enter sequence
  powerpc/ps3: Fix system hang with GCC 5 builds
  nfs_write_end(): fix handling of short copies
  libceph: verify authorize reply on connect
  PCI: Check for PME in targeted sleep state
  Input: drv260x - fix input device's parent assignment
  media: solo6x10: fix lockup by avoiding delayed register write
  IB/cma: Fix a race condition in iboe_addr_get_sgid()
  IB/multicast: Check ib_find_pkey() return value
  IPoIB: Avoid reading an uninitialized member variable
  IB/mad: Fix an array index check
  fgraph: Handle a case where a tracer ignores set_graph_notrace
  platform/x86: asus-nb-wmi.c: Add X45U quirk
  ftrace/x86_32: Set ftrace_stub to weak to prevent gcc from using short jumps to it
  kvm: nVMX: Allow L1 to intercept software exceptions (#BP and #OF)
  KVM: PPC: Book3S HV: Don't lose hardware R/C bit updates in H_PROTECT
  KVM: PPC: Book3S HV: Save/restore XER in checkpointed register state
  md/raid5: limit request size according to implementation limits
  sc16is7xx: Drop bogus use of IRQF_ONESHOT
  s390/vmlogrdr: fix IUCV buffer allocation
  firmware: fix usermode helper fallback loading
  ARC: mm: arc700: Don't assume 2 colours for aliasing VIPT dcache
  scsi: avoid a permanent stop of the scsi device's request queue
  scsi: zfcp: fix rport unblock race with LUN recovery
  scsi: zfcp: do not trace pure benign residual HBA responses at default level
  scsi: zfcp: fix use-after-"free" in FC ingress path after TMF
  scsi: megaraid_sas: Do not set MPI2_TYPE_CUDA for JBOD FP path for FW which does not support JBOD sequence map
  scsi: megaraid_sas: For SRIOV enabled firmware, ensure VF driver waits for 30secs before reset
  vt: fix Scroll Lock LED trigger name
  block: protect iterate_bdevs() against concurrent close
  mei: request async autosuspend at the end of enumeration
  drivers/gpu/drm/ast: Fix infinite loop if read fails
  drm/gma500: Add compat ioctl
  drm/radeon: add additional pci revision to dpm workaround
  drm/radeon: Hide the HW cursor while it's out of bounds
  drm/radeon: Also call cursor_move_locked when the cursor size changes
  drm/nouveau/i2c/gk110b,gm10x: use the correct implementation
  drm/nouveau/fifo/gf100-: protect channel preempt with subdev mutex
  drm/nouveau/ltc: protect clearing of comptags with mutex
  drm/nouveau/bios: require checksum to match for fast acpi shadow method
  drm/nouveau/kms: lvds panel strap moved again on maxwell
  ACPI / video: Add force_native quirk for HP Pavilion dv6
  ACPI / video: Add force_native quirk for Dell XPS 17 L702X
  staging: comedi: ni_mio_common: fix E series ni_ai_insn_read() data
  staging: comedi: ni_mio_common: fix M Series ni_ai_insn_read() data mask
  thermal: hwmon: Properly report critical temperature in sysfs
  clk: bcm2835: Avoid overwriting the div info when disabling a pll_div clk
  timekeeping_Force_unsigned_clocksource_to_nanoseconds_conversion
  regulator: stw481x-vmmc: fix ages old enable error
  mmc: sdhci: Fix recovery from tuning timeout
  ath9k: Really fix LED polarity for some Mini PCI AR9220 MB92 cards.
  cfg80211/mac80211: fix BSS leaks when abandoning assoc attempts
  rtlwifi: Fix enter/exit power_save
  ssb: Fix error routine when fallback SPROM fails
  Linux 4.4.40
  ppp: defer netns reference release for ppp channel
  driver core: fix race between creating/querying glue dir and its cleanup
  xfs: set AGI buffer type in xlog_recover_clear_agi_bucket
  arm/xen: Use alloc_percpu rather than __alloc_percpu
  xen/gntdev: Use VM_MIXEDMAP instead of VM_IO to avoid NUMA balancing
  tpm xen: Remove bogus tpm_chip_unregister
  kernel/debug/debug_core.c: more properly delay for secondary CPUs
  kernel/watchdog: use nmi registers snapshot in hardlockup handler
  CIFS: Fix a possible memory corruption in push locks
  CIFS: Fix missing nls unload in smb2_reconnect()
  CIFS: Fix a possible memory corruption during reconnect
  ASoC: intel: Fix crash at suspend/resume without card registration
  dm space map metadata: fix 'struct sm_metadata' leak on failed create
  dm crypt: mark key as invalid until properly loaded
  dm flakey: return -EINVAL on interval bounds error in flakey_ctr()
  blk-mq: Do not invoke .queue_rq() for a stopped queue
  usb: gadget: composite: always set ep->mult to a sensible value
  exec: Ensure mm->user_ns contains the execed files
  fs: exec: apply CLOEXEC before changing dumpable task flags
  mm/vmscan.c: set correct defer count for shrinker
  loop: return proper error from loop_queue_rq()
  f2fs: set ->owner for debugfs status file's file_operations
  ext4: do not perform data journaling when data is encrypted
  ext4: return -ENOMEM instead of success
  ext4: reject inodes with negative size
  ext4: add sanity checking to count_overhead()
  ext4: fix in-superblock mount options processing
  ext4: use more strict checks for inodes_per_block on mount
  ext4: fix stack memory corruption with 64k block size
  ext4: fix mballoc breakage with 64k block size
  crypto: caam - fix AEAD givenc descriptors
  ptrace: Capture the ptracer's creds not PT_PTRACE_CAP
  mm: Add a user_ns owner to mm_struct and fix ptrace permission checks
  block_dev: don't test bdev->bd_contains when it is not stable
  btrfs: make file clone aware of fatal signals
  Btrfs: don't BUG() during drop snapshot
  Btrfs: fix memory leak in do_walk_down
  Btrfs: don't leak reloc root nodes on error
  Btrfs: return gracefully from balance if fs tree is corrupted
  Btrfs: bail out if block group has different mixed flag
  Btrfs: fix memory leak in reading btree blocks
  clk: ti: omap36xx: Work around sprz319 advisory 2.1
  ALSA: hda: when comparing pin configurations, ignore assoc in addition to seq
  ALSA: hda - Gate the mic jack on HP Z1 Gen3 AiO
  ALSA: hda - fix headset-mic problem on a Dell laptop
  ALSA: hda - ignore the assoc and seq when comparing pin configurations
  ALSA: hda/ca0132 - Add quirk for Alienware 15 R2 2016
  ALSA: hiface: Fix M2Tech hiFace driver sampling rate change
  ALSA: usb-audio: Add QuickCam Communicate Deluxe/S7500 to volume_control_quirks
  USB: UHCI: report non-PME wakeup signalling for Intel hardware
  usb: gadget: composite: correctly initialize ep->maxpacket
  usb: gadget: f_uac2: fix error handling at afunc_bind
  usb: hub: Fix auto-remount of safely removed or ejected USB-3 devices
  USB: cdc-acm: add device id for GW Instek AFG-125
  USB: serial: kl5kusb105: fix open error path
  USB: serial: option: add dlink dwm-158
  USB: serial: option: add support for Telit LE922A PIDs 0x1040, 0x1041
  Btrfs: fix qgroup rescan worker initialization
  btrfs: store and load values of stripes_min/stripes_max in balance status item
  Btrfs: fix tree search logic when replaying directory entry deletes
  btrfs: limit async_work allocation and worker func duration
  ANDROID: trace: net: use %pK for kernel pointers
  ANDROID: android-base: Enable QUOTA related configs
  net: ipv4: Don't crash if passing a null sk to ip_rt_update_pmtu.
  net: inet: Support UID-based routing in IP protocols.
  Revert "net: ipv6: fix virtual tunneling build"
  net: core: add UID to flows, rules, and routes
  net: core: Add a UID field to struct sock.
  Revert "net: core: Support UID-based routing."
  Revert "net: core: Handle 'sk' being NULL in UID-based routing"
  Revert "ANDROID: net: fix 'const' warnings"
  Revert "ANDROID: net: fib: remove duplicate assignment"
  Revert "ANDROID: net: core: fix UID-based routing"
  UPSTREAM: efi/arm64: Don't apply MEMBLOCK_NOMAP to UEFI memory map mapping
  UPSTREAM: arm64: enable CONFIG_DEBUG_RODATA by default
  goldfish: enable CONFIG_INET_DIAG_DESTROY
  sched/walt: kill {min,max}_capacity
  sched: fix wrong truncation of walt_avg
  ANDROID: dm verity: add minimum prefetch size
  Linux 4.4.39
  crypto: rsa - Add Makefile dependencies to fix parallel builds
  hotplug: Make register and unregister notifier API symmetric
  batman-adv: Check for alloc errors when preparing TT local data
  m68k: Fix ndelay() macro
  arm64: futex.h: Add missing PAN toggling
  can: peak: fix bad memory access and free sequence
  can: raw: raw_setsockopt: limit number of can_filter that can be set
  crypto: mcryptd - Check mcryptd algorithm compatibility
  perf/x86: Fix full width counter, counter overflow
  locking/rtmutex: Use READ_ONCE() in rt_mutex_owner()
  locking/rtmutex: Prevent dequeue vs. unlock race
  zram: restrict add/remove attributes to root only
  parisc: Fix TLB related boot crash on SMP machines
  parisc: Remove unnecessary TLB purges from flush_dcache_page_asm and flush_icache_page_asm
  parisc: Purge TLB before setting PTE
  powerpc/eeh: Fix deadlock when PE frozen state can't be cleared

Conflicts:
	arch/arm64/kernel/traps.c
	drivers/usb/dwc3/core.h
	drivers/usb/dwc3/ep0.c
	drivers/usb/gadget/function/f_fs.c
	drivers/usb/host/xhci-mem.c
	drivers/usb/host/xhci-ring.c
	drivers/usb/host/xhci.c
	drivers/video/fbdev/core/fbcmap.c
	include/trace/events/sched.h
	mm/vmscan.c

Change-Id: I3faa0010ecb98972cd8e6470377a493b56d95f89
Signed-off-by: Blagovest Kolenichev <bkolenichev@codeaurora.org>
Signed-off-by: Runmin Wang <runminw@codeaurora.org>
2017-03-18 08:55:10 -07:00
Alex Shi
35194db1b7 Merge branch 'linux-linaro-lsk-v4.4' into linux-linaro-lsk-v4.4-android 2016-12-20 13:48:11 +08:00
Michal Hocko
1c0f4e0ebb hotplug: Make register and unregister notifier API symmetric
commit 777c6e0daebb3fcefbbd6f620410a946b07ef6d0 upstream.

Yu Zhao has noticed that __unregister_cpu_notifier only unregisters its
notifiers when HOTPLUG_CPU=y while the registration might succeed even
when HOTPLUG_CPU=n if MODULE is enabled. This means that e.g. zswap
might keep a stale notifier on the list on the manual clean up during
the pool tear down and thus corrupt the list. Resulting in the following

[  144.964346] BUG: unable to handle kernel paging request at ffff880658a2be78
[  144.971337] IP: [<ffffffffa290b00b>] raw_notifier_chain_register+0x1b/0x40
<snipped>
[  145.122628] Call Trace:
[  145.125086]  [<ffffffffa28e5cf8>] __register_cpu_notifier+0x18/0x20
[  145.131350]  [<ffffffffa2a5dd73>] zswap_pool_create+0x273/0x400
[  145.137268]  [<ffffffffa2a5e0fc>] __zswap_param_set+0x1fc/0x300
[  145.143188]  [<ffffffffa2944c1d>] ? trace_hardirqs_on+0xd/0x10
[  145.149018]  [<ffffffffa2908798>] ? kernel_param_lock+0x28/0x30
[  145.154940]  [<ffffffffa2a3e8cf>] ? __might_fault+0x4f/0xa0
[  145.160511]  [<ffffffffa2a5e237>] zswap_compressor_param_set+0x17/0x20
[  145.167035]  [<ffffffffa2908d3c>] param_attr_store+0x5c/0xb0
[  145.172694]  [<ffffffffa290848d>] module_attr_store+0x1d/0x30
[  145.178443]  [<ffffffffa2b2b41f>] sysfs_kf_write+0x4f/0x70
[  145.183925]  [<ffffffffa2b2a5b9>] kernfs_fop_write+0x149/0x180
[  145.189761]  [<ffffffffa2a99248>] __vfs_write+0x18/0x40
[  145.194982]  [<ffffffffa2a9a412>] vfs_write+0xb2/0x1a0
[  145.200122]  [<ffffffffa2a9a732>] SyS_write+0x52/0xa0
[  145.205177]  [<ffffffffa2ff4d97>] entry_SYSCALL_64_fastpath+0x12/0x17

This can be even triggered manually by changing
/sys/module/zswap/parameters/compressor multiple times.

Fix this issue by making unregister APIs symmetric to the register so
there are no surprises.

Fixes: 47e627bc8c ("[PATCH] hotplug: Allow modules to use the cpu hotplug notifiers even if !CONFIG_HOTPLUG_CPU")
Reported-and-tested-by: Yu Zhao <yuzhao@google.com>
Signed-off-by: Michal Hocko <mhocko@suse.com>
Cc: linux-mm@kvack.org
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: Dan Streetman <ddstreet@ieee.org>
Link: http://lkml.kernel.org/r/20161207135438.4310-1-mhocko@kernel.org
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2016-12-15 08:49:23 -08:00
Andres Oportus
66ce6b8ab6 Revert HMP
Revert "sched/tune: add sysctl interface to define a boost value"
Revert "sched: Initialize HMP stats inside init_sd_lb_stats()"
Revert "sched: Fix integer overflow in sched_update_nr_prod()"
Revert "sched: Add a device tree property to specify the sched boost type"
Revert "sched: Add a stub function for init_clusters()"
Revert "sched: add a knob to prefer the waker CPU for sync wakeups"
Revert "sched: Fix a division by zero bug in scale_exec_time()"
Revert "sched: Fix CPU selection when all online CPUs are isolated"
Revert "sched: don't assume higher capacity means higher power in lb"
Revert "sched/core_ctl: Integrate core control with cpu isolation"
Revert "sched/core_ctl: Refactor cpu data"
Revert "trace: Move core control trace events to scheduler"
Revert "core_ctrl: Move core control into kernel"
Revert "sched/core: Add trace point for cpu isolation"
Revert "sched: add cpu isolation support"
Revert "sched: constrain HMP scheduler tunable range with in better way"
Revert "sched: panic on corrupted stack end"
Revert "sched: Move data structures under CONFIG_SCHED_HMP"
Revert "sched: Further re-factor HMP specific code"
Revert "sched: Make use of sysctl_sched_wake_to_idle in select_best_cpu"
Revert "sched: Introduce sched_freq_aggregate_threshold tunable"
Revert "sched: handle frequency alert notifications better"
Revert "sched: inherit the group id from the group leader"
Revert "sched/fair: Add flag to indicate why we picked the CPU"
Revert "sched: Move notify_migration() under CONFIG_SCHED_HMP"
Revert "sched: Move most HMP specific code to a separate file."
Revert "sched: Consolidate CONFIG_SCHED_HMP sections in various files"
Revert "sched: Fix compile issues for !CONFIG_SCHED_HMP"
Revert "sched: Remove all existence of CONFIG_SCHED_FREQ_INPUT"
Revert "sched: Move CPU cstate tracking under CONFIG_SCHED_HMP"
Revert "sched: Remove unused PELT extensions for HMP scheduling"
Revert "sched: Remove unused migration notifier code."
Revert "Revert "arm64: Add support for app specific settings""
Revert "sched/fair: Don't check for migration for a pinned task"
Revert "sched/core: Fix uninitialized variable used for tracepoint"
Revert "sched/core: Fix null-pointer dereference"
Revert "sched: break the forever prev_cpu selection preference"
Revert "sched: core: Fix possible hotplug race in set_cpus_allowed_ptr"
Revert "sched: kill unnecessary divisions on fast path"
Revert "sched: prevent race where update CPU cycles"
Revert "sched: fix overflow in scaled execution time calculation"
Revert "sched: remove unused parameter cpu from cpu_cycles_to_freq()"
Revert "sched: avoid potential race between governor and thermal driver"
Revert "sched: fix potential deflated frequency estimation during IRQ handling"
Revert "sched: fix CPU frequency estimation while idle"
Revert "sched: preserve CPU cycle counter in rq"
Revert "arm64: Add support for app specific settings"
Revert "Revert "sched: warn/panic upon excessive scheduling latency""
Revert "Revert "sched: add scheduling latency tracking procfs node""
Revert "sched: eliminate sched_early_detection_duration knob"
Revert "sched: Remove the sched heavy task frequency guidance feature"
Revert "sched: eliminate sched_migration_fixup knob"
Revert "sched: eliminate sched_upmigrate_min_nice knob"
Revert "sched: eliminate sched_enable_power_aware knob and parameter"
Revert "sched: eliminate sched_freq_account_wait_time knob"
Revert "sched: eliminate sched_account_wait_time knob"
Revert "sched: Aggregate for frequency"
Revert "sched: simplify CPU frequency estimation and cycle counter API"
Revert "sched: use correct Kconfig macro name CONFIG_SCHED_HMP_CSTATE_AWARE"
Revert "Revert "sched: set HMP scheduler's default initial task load to 100%""
Revert "watchdog: introduce touch_softlockup_watchdog_sched()"
Revert "sched/cgroup: Fix/cleanup cgroup teardown/init"
Revert "sched: take into account of limited CPU min and max frequencies"
Revert "sched: add support for CPU frequency estimation with cycle counter"
Revert "sched: revise sched_boost to make the best of big cluster CPUs"
Revert "sched: fix excessive task packing where CONFIG_SCHED_HMP_CSTATE_AWARE=y"
Revert "sched: add option whether CPU C-state is used to guide task placement"
Revert "sched: update placement logic to prefer C-state and busier CPUs"
Revert "sched: Optimize wakeup placement logic when need_idle is set"
Revert "kernel: sched: Fix compilation issues for Usermode Linux"
Revert "sched/cputime: Fix steal time accounting vs. CPU hotplug"
Revert "sched/cputime: Fix steal_account_process_tick() to always return jiffies"
Revert "sched: fix circular dependency of rq->lock and kswadp waitqueue lock"
Revert "sched: move out migration notification out of spinlock"
Revert "sched: fix compile failure with !CONFIG_SCHED_HMP"
Revert "sched: restrict sync wakee placement bias with waker's demand"
Revert "sched: add preference for waker cluster CPU in wakee task placement"
Revert "sched/core: Add protection against null-pointer dereference"
Revert "sched: allow select_prev_cpu_us to be set to values greater than 100us"
Revert "sched: clean up idle task's mark_start restoring in init_idle()"
Revert "sched: let sched_boost take precedence over sched_restrict_cluster_spill"
Revert "sched: Add separate load tracking histogram to predict loads"
Revert "sched: Provide a wake up API without sending freq notifications"
Revert "sched: Take downmigrate threshold into consideration"
Revert "sched: Provide a facility to restrict RT tasks to lower power cluster"
Revert "sched: Take cluster's minimum power into account for optimizing sbc()"
Revert "sched: Revise the inter cluster load balance restrictions"
Revert "sched: colocate related threads"
Revert "sched: Update fair and rt placement logic to use scheduler clusters"
Revert "sched: Introduce the concept CPU clusters in the scheduler"
Revert "sched: remove init_new_task_load from CONFIG_SMP"
Revert "sched: Export sched_setscheduler_nocheck()"
Revert "Revert "sched: Export sched_setscheduler_nocheck""
Revert "vmstat: make vmstat_updater deferrable again and shut down on idle"
Revert "sched: fix compile failure where !CONFIG_SCHED_HMP"
Revert "sched: select task's prev_cpu as the best CPU when it was chosen recently"
Revert "sched: use ktime instead of sched_clock for load tracking"
Revert "sched: Update min/max capacity for the CPUFREQ_CREATE_POLICY notifier"
Revert "sched/cputime: fix a deadlock on 32bit systems"
Revert "sched: Optimize scheduler trace events to reduce trace buffer usage"
Revert "sched: initialize frequency domain cpumask"
Revert "sched: print sched_task_load always"
Revert "sched: add preference for prev and sibling CPU in RT task placement"
Revert "sched: core: Don't use current task_cpu when migrating with stop_one_cpu"
Revert "sched: Notify cpufreq governor early about potential big tasks"
Revert "sched: Skip resetting HMP stats when max frequencies remain unchanged"
Revert "sched: update sched_task_load trace event"
Revert "sched: avoid unnecessary multiplication and division"
Revert "sched: precompute required frequency for CPU load"
Revert "sched: clean up fixup_hmp_sched_stats()"
Revert "sched: account new task load so that governor can apply different policy"
Revert "sched: Fix frequency change checks when affined tasks are migrating"
Revert "sched: Add tunables for static cpu and cluster cost"
Revert "sched/core: Add API to set cluster d-state"
Revert "sched: take into account of governor's frequency max load"
Revert "sched: set HMP scheduler's default initial task load to 100%"
Revert "sched: add preference for prev and sibling CPU in HMP task placement"
Revert "sched: Update task->on_rq when tasks are moving between runqueues"
Revert "sched: remove temporary demand fixups in fixup_busy_time()"
Revert "sched: add frequency zone awareness to the load balancer"
Revert "sched: Update the wakeup placement logic for fair and rt tasks"
Revert "sched: remove the notion of small tasks and small task packing"
Revert "sched: Rework energy aware scheduling"
Revert "sched: encourage idle load balance and discourage active load balance"
Revert "sched: avoid stale cumulative_runnable_avg HMP statistics"
Revert "sched: Add load based placement for RT tasks"
Revert "sched: Avoid running idle_balance() consecutively"
Revert "sched: inline function scale_load_to_cpu()"
Revert "sched: look for least busy and fallback CPU only when it's needed"
Revert "sched: iterate search CPUs starting from prev_cpu for optimization"
Revert "sched: Optimize the select_best_cpu() "for" loop"
Revert "sched: Optimize select_best_cpu() to reduce execution time"
Revert "sched/debug: Add Kconfig to trigger panics on all 'BUG:' conditions"
Revert "sched: fix incorrect prev_runnable_sum accounting with long ISR run"
Revert "sched: prevent task migration while governor queries CPUs' load"
Revert "sched: report loads greater than 100% only during load alert notifications"
Revert "sched: turn off the TTWU_QUEUE feature"
Revert "sched: avoid unnecessary HMP scheduler stat re-accounting"
Revert "sched/fair: Fix capacity and nr_run comparisons in can_migrate_task()"
Revert "Revert "sched: Use only partial wait time as task demand""
Revert "sched/deadline: Add basic HMP extensions"
Revert "sched: Fix racy invocation of fixup_busy_time via move_queued_task"
Revert "sched: don't inflate the task load when the CPU max freq is restricted"
Revert "sched: auto adjust the upmigrate and downmigrate thresholds"
Revert "sched: don't inherit initial task load from the parent"
Revert "sched/fair: Add irq load awareness to the tick CPU selection logic"
Revert "sched: disable IRQs in update_min_max_capacity"
Revert "sched: Use only partial wait time as task demand"
Revert "sched: fix race conditions where HMP tunables change"
Revert "sched: check HMP scheduler tunables validity"
Revert "sched: Update max_capacity when an entire cluster is hotplugged"
Revert "sched: Ensure attempting load balance when HMP active balance flags are set"
Revert "sched: add scheduling latency tracking procfs node"
Revert "sched: warn/panic upon excessive scheduling latency"
Revert "sched/core: Fix incorrect wait time and wait count statistics"
Revert "sched: Update cur_freq in the cpufreq policy notifier callback"
Revert "sched: avoid CPUs with high irq activity for non-small tasks"
Revert "sched: actively migrate big tasks on power CPU to idle performance CPU"
Revert "sched: Add cgroup-based criteria for upmigration"
Revert "sched: avoid running idle_balance() on behalf of wrong CPU"
Revert "sched: Keep track of average nr_big_tasks"
Revert "sched: Fix bug in average nr_running and nr_iowait calculation"
Revert "sched: Avoid pulling all tasks from a CPU during load balance"
Revert "sched: Avoid pulling big tasks to the little cluster during load balance"
Revert "sched: fix rounding error on scaled execution time calculation"
Revert "sched/fair: Respect wake to idle over sync wakeup"
Revert "sched: Support CFS_BANDWIDTH feature in HMP scheduler"
Revert "sched: Consolidate hmp stats into their own struct"
Revert "sched: Add userspace interface to set PF_WAKE_UP_IDLE"
Revert "sched_avg: add run queue averaging"
Revert "sched: add sched feature FORCE_CPU_THROTTLING_IMMINENT"
Revert "sched: continue to search less power efficient cpu for load balancer"
Revert "sched: Update cur_freq for offline CPUs in notifier callback"
Revert "sched: Fix overflow in max possible capacity calculation"
Revert "sched: add preference for prev_cpu in HMP task placement"
Revert "sched: Per-cpu prefer_idle flag"
Revert "sched: Consider PF_WAKE_UP_IDLE in select_best_cpu()"
Revert "sched: Add sysctl to enable power aware scheduling"
Revert "sched: Ensure no active EA migration occurs when EA is disabled"
Revert "sched: take account of irq preemption when calculating irqload delta"
Revert "sched: Prevent race conditions where upmigrate_min_nice changes"
Revert "sched: Avoid frequent task migration due to EA in lb"
Revert "sched: Avoid migrating tasks to little cores due to EA"
Revert "sched: Add temperature to cpu_load trace point"
Revert "sched: Only do EA migration when CPU throttling is imminent"
Revert "sched: Avoid frequent migration of running task"
Revert "sched: treat sync waker CPUs with 1 task as idle"
Revert "sched: extend sched_task_load tracepoint to indicate prefer_idle"
Revert "sched: extend sched_task_load tracepoint to indicate sync wakeup"
Revert "sched: add sync wakeup recognition in select_best_cpu"
Revert "sched: Provide knob to prefer mostly_idle over idle cpus"
Revert "sched: make sched_cpu_high_irqload a runtime tunable"
Revert "sched: trace: extend sched_cpu_load to print irqload"
Revert "sched: avoid CPUs with high irq activity"
Revert "sched: refresh sched_clock() after acquiring rq lock in irq path"
Revert "sched: track soft/hard irqload per-RQ with decaying avg"
Revert "sched: do not set window until sched_clock is fully initialized"
Revert "sched: Make RT tasks eligible for boost"
Revert "sched: Limit LBF_PWR_ACTIVE_BALANCE to within cluster"
Revert "sched: Packing support until a frequency threshold"
Revert "sched: tighten up jiffy to sched_clock mapping"
Revert "sched: Avoid unnecessary load balance when tasks don't fit on dst_cpu"
Revert "sched: print sched_cpu_load tracepoint for all CPUs"
Revert "sched: per-cpu mostly_idle threshold"
Revert "sched: Add API to set task's initial task load"
Revert "sched: use C-states in non-small task wakeup placement logic"
Revert "sched: take rq lock prior to saving idle task's mark_start"
Revert "sched: update governor notification logic"
Revert "sched: window-stats: Retain idle thread's mark_start"
Revert "sched: Add checks for frequency change"
Revert "sched: Use absolute scale for notifying governor"
Revert "sched: window-stats: Enhance cpu busy time accounting"
Revert "sched: window-stats: ftrace event improvements"
Revert "sched: improve logic for alerting governor"
Revert "sched: Stop task migration to busy CPUs due to power active balance"
Revert "sched: window-stats: Fix accounting bug in legacy mode"
Revert "sched: window-stats: Note legacy mode in fork() and exit()"
Revert "sched: Fix reference to stale task_struct in try_to_wake_up()"
Revert "sched: Remove hack to enable/disable HMP scheduling extensions"
Revert "sched: fix wrong load_scale_factor/capacity/nr_big/small_tasks"
Revert "sched: add check for cpu idleness when using C-state information"
Revert "sched: extend sched_task_load tracepoint to indicate small tasks"
Revert "sched: Add C-state tracking to the sched_cpu_load trace event"
Revert "sched: window-stats: add a new AVG policy"
Revert "sched: Fix compile error"
Revert "sched: update ld_moved for active balance from the load balancer"
Revert "sched: actively migrate tasks to idle big CPUs during sched boost"
Revert "sched: always do idle balance with a NEWLY_IDLE idle environment"
Revert "sched: fix bail condition in bail_inter_cluster_balance()"
Revert "sched: Initialize env->loop variable to 0"
Revert "sched: window-stats: use policy_mutex in sched_set_window()"
Revert "sched: window-stats: Avoid taking all cpu's rq->lock for long"
Revert "sched: window_stats: Add "disable" mode support"
Revert "sched: window-stats: Fix exit race"
Revert "sched: window-stats: code cleanup"
Revert "sched: window-stats: legacy mode"
Revert "sched: window-stats: Code cleanup"
Revert "sched: window-stats: Code cleanup"
Revert "sched: window-stats: Code cleanup"
Revert "sched: window-stats: Remove unused prev_window variable"
Revert "sched: disable frequency notifications by default"
Revert "sched: fix misalignment between requested and actual windows"
Revert "sched: Make RAVG_HIST_SIZE tunable"
Revert "sched: Fix possibility of "stuck" reserved flag"
Revert "sched: initialize env->flags variable to 0"
Revert "sched: window-stats: 64-bit type for curr/prev_runnable_sum"
Revert "sched: window-stats: Allow acct_wait_time to be tuned"
Revert "sched: window-stats: Account interrupt handling time as busy time"
Revert "sched: window-stats: Account idle time as busy time"
Revert "sched: window-stats: Account wait time"
Revert "sched: window-stats: update task demand on tick"
Revert "sched: Fix herding issue"
Revert "sched: window-stats: print window size in /proc/sched_debug"
Revert "sched: Extend ftrace event to record boost and reason code"
Revert "sched: Avoid needless migration"
Revert "sched: Drop active balance request upon cpu going offline"
Revert "sched: trigger immediate migration of tasks upon boost"
Revert "sched: Extend boost benefit for small and low-prio tasks"
Revert "sched: window-stats: Handle policy change properly"
Revert "sched: window-stats: Reset all window stats"
Revert "sched: window-stats: Additional error checking in sched_set_window()"
Revert "sched: window-stats: Fix incorrect calculation of partial_demand"
Revert "sched: window-stats: Fix potential wrong use of rq"
Revert "sched: set initial task load to just above a small task"
Revert "sched/fair: Check whether any CPUs are available"
Revert "sched: enable hmp, power aware scheduling for targets with > 4 CPUs"
Revert "sched: remove sysctl control for HMP and power-aware task placement"
Revert "sched: support legacy mode better"
Revert "sched: code cleanup"
Revert "sched: Add BUG_ON when task_cpu() is incorrect"
Revert "sched: avoid active migration of tasks not in TASK_RUNNING state"
Revert "sched: fix up task load during migration"
Revert "sched: avoid pushing tasks to an offline CPU"
Revert "sched: Add a per rq max_possible_capacity for use in power calculations"
Revert "sched: Disable interrupts when holding the rq lock in sched_get_busy()"
Revert "sched: Make wallclock more accurate"
Revert "sched: Make task and CPU load calculations safe from truncation"
Revert "sched/fair: Introduce C-state aware task placement for small tasks"
Revert "sched/fair: Introduce scheduler boost for low latency workloads"
Revert "sched: Move call to trace_sched_cpu_load()"
Revert "sched: fair: Reset balance_interval before sending NOHZ kick"
Revert "sched: Avoid active migration of small tasks"
Revert "sched: Account for cpu's current frequency when calculating its power cost"
Revert "sched: make sched_set_window() return failure when PELT is in use"
Revert "sched: debug: Print additional information in /proc/sched_debug"
Revert "sched: Move around code"
Revert "sched: Update capacity of all online cpus when min_max_freq changes"
Revert "sched: update task statistics when CPU frequency changes"
Revert "sched: Add new trace events"
Revert "sched: do not balance on exec if SCHED_HMP"
Revert "sched: Use historical load for freq governor input"
Revert "sched: window-stats: apply scaling to full elapsed windows"
Revert "sched: notify cpufreq on over/underprovisioned CPUs"
Revert "sched: Introduce spill threshold tunables to manage overcommitment"
Revert "sched: add affinity, task load information to sched tracepoints"
Revert "sched: add migration load change notifier for frequency guidance"
Revert "sched/fair: Limit MAX_PINNED_INTERVAL for more frequent load balancing"
Revert "sched/fair: Help out higher capacity CPUs when they are overcommitted"
Revert "sched/rt: Introduce power aware scheduling for real time tasks"
Revert "sched: balance power inefficient CPUs with one task"
Revert "sched: check for power inefficient task placement in tick"
Revert "sched: do nohz load balancing in order of power efficiency"
Revert "sched: run idle_balance() on most power-efficient CPU"
Revert "sched: add hook for platform-specific CPU power information"
Revert "sched: add power aware scheduling sysctl"
Revert "sched: Extend update_task_ravg() to accept wallclock as argument"
Revert "sched: add sched_get_busy, sched_set_window APIs"
Revert "sched: window-stats: adjust RQ curr, prev sums on task migration"
Revert "sched: window-stats: Add aggregated runqueue windowed stats"
Revert "sched: window-stats: add prev_window counter per-task"
Revert "sched: window-stats: synchronize windows across cpus"
Revert "sched: window-stats: Do not account wait time"
Revert "sched: window-stats: update during migration and earlier at wakeup"
Revert "sched: move definition of update_task_ravg()"
Revert "sched: Switch to windows based load stats by default"
Revert "sched: Provide tunable to switch between PELT and window-based stats"
Revert "sched: Provide scaled load information for tasks in /proc"
Revert "sched: Add additional ftrace events"
Revert "sched: Extend /proc/sched_debug with additional information"
Revert "sched: Tighten controls for tasks spillover to idle cluster"
Revert "sched: Track number of big and small tasks on a cpu"
Revert "sched: Handle cpu-bound tasks stuck on wrong cpu"
Revert "sched: Extend active balance to accept 'push_task' argument"
Revert "sched: Send NOHZ kick to idle cpu in same cluster"
Revert "sched: Basic task placement support for HMP systems"
Revert "sched: Use rq->efficiency in scaling load stats"
Revert "sched: Introduce efficiency, load_scale_factor and capacity"
Revert "sched: Add CONFIG_SCHED_HMP Kconfig option"
Revert "sched: Add scaled task load statistics"
Revert "sched: Introduce CONFIG_SCHED_FREQ_INPUT"
Revert "sched: window-based load stats improvements"
Revert "sched: Add min_max_freq and rq->max_possible_freq"
Revert "sched: move task load based functions"
Revert "sched: fix race between try_to_wake_up() and move_task()"
Revert "sched: Skip load update for idle task"
Revert "sched: Window-based load stat improvements"
Revert "sched: Call the notify_on_migrate notifier chain for wakeups as well"
Revert "cpufreq: cpu-boost: Introduce scheduler assisted load based syncs"
Revert "sched: window-based load stats for tasks"
Revert "sched: Make scheduler aware of cpu frequency state"
Revert "sched/debug: Make sysrq prints of sched debug data optional"
Revert "tracing/sched: add load balancer tracepoint"
Revert "sched: change WARN_ON_ONCE to printk_deferred() in try_to_wake_up_local()"
Revert "tracing/sched: Track per-cpu rt and non-rt cpu_load."
Revert "sched: re-calculate a cpu's next_balance point upon sched domain changes"
Revert "sched: provide per cpu-cgroup option to notify on migrations"
Revert "sched: Fix SCHED_HRTICK bug leading to late preemption of tasks"
Revert "kernel: reduce sleep duration in wait_task_inactive"
Revert "sched: add sysctl for controlling task migrations on wake"
Revert "sched/rt: Add Kconfig option to enable panicking for RT throttling"
Revert "sched/rt: print RT tasks when RT throttling is activated"
Revert "sched: add PF_WAKE_UP_IDLE"
Revert "sched: Make the scheduler aware of C-state for cpus"
Revert "sched: Fix crash in sched_init_numa()"
Revert "cpufreq: interactive: New 'interactive' governor"
Revert "drivers: cpuidle: lpm-levels: Notify sched of idle state entry/exit"
Revert "arm64: topology: Add support for topology DT bindings"
Revert "clk: msm: clock-osm: register cycle counter callbacks with
scheduler"
Revert "arm64: fpsimd: Enable FP(floating-point) settings for msm8996"
Documentation: remove sched-hmp and sched-zone docs
sched: Add a set_wake_up_idle dummy implementation
driver: thermal: remove call to sched
defconfig: remove HMP related config

Change-Id: Icfc908d8e5414499642c2dffb59a7d6496392b0d
Signed-off-by: Andres Oportus <andresoportus@google.com>
2016-10-26 10:30:58 -07:00
Steve Muckle
1e19d2f48f sched: add hook for platform-specific CPU power information
To enable power-aware scheduling, provide a hook/infrastructure
for platforms to communicate CPU power requirements for each
supported CPU frequency. This information is then used to estimate
the cost of running a task on a given CPU.

Currently, an assumption is made that the task will be running
by itself on the CPU. Given the current policy tries to spread
tasks as much as possible this assumption should not be too
far off.

Change-Id: I19f1fa760a0d43222d2880f8aec0508c468b39bb
Signed-off-by: Steve Muckle <smuckle@codeaurora.org>
Signed-off-by: Srivatsa Vaddagiri <vatsa@codeaurora.org>
[joonwoop@codeaurora.org: return rq->capacity as power cost with
 sched_use_pelt=1.  se.avg.runnable_avg_period is deprecated and
 power_cost() will be changed by subsequent change anyway./
Signed-off-by: Joonwoo Park <joonwoop@codeaurora.org>
2016-03-23 19:59:22 -07:00
Todd Poynor
90fbee8f97 Move x86_64 idle notifiers to generic
Move the x86_64 idle notifiers originally by Andi Kleen and Venkatesh
Pallipadi to generic.

Change-Id: Idf29cda15be151f494ff245933c12462643388d5
Acked-by: Nicolas Pitre <nicolas.pitre@linaro.org>
Signed-off-by: Todd Poynor <toddpoynor@google.com>
2016-02-16 13:52:32 -08:00
Paul E. McKenney
02ef3c4a2a cpu: Remove try_get_online_cpus()
Now that synchronize_sched_expedited() no longer uses it, there are
no users of try_get_online_cpus() in mainline.  This commit therefore
removes it.

Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
2015-10-07 16:02:49 -07:00
Nicolas Iooss
8db1486065 include, lib: add __printf attributes to several function prototypes
Using __printf attributes helps to detect several format string issues
at compile time (even though -Wformat-security is currently disabled in
Makefile).  For example it can detect when formatting a pointer as a
number, like the issue fixed in commit a3fa71c40f ("wl18xx: show
rx_frames_per_rates as an array as it really is"), or when the arguments
do not match the format string, c.f.  for example commit 5ce1aca814
("reiserfs: fix __RASSERT format string").

To prevent similar bugs in the future, add a __printf attribute to every
function prototype which needs one in include/linux/ and lib/.  These
functions were mostly found by using gcc's -Wsuggest-attribute=format
flag.

Signed-off-by: Nicolas Iooss <nicolas.iooss_linux@m4x.org>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: Felipe Balbi <balbi@ti.com>
Cc: Joel Becker <jlbec@evilplan.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2015-07-17 16:39:53 -07:00
Ingo Molnar
590ee7dbd5 cpu: Provide smpboot_thread_init() on !CONFIG_SMP kernels as well
Now that we are using smpboot_thread_init() in init/main.c as well,
provide it for !CONFIG_SMP as well.

This addresses a !CONFIG_SMP build failure.

Cc: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Cc: Borislav Petkov <bp@suse.de>
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: linux-kernel@vger.kernel.org
Signed-off-by: Ingo Molnar <mingo@kernel.org>
2015-04-13 10:19:30 +02:00
Paul E. McKenney
00df35f991 cpu: Defer smpboot kthread unparking until CPU known to scheduler
Currently, smpboot_unpark_threads() is invoked before the incoming CPU
has been added to the scheduler's runqueue structures.  This might
potentially cause the unparked kthread to run on the wrong CPU, since the
correct CPU isn't fully set up yet.

That causes a sporadic, hard to debug boot crash triggering on some
systems, reported by Borislav Petkov, and bisected down to:

  2a442c9c64 ("x86: Use common outgoing-CPU-notification code")

This patch places smpboot_unpark_threads() in a CPU hotplug
notifier with priority set so that these kthreads are unparked just after
the CPU has been added to the runqueues.

Reported-and-tested-by: Borislav Petkov <bp@suse.de>
Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: linux-kernel@vger.kernel.org
Signed-off-by: Ingo Molnar <mingo@kernel.org>
2015-04-13 08:25:16 +02:00
Paul E. McKenney
88428cc5c2 rcu: Handle outgoing CPUs on exit from idle loop
This commit informs RCU of an outgoing CPU just before that CPU invokes
arch_cpu_idle_dead() during its last pass through the idle loop (via a
new CPU_DYING_IDLE notifier value).  This change means that RCU need not
deal with outgoing CPUs passing through the scheduler after informing
RCU that they are no longer online.  Note that removing the CPU from
the rcu_node ->qsmaskinit bit masks is done at CPU_DYING_IDLE time,
and orphaning callbacks is still done at CPU_DEAD time, the reason being
that at CPU_DEAD time we have another CPU that can adopt them.

Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
2015-03-12 15:19:38 -07:00
Paul E. McKenney
8038dad7e8 smpboot: Add common code for notification from dying CPU
RCU ignores offlined CPUs, so they cannot safely run RCU read-side code.
(They -can- use SRCU, but not RCU.)  This means that any use of RCU
during or after the call to arch_cpu_idle_dead().  Unfortunately,
commit 2ed53c0d6c added a complete() call, which will contain RCU
read-side critical sections if there is a task waiting to be awakened.

Which, as it turns out, there almost never is.  In my qemu/KVM testing,
the to-be-awakened task is not yet asleep more than 99.5% of the time.
In current mainline, failure is even harder to reproduce, requiring a
virtualized environment that delays the outgoing CPU by at least three
jiffies between the time it exits its stop_machine() task at CPU_DYING
time and the time it calls arch_cpu_idle_dead() from the idle loop.
However, this problem really can occur, especially in virtualized
environments, and therefore really does need to be fixed

This suggests moving back to the polling loop, but using a much shorter
wait, with gentle exponential backoff instead of the old 100-millisecond
wait.  Most of the time, the loop will exit without waiting at all,
and almost all of the remaining uses will wait only five microseconds.
If the outgoing CPU is preempted, a loop will wait one jiffy, then
increase the wait by a factor of 11/10ths, rounding up.  As before, there
is a five-second timeout.

This commit therefore provides common-code infrastructure to do the
dying-to-surviving CPU handoff in a safe manner.  This code also
provides an indication at CPU-online of whether the CPU to be onlined
previously timed out on offline.  The new cpu_check_up_prepare() function
returns -EBUSY if this CPU previously took more than five seconds to
go offline, or -EAGAIN if it has not yet managed to go offline.  The
rationale for -EAGAIN is that it might still be preempted, so an additional
wait might well find it correctly offlined.  Architecture-specific code
can decide how to handle these conditions.  Systems in which CPUs take
themselves completely offline might respond to an -EBUSY return as if
it was a zero (success) return.  Systems in which the surviving CPU must
take some action might take it at this time, or might simply mark the
other CPU as unusable.

Note that architectures that take the easy way out and simply pass the
-EBUSY and -EAGAIN upwards will change the sysfs API.

Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Cc: <linux-api@vger.kernel.org>
Cc: <linux-arch@vger.kernel.org>
[ paulmck: Fixed state machine for architectures that don't check earlier
  CPU-hotplug results as suggested by James Hogan. ]
2015-03-11 13:20:25 -07:00
Sudeep Holla
3d52943b3a drivers: base: add cpu_device_create to support per-cpu devices
This patch adds a new function to create per-cpu devices.
This helps in:
1. reusing the device infrastructure to create any cpu related
   attributes and corresponding sysfs instead of creating and
   dealing with raw kobjects directly
2. retaining the legacy path(/sys/devices/system/cpu/..) to support
   existing sysfs ABI
3. avoiding to create links in the bus directory pointing to the
   device as there would be per-cpu instance of these devices with
   the same name since dev->bus is not populated to cpu_sysbus on
   purpose

Signed-off-by: Sudeep Holla <sudeep.holla@arm.com>
Tested-by: Stephen Boyd <sboyd@codeaurora.org>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: David Herrmann <dh.herrmann@gmail.com>
Cc: Kay Sievers <kay@vrfy.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2014-11-07 11:45:00 -08:00
Paul E. McKenney
dd56af42bd rcu: Eliminate deadlock between CPU hotplug and expedited grace periods
Currently, the expedited grace-period primitives do get_online_cpus().
This greatly simplifies their implementation, but means that calls
to them holding locks that are acquired by CPU-hotplug notifiers (to
say nothing of calls to these primitives from CPU-hotplug notifiers)
can deadlock.  But this is starting to become inconvenient, as can be
seen here: https://lkml.org/lkml/2014/8/5/754.  The problem in this
case is that some developers need to acquire a mutex from a CPU-hotplug
notifier, but also need to hold it across a synchronize_rcu_expedited().
As noted above, this currently results in deadlock.

This commit avoids the deadlock and retains the simplicity by creating
a try_get_online_cpus(), which returns false if the get_online_cpus()
reference count could not immediately be incremented.  If a call to
try_get_online_cpus() returns true, the expedited primitives operate as
before.  If a call returns false, the expedited primitives fall back to
normal grace-period operations.  This falling back of course results in
increased grace-period latency, but only during times when CPU hotplug
operations are actually in flight.  The effect should therefore be
negligible during normal operation.

Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Cc: Josh Triplett <josh@joshtriplett.org>
Cc: "Rafael J. Wysocki" <rjw@rjwysocki.net>
Tested-by: Lan Tianyu <tianyu.lan@intel.com>
2014-09-18 16:22:27 -07:00
Geert Uytterhoeven
ae022622ae idle: remove cpu_idle() forward declarations
After all architectures were converted to the generic idle framework,
commit d190e8195b ("idle: Remove GENERIC_IDLE_LOOP config switch")
removed the last caller of cpu_idle().  The forward declarations in
header files were forgotten.

Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
Cc: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2014-06-06 16:08:18 -07:00
Linus Torvalds
467a9e1633 Merge tag 'cpu-hotplug-3.15-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm
Pull CPU hotplug notifiers registration fixes from Rafael Wysocki:
 "The purpose of this single series of commits from Srivatsa S Bhat
  (with a small piece from Gautham R Shenoy) touching multiple
  subsystems that use CPU hotplug notifiers is to provide a way to
  register them that will not lead to deadlocks with CPU online/offline
  operations as described in the changelog of commit 93ae4f978c ("CPU
  hotplug: Provide lockless versions of callback registration
  functions").

  The first three commits in the series introduce the API and document
  it and the rest simply goes through the users of CPU hotplug notifiers
  and converts them to using the new method"

* tag 'cpu-hotplug-3.15-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm: (52 commits)
  net/iucv/iucv.c: Fix CPU hotplug callback registration
  net/core/flow.c: Fix CPU hotplug callback registration
  mm, zswap: Fix CPU hotplug callback registration
  mm, vmstat: Fix CPU hotplug callback registration
  profile: Fix CPU hotplug callback registration
  trace, ring-buffer: Fix CPU hotplug callback registration
  xen, balloon: Fix CPU hotplug callback registration
  hwmon, via-cputemp: Fix CPU hotplug callback registration
  hwmon, coretemp: Fix CPU hotplug callback registration
  thermal, x86-pkg-temp: Fix CPU hotplug callback registration
  octeon, watchdog: Fix CPU hotplug callback registration
  oprofile, nmi-timer: Fix CPU hotplug callback registration
  intel-idle: Fix CPU hotplug callback registration
  clocksource, dummy-timer: Fix CPU hotplug callback registration
  drivers/base/topology.c: Fix CPU hotplug callback registration
  acpi-cpufreq: Fix CPU hotplug callback registration
  zsmalloc: Fix CPU hotplug callback registration
  scsi, fcoe: Fix CPU hotplug callback registration
  scsi, bnx2fc: Fix CPU hotplug callback registration
  scsi, bnx2i: Fix CPU hotplug callback registration
  ...
2014-04-07 14:55:46 -07:00
Srivatsa S. Bhat
93ae4f978c CPU hotplug: Provide lockless versions of callback registration functions
The following method of CPU hotplug callback registration is not safe
due to the possibility of an ABBA deadlock involving the cpu_add_remove_lock
and the cpu_hotplug.lock.

	get_online_cpus();

	for_each_online_cpu(cpu)
		init_cpu(cpu);

	register_cpu_notifier(&foobar_cpu_notifier);

	put_online_cpus();

The deadlock is shown below:

          CPU 0                                         CPU 1
          -----                                         -----

   Acquire cpu_hotplug.lock
   [via get_online_cpus()]

                                              CPU online/offline operation
                                              takes cpu_add_remove_lock
                                              [via cpu_maps_update_begin()]

   Try to acquire
   cpu_add_remove_lock
   [via register_cpu_notifier()]

                                              CPU online/offline operation
                                              tries to acquire cpu_hotplug.lock
                                              [via cpu_hotplug_begin()]

                            *** DEADLOCK! ***

The problem here is that callback registration takes the locks in one order
whereas the CPU hotplug operations take the same locks in the opposite order.
To avoid this issue and to provide a race-free method to register CPU hotplug
callbacks (along with initialization of already online CPUs), introduce new
variants of the callback registration APIs that simply register the callbacks
without holding the cpu_add_remove_lock during the registration. That way,
we can avoid the ABBA scenario. However, we will need to hold the
cpu_add_remove_lock throughout the entire critical section, to protect updates
to the callback/notifier chain.

This can be achieved by writing the callback registration code as follows:

	cpu_maps_update_begin(); [ or cpu_notifier_register_begin(); see below ]

	for_each_online_cpu(cpu)
		init_cpu(cpu);

	/* This doesn't take the cpu_add_remove_lock */
	__register_cpu_notifier(&foobar_cpu_notifier);

	cpu_maps_update_done();  [ or cpu_notifier_register_done(); see below ]

Note that we can't use get_online_cpus() here instead of cpu_maps_update_begin()
because the cpu_hotplug.lock is dropped during the invocation of CPU_POST_DEAD
notifiers, and hence get_online_cpus() cannot provide the necessary
synchronization to protect the callback/notifier chains against concurrent
reads and writes. On the other hand, since the cpu_add_remove_lock protects
the entire hotplug operation (including CPU_POST_DEAD), we can use
cpu_maps_update_begin/done() to guarantee proper synchronization.

Also, since cpu_maps_update_begin/done() is like a super-set of
get/put_online_cpus(), the former naturally protects the critical sections
from concurrent hotplug operations.

Since the names cpu_maps_update_begin/done() don't make much sense in CPU
hotplug callback registration scenarios, we'll introduce new APIs named
cpu_notifier_register_begin/done() and map them to cpu_maps_update_begin/done().

In summary, introduce the lockless variants of un/register_cpu_notifier() and
also export the cpu_notifier_register_begin/done() APIs for use by modules.
This way, we provide a race-free way to register hotplug callbacks as well as
perform initialization for the CPUs that are already online.

Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Ingo Molnar <mingo@kernel.org>
Acked-by: Oleg Nesterov <oleg@redhat.com>
Acked-by: Toshi Kani <toshi.kani@hp.com>
Reviewed-by: Gautham R. Shenoy <ego@linux.vnet.ibm.com>
Signed-off-by: Srivatsa S. Bhat <srivatsa.bhat@linux.vnet.ibm.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
2014-03-20 13:43:40 +01:00
Ard Biesheuvel
2b9c1f0327 x86: align x86 arch with generic CPU modalias handling
The x86 CPU feature modalias handling existed before it was reimplemented
generically. This patch aligns the x86 handling so that it
(a) reuses some more code that is now generic;
(b) uses the generic format for the modalias module metadata entry, i.e., it
    now uses 'cpu:type:x86,venVVVVfamFFFFmodMMMM:feature:,XXXX,YYYY' instead of
    the 'x86cpu:vendor:VVVV:family:FFFF:model:MMMM:feature:,XXXX,YYYY' that was
    used before.

Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Acked-by: H. Peter Anvin <hpa@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2014-02-18 12:45:38 -08:00
Linus Torvalds
f9300eaaac Merge tag 'pm+acpi-3.13-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm
Pull ACPI and power management updates from Rafael J Wysocki:

 - New power capping framework and the the Intel Running Average Power
   Limit (RAPL) driver using it from Srinivas Pandruvada and Jacob Pan.

 - Addition of the in-kernel switching feature to the arm_big_little
   cpufreq driver from Viresh Kumar and Nicolas Pitre.

 - cpufreq support for iMac G5 from Aaro Koskinen.

 - Baytrail processors support for intel_pstate from Dirk Brandewie.

 - cpufreq support for Midway/ECX-2000 from Mark Langsdorf.

 - ARM vexpress/TC2 cpufreq support from Sudeep KarkadaNagesha.

 - ACPI power management support for the I2C and SPI bus types from Mika
   Westerberg and Lv Zheng.

 - cpufreq core fixes and cleanups from Viresh Kumar, Srivatsa S Bhat,
   Stratos Karafotis, Xiaoguang Chen, Lan Tianyu.

 - cpufreq drivers updates (mostly fixes and cleanups) from Viresh
   Kumar, Aaro Koskinen, Jungseok Lee, Sudeep KarkadaNagesha, Lukasz
   Majewski, Manish Badarkhe, Hans-Christian Egtvedt, Evgeny Kapaev.

 - intel_pstate updates from Dirk Brandewie and Adrian Huang.

 - ACPICA update to version 20130927 includig fixes and cleanups and
   some reduction of divergences between the ACPICA code in the kernel
   and ACPICA upstream in order to improve the automatic ACPICA patch
   generation process.  From Bob Moore, Lv Zheng, Tomasz Nowicki, Naresh
   Bhat, Bjorn Helgaas, David E Box.

 - ACPI IPMI driver fixes and cleanups from Lv Zheng.

 - ACPI hotplug fixes and cleanups from Bjorn Helgaas, Toshi Kani, Zhang
   Yanfei, Rafael J Wysocki.

 - Conversion of the ACPI AC driver to the platform bus type and
   multiple driver fixes and cleanups related to ACPI from Zhang Rui.

 - ACPI processor driver fixes and cleanups from Hanjun Guo, Jiang Liu,
   Bartlomiej Zolnierkiewicz, Mathieu Rhéaume, Rafael J Wysocki.

 - Fixes and cleanups and new blacklist entries related to the ACPI
   video support from Aaron Lu, Felipe Contreras, Lennart Poettering,
   Kirill Tkhai.

 - cpuidle core cleanups from Viresh Kumar and Lorenzo Pieralisi.

 - cpuidle drivers fixes and cleanups from Daniel Lezcano, Jingoo Han,
   Bartlomiej Zolnierkiewicz, Prarit Bhargava.

 - devfreq updates from Sachin Kamat, Dan Carpenter, Manish Badarkhe.

 - Operation Performance Points (OPP) core updates from Nishanth Menon.

 - Runtime power management core fix from Rafael J Wysocki and update
   from Ulf Hansson.

 - Hibernation fixes from Aaron Lu and Rafael J Wysocki.

 - Device suspend/resume lockup detection mechanism from Benoit Goby.

 - Removal of unused proc directories created for various ACPI drivers
   from Lan Tianyu.

 - ACPI LPSS driver fix and new device IDs for the ACPI platform scan
   handler from Heikki Krogerus and Jarkko Nikula.

 - New ACPI _OSI blacklist entry for Toshiba NB100 from Levente Kurusa.

 - Assorted fixes and cleanups related to ACPI from Andy Shevchenko, Al
   Stone, Bartlomiej Zolnierkiewicz, Colin Ian King, Dan Carpenter,
   Felipe Contreras, Jianguo Wu, Lan Tianyu, Yinghai Lu, Mathias Krause,
   Liu Chuansheng.

 - Assorted PM fixes and cleanups from Andy Shevchenko, Thierry Reding,
   Jean-Christophe Plagniol-Villard.

* tag 'pm+acpi-3.13-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm: (386 commits)
  cpufreq: conservative: fix requested_freq reduction issue
  ACPI / hotplug: Consolidate deferred execution of ACPI hotplug routines
  PM / runtime: Use pm_runtime_put_sync() in __device_release_driver()
  ACPI / event: remove unneeded NULL pointer check
  Revert "ACPI / video: Ignore BIOS initial backlight value for HP 250 G1"
  ACPI / video: Quirk initial backlight level 0
  ACPI / video: Fix initial level validity test
  intel_pstate: skip the driver if ACPI has power mgmt option
  PM / hibernate: Avoid overflow in hibernate_preallocate_memory()
  ACPI / hotplug: Do not execute "insert in progress" _OST
  ACPI / hotplug: Carry out PCI root eject directly
  ACPI / hotplug: Merge device hot-removal routines
  ACPI / hotplug: Make acpi_bus_hot_remove_device() internal
  ACPI / hotplug: Simplify device ejection routines
  ACPI / hotplug: Fix handle_root_bridge_removal()
  ACPI / hotplug: Refuse to hot-remove all objects with disabled hotplug
  ACPI / scan: Start matching drivers after trying scan handlers
  ACPI: Remove acpi_pci_slot_init() headers from internal.h
  ACPI / blacklist: fix name of ThinkPad Edge E530
  PowerCap: Fix build error with option -Werror=format-security
  ...

Conflicts:
	arch/arm/mach-omap2/opp.c
	drivers/Kconfig
	drivers/spi/spi.c
2013-11-14 13:41:48 +09:00
David Miller
d1cb9d1af0 of: Make cpu node handling more portable.
Use for_each_node_by_type() to iterate all cpu nodes in the
system.

Provide and overridable function arch_find_n_match_cpu_physical_id,
which sees if the given device node matches 'cpu' and if so sets
'*thread' when non-NULL to the cpu thread number within the core.

The default implementation behaves the same as the existing code.

Add a sparc64 implementation.

Signed-off-by: David S. Miller <davem@davemloft.net>
Tested-by: Sudeep KarkadaNagesha <Sudeep.KarkadaNagesha@arm.com>
Signed-off-by: Grant Likely <grant.likely@linaro.org>
2013-10-15 20:09:10 +01:00
Toshi Kani
6dedcca610 hotplug, powerpc, x86: Remove cpu_hotplug_driver_lock()
cpu_hotplug_driver_lock() serializes CPU online/offline operations
when ARCH_CPU_PROBE_RELEASE is set.  This lock interface is no longer
necessary with the following reason:

 - lock_device_hotplug() now protects CPU online/offline operations,
   including the probe & release interfaces enabled by
   ARCH_CPU_PROBE_RELEASE.  The use of cpu_hotplug_driver_lock() is
   redundant.
 - cpu_hotplug_driver_lock() is only valid when ARCH_CPU_PROBE_RELEASE
   is defined, which is misleading and is only enabled on powerpc.

This patch removes the cpu_hotplug_driver_lock() interface.  As
a result, ARCH_CPU_PROBE_RELEASE only enables / disables the cpu
probe & release interface as intended.  There is no functional change
in this patch.

Signed-off-by: Toshi Kani <toshi.kani@hp.com>
Reviewed-by: Nathan Fontenot <nfont@linux.vnet.ibm.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
2013-09-30 19:55:51 +02:00
Rafael J. Wysocki
7a330a5416 Merge branch 'pm-cpufreq'
* pm-cpufreq: (60 commits)
  cpufreq: pmac32-cpufreq: remove device tree parsing for cpu nodes
  cpufreq: pmac64-cpufreq: remove device tree parsing for cpu nodes
  cpufreq: maple-cpufreq: remove device tree parsing for cpu nodes
  cpufreq: arm_big_little: remove device tree parsing for cpu nodes
  cpufreq: kirkwood-cpufreq: remove device tree parsing for cpu nodes
  cpufreq: spear-cpufreq: remove device tree parsing for cpu nodes
  cpufreq: highbank-cpufreq: remove device tree parsing for cpu nodes
  cpufreq: cpufreq-cpu0: remove device tree parsing for cpu nodes
  cpufreq: imx6q-cpufreq: remove device tree parsing for cpu nodes
  drivers/bus: arm-cci: avoid parsing DT for cpu device nodes
  ARM: mvebu: remove device tree parsing for cpu nodes
  ARM: topology: remove hwid/MPIDR dependency from cpu_capacity
  of/device: add helper to get cpu device node from logical cpu index
  driver/core: cpu: initialize of_node in cpu's device struture
  ARM: DT/kernel: define ARM specific arch_match_cpu_phys_id
  of: move of_get_cpu_node implementation to DT core library
  powerpc: refactor of_get_cpu_node to support other architectures
  openrisc: remove undefined of_get_cpu_node declaration
  microblaze: remove undefined of_get_cpu_node declaration
  cpufreq: fix bad unlock balance on !CONFIG_SMP
  ...
2013-08-27 01:44:40 +02:00
Sudeep KarkadaNagesha
183912d352 of: move of_get_cpu_node implementation to DT core library
This patch moves the generalized implementation of of_get_cpu_node from
PowerPC to DT core library, thereby adding support for retrieving cpu
node for a given logical cpu index on any architecture.

The CPU subsystem can now use this function to assign of_node in the
cpu device while registering CPUs.

It is recommended to use these helper function only in pre-SMP/early
initialisation stages to retrieve CPU device node pointers in logical
ordering. Once the cpu devices are registered, it can be retrieved easily
from cpu device of_node which avoids unnecessary parsing and matching.

Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Cc: Grant Likely <grant.likely@linaro.org>
Acked-by: Rob Herring <rob.herring@calxeda.com>
Signed-off-by: Sudeep KarkadaNagesha <sudeep.karkadanagesha@arm.com>
2013-08-21 10:24:44 +01:00
Toshi Kani
b9d10be7a8 ACPI / processor: Acquire writer lock to update CPU maps
CPU system maps are protected with reader/writer locks.  The reader
lock, get_online_cpus(), assures that the maps are not updated while
holding the lock.  The writer lock, cpu_hotplug_begin(), is used to
udpate the cpu maps along with cpu_maps_update_begin().

However, the ACPI processor handler updates the cpu maps without
holding the the writer lock.

acpi_map_lsapic() is called from acpi_processor_hotadd_init() to
update cpu_possible_mask and cpu_present_mask.  acpi_unmap_lsapic()
is called from acpi_processor_remove() to update cpu_possible_mask.
Currently, they are either unprotected or protected with the reader
lock, which is not correct.

For example, the get_online_cpus() below is supposed to assure that
cpu_possible_mask is not changed while the code is iterating with
for_each_possible_cpu().

        get_online_cpus();
        for_each_possible_cpu(cpu) {
		:
        }
        put_online_cpus();

However, this lock has no protection with CPU hotplug since the ACPI
processor handler does not use the writer lock when it updates
cpu_possible_mask.  The reader lock does not serialize within the
readers.

This patch protects them with the writer lock with cpu_hotplug_begin()
along with cpu_maps_update_begin(), which must be held before calling
cpu_hotplug_begin().  It also protects arch_register_cpu() /
arch_unregister_cpu(), which creates / deletes a sysfs cpu device
interface.  For this purpose it changes cpu_hotplug_begin() and
cpu_hotplug_done() to global and exports them in cpu.h.

Signed-off-by: Toshi Kani <toshi.kani@hp.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
2013-08-13 12:20:16 +02:00
Paul Gortmaker
0db0628d90 kernel: delete __cpuinit usage from all core kernel files
The __cpuinit type of throwaway sections might have made sense
some time ago when RAM was more constrained, but now the savings
do not offset the cost and complications.  For example, the fix in
commit 5e427ec2d0 ("x86: Fix bit corruption at CPU resume time")
is a good example of the nasty type of bugs that can be created
with improper use of the various __init prefixes.

After a discussion on LKML[1] it was decided that cpuinit should go
the way of devinit and be phased out.  Once all the users are gone,
we can then finally remove the macros themselves from linux/init.h.

This removes all the uses of the __cpuinit macros from C files in
the core kernel directories (kernel, init, lib, mm, and include)
that don't really have a specific maintainer.

[1] https://lkml.org/lkml/2013/5/20/589

Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com>
2013-07-14 19:36:59 -04:00
Linus Torvalds
80cc38b163 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial
Pull trivial tree updates from Jiri Kosina:
 "The usual stuff from trivial tree"

* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial: (34 commits)
  treewide: relase -> release
  Documentation/cgroups/memory.txt: fix stat file documentation
  sysctl/net.txt: delete reference to obsolete 2.4.x kernel
  spinlock_api_smp.h: fix preprocessor comments
  treewide: Fix typo in printk
  doc: device tree: clarify stuff in usage-model.txt.
  open firmware: "/aliasas" -> "/aliases"
  md: bcache: Fixed a typo with the word 'arithmetic'
  irq/generic-chip: fix a few kernel-doc entries
  frv: Convert use of typedef ctl_table to struct ctl_table
  sgi: xpc: Convert use of typedef ctl_table to struct ctl_table
  doc: clk: Fix incorrect wording
  Documentation/arm/IXP4xx fix a typo
  Documentation/networking/ieee802154 fix a typo
  Documentation/DocBook/media/v4l fix a typo
  Documentation/video4linux/si476x.txt fix a typo
  Documentation/virtual/kvm/api.txt fix a typo
  Documentation/early-userspace/README fix a typo
  Documentation/video4linux/soc-camera.txt fix a typo
  lguest: fix CONFIG_PAE -> CONFIG_x86_PAE in comment
  ...
2013-07-04 11:40:58 -07:00
Srivatsa S. Bhat
16e53dbf10 CPU hotplug: provide a generic helper to disable/enable CPU hotplug
There are instances in the kernel where we would like to disable CPU
hotplug (from sysfs) during some important operation.  Today the freezer
code depends on this and the code to do it was kinda tailor-made for
that.

Restructure the code and make it generic enough to be useful for other
usecases too.

Signed-off-by: Srivatsa S. Bhat <srivatsa.bhat@linux.vnet.ibm.com>
Signed-off-by: Robin Holt <holt@sgi.com>
Cc: H. Peter Anvin <hpa@zytor.com>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: Russ Anderson <rja@sgi.com>
Cc: Robin Holt <holt@sgi.com>
Cc: Russell King <linux@arm.linux.org.uk>
Cc: Guan Xuetao <gxt@mprc.pku.edu.cn>
Cc: Shawn Guo <shawn.guo@linaro.org>
Cc: <stable@vger.kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2013-06-12 16:29:44 -07:00
Robert P. J. Day
611a75e187 include/linux/cpu.h: Update comments to reflect reality
Two minor changes to comments:

* Remove reference to drivers/base/sys.c, removed in 0a962657.
* CPUs are now exported by sysfs via devices/system/cpu.

Signed-off-by: Robert P. J. Day <rpjday@crashcourse.ca>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
2013-05-28 12:02:11 +02:00
Thomas Gleixner
d166991234 idle: Implement generic idle function
All idle functions in arch/* are more or less the same, plus minus a
few bugs and extra instrumentation, tickless support and other
optional items.

Implement a generic idle function which resembles the functionality
found in arch/. Provide weak arch_cpu_idle_* functions which can be
overridden by the architecture code if needed.

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Rusty Russell <rusty@rustcorp.com.au>
Cc: Paul McKenney <paulmck@linux.vnet.ibm.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Reviewed-by: Cc: Srivatsa S. Bhat <srivatsa.bhat@linux.vnet.ibm.com>
Cc: Magnus Damm <magnus.damm@gmail.com>
Link: http://lkml.kernel.org/r/20130321215233.646635455@linutronix.de
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
2013-04-08 17:39:23 +02:00
Thomas Gleixner
a1a04ec3c7 idle: Provide a generic entry point for the idle code
For now this calls cpu_idle(), but in the long run we want to move the
cpu bringup code to the core and therefor we add a state argument.

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Rusty Russell <rusty@rustcorp.com.au>
Cc: Paul McKenney <paulmck@linux.vnet.ibm.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Reviewed-by: Cc: Srivatsa S. Bhat <srivatsa.bhat@linux.vnet.ibm.com>
Cc: Magnus Damm <magnus.damm@gmail.com>
Link: http://lkml.kernel.org/r/20130321215233.583190032@linutronix.de
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
2013-04-08 17:39:23 +02:00
Tejun Heo
6575820221 workqueue: perform cpu down operations from low priority cpu_notifier()
Currently, all workqueue cpu hotplug operations run off
CPU_PRI_WORKQUEUE which is higher than normal notifiers.  This is to
ensure that workqueue is up and running while bringing up a CPU before
other notifiers try to use workqueue on the CPU.

Per-cpu workqueues are supposed to remain working and bound to the CPU
for normal CPU_DOWN_PREPARE notifiers.  This holds mostly true even
with workqueue offlining running with higher priority because
workqueue CPU_DOWN_PREPARE only creates a bound trustee thread which
runs the per-cpu workqueue without concurrency management without
explicitly detaching the existing workers.

However, if the trustee needs to create new workers, it creates
unbound workers which may wander off to other CPUs while
CPU_DOWN_PREPARE notifiers are in progress.  Furthermore, if the CPU
down is cancelled, the per-CPU workqueue may end up with workers which
aren't bound to the CPU.

While reliably reproducible with a convoluted artificial test-case
involving scheduling and flushing CPU burning work items from CPU down
notifiers, this isn't very likely to happen in the wild, and, even
when it happens, the effects are likely to be hidden by the following
successful CPU down.

Fix it by using different priorities for up and down notifiers - high
priority for up operations and low priority for down operations.

Workqueue cpu hotplug operations will soon go through further cleanup.

Signed-off-by: Tejun Heo <tj@kernel.org>
Cc: stable@vger.kernel.org
Acked-by: "Rafael J. Wysocki" <rjw@sisk.pl>
2012-07-17 12:39:26 -07:00
Anton Vorontsov
cb79295e20 cpu: introduce clear_tasks_mm_cpumask() helper
Many architectures clear tasks' mm_cpumask like this:

	read_lock(&tasklist_lock);
	for_each_process(p) {
		if (p->mm)
			cpumask_clear_cpu(cpu, mm_cpumask(p->mm));
	}
	read_unlock(&tasklist_lock);

Depending on the context, the code above may have several problems,
such as:

1. Working with task->mm w/o getting mm or grabing the task lock is
   dangerous as ->mm might disappear (exit_mm() assigns NULL under
   task_lock(), so tasklist lock is not enough).

2. Checking for process->mm is not enough because process' main
   thread may exit or detach its mm via use_mm(), but other threads
   may still have a valid mm.

This patch implements a small helper function that does things
correctly, i.e.:

1. We take the task's lock while whe handle its mm (we can't use
   get_task_mm()/mmput() pair as mmput() might sleep);

2. To catch exited main thread case, we use find_lock_task_mm(),
   which walks up all threads and returns an appropriate task
   (with task lock held).

Also, Per Peter Zijlstra's idea, now we don't grab tasklist_lock in
the new helper, instead we take the rcu read lock. We can do this
because the function is called after the cpu is taken down and marked
offline, so no new tasks will get this cpu set in their mm mask.

Signed-off-by: Anton Vorontsov <anton.vorontsov@linaro.org>
Cc: Richard Weinberger <richard@nod.at>
Cc: Oleg Nesterov <oleg@redhat.com>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Russell King <rmk@arm.linux.org.uk>
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Cc: Mike Frysinger <vapier@gentoo.org>
Cc: Paul Mundt <lethal@linux-sh.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2012-05-31 17:49:29 -07:00
Peter Zijlstra
8e7fbcbc22 sched: Remove stale power aware scheduling remnants and dysfunctional knobs
It's been broken forever (i.e. it's not scheduling in a power
aware fashion), as reported by Suresh and others sending
patches, and nobody cares enough to fix it properly ...
so remove it to make space free for something better.

There's various problems with the code as it stands today, first
and foremost the user interface which is bound to topology
levels and has multiple values per level. This results in a
state explosion which the administrator or distro needs to
master and almost nobody does.

Furthermore large configuration state spaces aren't good, it
means the thing doesn't just work right because it's either
under so many impossibe to meet constraints, or even if
there's an achievable state workloads have to be aware of
it precisely and can never meet it for dynamic workloads.

So pushing this kind of decision to user-space was a bad idea
even with a single knob - it's exponentially worse with knobs
on every node of the topology.

There is a proposal to replace the user interface with a single
3 state knob:

 sched_balance_policy := { performance, power, auto }

where 'auto' would be the preferred default which looks at things
like Battery/AC mode and possible cpufreq state or whatever the hw
exposes to show us power use expectations - but there's been no
progress on it in the past many months.

Aside from that, the actual implementation of the various knobs
is known to be broken. There have been sporadic attempts at
fixing things but these always stop short of reaching a mergable
state.

Therefore this wholesale removal with the hopes of spurring
people who care to come forward once again and work on a
coherent replacement.

Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Suresh Siddha <suresh.b.siddha@intel.com>
Cc: Arjan van de Ven <arjan@linux.intel.com>
Cc: Vincent Guittot <vincent.guittot@linaro.org>
Cc: Vaidyanathan Srinivasan <svaidy@linux.vnet.ibm.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Andrew Morton <akpm@linux-foundation.org>
Link: http://lkml.kernel.org/r/1326104915.2442.53.camel@twins
Signed-off-by: Ingo Molnar <mingo@kernel.org>
2012-05-17 13:48:56 +02:00
Linus Torvalds
250f6715a4 Merge tag 'device-for-3.4' of git://git.kernel.org/pub/scm/linux/kernel/git/paulg/linux
Pull <linux/device.h> avoidance patches from Paul Gortmaker:
 "Nearly every subsystem has some kind of header with a proto like:

	void foo(struct device *dev);

  and yet there is no reason for most of these guys to care about the
  sub fields within the device struct.  This allows us to significantly
  reduce the scope of headers including headers.  For this instance, a
  reduction of about 40% is achieved by replacing the include with the
  simple fact that the device is some kind of a struct.

  Unlike the much larger module.h cleanup, this one is simply two
  commits.  One to fix the implicit <linux/device.h> users, and then one
  to delete the device.h includes from the linux/include/ dir wherever
  possible."

* tag 'device-for-3.4' of git://git.kernel.org/pub/scm/linux/kernel/git/paulg/linux:
  device.h: audit and cleanup users in main include dir
  device.h: cleanup users outside of linux/include (C files)
2012-03-24 10:41:37 -07:00
Paul Gortmaker
313162d0b8 device.h: audit and cleanup users in main include dir
The <linux/device.h> header includes a lot of stuff, and
it in turn gets a lot of use just for the basic "struct device"
which appears so often.

Clean up the users as follows:

1) For those headers only needing "struct device" as a pointer
in fcn args, replace the include with exactly that.

2) For headers not really using anything from device.h, simply
delete the include altogether.

3) For headers relying on getting device.h implicitly before
being included themselves, now explicitly include device.h

4) For files in which doing #1 or #2 uncovers an implicit
dependency on some other header, fix by explicitly adding
the required header(s).

Any C files that were implicitly relying on device.h to be
present have already been dealt with in advance.

Total removals from #1 and #2: 51.  Total additions coming
from #3: 9.  Total other implicit dependencies from #4: 7.

As of 3.3-rc1, there were 110, so a net removal of 42 gives
about a 38% reduction in device.h presence in include/*

Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com>
2012-03-16 10:38:24 -04:00
Thomas Renninger
fad12ac8c8 CPU: Introduce ARCH_HAS_CPU_AUTOPROBE and X86 parts
This patch is based on Andi Kleen's work:
Implement autoprobing/loading of modules serving CPU
specific features (x86cpu autoloading).

And Kay Siever's work to get rid of sysdev cpu structures
and making use of struct device instead.

Before, the cpuid driver had to be loaded to get the x86cpu
autoloading feature. With this patch autoloading works through
the /sys/devices/system/cpu object

Cc: Kay Sievers <kay.sievers@vrfy.org>
Cc: Dave Jones <davej@redhat.com>
Cc: Jens Axboe <axboe@kernel.dk>
Cc: Herbert Xu <herbert@gondor.apana.org.au>
Cc: Huang Ying <ying.huang@intel.com>
Cc: Len Brown <lenb@kernel.org>
Acked-by: Andi Kleen <ak@linux.intel.com>
Signed-off-by: Thomas Renninger <trenn@suse.de>
Acked-by: H. Peter Anvin <hpa@zytor.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2012-01-26 16:49:08 -08:00
Linus Torvalds
7affca3537 Merge branch 'driver-core-next' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core
* 'driver-core-next' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core: (73 commits)
  arm: fix up some samsung merge sysdev conversion problems
  firmware: Fix an oops on reading fw_priv->fw in sysfs loading file
  Drivers:hv: Fix a bug in vmbus_driver_unregister()
  driver core: remove __must_check from device_create_file
  debugfs: add missing #ifdef HAS_IOMEM
  arm: time.h: remove device.h #include
  driver-core: remove sysdev.h usage.
  clockevents: remove sysdev.h
  arm: convert sysdev_class to a regular subsystem
  arm: leds: convert sysdev_class to a regular subsystem
  kobject: remove kset_find_obj_hinted()
  m86k: gpio - convert sysdev_class to a regular subsystem
  mips: txx9_sram - convert sysdev_class to a regular subsystem
  mips: 7segled - convert sysdev_class to a regular subsystem
  sh: dma - convert sysdev_class to a regular subsystem
  sh: intc - convert sysdev_class to a regular subsystem
  power: suspend - convert sysdev_class to a regular subsystem
  power: qe_ic - convert sysdev_class to a regular subsystem
  power: cmm - convert sysdev_class to a regular subsystem
  s390: time - convert sysdev_class to a regular subsystem
  ...

Fix up conflicts with 'struct sysdev' removal from various platform
drivers that got changed:
 - arch/arm/mach-exynos/cpu.c
 - arch/arm/mach-exynos/irq-eint.c
 - arch/arm/mach-s3c64xx/common.c
 - arch/arm/mach-s3c64xx/cpu.c
 - arch/arm/mach-s5p64x0/cpu.c
 - arch/arm/mach-s5pv210/common.c
 - arch/arm/plat-samsung/include/plat/cpu.h
 - arch/powerpc/kernel/sysfs.c
and fix up cpu_is_hotpluggable() as per Greg in include/linux/cpu.h
2012-01-07 12:03:30 -08:00