Merge tag 'v5.1-rc3' into devel
Linux 5.1-rc3
This commit is contained in:
@@ -108,7 +108,7 @@ static __inline__ struct elapaarp *aarp_hdr(struct sk_buff *skb)
|
||||
#define AARP_RESOLVE_TIME (10 * HZ)
|
||||
|
||||
extern struct datalink_proto *ddp_dl, *aarp_dl;
|
||||
extern void aarp_proto_init(void);
|
||||
extern int aarp_proto_init(void);
|
||||
|
||||
/* Inter module exports */
|
||||
|
||||
|
@@ -57,7 +57,6 @@ struct blk_mq_hw_ctx {
|
||||
unsigned int queue_num;
|
||||
|
||||
atomic_t nr_active;
|
||||
unsigned int nr_expired;
|
||||
|
||||
struct hlist_node cpuhp_dead;
|
||||
struct kobject kobj;
|
||||
@@ -300,8 +299,6 @@ void blk_mq_end_request(struct request *rq, blk_status_t error);
|
||||
void __blk_mq_end_request(struct request *rq, blk_status_t error);
|
||||
|
||||
void blk_mq_requeue_request(struct request *rq, bool kick_requeue_list);
|
||||
void blk_mq_add_to_requeue_list(struct request *rq, bool at_head,
|
||||
bool kick_requeue_list);
|
||||
void blk_mq_kick_requeue_list(struct request_queue *q);
|
||||
void blk_mq_delay_kick_requeue_list(struct request_queue *q, unsigned long msecs);
|
||||
bool blk_mq_complete_request(struct request *rq);
|
||||
|
@@ -215,6 +215,7 @@ struct bio {
|
||||
/*
|
||||
* bio flags
|
||||
*/
|
||||
#define BIO_NO_PAGE_REF 0 /* don't put release vec pages */
|
||||
#define BIO_SEG_VALID 1 /* bi_phys_segments valid */
|
||||
#define BIO_CLONED 2 /* doesn't own data */
|
||||
#define BIO_BOUNCED 3 /* bio is a bounce bio */
|
||||
|
@@ -50,6 +50,9 @@ struct blk_stat_callback;
|
||||
/* Must be consistent with blk_mq_poll_stats_bkt() */
|
||||
#define BLK_MQ_POLL_STATS_BKTS 16
|
||||
|
||||
/* Doing classic polling */
|
||||
#define BLK_MQ_POLL_CLASSIC -1
|
||||
|
||||
/*
|
||||
* Maximum number of blkcg policies allowed to be registered concurrently.
|
||||
* Defined here to simplify include dependency.
|
||||
|
@@ -193,7 +193,6 @@ enum bpf_arg_type {
|
||||
|
||||
ARG_PTR_TO_CTX, /* pointer to context */
|
||||
ARG_ANYTHING, /* any (initialized) argument is ok */
|
||||
ARG_PTR_TO_SOCKET, /* pointer to bpf_sock */
|
||||
ARG_PTR_TO_SPIN_LOCK, /* pointer to bpf_spin_lock */
|
||||
ARG_PTR_TO_SOCK_COMMON, /* pointer to sock_common */
|
||||
};
|
||||
|
@@ -66,6 +66,46 @@ struct bpf_reg_state {
|
||||
* same reference to the socket, to determine proper reference freeing.
|
||||
*/
|
||||
u32 id;
|
||||
/* PTR_TO_SOCKET and PTR_TO_TCP_SOCK could be a ptr returned
|
||||
* from a pointer-cast helper, bpf_sk_fullsock() and
|
||||
* bpf_tcp_sock().
|
||||
*
|
||||
* Consider the following where "sk" is a reference counted
|
||||
* pointer returned from "sk = bpf_sk_lookup_tcp();":
|
||||
*
|
||||
* 1: sk = bpf_sk_lookup_tcp();
|
||||
* 2: if (!sk) { return 0; }
|
||||
* 3: fullsock = bpf_sk_fullsock(sk);
|
||||
* 4: if (!fullsock) { bpf_sk_release(sk); return 0; }
|
||||
* 5: tp = bpf_tcp_sock(fullsock);
|
||||
* 6: if (!tp) { bpf_sk_release(sk); return 0; }
|
||||
* 7: bpf_sk_release(sk);
|
||||
* 8: snd_cwnd = tp->snd_cwnd; // verifier will complain
|
||||
*
|
||||
* After bpf_sk_release(sk) at line 7, both "fullsock" ptr and
|
||||
* "tp" ptr should be invalidated also. In order to do that,
|
||||
* the reg holding "fullsock" and "sk" need to remember
|
||||
* the original refcounted ptr id (i.e. sk_reg->id) in ref_obj_id
|
||||
* such that the verifier can reset all regs which have
|
||||
* ref_obj_id matching the sk_reg->id.
|
||||
*
|
||||
* sk_reg->ref_obj_id is set to sk_reg->id at line 1.
|
||||
* sk_reg->id will stay as NULL-marking purpose only.
|
||||
* After NULL-marking is done, sk_reg->id can be reset to 0.
|
||||
*
|
||||
* After "fullsock = bpf_sk_fullsock(sk);" at line 3,
|
||||
* fullsock_reg->ref_obj_id is set to sk_reg->ref_obj_id.
|
||||
*
|
||||
* After "tp = bpf_tcp_sock(fullsock);" at line 5,
|
||||
* tp_reg->ref_obj_id is set to fullsock_reg->ref_obj_id
|
||||
* which is the same as sk_reg->ref_obj_id.
|
||||
*
|
||||
* From the verifier perspective, if sk, fullsock and tp
|
||||
* are not NULL, they are the same ptr with different
|
||||
* reg->type. In particular, bpf_sk_release(tp) is also
|
||||
* allowed and has the same effect as bpf_sk_release(sk).
|
||||
*/
|
||||
u32 ref_obj_id;
|
||||
/* For scalar types (SCALAR_VALUE), this represents our knowledge of
|
||||
* the actual value.
|
||||
* For pointer types, this represents the variable part of the offset
|
||||
|
@@ -148,6 +148,22 @@
|
||||
#define BCM_LED_SRC_OFF 0xe /* Tied high */
|
||||
#define BCM_LED_SRC_ON 0xf /* Tied low */
|
||||
|
||||
/*
|
||||
* Broadcom Multicolor LED configurations (expansion register 4)
|
||||
*/
|
||||
#define BCM_EXP_MULTICOLOR (MII_BCM54XX_EXP_SEL_ER + 0x04)
|
||||
#define BCM_LED_MULTICOLOR_IN_PHASE BIT(8)
|
||||
#define BCM_LED_MULTICOLOR_LINK_ACT 0x0
|
||||
#define BCM_LED_MULTICOLOR_SPEED 0x1
|
||||
#define BCM_LED_MULTICOLOR_ACT_FLASH 0x2
|
||||
#define BCM_LED_MULTICOLOR_FDX 0x3
|
||||
#define BCM_LED_MULTICOLOR_OFF 0x4
|
||||
#define BCM_LED_MULTICOLOR_ON 0x5
|
||||
#define BCM_LED_MULTICOLOR_ALT 0x6
|
||||
#define BCM_LED_MULTICOLOR_FLASH 0x7
|
||||
#define BCM_LED_MULTICOLOR_LINK 0x8
|
||||
#define BCM_LED_MULTICOLOR_ACT 0x9
|
||||
#define BCM_LED_MULTICOLOR_PROGRAM 0xa
|
||||
|
||||
/*
|
||||
* BCM5482: Shadow registers
|
||||
|
@@ -294,6 +294,8 @@ extern void ceph_destroy_client(struct ceph_client *client);
|
||||
extern int __ceph_open_session(struct ceph_client *client,
|
||||
unsigned long started);
|
||||
extern int ceph_open_session(struct ceph_client *client);
|
||||
int ceph_wait_for_latest_osdmap(struct ceph_client *client,
|
||||
unsigned long timeout);
|
||||
|
||||
/* pagevec.c */
|
||||
extern void ceph_release_page_vector(struct page **pages, int num_pages);
|
||||
|
@@ -49,8 +49,6 @@ struct bus_attribute {
|
||||
ssize_t (*store)(struct bus_type *bus, const char *buf, size_t count);
|
||||
};
|
||||
|
||||
#define BUS_ATTR(_name, _mode, _show, _store) \
|
||||
struct bus_attribute bus_attr_##_name = __ATTR(_name, _mode, _show, _store)
|
||||
#define BUS_ATTR_RW(_name) \
|
||||
struct bus_attribute bus_attr_##_name = __ATTR_RW(_name)
|
||||
#define BUS_ATTR_RO(_name) \
|
||||
|
@@ -203,7 +203,6 @@ static inline void hugetlb_show_meminfo(void)
|
||||
#define pud_huge(x) 0
|
||||
#define is_hugepage_only_range(mm, addr, len) 0
|
||||
#define hugetlb_free_pgd_range(tlb, addr, end, floor, ceiling) ({BUG(); 0; })
|
||||
#define hugetlb_fault(mm, vma, addr, flags) ({ BUG(); 0; })
|
||||
#define hugetlb_mcopy_atomic_pte(dst_mm, dst_pte, dst_vma, dst_addr, \
|
||||
src_addr, pagep) ({ BUG(); 0; })
|
||||
#define huge_pte_offset(mm, address, sz) 0
|
||||
@@ -234,6 +233,13 @@ static inline void __unmap_hugepage_range(struct mmu_gather *tlb,
|
||||
{
|
||||
BUG();
|
||||
}
|
||||
static inline vm_fault_t hugetlb_fault(struct mm_struct *mm,
|
||||
struct vm_area_struct *vma, unsigned long address,
|
||||
unsigned int flags)
|
||||
{
|
||||
BUG();
|
||||
return 0;
|
||||
}
|
||||
|
||||
#endif /* !CONFIG_HUGETLB_PAGE */
|
||||
/*
|
||||
|
@@ -195,7 +195,7 @@ struct irq_data {
|
||||
* IRQD_LEVEL - Interrupt is level triggered
|
||||
* IRQD_WAKEUP_STATE - Interrupt is configured for wakeup
|
||||
* from suspend
|
||||
* IRDQ_MOVE_PCNTXT - Interrupt can be moved in process
|
||||
* IRQD_MOVE_PCNTXT - Interrupt can be moved in process
|
||||
* context
|
||||
* IRQD_IRQ_DISABLED - Disabled state of the interrupt
|
||||
* IRQD_IRQ_MASKED - Masked state of the interrupt
|
||||
|
@@ -158,8 +158,7 @@ int gic_of_init_child(struct device *dev, struct gic_chip_data **gic, int irq);
|
||||
* Legacy platforms not converted to DT yet must use this to init
|
||||
* their GIC
|
||||
*/
|
||||
void gic_init(unsigned int nr, int start,
|
||||
void __iomem *dist , void __iomem *cpu);
|
||||
void gic_init(void __iomem *dist , void __iomem *cpu);
|
||||
|
||||
int gicv2m_init(struct fwnode_handle *parent_handle,
|
||||
struct irq_domain *parent);
|
||||
|
@@ -38,22 +38,13 @@ struct vmcoredd_node {
|
||||
|
||||
#ifdef CONFIG_PROC_KCORE
|
||||
void __init kclist_add(struct kcore_list *, void *, size_t, int type);
|
||||
static inline
|
||||
void kclist_add_remap(struct kcore_list *m, void *addr, void *vaddr, size_t sz)
|
||||
{
|
||||
m->vaddr = (unsigned long)vaddr;
|
||||
kclist_add(m, addr, sz, KCORE_REMAP);
|
||||
}
|
||||
|
||||
extern int __init register_mem_pfn_is_ram(int (*fn)(unsigned long pfn));
|
||||
#else
|
||||
static inline
|
||||
void kclist_add(struct kcore_list *new, void *addr, size_t size, int type)
|
||||
{
|
||||
}
|
||||
|
||||
static inline
|
||||
void kclist_add_remap(struct kcore_list *m, void *addr, void *vaddr, size_t sz)
|
||||
{
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* _LINUX_KCORE_H */
|
||||
|
@@ -207,7 +207,7 @@ static inline void list_bulk_move_tail(struct list_head *head,
|
||||
}
|
||||
|
||||
/**
|
||||
* list_is_first -- tests whether @ list is the first entry in list @head
|
||||
* list_is_first -- tests whether @list is the first entry in list @head
|
||||
* @list: the entry to test
|
||||
* @head: the head of the list
|
||||
*/
|
||||
|
@@ -557,7 +557,8 @@ static inline struct mlx5_core_mkey *__mlx5_mr_lookup(struct mlx5_core_dev *dev,
|
||||
|
||||
int mlx5_core_create_dct(struct mlx5_core_dev *dev,
|
||||
struct mlx5_core_dct *qp,
|
||||
u32 *in, int inlen);
|
||||
u32 *in, int inlen,
|
||||
u32 *out, int outlen);
|
||||
int mlx5_core_create_qp(struct mlx5_core_dev *dev,
|
||||
struct mlx5_core_qp *qp,
|
||||
u32 *in,
|
||||
|
@@ -83,6 +83,12 @@ enum sock_type {
|
||||
|
||||
#endif /* ARCH_HAS_SOCKET_TYPES */
|
||||
|
||||
/**
|
||||
* enum sock_shutdown_cmd - Shutdown types
|
||||
* @SHUT_RD: shutdown receptions
|
||||
* @SHUT_WR: shutdown transmissions
|
||||
* @SHUT_RDWR: shutdown receptions/transmissions
|
||||
*/
|
||||
enum sock_shutdown_cmd {
|
||||
SHUT_RD,
|
||||
SHUT_WR,
|
||||
|
@@ -41,16 +41,6 @@ int move_freepages_block(struct zone *zone, struct page *page,
|
||||
|
||||
/*
|
||||
* Changes migrate type in [start_pfn, end_pfn) to be MIGRATE_ISOLATE.
|
||||
* If specified range includes migrate types other than MOVABLE or CMA,
|
||||
* this will fail with -EBUSY.
|
||||
*
|
||||
* For isolating all pages in the range finally, the caller have to
|
||||
* free all pages in the range. test_page_isolated() can be used for
|
||||
* test it.
|
||||
*
|
||||
* The following flags are allowed (they can be combined in a bit mask)
|
||||
* SKIP_HWPOISON - ignore hwpoison pages
|
||||
* REPORT_FAILURE - report details about the failure to isolate the range
|
||||
*/
|
||||
int
|
||||
start_isolate_page_range(unsigned long start_pfn, unsigned long end_pfn,
|
||||
|
@@ -460,7 +460,6 @@ extern size_t parport_ieee1284_epp_read_addr (struct parport *,
|
||||
void *, size_t, int);
|
||||
|
||||
/* IEEE1284.3 functions */
|
||||
#define daisy_dev_name "Device ID probe"
|
||||
extern int parport_daisy_init (struct parport *port);
|
||||
extern void parport_daisy_fini (struct parport *port);
|
||||
extern struct pardevice *parport_open (int devnum, const char *name);
|
||||
@@ -469,18 +468,6 @@ extern ssize_t parport_device_id (int devnum, char *buffer, size_t len);
|
||||
extern void parport_daisy_deselect_all (struct parport *port);
|
||||
extern int parport_daisy_select (struct parport *port, int daisy, int mode);
|
||||
|
||||
#ifdef CONFIG_PARPORT_1284
|
||||
extern int daisy_drv_init(void);
|
||||
extern void daisy_drv_exit(void);
|
||||
#else
|
||||
static inline int daisy_drv_init(void)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline void daisy_drv_exit(void) {}
|
||||
#endif
|
||||
|
||||
/* Lowlevel drivers _can_ call this support function to handle irqs. */
|
||||
static inline void parport_generic_irq(struct parport *port)
|
||||
{
|
||||
|
@@ -1,4 +1,4 @@
|
||||
/* SPDX-License-Identifier: GPL+ */
|
||||
/* SPDX-License-Identifier: GPL-2.0+ */
|
||||
|
||||
/*
|
||||
* AMD FCH gpio driver platform-data
|
||||
|
@@ -330,7 +330,7 @@ static inline void sbitmap_clear_bit(struct sbitmap *sb, unsigned int bitnr)
|
||||
/*
|
||||
* This one is special, since it doesn't actually clear the bit, rather it
|
||||
* sets the corresponding bit in the ->cleared mask instead. Paired with
|
||||
* the caller doing sbitmap_batch_clear() if a given index is full, which
|
||||
* the caller doing sbitmap_deferred_clear() if a given index is full, which
|
||||
* will clear the previously freed entries in the corresponding ->word.
|
||||
*/
|
||||
static inline void sbitmap_deferred_clear_bit(struct sbitmap *sb, unsigned int bitnr)
|
||||
|
@@ -418,10 +418,20 @@ static inline void set_restore_sigmask(void)
|
||||
set_thread_flag(TIF_RESTORE_SIGMASK);
|
||||
WARN_ON(!test_thread_flag(TIF_SIGPENDING));
|
||||
}
|
||||
|
||||
static inline void clear_tsk_restore_sigmask(struct task_struct *tsk)
|
||||
{
|
||||
clear_tsk_thread_flag(tsk, TIF_RESTORE_SIGMASK);
|
||||
}
|
||||
|
||||
static inline void clear_restore_sigmask(void)
|
||||
{
|
||||
clear_thread_flag(TIF_RESTORE_SIGMASK);
|
||||
}
|
||||
static inline bool test_tsk_restore_sigmask(struct task_struct *tsk)
|
||||
{
|
||||
return test_tsk_thread_flag(tsk, TIF_RESTORE_SIGMASK);
|
||||
}
|
||||
static inline bool test_restore_sigmask(void)
|
||||
{
|
||||
return test_thread_flag(TIF_RESTORE_SIGMASK);
|
||||
@@ -439,6 +449,10 @@ static inline void set_restore_sigmask(void)
|
||||
current->restore_sigmask = true;
|
||||
WARN_ON(!test_thread_flag(TIF_SIGPENDING));
|
||||
}
|
||||
static inline void clear_tsk_restore_sigmask(struct task_struct *tsk)
|
||||
{
|
||||
tsk->restore_sigmask = false;
|
||||
}
|
||||
static inline void clear_restore_sigmask(void)
|
||||
{
|
||||
current->restore_sigmask = false;
|
||||
@@ -447,6 +461,10 @@ static inline bool test_restore_sigmask(void)
|
||||
{
|
||||
return current->restore_sigmask;
|
||||
}
|
||||
static inline bool test_tsk_restore_sigmask(struct task_struct *tsk)
|
||||
{
|
||||
return tsk->restore_sigmask;
|
||||
}
|
||||
static inline bool test_and_clear_restore_sigmask(void)
|
||||
{
|
||||
if (!current->restore_sigmask)
|
||||
|
@@ -32,6 +32,8 @@
|
||||
#define SLAB_HWCACHE_ALIGN ((slab_flags_t __force)0x00002000U)
|
||||
/* Use GFP_DMA memory */
|
||||
#define SLAB_CACHE_DMA ((slab_flags_t __force)0x00004000U)
|
||||
/* Use GFP_DMA32 memory */
|
||||
#define SLAB_CACHE_DMA32 ((slab_flags_t __force)0x00008000U)
|
||||
/* DEBUG: Store the last owner for bug hunting */
|
||||
#define SLAB_STORE_USER ((slab_flags_t __force)0x00010000U)
|
||||
/* Panic if kmem_cache_create() fails */
|
||||
|
@@ -26,7 +26,7 @@ typedef __kernel_sa_family_t sa_family_t;
|
||||
/*
|
||||
* 1003.1g requires sa_family_t and that sa_data is char.
|
||||
*/
|
||||
|
||||
|
||||
struct sockaddr {
|
||||
sa_family_t sa_family; /* address family, AF_xxx */
|
||||
char sa_data[14]; /* 14 bytes of protocol address */
|
||||
@@ -44,7 +44,7 @@ struct linger {
|
||||
* system, not 4.3. Thus msg_accrights(len) are now missing. They
|
||||
* belong in an obscure libc emulation or the bin.
|
||||
*/
|
||||
|
||||
|
||||
struct msghdr {
|
||||
void *msg_name; /* ptr to socket address structure */
|
||||
int msg_namelen; /* size of socket address structure */
|
||||
@@ -54,7 +54,7 @@ struct msghdr {
|
||||
unsigned int msg_flags; /* flags on received message */
|
||||
struct kiocb *msg_iocb; /* ptr to iocb for async requests */
|
||||
};
|
||||
|
||||
|
||||
struct user_msghdr {
|
||||
void __user *msg_name; /* ptr to socket address structure */
|
||||
int msg_namelen; /* size of socket address structure */
|
||||
@@ -122,7 +122,7 @@ struct cmsghdr {
|
||||
* inside range, given by msg->msg_controllen before using
|
||||
* ancillary object DATA. --ANK (980731)
|
||||
*/
|
||||
|
||||
|
||||
static inline struct cmsghdr * __cmsg_nxthdr(void *__ctl, __kernel_size_t __size,
|
||||
struct cmsghdr *__cmsg)
|
||||
{
|
||||
@@ -264,10 +264,10 @@ struct ucred {
|
||||
/* Maximum queue length specifiable by listen. */
|
||||
#define SOMAXCONN 128
|
||||
|
||||
/* Flags we can use with send/ and recv.
|
||||
/* Flags we can use with send/ and recv.
|
||||
Added those for 1003.1g not all are supported yet
|
||||
*/
|
||||
|
||||
|
||||
#define MSG_OOB 1
|
||||
#define MSG_PEEK 2
|
||||
#define MSG_DONTROUTE 4
|
||||
|
@@ -23,14 +23,23 @@ struct kvec {
|
||||
};
|
||||
|
||||
enum iter_type {
|
||||
ITER_IOVEC = 0,
|
||||
ITER_KVEC = 2,
|
||||
ITER_BVEC = 4,
|
||||
ITER_PIPE = 8,
|
||||
ITER_DISCARD = 16,
|
||||
/* set if ITER_BVEC doesn't hold a bv_page ref */
|
||||
ITER_BVEC_FLAG_NO_REF = 2,
|
||||
|
||||
/* iter types */
|
||||
ITER_IOVEC = 4,
|
||||
ITER_KVEC = 8,
|
||||
ITER_BVEC = 16,
|
||||
ITER_PIPE = 32,
|
||||
ITER_DISCARD = 64,
|
||||
};
|
||||
|
||||
struct iov_iter {
|
||||
/*
|
||||
* Bit 0 is the read/write bit, set if we're writing.
|
||||
* Bit 1 is the BVEC_FLAG_NO_REF bit, set if type is a bvec and
|
||||
* the caller isn't expecting to drop a page reference when done.
|
||||
*/
|
||||
unsigned int type;
|
||||
size_t iov_offset;
|
||||
size_t count;
|
||||
@@ -84,6 +93,11 @@ static inline unsigned char iov_iter_rw(const struct iov_iter *i)
|
||||
return i->type & (READ | WRITE);
|
||||
}
|
||||
|
||||
static inline bool iov_iter_bvec_no_ref(const struct iov_iter *i)
|
||||
{
|
||||
return (i->type & ITER_BVEC_FLAG_NO_REF) != 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Total number of bytes covered by an iovec.
|
||||
*
|
||||
|
@@ -24,15 +24,17 @@ __printf(1, 2) void vbg_debug(const char *fmt, ...);
|
||||
#define vbg_debug pr_debug
|
||||
#endif
|
||||
|
||||
int vbg_hgcm_connect(struct vbg_dev *gdev,
|
||||
int vbg_hgcm_connect(struct vbg_dev *gdev, u32 requestor,
|
||||
struct vmmdev_hgcm_service_location *loc,
|
||||
u32 *client_id, int *vbox_status);
|
||||
|
||||
int vbg_hgcm_disconnect(struct vbg_dev *gdev, u32 client_id, int *vbox_status);
|
||||
int vbg_hgcm_disconnect(struct vbg_dev *gdev, u32 requestor,
|
||||
u32 client_id, int *vbox_status);
|
||||
|
||||
int vbg_hgcm_call(struct vbg_dev *gdev, u32 client_id, u32 function,
|
||||
u32 timeout_ms, struct vmmdev_hgcm_function_parameter *parms,
|
||||
u32 parm_count, int *vbox_status);
|
||||
int vbg_hgcm_call(struct vbg_dev *gdev, u32 requestor, u32 client_id,
|
||||
u32 function, u32 timeout_ms,
|
||||
struct vmmdev_hgcm_function_parameter *parms, u32 parm_count,
|
||||
int *vbox_status);
|
||||
|
||||
/**
|
||||
* Convert a VirtualBox status code to a standard Linux kernel return value.
|
||||
|
Reference in New Issue
Block a user