Merge branches 'arm/renesas', 'arm/smmu', 'arm/omap', 'ppc/pamu', 'x86/amd' and 'core' into next
Conflicts: drivers/iommu/Kconfig drivers/iommu/Makefile
This commit is contained in:
@@ -228,7 +228,9 @@ struct i2c_client {
|
||||
struct device dev; /* the device structure */
|
||||
int irq; /* irq issued by device */
|
||||
struct list_head detected;
|
||||
#if IS_ENABLED(CONFIG_I2C_SLAVE)
|
||||
i2c_slave_cb_t slave_cb; /* callback for slave mode */
|
||||
#endif
|
||||
};
|
||||
#define to_i2c_client(d) container_of(d, struct i2c_client, dev)
|
||||
|
||||
@@ -253,6 +255,7 @@ static inline void i2c_set_clientdata(struct i2c_client *dev, void *data)
|
||||
|
||||
/* I2C slave support */
|
||||
|
||||
#if IS_ENABLED(CONFIG_I2C_SLAVE)
|
||||
enum i2c_slave_event {
|
||||
I2C_SLAVE_REQ_READ_START,
|
||||
I2C_SLAVE_REQ_READ_END,
|
||||
@@ -269,6 +272,7 @@ static inline int i2c_slave_event(struct i2c_client *client,
|
||||
{
|
||||
return client->slave_cb(client, event, val);
|
||||
}
|
||||
#endif
|
||||
|
||||
/**
|
||||
* struct i2c_board_info - template for device creation
|
||||
@@ -404,8 +408,10 @@ struct i2c_algorithm {
|
||||
/* To determine what the adapter supports */
|
||||
u32 (*functionality) (struct i2c_adapter *);
|
||||
|
||||
#if IS_ENABLED(CONFIG_I2C_SLAVE)
|
||||
int (*reg_slave)(struct i2c_client *client);
|
||||
int (*unreg_slave)(struct i2c_client *client);
|
||||
#endif
|
||||
};
|
||||
|
||||
/**
|
||||
|
@@ -16,9 +16,6 @@
|
||||
#include <linux/rbtree.h>
|
||||
#include <linux/dma-mapping.h>
|
||||
|
||||
/* IO virtual address start page frame number */
|
||||
#define IOVA_START_PFN (1)
|
||||
|
||||
/* iova structure */
|
||||
struct iova {
|
||||
struct rb_node node;
|
||||
@@ -31,6 +28,8 @@ struct iova_domain {
|
||||
spinlock_t iova_rbtree_lock; /* Lock to protect update of rbtree */
|
||||
struct rb_root rbroot; /* iova domain rbtree root */
|
||||
struct rb_node *cached32_node; /* Save last alloced node */
|
||||
unsigned long granule; /* pfn granularity for this domain */
|
||||
unsigned long start_pfn; /* Lower limit for this domain */
|
||||
unsigned long dma_32bit_pfn;
|
||||
};
|
||||
|
||||
@@ -39,6 +38,39 @@ static inline unsigned long iova_size(struct iova *iova)
|
||||
return iova->pfn_hi - iova->pfn_lo + 1;
|
||||
}
|
||||
|
||||
static inline unsigned long iova_shift(struct iova_domain *iovad)
|
||||
{
|
||||
return __ffs(iovad->granule);
|
||||
}
|
||||
|
||||
static inline unsigned long iova_mask(struct iova_domain *iovad)
|
||||
{
|
||||
return iovad->granule - 1;
|
||||
}
|
||||
|
||||
static inline size_t iova_offset(struct iova_domain *iovad, dma_addr_t iova)
|
||||
{
|
||||
return iova & iova_mask(iovad);
|
||||
}
|
||||
|
||||
static inline size_t iova_align(struct iova_domain *iovad, size_t size)
|
||||
{
|
||||
return ALIGN(size, iovad->granule);
|
||||
}
|
||||
|
||||
static inline dma_addr_t iova_dma_addr(struct iova_domain *iovad, struct iova *iova)
|
||||
{
|
||||
return (dma_addr_t)iova->pfn_lo << iova_shift(iovad);
|
||||
}
|
||||
|
||||
static inline unsigned long iova_pfn(struct iova_domain *iovad, dma_addr_t iova)
|
||||
{
|
||||
return iova >> iova_shift(iovad);
|
||||
}
|
||||
|
||||
int iommu_iova_cache_init(void);
|
||||
void iommu_iova_cache_destroy(void);
|
||||
|
||||
struct iova *alloc_iova_mem(void);
|
||||
void free_iova_mem(struct iova *iova);
|
||||
void free_iova(struct iova_domain *iovad, unsigned long pfn);
|
||||
@@ -49,7 +81,8 @@ struct iova *alloc_iova(struct iova_domain *iovad, unsigned long size,
|
||||
struct iova *reserve_iova(struct iova_domain *iovad, unsigned long pfn_lo,
|
||||
unsigned long pfn_hi);
|
||||
void copy_reserved_iova(struct iova_domain *from, struct iova_domain *to);
|
||||
void init_iova_domain(struct iova_domain *iovad, unsigned long pfn_32bit);
|
||||
void init_iova_domain(struct iova_domain *iovad, unsigned long granule,
|
||||
unsigned long start_pfn, unsigned long pfn_32bit);
|
||||
struct iova *find_iova(struct iova_domain *iovad, unsigned long pfn);
|
||||
void put_iova_domain(struct iova_domain *iovad);
|
||||
struct iova *split_and_remove_iova(struct iova_domain *iovad,
|
||||
|
@@ -176,7 +176,7 @@ extern int _cond_resched(void);
|
||||
*/
|
||||
# define might_sleep() \
|
||||
do { __might_sleep(__FILE__, __LINE__, 0); might_resched(); } while (0)
|
||||
# define sched_annotate_sleep() __set_current_state(TASK_RUNNING)
|
||||
# define sched_annotate_sleep() (current->task_state_change = 0)
|
||||
#else
|
||||
static inline void ___might_sleep(const char *file, int line,
|
||||
int preempt_offset) { }
|
||||
|
@@ -59,6 +59,7 @@ enum s2mps13_reg {
|
||||
S2MPS13_REG_B6CTRL,
|
||||
S2MPS13_REG_B6OUT,
|
||||
S2MPS13_REG_B7CTRL,
|
||||
S2MPS13_REG_B7SW,
|
||||
S2MPS13_REG_B7OUT,
|
||||
S2MPS13_REG_B8CTRL,
|
||||
S2MPS13_REG_B8OUT,
|
||||
@@ -102,6 +103,7 @@ enum s2mps13_reg {
|
||||
S2MPS13_REG_L26CTRL,
|
||||
S2MPS13_REG_L27CTRL,
|
||||
S2MPS13_REG_L28CTRL,
|
||||
S2MPS13_REG_L29CTRL,
|
||||
S2MPS13_REG_L30CTRL,
|
||||
S2MPS13_REG_L31CTRL,
|
||||
S2MPS13_REG_L32CTRL,
|
||||
|
@@ -1070,6 +1070,7 @@ static inline int page_mapped(struct page *page)
|
||||
#define VM_FAULT_WRITE 0x0008 /* Special case for get_user_pages */
|
||||
#define VM_FAULT_HWPOISON 0x0010 /* Hit poisoned small page */
|
||||
#define VM_FAULT_HWPOISON_LARGE 0x0020 /* Hit poisoned large page. Index encoded in upper bits */
|
||||
#define VM_FAULT_SIGSEGV 0x0040
|
||||
|
||||
#define VM_FAULT_NOPAGE 0x0100 /* ->fault installed the pte, not return page */
|
||||
#define VM_FAULT_LOCKED 0x0200 /* ->fault locked the returned page */
|
||||
@@ -1078,8 +1079,9 @@ static inline int page_mapped(struct page *page)
|
||||
|
||||
#define VM_FAULT_HWPOISON_LARGE_MASK 0xf000 /* encodes hpage index for large hwpoison */
|
||||
|
||||
#define VM_FAULT_ERROR (VM_FAULT_OOM | VM_FAULT_SIGBUS | VM_FAULT_HWPOISON | \
|
||||
VM_FAULT_FALLBACK | VM_FAULT_HWPOISON_LARGE)
|
||||
#define VM_FAULT_ERROR (VM_FAULT_OOM | VM_FAULT_SIGBUS | VM_FAULT_SIGSEGV | \
|
||||
VM_FAULT_HWPOISON | VM_FAULT_HWPOISON_LARGE | \
|
||||
VM_FAULT_FALLBACK)
|
||||
|
||||
/* Encode hstate index for a hwpoisoned large page */
|
||||
#define VM_FAULT_SET_HINDEX(x) ((x) << 12)
|
||||
|
@@ -85,11 +85,6 @@ static inline void oom_killer_enable(void)
|
||||
oom_killer_disabled = false;
|
||||
}
|
||||
|
||||
static inline bool oom_gfp_allowed(gfp_t gfp_mask)
|
||||
{
|
||||
return (gfp_mask & __GFP_FS) && !(gfp_mask & __GFP_NORETRY);
|
||||
}
|
||||
|
||||
extern struct task_struct *find_lock_task_mm(struct task_struct *p);
|
||||
|
||||
static inline bool task_will_free_mem(struct task_struct *task)
|
||||
|
@@ -450,11 +450,6 @@ struct perf_event {
|
||||
#endif /* CONFIG_PERF_EVENTS */
|
||||
};
|
||||
|
||||
enum perf_event_context_type {
|
||||
task_context,
|
||||
cpu_context,
|
||||
};
|
||||
|
||||
/**
|
||||
* struct perf_event_context - event context structure
|
||||
*
|
||||
@@ -462,7 +457,6 @@ enum perf_event_context_type {
|
||||
*/
|
||||
struct perf_event_context {
|
||||
struct pmu *pmu;
|
||||
enum perf_event_context_type type;
|
||||
/*
|
||||
* Protect the states of the events in the list,
|
||||
* nr_active, and the list:
|
||||
|
@@ -10,9 +10,6 @@
|
||||
extern const char linux_banner[];
|
||||
extern const char linux_proc_banner[];
|
||||
|
||||
extern char *log_buf_addr_get(void);
|
||||
extern u32 log_buf_len_get(void);
|
||||
|
||||
static inline int printk_get_level(const char *buffer)
|
||||
{
|
||||
if (buffer[0] == KERN_SOH_ASCII && buffer[1]) {
|
||||
@@ -163,6 +160,8 @@ extern int kptr_restrict;
|
||||
|
||||
extern void wake_up_klogd(void);
|
||||
|
||||
char *log_buf_addr_get(void);
|
||||
u32 log_buf_len_get(void);
|
||||
void log_buf_kexec_setup(void);
|
||||
void __init setup_log_buf(int early);
|
||||
void dump_stack_set_arch_desc(const char *fmt, ...);
|
||||
@@ -198,6 +197,16 @@ static inline void wake_up_klogd(void)
|
||||
{
|
||||
}
|
||||
|
||||
static inline char *log_buf_addr_get(void)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static inline u32 log_buf_len_get(void)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline void log_buf_kexec_setup(void)
|
||||
{
|
||||
}
|
||||
|
@@ -321,6 +321,49 @@ struct dquot_operations {
|
||||
|
||||
struct path;
|
||||
|
||||
/* Structure for communicating via ->get_dqblk() & ->set_dqblk() */
|
||||
struct qc_dqblk {
|
||||
int d_fieldmask; /* mask of fields to change in ->set_dqblk() */
|
||||
u64 d_spc_hardlimit; /* absolute limit on used space */
|
||||
u64 d_spc_softlimit; /* preferred limit on used space */
|
||||
u64 d_ino_hardlimit; /* maximum # allocated inodes */
|
||||
u64 d_ino_softlimit; /* preferred inode limit */
|
||||
u64 d_space; /* Space owned by the user */
|
||||
u64 d_ino_count; /* # inodes owned by the user */
|
||||
s64 d_ino_timer; /* zero if within inode limits */
|
||||
/* if not, we refuse service */
|
||||
s64 d_spc_timer; /* similar to above; for space */
|
||||
int d_ino_warns; /* # warnings issued wrt num inodes */
|
||||
int d_spc_warns; /* # warnings issued wrt used space */
|
||||
u64 d_rt_spc_hardlimit; /* absolute limit on realtime space */
|
||||
u64 d_rt_spc_softlimit; /* preferred limit on RT space */
|
||||
u64 d_rt_space; /* realtime space owned */
|
||||
s64 d_rt_spc_timer; /* similar to above; for RT space */
|
||||
int d_rt_spc_warns; /* # warnings issued wrt RT space */
|
||||
};
|
||||
|
||||
/* Field specifiers for ->set_dqblk() in struct qc_dqblk */
|
||||
#define QC_INO_SOFT (1<<0)
|
||||
#define QC_INO_HARD (1<<1)
|
||||
#define QC_SPC_SOFT (1<<2)
|
||||
#define QC_SPC_HARD (1<<3)
|
||||
#define QC_RT_SPC_SOFT (1<<4)
|
||||
#define QC_RT_SPC_HARD (1<<5)
|
||||
#define QC_LIMIT_MASK (QC_INO_SOFT | QC_INO_HARD | QC_SPC_SOFT | QC_SPC_HARD | \
|
||||
QC_RT_SPC_SOFT | QC_RT_SPC_HARD)
|
||||
#define QC_SPC_TIMER (1<<6)
|
||||
#define QC_INO_TIMER (1<<7)
|
||||
#define QC_RT_SPC_TIMER (1<<8)
|
||||
#define QC_TIMER_MASK (QC_SPC_TIMER | QC_INO_TIMER | QC_RT_SPC_TIMER)
|
||||
#define QC_SPC_WARNS (1<<9)
|
||||
#define QC_INO_WARNS (1<<10)
|
||||
#define QC_RT_SPC_WARNS (1<<11)
|
||||
#define QC_WARNS_MASK (QC_SPC_WARNS | QC_INO_WARNS | QC_RT_SPC_WARNS)
|
||||
#define QC_SPACE (1<<12)
|
||||
#define QC_INO_COUNT (1<<13)
|
||||
#define QC_RT_SPACE (1<<14)
|
||||
#define QC_ACCT_MASK (QC_SPACE | QC_INO_COUNT | QC_RT_SPACE)
|
||||
|
||||
/* Operations handling requests from userspace */
|
||||
struct quotactl_ops {
|
||||
int (*quota_on)(struct super_block *, int, int, struct path *);
|
||||
@@ -329,8 +372,8 @@ struct quotactl_ops {
|
||||
int (*quota_sync)(struct super_block *, int);
|
||||
int (*get_info)(struct super_block *, int, struct if_dqinfo *);
|
||||
int (*set_info)(struct super_block *, int, struct if_dqinfo *);
|
||||
int (*get_dqblk)(struct super_block *, struct kqid, struct fs_disk_quota *);
|
||||
int (*set_dqblk)(struct super_block *, struct kqid, struct fs_disk_quota *);
|
||||
int (*get_dqblk)(struct super_block *, struct kqid, struct qc_dqblk *);
|
||||
int (*set_dqblk)(struct super_block *, struct kqid, struct qc_dqblk *);
|
||||
int (*get_xstate)(struct super_block *, struct fs_quota_stat *);
|
||||
int (*set_xstate)(struct super_block *, unsigned int, int);
|
||||
int (*get_xstatev)(struct super_block *, struct fs_quota_statv *);
|
||||
|
@@ -98,9 +98,9 @@ int dquot_quota_sync(struct super_block *sb, int type);
|
||||
int dquot_get_dqinfo(struct super_block *sb, int type, struct if_dqinfo *ii);
|
||||
int dquot_set_dqinfo(struct super_block *sb, int type, struct if_dqinfo *ii);
|
||||
int dquot_get_dqblk(struct super_block *sb, struct kqid id,
|
||||
struct fs_disk_quota *di);
|
||||
struct qc_dqblk *di);
|
||||
int dquot_set_dqblk(struct super_block *sb, struct kqid id,
|
||||
struct fs_disk_quota *di);
|
||||
struct qc_dqblk *di);
|
||||
|
||||
int __dquot_transfer(struct inode *inode, struct dquot **transfer_to);
|
||||
int dquot_transfer(struct inode *inode, struct iattr *iattr);
|
||||
|
Reference in New Issue
Block a user