Merge branches 'iommu/fixes', 'arm/rockchip', 'arm/renesas', 'arm/smmu', 'arm/core', 'x86/vt-d', 'x86/amd', 's390' and 'core' into next
This commit is contained in:

@@ -391,6 +391,8 @@ struct request_queue {
|
||||
int nr_rqs[2]; /* # allocated [a]sync rqs */
|
||||
int nr_rqs_elvpriv; /* # allocated rqs w/ elvpriv */
|
||||
|
||||
atomic_t shared_hctx_restart;
|
||||
|
||||
struct blk_queue_stats *stats;
|
||||
struct rq_wb *rq_wb;
|
||||
|
||||
@@ -586,6 +588,8 @@ struct request_queue {
|
||||
|
||||
size_t cmd_size;
|
||||
void *rq_alloc_data;
|
||||
|
||||
struct work_struct release_work;
|
||||
};
|
||||
|
||||
#define QUEUE_FLAG_QUEUED 1 /* uses generic tag queueing */
|
||||
|
@@ -74,7 +74,8 @@ extern void config_item_init_type_name(struct config_item *item,
|
||||
const char *name,
|
||||
struct config_item_type *type);
|
||||
|
||||
extern struct config_item * config_item_get(struct config_item *);
|
||||
extern struct config_item *config_item_get(struct config_item *);
|
||||
extern struct config_item *config_item_get_unless_zero(struct config_item *);
|
||||
extern void config_item_put(struct config_item *);
|
||||
|
||||
struct config_item_type {
|
||||
|
@@ -136,7 +136,7 @@ static inline int dmi_name_in_vendors(const char *s) { return 0; }
|
||||
static inline int dmi_name_in_serial(const char *s) { return 0; }
|
||||
#define dmi_available 0
|
||||
static inline int dmi_walk(void (*decode)(const struct dmi_header *, void *),
|
||||
void *private_data) { return -1; }
|
||||
void *private_data) { return -ENXIO; }
|
||||
static inline bool dmi_match(enum dmi_field f, const char *str)
|
||||
{ return false; }
|
||||
static inline void dmi_memdev_name(u16 handle, const char **bank,
|
||||
|
@@ -102,6 +102,21 @@ extern int intel_svm_bind_mm(struct device *dev, int *pasid, int flags,
|
||||
*/
|
||||
extern int intel_svm_unbind_mm(struct device *dev, int pasid);
|
||||
|
||||
/**
|
||||
* intel_svm_is_pasid_valid() - check if pasid is valid
|
||||
* @dev: Device for which PASID was allocated
|
||||
* @pasid: PASID value to be checked
|
||||
*
|
||||
* This function checks if the specified pasid is still valid. A
|
||||
* valid pasid means the backing mm is still having a valid user.
|
||||
* For kernel callers init_mm is always valid. for other mm, if mm->mm_users
|
||||
* is non-zero, it is valid.
|
||||
*
|
||||
* returns -EINVAL if invalid pasid, 0 if pasid ref count is invalid
|
||||
* 1 if pasid is valid.
|
||||
*/
|
||||
extern int intel_svm_is_pasid_valid(struct device *dev, int pasid);
|
||||
|
||||
#else /* CONFIG_INTEL_IOMMU_SVM */
|
||||
|
||||
static inline int intel_svm_bind_mm(struct device *dev, int *pasid,
|
||||
@@ -114,6 +129,11 @@ static inline int intel_svm_unbind_mm(struct device *dev, int pasid)
|
||||
{
|
||||
BUG();
|
||||
}
|
||||
|
||||
static int intel_svm_is_pasid_valid(struct device *dev, int pasid)
|
||||
{
|
||||
return -EINVAL;
|
||||
}
|
||||
#endif /* CONFIG_INTEL_IOMMU_SVM */
|
||||
|
||||
#define intel_svm_available(dev) (!intel_svm_bind_mm((dev), NULL, 0, NULL))
|
||||
|
@@ -1393,12 +1393,6 @@ int clear_page_dirty_for_io(struct page *page);
|
||||
|
||||
int get_cmdline(struct task_struct *task, char *buffer, int buflen);
|
||||
|
||||
/* Is the vma a continuation of the stack vma above it? */
|
||||
static inline int vma_growsdown(struct vm_area_struct *vma, unsigned long addr)
|
||||
{
|
||||
return vma && (vma->vm_end == addr) && (vma->vm_flags & VM_GROWSDOWN);
|
||||
}
|
||||
|
||||
static inline bool vma_is_anonymous(struct vm_area_struct *vma)
|
||||
{
|
||||
return !vma->vm_ops;
|
||||
@@ -1414,28 +1408,6 @@ bool vma_is_shmem(struct vm_area_struct *vma);
|
||||
static inline bool vma_is_shmem(struct vm_area_struct *vma) { return false; }
|
||||
#endif
|
||||
|
||||
static inline int stack_guard_page_start(struct vm_area_struct *vma,
|
||||
unsigned long addr)
|
||||
{
|
||||
return (vma->vm_flags & VM_GROWSDOWN) &&
|
||||
(vma->vm_start == addr) &&
|
||||
!vma_growsdown(vma->vm_prev, addr);
|
||||
}
|
||||
|
||||
/* Is the vma a continuation of the stack vma below it? */
|
||||
static inline int vma_growsup(struct vm_area_struct *vma, unsigned long addr)
|
||||
{
|
||||
return vma && (vma->vm_start == addr) && (vma->vm_flags & VM_GROWSUP);
|
||||
}
|
||||
|
||||
static inline int stack_guard_page_end(struct vm_area_struct *vma,
|
||||
unsigned long addr)
|
||||
{
|
||||
return (vma->vm_flags & VM_GROWSUP) &&
|
||||
(vma->vm_end == addr) &&
|
||||
!vma_growsup(vma->vm_next, addr);
|
||||
}
|
||||
|
||||
int vma_is_stack_for_current(struct vm_area_struct *vma);
|
||||
|
||||
extern unsigned long move_page_tables(struct vm_area_struct *vma,
|
||||
@@ -2222,6 +2194,7 @@ void page_cache_async_readahead(struct address_space *mapping,
|
||||
pgoff_t offset,
|
||||
unsigned long size);
|
||||
|
||||
extern unsigned long stack_guard_gap;
|
||||
/* Generic expand stack which grows the stack according to GROWS{UP,DOWN} */
|
||||
extern int expand_stack(struct vm_area_struct *vma, unsigned long address);
|
||||
|
||||
@@ -2250,6 +2223,30 @@ static inline struct vm_area_struct * find_vma_intersection(struct mm_struct * m
|
||||
return vma;
|
||||
}
|
||||
|
||||
static inline unsigned long vm_start_gap(struct vm_area_struct *vma)
|
||||
{
|
||||
unsigned long vm_start = vma->vm_start;
|
||||
|
||||
if (vma->vm_flags & VM_GROWSDOWN) {
|
||||
vm_start -= stack_guard_gap;
|
||||
if (vm_start > vma->vm_start)
|
||||
vm_start = 0;
|
||||
}
|
||||
return vm_start;
|
||||
}
|
||||
|
||||
static inline unsigned long vm_end_gap(struct vm_area_struct *vma)
|
||||
{
|
||||
unsigned long vm_end = vma->vm_end;
|
||||
|
||||
if (vma->vm_flags & VM_GROWSUP) {
|
||||
vm_end += stack_guard_gap;
|
||||
if (vm_end < vma->vm_end)
|
||||
vm_end = -PAGE_SIZE;
|
||||
}
|
||||
return vm_end;
|
||||
}
|
||||
|
||||
static inline unsigned long vma_pages(struct vm_area_struct *vma)
|
||||
{
|
||||
return (vma->vm_end - vma->vm_start) >> PAGE_SHIFT;
|
||||
|
@@ -914,8 +914,7 @@ struct xfrmdev_ops {
|
||||
*
|
||||
* int (*ndo_change_mtu)(struct net_device *dev, int new_mtu);
|
||||
* Called when a user wants to change the Maximum Transfer Unit
|
||||
* of a device. If not defined, any request to change MTU will
|
||||
* will return an error.
|
||||
* of a device.
|
||||
*
|
||||
* void (*ndo_tx_timeout)(struct net_device *dev);
|
||||
* Callback used when the transmitter has not made any progress
|
||||
@@ -1596,8 +1595,8 @@ enum netdev_priv_flags {
|
||||
* @rtnl_link_state: This enum represents the phases of creating
|
||||
* a new link
|
||||
*
|
||||
* @destructor: Called from unregister,
|
||||
* can be used to call free_netdev
|
||||
* @needs_free_netdev: Should unregister perform free_netdev?
|
||||
* @priv_destructor: Called from unregister
|
||||
* @npinfo: XXX: need comments on this one
|
||||
* @nd_net: Network namespace this network device is inside
|
||||
*
|
||||
@@ -1858,7 +1857,8 @@ struct net_device {
|
||||
RTNL_LINK_INITIALIZING,
|
||||
} rtnl_link_state:16;
|
||||
|
||||
void (*destructor)(struct net_device *dev);
|
||||
bool needs_free_netdev;
|
||||
void (*priv_destructor)(struct net_device *dev);
|
||||
|
||||
#ifdef CONFIG_NETPOLL
|
||||
struct netpoll_info __rcu *npinfo;
|
||||
@@ -4261,6 +4261,11 @@ static inline const char *netdev_name(const struct net_device *dev)
|
||||
return dev->name;
|
||||
}
|
||||
|
||||
static inline bool netdev_unregistering(const struct net_device *dev)
|
||||
{
|
||||
return dev->reg_state == NETREG_UNREGISTERING;
|
||||
}
|
||||
|
||||
static inline const char *netdev_reg_state(const struct net_device *dev)
|
||||
{
|
||||
switch (dev->reg_state) {
|
||||
|
@@ -84,6 +84,7 @@ struct kmem_cache {
|
||||
int red_left_pad; /* Left redzone padding size */
|
||||
#ifdef CONFIG_SYSFS
|
||||
struct kobject kobj; /* For sysfs */
|
||||
struct work_struct kobj_remove_work;
|
||||
#endif
|
||||
#ifdef CONFIG_MEMCG
|
||||
struct memcg_cache_params memcg_params;
|
||||
|
@@ -29,7 +29,6 @@
|
||||
*/
|
||||
struct tk_read_base {
|
||||
struct clocksource *clock;
|
||||
u64 (*read)(struct clocksource *cs);
|
||||
u64 mask;
|
||||
u64 cycle_last;
|
||||
u32 mult;
|
||||
@@ -58,7 +57,7 @@ struct tk_read_base {
|
||||
* interval.
|
||||
* @xtime_remainder: Shifted nano seconds left over when rounding
|
||||
* @cycle_interval
|
||||
* @raw_interval: Raw nano seconds accumulated per NTP interval.
|
||||
* @raw_interval: Shifted raw nano seconds accumulated per NTP interval.
|
||||
* @ntp_error: Difference between accumulated time and NTP time in ntp
|
||||
* shifted nano seconds.
|
||||
* @ntp_error_shift: Shift conversion between clock shifted nano seconds and
|
||||
@@ -100,7 +99,7 @@ struct timekeeper {
|
||||
u64 cycle_interval;
|
||||
u64 xtime_interval;
|
||||
s64 xtime_remainder;
|
||||
u32 raw_interval;
|
||||
u64 raw_interval;
|
||||
/* The ntp_tick_length() value currently being used.
|
||||
* This cached copy ensures we consistently apply the tick
|
||||
* length for an entire tick, as ntp_tick_length may change
|
||||
|
Reference in New Issue
Block a user