Merge branch 'dtc-update' into dt/next
This commit is contained in:
@@ -587,7 +587,7 @@ extern int acpi_nvs_for_each_region(int (*func)(__u64, __u64, void *),
|
||||
const struct acpi_device_id *acpi_match_device(const struct acpi_device_id *ids,
|
||||
const struct device *dev);
|
||||
|
||||
void *acpi_get_match_data(const struct device *dev);
|
||||
const void *acpi_device_get_match_data(const struct device *dev);
|
||||
extern bool acpi_driver_match_device(struct device *dev,
|
||||
const struct device_driver *drv);
|
||||
int acpi_device_uevent_modalias(struct device *, struct kobj_uevent_env *);
|
||||
@@ -766,7 +766,7 @@ static inline const struct acpi_device_id *acpi_match_device(
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static inline void *acpi_get_match_data(const struct device *dev)
|
||||
static inline const void *acpi_device_get_match_data(const struct device *dev)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
@@ -49,7 +49,7 @@ struct blk_stat_callback;
|
||||
#define BLKDEV_MIN_RQ 4
|
||||
#define BLKDEV_MAX_RQ 128 /* Default maximum */
|
||||
|
||||
/* Must be consisitent with blk_mq_poll_stats_bkt() */
|
||||
/* Must be consistent with blk_mq_poll_stats_bkt() */
|
||||
#define BLK_MQ_POLL_STATS_BKTS 16
|
||||
|
||||
/*
|
||||
|
@@ -167,8 +167,6 @@
|
||||
|
||||
#if GCC_VERSION >= 40100
|
||||
# define __compiletime_object_size(obj) __builtin_object_size(obj, 0)
|
||||
|
||||
#define __nostackprotector __attribute__((__optimize__("no-stack-protector")))
|
||||
#endif
|
||||
|
||||
#if GCC_VERSION >= 40300
|
||||
@@ -196,6 +194,11 @@
|
||||
#endif /* __CHECKER__ */
|
||||
#endif /* GCC_VERSION >= 40300 */
|
||||
|
||||
#if GCC_VERSION >= 40400
|
||||
#define __optimize(level) __attribute__((__optimize__(level)))
|
||||
#define __nostackprotector __optimize("no-stack-protector")
|
||||
#endif /* GCC_VERSION >= 40400 */
|
||||
|
||||
#if GCC_VERSION >= 40500
|
||||
|
||||
#ifndef __CHECKER__
|
||||
@@ -204,6 +207,15 @@
|
||||
#endif
|
||||
#endif
|
||||
|
||||
/*
|
||||
* calling noreturn functions, __builtin_unreachable() and __builtin_trap()
|
||||
* confuse the stack allocation in gcc, leading to overly large stack
|
||||
* frames, see https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82365
|
||||
*
|
||||
* Adding an empty inline assembly before it works around the problem
|
||||
*/
|
||||
#define barrier_before_unreachable() asm volatile("")
|
||||
|
||||
/*
|
||||
* Mark a position in code as unreachable. This can be used to
|
||||
* suppress control flow warnings after asm blocks that transfer
|
||||
@@ -214,7 +226,11 @@
|
||||
* unreleased. Really, we need to have autoconf for the kernel.
|
||||
*/
|
||||
#define unreachable() \
|
||||
do { annotate_unreachable(); __builtin_unreachable(); } while (0)
|
||||
do { \
|
||||
annotate_unreachable(); \
|
||||
barrier_before_unreachable(); \
|
||||
__builtin_unreachable(); \
|
||||
} while (0)
|
||||
|
||||
/* Mark a function definition as prohibited from being cloned. */
|
||||
#define __noclone __attribute__((__noclone__, __optimize__("no-tracer")))
|
||||
|
@@ -86,6 +86,11 @@ void ftrace_likely_update(struct ftrace_likely_data *f, int val,
|
||||
# define barrier_data(ptr) barrier()
|
||||
#endif
|
||||
|
||||
/* workaround for GCC PR82365 if needed */
|
||||
#ifndef barrier_before_unreachable
|
||||
# define barrier_before_unreachable() do { } while (0)
|
||||
#endif
|
||||
|
||||
/* Unreachable code */
|
||||
#ifdef CONFIG_STACK_VALIDATION
|
||||
/*
|
||||
@@ -277,6 +282,10 @@ unsigned long read_word_at_a_time(const void *addr)
|
||||
|
||||
#endif /* __ASSEMBLY__ */
|
||||
|
||||
#ifndef __optimize
|
||||
# define __optimize(level)
|
||||
#endif
|
||||
|
||||
/* Compile time object size, -1 for unknown */
|
||||
#ifndef __compiletime_object_size
|
||||
# define __compiletime_object_size(obj) -1
|
||||
|
@@ -225,7 +225,7 @@ static inline void cpuidle_coupled_parallel_barrier(struct cpuidle_device *dev,
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_ARCH_HAS_CPU_RELAX
|
||||
#if defined(CONFIG_CPU_IDLE) && defined(CONFIG_ARCH_HAS_CPU_RELAX)
|
||||
void cpuidle_poll_state_init(struct cpuidle_driver *drv);
|
||||
#else
|
||||
static inline void cpuidle_poll_state_init(struct cpuidle_driver *drv) {}
|
||||
|
@@ -170,6 +170,8 @@ static inline unsigned int cpumask_local_spread(unsigned int i, int node)
|
||||
for ((cpu) = 0; (cpu) < 1; (cpu)++, (void)mask)
|
||||
#define for_each_cpu_not(cpu, mask) \
|
||||
for ((cpu) = 0; (cpu) < 1; (cpu)++, (void)mask)
|
||||
#define for_each_cpu_wrap(cpu, mask, start) \
|
||||
for ((cpu) = 0; (cpu) < 1; (cpu)++, (void)mask, (void)(start))
|
||||
#define for_each_cpu_and(cpu, mask, and) \
|
||||
for ((cpu) = 0; (cpu) < 1; (cpu)++, (void)mask, (void)and)
|
||||
#else
|
||||
|
@@ -578,7 +578,7 @@ static inline int dma_mapping_error(struct device *dev, dma_addr_t dma_addr)
|
||||
|
||||
/*
|
||||
* This is a hack for the legacy x86 forbid_dac and iommu_sac_force. Please
|
||||
* don't use this is new code.
|
||||
* don't use this in new code.
|
||||
*/
|
||||
#ifndef arch_dma_supported
|
||||
#define arch_dma_supported(dev, mask) (1)
|
||||
|
@@ -73,8 +73,8 @@ struct fwnode_operations {
|
||||
struct fwnode_handle *(*get)(struct fwnode_handle *fwnode);
|
||||
void (*put)(struct fwnode_handle *fwnode);
|
||||
bool (*device_is_available)(const struct fwnode_handle *fwnode);
|
||||
void *(*device_get_match_data)(const struct fwnode_handle *fwnode,
|
||||
const struct device *dev);
|
||||
const void *(*device_get_match_data)(const struct fwnode_handle *fwnode,
|
||||
const struct device *dev);
|
||||
bool (*property_present)(const struct fwnode_handle *fwnode,
|
||||
const char *propname);
|
||||
int (*property_read_int_array)(const struct fwnode_handle *fwnode,
|
||||
|
@@ -4,6 +4,12 @@
|
||||
|
||||
#include <generated/autoconf.h>
|
||||
|
||||
#ifdef CONFIG_CPU_BIG_ENDIAN
|
||||
#define __BIG_ENDIAN 4321
|
||||
#else
|
||||
#define __LITTLE_ENDIAN 1234
|
||||
#endif
|
||||
|
||||
#define __ARG_PLACEHOLDER_1 0,
|
||||
#define __take_second_arg(__ignored, val, ...) val
|
||||
|
||||
@@ -64,4 +70,7 @@
|
||||
*/
|
||||
#define IS_ENABLED(option) __or(IS_BUILTIN(option), IS_MODULE(option))
|
||||
|
||||
/* Make sure we always have all types and struct attributes defined. */
|
||||
#include <linux/compiler_types.h>
|
||||
|
||||
#endif /* __LINUX_KCONFIG_H */
|
||||
|
@@ -10,6 +10,7 @@ enum kcore_type {
|
||||
KCORE_VMALLOC,
|
||||
KCORE_RAM,
|
||||
KCORE_VMEMMAP,
|
||||
KCORE_USER,
|
||||
KCORE_OTHER,
|
||||
};
|
||||
|
||||
|
@@ -1,6 +1,6 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 */
|
||||
#ifndef _LIBFDT_ENV_H
|
||||
#define _LIBFDT_ENV_H
|
||||
#ifndef LIBFDT_ENV_H
|
||||
#define LIBFDT_ENV_H
|
||||
|
||||
#include <linux/string.h>
|
||||
|
||||
@@ -15,4 +15,4 @@ typedef __be64 fdt64_t;
|
||||
#define fdt64_to_cpu(x) be64_to_cpu(x)
|
||||
#define cpu_to_fdt64(x) cpu_to_be64(x)
|
||||
|
||||
#endif /* _LIBFDT_ENV_H */
|
||||
#endif /* LIBFDT_ENV_H */
|
||||
|
@@ -523,9 +523,11 @@ static inline void __mod_memcg_state(struct mem_cgroup *memcg,
|
||||
static inline void mod_memcg_state(struct mem_cgroup *memcg,
|
||||
int idx, int val)
|
||||
{
|
||||
preempt_disable();
|
||||
unsigned long flags;
|
||||
|
||||
local_irq_save(flags);
|
||||
__mod_memcg_state(memcg, idx, val);
|
||||
preempt_enable();
|
||||
local_irq_restore(flags);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -606,9 +608,11 @@ static inline void __mod_lruvec_state(struct lruvec *lruvec,
|
||||
static inline void mod_lruvec_state(struct lruvec *lruvec,
|
||||
enum node_stat_item idx, int val)
|
||||
{
|
||||
preempt_disable();
|
||||
unsigned long flags;
|
||||
|
||||
local_irq_save(flags);
|
||||
__mod_lruvec_state(lruvec, idx, val);
|
||||
preempt_enable();
|
||||
local_irq_restore(flags);
|
||||
}
|
||||
|
||||
static inline void __mod_lruvec_page_state(struct page *page,
|
||||
@@ -630,9 +634,11 @@ static inline void __mod_lruvec_page_state(struct page *page,
|
||||
static inline void mod_lruvec_page_state(struct page *page,
|
||||
enum node_stat_item idx, int val)
|
||||
{
|
||||
preempt_disable();
|
||||
unsigned long flags;
|
||||
|
||||
local_irq_save(flags);
|
||||
__mod_lruvec_page_state(page, idx, val);
|
||||
preempt_enable();
|
||||
local_irq_restore(flags);
|
||||
}
|
||||
|
||||
unsigned long mem_cgroup_soft_limit_reclaim(pg_data_t *pgdat, int order,
|
||||
@@ -659,9 +665,11 @@ static inline void __count_memcg_events(struct mem_cgroup *memcg,
|
||||
static inline void count_memcg_events(struct mem_cgroup *memcg,
|
||||
int idx, unsigned long count)
|
||||
{
|
||||
preempt_disable();
|
||||
unsigned long flags;
|
||||
|
||||
local_irq_save(flags);
|
||||
__count_memcg_events(memcg, idx, count);
|
||||
preempt_enable();
|
||||
local_irq_restore(flags);
|
||||
}
|
||||
|
||||
/* idx can be of type enum memcg_event_item or vm_event_item */
|
||||
|
@@ -127,10 +127,4 @@ static __always_inline enum lru_list page_lru(struct page *page)
|
||||
|
||||
#define lru_to_page(head) (list_entry((head)->prev, struct page, lru))
|
||||
|
||||
#ifdef arch_unmap_kpfn
|
||||
extern void arch_unmap_kpfn(unsigned long pfn);
|
||||
#else
|
||||
static __always_inline void arch_unmap_kpfn(unsigned long pfn) { }
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
@@ -66,6 +66,11 @@ struct mutex {
|
||||
#endif
|
||||
};
|
||||
|
||||
/*
|
||||
* Internal helper function; C doesn't allow us to hide it :/
|
||||
*
|
||||
* DO NOT USE (outside of mutex code).
|
||||
*/
|
||||
static inline struct task_struct *__mutex_owner(struct mutex *lock)
|
||||
{
|
||||
return (struct task_struct *)(atomic_long_read(&lock->owner) & ~0x07);
|
||||
|
@@ -19,20 +19,6 @@
|
||||
static inline unsigned long array_index_mask_nospec(unsigned long index,
|
||||
unsigned long size)
|
||||
{
|
||||
/*
|
||||
* Warn developers about inappropriate array_index_nospec() usage.
|
||||
*
|
||||
* Even if the CPU speculates past the WARN_ONCE branch, the
|
||||
* sign bit of @index is taken into account when generating the
|
||||
* mask.
|
||||
*
|
||||
* This warning is compiled out when the compiler can infer that
|
||||
* @index and @size are less than LONG_MAX.
|
||||
*/
|
||||
if (WARN_ONCE(index > LONG_MAX || size > LONG_MAX,
|
||||
"array_index_nospec() limited to range of [0, LONG_MAX]\n"))
|
||||
return 0;
|
||||
|
||||
/*
|
||||
* Always calculate and emit the mask even if the compiler
|
||||
* thinks the mask is not needed. The compiler does not take
|
||||
@@ -43,6 +29,26 @@ static inline unsigned long array_index_mask_nospec(unsigned long index,
|
||||
}
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Warn developers about inappropriate array_index_nospec() usage.
|
||||
*
|
||||
* Even if the CPU speculates past the WARN_ONCE branch, the
|
||||
* sign bit of @index is taken into account when generating the
|
||||
* mask.
|
||||
*
|
||||
* This warning is compiled out when the compiler can infer that
|
||||
* @index and @size are less than LONG_MAX.
|
||||
*/
|
||||
#define array_index_mask_nospec_check(index, size) \
|
||||
({ \
|
||||
if (WARN_ONCE(index > LONG_MAX || size > LONG_MAX, \
|
||||
"array_index_nospec() limited to range of [0, LONG_MAX]\n")) \
|
||||
_mask = 0; \
|
||||
else \
|
||||
_mask = array_index_mask_nospec(index, size); \
|
||||
_mask; \
|
||||
})
|
||||
|
||||
/*
|
||||
* array_index_nospec - sanitize an array index after a bounds check
|
||||
*
|
||||
@@ -61,7 +67,7 @@ static inline unsigned long array_index_mask_nospec(unsigned long index,
|
||||
({ \
|
||||
typeof(index) _i = (index); \
|
||||
typeof(size) _s = (size); \
|
||||
unsigned long _mask = array_index_mask_nospec(_i, _s); \
|
||||
unsigned long _mask = array_index_mask_nospec_check(_i, _s); \
|
||||
\
|
||||
BUILD_BUG_ON(sizeof(_i) > sizeof(long)); \
|
||||
BUILD_BUG_ON(sizeof(_s) > sizeof(long)); \
|
||||
|
@@ -14,26 +14,10 @@
|
||||
|
||||
#include <linux/interrupt.h>
|
||||
#include <linux/perf_event.h>
|
||||
#include <linux/platform_device.h>
|
||||
#include <linux/sysfs.h>
|
||||
#include <asm/cputype.h>
|
||||
|
||||
/*
|
||||
* struct arm_pmu_platdata - ARM PMU platform data
|
||||
*
|
||||
* @handle_irq: an optional handler which will be called from the
|
||||
* interrupt and passed the address of the low level handler,
|
||||
* and can be used to implement any platform specific handling
|
||||
* before or after calling it.
|
||||
*
|
||||
* @irq_flags: if non-zero, these flags will be passed to request_irq
|
||||
* when requesting interrupts for this PMU device.
|
||||
*/
|
||||
struct arm_pmu_platdata {
|
||||
irqreturn_t (*handle_irq)(int irq, void *dev,
|
||||
irq_handler_t pmu_handler);
|
||||
unsigned long irq_flags;
|
||||
};
|
||||
|
||||
#ifdef CONFIG_ARM_PMU
|
||||
|
||||
/*
|
||||
@@ -92,7 +76,6 @@ enum armpmu_attr_groups {
|
||||
|
||||
struct arm_pmu {
|
||||
struct pmu pmu;
|
||||
cpumask_t active_irqs;
|
||||
cpumask_t supported_cpus;
|
||||
char *name;
|
||||
irqreturn_t (*handle_irq)(int irq_num, void *dev);
|
||||
@@ -174,12 +157,11 @@ static inline int arm_pmu_acpi_probe(armpmu_init_fn init_fn) { return 0; }
|
||||
|
||||
/* Internal functions only for core arm_pmu code */
|
||||
struct arm_pmu *armpmu_alloc(void);
|
||||
struct arm_pmu *armpmu_alloc_atomic(void);
|
||||
void armpmu_free(struct arm_pmu *pmu);
|
||||
int armpmu_register(struct arm_pmu *pmu);
|
||||
int armpmu_request_irqs(struct arm_pmu *armpmu);
|
||||
void armpmu_free_irqs(struct arm_pmu *armpmu);
|
||||
int armpmu_request_irq(struct arm_pmu *armpmu, int cpu);
|
||||
void armpmu_free_irq(struct arm_pmu *armpmu, int cpu);
|
||||
int armpmu_request_irq(int irq, int cpu);
|
||||
void armpmu_free_irq(int irq, int cpu);
|
||||
|
||||
#define ARMV8_PMU_PDEV_NAME "armv8-pmu"
|
||||
|
||||
|
@@ -283,7 +283,7 @@ bool device_dma_supported(struct device *dev);
|
||||
|
||||
enum dev_dma_attr device_get_dma_attr(struct device *dev);
|
||||
|
||||
void *device_get_match_data(struct device *dev);
|
||||
const void *device_get_match_data(struct device *dev);
|
||||
|
||||
int device_get_phy_mode(struct device *dev);
|
||||
|
||||
|
@@ -469,7 +469,7 @@ static inline int ptr_ring_consume_batched_bh(struct ptr_ring *r,
|
||||
*/
|
||||
static inline void **__ptr_ring_init_queue_alloc(unsigned int size, gfp_t gfp)
|
||||
{
|
||||
if (size * sizeof(void *) > KMALLOC_MAX_SIZE)
|
||||
if (size > KMALLOC_MAX_SIZE / sizeof(void *))
|
||||
return NULL;
|
||||
return kvmalloc_array(size, sizeof(void *), gfp | __GFP_ZERO);
|
||||
}
|
||||
|
@@ -36,7 +36,18 @@ static inline void mmgrab(struct mm_struct *mm)
|
||||
atomic_inc(&mm->mm_count);
|
||||
}
|
||||
|
||||
extern void mmdrop(struct mm_struct *mm);
|
||||
extern void __mmdrop(struct mm_struct *mm);
|
||||
|
||||
static inline void mmdrop(struct mm_struct *mm)
|
||||
{
|
||||
/*
|
||||
* The implicit full barrier implied by atomic_dec_and_test() is
|
||||
* required by the membarrier system call before returning to
|
||||
* user-space, after storing to rq->curr.
|
||||
*/
|
||||
if (unlikely(atomic_dec_and_test(&mm->mm_count)))
|
||||
__mmdrop(mm);
|
||||
}
|
||||
|
||||
/**
|
||||
* mmget() - Pin the address space associated with a &struct mm_struct.
|
||||
|
@@ -4,6 +4,7 @@
|
||||
|
||||
#include <linux/uidgid.h>
|
||||
#include <linux/atomic.h>
|
||||
#include <linux/ratelimit.h>
|
||||
|
||||
struct key;
|
||||
|
||||
@@ -41,6 +42,9 @@ struct user_struct {
|
||||
defined(CONFIG_NET)
|
||||
atomic_long_t locked_vm;
|
||||
#endif
|
||||
|
||||
/* Miscellaneous per-user rate limit */
|
||||
struct ratelimit_state ratelimit;
|
||||
};
|
||||
|
||||
extern int uids_sysfs_init(void);
|
||||
|
@@ -4,7 +4,7 @@
|
||||
*
|
||||
* Distributed under the terms of the GNU GPL, version 2
|
||||
*
|
||||
* Please see kernel/semaphore.c for documentation of these functions
|
||||
* Please see kernel/locking/semaphore.c for documentation of these functions
|
||||
*/
|
||||
#ifndef __LINUX_SEMAPHORE_H
|
||||
#define __LINUX_SEMAPHORE_H
|
||||
|
@@ -3646,7 +3646,7 @@ static inline bool __skb_checksum_validate_needed(struct sk_buff *skb,
|
||||
return true;
|
||||
}
|
||||
|
||||
/* For small packets <= CHECKSUM_BREAK peform checksum complete directly
|
||||
/* For small packets <= CHECKSUM_BREAK perform checksum complete directly
|
||||
* in checksum_init.
|
||||
*/
|
||||
#define CHECKSUM_BREAK 76
|
||||
|
@@ -337,8 +337,6 @@ extern void deactivate_file_page(struct page *page);
|
||||
extern void mark_page_lazyfree(struct page *page);
|
||||
extern void swap_setup(void);
|
||||
|
||||
extern void add_page_to_unevictable_list(struct page *page);
|
||||
|
||||
extern void lru_cache_add_active_or_unevictable(struct page *page,
|
||||
struct vm_area_struct *vma);
|
||||
|
||||
|
@@ -465,6 +465,7 @@ extern bool cancel_delayed_work_sync(struct delayed_work *dwork);
|
||||
|
||||
extern void workqueue_set_max_active(struct workqueue_struct *wq,
|
||||
int max_active);
|
||||
extern struct work_struct *current_work(void);
|
||||
extern bool current_is_workqueue_rescuer(void);
|
||||
extern bool workqueue_congested(int cpu, struct workqueue_struct *wq);
|
||||
extern unsigned int work_busy(struct work_struct *work);
|
||||
|
Reference in New Issue
Block a user