Merge branch 'linus' into sched/core
Merge reason: We are queueing up a dependent patch. Signed-off-by: Ingo Molnar <mingo@elte.hu>
This commit is contained in:
@@ -125,7 +125,11 @@ enum rq_flag_bits {
|
||||
__REQ_SYNC, /* request is sync (sync write or read) */
|
||||
__REQ_META, /* metadata io request */
|
||||
__REQ_DISCARD, /* request to discard sectors */
|
||||
__REQ_SECURE, /* secure discard (used with __REQ_DISCARD) */
|
||||
|
||||
__REQ_NOIDLE, /* don't anticipate more IO after this one */
|
||||
__REQ_FUA, /* forced unit access */
|
||||
__REQ_FLUSH, /* request for cache flush */
|
||||
|
||||
/* bio only flags */
|
||||
__REQ_RAHEAD, /* read ahead, can fail anytime */
|
||||
@@ -135,7 +139,6 @@ enum rq_flag_bits {
|
||||
/* request only flags */
|
||||
__REQ_SORTED, /* elevator knows about this request */
|
||||
__REQ_SOFTBARRIER, /* may not be passed by ioscheduler */
|
||||
__REQ_FUA, /* forced unit access */
|
||||
__REQ_NOMERGE, /* don't touch this for merging */
|
||||
__REQ_STARTED, /* drive already may have started this one */
|
||||
__REQ_DONTPREP, /* don't call prep for this one */
|
||||
@@ -146,11 +149,9 @@ enum rq_flag_bits {
|
||||
__REQ_PREEMPT, /* set for "ide_preempt" requests */
|
||||
__REQ_ALLOCED, /* request came from our alloc pool */
|
||||
__REQ_COPY_USER, /* contains copies of user pages */
|
||||
__REQ_FLUSH, /* request for cache flush */
|
||||
__REQ_FLUSH_SEQ, /* request for flush sequence */
|
||||
__REQ_IO_STAT, /* account I/O stat */
|
||||
__REQ_MIXED_MERGE, /* merge of different types, fail separately */
|
||||
__REQ_SECURE, /* secure discard (used with __REQ_DISCARD) */
|
||||
__REQ_NR_BITS, /* stops here */
|
||||
};
|
||||
|
||||
|
@@ -30,6 +30,7 @@ struct request_pm_state;
|
||||
struct blk_trace;
|
||||
struct request;
|
||||
struct sg_io_hdr;
|
||||
struct bsg_job;
|
||||
|
||||
#define BLKDEV_MIN_RQ 4
|
||||
#define BLKDEV_MAX_RQ 128 /* Default maximum */
|
||||
@@ -117,6 +118,7 @@ struct request {
|
||||
struct {
|
||||
unsigned int seq;
|
||||
struct list_head list;
|
||||
rq_end_io_fn *saved_end_io;
|
||||
} flush;
|
||||
};
|
||||
|
||||
@@ -209,6 +211,7 @@ typedef int (merge_bvec_fn) (struct request_queue *, struct bvec_merge_data *,
|
||||
typedef void (softirq_done_fn)(struct request *);
|
||||
typedef int (dma_drain_needed_fn)(struct request *);
|
||||
typedef int (lld_busy_fn) (struct request_queue *q);
|
||||
typedef int (bsg_job_fn) (struct bsg_job *);
|
||||
|
||||
enum blk_eh_timer_return {
|
||||
BLK_EH_NOT_HANDLED,
|
||||
@@ -375,6 +378,8 @@ struct request_queue {
|
||||
struct mutex sysfs_lock;
|
||||
|
||||
#if defined(CONFIG_BLK_DEV_BSG)
|
||||
bsg_job_fn *bsg_job_fn;
|
||||
int bsg_job_size;
|
||||
struct bsg_class_device bsg_dev;
|
||||
#endif
|
||||
|
||||
|
@@ -14,7 +14,7 @@
|
||||
enum blktrace_cat {
|
||||
BLK_TC_READ = 1 << 0, /* reads */
|
||||
BLK_TC_WRITE = 1 << 1, /* writes */
|
||||
BLK_TC_BARRIER = 1 << 2, /* barrier */
|
||||
BLK_TC_FLUSH = 1 << 2, /* flush */
|
||||
BLK_TC_SYNC = 1 << 3, /* sync IO */
|
||||
BLK_TC_SYNCIO = BLK_TC_SYNC,
|
||||
BLK_TC_QUEUE = 1 << 4, /* queueing/merging */
|
||||
@@ -28,8 +28,9 @@ enum blktrace_cat {
|
||||
BLK_TC_META = 1 << 12, /* metadata */
|
||||
BLK_TC_DISCARD = 1 << 13, /* discard requests */
|
||||
BLK_TC_DRV_DATA = 1 << 14, /* binary per-driver data */
|
||||
BLK_TC_FUA = 1 << 15, /* fua requests */
|
||||
|
||||
BLK_TC_END = 1 << 15, /* only 16-bits, reminder */
|
||||
BLK_TC_END = 1 << 15, /* we've run out of bits! */
|
||||
};
|
||||
|
||||
#define BLK_TC_SHIFT (16)
|
||||
|
73
include/linux/bsg-lib.h
Normal file
73
include/linux/bsg-lib.h
Normal file
@@ -0,0 +1,73 @@
|
||||
/*
|
||||
* BSG helper library
|
||||
*
|
||||
* Copyright (C) 2008 James Smart, Emulex Corporation
|
||||
* Copyright (C) 2011 Red Hat, Inc. All rights reserved.
|
||||
* Copyright (C) 2011 Mike Christie
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*
|
||||
*/
|
||||
#ifndef _BLK_BSG_
|
||||
#define _BLK_BSG_
|
||||
|
||||
#include <linux/blkdev.h>
|
||||
|
||||
struct request;
|
||||
struct device;
|
||||
struct scatterlist;
|
||||
struct request_queue;
|
||||
|
||||
struct bsg_buffer {
|
||||
unsigned int payload_len;
|
||||
int sg_cnt;
|
||||
struct scatterlist *sg_list;
|
||||
};
|
||||
|
||||
struct bsg_job {
|
||||
struct device *dev;
|
||||
struct request *req;
|
||||
|
||||
/* Transport/driver specific request/reply structs */
|
||||
void *request;
|
||||
void *reply;
|
||||
|
||||
unsigned int request_len;
|
||||
unsigned int reply_len;
|
||||
/*
|
||||
* On entry : reply_len indicates the buffer size allocated for
|
||||
* the reply.
|
||||
*
|
||||
* Upon completion : the message handler must set reply_len
|
||||
* to indicates the size of the reply to be returned to the
|
||||
* caller.
|
||||
*/
|
||||
|
||||
/* DMA payloads for the request/response */
|
||||
struct bsg_buffer request_payload;
|
||||
struct bsg_buffer reply_payload;
|
||||
|
||||
void *dd_data; /* Used for driver-specific storage */
|
||||
};
|
||||
|
||||
void bsg_job_done(struct bsg_job *job, int result,
|
||||
unsigned int reply_payload_rcv_len);
|
||||
int bsg_setup_queue(struct device *dev, struct request_queue *q, char *name,
|
||||
bsg_job_fn *job_fn, int dd_job_size);
|
||||
void bsg_request_fn(struct request_queue *q);
|
||||
void bsg_remove_queue(struct request_queue *q);
|
||||
void bsg_goose_queue(struct request_queue *q);
|
||||
|
||||
#endif
|
@@ -438,7 +438,6 @@ asmlinkage long compat_sys_ppoll(struct pollfd __user *ufds,
|
||||
struct compat_timespec __user *tsp,
|
||||
const compat_sigset_t __user *sigmask,
|
||||
compat_size_t sigsetsize);
|
||||
asmlinkage long compat_sys_nfsservctl(int cmd, void *notused, void *notused2);
|
||||
asmlinkage long compat_sys_signalfd4(int ufd,
|
||||
const compat_sigset_t __user *sigmask,
|
||||
compat_size_t sigsetsize, int flags);
|
||||
|
@@ -1,7 +1,7 @@
|
||||
/*
|
||||
* connector.h
|
||||
*
|
||||
* 2004-2005 Copyright (c) Evgeniy Polyakov <johnpol@2ka.mipt.ru>
|
||||
* 2004-2005 Copyright (c) Evgeniy Polyakov <zbr@ioremap.net>
|
||||
* All rights reserved.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
|
@@ -2318,6 +2318,11 @@ extern struct inode * iget5_locked(struct super_block *, unsigned long, int (*te
|
||||
extern struct inode * iget_locked(struct super_block *, unsigned long);
|
||||
extern int insert_inode_locked4(struct inode *, unsigned long, int (*test)(struct inode *, void *), void *);
|
||||
extern int insert_inode_locked(struct inode *);
|
||||
#ifdef CONFIG_DEBUG_LOCK_ALLOC
|
||||
extern void lockdep_annotate_inode_mutex_key(struct inode *inode);
|
||||
#else
|
||||
static inline void lockdep_annotate_inode_mutex_key(struct inode *inode) { };
|
||||
#endif
|
||||
extern void unlock_new_inode(struct inode *);
|
||||
extern unsigned int get_next_ino(void);
|
||||
|
||||
|
@@ -47,6 +47,9 @@
|
||||
* - FUSE_IOCTL_UNRESTRICTED shall now return with array of 'struct
|
||||
* fuse_ioctl_iovec' instead of ambiguous 'struct iovec'
|
||||
* - add FUSE_IOCTL_32BIT flag
|
||||
*
|
||||
* 7.17
|
||||
* - add FUSE_FLOCK_LOCKS and FUSE_RELEASE_FLOCK_UNLOCK
|
||||
*/
|
||||
|
||||
#ifndef _LINUX_FUSE_H
|
||||
@@ -78,7 +81,7 @@
|
||||
#define FUSE_KERNEL_VERSION 7
|
||||
|
||||
/** Minor version number of this interface */
|
||||
#define FUSE_KERNEL_MINOR_VERSION 16
|
||||
#define FUSE_KERNEL_MINOR_VERSION 17
|
||||
|
||||
/** The node ID of the root inode */
|
||||
#define FUSE_ROOT_ID 1
|
||||
@@ -153,8 +156,10 @@ struct fuse_file_lock {
|
||||
/**
|
||||
* INIT request/reply flags
|
||||
*
|
||||
* FUSE_POSIX_LOCKS: remote locking for POSIX file locks
|
||||
* FUSE_EXPORT_SUPPORT: filesystem handles lookups of "." and ".."
|
||||
* FUSE_DONT_MASK: don't apply umask to file mode on create operations
|
||||
* FUSE_FLOCK_LOCKS: remote locking for BSD style file locks
|
||||
*/
|
||||
#define FUSE_ASYNC_READ (1 << 0)
|
||||
#define FUSE_POSIX_LOCKS (1 << 1)
|
||||
@@ -163,6 +168,7 @@ struct fuse_file_lock {
|
||||
#define FUSE_EXPORT_SUPPORT (1 << 4)
|
||||
#define FUSE_BIG_WRITES (1 << 5)
|
||||
#define FUSE_DONT_MASK (1 << 6)
|
||||
#define FUSE_FLOCK_LOCKS (1 << 10)
|
||||
|
||||
/**
|
||||
* CUSE INIT request/reply flags
|
||||
@@ -175,6 +181,7 @@ struct fuse_file_lock {
|
||||
* Release flags
|
||||
*/
|
||||
#define FUSE_RELEASE_FLUSH (1 << 0)
|
||||
#define FUSE_RELEASE_FLOCK_UNLOCK (1 << 1)
|
||||
|
||||
/**
|
||||
* Getattr flags
|
||||
|
@@ -63,7 +63,7 @@ static inline u32 hash_32(u32 val, unsigned int bits)
|
||||
return hash >> (32 - bits);
|
||||
}
|
||||
|
||||
static inline unsigned long hash_ptr(void *ptr, unsigned int bits)
|
||||
static inline unsigned long hash_ptr(const void *ptr, unsigned int bits)
|
||||
{
|
||||
return hash_long((unsigned long)ptr, bits);
|
||||
}
|
||||
|
@@ -23,6 +23,7 @@
|
||||
#include <linux/errno.h>
|
||||
#include <linux/topology.h>
|
||||
#include <linux/wait.h>
|
||||
#include <linux/module.h>
|
||||
|
||||
#include <asm/irq.h>
|
||||
#include <asm/ptrace.h>
|
||||
@@ -547,7 +548,15 @@ static inline struct msi_desc *irq_data_get_msi(struct irq_data *d)
|
||||
return d->msi_desc;
|
||||
}
|
||||
|
||||
int irq_alloc_descs(int irq, unsigned int from, unsigned int cnt, int node);
|
||||
int __irq_alloc_descs(int irq, unsigned int from, unsigned int cnt, int node,
|
||||
struct module *owner);
|
||||
|
||||
static inline int irq_alloc_descs(int irq, unsigned int from, unsigned int cnt,
|
||||
int node)
|
||||
{
|
||||
return __irq_alloc_descs(irq, from, cnt, node, THIS_MODULE);
|
||||
}
|
||||
|
||||
void irq_free_descs(unsigned int irq, unsigned int cnt);
|
||||
int irq_reserve_irqs(unsigned int from, unsigned int cnt);
|
||||
|
||||
|
@@ -66,6 +66,7 @@ struct irq_desc {
|
||||
#ifdef CONFIG_PROC_FS
|
||||
struct proc_dir_entry *dir;
|
||||
#endif
|
||||
struct module *owner;
|
||||
const char *name;
|
||||
} ____cacheline_internodealigned_in_smp;
|
||||
|
||||
|
@@ -64,7 +64,6 @@ struct loop_device {
|
||||
|
||||
struct request_queue *lo_queue;
|
||||
struct gendisk *lo_disk;
|
||||
struct list_head lo_list;
|
||||
};
|
||||
|
||||
#endif /* __KERNEL__ */
|
||||
@@ -161,4 +160,8 @@ int loop_unregister_transfer(int number);
|
||||
#define LOOP_CHANGE_FD 0x4C06
|
||||
#define LOOP_SET_CAPACITY 0x4C07
|
||||
|
||||
/* /dev/loop-control interface */
|
||||
#define LOOP_CTL_ADD 0x4C80
|
||||
#define LOOP_CTL_REMOVE 0x4C81
|
||||
#define LOOP_CTL_GET_FREE 0x4C82
|
||||
#endif
|
||||
|
@@ -40,6 +40,7 @@
|
||||
#define BTRFS_MINOR 234
|
||||
#define AUTOFS_MINOR 235
|
||||
#define MAPPER_CTRL_MINOR 236
|
||||
#define LOOP_CTRL_MINOR 237
|
||||
#define MISC_DYNAMIC_MINOR 255
|
||||
|
||||
struct device;
|
||||
|
@@ -685,7 +685,7 @@ static inline void set_page_section(struct page *page, unsigned long section)
|
||||
page->flags |= (section & SECTIONS_MASK) << SECTIONS_PGSHIFT;
|
||||
}
|
||||
|
||||
static inline unsigned long page_to_section(struct page *page)
|
||||
static inline unsigned long page_to_section(const struct page *page)
|
||||
{
|
||||
return (page->flags >> SECTIONS_PGSHIFT) & SECTIONS_MASK;
|
||||
}
|
||||
@@ -720,7 +720,7 @@ static inline void set_page_links(struct page *page, enum zone_type zone,
|
||||
|
||||
static __always_inline void *lowmem_page_address(const struct page *page)
|
||||
{
|
||||
return __va(PFN_PHYS(page_to_pfn((struct page *)page)));
|
||||
return __va(PFN_PHYS(page_to_pfn(page)));
|
||||
}
|
||||
|
||||
#if defined(CONFIG_HIGHMEM) && !defined(WANT_PAGE_VIRTUAL)
|
||||
@@ -737,7 +737,7 @@ static __always_inline void *lowmem_page_address(const struct page *page)
|
||||
#endif
|
||||
|
||||
#if defined(HASHED_PAGE_VIRTUAL)
|
||||
void *page_address(struct page *page);
|
||||
void *page_address(const struct page *page);
|
||||
void set_page_address(struct page *page, void *virtual);
|
||||
void page_address_init(void);
|
||||
#endif
|
||||
|
@@ -56,8 +56,6 @@ struct mmc_ios {
|
||||
#define MMC_TIMING_UHS_SDR104 4
|
||||
#define MMC_TIMING_UHS_DDR50 5
|
||||
|
||||
unsigned char ddr; /* dual data rate used */
|
||||
|
||||
#define MMC_SDR_MODE 0
|
||||
#define MMC_1_2V_DDR_MODE 1
|
||||
#define MMC_1_8V_DDR_MODE 2
|
||||
|
@@ -29,7 +29,7 @@
|
||||
#define MAX_LINKS 32
|
||||
|
||||
struct sockaddr_nl {
|
||||
sa_family_t nl_family; /* AF_NETLINK */
|
||||
__kernel_sa_family_t nl_family; /* AF_NETLINK */
|
||||
unsigned short nl_pad; /* zero */
|
||||
__u32 nl_pid; /* port ID */
|
||||
__u32 nl_groups; /* multicast groups mask */
|
||||
|
@@ -256,6 +256,13 @@ static inline int of_property_read_string(struct device_node *np,
|
||||
return -ENOSYS;
|
||||
}
|
||||
|
||||
static inline const void *of_get_property(const struct device_node *node,
|
||||
const char *name,
|
||||
int *lenp)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
#endif /* CONFIG_OF */
|
||||
|
||||
static inline int of_property_read_u32(const struct device_node *np,
|
||||
|
@@ -251,7 +251,8 @@ struct pci_dev {
|
||||
u8 revision; /* PCI revision, low byte of class word */
|
||||
u8 hdr_type; /* PCI header type (`multi' flag masked out) */
|
||||
u8 pcie_cap; /* PCI-E capability offset */
|
||||
u8 pcie_type; /* PCI-E device/port type */
|
||||
u8 pcie_type:4; /* PCI-E device/port type */
|
||||
u8 pcie_mpss:3; /* PCI-E Max Payload Size Supported */
|
||||
u8 rom_base_reg; /* which config register controls the ROM */
|
||||
u8 pin; /* which interrupt pin this device uses */
|
||||
|
||||
@@ -617,6 +618,16 @@ struct pci_driver {
|
||||
/* these external functions are only available when PCI support is enabled */
|
||||
#ifdef CONFIG_PCI
|
||||
|
||||
extern void pcie_bus_configure_settings(struct pci_bus *bus, u8 smpss);
|
||||
|
||||
enum pcie_bus_config_types {
|
||||
PCIE_BUS_PERFORMANCE,
|
||||
PCIE_BUS_SAFE,
|
||||
PCIE_BUS_PEER2PEER,
|
||||
};
|
||||
|
||||
extern enum pcie_bus_config_types pcie_bus_config;
|
||||
|
||||
extern struct bus_type pci_bus_type;
|
||||
|
||||
/* Do NOT directly access these two variables, unless you are arch specific pci
|
||||
@@ -796,10 +807,13 @@ int pcix_get_mmrbc(struct pci_dev *dev);
|
||||
int pcix_set_mmrbc(struct pci_dev *dev, int mmrbc);
|
||||
int pcie_get_readrq(struct pci_dev *dev);
|
||||
int pcie_set_readrq(struct pci_dev *dev, int rq);
|
||||
int pcie_get_mps(struct pci_dev *dev);
|
||||
int pcie_set_mps(struct pci_dev *dev, int mps);
|
||||
int __pci_reset_function(struct pci_dev *dev);
|
||||
int pci_reset_function(struct pci_dev *dev);
|
||||
void pci_update_resource(struct pci_dev *dev, int resno);
|
||||
int __must_check pci_assign_resource(struct pci_dev *dev, int i);
|
||||
int __must_check pci_reassign_resource(struct pci_dev *dev, int i, resource_size_t add_size, resource_size_t align);
|
||||
int pci_select_bars(struct pci_dev *dev, unsigned long flags);
|
||||
|
||||
/* ROM control related routines */
|
||||
|
@@ -944,8 +944,10 @@ extern void perf_pmu_unregister(struct pmu *pmu);
|
||||
|
||||
extern int perf_num_counters(void);
|
||||
extern const char *perf_pmu_name(void);
|
||||
extern void __perf_event_task_sched_in(struct task_struct *task);
|
||||
extern void __perf_event_task_sched_out(struct task_struct *task, struct task_struct *next);
|
||||
extern void __perf_event_task_sched_in(struct task_struct *prev,
|
||||
struct task_struct *task);
|
||||
extern void __perf_event_task_sched_out(struct task_struct *prev,
|
||||
struct task_struct *next);
|
||||
extern int perf_event_init_task(struct task_struct *child);
|
||||
extern void perf_event_exit_task(struct task_struct *child);
|
||||
extern void perf_event_free_task(struct task_struct *task);
|
||||
@@ -1059,17 +1061,20 @@ perf_sw_event(u32 event_id, u64 nr, struct pt_regs *regs, u64 addr)
|
||||
|
||||
extern struct jump_label_key perf_sched_events;
|
||||
|
||||
static inline void perf_event_task_sched_in(struct task_struct *task)
|
||||
static inline void perf_event_task_sched_in(struct task_struct *prev,
|
||||
struct task_struct *task)
|
||||
{
|
||||
if (static_branch(&perf_sched_events))
|
||||
__perf_event_task_sched_in(task);
|
||||
__perf_event_task_sched_in(prev, task);
|
||||
}
|
||||
|
||||
static inline void perf_event_task_sched_out(struct task_struct *task, struct task_struct *next)
|
||||
static inline void perf_event_task_sched_out(struct task_struct *prev,
|
||||
struct task_struct *next)
|
||||
{
|
||||
perf_sw_event(PERF_COUNT_SW_CONTEXT_SWITCHES, 1, NULL, 0);
|
||||
|
||||
__perf_event_task_sched_out(task, next);
|
||||
if (static_branch(&perf_sched_events))
|
||||
__perf_event_task_sched_out(prev, next);
|
||||
}
|
||||
|
||||
extern void perf_event_mmap(struct vm_area_struct *vma);
|
||||
@@ -1139,10 +1144,11 @@ extern void perf_event_disable(struct perf_event *event);
|
||||
extern void perf_event_task_tick(void);
|
||||
#else
|
||||
static inline void
|
||||
perf_event_task_sched_in(struct task_struct *task) { }
|
||||
perf_event_task_sched_in(struct task_struct *prev,
|
||||
struct task_struct *task) { }
|
||||
static inline void
|
||||
perf_event_task_sched_out(struct task_struct *task,
|
||||
struct task_struct *next) { }
|
||||
perf_event_task_sched_out(struct task_struct *prev,
|
||||
struct task_struct *next) { }
|
||||
static inline int perf_event_init_task(struct task_struct *child) { return 0; }
|
||||
static inline void perf_event_exit_task(struct task_struct *child) { }
|
||||
static inline void perf_event_free_task(struct task_struct *task) { }
|
||||
|
@@ -22,6 +22,7 @@ extern int __set_personality(unsigned int);
|
||||
* These occupy the top three bytes.
|
||||
*/
|
||||
enum {
|
||||
UNAME26 = 0x0020000,
|
||||
ADDR_NO_RANDOMIZE = 0x0040000, /* disable randomization of VA space */
|
||||
FDPIC_FUNCPTRS = 0x0080000, /* userspace function ptrs point to descriptors
|
||||
* (signal handling)
|
||||
|
@@ -72,8 +72,6 @@ extern int pm_genpd_remove_subdomain(struct generic_pm_domain *genpd,
|
||||
extern void pm_genpd_init(struct generic_pm_domain *genpd,
|
||||
struct dev_power_governor *gov, bool is_off);
|
||||
extern int pm_genpd_poweron(struct generic_pm_domain *genpd);
|
||||
extern void pm_genpd_poweroff_unused(void);
|
||||
extern void genpd_queue_power_off_work(struct generic_pm_domain *genpd);
|
||||
#else
|
||||
static inline int pm_genpd_add_device(struct generic_pm_domain *genpd,
|
||||
struct device *dev)
|
||||
@@ -101,8 +99,14 @@ static inline int pm_genpd_poweron(struct generic_pm_domain *genpd)
|
||||
{
|
||||
return -ENOSYS;
|
||||
}
|
||||
static inline void pm_genpd_poweroff_unused(void) {}
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_PM_GENERIC_DOMAINS_RUNTIME
|
||||
extern void genpd_queue_power_off_work(struct generic_pm_domain *genpd);
|
||||
extern void pm_genpd_poweroff_unused(void);
|
||||
#else
|
||||
static inline void genpd_queue_power_off_work(struct generic_pm_domain *gpd) {}
|
||||
static inline void pm_genpd_poweroff_unused(void) {}
|
||||
#endif
|
||||
|
||||
#endif /* _LINUX_PM_DOMAIN_H */
|
||||
|
@@ -14,6 +14,7 @@ struct platform_pwm_backlight_data {
|
||||
unsigned int pwm_period_ns;
|
||||
int (*init)(struct device *dev);
|
||||
int (*notify)(struct device *dev, int brightness);
|
||||
void (*notify_after)(struct device *dev, int brightness);
|
||||
void (*exit)(struct device *dev);
|
||||
int (*check_fb)(struct device *dev, struct fb_info *info);
|
||||
};
|
||||
|
@@ -123,7 +123,7 @@ struct regulator_bulk_data {
|
||||
const char *supply;
|
||||
struct regulator *consumer;
|
||||
|
||||
/* Internal use */
|
||||
/* private: Internal use */
|
||||
int ret;
|
||||
};
|
||||
|
||||
|
@@ -36,12 +36,12 @@
|
||||
#define RIO_PEF_PROCESSOR 0x20000000 /* [I] Processor */
|
||||
#define RIO_PEF_SWITCH 0x10000000 /* [I] Switch */
|
||||
#define RIO_PEF_MULTIPORT 0x08000000 /* [VI, 2.1] Multiport */
|
||||
#define RIO_PEF_INB_MBOX 0x00f00000 /* [II] Mailboxes */
|
||||
#define RIO_PEF_INB_MBOX0 0x00800000 /* [II] Mailbox 0 */
|
||||
#define RIO_PEF_INB_MBOX1 0x00400000 /* [II] Mailbox 1 */
|
||||
#define RIO_PEF_INB_MBOX2 0x00200000 /* [II] Mailbox 2 */
|
||||
#define RIO_PEF_INB_MBOX3 0x00100000 /* [II] Mailbox 3 */
|
||||
#define RIO_PEF_INB_DOORBELL 0x00080000 /* [II] Doorbells */
|
||||
#define RIO_PEF_INB_MBOX 0x00f00000 /* [II, <= 1.2] Mailboxes */
|
||||
#define RIO_PEF_INB_MBOX0 0x00800000 /* [II, <= 1.2] Mailbox 0 */
|
||||
#define RIO_PEF_INB_MBOX1 0x00400000 /* [II, <= 1.2] Mailbox 1 */
|
||||
#define RIO_PEF_INB_MBOX2 0x00200000 /* [II, <= 1.2] Mailbox 2 */
|
||||
#define RIO_PEF_INB_MBOX3 0x00100000 /* [II, <= 1.2] Mailbox 3 */
|
||||
#define RIO_PEF_INB_DOORBELL 0x00080000 /* [II, <= 1.2] Doorbells */
|
||||
#define RIO_PEF_EXT_RT 0x00000200 /* [III, 1.3] Extended route table support */
|
||||
#define RIO_PEF_STD_RT 0x00000100 /* [III, 1.3] Standard route table support */
|
||||
#define RIO_PEF_CTLS 0x00000010 /* [III] CTLS */
|
||||
@@ -102,7 +102,7 @@
|
||||
#define RIO_SWITCH_RT_LIMIT 0x34 /* [III, 1.3] Switch Route Table Destination ID Limit CAR */
|
||||
#define RIO_RT_MAX_DESTID 0x0000ffff
|
||||
|
||||
#define RIO_MBOX_CSR 0x40 /* [II] Mailbox CSR */
|
||||
#define RIO_MBOX_CSR 0x40 /* [II, <= 1.2] Mailbox CSR */
|
||||
#define RIO_MBOX0_AVAIL 0x80000000 /* [II] Mbox 0 avail */
|
||||
#define RIO_MBOX0_FULL 0x40000000 /* [II] Mbox 0 full */
|
||||
#define RIO_MBOX0_EMPTY 0x20000000 /* [II] Mbox 0 empty */
|
||||
@@ -128,8 +128,8 @@
|
||||
#define RIO_MBOX3_FAIL 0x00000008 /* [II] Mbox 3 fail */
|
||||
#define RIO_MBOX3_ERROR 0x00000004 /* [II] Mbox 3 error */
|
||||
|
||||
#define RIO_WRITE_PORT_CSR 0x44 /* [I] Write Port CSR */
|
||||
#define RIO_DOORBELL_CSR 0x44 /* [II] Doorbell CSR */
|
||||
#define RIO_WRITE_PORT_CSR 0x44 /* [I, <= 1.2] Write Port CSR */
|
||||
#define RIO_DOORBELL_CSR 0x44 /* [II, <= 1.2] Doorbell CSR */
|
||||
#define RIO_DOORBELL_AVAIL 0x80000000 /* [II] Doorbell avail */
|
||||
#define RIO_DOORBELL_FULL 0x40000000 /* [II] Doorbell full */
|
||||
#define RIO_DOORBELL_EMPTY 0x20000000 /* [II] Doorbell empty */
|
||||
|
@@ -97,6 +97,9 @@ struct rtc_pll_info {
|
||||
#define RTC_AF 0x20 /* Alarm interrupt */
|
||||
#define RTC_UF 0x10 /* Update interrupt for 1Hz RTC */
|
||||
|
||||
|
||||
#define RTC_MAX_FREQ 8192
|
||||
|
||||
#ifdef __KERNEL__
|
||||
|
||||
#include <linux/types.h>
|
||||
|
@@ -8,8 +8,10 @@
|
||||
#define _K_SS_ALIGNSIZE (__alignof__ (struct sockaddr *))
|
||||
/* Implementation specific desired alignment */
|
||||
|
||||
typedef unsigned short __kernel_sa_family_t;
|
||||
|
||||
struct __kernel_sockaddr_storage {
|
||||
unsigned short ss_family; /* address family */
|
||||
__kernel_sa_family_t ss_family; /* address family */
|
||||
/* Following field(s) are implementation specific */
|
||||
char __data[_K_SS_MAXSIZE - sizeof(unsigned short)];
|
||||
/* space to achieve desired size, */
|
||||
@@ -35,7 +37,7 @@ struct seq_file;
|
||||
extern void socket_seq_show(struct seq_file *seq);
|
||||
#endif
|
||||
|
||||
typedef unsigned short sa_family_t;
|
||||
typedef __kernel_sa_family_t sa_family_t;
|
||||
|
||||
/*
|
||||
* 1003.1g requires sa_family_t and that sa_data is char.
|
||||
|
@@ -702,9 +702,6 @@ asmlinkage long sys_sysctl(struct __sysctl_args __user *args);
|
||||
asmlinkage long sys_sysinfo(struct sysinfo __user *info);
|
||||
asmlinkage long sys_sysfs(int option,
|
||||
unsigned long arg1, unsigned long arg2);
|
||||
asmlinkage long sys_nfsservctl(int cmd,
|
||||
struct nfsctl_arg __user *arg,
|
||||
void __user *res);
|
||||
asmlinkage long sys_syslog(int type, char __user *buf, int len);
|
||||
asmlinkage long sys_uselib(const char __user *library);
|
||||
asmlinkage long sys_ni_syscall(void);
|
||||
|
@@ -410,7 +410,28 @@ struct gps_event_hdr {
|
||||
u16 plen;
|
||||
} __attribute__ ((packed));
|
||||
|
||||
/* platform data */
|
||||
/**
|
||||
* struct ti_st_plat_data - platform data shared between ST driver and
|
||||
* platform specific board file which adds the ST device.
|
||||
* @nshutdown_gpio: Host's GPIO line to which chip's BT_EN is connected.
|
||||
* @dev_name: The UART/TTY name to which chip is interfaced. (eg: /dev/ttyS1)
|
||||
* @flow_cntrl: Should always be 1, since UART's CTS/RTS is used for PM
|
||||
* purposes.
|
||||
* @baud_rate: The baud rate supported by the Host UART controller, this will
|
||||
* be shared across with the chip via a HCI VS command from User-Space Init
|
||||
* Mgr application.
|
||||
* @suspend:
|
||||
* @resume: legacy PM routines hooked to platform specific board file, so as
|
||||
* to take chip-host interface specific action.
|
||||
* @chip_enable:
|
||||
* @chip_disable: Platform/Interface specific mux mode setting, GPIO
|
||||
* configuring, Host side PM disabling etc.. can be done here.
|
||||
* @chip_asleep:
|
||||
* @chip_awake: Chip specific deep sleep states is communicated to Host
|
||||
* specific board-xx.c to take actions such as cut UART clocks when chip
|
||||
* asleep or run host faster when chip awake etc..
|
||||
*
|
||||
*/
|
||||
struct ti_st_plat_data {
|
||||
long nshutdown_gpio;
|
||||
unsigned char dev_name[UART_DEV_NAME_LEN]; /* uart name */
|
||||
@@ -418,6 +439,10 @@ struct ti_st_plat_data {
|
||||
unsigned long baud_rate;
|
||||
int (*suspend)(struct platform_device *, pm_message_t);
|
||||
int (*resume)(struct platform_device *);
|
||||
int (*chip_enable) (struct kim_data_s *);
|
||||
int (*chip_disable) (struct kim_data_s *);
|
||||
int (*chip_asleep) (struct kim_data_s *);
|
||||
int (*chip_awake) (struct kim_data_s *);
|
||||
};
|
||||
|
||||
#endif /* TI_WILINK_ST_H */
|
||||
|
@@ -421,6 +421,8 @@ extern void tty_driver_flush_buffer(struct tty_struct *tty);
|
||||
extern void tty_throttle(struct tty_struct *tty);
|
||||
extern void tty_unthrottle(struct tty_struct *tty);
|
||||
extern int tty_do_resize(struct tty_struct *tty, struct winsize *ws);
|
||||
extern void tty_driver_remove_tty(struct tty_driver *driver,
|
||||
struct tty_struct *tty);
|
||||
extern void tty_shutdown(struct tty_struct *tty);
|
||||
extern void tty_free_termios(struct tty_struct *tty);
|
||||
extern int is_current_pgrp_orphaned(void);
|
||||
|
@@ -47,6 +47,9 @@
|
||||
*
|
||||
* This routine is called synchronously when a particular tty device
|
||||
* is closed for the last time freeing up the resources.
|
||||
* Note that tty_shutdown() is not called if ops->shutdown is defined.
|
||||
* This means one is responsible to take care of calling ops->remove (e.g.
|
||||
* via tty_driver_remove_tty) and releasing tty->termios.
|
||||
*
|
||||
*
|
||||
* void (*cleanup)(struct tty_struct * tty);
|
||||
|
@@ -12,15 +12,6 @@
|
||||
*
|
||||
* (thresh - thresh/DIRTY_FULL_SCOPE, thresh)
|
||||
*
|
||||
* The 1/16 region above the global dirty limit will be put to maximum pauses:
|
||||
*
|
||||
* (limit, limit + limit/DIRTY_MAXPAUSE_AREA)
|
||||
*
|
||||
* The 1/16 region above the max-pause region, dirty exceeded bdi's will be put
|
||||
* to loops:
|
||||
*
|
||||
* (limit + limit/DIRTY_MAXPAUSE_AREA, limit + limit/DIRTY_PASSGOOD_AREA)
|
||||
*
|
||||
* Further beyond, all dirtier tasks will enter a loop waiting (possibly long
|
||||
* time) for the dirty pages to drop, unless written enough pages.
|
||||
*
|
||||
@@ -31,8 +22,6 @@
|
||||
*/
|
||||
#define DIRTY_SCOPE 8
|
||||
#define DIRTY_FULL_SCOPE (DIRTY_SCOPE / 2)
|
||||
#define DIRTY_MAXPAUSE_AREA 16
|
||||
#define DIRTY_PASSGOOD_AREA 8
|
||||
|
||||
/*
|
||||
* 4MB minimal write chunk size
|
||||
|
Reference in New Issue
Block a user