Merge tag 'v5.8' into drm-next
I need to backmerge 5.8 as I've got a bunch of fixes sitting on an rc7 base that I want to land. Signed-off-by: Dave Airlie <airlied@redhat.com>
This commit is contained in:
@@ -426,6 +426,7 @@ const char *dm_device_name(struct mapped_device *md);
|
||||
int dm_copy_name_and_uuid(struct mapped_device *md, char *name, char *uuid);
|
||||
struct gendisk *dm_disk(struct mapped_device *md);
|
||||
int dm_suspended(struct dm_target *ti);
|
||||
int dm_post_suspending(struct dm_target *ti);
|
||||
int dm_noflush_suspending(struct dm_target *ti);
|
||||
void dm_accept_partial_bio(struct bio *bio, unsigned n_sectors);
|
||||
union map_info *dm_get_rq_mapinfo(struct request *rq);
|
||||
|
@@ -994,6 +994,7 @@ int efivars_register(struct efivars *efivars,
|
||||
int efivars_unregister(struct efivars *efivars);
|
||||
struct kobject *efivars_kobject(void);
|
||||
|
||||
int efivar_supports_writes(void);
|
||||
int efivar_init(int (*func)(efi_char16_t *, efi_guid_t, unsigned long, void *),
|
||||
void *data, bool duplicates, struct list_head *head);
|
||||
|
||||
|
@@ -56,7 +56,7 @@ struct property_entry;
|
||||
* on a bus (or read from them). Apart from two basic transfer functions to
|
||||
* transmit one message at a time, a more complex version can be used to
|
||||
* transmit an arbitrary number of messages without interruption.
|
||||
* @count must be be less than 64k since msg.len is u16.
|
||||
* @count must be less than 64k since msg.len is u16.
|
||||
*/
|
||||
int i2c_transfer_buffer_flags(const struct i2c_client *client,
|
||||
char *buf, int count, u16 flags);
|
||||
@@ -1001,7 +1001,7 @@ static inline u32 i2c_acpi_find_bus_speed(struct device *dev)
|
||||
static inline struct i2c_client *i2c_acpi_new_device(struct device *dev,
|
||||
int index, struct i2c_board_info *info)
|
||||
{
|
||||
return NULL;
|
||||
return ERR_PTR(-ENODEV);
|
||||
}
|
||||
static inline struct i2c_adapter *i2c_acpi_find_adapter_by_handle(acpi_handle handle)
|
||||
{
|
||||
|
@@ -107,9 +107,12 @@ io_mapping_init_wc(struct io_mapping *iomap,
|
||||
resource_size_t base,
|
||||
unsigned long size)
|
||||
{
|
||||
iomap->iomem = ioremap_wc(base, size);
|
||||
if (!iomap->iomem)
|
||||
return NULL;
|
||||
|
||||
iomap->base = base;
|
||||
iomap->size = size;
|
||||
iomap->iomem = ioremap_wc(base, size);
|
||||
#if defined(pgprot_noncached_wc) /* archs can't agree on a name ... */
|
||||
iomap->prot = pgprot_noncached_wc(PAGE_KERNEL);
|
||||
#elif defined(pgprot_writecombine)
|
||||
|
@@ -4381,6 +4381,7 @@ struct mlx5_ifc_query_vport_state_out_bits {
|
||||
enum {
|
||||
MLX5_VPORT_STATE_OP_MOD_VNIC_VPORT = 0x0,
|
||||
MLX5_VPORT_STATE_OP_MOD_ESW_VPORT = 0x1,
|
||||
MLX5_VPORT_STATE_OP_MOD_UPLINK = 0x2,
|
||||
};
|
||||
|
||||
struct mlx5_ifc_arm_monitor_counter_in_bits {
|
||||
|
@@ -11,6 +11,7 @@
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/list.h>
|
||||
#include <linux/once.h>
|
||||
#include <asm/percpu.h>
|
||||
|
||||
#include <uapi/linux/random.h>
|
||||
|
||||
@@ -119,6 +120,8 @@ struct rnd_state {
|
||||
__u32 s1, s2, s3, s4;
|
||||
};
|
||||
|
||||
DECLARE_PER_CPU(struct rnd_state, net_rand_state);
|
||||
|
||||
u32 prandom_u32_state(struct rnd_state *state);
|
||||
void prandom_bytes_state(struct rnd_state *state, void *buf, size_t nbytes);
|
||||
void prandom_seed_full_state(struct rnd_state __percpu *pcpu_state);
|
||||
|
@@ -33,7 +33,7 @@
|
||||
* of two or more hash tables when the rhashtable is being resized.
|
||||
* The end of the chain is marked with a special nulls marks which has
|
||||
* the least significant bit set but otherwise stores the address of
|
||||
* the hash bucket. This allows us to be be sure we've found the end
|
||||
* the hash bucket. This allows us to be sure we've found the end
|
||||
* of the right list.
|
||||
* The value stored in the hash bucket has BIT(0) used as a lock bit.
|
||||
* This bit must be atomically set before any changes are made to
|
||||
@@ -84,7 +84,7 @@ struct bucket_table {
|
||||
|
||||
struct lockdep_map dep_map;
|
||||
|
||||
struct rhash_lock_head *buckets[] ____cacheline_aligned_in_smp;
|
||||
struct rhash_lock_head __rcu *buckets[] ____cacheline_aligned_in_smp;
|
||||
};
|
||||
|
||||
/*
|
||||
@@ -261,13 +261,12 @@ void rhashtable_free_and_destroy(struct rhashtable *ht,
|
||||
void *arg);
|
||||
void rhashtable_destroy(struct rhashtable *ht);
|
||||
|
||||
struct rhash_lock_head **rht_bucket_nested(const struct bucket_table *tbl,
|
||||
unsigned int hash);
|
||||
struct rhash_lock_head **__rht_bucket_nested(const struct bucket_table *tbl,
|
||||
unsigned int hash);
|
||||
struct rhash_lock_head **rht_bucket_nested_insert(struct rhashtable *ht,
|
||||
struct bucket_table *tbl,
|
||||
unsigned int hash);
|
||||
struct rhash_lock_head __rcu **rht_bucket_nested(
|
||||
const struct bucket_table *tbl, unsigned int hash);
|
||||
struct rhash_lock_head __rcu **__rht_bucket_nested(
|
||||
const struct bucket_table *tbl, unsigned int hash);
|
||||
struct rhash_lock_head __rcu **rht_bucket_nested_insert(
|
||||
struct rhashtable *ht, struct bucket_table *tbl, unsigned int hash);
|
||||
|
||||
#define rht_dereference(p, ht) \
|
||||
rcu_dereference_protected(p, lockdep_rht_mutex_is_held(ht))
|
||||
@@ -284,21 +283,21 @@ struct rhash_lock_head **rht_bucket_nested_insert(struct rhashtable *ht,
|
||||
#define rht_entry(tpos, pos, member) \
|
||||
({ tpos = container_of(pos, typeof(*tpos), member); 1; })
|
||||
|
||||
static inline struct rhash_lock_head *const *rht_bucket(
|
||||
static inline struct rhash_lock_head __rcu *const *rht_bucket(
|
||||
const struct bucket_table *tbl, unsigned int hash)
|
||||
{
|
||||
return unlikely(tbl->nest) ? rht_bucket_nested(tbl, hash) :
|
||||
&tbl->buckets[hash];
|
||||
}
|
||||
|
||||
static inline struct rhash_lock_head **rht_bucket_var(
|
||||
static inline struct rhash_lock_head __rcu **rht_bucket_var(
|
||||
struct bucket_table *tbl, unsigned int hash)
|
||||
{
|
||||
return unlikely(tbl->nest) ? __rht_bucket_nested(tbl, hash) :
|
||||
&tbl->buckets[hash];
|
||||
}
|
||||
|
||||
static inline struct rhash_lock_head **rht_bucket_insert(
|
||||
static inline struct rhash_lock_head __rcu **rht_bucket_insert(
|
||||
struct rhashtable *ht, struct bucket_table *tbl, unsigned int hash)
|
||||
{
|
||||
return unlikely(tbl->nest) ? rht_bucket_nested_insert(ht, tbl, hash) :
|
||||
@@ -325,7 +324,7 @@ static inline struct rhash_lock_head **rht_bucket_insert(
|
||||
*/
|
||||
|
||||
static inline void rht_lock(struct bucket_table *tbl,
|
||||
struct rhash_lock_head **bkt)
|
||||
struct rhash_lock_head __rcu **bkt)
|
||||
{
|
||||
local_bh_disable();
|
||||
bit_spin_lock(0, (unsigned long *)bkt);
|
||||
@@ -333,7 +332,7 @@ static inline void rht_lock(struct bucket_table *tbl,
|
||||
}
|
||||
|
||||
static inline void rht_lock_nested(struct bucket_table *tbl,
|
||||
struct rhash_lock_head **bucket,
|
||||
struct rhash_lock_head __rcu **bucket,
|
||||
unsigned int subclass)
|
||||
{
|
||||
local_bh_disable();
|
||||
@@ -342,18 +341,18 @@ static inline void rht_lock_nested(struct bucket_table *tbl,
|
||||
}
|
||||
|
||||
static inline void rht_unlock(struct bucket_table *tbl,
|
||||
struct rhash_lock_head **bkt)
|
||||
struct rhash_lock_head __rcu **bkt)
|
||||
{
|
||||
lock_map_release(&tbl->dep_map);
|
||||
bit_spin_unlock(0, (unsigned long *)bkt);
|
||||
local_bh_enable();
|
||||
}
|
||||
|
||||
static inline struct rhash_head __rcu *__rht_ptr(
|
||||
struct rhash_lock_head *const *bkt)
|
||||
static inline struct rhash_head *__rht_ptr(
|
||||
struct rhash_lock_head *p, struct rhash_lock_head __rcu *const *bkt)
|
||||
{
|
||||
return (struct rhash_head __rcu *)
|
||||
((unsigned long)*bkt & ~BIT(0) ?:
|
||||
return (struct rhash_head *)
|
||||
((unsigned long)p & ~BIT(0) ?:
|
||||
(unsigned long)RHT_NULLS_MARKER(bkt));
|
||||
}
|
||||
|
||||
@@ -365,47 +364,41 @@ static inline struct rhash_head __rcu *__rht_ptr(
|
||||
* access is guaranteed, such as when destroying the table.
|
||||
*/
|
||||
static inline struct rhash_head *rht_ptr_rcu(
|
||||
struct rhash_lock_head *const *bkt)
|
||||
struct rhash_lock_head __rcu *const *bkt)
|
||||
{
|
||||
struct rhash_head __rcu *p = __rht_ptr(bkt);
|
||||
|
||||
return rcu_dereference(p);
|
||||
return __rht_ptr(rcu_dereference(*bkt), bkt);
|
||||
}
|
||||
|
||||
static inline struct rhash_head *rht_ptr(
|
||||
struct rhash_lock_head *const *bkt,
|
||||
struct rhash_lock_head __rcu *const *bkt,
|
||||
struct bucket_table *tbl,
|
||||
unsigned int hash)
|
||||
{
|
||||
return rht_dereference_bucket(__rht_ptr(bkt), tbl, hash);
|
||||
return __rht_ptr(rht_dereference_bucket(*bkt, tbl, hash), bkt);
|
||||
}
|
||||
|
||||
static inline struct rhash_head *rht_ptr_exclusive(
|
||||
struct rhash_lock_head *const *bkt)
|
||||
struct rhash_lock_head __rcu *const *bkt)
|
||||
{
|
||||
return rcu_dereference_protected(__rht_ptr(bkt), 1);
|
||||
return __rht_ptr(rcu_dereference_protected(*bkt, 1), bkt);
|
||||
}
|
||||
|
||||
static inline void rht_assign_locked(struct rhash_lock_head **bkt,
|
||||
static inline void rht_assign_locked(struct rhash_lock_head __rcu **bkt,
|
||||
struct rhash_head *obj)
|
||||
{
|
||||
struct rhash_head __rcu **p = (struct rhash_head __rcu **)bkt;
|
||||
|
||||
if (rht_is_a_nulls(obj))
|
||||
obj = NULL;
|
||||
rcu_assign_pointer(*p, (void *)((unsigned long)obj | BIT(0)));
|
||||
rcu_assign_pointer(*bkt, (void *)((unsigned long)obj | BIT(0)));
|
||||
}
|
||||
|
||||
static inline void rht_assign_unlock(struct bucket_table *tbl,
|
||||
struct rhash_lock_head **bkt,
|
||||
struct rhash_lock_head __rcu **bkt,
|
||||
struct rhash_head *obj)
|
||||
{
|
||||
struct rhash_head __rcu **p = (struct rhash_head __rcu **)bkt;
|
||||
|
||||
if (rht_is_a_nulls(obj))
|
||||
obj = NULL;
|
||||
lock_map_release(&tbl->dep_map);
|
||||
rcu_assign_pointer(*p, obj);
|
||||
rcu_assign_pointer(*bkt, (void *)obj);
|
||||
preempt_enable();
|
||||
__release(bitlock);
|
||||
local_bh_enable();
|
||||
@@ -593,7 +586,7 @@ static inline struct rhash_head *__rhashtable_lookup(
|
||||
.ht = ht,
|
||||
.key = key,
|
||||
};
|
||||
struct rhash_lock_head *const *bkt;
|
||||
struct rhash_lock_head __rcu *const *bkt;
|
||||
struct bucket_table *tbl;
|
||||
struct rhash_head *he;
|
||||
unsigned int hash;
|
||||
@@ -709,7 +702,7 @@ static inline void *__rhashtable_insert_fast(
|
||||
.ht = ht,
|
||||
.key = key,
|
||||
};
|
||||
struct rhash_lock_head **bkt;
|
||||
struct rhash_lock_head __rcu **bkt;
|
||||
struct rhash_head __rcu **pprev;
|
||||
struct bucket_table *tbl;
|
||||
struct rhash_head *head;
|
||||
@@ -995,7 +988,7 @@ static inline int __rhashtable_remove_fast_one(
|
||||
struct rhash_head *obj, const struct rhashtable_params params,
|
||||
bool rhlist)
|
||||
{
|
||||
struct rhash_lock_head **bkt;
|
||||
struct rhash_lock_head __rcu **bkt;
|
||||
struct rhash_head __rcu **pprev;
|
||||
struct rhash_head *he;
|
||||
unsigned int hash;
|
||||
@@ -1147,7 +1140,7 @@ static inline int __rhashtable_replace_fast(
|
||||
struct rhash_head *obj_old, struct rhash_head *obj_new,
|
||||
const struct rhashtable_params params)
|
||||
{
|
||||
struct rhash_lock_head **bkt;
|
||||
struct rhash_lock_head __rcu **bkt;
|
||||
struct rhash_head __rcu **pprev;
|
||||
struct rhash_head *he;
|
||||
unsigned int hash;
|
||||
|
@@ -220,7 +220,9 @@ struct tcp_sock {
|
||||
} rack;
|
||||
u16 advmss; /* Advertised MSS */
|
||||
u8 compressed_ack;
|
||||
u8 dup_ack_counter;
|
||||
u8 dup_ack_counter:2,
|
||||
tlp_retrans:1, /* TLP is a retransmission */
|
||||
unused:5;
|
||||
u32 chrono_start; /* Start time in jiffies of a TCP chrono */
|
||||
u32 chrono_stat[3]; /* Time in jiffies for chrono_stat stats */
|
||||
u8 chrono_type:2, /* current chronograph type */
|
||||
@@ -243,7 +245,7 @@ struct tcp_sock {
|
||||
save_syn:1, /* Save headers of SYN packet */
|
||||
is_cwnd_limited:1,/* forward progress limited by snd_cwnd? */
|
||||
syn_smc:1; /* SYN includes SMC */
|
||||
u32 tlp_high_seq; /* snd_nxt at the time of TLP retransmit. */
|
||||
u32 tlp_high_seq; /* snd_nxt at the time of TLP */
|
||||
|
||||
u32 tcp_tx_delay; /* delay (in usec) added to TX packets */
|
||||
u64 tcp_wstamp_ns; /* departure time for next sent data packet */
|
||||
|
@@ -15,6 +15,7 @@
|
||||
#include <linux/slab.h>
|
||||
#include <linux/types.h>
|
||||
#include <linux/spinlock.h>
|
||||
#include <linux/mm.h>
|
||||
#include <uapi/linux/xattr.h>
|
||||
|
||||
struct inode;
|
||||
@@ -94,7 +95,7 @@ static inline void simple_xattrs_free(struct simple_xattrs *xattrs)
|
||||
|
||||
list_for_each_entry_safe(xattr, node, &xattrs->head, list) {
|
||||
kfree(xattr->name);
|
||||
kfree(xattr);
|
||||
kvfree(xattr);
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user