Linux 5.11
-----BEGIN PGP SIGNATURE----- iQFSBAABCAA8FiEEq68RxlopcLEwq+PEeb4+QwBBGIYFAmAppPgeHHRvcnZhbGRz QGxpbnV4LWZvdW5kYXRpb24ub3JnAAoJEHm+PkMAQRiGeXYH/imZPBd4A1jIMehN 5HV2A53Z+MXmmaMuGj9X1KV6vsf55/xB+IhOoFdtRAIsO8c2yYSCO8i4+4R0XfYA +/YFJeq672rojQnmh6XbpR8dugaAV7CUHy6n7KDsyvtT6EOCpwFSwkOb4X3tBRX6 TlYgm2d/xgV/wRHSgLVugK0MdFCLMAnyb7mkPfar9QrMgG1BiDKLq07xmwnS23On TkqpJ9yZ/rJpUrrUqQYPShSO/FmA+fSfWs0CDv7EIrJ40LUScD6PZxSHWTIHtjLk E4jFda6wuqLRVWsBwaBzUIdD0zk7X5quHRzEpbC5ga16SK6yrWvE5YJJXCguIEuZ f3FMRYs= =CAjn -----END PGP SIGNATURE----- Merge tag 'v5.11' into sched/core, to pick up fixes & refresh the branch Signed-off-by: Ingo Molnar <mingo@kernel.org>
This commit is contained in:
commit
ed3cd45f8c
1642 changed files with 19379 additions and 9654 deletions
|
|
@ -885,6 +885,13 @@ static inline int acpi_device_modalias(struct device *dev,
|
|||
return -ENODEV;
|
||||
}
|
||||
|
||||
static inline struct platform_device *
|
||||
acpi_create_platform_device(struct acpi_device *adev,
|
||||
struct property_entry *properties)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static inline bool acpi_dma_supported(struct acpi_device *adev)
|
||||
{
|
||||
return false;
|
||||
|
|
|
|||
|
|
@ -13,6 +13,12 @@
|
|||
/* https://gcc.gnu.org/bugzilla/show_bug.cgi?id=58145 */
|
||||
#if GCC_VERSION < 40900
|
||||
# error Sorry, your version of GCC is too old - please use 4.9 or newer.
|
||||
#elif defined(CONFIG_ARM64) && GCC_VERSION < 50100
|
||||
/*
|
||||
* https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63293
|
||||
* https://lore.kernel.org/r/20210107111841.GN1551@shell.armlinux.org.uk
|
||||
*/
|
||||
# error Sorry, your version of GCC is too old - please use 5.1 or newer.
|
||||
#endif
|
||||
|
||||
/*
|
||||
|
|
|
|||
|
|
@ -272,6 +272,12 @@
|
|||
*/
|
||||
#define __used __attribute__((__used__))
|
||||
|
||||
/*
|
||||
* gcc: https://gcc.gnu.org/onlinedocs/gcc/Common-Function-Attributes.html#index-warn_005funused_005fresult-function-attribute
|
||||
* clang: https://clang.llvm.org/docs/AttributeReference.html#nodiscard-warn-unused-result
|
||||
*/
|
||||
#define __must_check __attribute__((__warn_unused_result__))
|
||||
|
||||
/*
|
||||
* gcc: https://gcc.gnu.org/onlinedocs/gcc/Common-Function-Attributes.html#index-weak-function-attribute
|
||||
* gcc: https://gcc.gnu.org/onlinedocs/gcc/Common-Variable-Attributes.html#index-weak-variable-attribute
|
||||
|
|
|
|||
|
|
@ -121,12 +121,6 @@ struct ftrace_likely_data {
|
|||
unsigned long constant;
|
||||
};
|
||||
|
||||
#ifdef CONFIG_ENABLE_MUST_CHECK
|
||||
#define __must_check __attribute__((__warn_unused_result__))
|
||||
#else
|
||||
#define __must_check
|
||||
#endif
|
||||
|
||||
#if defined(CC_USING_HOTPATCH)
|
||||
#define notrace __attribute__((hotpatch(0, 0)))
|
||||
#elif defined(CC_USING_PATCHABLE_FUNCTION_ENTRY)
|
||||
|
|
|
|||
|
|
@ -186,12 +186,9 @@ extern int braille_register_console(struct console *, int index,
|
|||
extern int braille_unregister_console(struct console *);
|
||||
#ifdef CONFIG_TTY
|
||||
extern void console_sysfs_notify(void);
|
||||
extern void register_ttynull_console(void);
|
||||
#else
|
||||
static inline void console_sysfs_notify(void)
|
||||
{ }
|
||||
static inline void register_ttynull_console(void)
|
||||
{ }
|
||||
#endif
|
||||
extern bool console_suspend_enabled;
|
||||
|
||||
|
|
|
|||
|
|
@ -609,6 +609,18 @@ static inline const char *dev_name(const struct device *dev)
|
|||
return kobject_name(&dev->kobj);
|
||||
}
|
||||
|
||||
/**
|
||||
* dev_bus_name - Return a device's bus/class name, if at all possible
|
||||
* @dev: struct device to get the bus/class name of
|
||||
*
|
||||
* Will return the name of the bus/class the device is attached to. If it is
|
||||
* not attached to a bus/class, an empty string will be returned.
|
||||
*/
|
||||
static inline const char *dev_bus_name(const struct device *dev)
|
||||
{
|
||||
return dev->bus ? dev->bus->name : (dev->class ? dev->class->name : "");
|
||||
}
|
||||
|
||||
__printf(2, 3) int dev_set_name(struct device *dev, const char *name, ...);
|
||||
|
||||
#ifdef CONFIG_NUMA
|
||||
|
|
|
|||
|
|
@ -150,6 +150,7 @@ void dm_bufio_set_minimum_buffers(struct dm_bufio_client *c, unsigned n);
|
|||
|
||||
unsigned dm_bufio_get_block_size(struct dm_bufio_client *c);
|
||||
sector_t dm_bufio_get_device_size(struct dm_bufio_client *c);
|
||||
struct dm_io_client *dm_bufio_get_dm_io_client(struct dm_bufio_client *c);
|
||||
sector_t dm_bufio_get_block_number(struct dm_buffer *b);
|
||||
void *dm_bufio_get_block_data(struct dm_buffer *b);
|
||||
void *dm_bufio_get_aux_data(struct dm_buffer *b);
|
||||
|
|
|
|||
|
|
@ -46,6 +46,7 @@
|
|||
SYSCALL_WORK_SYSCALL_TRACE | \
|
||||
SYSCALL_WORK_SYSCALL_AUDIT | \
|
||||
SYSCALL_WORK_SYSCALL_USER_DISPATCH | \
|
||||
SYSCALL_WORK_SYSCALL_EXIT_TRAP | \
|
||||
ARCH_SYSCALL_WORK_EXIT)
|
||||
|
||||
/*
|
||||
|
|
|
|||
|
|
@ -770,6 +770,8 @@ static inline void huge_ptep_modify_prot_commit(struct vm_area_struct *vma,
|
|||
}
|
||||
#endif
|
||||
|
||||
void set_page_huge_active(struct page *page);
|
||||
|
||||
#else /* CONFIG_HUGETLB_PAGE */
|
||||
struct hstate {};
|
||||
|
||||
|
|
|
|||
|
|
@ -533,11 +533,10 @@ struct dmar_domain {
|
|||
/* Domain ids per IOMMU. Use u16 since
|
||||
* domain ids are 16 bit wide according
|
||||
* to VT-d spec, section 9.3 */
|
||||
unsigned int auxd_refcnt; /* Refcount of auxiliary attaching */
|
||||
|
||||
bool has_iotlb_device;
|
||||
struct list_head devices; /* all devices' list */
|
||||
struct list_head auxd; /* link to device's auxiliary list */
|
||||
struct list_head subdevices; /* all subdevices' list */
|
||||
struct iova_domain iovad; /* iova's that belong to this domain */
|
||||
|
||||
struct dma_pte *pgd; /* virtual address */
|
||||
|
|
@ -610,14 +609,21 @@ struct intel_iommu {
|
|||
struct dmar_drhd_unit *drhd;
|
||||
};
|
||||
|
||||
/* Per subdevice private data */
|
||||
struct subdev_domain_info {
|
||||
struct list_head link_phys; /* link to phys device siblings */
|
||||
struct list_head link_domain; /* link to domain siblings */
|
||||
struct device *pdev; /* physical device derived from */
|
||||
struct dmar_domain *domain; /* aux-domain */
|
||||
int users; /* user count */
|
||||
};
|
||||
|
||||
/* PCI domain-device relationship */
|
||||
struct device_domain_info {
|
||||
struct list_head link; /* link to domain siblings */
|
||||
struct list_head global; /* link to global list */
|
||||
struct list_head table; /* link to pasid table */
|
||||
struct list_head auxiliary_domains; /* auxiliary domains
|
||||
* attached to this device
|
||||
*/
|
||||
struct list_head subdevices; /* subdevices sibling */
|
||||
u32 segment; /* PCI segment number */
|
||||
u8 bus; /* PCI bus number */
|
||||
u8 devfn; /* PCI devfn number */
|
||||
|
|
@ -758,6 +764,7 @@ struct intel_svm_dev {
|
|||
struct list_head list;
|
||||
struct rcu_head rcu;
|
||||
struct device *dev;
|
||||
struct intel_iommu *iommu;
|
||||
struct svm_dev_ops *ops;
|
||||
struct iommu_sva sva;
|
||||
u32 pasid;
|
||||
|
|
@ -771,7 +778,6 @@ struct intel_svm {
|
|||
struct mmu_notifier notifier;
|
||||
struct mm_struct *mm;
|
||||
|
||||
struct intel_iommu *iommu;
|
||||
unsigned int flags;
|
||||
u32 pasid;
|
||||
int gpasid; /* In case that guest PASID is different from host PASID */
|
||||
|
|
|
|||
|
|
@ -616,7 +616,10 @@ static inline void dev_iommu_fwspec_set(struct device *dev,
|
|||
|
||||
static inline void *dev_iommu_priv_get(struct device *dev)
|
||||
{
|
||||
return dev->iommu->priv;
|
||||
if (dev->iommu)
|
||||
return dev->iommu->priv;
|
||||
else
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static inline void dev_iommu_priv_set(struct device *dev, void *priv)
|
||||
|
|
|
|||
|
|
@ -928,7 +928,7 @@ int __devm_irq_alloc_descs(struct device *dev, int irq, unsigned int from,
|
|||
__irq_alloc_descs(irq, from, cnt, node, THIS_MODULE, NULL)
|
||||
|
||||
#define irq_alloc_desc(node) \
|
||||
irq_alloc_descs(-1, 0, 1, node)
|
||||
irq_alloc_descs(-1, 1, 1, node)
|
||||
|
||||
#define irq_alloc_desc_at(at, node) \
|
||||
irq_alloc_descs(at, at, 1, node)
|
||||
|
|
@ -943,7 +943,7 @@ int __devm_irq_alloc_descs(struct device *dev, int irq, unsigned int from,
|
|||
__devm_irq_alloc_descs(dev, irq, from, cnt, node, THIS_MODULE, NULL)
|
||||
|
||||
#define devm_irq_alloc_desc(dev, node) \
|
||||
devm_irq_alloc_descs(dev, -1, 0, 1, node)
|
||||
devm_irq_alloc_descs(dev, -1, 1, 1, node)
|
||||
|
||||
#define devm_irq_alloc_desc_at(dev, at, node) \
|
||||
devm_irq_alloc_descs(dev, at, at, 1, node)
|
||||
|
|
|
|||
|
|
@ -35,8 +35,12 @@ struct kunit_kasan_expectation {
|
|||
#define KASAN_SHADOW_INIT 0
|
||||
#endif
|
||||
|
||||
#ifndef PTE_HWTABLE_PTRS
|
||||
#define PTE_HWTABLE_PTRS 0
|
||||
#endif
|
||||
|
||||
extern unsigned char kasan_early_shadow_page[PAGE_SIZE];
|
||||
extern pte_t kasan_early_shadow_pte[PTRS_PER_PTE];
|
||||
extern pte_t kasan_early_shadow_pte[PTRS_PER_PTE + PTE_HWTABLE_PTRS];
|
||||
extern pmd_t kasan_early_shadow_pmd[PTRS_PER_PMD];
|
||||
extern pud_t kasan_early_shadow_pud[PTRS_PER_PUD];
|
||||
extern p4d_t kasan_early_shadow_p4d[MAX_PTRS_PER_P4D];
|
||||
|
|
@ -329,6 +333,13 @@ static inline void *kasan_reset_tag(const void *addr)
|
|||
return (void *)arch_kasan_reset_tag(addr);
|
||||
}
|
||||
|
||||
/**
|
||||
* kasan_report - print a report about a bad memory access detected by KASAN
|
||||
* @addr: address of the bad access
|
||||
* @size: size of the bad access
|
||||
* @is_write: whether the bad access is a write or a read
|
||||
* @ip: instruction pointer for the accessibility check or the bad access itself
|
||||
*/
|
||||
bool kasan_report(unsigned long addr, size_t size,
|
||||
bool is_write, unsigned long ip);
|
||||
|
||||
|
|
|
|||
|
|
@ -52,6 +52,25 @@ static inline void kcov_remote_start_usb(u64 id)
|
|||
kcov_remote_start(kcov_remote_handle(KCOV_SUBSYSTEM_USB, id));
|
||||
}
|
||||
|
||||
/*
|
||||
* The softirq flavor of kcov_remote_*() functions is introduced as a temporary
|
||||
* work around for kcov's lack of nested remote coverage sections support in
|
||||
* task context. Adding suport for nested sections is tracked in:
|
||||
* https://bugzilla.kernel.org/show_bug.cgi?id=210337
|
||||
*/
|
||||
|
||||
static inline void kcov_remote_start_usb_softirq(u64 id)
|
||||
{
|
||||
if (in_serving_softirq())
|
||||
kcov_remote_start_usb(id);
|
||||
}
|
||||
|
||||
static inline void kcov_remote_stop_softirq(void)
|
||||
{
|
||||
if (in_serving_softirq())
|
||||
kcov_remote_stop();
|
||||
}
|
||||
|
||||
#else
|
||||
|
||||
static inline void kcov_task_init(struct task_struct *t) {}
|
||||
|
|
@ -66,6 +85,8 @@ static inline u64 kcov_common_handle(void)
|
|||
}
|
||||
static inline void kcov_remote_start_common(u64 id) {}
|
||||
static inline void kcov_remote_start_usb(u64 id) {}
|
||||
static inline void kcov_remote_start_usb_softirq(u64 id) {}
|
||||
static inline void kcov_remote_stop_softirq(void) {}
|
||||
|
||||
#endif /* CONFIG_KCOV */
|
||||
#endif /* _LINUX_KCOV_H */
|
||||
|
|
|
|||
|
|
@ -266,7 +266,7 @@ extern void kprobes_inc_nmissed_count(struct kprobe *p);
|
|||
extern bool arch_within_kprobe_blacklist(unsigned long addr);
|
||||
extern int arch_populate_kprobe_blacklist(void);
|
||||
extern bool arch_kprobe_on_func_entry(unsigned long offset);
|
||||
extern bool kprobe_on_func_entry(kprobe_opcode_t *addr, const char *sym, unsigned long offset);
|
||||
extern int kprobe_on_func_entry(kprobe_opcode_t *addr, const char *sym, unsigned long offset);
|
||||
|
||||
extern bool within_kprobe_blacklist(unsigned long addr);
|
||||
extern int kprobe_add_ksym_blacklist(unsigned long entry);
|
||||
|
|
|
|||
|
|
@ -33,6 +33,9 @@ struct task_struct *kthread_create_on_cpu(int (*threadfn)(void *data),
|
|||
unsigned int cpu,
|
||||
const char *namefmt);
|
||||
|
||||
void kthread_set_per_cpu(struct task_struct *k, int cpu);
|
||||
bool kthread_is_per_cpu(struct task_struct *k);
|
||||
|
||||
/**
|
||||
* kthread_run - create and wake a thread.
|
||||
* @threadfn: the function to run until signal_pending(current).
|
||||
|
|
|
|||
|
|
@ -230,6 +230,5 @@ static inline ktime_t ms_to_ktime(u64 ms)
|
|||
}
|
||||
|
||||
# include <linux/timekeeping.h>
|
||||
# include <linux/timekeeping32.h>
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -178,6 +178,11 @@
|
|||
* Objtool generates debug info for both FUNC & CODE, but needs special
|
||||
* annotations for each CODE's start (to describe the actual stack frame).
|
||||
*
|
||||
* Objtool requires that all code must be contained in an ELF symbol. Symbol
|
||||
* names that have a .L prefix do not emit symbol table entries. .L
|
||||
* prefixed symbols can be used within a code region, but should be avoided for
|
||||
* denoting a range of code via ``SYM_*_START/END`` annotations.
|
||||
*
|
||||
* ALIAS -- does not generate debug info -- the aliased function will
|
||||
*/
|
||||
|
||||
|
|
|
|||
|
|
@ -35,6 +35,9 @@ struct mdiobb_ctrl {
|
|||
const struct mdiobb_ops *ops;
|
||||
};
|
||||
|
||||
int mdiobb_read(struct mii_bus *bus, int phy, int reg);
|
||||
int mdiobb_write(struct mii_bus *bus, int phy, int reg, u16 val);
|
||||
|
||||
/* The returned bus is not yet registered with the phy layer. */
|
||||
struct mii_bus *alloc_mdio_bitbang(struct mdiobb_ctrl *ctrl);
|
||||
|
||||
|
|
|
|||
|
|
@ -665,7 +665,7 @@ static inline struct lruvec *mem_cgroup_page_lruvec(struct page *page,
|
|||
{
|
||||
struct mem_cgroup *memcg = page_memcg(page);
|
||||
|
||||
VM_WARN_ON_ONCE_PAGE(!memcg, page);
|
||||
VM_WARN_ON_ONCE_PAGE(!memcg && !mem_cgroup_disabled(), page);
|
||||
return mem_cgroup_lruvec(memcg, pgdat);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1209,22 +1209,4 @@ static inline bool mlx5_is_roce_enabled(struct mlx5_core_dev *dev)
|
|||
return val.vbool;
|
||||
}
|
||||
|
||||
/**
|
||||
* mlx5_core_net - Provide net namespace of the mlx5_core_dev
|
||||
* @dev: mlx5 core device
|
||||
*
|
||||
* mlx5_core_net() returns the net namespace of mlx5 core device.
|
||||
* This can be called only in below described limited context.
|
||||
* (a) When a devlink instance for mlx5_core is registered and
|
||||
* when devlink reload operation is disabled.
|
||||
* or
|
||||
* (b) during devlink reload reload_down() and reload_up callbacks
|
||||
* where it is ensured that devlink instance's net namespace is
|
||||
* stable.
|
||||
*/
|
||||
static inline struct net *mlx5_core_net(struct mlx5_core_dev *dev)
|
||||
{
|
||||
return devlink_net(priv_to_devlink(dev));
|
||||
}
|
||||
|
||||
#endif /* MLX5_DRIVER_H */
|
||||
|
|
|
|||
|
|
@ -1280,7 +1280,8 @@ struct mlx5_ifc_cmd_hca_cap_bits {
|
|||
u8 ece_support[0x1];
|
||||
u8 reserved_at_a4[0x7];
|
||||
u8 log_max_srq[0x5];
|
||||
u8 reserved_at_b0[0x2];
|
||||
u8 reserved_at_b0[0x1];
|
||||
u8 uplink_follow[0x1];
|
||||
u8 ts_cqe_to_dest_cqn[0x1];
|
||||
u8 reserved_at_b3[0xd];
|
||||
|
||||
|
|
|
|||
|
|
@ -178,6 +178,12 @@ struct msi_desc {
|
|||
list_for_each_entry((desc), dev_to_msi_list((dev)), list)
|
||||
#define for_each_msi_entry_safe(desc, tmp, dev) \
|
||||
list_for_each_entry_safe((desc), (tmp), dev_to_msi_list((dev)), list)
|
||||
#define for_each_msi_vector(desc, __irq, dev) \
|
||||
for_each_msi_entry((desc), (dev)) \
|
||||
if ((desc)->irq) \
|
||||
for (__irq = (desc)->irq; \
|
||||
__irq < ((desc)->irq + (desc)->nvec_used); \
|
||||
__irq++)
|
||||
|
||||
#ifdef CONFIG_IRQ_MSI_IOMMU
|
||||
static inline const void *msi_desc_get_iommu_cookie(struct msi_desc *desc)
|
||||
|
|
|
|||
|
|
@ -4352,6 +4352,7 @@ static inline void netif_tx_disable(struct net_device *dev)
|
|||
|
||||
local_bh_disable();
|
||||
cpu = smp_processor_id();
|
||||
spin_lock(&dev->tx_global_lock);
|
||||
for (i = 0; i < dev->num_tx_queues; i++) {
|
||||
struct netdev_queue *txq = netdev_get_tx_queue(dev, i);
|
||||
|
||||
|
|
@ -4359,6 +4360,7 @@ static inline void netif_tx_disable(struct net_device *dev)
|
|||
netif_tx_stop_queue(txq);
|
||||
__netif_tx_unlock(txq);
|
||||
}
|
||||
spin_unlock(&dev->tx_global_lock);
|
||||
local_bh_enable();
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -116,6 +116,9 @@ enum {
|
|||
NVME_REG_BPMBL = 0x0048, /* Boot Partition Memory Buffer
|
||||
* Location
|
||||
*/
|
||||
NVME_REG_CMBMSC = 0x0050, /* Controller Memory Buffer Memory
|
||||
* Space Control
|
||||
*/
|
||||
NVME_REG_PMRCAP = 0x0e00, /* Persistent Memory Capabilities */
|
||||
NVME_REG_PMRCTL = 0x0e04, /* Persistent Memory Region Control */
|
||||
NVME_REG_PMRSTS = 0x0e08, /* Persistent Memory Region Status */
|
||||
|
|
@ -135,6 +138,7 @@ enum {
|
|||
#define NVME_CAP_CSS(cap) (((cap) >> 37) & 0xff)
|
||||
#define NVME_CAP_MPSMIN(cap) (((cap) >> 48) & 0xf)
|
||||
#define NVME_CAP_MPSMAX(cap) (((cap) >> 52) & 0xf)
|
||||
#define NVME_CAP_CMBS(cap) (((cap) >> 57) & 0x1)
|
||||
|
||||
#define NVME_CMB_BIR(cmbloc) ((cmbloc) & 0x7)
|
||||
#define NVME_CMB_OFST(cmbloc) (((cmbloc) >> 12) & 0xfffff)
|
||||
|
|
@ -192,6 +196,8 @@ enum {
|
|||
NVME_CSTS_SHST_OCCUR = 1 << 2,
|
||||
NVME_CSTS_SHST_CMPLT = 2 << 2,
|
||||
NVME_CSTS_SHST_MASK = 3 << 2,
|
||||
NVME_CMBMSC_CRE = 1 << 0,
|
||||
NVME_CMBMSC_CMSE = 1 << 1,
|
||||
};
|
||||
|
||||
struct nvme_id_power_state {
|
||||
|
|
|
|||
|
|
@ -163,8 +163,6 @@ int arm_pmu_acpi_probe(armpmu_init_fn init_fn);
|
|||
static inline int arm_pmu_acpi_probe(armpmu_init_fn init_fn) { return 0; }
|
||||
#endif
|
||||
|
||||
bool arm_pmu_irq_is_nmi(void);
|
||||
|
||||
/* Internal functions only for core arm_pmu code */
|
||||
struct arm_pmu *armpmu_alloc(void);
|
||||
struct arm_pmu *armpmu_alloc_atomic(void);
|
||||
|
|
|
|||
|
|
@ -86,6 +86,12 @@ void rcu_sched_clock_irq(int user);
|
|||
void rcu_report_dead(unsigned int cpu);
|
||||
void rcutree_migrate_callbacks(int cpu);
|
||||
|
||||
#ifdef CONFIG_TASKS_RCU_GENERIC
|
||||
void rcu_init_tasks_generic(void);
|
||||
#else
|
||||
static inline void rcu_init_tasks_generic(void) { }
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_RCU_STALL_COMMON
|
||||
void rcu_sysrq_start(void);
|
||||
void rcu_sysrq_end(void);
|
||||
|
|
|
|||
|
|
@ -331,6 +331,12 @@ regulator_get_exclusive(struct device *dev, const char *id)
|
|||
return ERR_PTR(-ENODEV);
|
||||
}
|
||||
|
||||
static inline struct regulator *__must_check
|
||||
devm_regulator_get_exclusive(struct device *dev, const char *id)
|
||||
{
|
||||
return ERR_PTR(-ENODEV);
|
||||
}
|
||||
|
||||
static inline struct regulator *__must_check
|
||||
regulator_get_optional(struct device *dev, const char *id)
|
||||
{
|
||||
|
|
@ -486,6 +492,11 @@ static inline int regulator_get_voltage(struct regulator *regulator)
|
|||
return -EINVAL;
|
||||
}
|
||||
|
||||
static inline int regulator_sync_voltage(struct regulator *regulator)
|
||||
{
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
static inline int regulator_is_supported_voltage(struct regulator *regulator,
|
||||
int min_uV, int max_uV)
|
||||
{
|
||||
|
|
@ -578,6 +589,25 @@ static inline int devm_regulator_unregister_notifier(struct regulator *regulator
|
|||
return 0;
|
||||
}
|
||||
|
||||
static inline int regulator_suspend_enable(struct regulator_dev *rdev,
|
||||
suspend_state_t state)
|
||||
{
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
static inline int regulator_suspend_disable(struct regulator_dev *rdev,
|
||||
suspend_state_t state)
|
||||
{
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
static inline int regulator_set_suspend_voltage(struct regulator *regulator,
|
||||
int min_uV, int max_uV,
|
||||
suspend_state_t state)
|
||||
{
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
static inline void *regulator_get_drvdata(struct regulator *regulator)
|
||||
{
|
||||
return NULL;
|
||||
|
|
|
|||
|
|
@ -366,7 +366,7 @@ static inline void skb_frag_size_sub(skb_frag_t *frag, int delta)
|
|||
static inline bool skb_frag_must_loop(struct page *p)
|
||||
{
|
||||
#if defined(CONFIG_HIGHMEM)
|
||||
if (PageHighMem(p))
|
||||
if (IS_ENABLED(CONFIG_DEBUG_KMAP_LOCAL_FORCE_MAP) || PageHighMem(p))
|
||||
return true;
|
||||
#endif
|
||||
return false;
|
||||
|
|
@ -1203,6 +1203,7 @@ struct skb_seq_state {
|
|||
struct sk_buff *root_skb;
|
||||
struct sk_buff *cur_skb;
|
||||
__u8 *frag_data;
|
||||
__u32 frag_off;
|
||||
};
|
||||
|
||||
void skb_prepare_seq_read(struct sk_buff *skb, unsigned int from,
|
||||
|
|
|
|||
|
|
@ -25,8 +25,7 @@ struct rpc_rqst;
|
|||
#define XDR_QUADLEN(l) (((l) + 3) >> 2)
|
||||
|
||||
/*
|
||||
* Generic opaque `network object.' At the kernel level, this type
|
||||
* is used only by lockd.
|
||||
* Generic opaque `network object.'
|
||||
*/
|
||||
#define XDR_MAX_NETOBJ 1024
|
||||
struct xdr_netobj {
|
||||
|
|
|
|||
|
|
@ -251,6 +251,30 @@ static inline int is_syscall_trace_event(struct trace_event_call *tp_event)
|
|||
static inline long __do_sys##name(__MAP(x,__SC_DECL,__VA_ARGS__))
|
||||
#endif /* __SYSCALL_DEFINEx */
|
||||
|
||||
/* For split 64-bit arguments on 32-bit architectures */
|
||||
#ifdef __LITTLE_ENDIAN
|
||||
#define SC_ARG64(name) u32, name##_lo, u32, name##_hi
|
||||
#else
|
||||
#define SC_ARG64(name) u32, name##_hi, u32, name##_lo
|
||||
#endif
|
||||
#define SC_VAL64(type, name) ((type) name##_hi << 32 | name##_lo)
|
||||
|
||||
#ifdef CONFIG_COMPAT
|
||||
#define SYSCALL32_DEFINE1 COMPAT_SYSCALL_DEFINE1
|
||||
#define SYSCALL32_DEFINE2 COMPAT_SYSCALL_DEFINE2
|
||||
#define SYSCALL32_DEFINE3 COMPAT_SYSCALL_DEFINE3
|
||||
#define SYSCALL32_DEFINE4 COMPAT_SYSCALL_DEFINE4
|
||||
#define SYSCALL32_DEFINE5 COMPAT_SYSCALL_DEFINE5
|
||||
#define SYSCALL32_DEFINE6 COMPAT_SYSCALL_DEFINE6
|
||||
#else
|
||||
#define SYSCALL32_DEFINE1 SYSCALL_DEFINE1
|
||||
#define SYSCALL32_DEFINE2 SYSCALL_DEFINE2
|
||||
#define SYSCALL32_DEFINE3 SYSCALL_DEFINE3
|
||||
#define SYSCALL32_DEFINE4 SYSCALL_DEFINE4
|
||||
#define SYSCALL32_DEFINE5 SYSCALL_DEFINE5
|
||||
#define SYSCALL32_DEFINE6 SYSCALL_DEFINE6
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Called before coming back to user-mode. Returning to user-mode with an
|
||||
* address limit different than USER_DS can allow to overwrite kernel memory.
|
||||
|
|
|
|||
|
|
@ -43,6 +43,7 @@ enum syscall_work_bit {
|
|||
SYSCALL_WORK_BIT_SYSCALL_EMU,
|
||||
SYSCALL_WORK_BIT_SYSCALL_AUDIT,
|
||||
SYSCALL_WORK_BIT_SYSCALL_USER_DISPATCH,
|
||||
SYSCALL_WORK_BIT_SYSCALL_EXIT_TRAP,
|
||||
};
|
||||
|
||||
#define SYSCALL_WORK_SECCOMP BIT(SYSCALL_WORK_BIT_SECCOMP)
|
||||
|
|
@ -51,6 +52,7 @@ enum syscall_work_bit {
|
|||
#define SYSCALL_WORK_SYSCALL_EMU BIT(SYSCALL_WORK_BIT_SYSCALL_EMU)
|
||||
#define SYSCALL_WORK_SYSCALL_AUDIT BIT(SYSCALL_WORK_BIT_SYSCALL_AUDIT)
|
||||
#define SYSCALL_WORK_SYSCALL_USER_DISPATCH BIT(SYSCALL_WORK_BIT_SYSCALL_USER_DISPATCH)
|
||||
#define SYSCALL_WORK_SYSCALL_EXIT_TRAP BIT(SYSCALL_WORK_BIT_SYSCALL_EXIT_TRAP)
|
||||
#endif
|
||||
|
||||
#include <asm/thread_info.h>
|
||||
|
|
|
|||
|
|
@ -1,14 +0,0 @@
|
|||
#ifndef _LINUX_TIMEKEEPING32_H
|
||||
#define _LINUX_TIMEKEEPING32_H
|
||||
/*
|
||||
* These interfaces are all based on the old timespec type
|
||||
* and should get replaced with the timespec64 based versions
|
||||
* over time so we can remove the file here.
|
||||
*/
|
||||
|
||||
static inline unsigned long get_seconds(void)
|
||||
{
|
||||
return ktime_get_real_seconds();
|
||||
}
|
||||
|
||||
#endif
|
||||
|
|
@ -307,11 +307,13 @@ static inline struct tracepoint *tracepoint_ptr_deref(tracepoint_ptr_t *p)
|
|||
\
|
||||
it_func_ptr = \
|
||||
rcu_dereference_raw((&__tracepoint_##_name)->funcs); \
|
||||
do { \
|
||||
it_func = (it_func_ptr)->func; \
|
||||
__data = (it_func_ptr)->data; \
|
||||
((void(*)(void *, proto))(it_func))(__data, args); \
|
||||
} while ((++it_func_ptr)->func); \
|
||||
if (it_func_ptr) { \
|
||||
do { \
|
||||
it_func = (it_func_ptr)->func; \
|
||||
__data = (it_func_ptr)->data; \
|
||||
((void(*)(void *, proto))(it_func))(__data, args); \
|
||||
} while ((++it_func_ptr)->func); \
|
||||
} \
|
||||
return 0; \
|
||||
} \
|
||||
DEFINE_STATIC_CALL(tp_func_##_name, __traceiter_##_name);
|
||||
|
|
|
|||
|
|
@ -421,6 +421,7 @@ extern void tty_kclose(struct tty_struct *tty);
|
|||
extern int tty_dev_name_to_number(const char *name, dev_t *number);
|
||||
extern int tty_ldisc_lock(struct tty_struct *tty, unsigned long timeout);
|
||||
extern void tty_ldisc_unlock(struct tty_struct *tty);
|
||||
extern ssize_t redirected_tty_write(struct kiocb *, struct iov_iter *);
|
||||
#else
|
||||
static inline void tty_kref_put(struct tty_struct *tty)
|
||||
{ }
|
||||
|
|
|
|||
|
|
@ -260,7 +260,13 @@ static inline void iov_iter_reexpand(struct iov_iter *i, size_t count)
|
|||
{
|
||||
i->count = count;
|
||||
}
|
||||
size_t csum_and_copy_to_iter(const void *addr, size_t bytes, void *csump, struct iov_iter *i);
|
||||
|
||||
struct csum_state {
|
||||
__wsum csum;
|
||||
size_t off;
|
||||
};
|
||||
|
||||
size_t csum_and_copy_to_iter(const void *addr, size_t bytes, void *csstate, struct iov_iter *i);
|
||||
size_t csum_and_copy_from_iter(void *addr, size_t bytes, __wsum *csum, struct iov_iter *i);
|
||||
bool csum_and_copy_from_iter_full(void *addr, size_t bytes, __wsum *csum, struct iov_iter *i);
|
||||
size_t hash_and_copy_to_iter(const void *addr, size_t bytes, void *hashp,
|
||||
|
|
|
|||
|
|
@ -81,6 +81,8 @@ struct usbnet {
|
|||
# define EVENT_LINK_CHANGE 11
|
||||
# define EVENT_SET_RX_MODE 12
|
||||
# define EVENT_NO_IP_ALIGN 13
|
||||
u32 rx_speed; /* in bps - NOT Mbps */
|
||||
u32 tx_speed; /* in bps - NOT Mbps */
|
||||
};
|
||||
|
||||
static inline struct usb_driver *driver_of(struct usb_interface *intf)
|
||||
|
|
|
|||
|
|
@ -24,7 +24,8 @@ struct notifier_block; /* in notifier.h */
|
|||
#define VM_UNINITIALIZED 0x00000020 /* vm_struct is not fully initialized */
|
||||
#define VM_NO_GUARD 0x00000040 /* don't add guard page */
|
||||
#define VM_KASAN 0x00000080 /* has allocated kasan shadow memory */
|
||||
#define VM_MAP_PUT_PAGES 0x00000100 /* put pages and free array in vfree */
|
||||
#define VM_FLUSH_RESET_PERMS 0x00000100 /* reset direct map and flush TLB on unmap, can't be freed in atomic context */
|
||||
#define VM_MAP_PUT_PAGES 0x00000200 /* put pages and free array in vfree */
|
||||
|
||||
/*
|
||||
* VM_KASAN is used slighly differently depending on CONFIG_KASAN_VMALLOC.
|
||||
|
|
@ -37,12 +38,6 @@ struct notifier_block; /* in notifier.h */
|
|||
* determine which allocations need the module shadow freed.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Memory with VM_FLUSH_RESET_PERMS cannot be freed in an interrupt or with
|
||||
* vfree_atomic().
|
||||
*/
|
||||
#define VM_FLUSH_RESET_PERMS 0x00000100 /* Reset direct map and flush TLB on unmap */
|
||||
|
||||
/* bits [20..32] reserved for arch specific ioremap internals */
|
||||
|
||||
/*
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue