Merge branch 'master' into for-linus
This commit is contained in:
@@ -79,9 +79,12 @@ struct agp_memory {
|
||||
u32 physical;
|
||||
bool is_bound;
|
||||
bool is_flushed;
|
||||
bool vmalloc_flag;
|
||||
bool vmalloc_flag;
|
||||
/* list of agp_memory mapped to the aperture */
|
||||
struct list_head mapped_list;
|
||||
/* DMA-mapped addresses */
|
||||
struct scatterlist *sg_list;
|
||||
int num_sg;
|
||||
};
|
||||
|
||||
#define AGP_NORMAL_MEMORY 0
|
||||
|
@@ -17,7 +17,7 @@ struct attribute_container {
|
||||
struct list_head node;
|
||||
struct klist containers;
|
||||
struct class *class;
|
||||
struct attribute_group *grp;
|
||||
const struct attribute_group *grp;
|
||||
struct device_attribute **attrs;
|
||||
int (*match)(struct attribute_container *, struct device *);
|
||||
#define ATTRIBUTE_CONTAINER_NO_CLASSDEVS 0x01
|
||||
|
@@ -59,6 +59,7 @@ struct bdi_writeback {
|
||||
|
||||
struct backing_dev_info {
|
||||
struct list_head bdi_list;
|
||||
struct rcu_head rcu_head;
|
||||
unsigned long ra_pages; /* max readahead in PAGE_CACHE_SIZE units */
|
||||
unsigned long state; /* Always use atomic bitops on this */
|
||||
unsigned int capabilities; /* Device capabilities */
|
||||
@@ -100,7 +101,7 @@ int bdi_register(struct backing_dev_info *bdi, struct device *parent,
|
||||
const char *fmt, ...);
|
||||
int bdi_register_dev(struct backing_dev_info *bdi, dev_t dev);
|
||||
void bdi_unregister(struct backing_dev_info *bdi);
|
||||
void bdi_start_writeback(struct writeback_control *wbc);
|
||||
void bdi_start_writeback(struct backing_dev_info *bdi, long nr_pages);
|
||||
int bdi_writeback_task(struct bdi_writeback *wb);
|
||||
int bdi_has_dirty_io(struct backing_dev_info *bdi);
|
||||
|
||||
|
@@ -2,7 +2,8 @@
|
||||
* device.h - generic, centralized driver model
|
||||
*
|
||||
* Copyright (c) 2001-2003 Patrick Mochel <mochel@osdl.org>
|
||||
* Copyright (c) 2004-2007 Greg Kroah-Hartman <gregkh@suse.de>
|
||||
* Copyright (c) 2004-2009 Greg Kroah-Hartman <gregkh@suse.de>
|
||||
* Copyright (c) 2008-2009 Novell Inc.
|
||||
*
|
||||
* This file is released under the GPLv2
|
||||
*
|
||||
@@ -130,7 +131,7 @@ struct device_driver {
|
||||
void (*shutdown) (struct device *dev);
|
||||
int (*suspend) (struct device *dev, pm_message_t state);
|
||||
int (*resume) (struct device *dev);
|
||||
struct attribute_group **groups;
|
||||
const struct attribute_group **groups;
|
||||
|
||||
const struct dev_pm_ops *pm;
|
||||
|
||||
@@ -224,6 +225,14 @@ extern void class_unregister(struct class *class);
|
||||
__class_register(class, &__key); \
|
||||
})
|
||||
|
||||
struct class_compat;
|
||||
struct class_compat *class_compat_register(const char *name);
|
||||
void class_compat_unregister(struct class_compat *cls);
|
||||
int class_compat_create_link(struct class_compat *cls, struct device *dev,
|
||||
struct device *device_link);
|
||||
void class_compat_remove_link(struct class_compat *cls, struct device *dev,
|
||||
struct device *device_link);
|
||||
|
||||
extern void class_dev_iter_init(struct class_dev_iter *iter,
|
||||
struct class *class,
|
||||
struct device *start,
|
||||
@@ -287,7 +296,7 @@ extern void class_destroy(struct class *cls);
|
||||
*/
|
||||
struct device_type {
|
||||
const char *name;
|
||||
struct attribute_group **groups;
|
||||
const struct attribute_group **groups;
|
||||
int (*uevent)(struct device *dev, struct kobj_uevent_env *env);
|
||||
char *(*nodename)(struct device *dev);
|
||||
void (*release)(struct device *dev);
|
||||
@@ -381,7 +390,6 @@ struct device {
|
||||
struct bus_type *bus; /* type of bus device is on */
|
||||
struct device_driver *driver; /* which driver has allocated this
|
||||
device */
|
||||
void *driver_data; /* data private to the driver */
|
||||
void *platform_data; /* Platform specific data, device
|
||||
core doesn't touch it */
|
||||
struct dev_pm_info power;
|
||||
@@ -412,7 +420,7 @@ struct device {
|
||||
|
||||
struct klist_node knode_class;
|
||||
struct class *class;
|
||||
struct attribute_group **groups; /* optional groups */
|
||||
const struct attribute_group **groups; /* optional groups */
|
||||
|
||||
void (*release)(struct device *dev);
|
||||
};
|
||||
@@ -447,16 +455,6 @@ static inline void set_dev_node(struct device *dev, int node)
|
||||
}
|
||||
#endif
|
||||
|
||||
static inline void *dev_get_drvdata(const struct device *dev)
|
||||
{
|
||||
return dev->driver_data;
|
||||
}
|
||||
|
||||
static inline void dev_set_drvdata(struct device *dev, void *data)
|
||||
{
|
||||
dev->driver_data = data;
|
||||
}
|
||||
|
||||
static inline unsigned int dev_get_uevent_suppress(const struct device *dev)
|
||||
{
|
||||
return dev->kobj.uevent_suppress;
|
||||
@@ -490,6 +488,8 @@ extern int device_rename(struct device *dev, char *new_name);
|
||||
extern int device_move(struct device *dev, struct device *new_parent,
|
||||
enum dpm_order dpm_order);
|
||||
extern const char *device_get_nodename(struct device *dev, const char **tmp);
|
||||
extern void *dev_get_drvdata(const struct device *dev);
|
||||
extern void dev_set_drvdata(struct device *dev, void *data);
|
||||
|
||||
/*
|
||||
* Root device objects for grouping under /sys/devices
|
||||
@@ -502,6 +502,11 @@ static inline struct device *root_device_register(const char *name)
|
||||
}
|
||||
extern void root_device_unregister(struct device *root);
|
||||
|
||||
static inline void *dev_get_platdata(const struct device *dev)
|
||||
{
|
||||
return dev->platform_data;
|
||||
}
|
||||
|
||||
/*
|
||||
* Manual binding of a device to driver. See drivers/base/bus.c
|
||||
* for information on use.
|
||||
@@ -547,6 +552,16 @@ extern void put_device(struct device *dev);
|
||||
|
||||
extern void wait_for_device_probe(void);
|
||||
|
||||
#ifdef CONFIG_DEVTMPFS
|
||||
extern int devtmpfs_create_node(struct device *dev);
|
||||
extern int devtmpfs_delete_node(struct device *dev);
|
||||
extern int devtmpfs_mount(const char *mountpoint);
|
||||
#else
|
||||
static inline int devtmpfs_create_node(struct device *dev) { return 0; }
|
||||
static inline int devtmpfs_delete_node(struct device *dev) { return 0; }
|
||||
static inline int devtmpfs_mount(const char *mountpoint) { return 0; }
|
||||
#endif
|
||||
|
||||
/* drivers/base/power/shutdown.c */
|
||||
extern void device_shutdown(void);
|
||||
|
||||
|
@@ -58,6 +58,7 @@ struct dma_map_ops {
|
||||
enum dma_data_direction dir);
|
||||
int (*mapping_error)(struct device *dev, dma_addr_t dma_addr);
|
||||
int (*dma_supported)(struct device *dev, u64 mask);
|
||||
int (*set_dma_mask)(struct device *dev, u64 mask);
|
||||
int is_phys;
|
||||
};
|
||||
|
||||
|
@@ -151,5 +151,7 @@ struct dmx_stc {
|
||||
#define DMX_GET_CAPS _IOR('o', 48, dmx_caps_t)
|
||||
#define DMX_SET_SOURCE _IOW('o', 49, dmx_source_t)
|
||||
#define DMX_GET_STC _IOWR('o', 50, struct dmx_stc)
|
||||
#define DMX_ADD_PID _IOW('o', 51, __u16)
|
||||
#define DMX_REMOVE_PID _IOW('o', 52, __u16)
|
||||
|
||||
#endif /*_DVBDMX_H_*/
|
||||
|
@@ -655,7 +655,6 @@ struct block_device {
|
||||
int bd_invalidated;
|
||||
struct gendisk * bd_disk;
|
||||
struct list_head bd_list;
|
||||
struct backing_dev_info *bd_inode_backing_dev_info;
|
||||
/*
|
||||
* Private data. You must have bd_claim'ed the block_device
|
||||
* to use this. NOTE: bd_claim allows an owner to claim
|
||||
@@ -1343,6 +1342,7 @@ struct super_block {
|
||||
int s_nr_dentry_unused; /* # of dentry on lru */
|
||||
|
||||
struct block_device *s_bdev;
|
||||
struct backing_dev_info *s_bdi;
|
||||
struct mtd_info *s_mtd;
|
||||
struct list_head s_instances;
|
||||
struct quota_info s_dquot; /* Diskquota specific options */
|
||||
|
@@ -1,8 +1,8 @@
|
||||
#ifndef _LINUX_FTRACE_EVENT_H
|
||||
#define _LINUX_FTRACE_EVENT_H
|
||||
|
||||
#include <linux/trace_seq.h>
|
||||
#include <linux/ring_buffer.h>
|
||||
#include <linux/trace_seq.h>
|
||||
#include <linux/percpu.h>
|
||||
|
||||
struct trace_array;
|
||||
@@ -34,7 +34,7 @@ struct trace_entry {
|
||||
unsigned char flags;
|
||||
unsigned char preempt_count;
|
||||
int pid;
|
||||
int tgid;
|
||||
int lock_depth;
|
||||
};
|
||||
|
||||
#define FTRACE_MAX_EVENT \
|
||||
@@ -135,7 +135,7 @@ struct ftrace_event_call {
|
||||
};
|
||||
|
||||
#define MAX_FILTER_PRED 32
|
||||
#define MAX_FILTER_STR_VAL 128
|
||||
#define MAX_FILTER_STR_VAL 256 /* Should handle KSYM_SYMBOL_LEN */
|
||||
|
||||
extern void destroy_preds(struct ftrace_event_call *call);
|
||||
extern int filter_match_preds(struct ftrace_event_call *call, void *rec);
|
||||
|
@@ -258,6 +258,7 @@ enum {
|
||||
IDE_TFLAG_DYN = (1 << 5),
|
||||
IDE_TFLAG_FS = (1 << 6),
|
||||
IDE_TFLAG_MULTI_PIO = (1 << 7),
|
||||
IDE_TFLAG_SET_XFER = (1 << 8),
|
||||
};
|
||||
|
||||
enum {
|
||||
@@ -294,7 +295,7 @@ struct ide_cmd {
|
||||
} out, in;
|
||||
} valid;
|
||||
|
||||
u8 tf_flags;
|
||||
u16 tf_flags;
|
||||
u8 ftf_flags; /* for TASKFILE ioctl */
|
||||
int protocol;
|
||||
|
||||
@@ -918,8 +919,7 @@ __IDE_PROC_DEVSET(_name, _min, _max, NULL, NULL)
|
||||
typedef struct {
|
||||
const char *name;
|
||||
mode_t mode;
|
||||
read_proc_t *read_proc;
|
||||
write_proc_t *write_proc;
|
||||
const struct file_operations *proc_fops;
|
||||
} ide_proc_entry_t;
|
||||
|
||||
void proc_ide_create(void);
|
||||
@@ -931,24 +931,8 @@ void ide_proc_unregister_port(ide_hwif_t *);
|
||||
void ide_proc_register_driver(ide_drive_t *, struct ide_driver *);
|
||||
void ide_proc_unregister_driver(ide_drive_t *, struct ide_driver *);
|
||||
|
||||
read_proc_t proc_ide_read_capacity;
|
||||
read_proc_t proc_ide_read_geometry;
|
||||
|
||||
/*
|
||||
* Standard exit stuff:
|
||||
*/
|
||||
#define PROC_IDE_READ_RETURN(page,start,off,count,eof,len) \
|
||||
{ \
|
||||
len -= off; \
|
||||
if (len < count) { \
|
||||
*eof = 1; \
|
||||
if (len <= 0) \
|
||||
return 0; \
|
||||
} else \
|
||||
len = count; \
|
||||
*start = page + off; \
|
||||
return len; \
|
||||
}
|
||||
extern const struct file_operations ide_capacity_proc_fops;
|
||||
extern const struct file_operations ide_geometry_proc_fops;
|
||||
#else
|
||||
static inline void proc_ide_create(void) { ; }
|
||||
static inline void proc_ide_destroy(void) { ; }
|
||||
@@ -960,7 +944,6 @@ static inline void ide_proc_register_driver(ide_drive_t *drive,
|
||||
struct ide_driver *driver) { ; }
|
||||
static inline void ide_proc_unregister_driver(ide_drive_t *drive,
|
||||
struct ide_driver *driver) { ; }
|
||||
#define PROC_IDE_READ_RETURN(page,start,off,count,eof,len) return 0;
|
||||
#endif
|
||||
|
||||
enum {
|
||||
@@ -1081,6 +1064,7 @@ extern void ide_fixstring(u8 *, const int, const int);
|
||||
|
||||
int ide_busy_sleep(ide_drive_t *, unsigned long, int);
|
||||
|
||||
int __ide_wait_stat(ide_drive_t *, u8, u8, unsigned long, u8 *);
|
||||
int ide_wait_stat(ide_startstop_t *, ide_drive_t *, u8, u8, unsigned long);
|
||||
|
||||
ide_startstop_t ide_do_park_unpark(ide_drive_t *, struct request *);
|
||||
@@ -1169,7 +1153,7 @@ int ide_no_data_taskfile(ide_drive_t *, struct ide_cmd *);
|
||||
|
||||
int ide_taskfile_ioctl(ide_drive_t *, unsigned long);
|
||||
|
||||
int ide_dev_read_id(ide_drive_t *, u8, u16 *);
|
||||
int ide_dev_read_id(ide_drive_t *, u8, u16 *, int);
|
||||
|
||||
extern int ide_driveid_update(ide_drive_t *);
|
||||
extern int ide_config_drive_speed(ide_drive_t *, u8);
|
||||
|
@@ -233,6 +233,8 @@ extern void ip_mc_init_dev(struct in_device *);
|
||||
extern void ip_mc_destroy_dev(struct in_device *);
|
||||
extern void ip_mc_up(struct in_device *);
|
||||
extern void ip_mc_down(struct in_device *);
|
||||
extern void ip_mc_unmap(struct in_device *);
|
||||
extern void ip_mc_remap(struct in_device *);
|
||||
extern void ip_mc_dec_group(struct in_device *in_dev, __be32 addr);
|
||||
extern void ip_mc_inc_group(struct in_device *in_dev, __be32 addr);
|
||||
extern void ip_mc_rejoin_group(struct ip_mc_list *im);
|
||||
|
@@ -49,23 +49,30 @@ static inline struct io_mapping *
|
||||
io_mapping_create_wc(resource_size_t base, unsigned long size)
|
||||
{
|
||||
struct io_mapping *iomap;
|
||||
|
||||
if (!is_io_mapping_possible(base, size))
|
||||
return NULL;
|
||||
pgprot_t prot;
|
||||
|
||||
iomap = kmalloc(sizeof(*iomap), GFP_KERNEL);
|
||||
if (!iomap)
|
||||
return NULL;
|
||||
goto out_err;
|
||||
|
||||
if (iomap_create_wc(base, size, &prot))
|
||||
goto out_free;
|
||||
|
||||
iomap->base = base;
|
||||
iomap->size = size;
|
||||
iomap->prot = pgprot_writecombine(__pgprot(__PAGE_KERNEL));
|
||||
iomap->prot = prot;
|
||||
return iomap;
|
||||
|
||||
out_free:
|
||||
kfree(iomap);
|
||||
out_err:
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static inline void
|
||||
io_mapping_free(struct io_mapping *mapping)
|
||||
{
|
||||
iomap_free(mapping->base, mapping->size);
|
||||
kfree(mapping);
|
||||
}
|
||||
|
||||
|
@@ -48,13 +48,13 @@
|
||||
#define KPROBE_HIT_SSDONE 0x00000008
|
||||
|
||||
/* Attach to insert probes on any functions which should be ignored*/
|
||||
#define __kprobes __attribute__((__section__(".kprobes.text"))) notrace
|
||||
#define __kprobes __attribute__((__section__(".kprobes.text")))
|
||||
#else /* CONFIG_KPROBES */
|
||||
typedef int kprobe_opcode_t;
|
||||
struct arch_specific_insn {
|
||||
int dummy;
|
||||
};
|
||||
#define __kprobes notrace
|
||||
#define __kprobes
|
||||
#endif /* CONFIG_KPROBES */
|
||||
|
||||
struct kprobe;
|
||||
|
@@ -1,7 +1,7 @@
|
||||
/*
|
||||
* MTD partitioning layer definitions
|
||||
*
|
||||
* (C) 2000 Nicolas Pitre <nico@cam.org>
|
||||
* (C) 2000 Nicolas Pitre <nico@fluxnic.net>
|
||||
*
|
||||
* This code is GPL
|
||||
*/
|
||||
|
@@ -57,6 +57,7 @@ typedef enum {
|
||||
#include <linux/random.h>
|
||||
#include <linux/wait.h>
|
||||
#include <linux/fcntl.h> /* For O_CLOEXEC and O_NONBLOCK */
|
||||
#include <linux/kmemcheck.h>
|
||||
|
||||
struct poll_table_struct;
|
||||
struct pipe_inode_info;
|
||||
@@ -127,7 +128,11 @@ enum sock_shutdown_cmd {
|
||||
*/
|
||||
struct socket {
|
||||
socket_state state;
|
||||
|
||||
kmemcheck_bitfield_begin(type);
|
||||
short type;
|
||||
kmemcheck_bitfield_end(type);
|
||||
|
||||
unsigned long flags;
|
||||
/*
|
||||
* Please keep fasync_list & wait fields in the same cache line
|
||||
|
@@ -895,7 +895,7 @@ struct net_device
|
||||
/* class/net/name entry */
|
||||
struct device dev;
|
||||
/* space for optional statistics and wireless sysfs groups */
|
||||
struct attribute_group *sysfs_groups[3];
|
||||
const struct attribute_group *sysfs_groups[3];
|
||||
|
||||
/* rtnetlink link ops */
|
||||
const struct rtnl_link_ops *rtnl_link_ops;
|
||||
@@ -1873,7 +1873,8 @@ extern void __dev_addr_unsync(struct dev_addr_list **to, int *to_count, struct
|
||||
extern int dev_set_promiscuity(struct net_device *dev, int inc);
|
||||
extern int dev_set_allmulti(struct net_device *dev, int inc);
|
||||
extern void netdev_state_change(struct net_device *dev);
|
||||
extern void netdev_bonding_change(struct net_device *dev);
|
||||
extern void netdev_bonding_change(struct net_device *dev,
|
||||
unsigned long event);
|
||||
extern void netdev_features_change(struct net_device *dev);
|
||||
/* Load a device via the kmod */
|
||||
extern void dev_load(struct net *net, const char *name);
|
||||
|
@@ -176,12 +176,16 @@ struct netlink_skb_parms
|
||||
#define NETLINK_CREDS(skb) (&NETLINK_CB((skb)).creds)
|
||||
|
||||
|
||||
extern void netlink_table_grab(void);
|
||||
extern void netlink_table_ungrab(void);
|
||||
|
||||
extern struct sock *netlink_kernel_create(struct net *net,
|
||||
int unit,unsigned int groups,
|
||||
void (*input)(struct sk_buff *skb),
|
||||
struct mutex *cb_mutex,
|
||||
struct module *module);
|
||||
extern void netlink_kernel_release(struct sock *sk);
|
||||
extern int __netlink_change_ngroups(struct sock *sk, unsigned int groups);
|
||||
extern int netlink_change_ngroups(struct sock *sk, unsigned int groups);
|
||||
extern void netlink_clear_multicast_users(struct sock *sk, unsigned int group);
|
||||
extern void netlink_ack(struct sk_buff *in_skb, struct nlmsghdr *nlh, int err);
|
||||
|
@@ -199,6 +199,8 @@ static inline int notifier_to_errno(int ret)
|
||||
#define NETDEV_FEAT_CHANGE 0x000B
|
||||
#define NETDEV_BONDING_FAILOVER 0x000C
|
||||
#define NETDEV_PRE_UP 0x000D
|
||||
#define NETDEV_BONDING_OLDTYPE 0x000E
|
||||
#define NETDEV_BONDING_NEWTYPE 0x000F
|
||||
|
||||
#define SYS_DOWN 0x0001 /* Notify of system down */
|
||||
#define SYS_RESTART SYS_DOWN
|
||||
|
@@ -99,7 +99,7 @@ enum pageflags {
|
||||
#ifdef CONFIG_HAVE_MLOCKED_PAGE_BIT
|
||||
PG_mlocked, /* Page is vma mlocked */
|
||||
#endif
|
||||
#ifdef CONFIG_IA64_UNCACHED_ALLOCATOR
|
||||
#ifdef CONFIG_ARCH_USES_PG_UNCACHED
|
||||
PG_uncached, /* Page has been mapped as uncached */
|
||||
#endif
|
||||
__NR_PAGEFLAGS,
|
||||
@@ -257,7 +257,7 @@ PAGEFLAG_FALSE(Mlocked)
|
||||
SETPAGEFLAG_NOOP(Mlocked) TESTCLEARFLAG_FALSE(Mlocked)
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_IA64_UNCACHED_ALLOCATOR
|
||||
#ifdef CONFIG_ARCH_USES_PG_UNCACHED
|
||||
PAGEFLAG(Uncached, uncached)
|
||||
#else
|
||||
PAGEFLAG_FALSE(Uncached)
|
||||
|
@@ -241,6 +241,7 @@ struct pci_dev {
|
||||
unsigned int d1_support:1; /* Low power state D1 is supported */
|
||||
unsigned int d2_support:1; /* Low power state D2 is supported */
|
||||
unsigned int no_d1d2:1; /* Only allow D0 and D3 */
|
||||
unsigned int wakeup_prepared:1;
|
||||
|
||||
#ifdef CONFIG_PCIEASPM
|
||||
struct pcie_link_state *link_state; /* ASPM link state. */
|
||||
@@ -273,9 +274,12 @@ struct pci_dev {
|
||||
unsigned int ari_enabled:1; /* ARI forwarding */
|
||||
unsigned int is_managed:1;
|
||||
unsigned int is_pcie:1;
|
||||
unsigned int needs_freset:1; /* Dev requires fundamental reset */
|
||||
unsigned int state_saved:1;
|
||||
unsigned int is_physfn:1;
|
||||
unsigned int is_virtfn:1;
|
||||
unsigned int reset_fn:1;
|
||||
unsigned int is_hotplug_bridge:1;
|
||||
pci_dev_flags_t dev_flags;
|
||||
atomic_t enable_cnt; /* pci_enable_device has been called */
|
||||
|
||||
@@ -794,6 +798,11 @@ int __must_check __pci_register_driver(struct pci_driver *, struct module *,
|
||||
void pci_unregister_driver(struct pci_driver *dev);
|
||||
void pci_remove_behind_bridge(struct pci_dev *dev);
|
||||
struct pci_driver *pci_dev_driver(const struct pci_dev *dev);
|
||||
int pci_add_dynid(struct pci_driver *drv,
|
||||
unsigned int vendor, unsigned int device,
|
||||
unsigned int subvendor, unsigned int subdevice,
|
||||
unsigned int class, unsigned int class_mask,
|
||||
unsigned long driver_data);
|
||||
const struct pci_device_id *pci_match_id(const struct pci_device_id *ids,
|
||||
struct pci_dev *dev);
|
||||
int pci_scan_bridge(struct pci_bus *bus, struct pci_dev *dev, int max,
|
||||
@@ -805,6 +814,8 @@ int pci_cfg_space_size_ext(struct pci_dev *dev);
|
||||
int pci_cfg_space_size(struct pci_dev *dev);
|
||||
unsigned char pci_bus_max_busnr(struct pci_bus *bus);
|
||||
|
||||
int pci_set_vga_state(struct pci_dev *pdev, bool decode,
|
||||
unsigned int command_bits, bool change_bridge);
|
||||
/* kmem_cache style wrapper around pci_alloc_consistent() */
|
||||
|
||||
#include <linux/dmapool.h>
|
||||
@@ -1236,6 +1247,9 @@ extern int pci_pci_problems;
|
||||
extern unsigned long pci_cardbus_io_size;
|
||||
extern unsigned long pci_cardbus_mem_size;
|
||||
|
||||
extern unsigned long pci_hotplug_io_size;
|
||||
extern unsigned long pci_hotplug_mem_size;
|
||||
|
||||
int pcibios_add_platform_entries(struct pci_dev *dev);
|
||||
void pcibios_disable_device(struct pci_dev *dev);
|
||||
int pcibios_set_pcie_reset_state(struct pci_dev *dev,
|
||||
|
@@ -62,7 +62,8 @@ enum pcie_link_width {
|
||||
};
|
||||
|
||||
enum pcie_link_speed {
|
||||
PCIE_2PT5GB = 0x14,
|
||||
PCIE_2_5GB = 0x14,
|
||||
PCIE_5_0GB = 0x15,
|
||||
PCIE_LNK_SPEED_UNKNOWN = 0xFF,
|
||||
};
|
||||
|
||||
@@ -226,11 +227,18 @@ struct hotplug_params {
|
||||
#ifdef CONFIG_ACPI
|
||||
#include <acpi/acpi.h>
|
||||
#include <acpi/acpi_bus.h>
|
||||
extern acpi_status acpi_get_hp_params_from_firmware(struct pci_bus *bus,
|
||||
struct hotplug_params *hpp);
|
||||
int pci_get_hp_params(struct pci_dev *dev, struct hotplug_params *hpp);
|
||||
int acpi_get_hp_hw_control_from_firmware(struct pci_dev *dev, u32 flags);
|
||||
int acpi_pci_check_ejectable(struct pci_bus *pbus, acpi_handle handle);
|
||||
int acpi_pci_detect_ejectable(struct pci_bus *pbus);
|
||||
#endif
|
||||
int acpi_pci_detect_ejectable(acpi_handle handle);
|
||||
#else
|
||||
static inline int pci_get_hp_params(struct pci_dev *dev,
|
||||
struct hotplug_params *hpp)
|
||||
{
|
||||
return -ENODEV;
|
||||
}
|
||||
#endif
|
||||
|
||||
void pci_configure_slot(struct pci_dev *dev);
|
||||
#endif
|
||||
|
||||
|
@@ -2,6 +2,9 @@
|
||||
* PCI Class, Vendor and Device IDs
|
||||
*
|
||||
* Please keep sorted.
|
||||
*
|
||||
* Do not add new entries to this file unless the definitions
|
||||
* are shared between multiple drivers.
|
||||
*/
|
||||
|
||||
/* Device classes and subclasses */
|
||||
@@ -881,6 +884,7 @@
|
||||
#define PCI_DEVICE_ID_APPLE_SH_SUNGEM 0x0051
|
||||
#define PCI_DEVICE_ID_APPLE_U3L_AGP 0x0058
|
||||
#define PCI_DEVICE_ID_APPLE_U3H_AGP 0x0059
|
||||
#define PCI_DEVICE_ID_APPLE_U4_PCIE 0x005b
|
||||
#define PCI_DEVICE_ID_APPLE_IPID2_AGP 0x0066
|
||||
#define PCI_DEVICE_ID_APPLE_IPID2_ATA 0x0069
|
||||
#define PCI_DEVICE_ID_APPLE_IPID2_FW 0x006a
|
||||
@@ -1525,6 +1529,8 @@
|
||||
#define PCI_DEVICE_ID_ARTOP_ATP860R 0x0007
|
||||
#define PCI_DEVICE_ID_ARTOP_ATP865 0x0008
|
||||
#define PCI_DEVICE_ID_ARTOP_ATP865R 0x0009
|
||||
#define PCI_DEVICE_ID_ARTOP_ATP867A 0x000A
|
||||
#define PCI_DEVICE_ID_ARTOP_ATP867B 0x000B
|
||||
#define PCI_DEVICE_ID_ARTOP_AEC7610 0x8002
|
||||
#define PCI_DEVICE_ID_ARTOP_AEC7612UW 0x8010
|
||||
#define PCI_DEVICE_ID_ARTOP_AEC7612U 0x8020
|
||||
|
@@ -42,6 +42,7 @@
|
||||
#define PCI_COMMAND_INTX_DISABLE 0x400 /* INTx Emulation Disable */
|
||||
|
||||
#define PCI_STATUS 0x06 /* 16 bits */
|
||||
#define PCI_STATUS_INTERRUPT 0x08 /* Interrupt status */
|
||||
#define PCI_STATUS_CAP_LIST 0x10 /* Support Capability List */
|
||||
#define PCI_STATUS_66MHZ 0x20 /* Support 66 Mhz PCI 2.1 bus */
|
||||
#define PCI_STATUS_UDF 0x40 /* Support User Definable Features [obsolete] */
|
||||
|
@@ -10,22 +10,70 @@
|
||||
/*
|
||||
* Base implementations of per-CPU variable declarations and definitions, where
|
||||
* the section in which the variable is to be placed is provided by the
|
||||
* 'section' argument. This may be used to affect the parameters governing the
|
||||
* 'sec' argument. This may be used to affect the parameters governing the
|
||||
* variable's storage.
|
||||
*
|
||||
* NOTE! The sections for the DECLARE and for the DEFINE must match, lest
|
||||
* linkage errors occur due the compiler generating the wrong code to access
|
||||
* that section.
|
||||
*/
|
||||
#define DECLARE_PER_CPU_SECTION(type, name, section) \
|
||||
extern \
|
||||
__attribute__((__section__(PER_CPU_BASE_SECTION section))) \
|
||||
PER_CPU_ATTRIBUTES __typeof__(type) per_cpu__##name
|
||||
#define __PCPU_ATTRS(sec) \
|
||||
__attribute__((section(PER_CPU_BASE_SECTION sec))) \
|
||||
PER_CPU_ATTRIBUTES
|
||||
|
||||
#define DEFINE_PER_CPU_SECTION(type, name, section) \
|
||||
__attribute__((__section__(PER_CPU_BASE_SECTION section))) \
|
||||
PER_CPU_ATTRIBUTES PER_CPU_DEF_ATTRIBUTES \
|
||||
#define __PCPU_DUMMY_ATTRS \
|
||||
__attribute__((section(".discard"), unused))
|
||||
|
||||
/*
|
||||
* s390 and alpha modules require percpu variables to be defined as
|
||||
* weak to force the compiler to generate GOT based external
|
||||
* references for them. This is necessary because percpu sections
|
||||
* will be located outside of the usually addressable area.
|
||||
*
|
||||
* This definition puts the following two extra restrictions when
|
||||
* defining percpu variables.
|
||||
*
|
||||
* 1. The symbol must be globally unique, even the static ones.
|
||||
* 2. Static percpu variables cannot be defined inside a function.
|
||||
*
|
||||
* Archs which need weak percpu definitions should define
|
||||
* ARCH_NEEDS_WEAK_PER_CPU in asm/percpu.h when necessary.
|
||||
*
|
||||
* To ensure that the generic code observes the above two
|
||||
* restrictions, if CONFIG_DEBUG_FORCE_WEAK_PER_CPU is set weak
|
||||
* definition is used for all cases.
|
||||
*/
|
||||
#if defined(ARCH_NEEDS_WEAK_PER_CPU) || defined(CONFIG_DEBUG_FORCE_WEAK_PER_CPU)
|
||||
/*
|
||||
* __pcpu_scope_* dummy variable is used to enforce scope. It
|
||||
* receives the static modifier when it's used in front of
|
||||
* DEFINE_PER_CPU() and will trigger build failure if
|
||||
* DECLARE_PER_CPU() is used for the same variable.
|
||||
*
|
||||
* __pcpu_unique_* dummy variable is used to enforce symbol uniqueness
|
||||
* such that hidden weak symbol collision, which will cause unrelated
|
||||
* variables to share the same address, can be detected during build.
|
||||
*/
|
||||
#define DECLARE_PER_CPU_SECTION(type, name, sec) \
|
||||
extern __PCPU_DUMMY_ATTRS char __pcpu_scope_##name; \
|
||||
extern __PCPU_ATTRS(sec) __typeof__(type) per_cpu__##name
|
||||
|
||||
#define DEFINE_PER_CPU_SECTION(type, name, sec) \
|
||||
__PCPU_DUMMY_ATTRS char __pcpu_scope_##name; \
|
||||
__PCPU_DUMMY_ATTRS char __pcpu_unique_##name; \
|
||||
__PCPU_ATTRS(sec) PER_CPU_DEF_ATTRIBUTES __weak \
|
||||
__typeof__(type) per_cpu__##name
|
||||
#else
|
||||
/*
|
||||
* Normal declaration and definition macros.
|
||||
*/
|
||||
#define DECLARE_PER_CPU_SECTION(type, name, sec) \
|
||||
extern __PCPU_ATTRS(sec) __typeof__(type) per_cpu__##name
|
||||
|
||||
#define DEFINE_PER_CPU_SECTION(type, name, sec) \
|
||||
__PCPU_ATTRS(sec) PER_CPU_DEF_ATTRIBUTES \
|
||||
__typeof__(type) per_cpu__##name
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Variant on the per-CPU variable declaration/definition theme used for
|
||||
|
@@ -34,7 +34,7 @@
|
||||
|
||||
#ifdef CONFIG_SMP
|
||||
|
||||
#ifdef CONFIG_HAVE_DYNAMIC_PER_CPU_AREA
|
||||
#ifndef CONFIG_HAVE_LEGACY_PER_CPU_AREA
|
||||
|
||||
/* minimum unit size, also is the maximum supported allocation size */
|
||||
#define PCPU_MIN_UNIT_SIZE PFN_ALIGN(64 << 10)
|
||||
@@ -57,19 +57,70 @@
|
||||
#endif
|
||||
|
||||
extern void *pcpu_base_addr;
|
||||
extern const unsigned long *pcpu_unit_offsets;
|
||||
|
||||
typedef struct page * (*pcpu_get_page_fn_t)(unsigned int cpu, int pageno);
|
||||
typedef void (*pcpu_populate_pte_fn_t)(unsigned long addr);
|
||||
struct pcpu_group_info {
|
||||
int nr_units; /* aligned # of units */
|
||||
unsigned long base_offset; /* base address offset */
|
||||
unsigned int *cpu_map; /* unit->cpu map, empty
|
||||
* entries contain NR_CPUS */
|
||||
};
|
||||
|
||||
extern size_t __init pcpu_setup_first_chunk(pcpu_get_page_fn_t get_page_fn,
|
||||
size_t static_size, size_t reserved_size,
|
||||
ssize_t dyn_size, ssize_t unit_size,
|
||||
void *base_addr,
|
||||
pcpu_populate_pte_fn_t populate_pte_fn);
|
||||
struct pcpu_alloc_info {
|
||||
size_t static_size;
|
||||
size_t reserved_size;
|
||||
size_t dyn_size;
|
||||
size_t unit_size;
|
||||
size_t atom_size;
|
||||
size_t alloc_size;
|
||||
size_t __ai_size; /* internal, don't use */
|
||||
int nr_groups; /* 0 if grouping unnecessary */
|
||||
struct pcpu_group_info groups[];
|
||||
};
|
||||
|
||||
extern ssize_t __init pcpu_embed_first_chunk(
|
||||
size_t static_size, size_t reserved_size,
|
||||
ssize_t dyn_size, ssize_t unit_size);
|
||||
enum pcpu_fc {
|
||||
PCPU_FC_AUTO,
|
||||
PCPU_FC_EMBED,
|
||||
PCPU_FC_PAGE,
|
||||
|
||||
PCPU_FC_NR,
|
||||
};
|
||||
extern const char *pcpu_fc_names[PCPU_FC_NR];
|
||||
|
||||
extern enum pcpu_fc pcpu_chosen_fc;
|
||||
|
||||
typedef void * (*pcpu_fc_alloc_fn_t)(unsigned int cpu, size_t size,
|
||||
size_t align);
|
||||
typedef void (*pcpu_fc_free_fn_t)(void *ptr, size_t size);
|
||||
typedef void (*pcpu_fc_populate_pte_fn_t)(unsigned long addr);
|
||||
typedef int (pcpu_fc_cpu_distance_fn_t)(unsigned int from, unsigned int to);
|
||||
|
||||
extern struct pcpu_alloc_info * __init pcpu_alloc_alloc_info(int nr_groups,
|
||||
int nr_units);
|
||||
extern void __init pcpu_free_alloc_info(struct pcpu_alloc_info *ai);
|
||||
|
||||
extern struct pcpu_alloc_info * __init pcpu_build_alloc_info(
|
||||
size_t reserved_size, ssize_t dyn_size,
|
||||
size_t atom_size,
|
||||
pcpu_fc_cpu_distance_fn_t cpu_distance_fn);
|
||||
|
||||
extern int __init pcpu_setup_first_chunk(const struct pcpu_alloc_info *ai,
|
||||
void *base_addr);
|
||||
|
||||
#ifdef CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK
|
||||
extern int __init pcpu_embed_first_chunk(size_t reserved_size, ssize_t dyn_size,
|
||||
size_t atom_size,
|
||||
pcpu_fc_cpu_distance_fn_t cpu_distance_fn,
|
||||
pcpu_fc_alloc_fn_t alloc_fn,
|
||||
pcpu_fc_free_fn_t free_fn);
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_NEED_PER_CPU_PAGE_FIRST_CHUNK
|
||||
extern int __init pcpu_page_first_chunk(size_t reserved_size,
|
||||
pcpu_fc_alloc_fn_t alloc_fn,
|
||||
pcpu_fc_free_fn_t free_fn,
|
||||
pcpu_fc_populate_pte_fn_t populate_pte_fn);
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Use this to get to a cpu's version of the per-cpu object
|
||||
@@ -80,7 +131,7 @@ extern ssize_t __init pcpu_embed_first_chunk(
|
||||
|
||||
extern void *__alloc_reserved_percpu(size_t size, size_t align);
|
||||
|
||||
#else /* CONFIG_HAVE_DYNAMIC_PER_CPU_AREA */
|
||||
#else /* CONFIG_HAVE_LEGACY_PER_CPU_AREA */
|
||||
|
||||
struct percpu_data {
|
||||
void *ptrs[1];
|
||||
@@ -99,11 +150,15 @@ struct percpu_data {
|
||||
(__typeof__(ptr))__p->ptrs[(cpu)]; \
|
||||
})
|
||||
|
||||
#endif /* CONFIG_HAVE_DYNAMIC_PER_CPU_AREA */
|
||||
#endif /* CONFIG_HAVE_LEGACY_PER_CPU_AREA */
|
||||
|
||||
extern void *__alloc_percpu(size_t size, size_t align);
|
||||
extern void free_percpu(void *__pdata);
|
||||
|
||||
#ifndef CONFIG_HAVE_SETUP_PER_CPU_AREA
|
||||
extern void __init setup_per_cpu_areas(void);
|
||||
#endif
|
||||
|
||||
#else /* CONFIG_SMP */
|
||||
|
||||
#define per_cpu_ptr(ptr, cpu) ({ (void)(cpu); (ptr); })
|
||||
@@ -124,6 +179,13 @@ static inline void free_percpu(void *p)
|
||||
kfree(p);
|
||||
}
|
||||
|
||||
static inline void __init setup_per_cpu_areas(void) { }
|
||||
|
||||
static inline void *pcpu_lpage_remapped(void *kaddr)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
#endif /* CONFIG_SMP */
|
||||
|
||||
#define alloc_percpu(type) (type *)__alloc_percpu(sizeof(type), \
|
||||
|
@@ -58,5 +58,12 @@ struct sockaddr_rxrpc {
|
||||
#define RXRPC_SECURITY_AUTH 1 /* authenticated packets */
|
||||
#define RXRPC_SECURITY_ENCRYPT 2 /* encrypted packets */
|
||||
|
||||
/*
|
||||
* RxRPC security indices
|
||||
*/
|
||||
#define RXRPC_SECURITY_NONE 0 /* no security protocol */
|
||||
#define RXRPC_SECURITY_RXKAD 2 /* kaserver or kerberos 4 */
|
||||
#define RXRPC_SECURITY_RXGK 4 /* gssapi-based */
|
||||
#define RXRPC_SECURITY_RXK5 5 /* kerberos 5 */
|
||||
|
||||
#endif /* _LINUX_RXRPC_H */
|
||||
|
@@ -190,6 +190,7 @@ extern unsigned long long time_sync_thresh;
|
||||
/* in tsk->state again */
|
||||
#define TASK_DEAD 64
|
||||
#define TASK_WAKEKILL 128
|
||||
#define TASK_WAKING 256
|
||||
|
||||
/* Convenience macros for the sake of set_task_state */
|
||||
#define TASK_KILLABLE (TASK_WAKEKILL | TASK_UNINTERRUPTIBLE)
|
||||
@@ -802,14 +803,14 @@ enum cpu_idle_type {
|
||||
#define SD_BALANCE_NEWIDLE 0x0002 /* Balance when about to become idle */
|
||||
#define SD_BALANCE_EXEC 0x0004 /* Balance on exec */
|
||||
#define SD_BALANCE_FORK 0x0008 /* Balance on fork, clone */
|
||||
#define SD_WAKE_IDLE 0x0010 /* Wake to idle CPU on task wakeup */
|
||||
#define SD_BALANCE_WAKE 0x0010 /* Balance on wakeup */
|
||||
#define SD_WAKE_AFFINE 0x0020 /* Wake task to waking CPU */
|
||||
#define SD_WAKE_BALANCE 0x0040 /* Perform balancing at task wakeup */
|
||||
#define SD_PREFER_LOCAL 0x0040 /* Prefer to keep tasks local to this domain */
|
||||
#define SD_SHARE_CPUPOWER 0x0080 /* Domain members share cpu power */
|
||||
#define SD_POWERSAVINGS_BALANCE 0x0100 /* Balance for power savings */
|
||||
#define SD_SHARE_PKG_RESOURCES 0x0200 /* Domain members share cpu pkg resources */
|
||||
#define SD_SERIALIZE 0x0400 /* Only a single load balancing instance */
|
||||
#define SD_WAKE_IDLE_FAR 0x0800 /* Gain latency sacrificing cache hit */
|
||||
|
||||
#define SD_PREFER_SIBLING 0x1000 /* Prefer to place tasks in a sibling domain */
|
||||
|
||||
enum powersavings_balance_level {
|
||||
@@ -991,6 +992,9 @@ static inline int test_sd_parent(struct sched_domain *sd, int flag)
|
||||
return 0;
|
||||
}
|
||||
|
||||
unsigned long default_scale_freq_power(struct sched_domain *sd, int cpu);
|
||||
unsigned long default_scale_smt_power(struct sched_domain *sd, int cpu);
|
||||
|
||||
#else /* CONFIG_SMP */
|
||||
|
||||
struct sched_domain_attr;
|
||||
@@ -1002,6 +1006,7 @@ partition_sched_domains(int ndoms_new, struct cpumask *doms_new,
|
||||
}
|
||||
#endif /* !CONFIG_SMP */
|
||||
|
||||
|
||||
struct io_context; /* See blkdev.h */
|
||||
|
||||
|
||||
@@ -1019,6 +1024,12 @@ struct uts_namespace;
|
||||
struct rq;
|
||||
struct sched_domain;
|
||||
|
||||
/*
|
||||
* wake flags
|
||||
*/
|
||||
#define WF_SYNC 0x01 /* waker goes to sleep after wakup */
|
||||
#define WF_FORK 0x02 /* child wakeup after fork */
|
||||
|
||||
struct sched_class {
|
||||
const struct sched_class *next;
|
||||
|
||||
@@ -1026,13 +1037,13 @@ struct sched_class {
|
||||
void (*dequeue_task) (struct rq *rq, struct task_struct *p, int sleep);
|
||||
void (*yield_task) (struct rq *rq);
|
||||
|
||||
void (*check_preempt_curr) (struct rq *rq, struct task_struct *p, int sync);
|
||||
void (*check_preempt_curr) (struct rq *rq, struct task_struct *p, int flags);
|
||||
|
||||
struct task_struct * (*pick_next_task) (struct rq *rq);
|
||||
void (*put_prev_task) (struct rq *rq, struct task_struct *p);
|
||||
|
||||
#ifdef CONFIG_SMP
|
||||
int (*select_task_rq)(struct task_struct *p, int sync);
|
||||
int (*select_task_rq)(struct task_struct *p, int sd_flag, int flags);
|
||||
|
||||
unsigned long (*load_balance) (struct rq *this_rq, int this_cpu,
|
||||
struct rq *busiest, unsigned long max_load_move,
|
||||
@@ -1102,6 +1113,8 @@ struct sched_entity {
|
||||
u64 start_runtime;
|
||||
u64 avg_wakeup;
|
||||
|
||||
u64 avg_running;
|
||||
|
||||
#ifdef CONFIG_SCHEDSTATS
|
||||
u64 wait_start;
|
||||
u64 wait_max;
|
||||
|
@@ -38,6 +38,9 @@ static inline struct shmem_inode_info *SHMEM_I(struct inode *inode)
|
||||
return container_of(inode, struct shmem_inode_info, vfs_inode);
|
||||
}
|
||||
|
||||
extern int init_tmpfs(void);
|
||||
extern int shmem_fill_super(struct super_block *sb, void *data, int silent);
|
||||
|
||||
#ifdef CONFIG_TMPFS_POSIX_ACL
|
||||
int shmem_check_acl(struct inode *, int);
|
||||
int shmem_acl_init(struct inode *, struct inode *);
|
||||
|
162
include/linux/tboot.h
Normal file
162
include/linux/tboot.h
Normal file
@@ -0,0 +1,162 @@
|
||||
/*
|
||||
* tboot.h: shared data structure with tboot and kernel and functions
|
||||
* used by kernel for runtime support of Intel(R) Trusted
|
||||
* Execution Technology
|
||||
*
|
||||
* Copyright (c) 2006-2009, Intel Corporation
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it
|
||||
* under the terms and conditions of the GNU General Public License,
|
||||
* version 2, as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope 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.,
|
||||
* 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef _LINUX_TBOOT_H
|
||||
#define _LINUX_TBOOT_H
|
||||
|
||||
/* these must have the values from 0-5 in this order */
|
||||
enum {
|
||||
TB_SHUTDOWN_REBOOT = 0,
|
||||
TB_SHUTDOWN_S5,
|
||||
TB_SHUTDOWN_S4,
|
||||
TB_SHUTDOWN_S3,
|
||||
TB_SHUTDOWN_HALT,
|
||||
TB_SHUTDOWN_WFS
|
||||
};
|
||||
|
||||
#ifdef CONFIG_INTEL_TXT
|
||||
#include <acpi/acpi.h>
|
||||
/* used to communicate between tboot and the launched kernel */
|
||||
|
||||
#define TB_KEY_SIZE 64 /* 512 bits */
|
||||
|
||||
#define MAX_TB_MAC_REGIONS 32
|
||||
|
||||
struct tboot_mac_region {
|
||||
u64 start; /* must be 64 byte -aligned */
|
||||
u32 size; /* must be 64 byte -granular */
|
||||
} __packed;
|
||||
|
||||
/* GAS - Generic Address Structure (ACPI 2.0+) */
|
||||
struct tboot_acpi_generic_address {
|
||||
u8 space_id;
|
||||
u8 bit_width;
|
||||
u8 bit_offset;
|
||||
u8 access_width;
|
||||
u64 address;
|
||||
} __packed;
|
||||
|
||||
/*
|
||||
* combines Sx info from FADT and FACS tables per ACPI 2.0+ spec
|
||||
* (http://www.acpi.info/)
|
||||
*/
|
||||
struct tboot_acpi_sleep_info {
|
||||
struct tboot_acpi_generic_address pm1a_cnt_blk;
|
||||
struct tboot_acpi_generic_address pm1b_cnt_blk;
|
||||
struct tboot_acpi_generic_address pm1a_evt_blk;
|
||||
struct tboot_acpi_generic_address pm1b_evt_blk;
|
||||
u16 pm1a_cnt_val;
|
||||
u16 pm1b_cnt_val;
|
||||
u64 wakeup_vector;
|
||||
u32 vector_width;
|
||||
u64 kernel_s3_resume_vector;
|
||||
} __packed;
|
||||
|
||||
/*
|
||||
* shared memory page used for communication between tboot and kernel
|
||||
*/
|
||||
struct tboot {
|
||||
/*
|
||||
* version 3+ fields:
|
||||
*/
|
||||
|
||||
/* TBOOT_UUID */
|
||||
u8 uuid[16];
|
||||
|
||||
/* version number: 5 is current */
|
||||
u32 version;
|
||||
|
||||
/* physical addr of tb_log_t log */
|
||||
u32 log_addr;
|
||||
|
||||
/*
|
||||
* physical addr of entry point for tboot shutdown and
|
||||
* type of shutdown (TB_SHUTDOWN_*) being requested
|
||||
*/
|
||||
u32 shutdown_entry;
|
||||
u32 shutdown_type;
|
||||
|
||||
/* kernel-specified ACPI info for Sx shutdown */
|
||||
struct tboot_acpi_sleep_info acpi_sinfo;
|
||||
|
||||
/* tboot location in memory (physical) */
|
||||
u32 tboot_base;
|
||||
u32 tboot_size;
|
||||
|
||||
/* memory regions (phys addrs) for tboot to MAC on S3 */
|
||||
u8 num_mac_regions;
|
||||
struct tboot_mac_region mac_regions[MAX_TB_MAC_REGIONS];
|
||||
|
||||
|
||||
/*
|
||||
* version 4+ fields:
|
||||
*/
|
||||
|
||||
/* symmetric key for use by kernel; will be encrypted on S3 */
|
||||
u8 s3_key[TB_KEY_SIZE];
|
||||
|
||||
|
||||
/*
|
||||
* version 5+ fields:
|
||||
*/
|
||||
|
||||
/* used to 4byte-align num_in_wfs */
|
||||
u8 reserved_align[3];
|
||||
|
||||
/* number of processors in wait-for-SIPI */
|
||||
u32 num_in_wfs;
|
||||
} __packed;
|
||||
|
||||
/*
|
||||
* UUID for tboot data struct to facilitate matching
|
||||
* defined as {663C8DFF-E8B3-4b82-AABF-19EA4D057A08} by tboot, which is
|
||||
* represented as {} in the char array used here
|
||||
*/
|
||||
#define TBOOT_UUID {0xff, 0x8d, 0x3c, 0x66, 0xb3, 0xe8, 0x82, 0x4b, 0xbf,\
|
||||
0xaa, 0x19, 0xea, 0x4d, 0x5, 0x7a, 0x8}
|
||||
|
||||
extern struct tboot *tboot;
|
||||
|
||||
static inline int tboot_enabled(void)
|
||||
{
|
||||
return tboot != NULL;
|
||||
}
|
||||
|
||||
extern void tboot_probe(void);
|
||||
extern void tboot_shutdown(u32 shutdown_type);
|
||||
extern void tboot_sleep(u8 sleep_state, u32 pm1a_control, u32 pm1b_control);
|
||||
extern struct acpi_table_header *tboot_get_dmar_table(
|
||||
struct acpi_table_header *dmar_tbl);
|
||||
extern int tboot_force_iommu(void);
|
||||
|
||||
#else
|
||||
|
||||
#define tboot_probe() do { } while (0)
|
||||
#define tboot_shutdown(shutdown_type) do { } while (0)
|
||||
#define tboot_sleep(sleep_state, pm1a_control, pm1b_control) \
|
||||
do { } while (0)
|
||||
#define tboot_get_dmar_table(dmar_tbl) (dmar_tbl)
|
||||
#define tboot_force_iommu() 0
|
||||
|
||||
#endif /* !CONFIG_INTEL_TXT */
|
||||
|
||||
#endif /* _LINUX_TBOOT_H */
|
@@ -95,14 +95,12 @@ int arch_update_cpu_topology(void);
|
||||
| 1*SD_BALANCE_NEWIDLE \
|
||||
| 1*SD_BALANCE_EXEC \
|
||||
| 1*SD_BALANCE_FORK \
|
||||
| 0*SD_WAKE_IDLE \
|
||||
| 0*SD_BALANCE_WAKE \
|
||||
| 1*SD_WAKE_AFFINE \
|
||||
| 1*SD_WAKE_BALANCE \
|
||||
| 1*SD_SHARE_CPUPOWER \
|
||||
| 0*SD_POWERSAVINGS_BALANCE \
|
||||
| 0*SD_SHARE_PKG_RESOURCES \
|
||||
| 0*SD_SERIALIZE \
|
||||
| 0*SD_WAKE_IDLE_FAR \
|
||||
| 0*SD_PREFER_SIBLING \
|
||||
, \
|
||||
.last_balance = jiffies, \
|
||||
@@ -122,20 +120,19 @@ int arch_update_cpu_topology(void);
|
||||
.imbalance_pct = 125, \
|
||||
.cache_nice_tries = 1, \
|
||||
.busy_idx = 2, \
|
||||
.wake_idx = 1, \
|
||||
.forkexec_idx = 1, \
|
||||
.wake_idx = 0, \
|
||||
.forkexec_idx = 0, \
|
||||
\
|
||||
.flags = 1*SD_LOAD_BALANCE \
|
||||
| 1*SD_BALANCE_NEWIDLE \
|
||||
| 1*SD_BALANCE_EXEC \
|
||||
| 1*SD_BALANCE_FORK \
|
||||
| 1*SD_WAKE_IDLE \
|
||||
| 0*SD_BALANCE_WAKE \
|
||||
| 1*SD_WAKE_AFFINE \
|
||||
| 1*SD_WAKE_BALANCE \
|
||||
| 1*SD_PREFER_LOCAL \
|
||||
| 0*SD_SHARE_CPUPOWER \
|
||||
| 1*SD_SHARE_PKG_RESOURCES \
|
||||
| 0*SD_SERIALIZE \
|
||||
| 0*SD_WAKE_IDLE_FAR \
|
||||
| sd_balance_for_mc_power() \
|
||||
| sd_power_saving_flags() \
|
||||
, \
|
||||
@@ -155,21 +152,20 @@ int arch_update_cpu_topology(void);
|
||||
.cache_nice_tries = 1, \
|
||||
.busy_idx = 2, \
|
||||
.idle_idx = 1, \
|
||||
.newidle_idx = 2, \
|
||||
.wake_idx = 1, \
|
||||
.forkexec_idx = 1, \
|
||||
.newidle_idx = 0, \
|
||||
.wake_idx = 0, \
|
||||
.forkexec_idx = 0, \
|
||||
\
|
||||
.flags = 1*SD_LOAD_BALANCE \
|
||||
| 1*SD_BALANCE_NEWIDLE \
|
||||
| 1*SD_BALANCE_EXEC \
|
||||
| 1*SD_BALANCE_FORK \
|
||||
| 1*SD_WAKE_IDLE \
|
||||
| 0*SD_WAKE_AFFINE \
|
||||
| 1*SD_WAKE_BALANCE \
|
||||
| 0*SD_BALANCE_WAKE \
|
||||
| 1*SD_WAKE_AFFINE \
|
||||
| 1*SD_PREFER_LOCAL \
|
||||
| 0*SD_SHARE_CPUPOWER \
|
||||
| 0*SD_SHARE_PKG_RESOURCES \
|
||||
| 0*SD_SERIALIZE \
|
||||
| 0*SD_WAKE_IDLE_FAR \
|
||||
| sd_balance_for_package_power() \
|
||||
| sd_power_saving_flags() \
|
||||
, \
|
||||
@@ -191,14 +187,12 @@ int arch_update_cpu_topology(void);
|
||||
| 1*SD_BALANCE_NEWIDLE \
|
||||
| 0*SD_BALANCE_EXEC \
|
||||
| 0*SD_BALANCE_FORK \
|
||||
| 0*SD_WAKE_IDLE \
|
||||
| 1*SD_WAKE_AFFINE \
|
||||
| 0*SD_WAKE_BALANCE \
|
||||
| 0*SD_BALANCE_WAKE \
|
||||
| 0*SD_WAKE_AFFINE \
|
||||
| 0*SD_SHARE_CPUPOWER \
|
||||
| 0*SD_POWERSAVINGS_BALANCE \
|
||||
| 0*SD_SHARE_PKG_RESOURCES \
|
||||
| 1*SD_SERIALIZE \
|
||||
| 1*SD_WAKE_IDLE_FAR \
|
||||
| 0*SD_PREFER_SIBLING \
|
||||
, \
|
||||
.last_balance = jiffies, \
|
||||
|
@@ -55,7 +55,7 @@ struct anon_transport_class cls = { \
|
||||
|
||||
struct transport_container {
|
||||
struct attribute_container ac;
|
||||
struct attribute_group *statistics;
|
||||
const struct attribute_group *statistics;
|
||||
};
|
||||
|
||||
#define attribute_container_to_transport_container(x) \
|
||||
|
164
include/linux/usb/video.h
Normal file
164
include/linux/usb/video.h
Normal file
@@ -0,0 +1,164 @@
|
||||
/*
|
||||
* USB Video Class definitions.
|
||||
*
|
||||
* Copyright (C) 2009 Laurent Pinchart <laurent.pinchart@skynet.be>
|
||||
*
|
||||
* This file holds USB constants and structures defined by the USB Device
|
||||
* Class Definition for Video Devices. Unless otherwise stated, comments
|
||||
* below reference relevant sections of the USB Video Class 1.1 specification
|
||||
* available at
|
||||
*
|
||||
* http://www.usb.org/developers/devclass_docs/USB_Video_Class_1_1.zip
|
||||
*/
|
||||
|
||||
#ifndef __LINUX_USB_VIDEO_H
|
||||
#define __LINUX_USB_VIDEO_H
|
||||
|
||||
#include <linux/types.h>
|
||||
|
||||
/* --------------------------------------------------------------------------
|
||||
* UVC constants
|
||||
*/
|
||||
|
||||
/* A.2. Video Interface Subclass Codes */
|
||||
#define UVC_SC_UNDEFINED 0x00
|
||||
#define UVC_SC_VIDEOCONTROL 0x01
|
||||
#define UVC_SC_VIDEOSTREAMING 0x02
|
||||
#define UVC_SC_VIDEO_INTERFACE_COLLECTION 0x03
|
||||
|
||||
/* A.3. Video Interface Protocol Codes */
|
||||
#define UVC_PC_PROTOCOL_UNDEFINED 0x00
|
||||
|
||||
/* A.5. Video Class-Specific VC Interface Descriptor Subtypes */
|
||||
#define UVC_VC_DESCRIPTOR_UNDEFINED 0x00
|
||||
#define UVC_VC_HEADER 0x01
|
||||
#define UVC_VC_INPUT_TERMINAL 0x02
|
||||
#define UVC_VC_OUTPUT_TERMINAL 0x03
|
||||
#define UVC_VC_SELECTOR_UNIT 0x04
|
||||
#define UVC_VC_PROCESSING_UNIT 0x05
|
||||
#define UVC_VC_EXTENSION_UNIT 0x06
|
||||
|
||||
/* A.6. Video Class-Specific VS Interface Descriptor Subtypes */
|
||||
#define UVC_VS_UNDEFINED 0x00
|
||||
#define UVC_VS_INPUT_HEADER 0x01
|
||||
#define UVC_VS_OUTPUT_HEADER 0x02
|
||||
#define UVC_VS_STILL_IMAGE_FRAME 0x03
|
||||
#define UVC_VS_FORMAT_UNCOMPRESSED 0x04
|
||||
#define UVC_VS_FRAME_UNCOMPRESSED 0x05
|
||||
#define UVC_VS_FORMAT_MJPEG 0x06
|
||||
#define UVC_VS_FRAME_MJPEG 0x07
|
||||
#define UVC_VS_FORMAT_MPEG2TS 0x0a
|
||||
#define UVC_VS_FORMAT_DV 0x0c
|
||||
#define UVC_VS_COLORFORMAT 0x0d
|
||||
#define UVC_VS_FORMAT_FRAME_BASED 0x10
|
||||
#define UVC_VS_FRAME_FRAME_BASED 0x11
|
||||
#define UVC_VS_FORMAT_STREAM_BASED 0x12
|
||||
|
||||
/* A.7. Video Class-Specific Endpoint Descriptor Subtypes */
|
||||
#define UVC_EP_UNDEFINED 0x00
|
||||
#define UVC_EP_GENERAL 0x01
|
||||
#define UVC_EP_ENDPOINT 0x02
|
||||
#define UVC_EP_INTERRUPT 0x03
|
||||
|
||||
/* A.8. Video Class-Specific Request Codes */
|
||||
#define UVC_RC_UNDEFINED 0x00
|
||||
#define UVC_SET_CUR 0x01
|
||||
#define UVC_GET_CUR 0x81
|
||||
#define UVC_GET_MIN 0x82
|
||||
#define UVC_GET_MAX 0x83
|
||||
#define UVC_GET_RES 0x84
|
||||
#define UVC_GET_LEN 0x85
|
||||
#define UVC_GET_INFO 0x86
|
||||
#define UVC_GET_DEF 0x87
|
||||
|
||||
/* A.9.1. VideoControl Interface Control Selectors */
|
||||
#define UVC_VC_CONTROL_UNDEFINED 0x00
|
||||
#define UVC_VC_VIDEO_POWER_MODE_CONTROL 0x01
|
||||
#define UVC_VC_REQUEST_ERROR_CODE_CONTROL 0x02
|
||||
|
||||
/* A.9.2. Terminal Control Selectors */
|
||||
#define UVC_TE_CONTROL_UNDEFINED 0x00
|
||||
|
||||
/* A.9.3. Selector Unit Control Selectors */
|
||||
#define UVC_SU_CONTROL_UNDEFINED 0x00
|
||||
#define UVC_SU_INPUT_SELECT_CONTROL 0x01
|
||||
|
||||
/* A.9.4. Camera Terminal Control Selectors */
|
||||
#define UVC_CT_CONTROL_UNDEFINED 0x00
|
||||
#define UVC_CT_SCANNING_MODE_CONTROL 0x01
|
||||
#define UVC_CT_AE_MODE_CONTROL 0x02
|
||||
#define UVC_CT_AE_PRIORITY_CONTROL 0x03
|
||||
#define UVC_CT_EXPOSURE_TIME_ABSOLUTE_CONTROL 0x04
|
||||
#define UVC_CT_EXPOSURE_TIME_RELATIVE_CONTROL 0x05
|
||||
#define UVC_CT_FOCUS_ABSOLUTE_CONTROL 0x06
|
||||
#define UVC_CT_FOCUS_RELATIVE_CONTROL 0x07
|
||||
#define UVC_CT_FOCUS_AUTO_CONTROL 0x08
|
||||
#define UVC_CT_IRIS_ABSOLUTE_CONTROL 0x09
|
||||
#define UVC_CT_IRIS_RELATIVE_CONTROL 0x0a
|
||||
#define UVC_CT_ZOOM_ABSOLUTE_CONTROL 0x0b
|
||||
#define UVC_CT_ZOOM_RELATIVE_CONTROL 0x0c
|
||||
#define UVC_CT_PANTILT_ABSOLUTE_CONTROL 0x0d
|
||||
#define UVC_CT_PANTILT_RELATIVE_CONTROL 0x0e
|
||||
#define UVC_CT_ROLL_ABSOLUTE_CONTROL 0x0f
|
||||
#define UVC_CT_ROLL_RELATIVE_CONTROL 0x10
|
||||
#define UVC_CT_PRIVACY_CONTROL 0x11
|
||||
|
||||
/* A.9.5. Processing Unit Control Selectors */
|
||||
#define UVC_PU_CONTROL_UNDEFINED 0x00
|
||||
#define UVC_PU_BACKLIGHT_COMPENSATION_CONTROL 0x01
|
||||
#define UVC_PU_BRIGHTNESS_CONTROL 0x02
|
||||
#define UVC_PU_CONTRAST_CONTROL 0x03
|
||||
#define UVC_PU_GAIN_CONTROL 0x04
|
||||
#define UVC_PU_POWER_LINE_FREQUENCY_CONTROL 0x05
|
||||
#define UVC_PU_HUE_CONTROL 0x06
|
||||
#define UVC_PU_SATURATION_CONTROL 0x07
|
||||
#define UVC_PU_SHARPNESS_CONTROL 0x08
|
||||
#define UVC_PU_GAMMA_CONTROL 0x09
|
||||
#define UVC_PU_WHITE_BALANCE_TEMPERATURE_CONTROL 0x0a
|
||||
#define UVC_PU_WHITE_BALANCE_TEMPERATURE_AUTO_CONTROL 0x0b
|
||||
#define UVC_PU_WHITE_BALANCE_COMPONENT_CONTROL 0x0c
|
||||
#define UVC_PU_WHITE_BALANCE_COMPONENT_AUTO_CONTROL 0x0d
|
||||
#define UVC_PU_DIGITAL_MULTIPLIER_CONTROL 0x0e
|
||||
#define UVC_PU_DIGITAL_MULTIPLIER_LIMIT_CONTROL 0x0f
|
||||
#define UVC_PU_HUE_AUTO_CONTROL 0x10
|
||||
#define UVC_PU_ANALOG_VIDEO_STANDARD_CONTROL 0x11
|
||||
#define UVC_PU_ANALOG_LOCK_STATUS_CONTROL 0x12
|
||||
|
||||
/* A.9.7. VideoStreaming Interface Control Selectors */
|
||||
#define UVC_VS_CONTROL_UNDEFINED 0x00
|
||||
#define UVC_VS_PROBE_CONTROL 0x01
|
||||
#define UVC_VS_COMMIT_CONTROL 0x02
|
||||
#define UVC_VS_STILL_PROBE_CONTROL 0x03
|
||||
#define UVC_VS_STILL_COMMIT_CONTROL 0x04
|
||||
#define UVC_VS_STILL_IMAGE_TRIGGER_CONTROL 0x05
|
||||
#define UVC_VS_STREAM_ERROR_CODE_CONTROL 0x06
|
||||
#define UVC_VS_GENERATE_KEY_FRAME_CONTROL 0x07
|
||||
#define UVC_VS_UPDATE_FRAME_SEGMENT_CONTROL 0x08
|
||||
#define UVC_VS_SYNC_DELAY_CONTROL 0x09
|
||||
|
||||
/* B.1. USB Terminal Types */
|
||||
#define UVC_TT_VENDOR_SPECIFIC 0x0100
|
||||
#define UVC_TT_STREAMING 0x0101
|
||||
|
||||
/* B.2. Input Terminal Types */
|
||||
#define UVC_ITT_VENDOR_SPECIFIC 0x0200
|
||||
#define UVC_ITT_CAMERA 0x0201
|
||||
#define UVC_ITT_MEDIA_TRANSPORT_INPUT 0x0202
|
||||
|
||||
/* B.3. Output Terminal Types */
|
||||
#define UVC_OTT_VENDOR_SPECIFIC 0x0300
|
||||
#define UVC_OTT_DISPLAY 0x0301
|
||||
#define UVC_OTT_MEDIA_TRANSPORT_OUTPUT 0x0302
|
||||
|
||||
/* B.4. External Terminal Types */
|
||||
#define UVC_EXTERNAL_VENDOR_SPECIFIC 0x0400
|
||||
#define UVC_COMPOSITE_CONNECTOR 0x0401
|
||||
#define UVC_SVIDEO_CONNECTOR 0x0402
|
||||
#define UVC_COMPONENT_CONNECTOR 0x0403
|
||||
|
||||
/* 2.4.2.2. Status Packet Type */
|
||||
#define UVC_STATUS_TYPE_CONTROL 1
|
||||
#define UVC_STATUS_TYPE_STREAMING 2
|
||||
|
||||
#endif /* __LINUX_USB_VIDEO_H */
|
||||
|
@@ -597,7 +597,7 @@ void uwb_rc_neh_grok(struct uwb_rc *, void *, size_t);
|
||||
void uwb_rc_neh_error(struct uwb_rc *, int);
|
||||
void uwb_rc_reset_all(struct uwb_rc *rc);
|
||||
void uwb_rc_pre_reset(struct uwb_rc *rc);
|
||||
void uwb_rc_post_reset(struct uwb_rc *rc);
|
||||
int uwb_rc_post_reset(struct uwb_rc *rc);
|
||||
|
||||
/**
|
||||
* uwb_rsv_is_owner - is the owner of this reservation the RC?
|
||||
|
200
include/linux/vgaarb.h
Normal file
200
include/linux/vgaarb.h
Normal file
@@ -0,0 +1,200 @@
|
||||
/*
|
||||
* vgaarb.c
|
||||
*
|
||||
* (C) Copyright 2005 Benjamin Herrenschmidt <benh@kernel.crashing.org>
|
||||
* (C) Copyright 2007 Paulo R. Zanoni <przanoni@gmail.com>
|
||||
* (C) Copyright 2007, 2009 Tiago Vignatti <vignatti@freedesktop.org>
|
||||
*/
|
||||
|
||||
#ifndef LINUX_VGA_H
|
||||
|
||||
#include <asm/vga.h>
|
||||
|
||||
/* Legacy VGA regions */
|
||||
#define VGA_RSRC_NONE 0x00
|
||||
#define VGA_RSRC_LEGACY_IO 0x01
|
||||
#define VGA_RSRC_LEGACY_MEM 0x02
|
||||
#define VGA_RSRC_LEGACY_MASK (VGA_RSRC_LEGACY_IO | VGA_RSRC_LEGACY_MEM)
|
||||
/* Non-legacy access */
|
||||
#define VGA_RSRC_NORMAL_IO 0x04
|
||||
#define VGA_RSRC_NORMAL_MEM 0x08
|
||||
|
||||
/* Passing that instead of a pci_dev to use the system "default"
|
||||
* device, that is the one used by vgacon. Archs will probably
|
||||
* have to provide their own vga_default_device();
|
||||
*/
|
||||
#define VGA_DEFAULT_DEVICE (NULL)
|
||||
|
||||
/* For use by clients */
|
||||
|
||||
/**
|
||||
* vga_set_legacy_decoding
|
||||
*
|
||||
* @pdev: pci device of the VGA card
|
||||
* @decodes: bit mask of what legacy regions the card decodes
|
||||
*
|
||||
* Indicates to the arbiter if the card decodes legacy VGA IOs,
|
||||
* legacy VGA Memory, both, or none. All cards default to both,
|
||||
* the card driver (fbdev for example) should tell the arbiter
|
||||
* if it has disabled legacy decoding, so the card can be left
|
||||
* out of the arbitration process (and can be safe to take
|
||||
* interrupts at any time.
|
||||
*/
|
||||
extern void vga_set_legacy_decoding(struct pci_dev *pdev,
|
||||
unsigned int decodes);
|
||||
|
||||
/**
|
||||
* vga_get - acquire & locks VGA resources
|
||||
*
|
||||
* @pdev: pci device of the VGA card or NULL for the system default
|
||||
* @rsrc: bit mask of resources to acquire and lock
|
||||
* @interruptible: blocking should be interruptible by signals ?
|
||||
*
|
||||
* This function acquires VGA resources for the given
|
||||
* card and mark those resources locked. If the resource requested
|
||||
* are "normal" (and not legacy) resources, the arbiter will first check
|
||||
* wether the card is doing legacy decoding for that type of resource. If
|
||||
* yes, the lock is "converted" into a legacy resource lock.
|
||||
* The arbiter will first look for all VGA cards that might conflict
|
||||
* and disable their IOs and/or Memory access, inlcuding VGA forwarding
|
||||
* on P2P bridges if necessary, so that the requested resources can
|
||||
* be used. Then, the card is marked as locking these resources and
|
||||
* the IO and/or Memory accesse are enabled on the card (including
|
||||
* VGA forwarding on parent P2P bridges if any).
|
||||
* This function will block if some conflicting card is already locking
|
||||
* one of the required resources (or any resource on a different bus
|
||||
* segment, since P2P bridges don't differenciate VGA memory and IO
|
||||
* afaik). You can indicate wether this blocking should be interruptible
|
||||
* by a signal (for userland interface) or not.
|
||||
* Must not be called at interrupt time or in atomic context.
|
||||
* If the card already owns the resources, the function succeeds.
|
||||
* Nested calls are supported (a per-resource counter is maintained)
|
||||
*/
|
||||
|
||||
extern int vga_get(struct pci_dev *pdev, unsigned int rsrc,
|
||||
int interruptible);
|
||||
|
||||
/**
|
||||
* vga_get_interruptible
|
||||
*
|
||||
* Shortcut to vga_get
|
||||
*/
|
||||
|
||||
static inline int vga_get_interruptible(struct pci_dev *pdev,
|
||||
unsigned int rsrc)
|
||||
{
|
||||
return vga_get(pdev, rsrc, 1);
|
||||
}
|
||||
|
||||
/**
|
||||
* vga_get_uninterruptible
|
||||
*
|
||||
* Shortcut to vga_get
|
||||
*/
|
||||
|
||||
static inline int vga_get_uninterruptible(struct pci_dev *pdev,
|
||||
unsigned int rsrc)
|
||||
{
|
||||
return vga_get(pdev, rsrc, 0);
|
||||
}
|
||||
|
||||
/**
|
||||
* vga_tryget - try to acquire & lock legacy VGA resources
|
||||
*
|
||||
* @pdev: pci devivce of VGA card or NULL for system default
|
||||
* @rsrc: bit mask of resources to acquire and lock
|
||||
*
|
||||
* This function performs the same operation as vga_get(), but
|
||||
* will return an error (-EBUSY) instead of blocking if the resources
|
||||
* are already locked by another card. It can be called in any context
|
||||
*/
|
||||
|
||||
extern int vga_tryget(struct pci_dev *pdev, unsigned int rsrc);
|
||||
|
||||
/**
|
||||
* vga_put - release lock on legacy VGA resources
|
||||
*
|
||||
* @pdev: pci device of VGA card or NULL for system default
|
||||
* @rsrc: but mask of resource to release
|
||||
*
|
||||
* This function releases resources previously locked by vga_get()
|
||||
* or vga_tryget(). The resources aren't disabled right away, so
|
||||
* that a subsequence vga_get() on the same card will succeed
|
||||
* immediately. Resources have a counter, so locks are only
|
||||
* released if the counter reaches 0.
|
||||
*/
|
||||
|
||||
extern void vga_put(struct pci_dev *pdev, unsigned int rsrc);
|
||||
|
||||
|
||||
/**
|
||||
* vga_default_device
|
||||
*
|
||||
* This can be defined by the platform. The default implementation
|
||||
* is rather dumb and will probably only work properly on single
|
||||
* vga card setups and/or x86 platforms.
|
||||
*
|
||||
* If your VGA default device is not PCI, you'll have to return
|
||||
* NULL here. In this case, I assume it will not conflict with
|
||||
* any PCI card. If this is not true, I'll have to define two archs
|
||||
* hooks for enabling/disabling the VGA default device if that is
|
||||
* possible. This may be a problem with real _ISA_ VGA cards, in
|
||||
* addition to a PCI one. I don't know at this point how to deal
|
||||
* with that card. Can theirs IOs be disabled at all ? If not, then
|
||||
* I suppose it's a matter of having the proper arch hook telling
|
||||
* us about it, so we basically never allow anybody to succeed a
|
||||
* vga_get()...
|
||||
*/
|
||||
|
||||
#ifndef __ARCH_HAS_VGA_DEFAULT_DEVICE
|
||||
extern struct pci_dev *vga_default_device(void);
|
||||
#endif
|
||||
|
||||
/**
|
||||
* vga_conflicts
|
||||
*
|
||||
* Architectures should define this if they have several
|
||||
* independant PCI domains that can afford concurrent VGA
|
||||
* decoding
|
||||
*/
|
||||
|
||||
#ifndef __ARCH_HAS_VGA_CONFLICT
|
||||
static inline int vga_conflicts(struct pci_dev *p1, struct pci_dev *p2)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
#endif
|
||||
|
||||
/**
|
||||
* vga_client_register
|
||||
*
|
||||
* @pdev: pci device of the VGA client
|
||||
* @cookie: client cookie to be used in callbacks
|
||||
* @irq_set_state: irq state change callback
|
||||
* @set_vga_decode: vga decode change callback
|
||||
*
|
||||
* return value: 0 on success, -1 on failure
|
||||
* Register a client with the VGA arbitration logic
|
||||
*
|
||||
* Clients have two callback mechanisms they can use.
|
||||
* irq enable/disable callback -
|
||||
* If a client can't disable its GPUs VGA resources, then we
|
||||
* need to be able to ask it to turn off its irqs when we
|
||||
* turn off its mem and io decoding.
|
||||
* set_vga_decode
|
||||
* If a client can disable its GPU VGA resource, it will
|
||||
* get a callback from this to set the encode/decode state
|
||||
*
|
||||
* Rationale: we cannot disable VGA decode resources unconditionally
|
||||
* some single GPU laptops seem to require ACPI or BIOS access to the
|
||||
* VGA registers to control things like backlights etc.
|
||||
* Hopefully newer multi-GPU laptops do something saner, and desktops
|
||||
* won't have any special ACPI for this.
|
||||
* They driver will get a callback when VGA arbitration is first used
|
||||
* by userspace since we some older X servers have issues.
|
||||
*/
|
||||
int vga_client_register(struct pci_dev *pdev, void *cookie,
|
||||
void (*irq_set_state)(void *cookie, bool state),
|
||||
unsigned int (*set_vga_decode)(void *cookie, bool state));
|
||||
|
||||
#endif /* LINUX_VGA_H */
|
@@ -167,6 +167,7 @@ enum v4l2_ctrl_type {
|
||||
V4L2_CTRL_TYPE_BUTTON = 4,
|
||||
V4L2_CTRL_TYPE_INTEGER64 = 5,
|
||||
V4L2_CTRL_TYPE_CTRL_CLASS = 6,
|
||||
V4L2_CTRL_TYPE_STRING = 7,
|
||||
};
|
||||
|
||||
enum v4l2_tuner_type {
|
||||
@@ -252,10 +253,12 @@ struct v4l2_capability {
|
||||
#define V4L2_CAP_RDS_CAPTURE 0x00000100 /* RDS data capture */
|
||||
#define V4L2_CAP_VIDEO_OUTPUT_OVERLAY 0x00000200 /* Can do video output overlay */
|
||||
#define V4L2_CAP_HW_FREQ_SEEK 0x00000400 /* Can do hardware frequency seek */
|
||||
#define V4L2_CAP_RDS_OUTPUT 0x00000800 /* Is an RDS encoder */
|
||||
|
||||
#define V4L2_CAP_TUNER 0x00010000 /* has a tuner */
|
||||
#define V4L2_CAP_AUDIO 0x00020000 /* has audio support */
|
||||
#define V4L2_CAP_RADIO 0x00040000 /* is a radio device */
|
||||
#define V4L2_CAP_MODULATOR 0x00080000 /* has a modulator */
|
||||
|
||||
#define V4L2_CAP_READWRITE 0x01000000 /* read/write systemcalls */
|
||||
#define V4L2_CAP_ASYNCIO 0x02000000 /* async I/O */
|
||||
@@ -275,7 +278,9 @@ struct v4l2_pix_format {
|
||||
__u32 priv; /* private data, depends on pixelformat */
|
||||
};
|
||||
|
||||
/* Pixel format FOURCC depth Description */
|
||||
/* Pixel format FOURCC depth Description */
|
||||
|
||||
/* RGB formats */
|
||||
#define V4L2_PIX_FMT_RGB332 v4l2_fourcc('R', 'G', 'B', '1') /* 8 RGB-3-3-2 */
|
||||
#define V4L2_PIX_FMT_RGB444 v4l2_fourcc('R', '4', '4', '4') /* 16 xxxxrrrr ggggbbbb */
|
||||
#define V4L2_PIX_FMT_RGB555 v4l2_fourcc('R', 'G', 'B', 'O') /* 16 RGB-5-5-5 */
|
||||
@@ -286,12 +291,20 @@ struct v4l2_pix_format {
|
||||
#define V4L2_PIX_FMT_RGB24 v4l2_fourcc('R', 'G', 'B', '3') /* 24 RGB-8-8-8 */
|
||||
#define V4L2_PIX_FMT_BGR32 v4l2_fourcc('B', 'G', 'R', '4') /* 32 BGR-8-8-8-8 */
|
||||
#define V4L2_PIX_FMT_RGB32 v4l2_fourcc('R', 'G', 'B', '4') /* 32 RGB-8-8-8-8 */
|
||||
|
||||
/* Grey formats */
|
||||
#define V4L2_PIX_FMT_GREY v4l2_fourcc('G', 'R', 'E', 'Y') /* 8 Greyscale */
|
||||
#define V4L2_PIX_FMT_Y16 v4l2_fourcc('Y', '1', '6', ' ') /* 16 Greyscale */
|
||||
|
||||
/* Palette formats */
|
||||
#define V4L2_PIX_FMT_PAL8 v4l2_fourcc('P', 'A', 'L', '8') /* 8 8-bit palette */
|
||||
|
||||
/* Luminance+Chrominance formats */
|
||||
#define V4L2_PIX_FMT_YVU410 v4l2_fourcc('Y', 'V', 'U', '9') /* 9 YVU 4:1:0 */
|
||||
#define V4L2_PIX_FMT_YVU420 v4l2_fourcc('Y', 'V', '1', '2') /* 12 YVU 4:2:0 */
|
||||
#define V4L2_PIX_FMT_YUYV v4l2_fourcc('Y', 'U', 'Y', 'V') /* 16 YUV 4:2:2 */
|
||||
#define V4L2_PIX_FMT_YYUV v4l2_fourcc('Y', 'Y', 'U', 'V') /* 16 YUV 4:2:2 */
|
||||
#define V4L2_PIX_FMT_YVYU v4l2_fourcc('Y', 'V', 'Y', 'U') /* 16 YVU 4:2:2 */
|
||||
#define V4L2_PIX_FMT_UYVY v4l2_fourcc('U', 'Y', 'V', 'Y') /* 16 YUV 4:2:2 */
|
||||
#define V4L2_PIX_FMT_VYUY v4l2_fourcc('V', 'Y', 'U', 'Y') /* 16 YUV 4:2:2 */
|
||||
#define V4L2_PIX_FMT_YUV422P v4l2_fourcc('4', '2', '2', 'P') /* 16 YVU422 planar */
|
||||
@@ -301,6 +314,10 @@ struct v4l2_pix_format {
|
||||
#define V4L2_PIX_FMT_YUV555 v4l2_fourcc('Y', 'U', 'V', 'O') /* 16 YUV-5-5-5 */
|
||||
#define V4L2_PIX_FMT_YUV565 v4l2_fourcc('Y', 'U', 'V', 'P') /* 16 YUV-5-6-5 */
|
||||
#define V4L2_PIX_FMT_YUV32 v4l2_fourcc('Y', 'U', 'V', '4') /* 32 YUV-8-8-8-8 */
|
||||
#define V4L2_PIX_FMT_YUV410 v4l2_fourcc('Y', 'U', 'V', '9') /* 9 YUV 4:1:0 */
|
||||
#define V4L2_PIX_FMT_YUV420 v4l2_fourcc('Y', 'U', '1', '2') /* 12 YUV 4:2:0 */
|
||||
#define V4L2_PIX_FMT_HI240 v4l2_fourcc('H', 'I', '2', '4') /* 8 8-bit color */
|
||||
#define V4L2_PIX_FMT_HM12 v4l2_fourcc('H', 'M', '1', '2') /* 8 YUV 4:2:0 16x16 macroblocks */
|
||||
|
||||
/* two planes -- one Y, one Cr + Cb interleaved */
|
||||
#define V4L2_PIX_FMT_NV12 v4l2_fourcc('N', 'V', '1', '2') /* 12 Y/CbCr 4:2:0 */
|
||||
@@ -308,25 +325,17 @@ struct v4l2_pix_format {
|
||||
#define V4L2_PIX_FMT_NV16 v4l2_fourcc('N', 'V', '1', '6') /* 16 Y/CbCr 4:2:2 */
|
||||
#define V4L2_PIX_FMT_NV61 v4l2_fourcc('N', 'V', '6', '1') /* 16 Y/CrCb 4:2:2 */
|
||||
|
||||
/* The following formats are not defined in the V4L2 specification */
|
||||
#define V4L2_PIX_FMT_YUV410 v4l2_fourcc('Y', 'U', 'V', '9') /* 9 YUV 4:1:0 */
|
||||
#define V4L2_PIX_FMT_YUV420 v4l2_fourcc('Y', 'U', '1', '2') /* 12 YUV 4:2:0 */
|
||||
#define V4L2_PIX_FMT_YYUV v4l2_fourcc('Y', 'Y', 'U', 'V') /* 16 YUV 4:2:2 */
|
||||
#define V4L2_PIX_FMT_HI240 v4l2_fourcc('H', 'I', '2', '4') /* 8 8-bit color */
|
||||
#define V4L2_PIX_FMT_HM12 v4l2_fourcc('H', 'M', '1', '2') /* 8 YUV 4:2:0 16x16 macroblocks */
|
||||
|
||||
/* see http://www.siliconimaging.com/RGB%20Bayer.htm */
|
||||
/* Bayer formats - see http://www.siliconimaging.com/RGB%20Bayer.htm */
|
||||
#define V4L2_PIX_FMT_SBGGR8 v4l2_fourcc('B', 'A', '8', '1') /* 8 BGBG.. GRGR.. */
|
||||
#define V4L2_PIX_FMT_SGBRG8 v4l2_fourcc('G', 'B', 'R', 'G') /* 8 GBGB.. RGRG.. */
|
||||
#define V4L2_PIX_FMT_SGRBG8 v4l2_fourcc('G', 'R', 'B', 'G') /* 8 GRGR.. BGBG.. */
|
||||
|
||||
/*
|
||||
* 10bit raw bayer, expanded to 16 bits
|
||||
* xxxxrrrrrrrrrrxxxxgggggggggg xxxxggggggggggxxxxbbbbbbbbbb...
|
||||
*/
|
||||
#define V4L2_PIX_FMT_SGRBG10 v4l2_fourcc('B', 'A', '1', '0')
|
||||
/* 10bit raw bayer DPCM compressed to 8 bits */
|
||||
#define V4L2_PIX_FMT_SGRBG10 v4l2_fourcc('B', 'A', '1', '0') /* 10bit raw bayer */
|
||||
/* 10bit raw bayer DPCM compressed to 8 bits */
|
||||
#define V4L2_PIX_FMT_SGRBG10DPCM8 v4l2_fourcc('B', 'D', '1', '0')
|
||||
/*
|
||||
* 10bit raw bayer, expanded to 16 bits
|
||||
* xxxxrrrrrrrrrrxxxxgggggggggg xxxxggggggggggxxxxbbbbbbbbbb...
|
||||
*/
|
||||
#define V4L2_PIX_FMT_SBGGR16 v4l2_fourcc('B', 'Y', 'R', '2') /* 16 BGBG.. GRGR.. */
|
||||
|
||||
/* compressed formats */
|
||||
@@ -350,7 +359,6 @@ struct v4l2_pix_format {
|
||||
#define V4L2_PIX_FMT_MR97310A v4l2_fourcc('M', '3', '1', '0') /* compressed BGGR bayer */
|
||||
#define V4L2_PIX_FMT_SQ905C v4l2_fourcc('9', '0', '5', 'C') /* compressed RGGB bayer */
|
||||
#define V4L2_PIX_FMT_PJPG v4l2_fourcc('P', 'J', 'P', 'G') /* Pixart 73xx JPEG */
|
||||
#define V4L2_PIX_FMT_YVYU v4l2_fourcc('Y', 'V', 'Y', 'U') /* 16 YVU 4:2:2 */
|
||||
#define V4L2_PIX_FMT_OV511 v4l2_fourcc('O', '5', '1', '1') /* ov511 JPEG */
|
||||
#define V4L2_PIX_FMT_OV518 v4l2_fourcc('O', '5', '1', '8') /* ov518 JPEG */
|
||||
|
||||
@@ -367,6 +375,7 @@ struct v4l2_fmtdesc {
|
||||
};
|
||||
|
||||
#define V4L2_FMT_FLAG_COMPRESSED 0x0001
|
||||
#define V4L2_FMT_FLAG_EMULATED 0x0002
|
||||
|
||||
#if 1
|
||||
/* Experimental Frame Size and frame rate enumeration */
|
||||
@@ -788,11 +797,12 @@ struct v4l2_control {
|
||||
|
||||
struct v4l2_ext_control {
|
||||
__u32 id;
|
||||
__u32 reserved2[2];
|
||||
__u32 size;
|
||||
__u32 reserved2[1];
|
||||
union {
|
||||
__s32 value;
|
||||
__s64 value64;
|
||||
void *reserved;
|
||||
char *string;
|
||||
};
|
||||
} __attribute__ ((packed));
|
||||
|
||||
@@ -808,6 +818,7 @@ struct v4l2_ext_controls {
|
||||
#define V4L2_CTRL_CLASS_USER 0x00980000 /* Old-style 'user' controls */
|
||||
#define V4L2_CTRL_CLASS_MPEG 0x00990000 /* MPEG-compression controls */
|
||||
#define V4L2_CTRL_CLASS_CAMERA 0x009a0000 /* Camera class controls */
|
||||
#define V4L2_CTRL_CLASS_FM_TX 0x009b0000 /* FM Modulator control class */
|
||||
|
||||
#define V4L2_CTRL_ID_MASK (0x0fffffff)
|
||||
#define V4L2_CTRL_ID2CLASS(id) ((id) & 0x0fff0000UL)
|
||||
@@ -1147,6 +1158,39 @@ enum v4l2_exposure_auto_type {
|
||||
|
||||
#define V4L2_CID_PRIVACY (V4L2_CID_CAMERA_CLASS_BASE+16)
|
||||
|
||||
/* FM Modulator class control IDs */
|
||||
#define V4L2_CID_FM_TX_CLASS_BASE (V4L2_CTRL_CLASS_FM_TX | 0x900)
|
||||
#define V4L2_CID_FM_TX_CLASS (V4L2_CTRL_CLASS_FM_TX | 1)
|
||||
|
||||
#define V4L2_CID_RDS_TX_DEVIATION (V4L2_CID_FM_TX_CLASS_BASE + 1)
|
||||
#define V4L2_CID_RDS_TX_PI (V4L2_CID_FM_TX_CLASS_BASE + 2)
|
||||
#define V4L2_CID_RDS_TX_PTY (V4L2_CID_FM_TX_CLASS_BASE + 3)
|
||||
#define V4L2_CID_RDS_TX_PS_NAME (V4L2_CID_FM_TX_CLASS_BASE + 5)
|
||||
#define V4L2_CID_RDS_TX_RADIO_TEXT (V4L2_CID_FM_TX_CLASS_BASE + 6)
|
||||
|
||||
#define V4L2_CID_AUDIO_LIMITER_ENABLED (V4L2_CID_FM_TX_CLASS_BASE + 64)
|
||||
#define V4L2_CID_AUDIO_LIMITER_RELEASE_TIME (V4L2_CID_FM_TX_CLASS_BASE + 65)
|
||||
#define V4L2_CID_AUDIO_LIMITER_DEVIATION (V4L2_CID_FM_TX_CLASS_BASE + 66)
|
||||
|
||||
#define V4L2_CID_AUDIO_COMPRESSION_ENABLED (V4L2_CID_FM_TX_CLASS_BASE + 80)
|
||||
#define V4L2_CID_AUDIO_COMPRESSION_GAIN (V4L2_CID_FM_TX_CLASS_BASE + 81)
|
||||
#define V4L2_CID_AUDIO_COMPRESSION_THRESHOLD (V4L2_CID_FM_TX_CLASS_BASE + 82)
|
||||
#define V4L2_CID_AUDIO_COMPRESSION_ATTACK_TIME (V4L2_CID_FM_TX_CLASS_BASE + 83)
|
||||
#define V4L2_CID_AUDIO_COMPRESSION_RELEASE_TIME (V4L2_CID_FM_TX_CLASS_BASE + 84)
|
||||
|
||||
#define V4L2_CID_PILOT_TONE_ENABLED (V4L2_CID_FM_TX_CLASS_BASE + 96)
|
||||
#define V4L2_CID_PILOT_TONE_DEVIATION (V4L2_CID_FM_TX_CLASS_BASE + 97)
|
||||
#define V4L2_CID_PILOT_TONE_FREQUENCY (V4L2_CID_FM_TX_CLASS_BASE + 98)
|
||||
|
||||
#define V4L2_CID_TUNE_PREEMPHASIS (V4L2_CID_FM_TX_CLASS_BASE + 112)
|
||||
enum v4l2_preemphasis {
|
||||
V4L2_PREEMPHASIS_DISABLED = 0,
|
||||
V4L2_PREEMPHASIS_50_uS = 1,
|
||||
V4L2_PREEMPHASIS_75_uS = 2,
|
||||
};
|
||||
#define V4L2_CID_TUNE_POWER_LEVEL (V4L2_CID_FM_TX_CLASS_BASE + 113)
|
||||
#define V4L2_CID_TUNE_ANTENNA_CAPACITOR (V4L2_CID_FM_TX_CLASS_BASE + 114)
|
||||
|
||||
/*
|
||||
* T U N I N G
|
||||
*/
|
||||
@@ -1181,6 +1225,7 @@ struct v4l2_modulator {
|
||||
#define V4L2_TUNER_CAP_LANG2 0x0020
|
||||
#define V4L2_TUNER_CAP_SAP 0x0020
|
||||
#define V4L2_TUNER_CAP_LANG1 0x0040
|
||||
#define V4L2_TUNER_CAP_RDS 0x0080
|
||||
|
||||
/* Flags for the 'rxsubchans' field */
|
||||
#define V4L2_TUNER_SUB_MONO 0x0001
|
||||
@@ -1188,6 +1233,7 @@ struct v4l2_modulator {
|
||||
#define V4L2_TUNER_SUB_LANG2 0x0004
|
||||
#define V4L2_TUNER_SUB_SAP 0x0004
|
||||
#define V4L2_TUNER_SUB_LANG1 0x0008
|
||||
#define V4L2_TUNER_SUB_RDS 0x0010
|
||||
|
||||
/* Values for the 'audmode' field */
|
||||
#define V4L2_TUNER_MODE_MONO 0x0000
|
||||
@@ -1212,6 +1258,27 @@ struct v4l2_hw_freq_seek {
|
||||
__u32 reserved[8];
|
||||
};
|
||||
|
||||
/*
|
||||
* R D S
|
||||
*/
|
||||
|
||||
struct v4l2_rds_data {
|
||||
__u8 lsb;
|
||||
__u8 msb;
|
||||
__u8 block;
|
||||
} __attribute__ ((packed));
|
||||
|
||||
#define V4L2_RDS_BLOCK_MSK 0x7
|
||||
#define V4L2_RDS_BLOCK_A 0
|
||||
#define V4L2_RDS_BLOCK_B 1
|
||||
#define V4L2_RDS_BLOCK_C 2
|
||||
#define V4L2_RDS_BLOCK_D 3
|
||||
#define V4L2_RDS_BLOCK_C_ALT 4
|
||||
#define V4L2_RDS_BLOCK_INVALID 7
|
||||
|
||||
#define V4L2_RDS_BLOCK_CORRECTED 0x40
|
||||
#define V4L2_RDS_BLOCK_ERROR 0x80
|
||||
|
||||
/*
|
||||
* A U D I O
|
||||
*/
|
||||
|
@@ -115,4 +115,10 @@ extern rwlock_t vmlist_lock;
|
||||
extern struct vm_struct *vmlist;
|
||||
extern __init void vm_area_register_early(struct vm_struct *vm, size_t align);
|
||||
|
||||
struct vm_struct **pcpu_get_vm_areas(const unsigned long *offsets,
|
||||
const size_t *sizes, int nr_vms,
|
||||
size_t align, gfp_t gfp_mask);
|
||||
|
||||
void pcpu_free_vm_areas(struct vm_struct **vms, int nr_vms);
|
||||
|
||||
#endif /* _LINUX_VMALLOC_H */
|
||||
|
@@ -26,8 +26,8 @@
|
||||
#include <asm/current.h>
|
||||
|
||||
typedef struct __wait_queue wait_queue_t;
|
||||
typedef int (*wait_queue_func_t)(wait_queue_t *wait, unsigned mode, int sync, void *key);
|
||||
int default_wake_function(wait_queue_t *wait, unsigned mode, int sync, void *key);
|
||||
typedef int (*wait_queue_func_t)(wait_queue_t *wait, unsigned mode, int flags, void *key);
|
||||
int default_wake_function(wait_queue_t *wait, unsigned mode, int flags, void *key);
|
||||
|
||||
struct __wait_queue {
|
||||
unsigned int flags;
|
||||
|
@@ -50,7 +50,6 @@ struct writeback_control {
|
||||
unsigned encountered_congestion:1; /* An output: a queue is full */
|
||||
unsigned for_kupdate:1; /* A kupdate writeback */
|
||||
unsigned for_reclaim:1; /* Invoked from the page allocator */
|
||||
unsigned for_writepages:1; /* This is a writepages() call */
|
||||
unsigned range_cyclic:1; /* range_start is cyclic */
|
||||
unsigned more_io:1; /* more io to be dispatched */
|
||||
/*
|
||||
@@ -69,8 +68,8 @@ struct writeback_control {
|
||||
*/
|
||||
struct bdi_writeback;
|
||||
int inode_wait(void *);
|
||||
long writeback_inodes_sb(struct super_block *);
|
||||
long sync_inodes_sb(struct super_block *);
|
||||
void writeback_inodes_sb(struct super_block *);
|
||||
void sync_inodes_sb(struct super_block *);
|
||||
void writeback_inodes_wbc(struct writeback_control *wbc);
|
||||
long wb_do_writeback(struct bdi_writeback *wb, int force_wait);
|
||||
void wakeup_flusher_threads(long nr_pages);
|
||||
|
Reference in New Issue
Block a user